@nocobase/plugin-ai 2.2.0-beta.17 → 2.2.0-beta.18

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 (68) hide show
  1. package/dist/ai/docs/nocobase/ai-dev/watermark-plugin.md +2 -0
  2. package/dist/ai/docs/nocobase/api/cli/api/resource/create.md +4 -3
  3. package/dist/ai/docs/nocobase/plugin-development/build.md +10 -4
  4. package/dist/ai/docs/nocobase/plugin-development/client/appendix/faq.md +1 -1
  5. package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-action.md +2 -0
  6. package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-block.md +2 -0
  7. package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-field.md +2 -0
  8. package/dist/ai/docs/nocobase/plugin-development/client/examples/fullstack-plugin.md +2 -0
  9. package/dist/ai/docs/nocobase/plugin-development/client/examples/settings-page.md +2 -0
  10. package/dist/ai/docs/nocobase/plugin-development/common/i18n.md +3 -3
  11. package/dist/ai/docs/nocobase/plugin-development/server/cache.md +1 -1
  12. package/dist/ai/docs/nocobase/plugin-development/server/collections.md +0 -6
  13. package/dist/ai/docs/nocobase/plugin-development/server/command.md +2 -2
  14. package/dist/ai/docs/nocobase/plugin-development/server/context.md +2 -2
  15. package/dist/ai/docs/nocobase/plugin-development/server/i18n.md +4 -4
  16. package/dist/ai/docs/nocobase/plugin-development/write-your-first-plugin.md +91 -43
  17. package/dist/ai/docs/nocobase/users-permissions/sync/index.md +8 -1
  18. package/dist/ai/docs/nocobase/users-permissions/sync/sources/dingtalk.md +138 -0
  19. package/dist/ai/docs/nocobase/users-permissions/sync/sources/ldap.md +87 -0
  20. package/dist/client/{705.19b642db34de438a.js → 705.a4fe26945d175e8a.js} +1 -1
  21. package/dist/client/index.js +3 -3
  22. package/dist/client-v2/420.a5b929a5e7f330be.js +10 -0
  23. package/dist/client-v2/{705.8dc34d43f02f322c.js → 705.f2e1b26a3f000075.js} +1 -1
  24. package/dist/client-v2/ai-employees/chatbox/hooks/reasoning-stream.d.ts +10 -0
  25. package/dist/client-v2/ai-employees/chatbox/stores/chat-box.d.ts +0 -2
  26. package/dist/client-v2/index.js +3 -3
  27. package/dist/client-v2/llm-providers/forms.d.ts +2 -0
  28. package/dist/client-v2/llm-providers/index.d.ts +1 -0
  29. package/dist/client-v2/models/ai-employees/AIEmployeeShortcutModel.d.ts +1 -0
  30. package/dist/client-v2/repositories/AIConfigRepository.d.ts +2 -0
  31. package/dist/externalVersion.js +18 -16
  32. package/dist/locale/en-US.json +3 -4
  33. package/dist/locale/zh-CN.json +3 -4
  34. package/dist/node_modules/@langchain/mistralai/package.json +1 -1
  35. package/dist/node_modules/@langchain/xai/package.json +1 -1
  36. package/dist/node_modules/fs-extra/package.json +1 -1
  37. package/dist/node_modules/jsonrepair/package.json +1 -1
  38. package/dist/node_modules/just-bash/package.json +1 -1
  39. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  40. package/dist/node_modules/openai/package.json +1 -1
  41. package/dist/node_modules/zod/package.json +1 -1
  42. package/dist/server/ai-employees/ai-employee.js +40 -24
  43. package/dist/server/ai-employees/reasoning-stream-state.d.ts +23 -0
  44. package/dist/server/ai-employees/reasoning-stream-state.js +63 -0
  45. package/dist/server/llm-providers/common/reasoning.js +18 -10
  46. package/dist/{client-v2/ai-employees/chatbox/components/DebugPanel.d.ts → server/llm-providers/deepseek/index.d.ts} +2 -2
  47. package/dist/server/llm-providers/deepseek/index.js +32 -0
  48. package/dist/server/llm-providers/deepseek/provider.d.ts +57 -0
  49. package/dist/server/llm-providers/deepseek/provider.js +320 -0
  50. package/dist/server/llm-providers/deepseek/reasoning.d.ts +83 -0
  51. package/dist/server/llm-providers/deepseek/reasoning.js +285 -0
  52. package/dist/server/llm-providers/mistral.d.ts +1 -1
  53. package/dist/server/llm-providers/provider.d.ts +1 -0
  54. package/dist/server/llm-providers/provider.js +3 -0
  55. package/dist/server/llm-providers/shengsuanyun.d.ts +29 -0
  56. package/dist/server/llm-providers/shengsuanyun.js +114 -0
  57. package/dist/server/manager/ai-manager.d.ts +3 -0
  58. package/dist/server/manager/ai-manager.js +7 -2
  59. package/dist/server/plugin.js +2 -0
  60. package/dist/server/types/ai-message.type.d.ts +4 -0
  61. package/dist/swagger/index.d.ts +6 -0
  62. package/dist/swagger/schemas.d.ts +6 -0
  63. package/dist/swagger/schemas.js +6 -0
  64. package/package.json +2 -2
  65. package/dist/client-v2/420.b2aedb1ff71fca0e.js +0 -10
  66. package/dist/client-v2/debug-logger.d.ts +0 -52
  67. package/dist/server/llm-providers/deepseek.d.ts +0 -40
  68. package/dist/server/llm-providers/deepseek.js +0 -174
@@ -22,6 +22,7 @@ export type OptionField = {
22
22
  };
23
23
  export declare const ProviderSettingsForm: React.FC;
24
24
  export declare const OrcaRouterProviderSettingsForm: React.FC;
25
+ export declare const ShengSuanYunProviderSettingsForm: React.FC;
25
26
  export declare const EmptyProviderSettingsForm: React.FC;
