@nocobase/plugin-ai 2.1.0-beta.30 → 2.1.0-beta.32

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 (94) hide show
  1. package/client-v2.d.ts +1 -0
  2. package/client-v2.js +1 -0
  3. package/dist/ai/docs/nocobase/ai/index.md +1 -1
  4. package/dist/ai/docs/nocobase/ai-employees/built-in/atlas.md +24 -0
  5. package/dist/ai/docs/nocobase/ai-employees/built-in/dara.md +22 -0
  6. package/dist/ai/docs/nocobase/ai-employees/built-in/dex.md +32 -0
  7. package/dist/ai/docs/nocobase/ai-employees/built-in/ellis.md +22 -0
  8. package/dist/ai/docs/nocobase/ai-employees/built-in/index.md +25 -0
  9. package/dist/ai/docs/nocobase/ai-employees/built-in/lexi.md +26 -0
  10. package/dist/ai/docs/nocobase/ai-employees/built-in/lina.md +142 -0
  11. package/dist/ai/docs/nocobase/ai-employees/built-in/nathan.md +36 -0
  12. package/dist/ai/docs/nocobase/ai-employees/built-in/vera.md +22 -0
  13. package/dist/ai/docs/nocobase/ai-employees/built-in/viz.md +25 -0
  14. package/dist/ai/docs/nocobase/ai-employees/features/built-in-employee.md +1 -29
  15. package/dist/ai/docs/nocobase/ai-employees/features/collaborate.md +17 -7
  16. package/dist/ai/docs/nocobase/ai-employees/features/enable-ai-employee.md +4 -4
  17. package/dist/ai/docs/nocobase/ai-employees/features/model-settings.md +87 -0
  18. package/dist/ai/docs/nocobase/ai-employees/index.md +1 -1
  19. package/dist/ai/docs/nocobase/ai-employees/scenarios/localization-hy-mt.md +241 -0
  20. package/dist/ai/docs/nocobase/ai-employees/workflow/nodes/employee/configuration.md +1 -1
  21. package/dist/ai/docs/nocobase/interface-builder/actions/types/js-action.md +1 -1
  22. package/dist/ai/docs/nocobase/interface-builder/actions/types/js-item.md +1 -1
  23. package/dist/ai/docs/nocobase/interface-builder/blocks/other-blocks/js-block.md +1 -1
  24. package/dist/ai/docs/nocobase/interface-builder/fields/specific/js-column.md +1 -1
  25. package/dist/ai/docs/nocobase/interface-builder/fields/specific/js-field.md +1 -1
  26. package/dist/ai/docs/nocobase/interface-builder/fields/specific/js-item.md +1 -1
  27. package/dist/ai/docs/nocobase/security/guide.md +13 -1
  28. package/dist/ai/docs/nocobase/system-management/localization/index.md +25 -1
  29. package/dist/client/462.1708385b148779cd.js +10 -0
  30. package/dist/client/{559.39872901b9053629.js → 559.585f80c3bcea0bed.js} +1 -1
  31. package/dist/client/646.b0ed728921b007d4.js +10 -0
  32. package/dist/client/{927.ac9ee9a8c1cb4f1d.js → 927.d95c74ebb8fd51c9.js} +1 -1
  33. package/dist/client/ai-employees/admin/ModelSettings.d.ts +10 -0
  34. package/dist/client/ai-employees/admin/hooks.d.ts +1 -1
  35. package/dist/client/ai-employees/avatars.d.ts +9 -783
  36. package/dist/client/ai-employees/chatbox/model.d.ts +6 -3
  37. package/dist/client/ai-employees/types.d.ts +23 -0
  38. package/dist/client/features/vector-database-provider.d.ts +1 -1
  39. package/dist/client/index.js +4 -4
  40. package/dist/client/llm-services/component/EnabledModelsSelect.d.ts +1 -14
  41. package/dist/client-v2/ai-employees/AIEmployeeShortcut.d.ts +21 -0
  42. package/dist/client-v2/ai-employees/ProfileCard.d.ts +17 -0
  43. package/dist/client-v2/ai-employees/avatars.d.ts +783 -0
  44. package/dist/client-v2/ai-employees/types.d.ts +20 -0
  45. package/dist/client-v2/index.d.ts +17 -0
  46. package/dist/client-v2/index.js +10 -0
  47. package/dist/client-v2/llm-services/model-label.d.ts +22 -0
  48. package/dist/collections/ai-employees.d.ts +2 -1
  49. package/dist/collections/ai-employees.js +1 -1
  50. package/dist/externalVersion.js +17 -17
  51. package/dist/locale/en-US.json +15 -1
  52. package/dist/locale/zh-CN.json +15 -1
  53. package/dist/node_modules/@langchain/xai/package.json +1 -1
  54. package/dist/node_modules/fs-extra/package.json +1 -1
  55. package/dist/node_modules/jsonrepair/package.json +1 -1
  56. package/dist/node_modules/just-bash/package.json +1 -1
  57. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  58. package/dist/node_modules/openai/package.json +1 -1
  59. package/dist/node_modules/zod/package.json +1 -1
  60. package/dist/server/ai-employees/ai-conversations.d.ts +1 -0
  61. package/dist/server/ai-employees/ai-conversations.js +4 -1
  62. package/dist/server/ai-employees/ai-employee.d.ts +15 -1
  63. package/dist/server/ai-employees/ai-employee.js +140 -9
  64. package/dist/server/ai-employees/ai-employees-manager.d.ts +4 -0
  65. package/dist/server/ai-employees/ai-employees-manager.js +41 -0
  66. package/dist/server/ai-employees/ai-knowledge-base.js +7 -7
  67. package/dist/server/ai-employees/middleware/conversation.d.ts +1 -0
  68. package/dist/server/ai-employees/middleware/conversation.js +4 -2
  69. package/dist/server/ai-employees/sub-agents/dispatcher.js +2 -4
  70. package/dist/server/ai-employees/utils.d.ts +6 -3
  71. package/dist/server/ai-employees/utils.js +7 -1
  72. package/dist/server/features/knowledge-base.d.ts +3 -2
  73. package/dist/server/index.d.ts +2 -0
  74. package/dist/server/index.js +3 -0
  75. package/dist/server/llm-providers/common/reasoning.d.ts +2 -0
  76. package/dist/server/llm-providers/common/reasoning.js +15 -2
  77. package/dist/server/llm-providers/dashscope.d.ts +2 -1
  78. package/dist/server/llm-providers/dashscope.js +39 -0
  79. package/dist/server/llm-providers/deepseek.js +2 -0
  80. package/dist/server/llm-providers/provider.d.ts +15 -1
  81. package/dist/server/llm-providers/provider.js +21 -2
  82. package/dist/server/manager/ai-chat-conversation.js +3 -4
  83. package/dist/server/manager/ai-manager.d.ts +17 -0
  84. package/dist/server/manager/ai-manager.js +65 -0
  85. package/dist/server/migrations/20260407170416-ai-employee-knowledge-base-add-key.d.ts +14 -0
  86. package/dist/server/migrations/20260407170416-ai-employee-knowledge-base-add-key.js +61 -0
  87. package/dist/server/resource/ai.js +1 -41
  88. package/dist/server/resource/aiConversations.js +12 -8
  89. package/dist/server/resource/aiEmployees.js +32 -1
  90. package/dist/server/types/knowledge-base.type.d.ts +3 -2
  91. package/dist/server/workflow/nodes/employee/index.js +4 -2
  92. package/package.json +2 -2
  93. package/dist/client/343.6f36d97dd122c5b6.js +0 -10
  94. package/dist/client/646.5860101cb28c8272.js +0 -10
