@nocobase/plugin-ai 2.1.0-beta.14 → 2.1.0-beta.16

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 (313) hide show
  1. package/dist/ai/ai-employees/atlas/index.d.ts +10 -0
  2. package/dist/{server/ai-employees/built-in/ai-coding/prompt.js → ai/ai-employees/atlas/index.js} +29 -20
  3. package/dist/ai/ai-employees/atlas/prompt.md +84 -0
  4. package/dist/ai/ai-employees/dara.d.ts +10 -0
  5. package/dist/{server/ai-employees/built-in/data-visualization/prompt.js → ai/ai-employees/dara.js} +21 -13
  6. package/dist/ai/ai-employees/dex.d.ts +10 -0
  7. package/dist/{server/ai-employees/built-in/data-organizer/prompt.js → ai/ai-employees/dex.js} +15 -7
  8. package/dist/ai/ai-employees/ellis.d.ts +10 -0
  9. package/dist/{server/ai-employees/built-in/email-assistant/prompt.js → ai/ai-employees/ellis.js} +19 -11
  10. package/dist/ai/ai-employees/lexi.d.ts +10 -0
  11. package/dist/{server/ai-employees/built-in/translator/prompt.js → ai/ai-employees/lexi.js} +15 -7
  12. package/dist/ai/ai-employees/vera.d.ts +10 -0
  13. package/dist/{server/ai-employees/built-in/research-analyst/prompt.js → ai/ai-employees/vera.js} +16 -8
  14. package/dist/ai/ai-employees/viz.d.ts +10 -0
  15. package/dist/{server/ai-employees/built-in/insights-analyst/prompt.js → ai/ai-employees/viz.js} +15 -7
  16. package/dist/ai/skills/business-analysis-report/SKILLS.md +88 -0
  17. package/dist/{server/ai-employees/built-in/ai-coding/prompt.d.ts → ai/skills/business-analysis-report/tools/businessReportGenerator.d.ts} +1 -3
  18. package/dist/ai/skills/business-analysis-report/tools/businessReportGenerator.js +98 -0
  19. package/dist/ai/skills/document-search/SKILLS.md +69 -0
  20. package/dist/ai/tools/chartGenerator.js +15 -3
  21. package/dist/ai/tools/formFiller.js +13 -2
  22. package/dist/{server/ai-employees/built-in/data-modeling/prompt.d.ts → ai/tools/getSkill.d.ts} +1 -3
  23. package/dist/{server/ai-employees/built-in/data-modeling/index.js → ai/tools/getSkill.js} +39 -32
  24. package/dist/{server/ai-employees/built-in/data-organizer/prompt.d.ts → ai/tools/knowledge-base-retrieve.d.ts} +1 -3
  25. package/dist/ai/tools/knowledge-base-retrieve.js +94 -0
  26. package/dist/{server/ai-employees/built-in/data-visualization/prompt.d.ts → ai/tools/sub-agents/dispatch-sub-agent-task.d.ts} +1 -3
  27. package/dist/ai/tools/sub-agents/dispatch-sub-agent-task.js +108 -0
  28. package/dist/ai/tools/sub-agents/get-ai-employee.d.ts +10 -0
  29. package/dist/{server/ai-employees/built-in/translator/profile.js → ai/tools/sub-agents/get-ai-employee.js} +28 -21
  30. package/dist/ai/tools/sub-agents/list-ai-employees.d.ts +10 -0
  31. package/dist/{server/ai-employees/built-in/email-assistant/profile.js → ai/tools/sub-agents/list-ai-employees.js} +25 -21
  32. package/dist/ai/tools/sub-agents/shared.d.ts +33 -0
  33. package/dist/ai/tools/sub-agents/shared.js +169 -0
  34. package/dist/ai/tools/suggestions.js +15 -4
  35. package/dist/client/170.d98eacdc00d9d527.js +10 -0
  36. package/dist/client/228.b18148eb1009d2fb.js +10 -0
  37. package/dist/client/280.029428b83d62155f.js +10 -0
  38. package/dist/client/290.0888139e33c9b7cb.js +10 -0
  39. package/dist/client/{524.954f96ec4fc2fd7a.js → 331.d547c95410476a69.js} +1 -1
  40. package/dist/client/343.83f7d96664e4e038.js +10 -0
  41. package/dist/client/406.15c09d98faa2ccf1.js +10 -0
  42. package/dist/client/428.e9f38da3b0d8b498.js +10 -0
  43. package/dist/client/486.77c26e2e7f8daf28.js +10 -0
  44. package/dist/client/502.2b4a51e0a8122e52.js +10 -0
  45. package/dist/client/525.33a9c8ec28be4ec4.js +10 -0
  46. package/dist/client/559.133d286a0a0a1d93.js +10 -0
  47. package/dist/client/{91.90e7098b7fbd5d00.js → 561.776886c5308e3c26.js} +1 -1
  48. package/dist/client/580.e75f97fb883ad042.js +10 -0
  49. package/dist/client/597.aa363881a325b5c0.js +10 -0
  50. package/dist/client/604.de96f3ec4d471afd.js +10 -0
  51. package/dist/client/614.aa766080f6b99aab.js +10 -0
  52. package/dist/client/646.ef9d7c2ea8641044.js +10 -0
  53. package/dist/client/687.224e569a99cae4bb.js +10 -0
  54. package/dist/client/699.57c0a1acb723202a.js +10 -0
  55. package/dist/client/711.266b8f1c520d467a.js +10 -0
  56. package/dist/client/758.a9741e81911e53c3.js +10 -0
  57. package/dist/client/768.973ce32e15099a48.js +10 -0
  58. package/dist/client/792.ae8ad1fcae9fd974.js +10 -0
  59. package/dist/client/820.6a26239ea96c075a.js +10 -0
  60. package/dist/client/832.0cf69e3f43c320b2.js +10 -0
  61. package/dist/client/927.ff5cd05b14901ae6.js +10 -0
  62. package/dist/client/ai-employees/admin/SkillSettings.d.ts +7 -5
  63. package/dist/client/ai-employees/admin/ToolsSettings.d.ts +17 -0
  64. package/dist/client/ai-employees/admin/mcp/MCPSettings.d.ts +10 -0
  65. package/dist/client/ai-employees/admin/mcp/MCPToolsList.d.ts +19 -0
  66. package/dist/client/ai-employees/admin/mcp/context.d.ts +15 -0
  67. package/dist/client/ai-employees/admin/mcp/schemas.d.ts +1286 -0
  68. package/dist/client/ai-employees/built-in/utils.d.ts +1 -0
  69. package/dist/client/ai-employees/business-report/tools/index.d.ts +10 -0
  70. package/dist/client/ai-employees/business-report/ui/BusinessReportCard.d.ts +12 -0
  71. package/dist/client/ai-employees/business-report/ui/BusinessReportModal.d.ts +17 -0
  72. package/dist/client/ai-employees/business-report/ui/report-utils.d.ts +38 -0
  73. package/dist/client/ai-employees/chatbox/AIEmployeeSwitch.d.ts +3 -2
  74. package/dist/client/ai-employees/chatbox/HintMessageHeader.d.ts +10 -0
  75. package/dist/client/ai-employees/chatbox/ModelSwitcher.d.ts +3 -1
  76. package/dist/client/ai-employees/chatbox/SearchSwitch.d.ts +3 -1
  77. package/dist/client/ai-employees/chatbox/Upload.d.ts +3 -1
  78. package/dist/client/ai-employees/chatbox/conversations/ConversationsList.d.ts +27 -0
  79. package/dist/client/ai-employees/chatbox/conversations/WorkflowTasksList.d.ts +31 -0
  80. package/dist/client/ai-employees/chatbox/conversations/common.d.ts +43 -0
  81. package/dist/{server/document-loader/loader.worker.d.ts → client/ai-employees/chatbox/conversations/index.d.ts} +1 -1
  82. package/dist/client/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +5 -3
  83. package/dist/client/ai-employees/chatbox/hooks/useWorkflowTasks.d.ts +24 -0
  84. package/dist/client/ai-employees/chatbox/markdown/ECharts.d.ts +1 -2
  85. package/dist/client/ai-employees/chatbox/markdown/Markdown.d.ts +1 -1
  86. package/dist/client/ai-employees/chatbox/roles.d.ts +1 -0
  87. package/dist/client/ai-employees/chatbox/stores/chat-box.d.ts +8 -0
  88. package/dist/client/ai-employees/chatbox/stores/chat-conversations.d.ts +4 -0
  89. package/dist/client/ai-employees/chatbox/stores/chat-messages.d.ts +8 -0
  90. package/dist/client/ai-employees/chatbox/stores/workflow-tasks.d.ts +41 -0
  91. package/dist/client/ai-employees/chatbox/utils.d.ts +17 -7
  92. package/dist/client/ai-employees/sub-agents/tools/index.d.ts +10 -0
  93. package/dist/client/ai-employees/sub-agents/ui/SubAgentDispatchCard.d.ts +21 -0
  94. package/dist/client/ai-employees/types.d.ts +24 -4
  95. package/dist/{server/ai-employees/built-in/ai-coding/document/example/js-filter → client/ai-employees/workflow-tasks/tools}/index.d.ts +2 -7
  96. package/dist/client/ai-employees/workflow-tasks/ui/WorkflowTaskOutputCard.d.ts +11 -0
  97. package/dist/client/components/ListCollapse.d.ts +28 -0
  98. package/dist/client/index.js +7 -7
  99. package/dist/client/manager/ai-manager.d.ts +4 -23
  100. package/dist/client/repositories/AIConfigRepository.d.ts +11 -3
  101. package/dist/client/workflow/nodes/employee/components/AIEmployeeSelect.d.ts +10 -0
  102. package/dist/client/workflow/nodes/employee/components/assigness.d.ts +11 -0
  103. package/dist/client/workflow/nodes/employee/components/file-inputs.d.ts +10 -0
  104. package/dist/client/workflow/nodes/employee/components/message-inputs.d.ts +12 -0
  105. package/dist/client/workflow/nodes/employee/components/model-options.d.ts +10 -0
  106. package/dist/client/workflow/nodes/employee/components/skill-settings.d.ts +10 -0
  107. package/dist/client/workflow/nodes/employee/components/structured-output.d.ts +10 -0
  108. package/dist/client/workflow/nodes/employee/components/users-select.d.ts +15 -0
  109. package/dist/client/workflow/nodes/employee/components/web-search-options.d.ts +10 -0
  110. package/dist/client/workflow/nodes/employee/configuration.d.ts +12 -0
  111. package/dist/client/workflow/nodes/employee/flow-models/feedback.d.ts +13 -0
  112. package/dist/client/workflow/nodes/employee/flow-models/task.d.ts +13 -0
  113. package/dist/client/workflow/nodes/employee/index.d.ts +7 -31
  114. package/dist/collections/ai-employees.js +2 -1
  115. package/dist/collections/ai-mcp-clients.d.ts +51 -0
  116. package/dist/collections/ai-mcp-clients.js +111 -0
  117. package/dist/externalVersion.js +17 -16
  118. package/dist/locale/en-US.json +136 -8
  119. package/dist/locale/zh-CN.json +138 -9
  120. package/dist/node_modules/fast-glob/out/index.js +8 -8
  121. package/dist/node_modules/fast-glob/package.json +1 -1
  122. package/dist/node_modules/flexsearch/dist/flexsearch.bundle.min.js +2 -2
  123. package/dist/node_modules/flexsearch/package.json +1 -1
  124. package/dist/node_modules/fs-extra/lib/index.js +1 -1
  125. package/dist/node_modules/fs-extra/package.json +1 -1
  126. package/dist/node_modules/nodejs-snowflake/nodejs_snowflake.js +1 -1
  127. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  128. package/dist/node_modules/openai/index.js +1 -1
  129. package/dist/node_modules/openai/package.json +1 -1
  130. package/dist/node_modules/zod/index.cjs +1 -1
  131. package/dist/node_modules/zod/package.json +1 -1
  132. package/dist/server/ai-employees/ai-conversations.d.ts +70 -0
  133. package/dist/server/ai-employees/ai-conversations.js +325 -0
  134. package/dist/server/ai-employees/ai-employee.d.ts +100 -19
  135. package/dist/server/ai-employees/ai-employee.js +484 -261
  136. package/dist/server/ai-employees/ai-knowledge-base.d.ts +28 -0
  137. package/dist/server/ai-employees/ai-knowledge-base.js +167 -0
  138. package/dist/server/ai-employees/middleware/conversation.d.ts +2 -0
  139. package/dist/server/ai-employees/middleware/conversation.js +38 -5
  140. package/dist/server/ai-employees/middleware/index.d.ts +2 -0
  141. package/dist/server/ai-employees/middleware/index.js +5 -1
  142. package/dist/server/ai-employees/middleware/skill-tools.d.ts +12 -0
  143. package/dist/server/ai-employees/middleware/skill-tools.js +88 -0
  144. package/dist/server/ai-employees/middleware/tools.js +37 -10
  145. package/dist/server/ai-employees/middleware/workflow-history.d.ts +22 -0
  146. package/dist/server/ai-employees/middleware/workflow-history.js +173 -0
  147. package/dist/server/ai-employees/prompts.d.ts +16 -1
  148. package/dist/server/ai-employees/prompts.js +37 -1
  149. package/dist/server/ai-employees/sub-agents/dispatcher.d.ts +36 -0
  150. package/dist/server/ai-employees/sub-agents/dispatcher.js +225 -0
  151. package/dist/server/ai-employees/sub-agents/index.d.ts +9 -0
  152. package/dist/server/{migrations/20250923221107-setup-build-in.js → ai-employees/sub-agents/index.js} +9 -13
  153. package/dist/server/ai-employees/templates/form-assistant.d.ts +2 -2
  154. package/dist/server/ai-employees/templates/form-assistant.js +2 -2
  155. package/dist/server/ai-employees/utils.js +2 -2
  156. package/dist/server/collections/ai-conversations.js +18 -0
  157. package/dist/server/{ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_contacts_en.d.ts → collections/ai-mcp-clients.d.ts} +1 -4
  158. package/dist/server/{ai-employees/built-in/nocobase-assistant/index.js → collections/ai-mcp-clients.js} +12 -13
  159. package/dist/server/{ai-employees/built-in/ai-coding/document/basic/flow-resource.d.ts → collections/ai-skills.d.ts} +1 -4
  160. package/dist/server/collections/ai-skills.js +73 -0
  161. package/dist/server/{ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_opportunities_en.d.ts → collections/ai-workflow-tasks.d.ts} +1 -4
  162. package/dist/server/collections/ai-workflow-tasks.js +112 -0
  163. package/dist/server/{ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_accounts_en.d.ts → collections/users-ai-workflow-tasks.d.ts} +1 -4
  164. package/dist/server/collections/users-ai-workflow-tasks.js +44 -0
  165. package/dist/server/document-loader/constants.d.ts +1 -2
  166. package/dist/server/document-loader/constants.js +6 -1
  167. package/dist/server/document-loader/loader.d.ts +0 -1
  168. package/dist/server/document-loader/loader.js +2 -55
  169. package/dist/server/document-loader/types.d.ts +0 -1
  170. package/dist/server/llm-providers/anthropic.d.ts +1 -0
  171. package/dist/server/llm-providers/anthropic.js +2 -1
  172. package/dist/server/llm-providers/dashscope.d.ts +1 -0
  173. package/dist/server/llm-providers/deepseek.d.ts +1 -0
  174. package/dist/server/llm-providers/google-genai.d.ts +1 -0
  175. package/dist/server/llm-providers/google-genai.js +2 -1
  176. package/dist/server/llm-providers/kimi/provider.d.ts +1 -0
  177. package/dist/server/llm-providers/openai/responses.d.ts +1 -0
  178. package/dist/server/llm-providers/openai/responses.js +2 -1
  179. package/dist/server/llm-providers/provider.d.ts +1 -10
  180. package/dist/server/llm-providers/provider.js +4 -35
  181. package/dist/server/manager/ai-coding-manager.d.ts +1 -2
  182. package/dist/server/manager/ai-coding-manager.js +0 -41
  183. package/dist/server/manager/ai-context-datasource-manager.js +30 -1
  184. package/dist/server/manager/built-in-manager.d.ts +2 -4
  185. package/dist/server/manager/built-in-manager.js +8 -118
  186. package/dist/server/migrations/20260306000001-migrate-skill-settings-tools.js +68 -0
  187. package/dist/server/migrations/20260319000000-add-ai-conversations-from.d.ts +14 -0
  188. package/dist/server/migrations/20260319000000-add-ai-conversations-from.js +63 -0
  189. package/dist/server/migrations/20260424000000-remove-cole-ai-employee.d.ts +14 -0
  190. package/dist/server/{ai-employees/built-in/email-assistant/index.js → migrations/20260424000000-remove-cole-ai-employee.js} +20 -22
  191. package/dist/server/plugin.d.ts +6 -1
  192. package/dist/server/plugin.js +31 -8
  193. package/dist/server/resource/aiConversations.js +112 -188
  194. package/dist/server/resource/aiEmployees.js +5 -7
  195. package/dist/server/resource/aiMcpClients.d.ts +11 -0
  196. package/dist/server/resource/aiMcpClients.js +78 -0
  197. package/dist/server/{ai-employees/built-in/ai-coding/document/example/js-column/index.d.ts → resource/aiSkills.d.ts} +3 -7
  198. package/dist/server/resource/aiSkills.js +71 -0
  199. package/dist/server/resource/aiTools.js +4 -6
  200. package/dist/server/resource/aiWorkflowTasks.d.ts +12 -0
  201. package/dist/server/resource/aiWorkflowTasks.js +290 -0
  202. package/dist/server/tools/docs.js +4 -3
  203. package/dist/server/tools/workflow-caller.js +1 -0
  204. package/dist/server/types/ai-chat-conversation.type.d.ts +8 -2
  205. package/dist/server/types/ai-message.type.d.ts +7 -0
  206. package/dist/server/utils.d.ts +3 -0
  207. package/dist/server/utils.js +28 -3
  208. package/dist/server/workflow/nodes/employee/files.d.ts +16 -0
  209. package/dist/server/workflow/nodes/employee/files.js +125 -0
  210. package/dist/server/workflow/nodes/employee/handler.d.ts +11 -0
  211. package/dist/server/workflow/nodes/employee/handler.js +107 -0
  212. package/dist/server/workflow/nodes/employee/index.d.ts +17 -0
  213. package/dist/server/workflow/nodes/employee/index.js +391 -0
  214. package/dist/server/workflow/nodes/employee/tools.d.ts +12 -0
  215. package/dist/server/workflow/nodes/employee/tools.js +133 -0
  216. package/dist/server/workflow/nodes/employee/types.d.ts +35 -0
  217. package/dist/server/workflow/nodes/employee/types.js +24 -0
  218. package/dist/server/workflow/utils.d.ts +14 -0
  219. package/dist/server/workflow/utils.js +111 -0
  220. package/package.json +4 -2
  221. package/dist/client/107.64d9efa24d6b9143.js +0 -10
  222. package/dist/client/124.768c8aa5d6e6b461.js +0 -10
  223. package/dist/client/159.d52107c7a34ce2da.js +0 -10
  224. package/dist/client/192.0419770b69678994.js +0 -10
  225. package/dist/client/204.91be8cfc54d91a59.js +0 -10
  226. package/dist/client/238.9f784a7cdb751999.js +0 -10
  227. package/dist/client/263.6e1dfb1cbb1964f5.js +0 -10
  228. package/dist/client/35.5ee7503d9c09daa8.js +0 -10
  229. package/dist/client/47.6bd245f2140efd24.js +0 -10
  230. package/dist/client/481.03b3d2306d409933.js +0 -10
  231. package/dist/client/586.6a1510cabaa84f23.js +0 -10
  232. package/dist/client/650.8871a07b31c307ea.js +0 -10
  233. package/dist/client/755.e295bbd2b2a1cc21.js +0 -10
  234. package/dist/client/772.d51f683c55e18dd4.js +0 -10
  235. package/dist/client/870.84187dcb8c89b4dc.js +0 -10
  236. package/dist/client/933.baab3aa75f30e020.js +0 -10
  237. package/dist/client/987.3aee964e7f406939.js +0 -10
  238. package/dist/server/ai-employees/built-in/ai-coding/document/basic/flow-resource.js +0 -256
  239. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/index.js +0 -48
  240. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_accounts_en.js +0 -452
  241. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_contacts_en.js +0 -363
  242. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_opportunities_en.js +0 -270
  243. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_quotations_en.d.ts +0 -13
  244. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_quotations_en.js +0 -219
  245. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_tickets_en.d.ts +0 -13
  246. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_tickets_en.js +0 -409
  247. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/accounts_filter_ant_style.d.ts +0 -13
  248. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/accounts_filter_ant_style.js +0 -324
  249. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/contacts_filter_ant_style.d.ts +0 -13
  250. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/contacts_filter_ant_style.js +0 -309
  251. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/index.js +0 -50
  252. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/leads_filter_ant_style.d.ts +0 -13
  253. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/leads_filter_ant_style.js +0 -345
  254. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/opportunities_filter_ant_style.d.ts +0 -13
  255. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/opportunities_filter_ant_style.js +0 -381
  256. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/product_categories_ant_style.d.ts +0 -13
  257. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/product_categories_ant_style.js +0 -545
  258. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/tickets_filter_ant_style.d.ts +0 -13
  259. package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/tickets_filter_ant_style.js +0 -346
  260. package/dist/server/ai-employees/built-in/ai-coding/document/js-action.d.ts +0 -13
  261. package/dist/server/ai-employees/built-in/ai-coding/document/js-action.js +0 -102
  262. package/dist/server/ai-employees/built-in/ai-coding/document/js-block.d.ts +0 -13
  263. package/dist/server/ai-employees/built-in/ai-coding/document/js-block.js +0 -314
  264. package/dist/server/ai-employees/built-in/ai-coding/document/js-column.d.ts +0 -13
  265. package/dist/server/ai-employees/built-in/ai-coding/document/js-column.js +0 -113
  266. package/dist/server/ai-employees/built-in/ai-coding/document/js-field.d.ts +0 -13
  267. package/dist/server/ai-employees/built-in/ai-coding/document/js-field.js +0 -498
  268. package/dist/server/ai-employees/built-in/ai-coding/document/js-item.d.ts +0 -13
  269. package/dist/server/ai-employees/built-in/ai-coding/document/js-item.js +0 -184
  270. package/dist/server/ai-employees/built-in/ai-coding/index.d.ts +0 -37
  271. package/dist/server/ai-employees/built-in/ai-coding/index.js +0 -99
  272. package/dist/server/ai-employees/built-in/ai-coding/profile.d.ts +0 -27
  273. package/dist/server/ai-employees/built-in/ai-coding/profile.js +0 -60
  274. package/dist/server/ai-employees/built-in/ai-coding/prompt_en.md +0 -110
  275. package/dist/server/ai-employees/built-in/data-modeling/index.d.ts +0 -37
  276. package/dist/server/ai-employees/built-in/data-modeling/profile.d.ts +0 -27
  277. package/dist/server/ai-employees/built-in/data-modeling/profile.js +0 -60
  278. package/dist/server/ai-employees/built-in/data-modeling/prompt.js +0 -283
  279. package/dist/server/ai-employees/built-in/data-organizer/index.d.ts +0 -37
  280. package/dist/server/ai-employees/built-in/data-organizer/index.js +0 -63
  281. package/dist/server/ai-employees/built-in/data-organizer/profile.d.ts +0 -27
  282. package/dist/server/ai-employees/built-in/data-organizer/profile.js +0 -60
  283. package/dist/server/ai-employees/built-in/data-visualization/index.d.ts +0 -37
  284. package/dist/server/ai-employees/built-in/data-visualization/index.js +0 -58
  285. package/dist/server/ai-employees/built-in/data-visualization/profile.d.ts +0 -27
  286. package/dist/server/ai-employees/built-in/data-visualization/profile.js +0 -60
  287. package/dist/server/ai-employees/built-in/email-assistant/index.d.ts +0 -34
  288. package/dist/server/ai-employees/built-in/email-assistant/profile.d.ts +0 -27
  289. package/dist/server/ai-employees/built-in/email-assistant/prompt.d.ts +0 -12
  290. package/dist/server/ai-employees/built-in/insights-analyst/index.d.ts +0 -37
  291. package/dist/server/ai-employees/built-in/insights-analyst/index.js +0 -63
  292. package/dist/server/ai-employees/built-in/insights-analyst/profile.d.ts +0 -27
  293. package/dist/server/ai-employees/built-in/insights-analyst/profile.js +0 -60
  294. package/dist/server/ai-employees/built-in/insights-analyst/prompt.d.ts +0 -12
  295. package/dist/server/ai-employees/built-in/nocobase-assistant/index.d.ts +0 -34
  296. package/dist/server/ai-employees/built-in/nocobase-assistant/profile.d.ts +0 -27
  297. package/dist/server/ai-employees/built-in/nocobase-assistant/profile.js +0 -60
  298. package/dist/server/ai-employees/built-in/nocobase-assistant/prompt.d.ts +0 -12
  299. package/dist/server/ai-employees/built-in/nocobase-assistant/prompt.js +0 -52
  300. package/dist/server/ai-employees/built-in/research-analyst/index.d.ts +0 -37
  301. package/dist/server/ai-employees/built-in/research-analyst/index.js +0 -63
  302. package/dist/server/ai-employees/built-in/research-analyst/profile.d.ts +0 -27
  303. package/dist/server/ai-employees/built-in/research-analyst/profile.js +0 -60
  304. package/dist/server/ai-employees/built-in/research-analyst/prompt.d.ts +0 -12
  305. package/dist/server/ai-employees/built-in/translator/index.d.ts +0 -37
  306. package/dist/server/ai-employees/built-in/translator/index.js +0 -67
  307. package/dist/server/ai-employees/built-in/translator/profile.d.ts +0 -27
  308. package/dist/server/ai-employees/built-in/translator/prompt.d.ts +0 -12
  309. package/dist/server/document-loader/loader.worker.js +0 -68
  310. package/dist/server/document-loader/vendor/langchain/document_loaders/fs/text.d.ts +0 -20
  311. package/dist/server/document-loader/vendor/langchain/document_loaders/fs/text.js +0 -96
  312. /package/dist/client/ai-employees/chatbox/{Conversations.d.ts → conversations/Conversations.d.ts} +0 -0
  313. /package/dist/server/migrations/{20250923221107-setup-build-in.d.ts → 20260306000001-migrate-skill-settings-tools.d.ts} +0 -0
