@nocobase/plugin-ai 2.1.0-alpha.15 → 2.1.0-alpha.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/ai/skills/business-analysis-report/SKILLS.md +22 -18
  2. package/dist/ai/{tools → skills/business-analysis-report/tools}/businessReportGenerator.js +23 -8
  3. package/dist/client/{fd4e5dcaf24052c1.js → 170.d98eacdc00d9d527.js} +1 -1
  4. package/dist/client/280.029428b83d62155f.js +10 -0
  5. package/dist/client/699.57c0a1acb723202a.js +10 -0
  6. package/dist/client/768.973ce32e15099a48.js +10 -0
  7. package/dist/client/ai-employees/business-report/ui/report-utils.d.ts +2 -0
  8. package/dist/client/ai-employees/chatbox/hooks/useChatMessageActions.d.ts +2 -0
  9. package/dist/client/index.js +2 -2
  10. package/dist/externalVersion.js +15 -15
  11. package/dist/node_modules/fast-glob/package.json +1 -1
  12. package/dist/node_modules/flexsearch/package.json +1 -1
  13. package/dist/node_modules/fs-extra/package.json +1 -1
  14. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  15. package/dist/node_modules/openai/package.json +1 -1
  16. package/dist/node_modules/zod/package.json +1 -1
  17. package/dist/server/ai-employees/ai-conversations.js +2 -0
  18. package/dist/server/ai-employees/ai-employee.js +21 -13
  19. package/dist/server/ai-employees/middleware/skill-tools.js +16 -2
  20. package/dist/server/ai-employees/prompts.js +1 -0
  21. package/dist/server/llm-providers/anthropic.d.ts +2 -2
  22. package/dist/server/llm-providers/anthropic.js +1 -1
  23. package/dist/server/llm-providers/dashscope.d.ts +2 -3
  24. package/dist/server/llm-providers/dashscope.js +3 -28
  25. package/dist/server/llm-providers/deepseek.d.ts +2 -3
  26. package/dist/server/llm-providers/deepseek.js +2 -31
  27. package/dist/server/llm-providers/google-genai.d.ts +3 -18
  28. package/dist/server/llm-providers/google-genai.js +9 -7
  29. package/dist/server/llm-providers/kimi/provider.d.ts +4 -4
  30. package/dist/server/llm-providers/kimi/provider.js +3 -28
  31. package/dist/server/llm-providers/provider.d.ts +11 -2
  32. package/dist/server/llm-providers/provider.js +60 -0
  33. package/dist/server/manager/ai-chat-conversation.js +6 -2
  34. package/dist/server/manager/ai-context-datasource-manager.js +30 -1
  35. package/dist/server/utils.js +3 -2
  36. package/package.json +2 -2
  37. package/dist/client/a8d6d81fb88f1a8e.js +0 -10
  38. package/dist/client/d5e9663991c30eed.js +0 -10
  39. /package/dist/ai/{tools → skills/business-analysis-report/tools}/businessReportGenerator.d.ts +0 -0
  40. /package/dist/client/{62bf6ed27c8de0df.js → 228.b18148eb1009d2fb.js} +0 -0
  41. /package/dist/client/{1c3ef55a6d63c9a3.js → 290.0888139e33c9b7cb.js} +0 -0
  42. /package/dist/client/{f87cff5213f94856.js → 30.4f30511a3059c422.js} +0 -0
  43. /package/dist/client/{2db4faf814179140.js → 331.d547c95410476a69.js} +0 -0
  44. /package/dist/client/{87bc4d3cb55e4006.js → 343.83f7d96664e4e038.js} +0 -0
  45. /package/dist/client/{0e94d90f0134df30.js → 406.15c09d98faa2ccf1.js} +0 -0
  46. /package/dist/client/{f944d487b7ff1f00.js → 428.e9f38da3b0d8b498.js} +0 -0
  47. /package/dist/client/{8e82080c5e8ccfb7.js → 502.2b4a51e0a8122e52.js} +0 -0
  48. /package/dist/client/{85af3d6d85eb5b2b.js → 525.33a9c8ec28be4ec4.js} +0 -0
  49. /package/dist/client/{a4948d5b70172a69.js → 559.133d286a0a0a1d93.js} +0 -0
  50. /package/dist/client/{9ac11803370a9625.js → 561.776886c5308e3c26.js} +0 -0
  51. /package/dist/client/{c83c2cae956ba914.js → 580.e75f97fb883ad042.js} +0 -0
  52. /package/dist/client/{f8c075896e8b9c0b.js → 597.aa363881a325b5c0.js} +0 -0
  53. /package/dist/client/{200ac94fc7f6e97b.js → 604.de96f3ec4d471afd.js} +0 -0
  54. /package/dist/client/{81f6436fd9322dc1.js → 614.aa766080f6b99aab.js} +0 -0
  55. /package/dist/client/{b8005a3f79084610.js → 687.224e569a99cae4bb.js} +0 -0
  56. /package/dist/client/{c065565ccbb41f99.js → 711.266b8f1c520d467a.js} +0 -0
  57. /package/dist/client/{5af11e24bcb39ac4.js → 758.a9741e81911e53c3.js} +0 -0
  58. /package/dist/client/{5d5c118d11e91913.js → 792.ae8ad1fcae9fd974.js} +0 -0
  59. /package/dist/client/{8169eb2b48edf6c7.js → 820.6a26239ea96c075a.js} +0 -0
  60. /package/dist/client/{55d67b74f02b8d74.js → 832.0cf69e3f43c320b2.js} +0 -0
  61. /package/dist/client/{748fbb87c1013c6e.js → 927.ff5cd05b14901ae6.js} +0 -0
@@ -8,22 +8,21 @@
8
8
  */
9
9
 