@@ -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-05-11T23:08:12.732Z"}
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-05-13T05:25:52.727Z"}
@@ -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-05-11T23:08:10.845Z"}
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-05-13T05:25:51.099Z"}
@@ -13,6 +13,7 @@ export type AIConversationsOptions = {
13
13
  systemMessage?: unknown;
14
14
  skillSettings?: unknown;
15
15
  conversationSettings?: unknown;
16
+ modelSettings?: unknown;
16
17
  [key: string]: unknown;
17
18
  };
18
19
  export type AIConversationFilterParams = {
@@ -90,7 +90,7 @@ class AIConversationsManager {
90
90
  if (!conversation) {
91
91
  throw new Error("invalid sessionId");
92
92
  }
93
- const { systemMessage, skillSettings, conversationSettings } = inputOptions ?? {};
93
+ const { systemMessage, skillSettings, conversationSettings, modelSettings } = inputOptions ?? {};
94
94
  const options = conversation.options ?? {};
95
95
  if (systemMessage) {
96
96
  options["systemMessage"] = systemMessage;
@@ -101,6 +101,9 @@ class AIConversationsManager {
101
101
  if (conversationSettings) {
102
102
  options["conversationSettings"] = conversationSettings;
103
103
  }
104
+ if (modelSettings) {
105
+ options["modelSettings"] = modelSettings;
106
+ }
104
107
  const values = { options };
105
108
  if (title) {
106
109
  values.title = title;
@@ -9,6 +9,8 @@
9
9
  import { Model, Transaction } from '@nocobase/database';
10
10
  import { LLMProvider } from '../llm-providers/provider';
11
11
  import { AIChatContext, AIChatConversation, AIMessageInput, AIToolCall, UserDecision } from '../types';
12
+ import { DocumentSegmentedWithScore } from '../features';
13
+ import { KnowledgeBaseGroup } from '../types';
12
14
  import { ToolsEntry } from '@nocobase/ai';
13
15
  import { AIToolMessage } from '../types/ai-message.type';
14
16
  import { Context } from '@nocobase/actions';
@@ -48,6 +50,10 @@ export declare class AIEmployee {
48
50
  private inWorkflow?;
49
51
  private streamCached;
50
52
  constructor({ ctx, employee, sessionId, systemMessage, skillSettings, webSearch, model, legacy, from, tools, }: AIEmployeeOptions);
53
+ private get chatSettings();
54
+ private get systemPromptMode();
55
+ private areSkillsEnabled;
56
+ private areToolsEnabled;
51
57
  getFormatMessages(userMessages: AIMessageInput[]): Promise<{
52
58
  role: "user" | "assistant" | "tool" | "system";
53
59
  content: any;
@@ -100,6 +106,7 @@ export declare class AIEmployee {
100
106
  processChatStream(stream: any, options: {
101
107
  signal: AbortSignal;
102
108
  providerName: string;
109
+ llmService?: string;
103
110
  model: string;
104
111
  provider: LLMProvider;
105
112
  allowEmpty?: boolean;
@@ -107,7 +114,14 @@ export declare class AIEmployee {
107
114
  }): Promise<void>;
108
115
  private handleInterruptedToolCalls;
109
116
  getEmployeeDataSourceContext(): string;
110
- getSystemPrompt(userMessages: AIMessageInput[]): Promise<string>;
117
+ getSystemPrompt(userMessages: AIMessageInput[]): Promise<any>;
118
+ retrieveKnowledgeBase(userMessage: AIMessageInput): Promise<DocumentSegmentedWithScore[]>;
119
+ isEnabledKnowledgeBase(): boolean;
120
+ getAIEmployeeKnowledgeBaseConfig(): {
121
+ topK: number;
122
+ score: string;
123
+ };
124
+ getKnowledgeBaseGroup(): Promise<KnowledgeBaseGroup[]>;
111
125
  initToolCall(transaction: Transaction, messageId: string, toolCalls: {
112
126
  id: string;
113
127
  name: string;
@@ -45,6 +45,7 @@ var import_utils = require("../utils");
45
45
  var import_prompts = require("./prompts");
46
46
  var import_lodash = __toESM(require("lodash"));
47
47
  var import_ai_chat_conversation = require("../manager/ai-chat-conversation");
48
+ var import_ai_feature_manager = require("../manager/ai-feature-manager");
48
49
  var import_middleware = require("./middleware");
49
50
  var import_ai = require("@nocobase/ai");
50
51
  var import_checkpoints = require("./checkpoints");
@@ -107,6 +108,19 @@ class AIEmployee {
107
108
  }
108
109
  });
109
110
  }
111
+ get chatSettings() {
112
+ var _a, _b, _c;
113
+ return ((_b = (_a = this.employee) == null ? void 0 : _a.get) == null ? void 0 : _b.call(_a, "chatSettings")) ?? ((_c = this.employee) == null ? void 0 : _c.chatSettings) ?? {};
114
+ }
115
+ get systemPromptMode() {
116
+ return this.chatSettings.systemPromptMode ?? "default";
117
+ }
118
+ areSkillsEnabled() {
119
+ return this.chatSettings.enableSkills !== false;
120
+ }
121
+ areToolsEnabled() {
122
+ return this.chatSettings.enableTools !== false;
123
+ }
110
124
  async getFormatMessages(userMessages) {
111
125
  const { provider } = await this.plugin.aiManager.getLLMService({
112
126
  ...this.model
@@ -136,7 +150,7 @@ class AIEmployee {
136
150
  }
137
151
  };
138
152
  }
139
- async initSession({ messageId, provider, model, providerName }) {
153
+ async initSession({ messageId, provider, model, providerName, llmService }) {
140
154
  const { tools, baseToolNames } = await this.getAgentTools();
141
155
  const resolvedTools = provider.resolveTools(tools.map(import_utils.buildTool));
142
156
  if (!messageId && this.legacy !== true) {
@@ -144,7 +158,7 @@ class AIEmployee {
144
158
  historyMessages: [],
145
159
  tools,
146
160
  resolvedTools,
147
- middleware: await this.getMiddleware({ tools, baseToolNames, model, providerName }),
161
+ middleware: await this.getMiddleware({ tools, baseToolNames, model, providerName, llmService }),
148
162
  config: void 0,
149
163
  state: void 0
150
164
  };
@@ -162,6 +176,7 @@ class AIEmployee {
162
176
  baseToolNames,
163
177
  model,
164
178
  providerName,
179
+ llmService,
165
180
  messageId,
166
181
  agentThread
167
182
  }),
@@ -178,6 +193,7 @@ class AIEmployee {
178
193
  userMessages,
179
194
  userDecisions
180
195
  }) {
196
+ var _a, _b;
181
197
  const { provider, model, service } = await this.plugin.aiManager.getLLMService({
182
198
  ...this.model
183
199
  });
@@ -185,7 +201,8 @@ class AIEmployee {
185
201
  messageId,
186
202
  provider,
187
203
  model,
188
- providerName: service.provider
204
+ providerName: service.provider,
205
+ llmService: ((_a = service.get) == null ? void 0 : _a.call(service, "name")) || service.name
189
206
  });
190
207
  const chatContext = await this.aiChatConversation.getChatContext({
191
208
  userMessages: [...historyMessages, ...userMessages ?? []],
@@ -195,7 +212,15 @@ class AIEmployee {
195
212
  getSystemPrompt: (userMessages2) => this.getSystemPrompt(userMessages2),
196
213
  formatMessages: (messages) => this.formatMessages({ messages, provider })
197
214
  });
198
- return { providerName: service.provider, model, provider, chatContext, config, state };
215
+ return {
216
+ providerName: service.provider,
217
+ llmService: ((_b = service.get) == null ? void 0 : _b.call(service, "name")) || service.name,
218
+ model,
219
+ provider,
220
+ chatContext,
221
+ config,
222
+ state
223
+ };
199
224
  }
200
225
  async stream({
201
226
  messageId,
@@ -210,7 +235,7 @@ class AIEmployee {
210
235
  }
211
236
  });
212
237
  try {
213
- const { providerName, model, provider, chatContext, config, state } = await this.buildChatContext({
238
+ const { providerName, llmService, model, provider, chatContext, config, state } = await this.buildChatContext({
214
239
  messageId,
215
240
  userMessages,
216
241
  userDecisions
@@ -226,6 +251,7 @@ class AIEmployee {
226
251
  await this.processChatStream(stream, {
227
252
  signal,
228
253
  providerName,
254
+ llmService,
229
255
  model,
230
256
  provider,
231
257
  responseMetadata
@@ -375,7 +401,7 @@ class AIEmployee {
375
401
  async processChatStream(stream, options) {
376
402
  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;
377
403
  const aiMessageIdMap = /* @__PURE__ */ new Map();
378
- const { signal, providerName, model, provider, responseMetadata, allowEmpty = false } = options;
404
+ const { signal, providerName, llmService, model, provider, responseMetadata, allowEmpty = false } = options;
379
405
  let isReasoning = false;
380
406
  let gathered;
381
407
  signal.addEventListener("abort", async () => {
@@ -384,6 +410,7 @@ class AIEmployee {
384
410
  const values = (0, import_utils2.convertAIMessage)({
385
411
  aiEmployee: this,
386
412
  providerName,
413
+ llmService,
387
414
  model,
388
415
  aiMessage: gathered
389
416
  });
@@ -651,13 +678,19 @@ Field: ${field.name}, Title: ${(_a = field.options.uiSchema) == null ? void 0 :
651
678
  }
652
679
  async getSystemPrompt(userMessages) {
653
680
  var _a, _b, _c, _d, _e, _f, _g;
681
+ if (this.systemPromptMode === "none") {
682
+ return "";
683
+ }
684
+ const about = await (0, import_utils.parseVariables)(this.ctx, this.employee.about ?? this.employee.defaultPrompt ?? "");
685
+ if (this.systemPromptMode === "raw") {
686
+ return about;
687
+ }
654
688
  const userConfig = await this.db.getRepository("usersAiEmployees").findOne({
655
689
  filter: {
656
690
  userId: ((_a = this.ctx.auth) == null ? void 0 : _a.user.id) ?? 0,
657
691
  aiEmployee: this.employee.username
658
692
  }
659
693
  });
660
- const about = await (0, import_utils.parseVariables)(this.ctx, this.employee.about ?? this.employee.defaultPrompt ?? "");
661
694
  let background = "";
662
695
  if (this.systemMessage) {
663
696
  background = await (0, import_utils.parseVariables)(this.ctx, this.systemMessage);
@@ -721,6 +754,92 @@ If information is missing, clearly state it in the summary.</Important>`;
721
754
  return systemPrompt;
722
755
  }
723
756
  }
757
+ async retrieveKnowledgeBase(userMessage) {
758
+ const vectorStoreProvider = this.plugin.features.vectorStoreProvider;
759
+ let queryResult = [];
760
+ const queryString = userMessage.content.content;
761
+ if (!queryString || import_lodash.default.isEmpty(queryString)) {
762
+ return queryResult;
763
+ }
764
+ const { topK, score } = this.getAIEmployeeKnowledgeBaseConfig();
765
+ const knowledgeBaseGroup = await this.getKnowledgeBaseGroup();
766
+ for (const entry of knowledgeBaseGroup) {
767
+ const { vectorStoreConfig, knowledgeBaseType, knowledgeBaseList } = entry;
768
+ if (!knowledgeBaseList || import_lodash.default.isEmpty(knowledgeBaseList)) {
769
+ continue;
770
+ }
771
+ if (knowledgeBaseType === "LOCAL") {
772
+ const vectorStoreService = await vectorStoreProvider.createVectorStoreService(
773
+ vectorStoreConfig.vectorStoreProvider,
774
+ [
775
+ {
776
+ key: "vectorStoreConfigKey",
777
+ value: vectorStoreConfig.vectorStoreConfigKey
778
+ }
779
+ ]
780
+ );
781
+ const knowledgeBaseOuterIds = knowledgeBaseList.map((x) => x.knowledgeBaseOuterId);
782
+ const result = await vectorStoreService.search(queryString, {
783
+ topK,
784
+ score,
785
+ filter: {
786
+ knowledgeBaseOuterId: { in: knowledgeBaseOuterIds }
787
+ }
788
+ });
789
+ queryResult = [...queryResult, ...result];
790
+ } else if (knowledgeBaseType === "READONLY") {
791
+ for (const knowledgeBase of knowledgeBaseList) {
792
+ const vectorStoreService = await vectorStoreProvider.createVectorStoreService(
793
+ vectorStoreConfig.vectorStoreProvider,
794
+ [
795
+ ...knowledgeBase.vectorStoreProps,
796
+ {
797
+ key: "vectorStoreConfigKey",
798
+ value: vectorStoreConfig.vectorStoreConfigKey
799
+ }
800
+ ]
801
+ );
802
+ const result = await vectorStoreService.search(queryString, {
803
+ topK,
804
+ score
805
+ });
806
+ queryResult = [...queryResult, ...result];
807
+ }
808
+ } else if (knowledgeBaseType === "EXTERNAL") {
809
+ for (const knowledgeBase of knowledgeBaseList) {
810
+ const vectorStoreService = await vectorStoreProvider.createVectorStoreService(
811
+ vectorStoreConfig.vectorStoreProvider,
812
+ knowledgeBase.vectorStoreProps
813
+ );
814
+ const result = await vectorStoreService.search(queryString, {
815
+ topK,
816
+ score
817
+ });
818
+ queryResult = [...queryResult, ...result];
819
+ }
820
+ }
821
+ }
822
+ return queryResult;
823
+ }
824
+ isEnabledKnowledgeBase() {
825
+ const featureEnabled = this.plugin.features.isFeaturesEnabled(Object.values(import_ai_feature_manager.EEFeatures));
826
+ const knowledgeBaseEnabled = this.employee.enableKnowledgeBase;
827
+ return featureEnabled && knowledgeBaseEnabled;
828
+ }
829
+ getAIEmployeeKnowledgeBaseConfig() {
830
+ const { topK, score } = this.employee.knowledgeBase ?? {};
831
+ return {
832
+ topK,
833
+ score
834
+ };
835
+ }
836
+ async getKnowledgeBaseGroup() {
837
+ const { knowledgeBaseKeys } = this.employee.knowledgeBase ?? {};
838
+ if (!knowledgeBaseKeys || import_lodash.default.isEmpty(knowledgeBaseKeys)) {
839
+ return [];
840
+ }
841
+ return await this.plugin.features.knowledgeBase.getKnowledgeBaseGroup(knowledgeBaseKeys);
842
+ }
724
843
  // === Tool calls ===
725
844
  async initToolCall(transaction, messageId, toolCalls) {
726
845
  const nowTime = /* @__PURE__ */ new Date();
@@ -1147,6 +1266,9 @@ If information is missing, clearly state it in the summary.</Important>`;
1147
1266
  }
1148
1267
  async getAIEmployeeTools() {
1149
1268
  var _a;
1269
+ if (!this.areToolsEnabled()) {
1270
+ return [];
1271
+ }
1150
1272
  const tools = await this.listTools({ scope: "GENERAL" });
1151
1273
  if (this.webSearch === true) {
1152
1274
  const subAgentWebSearch = await this.toolsManager.getTools(import_ai.SYSTEM_TOOLS.WEB_SEARCH);
@@ -1191,6 +1313,9 @@ If information is missing, clearly state it in the summary.</Important>`;
1191
1313
  }
1192
1314
  async getAvailableSkills() {
1193
1315
  var _a;
1316
+ if (!this.areSkillsEnabled()) {
1317
+ return [];
1318
+ }
1194
1319
  const { skillsManager } = this.plugin.ai;
1195
1320
  const aIEmployeeTools = await this.getAIEmployeeTools();
1196
1321
  const getSkill = aIEmployeeTools.find((it) => it.definition.name === "getSkill");
@@ -1216,6 +1341,12 @@ If information is missing, clearly state it in the summary.</Important>`;
1216
1341
  }
1217
1342
  }
1218
1343
  async getAgentTools() {
1344
+ if (!this.areToolsEnabled()) {
1345
+ return {
1346
+ tools: [],
1347
+ baseToolNames: /* @__PURE__ */ new Set()
1348
+ };
1349
+ }
1219
1350
  const baseTools = await this.getAIEmployeeTools();
1220
1351
  const toolMap = await this.getToolsMap();
1221
1352
  const availableSkills = await this.getAvailableSkills();
@@ -1286,7 +1417,7 @@ If information is missing, clearly state it in the summary.</Important>`;
1286
1417
  return availableAIEmployees;
1287
1418
  }
1288
1419
  async getMiddleware(options) {
1289
- const { providerName, model, tools, baseToolNames, messageId, agentThread } = options;
1420
+ const { providerName, llmService, model, tools, baseToolNames, messageId, agentThread } = options;
1290
1421
  const inWorkflow = await this.isInWorkflow();
1291
1422
  return [
1292
1423
  (0, import_middleware.skillToolBindingMiddleware)(this, {
@@ -1295,7 +1426,7 @@ If information is missing, clearly state it in the summary.</Important>`;
1295
1426
  (0, import_middleware.toolInteractionMiddleware)(this, tools),
1296
1427
  (0, import_middleware.toolCallStatusMiddleware)(this),
1297
1428
  ...inWorkflow ? [(0, import_middleware.workflowHistoryMiddleware)(this, this.db)] : [],
1298
- (0, import_middleware.conversationMiddleware)(this, { providerName, model, messageId, agentThread })
1429
+ (0, import_middleware.conversationMiddleware)(this, { providerName, llmService, model, messageId, agentThread })
1299
1430
  ];
1300
1431
  }
1301
1432
  async getCurrentThread() {
@@ -7,10 +7,14 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  import PluginAIServer from '../plugin';
10
+ import type { Model } from '@nocobase/database';
11
+ import type { ModelRef } from './ai-employee';
10
12
  export declare class AIEmployeesManager {
11
13
  protected plugin: PluginAIServer;
12
14
  conversationController: Map<string, AbortController>;
13
15
  constructor(plugin: PluginAIServer);
16
+ getEmployee(username: string): Promise<Model | null>;
17
+ resolveModel(employee: Model, model?: ModelRef | null): Promise<ModelRef>;
14
18
  onAbortConversation(sessionId: string): boolean;
15
19
  abortConversation(sessionId: string): void;
16
20
  }
@@ -34,6 +34,47 @@ class AIEmployeesManager {
34
34
  this.plugin = plugin;
35
35
  }
36
36
  conversationController = /* @__PURE__ */ new Map();
37
+ async getEmployee(username) {
38
+ return await this.plugin.db.getRepository("aiEmployees").findOne({
39
+ filter: {
40
+ username
41
+ }
42
+ });
43
+ }
44
+ async resolveModel(employee, model) {
45
+ var _a;
46
+ const modelSettings = ((_a = employee.get) == null ? void 0 : _a.call(employee, "modelSettings")) || employee.modelSettings;
47
+ if (modelSettings == null ? void 0 : modelSettings.enabled) {
48
+ const models = Array.isArray(modelSettings.models) ? modelSettings.models : [];
49
+ const configuredModels = models.filter((item) => (item == null ? void 0 : item.llmService) && (item == null ? void 0 : item.model)).map((item) => ({
50
+ llmService: item.llmService,
51
+ model: item.model
52
+ }));
53
+ if (!configuredModels.length && modelSettings.llmService && modelSettings.model) {
54
+ configuredModels.push({
55
+ llmService: modelSettings.llmService,
56
+ model: modelSettings.model
57
+ });
58
+ }
59
+ if (!configuredModels.length) {
60
+ throw new Error("AI employee model not configured");
61
+ }
62
+ if ((model == null ? void 0 : model.llmService) && (model == null ? void 0 : model.model) && configuredModels.some((item) => item.llmService === model.llmService && item.model === model.model)) {
63
+ return model;
64
+ }
65
+ const firstModel = configuredModels[0];
66
+ if ((firstModel == null ? void 0 : firstModel.llmService) && (firstModel == null ? void 0 : firstModel.model)) {
67
+ return {
68
+ llmService: firstModel.llmService,
69
+ model: firstModel.model
70
+ };
71
+ }
72
+ }
73
+ if ((model == null ? void 0 : model.llmService) && (model == null ? void 0 : model.model)) {
74
+ return model;
75
+ }
76
+ return await this.plugin.aiManager.resolveModel();
77
+ }
37
78
  onAbortConversation(sessionId) {
38
79
  const controller = this.conversationController.get(sessionId);
39
80
  if (controller) {
@@ -86,8 +86,8 @@ class KnowledgeBaseManager {
86
86
  vectorStoreConfig.vectorStoreProvider,
87
87
  [
88
88
  {
89
- key: "vectorStoreConfigId",
90
- value: vectorStoreConfig.vectorStoreConfigId
89
+ key: "vectorStoreConfigKey",
90
+ value: vectorStoreConfig.vectorStoreConfigKey
91
91
  }
92
92
  ]
93
93
  );
@@ -107,8 +107,8 @@ class KnowledgeBaseManager {
107
107
  [
108
108
  ...knowledgeBase.vectorStoreProps,
109
109
  {
110
- key: "vectorStoreConfigId",
111
- value: vectorStoreConfig.vectorStoreConfigId
110
+ key: "vectorStoreConfigKey",
111
+ value: vectorStoreConfig.vectorStoreConfigKey
112
112
  }
113
113
  ]
114
114
  );
@@ -148,11 +148,11 @@ class KnowledgeBaseManager {
148
148
  };
149
149
  }
150
150
  async getKnowledgeBaseGroup(employee) {
151
- const { knowledgeBaseIds } = (employee == null ? void 0 : employee.knowledgeBase) ?? {};
152
- if (!knowledgeBaseIds || import_lodash.default.isEmpty(knowledgeBaseIds)) {
151
+ const { knowledgeBaseKeys } = (employee == null ? void 0 : employee.knowledgeBase) ?? {};
152
+ if (!knowledgeBaseKeys || import_lodash.default.isEmpty(knowledgeBaseKeys)) {
153
153
  return [];
154
154
  }
155
- return await this.plugin.features.knowledgeBase.getKnowledgeBaseGroup(knowledgeBaseIds);
155
+ return await this.plugin.features.knowledgeBase.getKnowledgeBaseGroup(knowledgeBaseKeys);
156
156
  }
157
157
  async getEmployee(username) {
158
158
  return await this.aiEmployeeRepo.findOne({ filter: { username } });
@@ -10,6 +10,7 @@ import { AIEmployee } from '../ai-employee';
10
10
  import z from 'zod';
11
11
  export declare const conversationMiddleware: (aiEmployee: AIEmployee, options: {
12
12
  providerName: string;
13
+ llmService?: string;
13
14
  model: string;
14
15
  messageId?: string;
15
16
  agentThread?: {
@@ -43,16 +43,18 @@ var import_langchain = require("langchain");
43
43
  var import_zod = __toESM(require("zod"));
44
44
  var import_utils = require("../utils");
45
45
  const conversationMiddleware = (aiEmployee, options) => {
46
- const { providerName, model, messageId, agentThread } = options;
46
+ const { providerName, llmService, model, messageId, agentThread } = options;
47
47
  const convertAIMessage = (aiMessage) => (0, import_utils.convertAIMessage)({
48
48
  aiEmployee,
49
49
  providerName,
50
+ llmService,
50
51
  model,
51
52
  aiMessage
52
53
  });
53
- const convertHumanMessage = (humanMessage) => (0, import_utils.convertHumanMessage)({ providerName, model, humanMessage });
54
+ const convertHumanMessage = (humanMessage) => (0, import_utils.convertHumanMessage)({ providerName, llmService, model, humanMessage });
54
55
  const convertToolMessage = (toolMessage) => (0, import_utils.convertToolMessage)({
55
56
  providerName,
57
+ llmService,
56
58
  model,
57
59
  toolMessage
58
60
  });
@@ -114,16 +114,14 @@ class SubAgentsDispatcher {
114
114
  if (!userId) {
115
115
  throw new Error("User not authenticated");
116
116
  }
117
- if (!(model == null ? void 0 : model.llmService) || !(model == null ? void 0 : model.model)) {
118
- throw new Error("LLM service not configured");
119
- }
117
+ const resolvedModel = await plugin.aiEmployeesManager.resolveModel(employee, model);
120
118
  const aiEmployee = new import_ai_employee.AIEmployee({
121
119
  ctx,
122
120
  employee,
123
121
  sessionId,
124
122
  skillSettings,
125
123
  webSearch,
126
- model,
124
+ model: resolvedModel,
127
125
  from: "sub-agent"
128
126
  });
129
127
  const lastMessage = await ctx.db.getRepository("aiMessages").findOne({
@@ -9,19 +9,22 @@
9
9
  import { AIMessage, HumanMessage, ToolMessage } from 'langchain';
10
10
  import { AIMessageInput } from '../types';
11
11
  import { AIEmployee } from './ai-employee';
12
- export declare const convertAIMessage: ({ aiEmployee, providerName: provider, model, aiMessage, }: {
12
+ export declare const convertAIMessage: ({ aiEmployee, providerName: provider, llmService, model, aiMessage, }: {
13
13
  aiEmployee: AIEmployee;
14
14
  providerName: string;
15
+ llmService?: string;
15
16
  model: string;
16
17
  aiMessage: AIMessage;
17
18
  }) => AIMessageInput;
18
- export declare const convertHumanMessage: ({ providerName: provider, model, humanMessage, }: {
19
+ export declare const convertHumanMessage: ({ providerName: provider, llmService, model, humanMessage, }: {
19
20
  providerName: string;
21
+ llmService?: string;
20
22
  model: string;
21
23
  humanMessage: HumanMessage;
22
24
  }) => AIMessageInput;
23
- export declare const convertToolMessage: ({ providerName: provider, model, toolMessage, }: {
25
+ export declare const convertToolMessage: ({ providerName: provider, llmService, model, toolMessage, }: {
24
26
  providerName: string;
27
+ llmService?: string;
25
28
  model: string;
26
29
  toolMessage: ToolMessage;
27
30
  }) => AIMessageInput;
@@ -34,6 +34,7 @@ module.exports = __toCommonJS(utils_exports);
34
34
  const convertAIMessage = ({
35
35
  aiEmployee,
36
36
  providerName: provider,
37
+ llmService,
37
38
  model,
38
39
  aiMessage
39
40
  }) => {
@@ -71,6 +72,7 @@ const convertAIMessage = ({
71
72
  id: aiMessage.id,
72
73
  model,
73
74
  provider,
75
+ llmService,
74
76
  usage_metadata: {}
75
77
  },
76
78
  toolCalls: null
@@ -94,6 +96,7 @@ const convertAIMessage = ({
94
96
  };
95
97
  const convertHumanMessage = ({
96
98
  providerName: provider,
99
+ llmService,
97
100
  model,
98
101
  humanMessage
99
102
  }) => {
@@ -107,7 +110,8 @@ const convertHumanMessage = ({
107
110
  metadata: {
108
111
  id: humanMessage.id,
109
112
  model,
110
- provider
113
+ provider,
114
+ llmService
111
115
  }
112
116
  };
113
117
  values.attachments = humanMessage.additional_kwargs.attachments;
@@ -116,6 +120,7 @@ const convertHumanMessage = ({
116
120
  };
117
121
  const convertToolMessage = ({
118
122
  providerName: provider,
123
+ llmService,
119
124
  model,
120
125
  toolMessage
121
126
  }) => {
@@ -129,6 +134,7 @@ const convertToolMessage = ({
129
134
  id: toolMessage.id,
130
135
  model,
131
136
  provider,
137
+ llmService,
132
138
  toolCallId: toolMessage.tool_call_id,
133
139
  toolName: toolMessage.name
134
140
  }
@@ -6,7 +6,8 @@
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 { KnowledgeBaseGroup } from '../types';
9
+ import { KnowledgeBase, KnowledgeBaseGroup } from '../types';
10
10
  export interface KnowledgeBaseFeature {
11
- getKnowledgeBaseGroup(knowledgeBaseIds: string[]): Promise<KnowledgeBaseGroup[]>;
11
+ getKnowledgeBase(knowledgeBaseKeys: string[]): Promise<KnowledgeBase[]>;
12
+ getKnowledgeBaseGroup(knowledgeBaseKeys: string[]): Promise<KnowledgeBaseGroup[]>;
12
13
  }