@@ -0,0 +1,28 @@
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
+ import { AIEmployee } from '../../collections/ai-employees';
10
+ import { DocumentSegmentedWithScore } from '../features';
11
+ import type PluginAIServer from '../plugin';
12
+ export type KnowledgeBaseRetrieveOptions = {
13
+ username?: string;
14
+ employee?: AIEmployee;
15
+ query: string;
16
+ };
17
+ export declare class KnowledgeBaseManager {
18
+ private readonly plugin;
19
+ constructor(plugin: PluginAIServer);
20
+ retrievePrompt({ username, employee, query }: KnowledgeBaseRetrieveOptions): Promise<string>;
21
+ retrieve({ username, employee, query }: KnowledgeBaseRetrieveOptions): Promise<DocumentSegmentedWithScore[]>;
22
+ isEnabledKnowledgeBase(username: string): Promise<boolean>;
23
+ isEnabledKnowledgeBase(employee: AIEmployee): Promise<boolean>;
24
+ private getAIEmployeeKnowledgeBaseConfig;
25
+ private getKnowledgeBaseGroup;
26
+ private getEmployee;
27
+ private get aiEmployeeRepo();
28
+ }
@@ -0,0 +1,167 @@
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 __create = Object.create;
11
+ var __defProp = Object.defineProperty;
12
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
+ var __getOwnPropNames = Object.getOwnPropertyNames;
14
+ var __getProtoOf = Object.getPrototypeOf;
15
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
16
+ var __export = (target, all) => {
17
+ for (var name in all)
18
+ __defProp(target, name, { get: all[name], enumerable: true });
19
+ };
20
+ var __copyProps = (to, from, except, desc) => {
21
+ if (from && typeof from === "object" || typeof from === "function") {
22
+ for (let key of __getOwnPropNames(from))
23
+ if (!__hasOwnProp.call(to, key) && key !== except)
24
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
25
+ }
26
+ return to;
27
+ };
28
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
29
+ // If the importer is in node compatibility mode or this is not an ESM
30
+ // file that has been converted to a CommonJS file using a Babel-
31
+ // compatible transform (i.e. "__esModule" has not been set), then set
32
+ // "default" to the CommonJS "module.exports" for node compatibility.
33
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
+ mod
35
+ ));
36
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
+ var ai_knowledge_base_exports = {};
38
+ __export(ai_knowledge_base_exports, {
39
+ KnowledgeBaseManager: () => KnowledgeBaseManager
40
+ });
41
+ module.exports = __toCommonJS(ai_knowledge_base_exports);
42
+ var import_prompts = require("@langchain/core/prompts");
43
+ var import_ai_feature_manager = require("../manager/ai-feature-manager");
44
+ var import_lodash = __toESM(require("lodash"));
45
+ class KnowledgeBaseManager {
46
+ constructor(plugin) {
47
+ this.plugin = plugin;
48
+ }
49
+ async retrievePrompt({ username, employee, query }) {
50
+ employee = employee ?? await this.getEmployee(username);
51
+ if (!employee) {
52
+ return "Specified knowledge base not existed";
53
+ }
54
+ const promptTemplate = import_prompts.ChatPromptTemplate.fromTemplate(employee.knowledgeBasePrompt);
55
+ const docs = await this.retrieve({
56
+ employee,
57
+ query
58
+ });
59
+ if (!(docs == null ? void 0 : docs.length)) {
60
+ return "No document match in knowledge base";
61
+ }
62
+ const knowledgeBaseData = docs.map((x) => x.content).join("\n");
63
+ return import_lodash.default.isEmpty(knowledgeBaseData) ? void 0 : await promptTemplate.format({
64
+ knowledgeBaseData
65
+ });
66
+ }
67
+ async retrieve({ username, employee, query }) {
68
+ const vectorStoreProvider = this.plugin.features.vectorStoreProvider;
69
+ let queryResult = [];
70
+ if (!query || import_lodash.default.isEmpty(query)) {
71
+ return queryResult;
72
+ }
73
+ employee = employee ?? await this.getEmployee(username);
74
+ if (!employee) {
75
+ return queryResult;
76
+ }
77
+ const { topK, score } = this.getAIEmployeeKnowledgeBaseConfig(employee);
78
+ const knowledgeBaseGroup = await this.getKnowledgeBaseGroup(employee);
79
+ for (const entry of knowledgeBaseGroup) {
80
+ const { vectorStoreConfig, knowledgeBaseType, knowledgeBaseList } = entry;
81
+ if (!knowledgeBaseList || import_lodash.default.isEmpty(knowledgeBaseList)) {
82
+ continue;
83
+ }
84
+ if (knowledgeBaseType === "LOCAL") {
85
+ const vectorStoreService = await vectorStoreProvider.createVectorStoreService(
86
+ vectorStoreConfig.vectorStoreProvider,
87
+ [
88
+ {
89
+ key: "vectorStoreConfigId",
90
+ value: vectorStoreConfig.vectorStoreConfigId
91
+ }
92
+ ]
93
+ );
94
+ const knowledgeBaseOuterIds = knowledgeBaseList.map((x) => x.knowledgeBaseOuterId);
95
+ const result = await vectorStoreService.search(query, {
96
+ topK,
97
+ score,
98
+ filter: {
99
+ knowledgeBaseOuterId: { in: knowledgeBaseOuterIds }
100
+ }
101
+ });
102
+ queryResult = [...queryResult, ...result];
103
+ } else if (knowledgeBaseType === "READONLY") {
104
+ for (const knowledgeBase of knowledgeBaseList) {
105
+ const vectorStoreService = await vectorStoreProvider.createVectorStoreService(
106
+ vectorStoreConfig.vectorStoreProvider,
107
+ [
108
+ ...knowledgeBase.vectorStoreProps,
109
+ {
110
+ key: "vectorStoreConfigId",
111
+ value: vectorStoreConfig.vectorStoreConfigId
112
+ }
113
+ ]
114
+ );
115
+ const result = await vectorStoreService.search(query, {
116
+ topK,
117
+ score
118
+ });
119
+ queryResult = [...queryResult, ...result];
120
+ }
121
+ } else if (knowledgeBaseType === "EXTERNAL") {
122
+ for (const knowledgeBase of knowledgeBaseList) {
123
+ const vectorStoreService = await vectorStoreProvider.createVectorStoreService(
124
+ vectorStoreConfig.vectorStoreProvider,
125
+ knowledgeBase.vectorStoreProps
126
+ );
127
+ const result = await vectorStoreService.search(query, {
128
+ topK,
129
+ score
130
+ });
131
+ queryResult = [...queryResult, ...result];
132
+ }
133
+ }
134
+ }
135
+ return queryResult;
136
+ }
137
+ async isEnabledKnowledgeBase(usernameOrEmployee) {
138
+ const featureEnabled = this.plugin.features.isFeaturesEnabled(Object.values(import_ai_feature_manager.EEFeatures));
139
+ const employee = typeof usernameOrEmployee === "string" ? await this.getEmployee(usernameOrEmployee) : usernameOrEmployee;
140
+ const knowledgeBaseEnabled = employee == null ? void 0 : employee.enableKnowledgeBase;
141
+ return featureEnabled && knowledgeBaseEnabled;
142
+ }
143
+ getAIEmployeeKnowledgeBaseConfig(employee) {
144
+ const { topK, score } = (employee == null ? void 0 : employee.knowledgeBase) ?? {};
145
+ return {
146
+ topK,
147
+ score
148
+ };
149
+ }
150
+ async getKnowledgeBaseGroup(employee) {
151
+ const { knowledgeBaseIds } = (employee == null ? void 0 : employee.knowledgeBase) ?? {};
152
+ if (!knowledgeBaseIds || import_lodash.default.isEmpty(knowledgeBaseIds)) {
153
+ return [];
154
+ }
155
+ return await this.plugin.features.knowledgeBase.getKnowledgeBaseGroup(knowledgeBaseIds);
156
+ }
157
+ async getEmployee(username) {
158
+ return await this.aiEmployeeRepo.findOne({ filter: { username } });
159
+ }
160
+ get aiEmployeeRepo() {
161
+ return this.plugin.db.getRepository("aiEmployees");
162
+ }
163
+ }
164
+ // Annotate the CommonJS export names for ESM import in node:
165
+ 0 && (module.exports = {
166
+ KnowledgeBaseManager
167
+ });
@@ -26,6 +26,8 @@ export declare const conversationMiddleware: (aiEmployee: AIEmployee, options: {
26
26
  }, z.core.$strip>>;
27
27
  }, z.core.$strip>, z.ZodObject<{
28
28
  ctx: z.ZodAny;
29
+ appendMessage: z.ZodAny;
29
30
  }, z.core.$strip>, {
30
31
  ctx: any;
32
+ appendMessage: any;
31
33
  }, readonly (import("@langchain/core/dist/tools").ClientTool | import("@langchain/core/dist/tools").ServerTool)[]>;