10
10
  module.exports = {
11
- "@nocobase/plugin-acl": "2.1.0-alpha.15",
12
- "@nocobase/plugin-workflow": "2.1.0-alpha.15",
13
- "@nocobase/client": "2.1.0-alpha.15",
14
- "@nocobase/utils": "2.1.0-alpha.15",
15
- "@nocobase/database": "2.1.0-alpha.15",
16
- "@nocobase/server": "2.1.0-alpha.15",
17
- "@nocobase/plugin-file-manager": "2.1.0-alpha.15",
18
- "axios": "1.7.7",
19
- "@nocobase/actions": "2.1.0-alpha.15",
20
- "@nocobase/ai": "2.1.0-alpha.15",
11
+ "@nocobase/plugin-acl": "2.1.0-alpha.17",
12
+ "@nocobase/plugin-workflow": "2.1.0-alpha.17",
13
+ "@nocobase/client": "2.1.0-alpha.17",
14
+ "@nocobase/utils": "2.1.0-alpha.17",
15
+ "@nocobase/database": "2.1.0-alpha.17",
16
+ "@nocobase/server": "2.1.0-alpha.17",
17
+ "@nocobase/plugin-file-manager": "2.1.0-alpha.17",
18
+ "@nocobase/actions": "2.1.0-alpha.17",
19
+ "@nocobase/ai": "2.1.0-alpha.17",
21
20
  "langchain": "1.2.24",
22
21
  "react": "18.2.0",
23
22
  "antd": "5.24.2",
24
23
  "@formily/core": "2.3.7",
25
24
  "@formily/react": "2.3.7",
26
- "@nocobase/flow-engine": "2.1.0-alpha.15",
25
+ "@nocobase/flow-engine": "2.1.0-alpha.17",
27
26
  "@ant-design/icons": "5.6.1",
28
27
  "@formily/antd-v5": "1.2.3",
29
28
  "react-router-dom": "6.30.1",
@@ -34,18 +33,19 @@ module.exports = {
34
33
  "@langchain/langgraph": "1.1.4",
35
34
  "@langchain/community": "1.1.15",
36
35
  "@langchain/anthropic": "1.3.17",
36
+ "axios": "1.7.7",
37
37
  "@langchain/openai": "1.2.7",
38
38
  "@langchain/deepseek": "1.0.11",
39
39
  "@langchain/google-genai": "2.1.18",
40
40
  "@langchain/ollama": "1.2.2",
41
- "@nocobase/acl": "2.1.0-alpha.15",
42
- "@nocobase/resourcer": "2.1.0-alpha.15",
41
+ "@nocobase/acl": "2.1.0-alpha.17",
42
+ "@nocobase/resourcer": "2.1.0-alpha.17",
43
43
  "@emotion/css": "11.13.0",
44
44
  "dayjs": "1.11.13",
45
45
  "react-i18next": "11.18.6",
46
- "@nocobase/plugin-data-source-manager": "2.1.0-alpha.15",
46
+ "@nocobase/plugin-data-source-manager": "2.1.0-alpha.17",
47
47
  "ahooks": "3.7.8",
48
48
  "@langchain/langgraph-checkpoint": "1.0.0",
49
- "@nocobase/data-source-manager": "2.1.0-alpha.15",
49
+ "@nocobase/data-source-manager": "2.1.0-alpha.17",
50
50
  "react-dom": "18.2.0"
51
51
  };
@@ -1 +1 @@
1
- {"name":"fast-glob","version":"3.3.2","description":"It's a very fast and efficient glob library for Node.js","license":"MIT","repository":"mrmlnc/fast-glob","author":{"name":"Denis Malinochkin","url":"https://mrmlnc.com"},"engines":{"node":">=8.6.0"},"main":"out/index.js","typings":"out/index.d.ts","files":["out","!out/{benchmark,tests}","!out/**/*.map","!out/**/*.spec.*"],"keywords":["glob","patterns","fast","implementation"],"devDependencies":{"@nodelib/fs.macchiato":"^1.0.1","@types/glob-parent":"^5.1.0","@types/merge2":"^1.1.4","@types/micromatch":"^4.0.0","@types/mocha":"^5.2.7","@types/node":"^14.18.53","@types/picomatch":"^2.3.0","@types/sinon":"^7.5.0","bencho":"^0.1.1","eslint":"^6.5.1","eslint-config-mrmlnc":"^1.1.0","execa":"^7.1.1","fast-glob":"^3.0.4","fdir":"^6.0.1","glob":"^10.0.0","hereby":"^1.8.1","mocha":"^6.2.1","rimraf":"^5.0.0","sinon":"^7.5.0","snap-shot-it":"^7.9.10","typescript":"^4.9.5"},"dependencies":{"@nodelib/fs.stat":"^2.0.2","@nodelib/fs.walk":"^1.2.3","glob-parent":"^5.1.2","merge2":"^1.3.0","micromatch":"^4.0.4"},"scripts":{"clean":"rimraf out","lint":"eslint \"src/**/*.ts\" --cache","compile":"tsc","test":"mocha \"out/**/*.spec.js\" -s 0","test:e2e":"mocha \"out/**/*.e2e.js\" -s 0","test:e2e:sync":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(sync\\)\"","test:e2e:async":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(async\\)\"","test:e2e:stream":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(stream\\)\"","build":"npm run clean && npm run compile && npm run lint && npm test","watch":"npm run clean && npm run compile -- --sourceMap --watch","bench:async":"npm run bench:product:async && npm run bench:regression:async","bench:stream":"npm run bench:product:stream && npm run bench:regression:stream","bench:sync":"npm run bench:product:sync && npm run bench:regression:sync","bench:product":"npm run bench:product:async && npm run bench:product:sync && npm run bench:product:stream","bench:product:async":"hereby bench:product:async","bench:product:sync":"hereby bench:product:sync","bench:product:stream":"hereby bench:product:stream","bench:regression":"npm run bench:regression:async && npm run bench:regression:sync && npm run bench:regression:stream","bench:regression:async":"hereby bench:regression:async","bench:regression:sync":"hereby bench:regression:sync","bench:regression:stream":"hereby bench:regression:stream"},"_lastModified":"2026-04-10T12:40:59.908Z"}
1
+ {"name":"fast-glob","version":"3.3.2","description":"It's a very fast and efficient glob library for Node.js","license":"MIT","repository":"mrmlnc/fast-glob","author":{"name":"Denis Malinochkin","url":"https://mrmlnc.com"},"engines":{"node":">=8.6.0"},"main":"out/index.js","typings":"out/index.d.ts","files":["out","!out/{benchmark,tests}","!out/**/*.map","!out/**/*.spec.*"],"keywords":["glob","patterns","fast","implementation"],"devDependencies":{"@nodelib/fs.macchiato":"^1.0.1","@types/glob-parent":"^5.1.0","@types/merge2":"^1.1.4","@types/micromatch":"^4.0.0","@types/mocha":"^5.2.7","@types/node":"^14.18.53","@types/picomatch":"^2.3.0","@types/sinon":"^7.5.0","bencho":"^0.1.1","eslint":"^6.5.1","eslint-config-mrmlnc":"^1.1.0","execa":"^7.1.1","fast-glob":"^3.0.4","fdir":"^6.0.1","glob":"^10.0.0","hereby":"^1.8.1","mocha":"^6.2.1","rimraf":"^5.0.0","sinon":"^7.5.0","snap-shot-it":"^7.9.10","typescript":"^4.9.5"},"dependencies":{"@nodelib/fs.stat":"^2.0.2","@nodelib/fs.walk":"^1.2.3","glob-parent":"^5.1.2","merge2":"^1.3.0","micromatch":"^4.0.4"},"scripts":{"clean":"rimraf out","lint":"eslint \"src/**/*.ts\" --cache","compile":"tsc","test":"mocha \"out/**/*.spec.js\" -s 0","test:e2e":"mocha \"out/**/*.e2e.js\" -s 0","test:e2e:sync":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(sync\\)\"","test:e2e:async":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(async\\)\"","test:e2e:stream":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(stream\\)\"","build":"npm run clean && npm run compile && npm run lint && npm test","watch":"npm run clean && npm run compile -- --sourceMap --watch","bench:async":"npm run bench:product:async && npm run bench:regression:async","bench:stream":"npm run bench:product:stream && npm run bench:regression:stream","bench:sync":"npm run bench:product:sync && npm run bench:regression:sync","bench:product":"npm run bench:product:async && npm run bench:product:sync && npm run bench:product:stream","bench:product:async":"hereby bench:product:async","bench:product:sync":"hereby bench:product:sync","bench:product:stream":"hereby bench:product:stream","bench:regression":"npm run bench:regression:async && npm run bench:regression:sync && npm run bench:regression:stream","bench:regression:async":"hereby bench:regression:async","bench:regression:sync":"hereby bench:regression:sync","bench:regression:stream":"hereby bench:regression:stream"},"_lastModified":"2026-04-17T02:46:28.986Z"}
@@ -1 +1 @@
1
- {"public":true,"preferGlobal":false,"name":"flexsearch","version":"0.8.212","description":"Next-Generation full-text search library for Browser and Node.js","homepage":"https://github.com/nextapps-de/flexsearch/","author":"Thomas Wilkerling","copyright":"Nextapps GmbH","license":"Apache-2.0","readme":"README.md","keywords":["fulltext search","elastic search","fastest search","contextual search","document search","fuzzy search","fuzzy match","search engine"],"repository":{"type":"git","url":"https://github.com/nextapps-de/flexsearch.git"},"bugs":{"url":"https://github.com/nextapps-de/flexsearch/issues","email":"info@nextapps.de"},"main":"dist/flexsearch.bundle.min.js","module":"dist/flexsearch.bundle.module.min.mjs","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./dist/flexsearch.bundle.module.min.mjs","require":"./dist/flexsearch.bundle.min.js"},"./lang/*":{"import":"./dist/module/lang/*.js","require":"./dist/lang/*.min.js"},"./db/*":{"import":"./dist/module/db/*/index.js","require":"./dist/db/*/index.cjs"},"./debug":{"import":"./dist/flexsearch.bundle.module.debug.mjs","require":"./dist/flexsearch.bundle.debug.js"}},"browser":{"flexsearch":"./dist/flexsearch.bundle.module.min.mjs","flexsearch/debug":"./dist/flexsearch.bundle.module.debug.mjs","dist/flexsearch.bundle.min.js":"./dist/flexsearch.bundle.min.js","dist/flexsearch.bundle.module.min.js":"./dist/flexsearch.bundle.module.min.mjs","dist/flexsearch.bundle.module.min.mjs":"./dist/flexsearch.bundle.module.min.mjs","worker_threads":false,"path":false,"clickhouse":false,"mongodb":false,"pg-promise":false,"redis":false,"sqlite3":false},"scripts":{"build":"npm run build:bundle && npm run build:bundle:debug && exit 0","build:bundle":"node task/build RELEASE=bundle DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false","build:bundle:debug":"node task/build RELEASE=bundle DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:compact":"node task/build RELEASE=compact DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:compact:debug":"node task/build RELEASE=compact DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:light":"node task/build RELEASE=light DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:light:debug":"node task/build RELEASE=light DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:es5":"node task/build RELEASE=es5 DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=true SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false LANGUAGE_OUT=ECMASCRIPT5_STRICT","build:es5:debug":"node task/build RELEASE=es5 DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=true SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT LANGUAGE_OUT=ECMASCRIPT5_STRICT","build:lang":"node task/build RELEASE=lang","build:db":"npx rollup tmp/db/indexeddb/index.js --file dist/db/indexeddb/index.cjs --format cjs && npx rollup tmp/db/postgres/index.js --file dist/db/postgres/index.cjs --format cjs && npx rollup tmp/db/sqlite/index.js --file dist/db/sqlite/index.cjs --format cjs && npx rollup tmp/db/mongodb/index.js --file dist/db/mongodb/index.cjs --format cjs && npx rollup tmp/db/redis/index.js --file dist/db/redis/index.cjs --format cjs && npx rollup tmp/db/clickhouse/index.js --file dist/db/clickhouse/index.cjs --format cjs","build:module":"node task/babel && exit 0","build:module:debug":"node task/babel DEBUG=true && exit 0","build:module:min":"node task/babel RELEASE=min && exit 0","build:module:bundle":"node task/build RELEASE=bundle.module DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false","build:module:bundle:debug":"node task/build RELEASE=bundle.module DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:module:compact":"node task/build RELEASE=compact.module DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:module:compact:debug":"node task/build RELEASE=compact.module DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:module:light":"node task/build RELEASE=light.module DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:module:light:debug":"node task/build RELEASE=light.module DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:all":"npm run build:bundle && npm run build:bundle:debug && npm run build:light && npm run build:light:debug && npm run build:compact && npm run build:compact:debug && npm run build:module:bundle && npm run build:module:bundle:debug && npm run build:module:light && npm run build:module:light:debug && npm run build:module:compact && npm run build:module:compact:debug && npm run build:es5 && npm run build:es5:debug && npm run build:lang && npm run build:module && npm run build:module:debug && npm run build:module:min && npm run build:db","build:custom":"node task/build RELEASE=custom","test":"mocha test/*.js --exit","test:coverage":"c8 -c test/.c8rc.json mocha test/*.js --exit","test:keystore":"set NODE_OPTIONS=--max-old-space-size=16000 && c8 -c test/.c8rc.json mocha test/keystore.js --exit","test:db":"c8 -c test/.c8rc.json mocha test/persistent.*.js --exit","test:all":"npx mocha test/*.js --exit module/bundle && npx mocha test/*.js --exit module-debug/bundle && npx mocha test/*.js --exit module-min/bundle && npx mocha test/*.js --exit flexsearch.bundle.debug && npx mocha test/*.js --exit flexsearch.bundle.min && npx mocha test/*.js --exit flexsearch.bundle.module.debug && npx mocha test/*.js --exit flexsearch.bundle.module.min && npx mocha test/*.js --exit flexsearch.compact.debug && npx mocha test/*.js --exit flexsearch.compact.min && npx mocha test/*.js --exit flexsearch.compact.module.debug && npx mocha test/*.js --exit flexsearch.compact.module.min && npx mocha test/*.js --exit flexsearch.es5.debug && npx mocha test/*.js --exit flexsearch.es5.min && npx mocha test/*.js --exit flexsearch.light.debug && npx mocha test/*.js --exit flexsearch.light.min && npx mocha test/*.js --exit flexsearch.light.module.debug && npx mocha test/*.js --exit flexsearch.light.module.min","release":"npm version --no-git-tag-version patch && npm run build:all && npm run test:all"},"files":["dist/**","src/**","task/**","index.d.ts","README.md","CHANGELOG.md","LICENSE"],"devDependencies":{"babel-cli":"^6.26.0","babel-plugin-conditional-compile":"^0.0.5","babel-plugin-minify-constant-folding":"^0.5.0","babel-plugin-minify-dead-code-elimination":"^0.5.2","babel-plugin-minify-flip-comparisons":"^0.4.3","babel-plugin-minify-guarded-expressions":"^0.4.4","babel-plugin-minify-infinity":"^0.4.3","babel-plugin-minify-mangle-names":"^0.5.1","babel-plugin-minify-replace":"^0.5.0","babel-plugin-minify-simplify":"^0.5.1","babel-plugin-minify-type-constructors":"^0.4.3","babel-plugin-transform-member-expression-literals":"^6.9.4","babel-plugin-transform-merge-sibling-variables":"^6.9.5","babel-plugin-transform-minify-booleans":"^6.9.4","babel-plugin-transform-property-literals":"^6.9.4","babel-plugin-transform-simplify-comparison-operators":"^6.9.4","babel-plugin-transform-undefined-to-void":"^6.9.4","c8":"^10.1.3","chai":"^5.2.0","clickhouse":"^2.6.0","google-closure-compiler":"^20250520.0.0","mocha":"^11.1.0","mongodb":"^6.13.0","pg-promise":"^11.13.0","redis":"^5.1.0","rollup":"^4.35.0","sqlite3":"^5.1.7"},"funding":[{"type":"github","url":"https://github.com/ts-thomas"},{"type":"paypal","url":"https://www.paypal.com/donate/?hosted_button_id=GEVR88FC9BWRW"},{"type":"opencollective","url":"https://opencollective.com/flexsearch"},{"type":"patreon","url":"https://patreon.com/user?u=96245532"},{"type":"liberapay","url":"https://liberapay.com/ts-thomas"}],"_lastModified":"2026-04-10T12:41:00.315Z"}
1
+ {"public":true,"preferGlobal":false,"name":"flexsearch","version":"0.8.212","description":"Next-Generation full-text search library for Browser and Node.js","homepage":"https://github.com/nextapps-de/flexsearch/","author":"Thomas Wilkerling","copyright":"Nextapps GmbH","license":"Apache-2.0","readme":"README.md","keywords":["fulltext search","elastic search","fastest search","contextual search","document search","fuzzy search","fuzzy match","search engine"],"repository":{"type":"git","url":"https://github.com/nextapps-de/flexsearch.git"},"bugs":{"url":"https://github.com/nextapps-de/flexsearch/issues","email":"info@nextapps.de"},"main":"dist/flexsearch.bundle.min.js","module":"dist/flexsearch.bundle.module.min.mjs","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./dist/flexsearch.bundle.module.min.mjs","require":"./dist/flexsearch.bundle.min.js"},"./lang/*":{"import":"./dist/module/lang/*.js","require":"./dist/lang/*.min.js"},"./db/*":{"import":"./dist/module/db/*/index.js","require":"./dist/db/*/index.cjs"},"./debug":{"import":"./dist/flexsearch.bundle.module.debug.mjs","require":"./dist/flexsearch.bundle.debug.js"}},"browser":{"flexsearch":"./dist/flexsearch.bundle.module.min.mjs","flexsearch/debug":"./dist/flexsearch.bundle.module.debug.mjs","dist/flexsearch.bundle.min.js":"./dist/flexsearch.bundle.min.js","dist/flexsearch.bundle.module.min.js":"./dist/flexsearch.bundle.module.min.mjs","dist/flexsearch.bundle.module.min.mjs":"./dist/flexsearch.bundle.module.min.mjs","worker_threads":false,"path":false,"clickhouse":false,"mongodb":false,"pg-promise":false,"redis":false,"sqlite3":false},"scripts":{"build":"npm run build:bundle && npm run build:bundle:debug && exit 0","build:bundle":"node task/build RELEASE=bundle DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false","build:bundle:debug":"node task/build RELEASE=bundle DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:compact":"node task/build RELEASE=compact DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:compact:debug":"node task/build RELEASE=compact DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:light":"node task/build RELEASE=light DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:light:debug":"node task/build RELEASE=light DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:es5":"node task/build RELEASE=es5 DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=true SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false LANGUAGE_OUT=ECMASCRIPT5_STRICT","build:es5:debug":"node task/build RELEASE=es5 DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=true SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT LANGUAGE_OUT=ECMASCRIPT5_STRICT","build:lang":"node task/build RELEASE=lang","build:db":"npx rollup tmp/db/indexeddb/index.js --file dist/db/indexeddb/index.cjs --format cjs && npx rollup tmp/db/postgres/index.js --file dist/db/postgres/index.cjs --format cjs && npx rollup tmp/db/sqlite/index.js --file dist/db/sqlite/index.cjs --format cjs && npx rollup tmp/db/mongodb/index.js --file dist/db/mongodb/index.cjs --format cjs && npx rollup tmp/db/redis/index.js --file dist/db/redis/index.cjs --format cjs && npx rollup tmp/db/clickhouse/index.js --file dist/db/clickhouse/index.cjs --format cjs","build:module":"node task/babel && exit 0","build:module:debug":"node task/babel DEBUG=true && exit 0","build:module:min":"node task/babel RELEASE=min && exit 0","build:module:bundle":"node task/build RELEASE=bundle.module DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false","build:module:bundle:debug":"node task/build RELEASE=bundle.module DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:module:compact":"node task/build RELEASE=compact.module DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:module:compact:debug":"node task/build RELEASE=compact.module DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:module:light":"node task/build RELEASE=light.module DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:module:light:debug":"node task/build RELEASE=light.module DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:all":"npm run build:bundle && npm run build:bundle:debug && npm run build:light && npm run build:light:debug && npm run build:compact && npm run build:compact:debug && npm run build:module:bundle && npm run build:module:bundle:debug && npm run build:module:light && npm run build:module:light:debug && npm run build:module:compact && npm run build:module:compact:debug && npm run build:es5 && npm run build:es5:debug && npm run build:lang && npm run build:module && npm run build:module:debug && npm run build:module:min && npm run build:db","build:custom":"node task/build RELEASE=custom","test":"mocha test/*.js --exit","test:coverage":"c8 -c test/.c8rc.json mocha test/*.js --exit","test:keystore":"set NODE_OPTIONS=--max-old-space-size=16000 && c8 -c test/.c8rc.json mocha test/keystore.js --exit","test:db":"c8 -c test/.c8rc.json mocha test/persistent.*.js --exit","test:all":"npx mocha test/*.js --exit module/bundle && npx mocha test/*.js --exit module-debug/bundle && npx mocha test/*.js --exit module-min/bundle && npx mocha test/*.js --exit flexsearch.bundle.debug && npx mocha test/*.js --exit flexsearch.bundle.min && npx mocha test/*.js --exit flexsearch.bundle.module.debug && npx mocha test/*.js --exit flexsearch.bundle.module.min && npx mocha test/*.js --exit flexsearch.compact.debug && npx mocha test/*.js --exit flexsearch.compact.min && npx mocha test/*.js --exit flexsearch.compact.module.debug && npx mocha test/*.js --exit flexsearch.compact.module.min && npx mocha test/*.js --exit flexsearch.es5.debug && npx mocha test/*.js --exit flexsearch.es5.min && npx mocha test/*.js --exit flexsearch.light.debug && npx mocha test/*.js --exit flexsearch.light.min && npx mocha test/*.js --exit flexsearch.light.module.debug && npx mocha test/*.js --exit flexsearch.light.module.min","release":"npm version --no-git-tag-version patch && npm run build:all && npm run test:all"},"files":["dist/**","src/**","task/**","index.d.ts","README.md","CHANGELOG.md","LICENSE"],"devDependencies":{"babel-cli":"^6.26.0","babel-plugin-conditional-compile":"^0.0.5","babel-plugin-minify-constant-folding":"^0.5.0","babel-plugin-minify-dead-code-elimination":"^0.5.2","babel-plugin-minify-flip-comparisons":"^0.4.3","babel-plugin-minify-guarded-expressions":"^0.4.4","babel-plugin-minify-infinity":"^0.4.3","babel-plugin-minify-mangle-names":"^0.5.1","babel-plugin-minify-replace":"^0.5.0","babel-plugin-minify-simplify":"^0.5.1","babel-plugin-minify-type-constructors":"^0.4.3","babel-plugin-transform-member-expression-literals":"^6.9.4","babel-plugin-transform-merge-sibling-variables":"^6.9.5","babel-plugin-transform-minify-booleans":"^6.9.4","babel-plugin-transform-property-literals":"^6.9.4","babel-plugin-transform-simplify-comparison-operators":"^6.9.4","babel-plugin-transform-undefined-to-void":"^6.9.4","c8":"^10.1.3","chai":"^5.2.0","clickhouse":"^2.6.0","google-closure-compiler":"^20250520.0.0","mocha":"^11.1.0","mongodb":"^6.13.0","pg-promise":"^11.13.0","redis":"^5.1.0","rollup":"^4.35.0","sqlite3":"^5.1.7"},"funding":[{"type":"github","url":"https://github.com/ts-thomas"},{"type":"paypal","url":"https://www.paypal.com/donate/?hosted_button_id=GEVR88FC9BWRW"},{"type":"opencollective","url":"https://opencollective.com/flexsearch"},{"type":"patreon","url":"https://patreon.com/user?u=96245532"},{"type":"liberapay","url":"https://liberapay.com/ts-thomas"}],"_lastModified":"2026-04-17T02:46:29.386Z"}
@@ -1 +1 @@
1
- {"name":"fs-extra","version":"9.1.0","description":"fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.","engines":{"node":">=10"},"homepage":"https://github.com/jprichardson/node-fs-extra","repository":{"type":"git","url":"https://github.com/jprichardson/node-fs-extra"},"keywords":["fs","file","file system","copy","directory","extra","mkdirp","mkdir","mkdirs","recursive","json","read","write","extra","delete","remove","touch","create","text","output","move","promise"],"author":"JP Richardson <jprichardson@gmail.com>","license":"MIT","dependencies":{"at-least-node":"^1.0.0","graceful-fs":"^4.2.0","jsonfile":"^6.0.1","universalify":"^2.0.0"},"devDependencies":{"coveralls":"^3.0.0","klaw":"^2.1.1","klaw-sync":"^3.0.2","minimist":"^1.1.1","mocha":"^5.0.5","nyc":"^15.0.0","proxyquire":"^2.0.1","read-dir-files":"^0.1.1","standard":"^14.1.0"},"main":"./lib/index.js","files":["lib/","!lib/**/__tests__/"],"scripts":{"full-ci":"npm run lint && npm run coverage","coverage":"nyc -r lcovonly npm run unit","coveralls":"coveralls < coverage/lcov.info","lint":"standard","test-find":"find ./lib/**/__tests__ -name *.test.js | xargs mocha","test":"npm run lint && npm run unit","unit":"node test.js"},"_lastModified":"2026-04-10T12:40:59.386Z"}
1
+ {"name":"fs-extra","version":"9.1.0","description":"fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.","engines":{"node":">=10"},"homepage":"https://github.com/jprichardson/node-fs-extra","repository":{"type":"git","url":"https://github.com/jprichardson/node-fs-extra"},"keywords":["fs","file","file system","copy","directory","extra","mkdirp","mkdir","mkdirs","recursive","json","read","write","extra","delete","remove","touch","create","text","output","move","promise"],"author":"JP Richardson <jprichardson@gmail.com>","license":"MIT","dependencies":{"at-least-node":"^1.0.0","graceful-fs":"^4.2.0","jsonfile":"^6.0.1","universalify":"^2.0.0"},"devDependencies":{"coveralls":"^3.0.0","klaw":"^2.1.1","klaw-sync":"^3.0.2","minimist":"^1.1.1","mocha":"^5.0.5","nyc":"^15.0.0","proxyquire":"^2.0.1","read-dir-files":"^0.1.1","standard":"^14.1.0"},"main":"./lib/index.js","files":["lib/","!lib/**/__tests__/"],"scripts":{"full-ci":"npm run lint && npm run coverage","coverage":"nyc -r lcovonly npm run unit","coveralls":"coveralls < coverage/lcov.info","lint":"standard","test-find":"find ./lib/**/__tests__ -name *.test.js | xargs mocha","test":"npm run lint && npm run unit","unit":"node test.js"},"_lastModified":"2026-04-17T02:46:28.448Z"}
@@ -1 +1 @@
1
- {"name":"nodejs-snowflake","collaborators":["Utkarsh Srivastava <utkarsh@sagacious.dev>"],"description":"Generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)","version":"2.0.1","license":"Apache 2.0","repository":{"type":"git","url":"https://github.com/utkarsh-pro/nodejs-snowflake.git"},"files":["nodejs_snowflake_bg.wasm","nodejs_snowflake.js","nodejs_snowflake.d.ts"],"main":"nodejs_snowflake.js","types":"nodejs_snowflake.d.ts","_lastModified":"2026-04-10T12:40:56.717Z"}
1
+ {"name":"nodejs-snowflake","collaborators":["Utkarsh Srivastava <utkarsh@sagacious.dev>"],"description":"Generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)","version":"2.0.1","license":"Apache 2.0","repository":{"type":"git","url":"https://github.com/utkarsh-pro/nodejs-snowflake.git"},"files":["nodejs_snowflake_bg.wasm","nodejs_snowflake.js","nodejs_snowflake.d.ts"],"main":"nodejs_snowflake.js","types":"nodejs_snowflake.d.ts","_lastModified":"2026-04-17T02:46:25.737Z"}
@@ -1 +1 @@
1
- {"name":"openai","version":"6.22.0","description":"The official TypeScript library for the OpenAI API","author":"OpenAI <support@openai.com>","types":"./index.d.ts","main":"./index.js","type":"commonjs","repository":"github:openai/openai-node","license":"Apache-2.0","packageManager":"yarn@1.22.22","files":["**/*"],"private":false,"publishConfig":{"access":"public"},"scripts":{"test":"./scripts/test","build":"./scripts/build","format":"./scripts/format","tsn":"ts-node -r tsconfig-paths/register","lint":"./scripts/lint","fix":"./scripts/format"},"dependencies":{},"bin":{"openai":"bin/cli"},"exports":{".":{"require":{"types":"./index.d.ts","default":"./index.js"},"types":"./index.d.mts","default":"./index.mjs"},"./_vendor/*.mjs":{"default":"./_vendor/*.mjs"},"./_vendor/*.js":{"default":"./_vendor/*.js"},"./_vendor/*":{"import":"./_vendor/*.mjs","require":"./_vendor/*.js"},"./api-promise":{"import":"./api-promise.mjs","require":"./api-promise.js"},"./api-promise.js":{"default":"./api-promise.js"},"./api-promise.mjs":{"default":"./api-promise.mjs"},"./azure":{"import":"./azure.mjs","require":"./azure.js"},"./azure.js":{"default":"./azure.js"},"./azure.mjs":{"default":"./azure.mjs"},"./beta/*.mjs":{"default":"./beta/*.mjs"},"./beta/*.js":{"default":"./beta/*.js"},"./beta/*":{"import":"./beta/*.mjs","require":"./beta/*.js"},"./client":{"import":"./client.mjs","require":"./client.js"},"./client.js":{"default":"./client.js"},"./client.mjs":{"default":"./client.mjs"},"./core/*.mjs":{"default":"./core/*.mjs"},"./core/*.js":{"default":"./core/*.js"},"./core/*":{"import":"./core/*.mjs","require":"./core/*.js"},"./error":{"import":"./error.mjs","require":"./error.js"},"./error.js":{"default":"./error.js"},"./error.mjs":{"default":"./error.mjs"},"./helpers/*.mjs":{"default":"./helpers/*.mjs"},"./helpers/*.js":{"default":"./helpers/*.js"},"./helpers/*":{"import":"./helpers/*.mjs","require":"./helpers/*.js"},"./index":{"import":"./index.mjs","require":"./index.js"},"./index.js":{"default":"./index.js"},"./index.mjs":{"default":"./index.mjs"},"./lib/*.mjs":{"default":"./lib/*.mjs"},"./lib/*.js":{"default":"./lib/*.js"},"./lib/*":{"import":"./lib/*.mjs","require":"./lib/*.js"},"./pagination":{"import":"./pagination.mjs","require":"./pagination.js"},"./pagination.js":{"default":"./pagination.js"},"./pagination.mjs":{"default":"./pagination.mjs"},"./realtime/*.mjs":{"default":"./realtime/*.mjs"},"./realtime/*.js":{"default":"./realtime/*.js"},"./realtime/*":{"import":"./realtime/*.mjs","require":"./realtime/*.js"},"./resource":{"import":"./resource.mjs","require":"./resource.js"},"./resource.js":{"default":"./resource.js"},"./resource.mjs":{"default":"./resource.mjs"},"./resources/*.mjs":{"default":"./resources/*.mjs"},"./resources/*.js":{"default":"./resources/*.js"},"./resources/*":{"import":"./resources/*.mjs","require":"./resources/*.js"},"./resources":{"import":"./resources.mjs","require":"./resources.js"},"./resources.js":{"default":"./resources.js"},"./resources.mjs":{"default":"./resources.mjs"},"./streaming":{"import":"./streaming.mjs","require":"./streaming.js"},"./streaming.js":{"default":"./streaming.js"},"./streaming.mjs":{"default":"./streaming.mjs"},"./uploads":{"import":"./uploads.mjs","require":"./uploads.js"},"./uploads.js":{"default":"./uploads.js"},"./uploads.mjs":{"default":"./uploads.mjs"},"./version":{"import":"./version.mjs","require":"./version.js"},"./version.js":{"default":"./version.js"},"./version.mjs":{"default":"./version.mjs"}},"peerDependencies":{"ws":"^8.18.0","zod":"^3.25 || ^4.0"},"peerDependenciesMeta":{"ws":{"optional":true},"zod":{"optional":true}},"_lastModified":"2026-04-10T12:40:59.220Z"}
1
+ {"name":"openai","version":"6.22.0","description":"The official TypeScript library for the OpenAI API","author":"OpenAI <support@openai.com>","types":"./index.d.ts","main":"./index.js","type":"commonjs","repository":"github:openai/openai-node","license":"Apache-2.0","packageManager":"yarn@1.22.22","files":["**/*"],"private":false,"publishConfig":{"access":"public"},"scripts":{"test":"./scripts/test","build":"./scripts/build","format":"./scripts/format","tsn":"ts-node -r tsconfig-paths/register","lint":"./scripts/lint","fix":"./scripts/format"},"dependencies":{},"bin":{"openai":"bin/cli"},"exports":{".":{"require":{"types":"./index.d.ts","default":"./index.js"},"types":"./index.d.mts","default":"./index.mjs"},"./_vendor/*.mjs":{"default":"./_vendor/*.mjs"},"./_vendor/*.js":{"default":"./_vendor/*.js"},"./_vendor/*":{"import":"./_vendor/*.mjs","require":"./_vendor/*.js"},"./api-promise":{"import":"./api-promise.mjs","require":"./api-promise.js"},"./api-promise.js":{"default":"./api-promise.js"},"./api-promise.mjs":{"default":"./api-promise.mjs"},"./azure":{"import":"./azure.mjs","require":"./azure.js"},"./azure.js":{"default":"./azure.js"},"./azure.mjs":{"default":"./azure.mjs"},"./beta/*.mjs":{"default":"./beta/*.mjs"},"./beta/*.js":{"default":"./beta/*.js"},"./beta/*":{"import":"./beta/*.mjs","require":"./beta/*.js"},"./client":{"import":"./client.mjs","require":"./client.js"},"./client.js":{"default":"./client.js"},"./client.mjs":{"default":"./client.mjs"},"./core/*.mjs":{"default":"./core/*.mjs"},"./core/*.js":{"default":"./core/*.js"},"./core/*":{"import":"./core/*.mjs","require":"./core/*.js"},"./error":{"import":"./error.mjs","require":"./error.js"},"./error.js":{"default":"./error.js"},"./error.mjs":{"default":"./error.mjs"},"./helpers/*.mjs":{"default":"./helpers/*.mjs"},"./helpers/*.js":{"default":"./helpers/*.js"},"./helpers/*":{"import":"./helpers/*.mjs","require":"./helpers/*.js"},"./index":{"import":"./index.mjs","require":"./index.js"},"./index.js":{"default":"./index.js"},"./index.mjs":{"default":"./index.mjs"},"./lib/*.mjs":{"default":"./lib/*.mjs"},"./lib/*.js":{"default":"./lib/*.js"},"./lib/*":{"import":"./lib/*.mjs","require":"./lib/*.js"},"./pagination":{"import":"./pagination.mjs","require":"./pagination.js"},"./pagination.js":{"default":"./pagination.js"},"./pagination.mjs":{"default":"./pagination.mjs"},"./realtime/*.mjs":{"default":"./realtime/*.mjs"},"./realtime/*.js":{"default":"./realtime/*.js"},"./realtime/*":{"import":"./realtime/*.mjs","require":"./realtime/*.js"},"./resource":{"import":"./resource.mjs","require":"./resource.js"},"./resource.js":{"default":"./resource.js"},"./resource.mjs":{"default":"./resource.mjs"},"./resources/*.mjs":{"default":"./resources/*.mjs"},"./resources/*.js":{"default":"./resources/*.js"},"./resources/*":{"import":"./resources/*.mjs","require":"./resources/*.js"},"./resources":{"import":"./resources.mjs","require":"./resources.js"},"./resources.js":{"default":"./resources.js"},"./resources.mjs":{"default":"./resources.mjs"},"./streaming":{"import":"./streaming.mjs","require":"./streaming.js"},"./streaming.js":{"default":"./streaming.js"},"./streaming.mjs":{"default":"./streaming.mjs"},"./uploads":{"import":"./uploads.mjs","require":"./uploads.js"},"./uploads.js":{"default":"./uploads.js"},"./uploads.mjs":{"default":"./uploads.mjs"},"./version":{"import":"./version.mjs","require":"./version.js"},"./version.js":{"default":"./version.js"},"./version.mjs":{"default":"./version.mjs"}},"peerDependencies":{"ws":"^8.18.0","zod":"^3.25 || ^4.0"},"peerDependenciesMeta":{"ws":{"optional":true},"zod":{"optional":true}},"_lastModified":"2026-04-17T02:46:28.267Z"}
@@ -1 +1 @@
1
- {"name":"zod","version":"4.3.5","type":"module","license":"MIT","author":"Colin McDonnell <zod@colinhacks.com>","description":"TypeScript-first schema declaration and validation library with static type inference","homepage":"https://zod.dev","llms":"https://zod.dev/llms.txt","llmsFull":"https://zod.dev/llms-full.txt","mcpServer":"https://mcp.inkeep.com/zod/mcp","funding":"https://github.com/sponsors/colinhacks","sideEffects":false,"files":["src","**/*.js","**/*.mjs","**/*.cjs","**/*.d.ts","**/*.d.mts","**/*.d.cts","**/package.json"],"keywords":["typescript","schema","validation","type","inference"],"main":"./index.cjs","types":"./index.d.cts","module":"./index.js","zshy":{"exports":{"./package.json":"./package.json",".":"./src/index.ts","./mini":"./src/mini/index.ts","./locales":"./src/locales/index.ts","./v3":"./src/v3/index.ts","./v4":"./src/v4/index.ts","./v4-mini":"./src/v4-mini/index.ts","./v4/mini":"./src/v4/mini/index.ts","./v4/core":"./src/v4/core/index.ts","./v4/locales":"./src/v4/locales/index.ts","./v4/locales/*":"./src/v4/locales/*"},"conditions":{"@zod/source":"src"}},"exports":{"./package.json":"./package.json",".":{"@zod/source":"./src/index.ts","types":"./index.d.cts","import":"./index.js","require":"./index.cjs"},"./mini":{"@zod/source":"./src/mini/index.ts","types":"./mini/index.d.cts","import":"./mini/index.js","require":"./mini/index.cjs"},"./locales":{"@zod/source":"./src/locales/index.ts","types":"./locales/index.d.cts","import":"./locales/index.js","require":"./locales/index.cjs"},"./v3":{"@zod/source":"./src/v3/index.ts","types":"./v3/index.d.cts","import":"./v3/index.js","require":"./v3/index.cjs"},"./v4":{"@zod/source":"./src/v4/index.ts","types":"./v4/index.d.cts","import":"./v4/index.js","require":"./v4/index.cjs"},"./v4-mini":{"@zod/source":"./src/v4-mini/index.ts","types":"./v4-mini/index.d.cts","import":"./v4-mini/index.js","require":"./v4-mini/index.cjs"},"./v4/mini":{"@zod/source":"./src/v4/mini/index.ts","types":"./v4/mini/index.d.cts","import":"./v4/mini/index.js","require":"./v4/mini/index.cjs"},"./v4/core":{"@zod/source":"./src/v4/core/index.ts","types":"./v4/core/index.d.cts","import":"./v4/core/index.js","require":"./v4/core/index.cjs"},"./v4/locales":{"@zod/source":"./src/v4/locales/index.ts","types":"./v4/locales/index.d.cts","import":"./v4/locales/index.js","require":"./v4/locales/index.cjs"},"./v4/locales/*":{"@zod/source":"./src/v4/locales/*","types":"./v4/locales/*","import":"./v4/locales/*","require":"./v4/locales/*"}},"repository":{"type":"git","url":"git+https://github.com/colinhacks/zod.git"},"bugs":{"url":"https://github.com/colinhacks/zod/issues"},"support":{"backing":{"npm-funding":true}},"scripts":{"clean":"git clean -xdf . -e node_modules","build":"zshy --project tsconfig.build.json","postbuild":"tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .","test:watch":"pnpm vitest","test":"pnpm vitest run","prepublishOnly":"tsx ../../scripts/check-versions.ts"},"_lastModified":"2026-04-10T12:40:57.671Z"}
1
+ {"name":"zod","version":"4.3.5","type":"module","license":"MIT","author":"Colin McDonnell <zod@colinhacks.com>","description":"TypeScript-first schema declaration and validation library with static type inference","homepage":"https://zod.dev","llms":"https://zod.dev/llms.txt","llmsFull":"https://zod.dev/llms-full.txt","mcpServer":"https://mcp.inkeep.com/zod/mcp","funding":"https://github.com/sponsors/colinhacks","sideEffects":false,"files":["src","**/*.js","**/*.mjs","**/*.cjs","**/*.d.ts","**/*.d.mts","**/*.d.cts","**/package.json"],"keywords":["typescript","schema","validation","type","inference"],"main":"./index.cjs","types":"./index.d.cts","module":"./index.js","zshy":{"exports":{"./package.json":"./package.json",".":"./src/index.ts","./mini":"./src/mini/index.ts","./locales":"./src/locales/index.ts","./v3":"./src/v3/index.ts","./v4":"./src/v4/index.ts","./v4-mini":"./src/v4-mini/index.ts","./v4/mini":"./src/v4/mini/index.ts","./v4/core":"./src/v4/core/index.ts","./v4/locales":"./src/v4/locales/index.ts","./v4/locales/*":"./src/v4/locales/*"},"conditions":{"@zod/source":"src"}},"exports":{"./package.json":"./package.json",".":{"@zod/source":"./src/index.ts","types":"./index.d.cts","import":"./index.js","require":"./index.cjs"},"./mini":{"@zod/source":"./src/mini/index.ts","types":"./mini/index.d.cts","import":"./mini/index.js","require":"./mini/index.cjs"},"./locales":{"@zod/source":"./src/locales/index.ts","types":"./locales/index.d.cts","import":"./locales/index.js","require":"./locales/index.cjs"},"./v3":{"@zod/source":"./src/v3/index.ts","types":"./v3/index.d.cts","import":"./v3/index.js","require":"./v3/index.cjs"},"./v4":{"@zod/source":"./src/v4/index.ts","types":"./v4/index.d.cts","import":"./v4/index.js","require":"./v4/index.cjs"},"./v4-mini":{"@zod/source":"./src/v4-mini/index.ts","types":"./v4-mini/index.d.cts","import":"./v4-mini/index.js","require":"./v4-mini/index.cjs"},"./v4/mini":{"@zod/source":"./src/v4/mini/index.ts","types":"./v4/mini/index.d.cts","import":"./v4/mini/index.js","require":"./v4/mini/index.cjs"},"./v4/core":{"@zod/source":"./src/v4/core/index.ts","types":"./v4/core/index.d.cts","import":"./v4/core/index.js","require":"./v4/core/index.cjs"},"./v4/locales":{"@zod/source":"./src/v4/locales/index.ts","types":"./v4/locales/index.d.cts","import":"./v4/locales/index.js","require":"./v4/locales/index.cjs"},"./v4/locales/*":{"@zod/source":"./src/v4/locales/*","types":"./v4/locales/*","import":"./v4/locales/*","require":"./v4/locales/*"}},"repository":{"type":"git","url":"git+https://github.com/colinhacks/zod.git"},"bugs":{"url":"https://github.com/colinhacks/zod/issues"},"support":{"backing":{"npm-funding":true}},"scripts":{"clean":"git clean -xdf . -e node_modules","build":"zshy --project tsconfig.build.json","postbuild":"tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .","test:watch":"pnpm vitest","test":"pnpm vitest run","prepublishOnly":"tsx ../../scripts/check-versions.ts"},"_lastModified":"2026-04-17T02:46:26.710Z"}
@@ -168,6 +168,8 @@ class AIConversationsManager {
168
168
  const tool = toolsMap.get(toolCall.name);
169
169
  const toolMessage = toolMessageMap.get(toolMessageKey(row.messageId, toolCall.id));
170
170
  toolCall.invokeStatus = toolMessage == null ? void 0 : toolMessage.invokeStatus;
171
+ toolCall.invokeStartTime = toolMessage == null ? void 0 : toolMessage.invokeStartTime;
172
+ toolCall.invokeEndTime = toolMessage == null ? void 0 : toolMessage.invokeEndTime;
171
173
  toolCall.auto = toolMessage == null ? void 0 : toolMessage.auto;
172
174
  toolCall.status = toolMessage == null ? void 0 : toolMessage.status;
173
175
  toolCall.content = toolMessage == null ? void 0 : toolMessage.content;
@@ -119,10 +119,12 @@ class AIEmployee {
119
119
  }
120
120
  async initSession({ messageId, provider, model, providerName }) {
121
121
  const { tools, baseToolNames } = await this.getAgentTools();
122
+ const resolvedTools = provider.resolveTools(tools.map(import_utils.buildTool));
122
123
  if (!messageId && this.legacy !== true) {
123
124
  return {
124
125
  historyMessages: [],
125
126
  tools,
127
+ resolvedTools,
126
128
  middleware: this.getMiddleware({ tools, baseToolNames, model, providerName }),
127
129
  config: void 0,
128
130
  state: void 0
@@ -135,6 +137,7 @@ class AIEmployee {
135
137
  return {
136
138
  historyMessages,
137
139
  tools,
140
+ resolvedTools,
138
141
  middleware: this.getMiddleware({
139
142
  tools,
140
143
  baseToolNames,
@@ -159,7 +162,7 @@ class AIEmployee {
159
162
  const { provider, model, service } = await this.plugin.aiManager.getLLMService({
160
163
  ...this.model
161
164
  });
162
- const { historyMessages, tools, middleware, config, state } = await this.initSession({
165
+ const { historyMessages, tools, resolvedTools, middleware, config, state } = await this.initSession({
163
166
  messageId,
164
167
  provider,
165
168
  model,
@@ -168,7 +171,7 @@ class AIEmployee {
168
171
  const chatContext = await this.aiChatConversation.getChatContext({
169
172
  userMessages: [...historyMessages, ...userMessages ?? []],
170
173
  userDecisions,
171
- tools,
174
+ tools: resolvedTools,
172
175
  middleware,
173
176
  getSystemPrompt: (userMessages2) => this.getSystemPrompt(userMessages2),
174
177
  formatMessages: (messages) => this.formatMessages({ messages, provider })
@@ -248,7 +251,7 @@ class AIEmployee {
248
251
  middleware
249
252
  }) {
250
253
  const model = provider.createModel();
251
- const allTools = provider.resolveTools((tools == null ? void 0 : tools.map(import_utils.buildTool)) ?? []);
254
+ const allTools = tools ?? [];
252
255
  if (this.from === "main-agent") {
253
256
  const checkpointer = new import_checkpoints.SequelizeCollectionSaver(() => this.ctx.app.mainDataSource);
254
257
  return (0, import_langchain.createAgent)({ model, tools: allTools, middleware, systemPrompt, checkpointer });
@@ -586,6 +589,11 @@ ${dataSourceMessage}`;
586
589
  if (workContextBackground == null ? void 0 : workContextBackground.length) {
587
590
  background = `${background}
588
591
  ${workContextBackground.join("\n")}`;
592
+ }
593
+ const addSystemPrompt = userMessages == null ? void 0 : userMessages.filter((it) => it.role == "system");
594
+ if (addSystemPrompt.length) {
595
+ background = `${background}
596
+ ${addSystemPrompt.map((it) => it.content).join("\n")}`;
589
597
  }
590
598
  let knowledgeBase;
591
599
  if (this.isEnabledKnowledgeBase() && this.employee.knowledgeBasePrompt && (userMessages == null ? void 0 : userMessages.length)) {
@@ -1182,18 +1190,14 @@ If information is missing, clearly state it in the summary.</Important>`;
1182
1190
  }
1183
1191
  async getAgentTools() {
1184
1192
  const baseTools = await this.getAIEmployeeTools();
1185
- const baseToolNames = new Set(baseTools.map((it) => it.definition.name));
1186
1193
  const toolMap = await this.getToolsMap();
1187
1194
  const availableSkills = await this.getAvailableSkills();
1188
- const skillTools = import_lodash.default.uniq(
1189
- availableSkills.flatMap((it) => it.tools ?? []).map((toolName) => toolMap.get(toolName)).filter((it) => !!it).map((it) => it.definition.name)
1190
- ).map((toolName) => toolMap.get(toolName)).filter((it) => !!it);
1191
- const toolsMap = new Map(baseTools.map((it) => [it.definition.name, it]));
1192
- for (const tool of skillTools) {
1193
- toolsMap.set(tool.definition.name, tool);
1194
- }
1195
+ const skillOwnedToolNames = new Set(availableSkills.flatMap((it) => it.tools ?? []));
1196
+ const baseToolNames = new Set(
1197
+ baseTools.map((it) => it.definition.name).filter((name) => name === "getSkill" || !skillOwnedToolNames.has(name))
1198
+ );
1195
1199
  return {
1196
- tools: Array.from(toolsMap.values()),
1200
+ tools: Array.from(toolMap.values()),
1197
1201
  baseToolNames
1198
1202
  };
1199
1203
  }
@@ -1231,7 +1235,11 @@ If information is missing, clearly state it in the summary.</Important>`;
1231
1235
  return /* @__PURE__ */ new Set();
1232
1236
  }
1233
1237
  const availableSkills = await this.getAvailableSkills();
1234
- const skillsMap = new Map(availableSkills.map((it) => [it.name, it]));
1238
+ const loadedSkills = await this.plugin.ai.skillsManager.getSkills(loadedSkillNames);
1239
+ const normalizedLoadedSkills = Array.isArray(loadedSkills) ? loadedSkills : [loadedSkills];
1240
+ const skillsMap = new Map(
1241
+ [...availableSkills, ...normalizedLoadedSkills.filter(Boolean)].map((it) => [it.name, it])
1242
+ );
1235
1243
  const result = /* @__PURE__ */ new Set();
1236
1244
  for (const skillName of loadedSkillNames) {
1237
1245
  const target = skillsMap.get(skillName);
@@ -36,13 +36,27 @@ const skillToolBindingMiddleware = (aiEmployee, options) => {
36
36
  const activatedSkillToolNames = await aiEmployee.getActivatedSkillToolNames();
37
37
  return /* @__PURE__ */ new Set([...baseToolNames, ...activatedSkillToolNames]);
38
38
  };
39
+ const getToolName = (tool) => {
40
+ var _a;
41
+ if (!tool || typeof tool !== "object") {
42
+ return null;
43
+ }
44
+ if (typeof tool.name === "string") {
45
+ return tool.name;
46
+ }
47
+ if (typeof ((_a = tool.function) == null ? void 0 : _a.name) === "string") {
48
+ return tool.function.name;
49
+ }
50
+ return null;
51
+ };
39
52
  const filterRequestTools = async (tools = []) => {
40
53
  const allowedToolNames = await getAllowedToolNames();
41
54
  return tools.filter((tool) => {
42
- if (!tool || typeof tool !== "object" || typeof tool.name !== "string") {
55
+ const name = getToolName(tool);
56
+ if (name == null) {
43
57
  return true;
44
58
  }
45
- return allowedToolNames.has(tool.name);
59
+ return name && allowedToolNames.has(name);
46
60
  });
47
61
  };
48
62
  return (0, import_langchain.createMiddleware)({
@@ -109,6 +109,7 @@ This prompt uses a structured tag system to organize your operational framework:
109
109
  4. **Communication Standards**
110
110
  - Use language specified in \`<locale>\`: ${environment.locale}, unless the user requests otherwise
111
111
  - When the task depends on "now", "today", reporting timestamps, or time ranges, use \`<current_datetime>\` and \`<timezone>\` as the authoritative time context instead of guessing
112
+ - Always follow the frontend date filter contract: valid date operators are only \`$dateOn\`, \`$dateNotOn\`, \`$dateBefore\`, \`$dateAfter\`, \`$dateNotBefore\`, \`$dateNotAfter\`, \`$dateBetween\`, \`$empty\`, and \`$notEmpty\`; valid relative \`type\` values are only \`today\`, \`yesterday\`, \`tomorrow\`, \`thisWeek\`, \`lastWeek\`, \`nextWeek\`, \`thisMonth\`, \`lastMonth\`, \`nextMonth\`, \`thisQuarter\`, \`lastQuarter\`, \`nextQuarter\`, \`thisYear\`, \`lastYear\`, \`nextYear\`, \`past\`, and \`next\`; do not default to UTC timestamp boundaries for calendar queries
112
113
  - Be professional, concise, and helpful
113
114
 
114
115
  5. **Tool Integration**
@@ -6,7 +6,7 @@
6
6
  * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
- import { LLMProvider } from './provider';
9
+ import { LLMProvider, ParsedAttachmentResult } from './provider';
10
10
  import { ChatAnthropic } from '@langchain/anthropic';
11
11
  import { Model } from '@nocobase/database';
12
12
  import { LLMProviderMeta } from '../manager/ai-manager';
@@ -36,7 +36,7 @@ export declare class AnthropicProvider extends LLMProvider {
36
36
  type: string;
37
37
  query: string;
38
38
  }[];
39
- parseAttachment(ctx: Context, attachment: any): Promise<any>;
39
+ protected convertToContent(ctx: Context, attachment: any): Promise<ParsedAttachmentResult>;
40
40
  private setMaxTokens;
41
41
  }
42
42
  export declare const anthropicProviderOptions: LLMProviderMeta;
@@ -191,7 +191,7 @@ class AnthropicProvider extends import_provider.LLMProvider {
191
191
  };
192
192
  });
193
193
  }
194
- async parseAttachment(ctx, attachment) {
194
+ async convertToContent(ctx, attachment) {
195
195
  const fileManager = this.app.pm.get("file-manager");
196
196
  const url = await fileManager.getFileURL(attachment);
197
197
  const data = await (0, import_utils.encodeFile)(ctx, decodeURIComponent(url));
@@ -10,9 +10,9 @@ import { AIMessageChunk } from '@langchain/core/messages';
10
10
  import { EmbeddingProvider, LLMProvider } from './provider';
11
11
  import { EmbeddingsInterface } from '@langchain/core/embeddings';
12
12
  import { SupportedModel } from '../manager/ai-manager';
13
- import { Context } from '@nocobase/actions';
14
13
  import { Model } from '@nocobase/database';
15
14
  import { ReasoningChatOpenAI } from './common/reasoning';
15
+ import { AttachmentModel } from '@nocobase/plugin-file-manager';
16
16
  export declare class DashscopeProvider extends LLMProvider {
17
17
  chatModel: ReasoningChatOpenAI;
18
18
  get baseURL(): string;
@@ -29,8 +29,7 @@ export declare class DashscopeProvider extends LLMProvider {
29
29
  status: string;
30
30
  content: string;
31
31
  };
32
- parseAttachment(ctx: Context, attachment: any): Promise<any>;
33
- private get aiPlugin();
32
+ protected isApiSupportedAttachment(attachment: AttachmentModel): boolean;
34
33
  }
35
34
  export declare class DashscopeEmbeddingProvider extends EmbeddingProvider {
36
35
  protected getDefaultUrl(): string;
@@ -45,7 +45,6 @@ var import_openai = require("@langchain/openai");
45
45
  var import_provider = require("./provider");
46
46
  var import_ai_manager = require("../manager/ai-manager");
47
47
  var import_lodash = __toESM(require("lodash"));
48
- var import_node_path = __toESM(require("node:path"));
49
48
  var import_reasoning = require("./common/reasoning");
50
49
  const DASHSCOPE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1";
51
50
  class DashscopeProvider extends import_provider.LLMProvider {
@@ -123,33 +122,9 @@ class DashscopeProvider extends import_provider.LLMProvider {
123
122
  }
124
123
  return null;
125
124
  }
126
- async parseAttachment(ctx, attachment) {
127
- if (!(attachment == null ? void 0 : attachment.mimetype) || attachment.mimetype.startsWith("image/")) {
128
- return super.parseAttachment(ctx, attachment);
129
- }
130
- const parsed = await this.aiPlugin.documentLoaders.cached.load(attachment);
131
- const safeFilename = attachment.filename ? import_node_path.default.basename(attachment.filename) : "document";
132
- if (!parsed.supported) {
133
- return {
134
- placement: "system",
135
- content: `File ${safeFilename} is not a supported document type for text parsing.`
136
- };
137
- }
138
- if (parsed.text.length === 0) {
139
- return {
140
- placement: "system",
141
- content: `The file provided by the user is an empty file, file name is "${safeFilename}"`
142
- };
143
- }
144
- return {
145
- placement: "system",
146
- content: `<parsed_document filename="${safeFilename}">
147
- ${parsed.text}
148
- </parsed_document>`
149
- };
150
- }
151
- get aiPlugin() {
152
- return this.app.pm.get("ai");
125
+ isApiSupportedAttachment(attachment) {
126
+ var _a;
127
+ return ((_a = attachment.mimetype) == null ? void 0 : _a.startsWith("image/")) ?? false;
153
128
  }
154
129
  }
155
130
  class DashscopeEmbeddingProvider extends import_provider.EmbeddingProvider {
@@ -12,7 +12,7 @@ import { LLMProvider } from './provider';
12
12
  import { LLMProviderMeta } from '../manager/ai-manager';
13
13
  import { Model } from '@nocobase/database';
14
14
  import type OpenAI from 'openai';
15
- import { Context } from '@nocobase/actions';
15
+ import { AttachmentModel } from '@nocobase/plugin-file-manager';
16
16
  declare class ReasoningDeepSeek extends ChatDeepSeek {
17
17
  _generate(messages: BaseMessage[], options: any, runManager?: any): Promise<import("@langchain/core/dist/outputs").ChatResult>;
18
18
  _streamResponseChunks(messages: BaseMessage[], options: any, runManager?: any): AsyncGenerator<import("@langchain/core/dist/outputs").ChatGenerationChunk, void, unknown>;
@@ -33,8 +33,7 @@ export declare class DeepSeekProvider extends LLMProvider {
33
33
  status: string;
34
34
  content: string;
35
35
  };
36
- parseAttachment(ctx: Context, attachment: any): Promise<any>;
37
- private get aiPlugin();
36
+ protected isApiSupportedAttachment(attachment: AttachmentModel): boolean;
38
37
  }
39
38
  export declare const deepseekProviderOptions: LLMProviderMeta;
40
39
  export {};
@@ -45,7 +45,6 @@ var import_provider = require("./provider");
45
45
  var import_ai_manager = require("../manager/ai-manager");
46
46
  var import_lodash = __toESM(require("lodash"));
47
47
  var import_reasoning = require("./common/reasoning");
48
- var import_node_path = __toESM(require("node:path"));
49
48
  class ReasoningDeepSeek extends import_deepseek.ChatDeepSeek {
50
49
  async _generate(messages, options, runManager) {
51
50
  const reasoningMap = (0, import_reasoning.collectReasoningMap)(messages);
@@ -123,36 +122,8 @@ class DeepSeekProvider extends import_provider.LLMProvider {
123
122
  }
124
123
  return null;
125
124
  }
126
- async parseAttachment(ctx, attachment) {
127
- const safeFilename = attachment.filename ? import_node_path.default.basename(attachment.filename) : "document";
128
- if (!(attachment == null ? void 0 : attachment.mimetype) || attachment.mimetype.startsWith("image/")) {
129
- return {
130
- placement: "system",
131
- content: `The user has uploaded a ${attachment.mimetype} file (filename: ${safeFilename}). Please inform the user directly that you do not support parsing image content.`
132
- };
133
- }
134
- const parsed = await this.aiPlugin.documentLoaders.cached.load(attachment);
135
- if (!parsed.supported) {
136
- return {
137
- placement: "system",
138
- content: `File ${safeFilename} is not a supported document type for text parsing.`
139
- };
140
- }
141
- if (parsed.text.length === 0) {
142
- return {
143
- placement: "system",
144
- content: `The file provided by the user is an empty file, file name is "${safeFilename}"`
145
- };
146
- }
147
- return {
148
- placement: "system",
149
- content: `<parsed_document filename="${safeFilename}">
150
- ${parsed.text}
151
- </parsed_document>`
152
- };
153
- }
154
- get aiPlugin() {
155
- return this.app.pm.get("ai");
125
+ isApiSupportedAttachment(attachment) {
126
+ return false;
156
127
  }
157
128
  }
158
129
  const deepseekProviderOptions = {
@@ -7,8 +7,9 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  import { ChatGoogleGenerativeAI } from '@langchain/google-genai';
10
- import { EmbeddingProvider, LLMProvider } from './provider';
10
+ import { EmbeddingProvider, LLMProvider, ParsedAttachmentResult } from './provider';
11
11
  import { Model } from '@nocobase/database';
12
+ import { AttachmentModel } from '@nocobase/plugin-file-manager';
12
13
  import { LLMProviderMeta } from '../manager/ai-manager';
13
14
  import { EmbeddingsInterface } from '@langchain/core/embeddings';
14
15
  import { Context } from '@nocobase/actions';
@@ -31,23 +32,7 @@ export declare class GoogleGenAIProvider extends LLMProvider {
31
32
  content: any;
32
33
  role: any;
33
34
  };
34
- parseAttachment(ctx: Context, attachment: any): Promise<{
35
- placement: string;
36
- content: {
37
- type: string;
38
- image_url: {
39
- url: string;
40
- };
41
- data?: undefined;
42
- };
43
- } | {
44
- placement: string;
45
- content: {
46
- type: any;
47
- data: string;
48
- image_url?: undefined;
49
- };
50
- }>;
35
+ protected convertToContent(ctx: Context, attachment: AttachmentModel): Promise<ParsedAttachmentResult>;
51
36
  parseResponseMetadata(output: LLMResult): any[];
52
37
  getStructuredOutputOptions(structuredOutput: AIChatContext['structuredOutput']): {
53
38
  schema: any;