26
27
  export declare const ModelSelect: React.FC<{
27
28
  value?: string;
@@ -38,6 +39,7 @@ export declare const qwenCompletionFields: OptionField[];
38
39
  export declare const deepSeekCompletionFields: OptionField[];
39
40
  export declare const xAICompletionFields: OptionField[];
40
41
  export declare const orcaRouterCompletionFields: OptionField[];
42
+ export declare const shengSuanYunCompletionFields: OptionField[];
41
43
  export declare const mistralCompletionFields: OptionField[];
42
44
  export declare const googleGenAICompletionFields: OptionField[];
43
45
  export declare const ollamaCompletionFields: OptionField[];
@@ -19,6 +19,7 @@ export declare const xaiProviderOptions: LLMProviderOptions;
19
19
  export declare const mimoProviderOptions: LLMProviderOptions;
20
20
  export declare const mistralProviderOptions: LLMProviderOptions;
21
21
  export declare const orcarouterProviderOptions: LLMProviderOptions;
22
+ export declare const shengsuanyunProviderOptions: LLMProviderOptions;
22
23
  export declare const ollamaProviderOptions: LLMProviderOptions;
23
24
  export declare const builtinLLMProviderOptions: Array<[string, LLMProviderOptions]>;
24
25
  export declare const getBuiltinLLMProviderModelOptionFields: (provider?: string) => OptionField[];
@@ -37,6 +37,7 @@ export declare class AIEmployeeButtonModel extends AIEmployeeShortcutModel {
37
37
  type ShortcutTask = Task & {
38
38
  skillSettings?: SkillSettings;
39
39
  };
40
+ export declare const getShortcutTaskIndexFromFieldPath: (segments: Array<string | number>) => number | null;
40
41
  export declare const normalizeShortcutTaskSkillSettings: (task: ShortcutTask, options?: {
41
42
  dropEmptyLegacyArrays?: boolean;
42
43
  }) => void;
@@ -18,8 +18,10 @@ export interface LLMServiceItem {
18
18
  value: string;
19
19
  }[];
20
20
  supportWebSearch?: boolean;
21
+ webSearchModels?: string[];
21
22
  isToolConflict?: boolean;
22
23
  }
24
+ export declare function supportsWebSearchForModel(service?: LLMServiceItem | null, model?: string | null): boolean;
23
25
  export declare class AIConfigRepository {
24
26
  private readonly apiClient;
25
27
  private readonly options?;
@@ -8,17 +8,17 @@
8
8
  */
9
9
 
10
10
  module.exports = {
11
- "@nocobase/plugin-acl": "2.2.0-beta.17",
12
- "@nocobase/plugin-workflow": "2.2.0-beta.17",
13
- "@nocobase/client": "2.2.0-beta.17",
14
- "@nocobase/utils": "2.2.0-beta.17",
15
- "@nocobase/flow-engine": "2.2.0-beta.17",
16
- "@nocobase/client-v2": "2.2.0-beta.17",
17
- "@nocobase/database": "2.2.0-beta.17",
18
- "@nocobase/actions": "2.2.0-beta.17",
19
- "@nocobase/plugin-file-manager": "2.2.0-beta.17",
20
- "@nocobase/server": "2.2.0-beta.17",
21
- "@nocobase/ai": "2.2.0-beta.17",
11
+ "@nocobase/plugin-acl": "2.2.0-beta.18",
12
+ "@nocobase/plugin-workflow": "2.2.0-beta.18",
13
+ "@nocobase/client": "2.2.0-beta.18",
14
+ "@nocobase/utils": "2.2.0-beta.18",
15
+ "@nocobase/flow-engine": "2.2.0-beta.18",
16
+ "@nocobase/client-v2": "2.2.0-beta.18",
17
+ "@nocobase/database": "2.2.0-beta.18",
18
+ "@nocobase/actions": "2.2.0-beta.18",
19
+ "@nocobase/plugin-file-manager": "2.2.0-beta.18",
20
+ "@nocobase/server": "2.2.0-beta.18",
21
+ "@nocobase/ai": "2.2.0-beta.18",
22
22
  "langchain": "1.2.39",
23
23
  "react": "18.2.0",
24
24
  "antd": "5.24.2",
@@ -30,18 +30,20 @@ module.exports = {
30
30
  "react-router-dom": "6.30.1",
31
31
  "@langchain/core": "1.1.49",
32
32
  "@langchain/langgraph": "1.4.4",
33
- "@nocobase/cache": "2.2.0-beta.17",
33
+ "@nocobase/cache": "2.2.0-beta.18",
34
34
  "@langchain/anthropic": "1.3.17",
35
35
  "@langchain/openai": "1.4.7",
36
- "@langchain/deepseek": "1.0.27",
37
36
  "@langchain/google-genai": "2.1.18",
38
37
  "@langchain/ollama": "1.2.7",
39
- "@nocobase/acl": "2.2.0-beta.17",
40
- "@nocobase/data-source-manager": "2.2.0-beta.17",
41
- "@nocobase/resourcer": "2.2.0-beta.17",
38
+ "@nocobase/acl": "2.2.0-beta.18",
39
+ "@nocobase/data-source-manager": "2.2.0-beta.18",
40
+ "@nocobase/resourcer": "2.2.0-beta.18",
42
41
  "dayjs": "1.11.13",
43
42
  "react-dom": "18.2.0",
43
+ "@formily/core": "2.3.7",
44
+ "@formily/react": "2.3.7",
44
45
  "@langchain/langgraph-checkpoint": "1.1.2",
46
+ "@langchain/deepseek": "1.0.27",
45
47
  "@dnd-kit/core": "6.1.0",
46
48
  "axios": "1.7.7"
47
49
  };
@@ -1,5 +1,7 @@
1
1
  {
2
2
  "API Key": "API Key",
3
+ "X-Title": "X-Title",
4
+ "Sent as the \"X-Title\" request header.": "Sent as the \"X-Title\" request header.",
3
5
  "HTTP Referer": "HTTP Referer",
4
6
  "App Title": "App Title",
5
7
  "Optional. Sent as the \"HTTP-Referer\" header for app attribution.": "Optional. Sent as the \"HTTP-Referer\" header for app attribution.",
@@ -184,6 +186,7 @@
184
186
  "Message type": "Message type",
185
187
  "Messages": "Messages",
186
188
  "Mistral models": "Mistral models",
189
+ "300+ latest mainstream models across leading model families": "300+ latest mainstream models across leading model families",
187
190
  "Model": "Model",
188
191
  "Model ID already exists": "Model ID already exists",
189
192
  "Model ID is required": "Model ID is required",
@@ -506,11 +509,7 @@
506
509
  "Unsaved changes": "Unsaved changes",
507
510
  "Are you sure you don't want to save?": "Are you sure you don't want to save?",
508
511
  "Select a role to configure permissions": "Select a role to configure permissions",
509
- "Debug Panel": "Debug Panel",
510
512
  "Export": "Export",
511
- "Search logs...": "Search logs...",
512
- "No conversation selected": "No conversation selected",
513
- "No logs": "No logs",
514
513
  "Close": "Close",
515
514
  "Search": "Search",
516
515
  "Unread": "Unread",
@@ -1,5 +1,7 @@
1
1
  {
2
2
  "API Key": "API Key",
3
+ "X-Title": "X-Title",
4
+ "Sent as the \"X-Title\" request header.": "作为 \"X-Title\" 请求头发送。",
3
5
  "HTTP Referer": "HTTP Referer",
4
6
  "App Title": "应用标题",
5
7
  "Optional. Sent as the \"HTTP-Referer\" header for app attribution.": "可选。作为 \"HTTP-Referer\" 请求头发送,用于应用来源标识。",
@@ -185,6 +187,7 @@
185
187
  "Message type": "消息类型",
186
188
  "Messages": "消息",
187
189
  "Mistral models": "Mistral 模型",
190
+ "300+ latest mainstream models across leading model families": "300+最新各系列主流模型",
188
191
  "Model": "模型",
189
192
  "Model ID already exists": "模型标识已存在",
190
193
  "Model ID is required": "请输入模型标识",
@@ -512,11 +515,7 @@
512
515
  "Unsaved changes": "未保存的修改",
513
516
  "Are you sure you don't want to save?": "确定不保存吗?",
514
517
  "Select a role to configure permissions": "选择一个角色来配置权限",
515
- "Debug Panel": "调试面板",
516
518
  "Export": "导出",
517
- "Search logs...": "搜索日志...",
518
- "No conversation selected": "未选择会话",
519
- "No logs": "暂无日志",
520
519
  "Close": "关闭",
521
520
  "Search": "搜索",
522
521
  "Unread": "未读",
@@ -1 +1 @@
1
- {"name":"@langchain/mistralai","version":"1.0.0","description":"MistralAI integration for LangChain.js","author":"LangChain","license":"MIT","type":"module","engines":{"node":">=20"},"repository":{"type":"git","url":"git@github.com:langchain-ai/langchainjs.git"},"homepage":"https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-mistralai/","dependencies":{"@mistralai/mistralai":"^1.3.1","uuid":"^10.0.0"},"peerDependencies":{"@langchain/core":"^1.0.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.3","@vitest/coverage-v8":"^3.2.4","dotenv":"^16.3.1","dpdm":"^3.14.0","eslint":"^9.34.0","prettier":"^2.8.3","rollup":"^4.5.2","typescript":"~5.8.3","vitest":"^3.2.4","zod":"^3.25.76","@langchain/eslint":"0.1.0","@langchain/standard-tests":"0.0.0","@langchain/core":"1.0.1"},"publishConfig":{"access":"public"},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"input":"./src/index.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"files":["dist/","CHANGELOG.md","README.md","LICENSE"],"scripts":{"build":"pnpm --filter @langchain/build compile @langchain/mistralai","lint:eslint":"eslint --cache src/","lint:dpdm":"dpdm --skip-dynamic-imports circular --exit-code circular:1 --no-warning --no-tree src/*.ts src/**/*.ts","lint":"pnpm lint:eslint && pnpm lint:dpdm","lint:fix":"pnpm lint:eslint --fix && pnpm lint:dpdm","clean":"rm -rf .turbo dist/","test":"vitest run","test:watch":"vitest","test:int":"vitest run --mode int","test:standard:unit":"vitest run --mode standard-unit","test:standard:int":"vitest run --mode standard-int","test:standard":"pnpm test:standard:unit && pnpm test:standard:int","format":"prettier --config .prettierrc --write \"src\"","format:check":"prettier --config .prettierrc --check \"src\""},"_lastModified":"2026-08-10T16:51:37.128Z"}
1
+ {"name":"@langchain/mistralai","version":"1.0.0","description":"MistralAI integration for LangChain.js","author":"LangChain","license":"MIT","type":"module","engines":{"node":">=20"},"repository":{"type":"git","url":"git@github.com:langchain-ai/langchainjs.git"},"homepage":"https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-mistralai/","dependencies":{"@mistralai/mistralai":"^1.3.1","uuid":"^10.0.0"},"peerDependencies":{"@langchain/core":"^1.0.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.3","@vitest/coverage-v8":"^3.2.4","dotenv":"^16.3.1","dpdm":"^3.14.0","eslint":"^9.34.0","prettier":"^2.8.3","rollup":"^4.5.2","typescript":"~5.8.3","vitest":"^3.2.4","zod":"^3.25.76","@langchain/eslint":"0.1.0","@langchain/standard-tests":"0.0.0","@langchain/core":"1.0.1"},"publishConfig":{"access":"public"},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"input":"./src/index.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"files":["dist/","CHANGELOG.md","README.md","LICENSE"],"scripts":{"build":"pnpm --filter @langchain/build compile @langchain/mistralai","lint:eslint":"eslint --cache src/","lint:dpdm":"dpdm --skip-dynamic-imports circular --exit-code circular:1 --no-warning --no-tree src/*.ts src/**/*.ts","lint":"pnpm lint:eslint && pnpm lint:dpdm","lint:fix":"pnpm lint:eslint --fix && pnpm lint:dpdm","clean":"rm -rf .turbo dist/","test":"vitest run","test:watch":"vitest","test:int":"vitest run --mode int","test:standard:unit":"vitest run --mode standard-unit","test:standard:int":"vitest run --mode standard-int","test:standard":"pnpm test:standard:unit && pnpm test:standard:int","format":"prettier --config .prettierrc --write \"src\"","format:check":"prettier --config .prettierrc --check \"src\""},"_lastModified":"2026-08-20T12:48:01.505Z"}
@@ -1 +1 @@
1
- {"name":"@langchain/xai","version":"1.3.19","description":"xAI integration for LangChain.js","author":"LangChain","license":"MIT","type":"module","engines":{"node":">=20"},"repository":{"type":"git","url":"git@github.com:langchain-ai/langchainjs.git"},"homepage":"https://github.com/langchain-ai/langchainjs/tree/main/libs/providers/langchain-xai/","dependencies":{"@langchain/openai":"1.4.7"},"peerDependencies":{"@langchain/core":"^1.0.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.3","@vitest/coverage-v8":"^3.2.4","dotenv":"^17.4.0","dpdm":"^3.14.0","typescript":"~5.8.3","vitest":"^4.1.2","zod":"^3.25.76","@langchain/openai":"^1.4.7","@langchain/core":"^1.1.48","@langchain/standard-tests":"0.0.23","@langchain/tsconfig":"0.0.1"},"publishConfig":{"access":"public"},"main":"./dist/index.cjs","types":"./dist/index.d.cts","exports":{".":{"input":"./src/index.ts","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"files":["dist/","CHANGELOG.md","README.md","LICENSE"],"module":"./dist/index.js","scripts":{"build":"turbo build:compile --filter @langchain/xai --output-logs new-only","build:compile":"tsdown","clean":"rm -rf .turbo dist/","test":"vitest run","test:watch":"vitest --watch","test:int":"vitest --mode int","test:standard:unit":"vitest --mode standard-unit","test:standard:int":"vitest --mode standard-int","test:standard":"pnpm test:standard:unit && pnpm test:standard:int","typegen":"pnpm run typegen:profiles","typegen:profiles":"pnpm --filter @langchain/model-profiles make --config profiles.toml"},"_lastModified":"2026-08-10T16:51:39.801Z"}
1
+ {"name":"@langchain/xai","version":"1.3.19","description":"xAI integration for LangChain.js","author":"LangChain","license":"MIT","type":"module","engines":{"node":">=20"},"repository":{"type":"git","url":"git@github.com:langchain-ai/langchainjs.git"},"homepage":"https://github.com/langchain-ai/langchainjs/tree/main/libs/providers/langchain-xai/","dependencies":{"@langchain/openai":"1.4.7"},"peerDependencies":{"@langchain/core":"^1.0.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.3","@vitest/coverage-v8":"^3.2.4","dotenv":"^17.4.0","dpdm":"^3.14.0","typescript":"~5.8.3","vitest":"^4.1.2","zod":"^3.25.76","@langchain/openai":"^1.4.7","@langchain/core":"^1.1.48","@langchain/standard-tests":"0.0.23","@langchain/tsconfig":"0.0.1"},"publishConfig":{"access":"public"},"main":"./dist/index.cjs","types":"./dist/index.d.cts","exports":{".":{"input":"./src/index.ts","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"files":["dist/","CHANGELOG.md","README.md","LICENSE"],"module":"./dist/index.js","scripts":{"build":"turbo build:compile --filter @langchain/xai --output-logs new-only","build:compile":"tsdown","clean":"rm -rf .turbo dist/","test":"vitest run","test:watch":"vitest --watch","test:int":"vitest --mode int","test:standard:unit":"vitest --mode standard-unit","test:standard:int":"vitest --mode standard-int","test:standard":"pnpm test:standard:unit && pnpm test:standard:int","typegen":"pnpm run typegen:profiles","typegen:profiles":"pnpm --filter @langchain/model-profiles make --config profiles.toml"},"_lastModified":"2026-08-20T12:48:03.776Z"}
@@ -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-08-10T16:51:39.975Z"}
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-08-20T12:48:03.967Z"}
@@ -1 +1 @@
1
- {"name":"jsonrepair","version":"3.13.1","description":"Repair broken JSON documents","repository":{"type":"git","url":"https://github.com/josdejong/jsonrepair.git"},"type":"module","main":"lib/cjs/index.js","module":"lib/esm/index.js","browser":"lib/umd/jsonrepair.min.js","types":"lib/types/index.d.ts","sideEffects":false,"exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js","types":"./lib/types/index.d.ts"},"./stream":{"import":"./lib/esm/stream.js","require":"./lib/cjs/stream.js","types":"./lib/types/stream.d.ts"}},"keywords":["simple","json","repair","fix","invalid","stream","streaming"],"bin":{"jsonrepair":"./bin/cli.js"},"scripts":{"test":"vitest watch src","test:it":"vitest run src","build":"npm-run-all build:**","build:clean":"del-cli lib","build:esm":"babel src --out-dir lib/esm --extensions \".ts\" --source-maps --config-file ./babel.config.json","build:cjs":"babel src --out-dir lib/cjs --extensions \".ts\" --source-maps --config-file ./babel-cjs.config.json && cpy tools/cjs lib/cjs --flat","build:umd":"rollup lib/esm/index.js --format umd --name JSONRepair --sourcemap --output.file lib/umd/jsonrepair.js && cpy tools/cjs/package.json lib/umd --flat","build:umd:min":"uglifyjs --compress --mangle --source-map --comments --output lib/umd/jsonrepair.min.js -- lib/umd/jsonrepair.js","build:types":"tsc --project tsconfig-types.json","build:validate":"vitest run test-lib","lint":"biome check","format":"biome check --write","benchmark":"npm run build:esm && node tools/benchmark/run.mjs","build-and-test":"npm run lint && npm run test:it && npm run build","release":"npm-run-all release:**","release:build-and-test":"npm run build-and-test","release:version":"standard-version","release:push":"git push && git push --tag","release:publish":"npm publish","release-dry-run":"npm run build-and-test && standard-version --dry-run","prepare":"husky"},"files":["README.md","LICENSE.md","lib"],"author":"Jos de Jong","license":"ISC","devDependencies":{"@babel/cli":"7.28.3","@babel/core":"7.28.4","@babel/plugin-transform-typescript":"7.28.0","@babel/preset-env":"7.28.3","@babel/preset-typescript":"7.27.1","@biomejs/biome":"2.2.4","@commitlint/cli":"19.8.1","@commitlint/config-conventional":"19.8.1","@types/node":"24.5.2","cpy-cli":"6.0.0","del-cli":"7.0.0","husky":"9.1.7","npm-run-all":"4.1.5","rollup":"4.51.0","standard-version":"9.5.0","tinybench":"5.0.1","ts-node":"10.9.2","typescript":"5.9.2","uglify-js":"3.19.3","vitest":"3.2.4"},"_lastModified":"2026-08-10T16:51:45.773Z"}
1
+ {"name":"jsonrepair","version":"3.13.1","description":"Repair broken JSON documents","repository":{"type":"git","url":"https://github.com/josdejong/jsonrepair.git"},"type":"module","main":"lib/cjs/index.js","module":"lib/esm/index.js","browser":"lib/umd/jsonrepair.min.js","types":"lib/types/index.d.ts","sideEffects":false,"exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js","types":"./lib/types/index.d.ts"},"./stream":{"import":"./lib/esm/stream.js","require":"./lib/cjs/stream.js","types":"./lib/types/stream.d.ts"}},"keywords":["simple","json","repair","fix","invalid","stream","streaming"],"bin":{"jsonrepair":"./bin/cli.js"},"scripts":{"test":"vitest watch src","test:it":"vitest run src","build":"npm-run-all build:**","build:clean":"del-cli lib","build:esm":"babel src --out-dir lib/esm --extensions \".ts\" --source-maps --config-file ./babel.config.json","build:cjs":"babel src --out-dir lib/cjs --extensions \".ts\" --source-maps --config-file ./babel-cjs.config.json && cpy tools/cjs lib/cjs --flat","build:umd":"rollup lib/esm/index.js --format umd --name JSONRepair --sourcemap --output.file lib/umd/jsonrepair.js && cpy tools/cjs/package.json lib/umd --flat","build:umd:min":"uglifyjs --compress --mangle --source-map --comments --output lib/umd/jsonrepair.min.js -- lib/umd/jsonrepair.js","build:types":"tsc --project tsconfig-types.json","build:validate":"vitest run test-lib","lint":"biome check","format":"biome check --write","benchmark":"npm run build:esm && node tools/benchmark/run.mjs","build-and-test":"npm run lint && npm run test:it && npm run build","release":"npm-run-all release:**","release:build-and-test":"npm run build-and-test","release:version":"standard-version","release:push":"git push && git push --tag","release:publish":"npm publish","release-dry-run":"npm run build-and-test && standard-version --dry-run","prepare":"husky"},"files":["README.md","LICENSE.md","lib"],"author":"Jos de Jong","license":"ISC","devDependencies":{"@babel/cli":"7.28.3","@babel/core":"7.28.4","@babel/plugin-transform-typescript":"7.28.0","@babel/preset-env":"7.28.3","@babel/preset-typescript":"7.27.1","@biomejs/biome":"2.2.4","@commitlint/cli":"19.8.1","@commitlint/config-conventional":"19.8.1","@types/node":"24.5.2","cpy-cli":"6.0.0","del-cli":"7.0.0","husky":"9.1.7","npm-run-all":"4.1.5","rollup":"4.51.0","standard-version":"9.5.0","tinybench":"5.0.1","ts-node":"10.9.2","typescript":"5.9.2","uglify-js":"3.19.3","vitest":"3.2.4"},"_lastModified":"2026-08-20T12:48:09.961Z"}
@@ -1 +1 @@
1
- {"name":"just-bash","version":"2.14.3","description":"A simulated bash environment with virtual filesystem","repository":{"type":"git","url":"git+https://github.com/vercel-labs/just-bash.git"},"homepage":"https://github.com/vercel-labs/just-bash#readme","bugs":{"url":"https://github.com/vercel-labs/just-bash/issues"},"type":"module","main":"dist/bundle/index.js","types":"dist/index.d.ts","exports":{".":{"browser":"./dist/bundle/browser.js","require":{"types":"./dist/index.d.cts","default":"./dist/bundle/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/bundle/index.js"}},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/bundle/browser.js"}},"files":["dist/bundle/","dist/bin/","dist/*.d.ts","dist/*.d.cts","dist/ast/*.d.ts","dist/commands/**/*.d.ts","dist/fs/**/*.d.ts","dist/interpreter/**/*.d.ts","dist/network/**/*.d.ts","dist/parser/*.d.ts","dist/sandbox/*.d.ts","dist/utils/*.d.ts","vendor/cpython-emscripten/","README.md","CHANGELOG.md","dist/AGENTS.md"],"bin":{"just-bash":"./dist/bin/just-bash.js","just-bash-shell":"./dist/bin/shell/shell.js"},"publishConfig":{"access":"public"},"keywords":[],"author":"Malte and Claude","license":"Apache-2.0","devDependencies":{"@types/ini":"^4.1.1","@types/node":"^25.0.3","@types/papaparse":"^5.5.2","@types/sprintf-js":"^1.1.4","@types/sql.js":"^1.4.9","@types/turndown":"^5.0.6","@vitest/coverage-v8":"^4.0.18","esbuild":"^0.27.2","fast-check":"^3.23.2","knip":"^5.41.1","typescript":"^5.9.3","vitest":"^4.0.16"},"dependencies":{"seek-bzip":"^2.0.0","diff":"^8.0.2","fast-xml-parser":"5.3.3","file-type":"^21.2.0","ini":"^6.0.0","minimatch":"^10.1.1","modern-tar":"^0.7.3","papaparse":"^5.5.3","quickjs-emscripten":"^0.32.0","re2js":"^1.2.1","smol-toml":"^1.6.0","sprintf-js":"^1.1.3","sql.js":"^1.13.0","turndown":"^7.2.2","yaml":"^2.8.2"},"optionalDependencies":{"@mongodb-js/zstd":"^7.0.0","node-liblzma":"^2.0.3"},"scripts":{"build":"rm -rf dist && tsc && pnpm build:lib && pnpm build:lib:cjs && pnpm build:browser && pnpm build:cli && pnpm build:shell && pnpm build:worker && pnpm build:clean && cp dist/index.d.ts dist/index.d.cts && sed '1,/^-->/d' AGENTS.npm.md > dist/AGENTS.md","build:clean":"find dist -name '*.test.js' -delete && find dist -name '*.test.d.ts' -delete","build:worker":"esbuild src/commands/python3/worker.ts --bundle --platform=node --format=esm --outfile=src/commands/python3/worker.js --external:../../../vendor/cpython-emscripten/* && cp src/commands/python3/worker.js dist/commands/python3/worker.js && mkdir -p dist/bin/chunks && cp src/commands/python3/worker.js dist/bin/chunks/worker.js && mkdir -p dist/bundle/chunks && cp src/commands/python3/worker.js dist/bundle/chunks/worker.js && esbuild src/commands/js-exec/js-exec-worker.ts --bundle --platform=node --format=esm --outfile=src/commands/js-exec/js-exec-worker.js --external:quickjs-emscripten && cp src/commands/js-exec/js-exec-worker.js dist/commands/js-exec/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bin/chunks/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bundle/chunks/js-exec-worker.js","build:lib":"esbuild dist/index.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bundle --chunk-names=chunks/[name]-[hash] --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:lib:cjs":"esbuild dist/index.js --bundle --platform=node --format=cjs --minify --outfile=dist/bundle/index.cjs --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:browser":"esbuild dist/browser.js --bundle --platform=browser --format=esm --minify --outfile=dist/bundle/browser.js --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:node:zlib --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip --define:__BROWSER__=true --alias:node:dns=./src/shims/browser-unsupported.js","build:cli":"esbuild dist/cli/just-bash.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:shell":"esbuild dist/cli/shell.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin/shell --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","validate":"pnpm lint && pnpm knip && pnpm typecheck && pnpm build && pnpm check:worker-sync && pnpm test:run && pnpm test:wasm && pnpm test:dist","typecheck":"tsc --noEmit","lint":"pnpm lint:banned","check:worker-sync":"node scripts/check-worker-sync.js","lint:banned":"node scripts/check-banned-patterns.js","lint:fix":"pnpm --workspace-root lint:fix","knip":"knip","test":"vitest","test:run":"vitest run --exclude src/security/fuzzing/ --exclude src/commands/python3/ --exclude src/commands/sqlite3/ --exclude src/commands/js-exec/ --exclude src/agent-examples/python-scripting.test.ts","test:dist":"vitest run src/cli/just-bash.bundle.test.ts","test:unit":"vitest run --config vitest.unit.config.ts","test:wasm":"vitest run --config vitest.wasm.config.ts","test:comparison":"vitest run --config vitest.comparison.config.ts","test:comparison:record":"RECORD_FIXTURES=1 vitest run --config vitest.comparison.config.ts","test:coverage":"vitest run --coverage","test:coverage:unit":"vitest run --config vitest.unit.config.ts --coverage","test:fuzz":"vitest run src/security/fuzzing/","test:fuzz:long":"FUZZ_RUNS=10000 vitest run src/security/fuzzing/","shell":"npx tsx src/cli/shell.ts","dev:exec":"npx tsx src/cli/exec.ts"},"_lastModified":"2026-08-10T16:51:45.609Z"}
1
+ {"name":"just-bash","version":"2.14.3","description":"A simulated bash environment with virtual filesystem","repository":{"type":"git","url":"git+https://github.com/vercel-labs/just-bash.git"},"homepage":"https://github.com/vercel-labs/just-bash#readme","bugs":{"url":"https://github.com/vercel-labs/just-bash/issues"},"type":"module","main":"dist/bundle/index.js","types":"dist/index.d.ts","exports":{".":{"browser":"./dist/bundle/browser.js","require":{"types":"./dist/index.d.cts","default":"./dist/bundle/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/bundle/index.js"}},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/bundle/browser.js"}},"files":["dist/bundle/","dist/bin/","dist/*.d.ts","dist/*.d.cts","dist/ast/*.d.ts","dist/commands/**/*.d.ts","dist/fs/**/*.d.ts","dist/interpreter/**/*.d.ts","dist/network/**/*.d.ts","dist/parser/*.d.ts","dist/sandbox/*.d.ts","dist/utils/*.d.ts","vendor/cpython-emscripten/","README.md","CHANGELOG.md","dist/AGENTS.md"],"bin":{"just-bash":"./dist/bin/just-bash.js","just-bash-shell":"./dist/bin/shell/shell.js"},"publishConfig":{"access":"public"},"keywords":[],"author":"Malte and Claude","license":"Apache-2.0","devDependencies":{"@types/ini":"^4.1.1","@types/node":"^25.0.3","@types/papaparse":"^5.5.2","@types/sprintf-js":"^1.1.4","@types/sql.js":"^1.4.9","@types/turndown":"^5.0.6","@vitest/coverage-v8":"^4.0.18","esbuild":"^0.27.2","fast-check":"^3.23.2","knip":"^5.41.1","typescript":"^5.9.3","vitest":"^4.0.16"},"dependencies":{"seek-bzip":"^2.0.0","diff":"^8.0.2","fast-xml-parser":"5.3.3","file-type":"^21.2.0","ini":"^6.0.0","minimatch":"^10.1.1","modern-tar":"^0.7.3","papaparse":"^5.5.3","quickjs-emscripten":"^0.32.0","re2js":"^1.2.1","smol-toml":"^1.6.0","sprintf-js":"^1.1.3","sql.js":"^1.13.0","turndown":"^7.2.2","yaml":"^2.8.2"},"optionalDependencies":{"@mongodb-js/zstd":"^7.0.0","node-liblzma":"^2.0.3"},"scripts":{"build":"rm -rf dist && tsc && pnpm build:lib && pnpm build:lib:cjs && pnpm build:browser && pnpm build:cli && pnpm build:shell && pnpm build:worker && pnpm build:clean && cp dist/index.d.ts dist/index.d.cts && sed '1,/^-->/d' AGENTS.npm.md > dist/AGENTS.md","build:clean":"find dist -name '*.test.js' -delete && find dist -name '*.test.d.ts' -delete","build:worker":"esbuild src/commands/python3/worker.ts --bundle --platform=node --format=esm --outfile=src/commands/python3/worker.js --external:../../../vendor/cpython-emscripten/* && cp src/commands/python3/worker.js dist/commands/python3/worker.js && mkdir -p dist/bin/chunks && cp src/commands/python3/worker.js dist/bin/chunks/worker.js && mkdir -p dist/bundle/chunks && cp src/commands/python3/worker.js dist/bundle/chunks/worker.js && esbuild src/commands/js-exec/js-exec-worker.ts --bundle --platform=node --format=esm --outfile=src/commands/js-exec/js-exec-worker.js --external:quickjs-emscripten && cp src/commands/js-exec/js-exec-worker.js dist/commands/js-exec/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bin/chunks/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bundle/chunks/js-exec-worker.js","build:lib":"esbuild dist/index.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bundle --chunk-names=chunks/[name]-[hash] --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:lib:cjs":"esbuild dist/index.js --bundle --platform=node --format=cjs --minify --outfile=dist/bundle/index.cjs --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:browser":"esbuild dist/browser.js --bundle --platform=browser --format=esm --minify --outfile=dist/bundle/browser.js --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:node:zlib --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip --define:__BROWSER__=true --alias:node:dns=./src/shims/browser-unsupported.js","build:cli":"esbuild dist/cli/just-bash.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:shell":"esbuild dist/cli/shell.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin/shell --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","validate":"pnpm lint && pnpm knip && pnpm typecheck && pnpm build && pnpm check:worker-sync && pnpm test:run && pnpm test:wasm && pnpm test:dist","typecheck":"tsc --noEmit","lint":"pnpm lint:banned","check:worker-sync":"node scripts/check-worker-sync.js","lint:banned":"node scripts/check-banned-patterns.js","lint:fix":"pnpm --workspace-root lint:fix","knip":"knip","test":"vitest","test:run":"vitest run --exclude src/security/fuzzing/ --exclude src/commands/python3/ --exclude src/commands/sqlite3/ --exclude src/commands/js-exec/ --exclude src/agent-examples/python-scripting.test.ts","test:dist":"vitest run src/cli/just-bash.bundle.test.ts","test:unit":"vitest run --config vitest.unit.config.ts","test:wasm":"vitest run --config vitest.wasm.config.ts","test:comparison":"vitest run --config vitest.comparison.config.ts","test:comparison:record":"RECORD_FIXTURES=1 vitest run --config vitest.comparison.config.ts","test:coverage":"vitest run --coverage","test:coverage:unit":"vitest run --config vitest.unit.config.ts --coverage","test:fuzz":"vitest run src/security/fuzzing/","test:fuzz:long":"FUZZ_RUNS=10000 vitest run src/security/fuzzing/","shell":"npx tsx src/cli/shell.ts","dev:exec":"npx tsx src/cli/exec.ts"},"_lastModified":"2026-08-20T12:48:08.481Z"}
@@ -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-08-10T16:51:27.776Z"}
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-08-20T12:47:55.396Z"}
@@ -1 +1 @@
1
- {"name":"openai","version":"6.39.1","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"},"overrides":{"minimatch":"^9.0.5"},"pnpm":{"overrides":{"minimatch":"^9.0.5"}},"resolutions":{"minimatch":"^9.0.5"},"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"},"./auth/*.mjs":{"default":"./auth/*.mjs"},"./auth/*.js":{"default":"./auth/*.js"},"./auth/*":{"import":"./auth/*.mjs","require":"./auth/*.js"},"./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-08-10T16:51:29.555Z"}
1
+ {"name":"openai","version":"6.39.1","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"},"overrides":{"minimatch":"^9.0.5"},"pnpm":{"overrides":{"minimatch":"^9.0.5"}},"resolutions":{"minimatch":"^9.0.5"},"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"},"./auth/*.mjs":{"default":"./auth/*.mjs"},"./auth/*.js":{"default":"./auth/*.js"},"./auth/*":{"import":"./auth/*.mjs","require":"./auth/*.js"},"./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-08-20T12:48:09.839Z"}
@@ -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-08-10T16:51:27.719Z"}
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-08-20T12:47:55.333Z"}
@@ -58,6 +58,7 @@ var import_tool_call_sanitizer = require("./tool-call-sanitizer");
58
58
  var import_attachments = require("../attachments");
59
59
  var import_frontend_tools = require("../../common/frontend-tools");
60
60
  var import_frontend_tools2 = require("../frontend-tools");
61
+ var import_reasoning_stream_state = require("./reasoning-stream-state");
61
62
  class AIEmployee {
62
63
  sessionId;
63
64
  from = "main-agent";
@@ -415,10 +416,21 @@ class AIEmployee {
415
416
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
416
417
  const aiMessageIdMap = /* @__PURE__ */ new Map();
417
418
  const { signal, providerName, llmService, model, provider, responseMetadata, allowEmpty = false } = options;
418
- let isReasoning = false;
419
+ const reasoningState = new import_reasoning_stream_state.ReasoningStreamState();
420
+ const stopReasoning = async (conversation) => {
421
+ if (reasoningState.stop(conversation)) {
422
+ await this.protocol.with(conversation).stopReasoning();
423
+ }
424
+ };
425
+ const stopAllReasoning = async () => {
426
+ for (const conversation of reasoningState.drain()) {
427
+ await this.protocol.with(conversation).stopReasoning();
428
+ }
429
+ };
419
430
  let gathered;
420
431
  signal.addEventListener("abort", async () => {
421
432
  try {
433
+ await stopAllReasoning();
422
434
  if ((gathered == null ? void 0 : gathered.type) === "ai") {
423
435
  const values = (0, import_utils2.convertAIMessage)({
424
436
  aiEmployee: this,
@@ -460,27 +472,27 @@ class AIEmployee {
460
472
  const { currentConversation } = metadata;
461
473
  if (chunk.type === "ai") {
462
474
  gathered = gathered !== void 0 ? (0, import_stream.concat)(gathered, chunk) : chunk;
463
- if (chunk.content) {
464
- if (isReasoning) {
465
- isReasoning = false;
466
- await this.protocol.with(currentConversation).stopReasoning();
467
- }
468
- const parsedContent = provider.parseResponseChunk(chunk.content);
469
- if (parsedContent) {
470
- await this.protocol.with(currentConversation).content(parsedContent);
471
- }
475
+ const reasoningContent = provider.parseReasoningContent(chunk);
476
+ if (reasoningContent) {
477
+ reasoningState.start(currentConversation);
478
+ await this.protocol.with(currentConversation).reasoning(reasoningContent);
479
+ }
480
+ const parsedContent = chunk.content ? provider.parseResponseChunk(chunk.content) : null;
481
+ if (parsedContent) {
482
+ await stopReasoning(currentConversation);
483
+ await this.protocol.with(currentConversation).content(parsedContent);
472
484
  }
473
485
  if ((_a = chunk.tool_call_chunks) == null ? void 0 : _a.length) {
486
+ await stopReasoning(currentConversation);
474
487
  await this.protocol.with(currentConversation).toolCallChunks(chunk.tool_call_chunks);
475
488
  }
476
489
  const webSearch = provider.parseWebSearchAction(chunk);
477
490
  if (webSearch == null ? void 0 : webSearch.length) {
491
+ await stopReasoning(currentConversation);
478
492
  await this.protocol.with(currentConversation).webSearch(webSearch);
479
493
  }
480
- const reasoningContent = provider.parseReasoningContent(chunk);
481
- if (reasoningContent) {
482
- isReasoning = true;
483
- await this.protocol.with(currentConversation).reasoning(reasoningContent);
494
+ if ((0, import_reasoning_stream_state.isReasoningFinishChunk)(chunk)) {
495
+ await stopReasoning(currentConversation);
484
496
  }
485
497
  }
486
498
  } else if (mode === "updates") {
@@ -536,6 +548,7 @@ class AIEmployee {
536
548
  }
537
549
  }
538
550
  } else if (chunks.action === "initToolCalls") {
551
+ await stopReasoning(currentConversation);
539
552
  await this.protocol.with(currentConversation).toolCalls(chunks.body);
540
553
  } else if (chunks.action === "beforeToolCall") {
541
554
  const toolsMap = await this.getToolsMap();
@@ -597,12 +610,14 @@ class AIEmployee {
597
610
  }
598
611
  }
599
612
  }
613
+ await stopAllReasoning();
600
614
  if (this.protocol.statistics.sent === 0 && !signal.aborted && !allowEmpty) {
601
615
  this.sendErrorResponse("Empty message");
602
616
  return;
603
617
  }
604
618
  await this.protocol.with(aiEmployeeConversation).endStream();
605
619
  } catch (err) {
620
+ await stopAllReasoning();
606
621
  this.ctx.log.error(err);
607
622
  if (err.name === "GraphRecursionError") {
608
623
  this.sendSpecificError({ name: err.name, message: err.message });
@@ -1132,20 +1147,21 @@ If information is missing, clearly state it in the summary.</Important>`;
1132
1147
  });
1133
1148
  continue;
1134
1149
  }
1150
+ const additionalKwargs = (0, import_tool_call_sanitizer.sanitizeAdditionalKwargsForToolCalls)((_b = msg.metadata) == null ? void 0 : _b.additional_kwargs, msg.toolCalls, {
1151
+ onDiscard: (info) => {
1152
+ var _a2;
1153
+ this.logger.warn("Discard malformed raw tool calls from AI message", {
1154
+ phase: "formatMessages",
1155
+ messageId: (_a2 = msg.metadata) == null ? void 0 : _a2.id,
1156
+ ...info
1157
+ });
1158
+ }
1159
+ }).additionalKwargs;
1135
1160
  formattedMessages.push({
1136
1161
  role: "assistant",
1137
1162
  content,
1138
1163
  tool_calls: msg.toolCalls,
1139
- additional_kwargs: (0, import_tool_call_sanitizer.sanitizeAdditionalKwargsForToolCalls)((_b = msg.metadata) == null ? void 0 : _b.additional_kwargs, msg.toolCalls, {
1140
- onDiscard: (info) => {
1141
- var _a2;
1142
- this.logger.warn("Discard malformed raw tool calls from AI message", {
1143
- phase: "formatMessages",
1144
- messageId: (_a2 = msg.metadata) == null ? void 0 : _a2.id,
1145
- ...info
1146
- });
1147
- }
1148
- }).additionalKwargs
1164
+ additional_kwargs: provider.prepareStoredAssistantAdditionalKwargs(additionalKwargs)
1149
1165
  });
1150
1166
  }
1151
1167
  return formattedMessages;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ export type StreamConversation = {
10
+ sessionId: string;
11
+ from: string;
12
+ username: string;
13
+ };
14
+ export declare class ReasoningStreamState {
15
+ private readonly active;
16
+ start(conversation: StreamConversation): void;
17
+ stop(conversation: StreamConversation): boolean;
18
+ drain(): StreamConversation[];
19
+ }
20
+ export declare const isReasoningFinishChunk: (chunk: {
21
+ response_metadata?: Record<string, unknown>;
22
+ usage_metadata?: Record<string, unknown>;
23
+ }) => boolean;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var reasoning_stream_state_exports = {};
28
+ __export(reasoning_stream_state_exports, {
29
+ ReasoningStreamState: () => ReasoningStreamState,
30
+ isReasoningFinishChunk: () => isReasoningFinishChunk
31
+ });
32
+ module.exports = __toCommonJS(reasoning_stream_state_exports);
33
+ const getConversationKey = (conversation) => `${conversation.from}:${conversation.sessionId}:${conversation.username}`;
34
+ class ReasoningStreamState {
35
+ active = /* @__PURE__ */ new Map();
36
+ start(conversation) {
37
+ this.active.set(getConversationKey(conversation), conversation);
38
+ }
39
+ stop(conversation) {
40
+ return this.active.delete(getConversationKey(conversation));
41
+ }
42
+ drain() {
43
+ const conversations = Array.from(this.active.values());
44
+ this.active.clear();
45
+ return conversations;
46
+ }
47
+ }
48
+ const isReasoningFinishChunk = (chunk) => {
49
+ const metadata = chunk.response_metadata;
50
+ if (!metadata) {
51
+ return false;
52
+ }
53
+ const finishReason = metadata.finish_reason ?? metadata.finishReason;
54
+ if (typeof finishReason === "string" && finishReason.length > 0) {
55
+ return true;
56
+ }
57
+ return metadata.status === "completed" || metadata.status === "incomplete" || metadata.status === "failed";
58
+ };
59
+ // Annotate the CommonJS export names for ESM import in node:
60
+ 0 && (module.exports = {
61
+ ReasoningStreamState,
62
+ isReasoningFinishChunk
63
+ });
@@ -55,19 +55,27 @@ const collectReasoningMap = (messages) => {
55
55
  return reasoningMap;
56
56
  };
57
57
  const patchRequestMessagesReasoning = (request, reasoningMap) => {
58
+ var _a;
58
59
  if (!(reasoningMap == null ? void 0 : reasoningMap.size) || !Array.isArray(request == null ? void 0 : request.messages)) {
59
60
  return;
60
61
  }
61
- if (request.messages.some((msg) => msg.role === "tool")) {
62
- for (let i = 0; i < request.messages.length; i++) {
63
- const message = request.messages[i];
64
- if ((message == null ? void 0 : message.role) !== "assistant") {
65
- continue;
66
- }
67
- if (message.reasoning_content) {
68
- continue;
69
- }
70
- const reasoningContent = reasoningMap.get(String(i));
62
+ let lastUserMessageIndex = -1;
63
+ for (let i = request.messages.length - 1; i >= 0; i--) {
64
+ if (((_a = request.messages[i]) == null ? void 0 : _a.role) === "user") {
65
+ lastUserMessageIndex = i;
66
+ break;
67
+ }
68
+ }
69
+ for (let i = lastUserMessageIndex + 1; i < request.messages.length; i++) {
70
+ const message = request.messages[i];
71
+ if ((message == null ? void 0 : message.role) !== "assistant" || !Array.isArray(message.tool_calls) || message.tool_calls.length === 0) {
72
+ continue;
73
+ }
74
+ if (typeof message.reasoning_content === "string" && message.reasoning_content.length > 0) {
75
+ continue;
76
+ }
77
+ const reasoningContent = reasoningMap.get(String(i));
78
+ if (typeof reasoningContent === "string" && reasoningContent.length > 0) {
71
79
  message.reasoning_content = reasoningContent;
72
80
  }
73
81
  }
@@ -6,5 +6,5 @@
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 React from 'react';
10
- export declare const DebugPanel: React.FC;
9
+ export * from './provider';
10
+ export * from './reasoning';