@@ -77,7 +77,8 @@ const conversationMiddleware = (aiEmployee, options) => {
77
77
  return (0, import_langchain.createMiddleware)({
78
78
  name: "ConversationMiddleware",
79
79
  contextSchema: import_zod.default.object({
80
- ctx: import_zod.default.any()
80
+ ctx: import_zod.default.any(),
81
+ appendMessage: import_zod.default.any()
81
82
  }),
82
83
  stateSchema: import_zod.default.object({
83
84
  messageId: import_zod.default.coerce.string().optional(),
@@ -125,13 +126,28 @@ const conversationMiddleware = (aiEmployee, options) => {
125
126
  toolMessages.map((x) => x.metadata.toolCallId)
126
127
  );
127
128
  });
128
- (_a = runtime.writer) == null ? void 0 : _a.call(runtime, { action: "beforeSendToolMessage", body: { messageId: messageId2, messages: toolMessages } });
129
+ const currentConversation = {
130
+ sessionId: aiEmployee.sessionId,
131
+ username: aiEmployee.employee.username,
132
+ from: aiEmployee.from
133
+ };
134
+ (_a = runtime.writer) == null ? void 0 : _a.call(runtime, {
135
+ action: "beforeSendToolMessage",
136
+ body: { messageId: messageId2, messages: toolMessages },
137
+ currentConversation
138
+ });
129
139
  }
130
140
  },
131
141
  afterModel: async (state, runtime) => {
132
142
  var _a, _b, _c, _d, _e, _f;
133
143
  try {
144
+ const currentConversation = {
145
+ sessionId: aiEmployee.sessionId,
146
+ username: aiEmployee.employee.username,
147
+ from: aiEmployee.from
148
+ };
134
149
  const newState = {
150
+ messageId: state.messageId,
135
151
  lastMessageIndex: {
136
152
  lastHumanMessageIndex: state.messages.filter((x) => x.type === "human").length,
137
153
  lastAIMessageIndex: state.messages.filter((x) => x.type === "ai").length,
@@ -153,7 +169,7 @@ const conversationMiddleware = (aiEmployee, options) => {
153
169
  if (values) {
154
170
  await aiEmployee.aiChatConversation.withTransaction(async (conversation, transaction) => {
155
171
  const result = await conversation.addMessages(values);
156
- state.messageId = result.messageId;
172
+ newState.messageId = result.messageId;
157
173
  if (toolCalls == null ? void 0 : toolCalls.length) {
158
174
  const toolsMap = await aiEmployee.getToolsMap();
159
175
  const initializedToolCalls = await aiEmployee.initToolCall(
@@ -166,19 +182,36 @@ const conversationMiddleware = (aiEmployee, options) => {
166
182
  });
167
183
  (_b = runtime.writer) == null ? void 0 : _b.call(runtime, {
168
184
  action: "AfterAIMessageSaved",
169
- body: { id: aiMessage.id, messageId: state.messageId }
185
+ body: { id: aiMessage.id, messageId: newState.messageId },
186
+ currentConversation
170
187
  });
171
188
  }
172
189
  if (toolCalls == null ? void 0 : toolCalls.length) {
173
190
  (_c = runtime.writer) == null ? void 0 : _c.call(runtime, {
174
191
  action: "initToolCalls",
175
- body: { toolCalls }
192
+ body: { toolCalls },
193
+ currentConversation
176
194
  });
177
195
  }
178
196
  return newState;
179
197
  } catch (e) {
180
198
  (_f = (_e = (_d = runtime.context) == null ? void 0 : _d.ctx) == null ? void 0 : _e.logger) == null ? void 0 : _f.error(e);
181
199
  }
200
+ },
201
+ wrapModelCall: async (request, handler) => {
202
+ const runtimeContext = request.runtime.context;
203
+ const appendMessage = runtimeContext == null ? void 0 : runtimeContext.appendMessage;
204
+ if (Array.isArray(appendMessage) && appendMessage.length) {
205
+ await aiEmployee.aiChatConversation.withTransaction(async (conversation) => {
206
+ await conversation.addMessages(convertToolMessage(request.messages.at(-1)));
207
+ await conversation.addMessages(appendMessage.map((x) => x).map(convertHumanMessage));
208
+ });
209
+ request.messages.push(...appendMessage);
210
+ if (runtimeContext) {
211
+ delete runtimeContext.appendMessage;
212
+ }
213
+ }
214
+ return handler(request);
182
215
  }
183
216
  });
184
217
  };
@@ -7,4 +7,6 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  export * from './conversation';
10
+ export * from './skill-tools';
10
11
  export * from './tools';
12
+ export * from './workflow-history';
@@ -24,9 +24,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
24
24
  var middleware_exports = {};
25
25
  module.exports = __toCommonJS(middleware_exports);
26
26
  __reExport(middleware_exports, require("./conversation"), module.exports);
27
+ __reExport(middleware_exports, require("./skill-tools"), module.exports);
27
28
  __reExport(middleware_exports, require("./tools"), module.exports);
29
+ __reExport(middleware_exports, require("./workflow-history"), module.exports);
28
30
  // Annotate the CommonJS export names for ESM import in node:
29
31
  0 && (module.exports = {
30
32
  ...require("./conversation"),
31
- ...require("./tools")
33
+ ...require("./skill-tools"),
34
+ ...require("./tools"),
35
+ ...require("./workflow-history")
32
36
  });
@@ -0,0 +1,12 @@
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
+ import { AIEmployee } from '../ai-employee';
10
+ export declare const skillToolBindingMiddleware: (aiEmployee: AIEmployee, options: {
11
+ baseToolNames: string[];
12
+ }) => import("langchain/dist/agents/middleware/types.cjs").AgentMiddleware<undefined, undefined, unknown, readonly (import("@langchain/core/dist/tools").ClientTool | import("@langchain/core/dist/tools").ServerTool)[]>;
@@ -0,0 +1,88 @@
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 skill_tools_exports = {};
28
+ __export(skill_tools_exports, {
29
+ skillToolBindingMiddleware: () => skillToolBindingMiddleware
30
+ });
31
+ module.exports = __toCommonJS(skill_tools_exports);
32
+ var import_langchain = require("langchain");
33
+ const skillToolBindingMiddleware = (aiEmployee, options) => {
34
+ const baseToolNames = new Set(options.baseToolNames ?? []);
35
+ const getAllowedToolNames = async () => {
36
+ const activatedSkillToolNames = await aiEmployee.getActivatedSkillToolNames();
37
+ return /* @__PURE__ */ new Set([...baseToolNames, ...activatedSkillToolNames]);
38
+ };
39
+ const getToolName = (tool) => {
40
+ var _a;
41
+ if (!tool || typeof tool !== "object") {
42
+ return null;
43
+ }
44
+ if (typeof tool.name === "string") {
45
+ return tool.name;
46
+ }
47
+ if (typeof ((_a = tool.function) == null ? void 0 : _a.name) === "string") {
48
+ return tool.function.name;
49
+ }
50
+ return null;
51
+ };
52
+ const filterRequestTools = async (tools = []) => {
53
+ const allowedToolNames = await getAllowedToolNames();
54
+ return tools.filter((tool) => {
55
+ const name = getToolName(tool);
56
+ if (name == null) {
57
+ return true;
58
+ }
59
+ return name && allowedToolNames.has(name);
60
+ });
61
+ };
62
+ return (0, import_langchain.createMiddleware)({
63
+ name: "SkillToolBindingMiddleware",
64
+ wrapModelCall: async (request, handler) => {
65
+ const tools = await filterRequestTools(request.tools ?? []);
66
+ return handler({
67
+ ...request,
68
+ tools
69
+ });
70
+ },
71
+ wrapToolCall: async (request, handler) => {
72
+ const allowedToolNames = await getAllowedToolNames();
73
+ if (!allowedToolNames.has(request.toolCall.name)) {
74
+ return new import_langchain.ToolMessage({
75
+ tool_call_id: request.toolCall.id,
76
+ name: request.toolCall.name,
77
+ status: "error",
78
+ content: "Tool unavailable."
79
+ });
80
+ }
81
+ return handler(request);
82
+ }
83
+ });
84
+ };
85
+ // Annotate the CommonJS export names for ESM import in node:
86
+ 0 && (module.exports = {
87
+ skillToolBindingMiddleware
88
+ });
@@ -46,7 +46,16 @@ var import_lodash = __toESM(require("lodash"));
46
46
  const toolInteractionMiddleware = (aiEmployee, tools) => {
47
47
  const interruptOn = {};
48
48
  for (const tool of tools) {
49
- interruptOn[tool.definition.name] = aiEmployee.shouldInterruptToolCall(tool);
49
+ interruptOn[tool.definition.name] = aiEmployee.shouldInterruptToolCall(tool) ? {
50
+ allowedDecisions: ["approve", "reject", "edit"],
51
+ description: (toolCall) => JSON.stringify({
52
+ sessionId: aiEmployee.sessionId,
53
+ from: aiEmployee.from,
54
+ username: aiEmployee.employee.username,
55
+ toolCallId: toolCall.id,
56
+ toolCallName: toolCall.name
57
+ })
58
+ } : false;
50
59
  }
51
60
  return (0, import_langchain.humanInTheLoopMiddleware)({
52
61
  interruptOn
@@ -60,13 +69,23 @@ const toolCallStatusMiddleware = (aiEmployee) => {
60
69
  }),
61
70
  wrapToolCall: async (request, handler) => {
62
71
  var _a, _b, _c, _d;
72
+ let interrupted = false;
63
73
  const { runtime, toolCall } = request;
64
74
  const { messageId } = request.state;
75
+ const currentConversation = {
76
+ sessionId: aiEmployee.sessionId,
77
+ username: aiEmployee.employee.username,
78
+ from: aiEmployee.from
79
+ };
65
80
  const tm = await aiEmployee.getToolCallResult(messageId, request.toolCall.id);
81
+ if (!tm) {
82
+ throw new Error(`Tool call result not found for messageId=${messageId}, toolCallId=${request.toolCall.id}`);
83
+ }
66
84
  if (tm.status === "error") {
67
85
  (_a = runtime.writer) == null ? void 0 : _a.call(runtime, {
68
86
  action: "afterToolCall",
69
- body: { toolCall, toolCallResult: tm }
87
+ body: { toolCall, toolCallResult: tm },
88
+ currentConversation
70
89
  });
71
90
  return new import_langchain.ToolMessage({
72
91
  tool_call_id: request.toolCall.id,
@@ -78,7 +97,7 @@ const toolCallStatusMiddleware = (aiEmployee) => {
78
97
  });
79
98
  }
80
99
  await aiEmployee.updateToolCallPending(messageId, request.toolCall.id);
81
- (_b = runtime.writer) == null ? void 0 : _b.call(runtime, { action: "beforeToolCall", body: { toolCall } });
100
+ (_b = runtime.writer) == null ? void 0 : _b.call(runtime, { action: "beforeToolCall", body: { toolCall }, currentConversation });
82
101
  let result;
83
102
  try {
84
103
  const toolMessage = await handler(request);
@@ -100,11 +119,16 @@ const toolCallStatusMiddleware = (aiEmployee) => {
100
119
  }
101
120
  return toolMessage;
102
121
  } catch (e) {
122
+ if (e.name === "GraphInterrupt") {
123
+ interrupted = true;
124
+ throw e;
125
+ }
103
126
  aiEmployee.logger.error(e);
104
127
  result = { status: "error", content: e.message };
105
128
  (_c = runtime.writer) == null ? void 0 : _c.call(runtime, {
106
129
  action: "afterToolCallError",
107
- body: { toolCall, error: e }
130
+ body: { toolCall, error: e },
131
+ currentConversation
108
132
  });
109
133
  return new import_langchain.ToolMessage({
110
134
  tool_call_id: request.toolCall.id,
@@ -115,12 +139,15 @@ const toolCallStatusMiddleware = (aiEmployee) => {
115
139
  }
116
140
  });
117
141
  } finally {
118
- await aiEmployee.updateToolCallDone(messageId, request.toolCall.id, result);
119
- const toolCallResult = await aiEmployee.getToolCallResult(messageId, request.toolCall.id);
120
- (_d = runtime.writer) == null ? void 0 : _d.call(runtime, {
121
- action: "afterToolCall",
122
- body: { toolCall, toolCallResult }
123
- });
142
+ if (!interrupted) {
143
+ await aiEmployee.updateToolCallDone(messageId, request.toolCall.id, result);
144
+ const toolCallResult = await aiEmployee.getToolCallResult(messageId, request.toolCall.id);
145
+ (_d = runtime.writer) == null ? void 0 : _d.call(runtime, {
146
+ action: "afterToolCall",
147
+ body: { toolCall, toolCallResult },
148
+ currentConversation
149
+ });
150
+ }
124
151
  }
125
152
  }
126
153
  });
@@ -0,0 +1,22 @@
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
+ import { Database } from '@nocobase/database';
10
+ import { createMiddleware } from 'langchain';
11
+ import { AIEmployee } from '../ai-employee';
12
+ export declare class WorkflowJobsLogHandler {
13
+ private readonly db;
14
+ private readonly sessionId;
15
+ constructor(db: Database, sessionId: string);
16
+ append(entries: Array<{
17
+ type: 'toolMessage' | 'toolCall';
18
+ toolCallId?: string;
19
+ value: unknown;
20
+ }>): Promise<void>;
21
+ }
22
+ export declare const workflowHistoryMiddleware: (aiEmployee: AIEmployee, db: Database) => ReturnType<typeof createMiddleware>;