merlyn/server/package.json
Marcello Fitton 41495cdabe
feat: Scheduled Jobs (#5322)
* initialize

* expand tool result text limit | add syntax highlighting and json formatting to tool result rendering

* fix onError jsdoc

* lint

* fix unread icon

* route protection

* improve form handling for NewJobModal

* safeJsonParse

* remove unneeded comments

* remove trycatch

* add truncateText helper

* add explicit fallback value tos safeJsonParse

* add shared cron constant and helpers

* reduce frontend indirection

* use isLight to compute syntax highlighting theme

* remove dead code

* remove forJob and make job limit to 50

* create recomputeNextRunAt helper method

* add comment about nextRunAt recomputation

* add job queue and concurrency control to scheduled jobs

* use p-queue

* change default max concurrent value to 1

* add comment explaining internal scheduling system

* add recomputeNextRunAt on boot

* add generated documents to run details

* Modify toolsOverride functionality where no tools selected means no tools are given to the agent

add a select all/deselect all toggle button for easily selecting all
tools in the cerate job form

* create usePolling hook

* add polling to scheduled jobs and scheduled job runs pages

* add cron generation feature in job form

* remove cron generation feature | add cron builder feature | add max active scheduled jobs limit

* set MAX_ACTIVE to null

* replace hour and minute input fields with input with type time

* simplify

* organize components

* move components to bottom of page component

* change Generated Documents to Generated Files

* add i18n to cronstrue

* add i18n

* add type="button" to button elements

* refactor fileSource retrieval logic

* one scheduled job run can have status "running"

* add protection of file retrieveal from scheduled job in multiuser mode

* fix comments

* make job status default to queued

* add queued status

* fix bug with result trace rendering

* store timeout ref and clearTimeout once race settles

* remove unneeded handlerPromise tracking

* move imports to top level

* refactor hardcoded paths to path resolve functions

* implement new job form design

* simplify

* fix button styles

* fix runJob bug

* implement styles for scheduled jobs page

* apply dark mode figma styles

* delete unused translation key

* implement light mode for new new job modal, run history, and run details

* lint

* fix light mode scroll bar in tool call card

* adjust table header contrast

* fix type in subtitle

* kill workers when job is in-flight before deleting job

* add border-none to buttons

* change locale time to iso string

* import BackgroundService module level | instatiate backgroundService singltone once and reuse across handlers

* add p-queue, @breejs/later and cron-validate as core deps

* parse cron expression to a builder state once

* add theme to day buttons in cron builder

* fix stale tools selection caption

* flip popover when popover clips screen height

* make ScheduleJob.trigger() await the run insertion | disable run now button if job is in flight

* regen table

* refactor generated file card

* refactor frontend

* remove logs

* major refactor for tool picking, fix bree/later bug

* combine action endpoints, move contine to method

* fix unoptimized query with include + take + order

* fix dangerous use, refactor job to utils

* add copy content to text response

* improve notification system subscription for browser

* remove unused translations

* prevent gen-file cleanup job from deleting active job file generated references

* rich text copy

* Scheduled Jobs: Translations (#5482)

* add locales for scheduled jobs

* i18n

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* add config flag with UI notice

* update README

* telemetry datapoints

* Always use UTC on backend, convert to local in frontend

* fix tz render

* Add job killing

* cleanup thinking text in job notifications and break out reasoning in response text.
Also hide zero metrics since that is useless

* Port generatedFile schema to the normalized workspace chat `outputs` file format so porting to thread is simple and implem between chats <> jobs is 1:1

* what the fuck

* compiled bug

* fixed thinking oddity in complied frontend

* supress multi-toast

* fix duration call

* Revert "fix duration call"

This reverts commit 0491bc71f4223e65ea4046561b15b268fefb8da2.

* revert and reapply fix

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>
2026-04-29 12:05:46 -07:00

132 lines
3.8 KiB
JSON

{
"name": "anything-llm-server",
"version": "1.12.1",
"description": "Server endpoints to process or create content for chatting",
"main": "index.js",
"author": "Timothy Carambat (Mintplex Labs)",
"license": "MIT",
"private": false,
"engines": {
"node": ">=18.12.1"
},
"scripts": {
"dev": "cross-env NODE_ENV=development nodemon --ignore documents --ignore vector-cache --ignore storage --ignore swagger --trace-warnings index.js",
"start": "cross-env NODE_ENV=production node index.js",
"lint": "eslint --fix .",
"lint:check": "eslint .",
"swagger": "node ./swagger/init.js"
},
"prisma": {
"seed": "node prisma/seed.js"
},
"dependencies": {
"@anthropic-ai/sdk": "^0.39.0",
"@aws-sdk/client-bedrock-runtime": "^3.775.0",
"@breejs/later": "4.2.0",
"@datastax/astra-db-ts": "^0.1.3",
"@ladjs/graceful": "^3.2.2",
"@lancedb/lancedb": "0.15.0",
"@langchain/anthropic": "0.1.16",
"@langchain/aws": "^0.0.5",
"@langchain/cohere": "0.0.11",
"@langchain/community": "0.0.53",
"@langchain/core": "0.1.61",
"@langchain/openai": "0.0.28",
"@langchain/textsplitters": "0.0.0",
"@mintplex-labs/bree": "^9.2.5",
"@mintplex-labs/express-ws": "^5.0.7",
"@mintplex-labs/mdpdf": "^0.1.9",
"@modelcontextprotocol/sdk": "^1.24.3",
"@pinecone-database/pinecone": "^2.0.1",
"@prisma/client": "5.3.1",
"@qdrant/js-client-rest": "^1.9.0",
"@vscode/ripgrep": "1.17.1",
"@xenova/transformers": "^2.14.0",
"@zilliz/milvus2-sdk-node": "^2.3.5",
"adm-zip": "^0.5.16",
"apache-arrow": "19.0.0",
"bcryptjs": "^3.0.3",
"body-parser": "^1.20.3",
"chalk": "^4",
"chart.js": "^4.5.1",
"chartjs-node-canvas": "^5.0.0",
"check-disk-space": "^3.4.0",
"cheerio": "^1.0.0",
"chromadb": "^2.0.1",
"cohere-ai": "^7.19.0",
"cors": "^2.8.5",
"cron-validate": "1.4.5",
"diff": "7.0.0",
"docx": "9.6.1",
"dompurify": "3.3.3",
"dotenv": "^16.0.3",
"elevenlabs": "^0.5.0",
"exceljs": "4.4.0",
"express": "^4.21.2",
"extract-json-from-string": "^1.0.1",
"fast-levenshtein": "^3.0.0",
"fix-path": "^4.0.0",
"graphql": "^16.7.1",
"ip": "^2.0.1",
"joi": "^17.11.0",
"joi-password-complexity": "^5.2.0",
"js-tiktoken": "^1.0.8",
"jsdom": "26.1.0",
"jsonrepair": "^3.7.0",
"jsonwebtoken": "^9.0.0",
"langchain": "0.1.36",
"marked": "15.0.12",
"mime": "^3.0.0",
"moment": "^2.29.4",
"mssql": "^10.0.2",
"multer": "2.0.0",
"mysql2": "^3.9.8",
"node-telegram-bot-api": "^0.67.0",
"ollama": "^0.6.3",
"openai": "4.95.1",
"p-queue": "6.6.2",
"pdf-lib": "1.17.1",
"pg": "^8.11.5",
"pinecone-client": "^1.1.0",
"pluralize": "^8.0.0",
"posthog-node": "^3.1.1",
"pptxgenjs": "4.0.1",
"prisma": "5.3.1",
"slugify": "^1.6.6",
"strip-ansi": "^7.1.2",
"swagger-autogen": "^2.23.5",
"swagger-ui-express": "^5.0.0",
"truncate": "^3.0.0",
"url-pattern": "^1.0.3",
"uuid": "^9.0.0",
"uuid-apikey": "^1.5.3",
"weaviate-ts-client": "^1.4.0",
"web-push": "^3.6.7",
"winston": "^3.13.0"
},
"resolutions": {
"**/graphql-request/form-data": "3.0.4",
"form-data": "4.0.4"
},
"devDependencies": {
"@eslint/js": "9",
"@inquirer/prompts": "^4.3.1",
"cross-env": "^7.0.3",
"eslint": "9",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-ft-flow": "^3.0.0",
"eslint-plugin-prettier": "^5.0.0",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.3",
"eslint-plugin-unused-imports": "^4.4.1",
"flow-bin": "^0.217.0",
"flow-remove-types": "^2.217.1",
"globals": "^17.4.0",
"hermes-eslint": "^0.15.0",
"node-html-markdown": "^1.3.0",
"nodemon": "^2.0.22",
"prettier": "^3.0.3"
}
}