@nocobase/plugin-ai 2.3.0-alpha.1 → 2.3.0-beta.2

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 (307) hide show
  1. package/dist/ai/docs/nocobase/ai-dev/watermark-plugin.md +2 -0
  2. package/dist/ai/docs/nocobase/ai-employees/block/ai-chat-box.md +133 -0
  3. package/dist/ai/docs/nocobase/ai-employees/knowledge-base/knowledge-base/documents.md +1 -1
  4. package/dist/ai/docs/nocobase/ai-employees/knowledge-base/knowledge-base/index.md +11 -7
  5. package/dist/ai/docs/nocobase/ai-employees/knowledge-base/knowledge-base/settings.md +12 -8
  6. package/dist/ai/docs/nocobase/ai-employees/knowledge-base/rag.md +43 -13
  7. package/dist/ai/docs/nocobase/ai-employees/knowledge-base/vector-database.md +3 -3
  8. package/dist/ai/docs/nocobase/ai-employees/workflow/nodes/knowledge/create-document.md +1 -1
  9. package/dist/ai/docs/nocobase/api/app/env.md +2 -0
  10. package/dist/ai/docs/nocobase/api/cli/api/resource/create.md +4 -3
  11. package/dist/ai/docs/nocobase/building-tips/ai-fill-js-block-form.md +1092 -0
  12. package/dist/ai/docs/nocobase/data-sources/calendar/calendar-collection.md +100 -3
  13. package/dist/ai/docs/nocobase/data-sources/collection-comment/index.md +92 -39
  14. package/dist/ai/docs/nocobase/data-sources/collection-sql/index.md +150 -29
  15. package/dist/ai/docs/nocobase/data-sources/collection-tree/index.md +93 -5
  16. package/dist/ai/docs/nocobase/data-sources/collection-view/index.md +226 -4
  17. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/china-region.md +122 -5
  18. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/collection-select.md +105 -4
  19. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/json.md +102 -4
  20. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/nano-id.md +104 -4
  21. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/snowflake-id.md +108 -4
  22. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/sort.md +3 -19
  23. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/uuid.md +104 -4
  24. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/associations/index.md +44 -8
  25. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/color.md +102 -4
  26. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/email.md +104 -4
  27. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/icon.md +102 -4
  28. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/input.md +112 -8
  29. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/integer.md +103 -4
  30. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/number.md +103 -4
  31. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/password.md +102 -4
  32. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/percent.md +104 -5
  33. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/phone.md +104 -4
  34. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/textarea.md +99 -8
  35. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/url.md +103 -4
  36. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/checkbox-group.md +105 -3
  37. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/checkbox.md +102 -4
  38. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/china-region.md +108 -5
  39. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/multiple-select.md +103 -5
  40. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/radio-group.md +106 -4
  41. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/select.md +103 -5
  42. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/date.md +102 -4
  43. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/datetime-without-tz.md +103 -5
  44. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/datetime.md +103 -5
  45. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/index.md +53 -47
  46. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/time.md +102 -4
  47. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/unix-timestamp.md +103 -5
  48. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/geometric/circle.md +102 -4
  49. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/geometric/line.md +103 -5
  50. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/geometric/point.md +102 -4
  51. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/geometric/polygon.md +102 -4
  52. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/index.md +62 -16
  53. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/media/markdown.md +104 -4
  54. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/media/rich-text.md +105 -5
  55. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/created-at.md +105 -5
  56. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/created-by.md +103 -5
  57. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/space.md +100 -6
  58. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/table-oid.md +102 -4
  59. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/updated-at.md +104 -5
  60. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/updated-by.md +104 -6
  61. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/validation.md +68 -58
  62. package/dist/ai/docs/nocobase/data-sources/data-modeling/collection.md +32 -13
  63. package/dist/ai/docs/nocobase/data-sources/data-modeling/index.md +41 -33
  64. package/dist/ai/docs/nocobase/data-sources/data-source-external-mariadb/index.md +114 -6
  65. package/dist/ai/docs/nocobase/data-sources/data-source-external-mssql/index.md +117 -6
  66. package/dist/ai/docs/nocobase/data-sources/data-source-external-mysql/index.md +103 -6
  67. package/dist/ai/docs/nocobase/data-sources/data-source-external-nocobase/index.md +75 -73
  68. package/dist/ai/docs/nocobase/data-sources/data-source-external-oracle/index.md +129 -11
  69. package/dist/ai/docs/nocobase/data-sources/data-source-external-postgres/index.md +110 -6
  70. package/dist/ai/docs/nocobase/data-sources/data-source-kingbase/index.md +75 -49
  71. package/dist/ai/docs/nocobase/data-sources/data-source-main/general-collection.md +116 -15
  72. package/dist/ai/docs/nocobase/data-sources/data-source-main/index.md +92 -62
  73. package/dist/ai/docs/nocobase/data-sources/data-source-main/inheritance-collection.md +97 -10
  74. package/dist/ai/docs/nocobase/data-sources/data-source-manager/external-database.md +97 -58
  75. package/dist/ai/docs/nocobase/data-sources/data-source-manager/index.md +32 -24
  76. package/dist/ai/docs/nocobase/data-sources/data-source-rest-api/index.md +115 -153
  77. package/dist/ai/docs/nocobase/data-sources/external/clickhouse.md +124 -0
  78. package/dist/ai/docs/nocobase/data-sources/external/doris.md +130 -0
  79. package/dist/ai/docs/nocobase/data-sources/external/index.md +140 -0
  80. package/dist/ai/docs/nocobase/data-sources/external/kingbase.md +129 -0
  81. package/dist/ai/docs/nocobase/data-sources/external/mariadb.md +126 -0
  82. package/dist/ai/docs/nocobase/data-sources/external/mssql.md +129 -0
  83. package/dist/ai/docs/nocobase/data-sources/external/mysql.md +115 -0
  84. package/dist/ai/docs/nocobase/data-sources/external/nocobase.md +159 -0
  85. package/dist/ai/docs/nocobase/data-sources/external/oceanbase.md +126 -0
  86. package/dist/ai/docs/nocobase/data-sources/external/oracle.md +158 -0
  87. package/dist/ai/docs/nocobase/data-sources/external/postgresql.md +122 -0
  88. package/dist/ai/docs/nocobase/data-sources/external/rest-api.md +245 -0
  89. package/dist/ai/docs/nocobase/data-sources/field-attachment-url/index.md +100 -12
  90. package/dist/ai/docs/nocobase/data-sources/field-encryption/index.md +48 -47
  91. package/dist/ai/docs/nocobase/data-sources/field-formula/index.md +99 -5
  92. package/dist/ai/docs/nocobase/data-sources/field-markdown-vditor/index.md +105 -5
  93. package/dist/ai/docs/nocobase/data-sources/field-sequence/index.md +102 -5
  94. package/dist/ai/docs/nocobase/data-sources/field-signature/index.md +18 -16
  95. package/dist/ai/docs/nocobase/data-sources/field-sort/index.md +76 -73
  96. package/dist/ai/docs/nocobase/data-sources/file-manager/field-attachment.md +101 -7
  97. package/dist/ai/docs/nocobase/data-sources/file-manager/file-collection.md +101 -14
  98. package/dist/ai/docs/nocobase/data-sources/index.md +49 -33
  99. package/dist/ai/docs/nocobase/data-sources/main/index.md +130 -0
  100. package/dist/ai/docs/nocobase/data-sources/main/kingbase.md +147 -0
  101. package/dist/ai/docs/nocobase/data-sources/main/mariadb.md +59 -0
  102. package/dist/ai/docs/nocobase/data-sources/main/mysql.md +59 -0
  103. package/dist/ai/docs/nocobase/data-sources/main/oceanbase.md +62 -0
  104. package/dist/ai/docs/nocobase/data-sources/main/postgresql.md +61 -0
  105. package/dist/ai/docs/nocobase/file-manager/file-preview/index.md +44 -3
  106. package/dist/ai/docs/nocobase/file-manager/storage/aliyun-oss.md +100 -3
  107. package/dist/ai/docs/nocobase/file-manager/storage/index.md +66 -26
  108. package/dist/ai/docs/nocobase/file-manager/storage/s3-pro.md +58 -7
  109. package/dist/ai/docs/nocobase/get-started/installation/env.md +1 -1
  110. package/dist/ai/docs/nocobase/ops-management/migration-manager/built-in-tables.md +1 -2
  111. package/dist/ai/docs/nocobase/plugin-development/build.md +10 -4
  112. package/dist/ai/docs/nocobase/plugin-development/client/appendix/faq.md +1 -1
  113. package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-action.md +2 -0
  114. package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-block.md +2 -0
  115. package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-field.md +2 -0
  116. package/dist/ai/docs/nocobase/plugin-development/client/examples/fullstack-plugin.md +2 -0
  117. package/dist/ai/docs/nocobase/plugin-development/client/examples/settings-page.md +2 -0
  118. package/dist/ai/docs/nocobase/plugin-development/common/i18n.md +3 -3
  119. package/dist/ai/docs/nocobase/plugin-development/server/cache.md +1 -1
  120. package/dist/ai/docs/nocobase/plugin-development/server/collections.md +0 -6
  121. package/dist/ai/docs/nocobase/plugin-development/server/command.md +2 -2
  122. package/dist/ai/docs/nocobase/plugin-development/server/context.md +2 -2
  123. package/dist/ai/docs/nocobase/plugin-development/server/i18n.md +4 -4
  124. package/dist/ai/docs/nocobase/plugin-development/write-your-first-plugin.md +91 -43
  125. package/dist/ai/docs/nocobase/runjs/context/ai.md +194 -4
  126. package/dist/ai/docs/nocobase/users-permissions/sync/index.md +8 -1
  127. package/dist/ai/docs/nocobase/users-permissions/sync/sources/dingtalk.md +138 -0
  128. package/dist/ai/docs/nocobase/users-permissions/sync/sources/ldap.md +87 -0
  129. package/dist/ai/docs/nocobase/workflow/nodes/javascript.md +21 -1
  130. package/dist/ai/tools/executeFrontendTool.d.ts +10 -0
  131. package/dist/ai/tools/executeFrontendTool.js +86 -0
  132. package/dist/ai/tools/getSkill.js +1 -1
  133. package/dist/ai/tools/knowledge-base-retrieve.js +3 -1
  134. package/dist/ai/tools/loadFrontendTool.d.ts +10 -0
  135. package/dist/ai/tools/loadFrontendTool.js +99 -0
  136. package/dist/client/244.28ee769f796b7c2f.js +10 -0
  137. package/dist/client/{525.203778500aca5d05.js → 525.94dd4136c1361477.js} +1 -1
  138. package/dist/client/681.6ffbc9329b9ac242.js +10 -0
  139. package/dist/{client-v2/705.1d10027ff8cfdf79.js → client/705.a4fe26945d175e8a.js} +1 -1
  140. package/dist/client/index.d.ts +1 -3
  141. package/dist/client/index.js +8 -8
  142. package/dist/client-v2/244.39348a95d627d9e3.js +10 -0
  143. package/dist/client-v2/420.a5b929a5e7f330be.js +10 -0
  144. package/dist/client-v2/681.6890caa389564ff7.js +10 -0
  145. package/dist/client-v2/705.f2e1b26a3f000075.js +10 -0
  146. package/dist/client-v2/ai-employees/AIEmployeeShortcut.d.ts +2 -0
  147. package/dist/client-v2/ai-employees/AddContextButton.d.ts +2 -0
  148. package/dist/client-v2/ai-employees/chatbox/components/AIEmployeeSwitcher.d.ts +1 -0
  149. package/dist/client-v2/ai-employees/chatbox/components/ChatBoxUnreadBadge.d.ts +17 -0
  150. package/dist/client-v2/ai-employees/chatbox/components/Conversations.d.ts +9 -1
  151. package/dist/client-v2/ai-employees/chatbox/components/MessageRenderers.d.ts +1 -1
  152. package/dist/client-v2/ai-employees/chatbox/components/Messages.d.ts +5 -1
  153. package/dist/client-v2/ai-employees/chatbox/components/ModelSwitcher.d.ts +4 -0
  154. package/dist/client-v2/ai-employees/chatbox/components/Sender.d.ts +33 -1
  155. package/dist/client-v2/ai-employees/chatbox/components/index.d.ts +1 -0
  156. package/dist/client-v2/ai-employees/chatbox/hooks/reasoning-stream.d.ts +10 -0
  157. package/dist/client-v2/ai-employees/chatbox/hooks/useChat.d.ts +8 -5
  158. package/dist/client-v2/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +3 -2
  159. package/dist/client-v2/ai-employees/chatbox/hooks/useChatBoxEffect.d.ts +2 -1
  160. package/dist/client-v2/ai-employees/chatbox/hooks/useChatConversationActions.d.ts +3 -2
  161. package/dist/client-v2/ai-employees/chatbox/hooks/useChatMessageActions.d.ts +4 -2
  162. package/dist/client-v2/ai-employees/chatbox/hooks/useToolCallActions.d.ts +3 -1
  163. package/dist/client-v2/ai-employees/chatbox/hooks/useUploadFiles.d.ts +13 -3
  164. package/dist/client-v2/ai-employees/chatbox/hooks/useWorkflowTasks.d.ts +3 -2
  165. package/dist/client-v2/ai-employees/chatbox/index.d.ts +17 -0
  166. package/dist/client-v2/ai-employees/chatbox/roles.d.ts +2 -153
  167. package/dist/client-v2/ai-employees/chatbox/stores/chat-box.d.ts +46 -33
  168. package/dist/client-v2/ai-employees/chatbox/stores/chat-conversations.d.ts +7 -7
  169. package/dist/client-v2/ai-employees/chatbox/stores/chat-messages.d.ts +23 -18
  170. package/dist/client-v2/ai-employees/chatbox/stores/chat-sender.d.ts +43 -0
  171. package/dist/client-v2/ai-employees/chatbox/stores/chat-tool-call.d.ts +6 -5
  172. package/dist/client-v2/ai-employees/chatbox/stores/chat-tools.d.ts +11 -5
  173. package/dist/client-v2/ai-employees/chatbox/stores/mounted-chat-boxes.d.ts +20 -0
  174. package/dist/client-v2/ai-employees/chatbox/stores/runtime.d.ts +43 -0
  175. package/dist/client-v2/ai-employees/chatbox/stores/workflow-tasks.d.ts +22 -10
  176. package/dist/client-v2/ai-employees/chatbox/upload.d.ts +19 -0
  177. package/dist/client-v2/ai-employees/chatbox/utils.d.ts +28 -4
  178. package/dist/client-v2/ai-employees/frontend-tools.d.ts +11 -0
  179. package/dist/client-v2/ai-employees/tools/SuggestionsOptionsCard.d.ts +1 -1
  180. package/dist/client-v2/ai-employees/tools/WorkflowTaskOutputCard.d.ts +1 -1
  181. package/dist/client-v2/ai-employees/types.d.ts +30 -0
  182. package/dist/client-v2/block/ai-chat-box/AIChatBoxBlockModel.d.ts +21 -0
  183. package/dist/client-v2/block/ai-chat-box/AIChatBoxCoreModel.d.ts +13 -0
  184. package/dist/client-v2/{ai-employees/chatbox/components/DebugPanel.d.ts → block/ai-chat-box/components/AIChatBoxCoreView.d.ts} +1 -1
  185. package/dist/client-v2/block/ai-chat-box/components/AIChatBoxView.d.ts +12 -0
  186. package/dist/client-v2/block/ai-chat-box/index.d.ts +14 -0
  187. package/dist/client-v2/block/ai-chat-box/settings.d.ts +12 -0
  188. package/dist/client-v2/block/ai-chat-box/sub-models.d.ts +26 -0
  189. package/dist/client-v2/block/ai-chat-box/types.d.ts +38 -0
  190. package/dist/client-v2/block/ai-chat-box/utils.d.ts +26 -0
  191. package/dist/client-v2/index.d.ts +3 -5
  192. package/dist/client-v2/index.js +3 -3
  193. package/dist/client-v2/llm-providers/forms.d.ts +2 -0
  194. package/dist/client-v2/llm-providers/index.d.ts +1 -0
  195. package/dist/client-v2/llm-services/model-select.d.ts +33 -0
  196. package/dist/client-v2/llm-services/utils.d.ts +1 -0
  197. package/dist/client-v2/manager/ai-manager.d.ts +10 -3
  198. package/dist/client-v2/manager/frontend-tool-registry.d.ts +30 -0
  199. package/dist/client-v2/models/ai-employees/AIEmployeeActionModel.d.ts +4 -1
  200. package/dist/client-v2/models/ai-employees/AIEmployeeShortcutModel.d.ts +8 -0
  201. package/dist/client-v2/pages/EmployeesPage.d.ts +12 -0
  202. package/dist/client-v2/pages/LLMServicesPage.d.ts +9 -4
  203. package/dist/client-v2/repositories/AIConfigRepository.d.ts +2 -0
  204. package/dist/client-v2/runjs/registerAIEmployeeRunJSFacade.d.ts +1 -0
  205. package/dist/collections/ai-employees.d.ts +1 -0
  206. package/dist/collections/ai-employees.js +1 -0
  207. package/dist/common/ai-employee-validation.d.ts +15 -0
  208. package/dist/common/ai-employee-validation.js +61 -0
  209. package/dist/common/error-codes.d.ts +13 -0
  210. package/dist/common/error-codes.js +48 -0
  211. package/dist/common/frontend-tools.d.ts +26 -0
  212. package/dist/common/frontend-tools.js +57 -0
  213. package/dist/common/llm-service-models.d.ts +16 -0
  214. package/dist/common/llm-service-models.js +84 -0
  215. package/dist/externalVersion.js +19 -17
  216. package/dist/locale/de-DE.json +2 -1
  217. package/dist/locale/en-US.json +85 -5
  218. package/dist/locale/es-ES.json +2 -1
  219. package/dist/locale/fr-FR.json +2 -1
  220. package/dist/locale/hu-HU.json +2 -1
  221. package/dist/locale/id-ID.json +2 -1
  222. package/dist/locale/it-IT.json +2 -1
  223. package/dist/locale/ja-JP.json +2 -1
  224. package/dist/locale/ko-KR.json +2 -1
  225. package/dist/locale/nl-NL.json +2 -1
  226. package/dist/locale/pt-BR.json +2 -1
  227. package/dist/locale/ru-RU.json +2 -1
  228. package/dist/locale/tr-TR.json +2 -1
  229. package/dist/locale/uk-UA.json +2 -1
  230. package/dist/locale/vi-VN.json +2 -1
  231. package/dist/locale/zh-CN.json +85 -5
  232. package/dist/locale/zh-TW.json +2 -1
  233. package/dist/node_modules/@langchain/mistralai/package.json +1 -1
  234. package/dist/node_modules/@langchain/xai/package.json +1 -1
  235. package/dist/node_modules/fs-extra/package.json +1 -1
  236. package/dist/node_modules/jsonrepair/package.json +1 -1
  237. package/dist/node_modules/just-bash/package.json +1 -1
  238. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  239. package/dist/node_modules/openai/package.json +1 -1
  240. package/dist/node_modules/zod/package.json +1 -1
  241. package/dist/server/ai-employees/ai-conversations.d.ts +4 -1
  242. package/dist/server/ai-employees/ai-conversations.js +2 -0
  243. package/dist/server/ai-employees/ai-employee.d.ts +4 -1
  244. package/dist/server/ai-employees/ai-employee.js +112 -47
  245. package/dist/server/ai-employees/ai-knowledge-base.d.ts +21 -1
  246. package/dist/server/ai-employees/ai-knowledge-base.js +76 -8
  247. package/dist/server/ai-employees/middleware/conversation.js +9 -2
  248. package/dist/server/ai-employees/reasoning-stream-state.d.ts +23 -0
  249. package/dist/server/ai-employees/reasoning-stream-state.js +63 -0
  250. package/dist/server/collections/ai-conversations.js +5 -0
  251. package/dist/server/document-loader/constants.js +1 -1
  252. package/dist/server/features/knowledge-base.d.ts +2 -0
  253. package/dist/server/frontend-tools.d.ts +25 -0
  254. package/dist/server/frontend-tools.js +171 -0
  255. package/dist/server/llm-providers/common/reasoning.js +18 -10
  256. package/dist/server/llm-providers/deepseek/index.d.ts +10 -0
  257. package/dist/server/llm-providers/deepseek/index.js +32 -0
  258. package/dist/server/llm-providers/deepseek/provider.d.ts +57 -0
  259. package/dist/server/llm-providers/deepseek/provider.js +320 -0
  260. package/dist/server/llm-providers/deepseek/reasoning.d.ts +83 -0
  261. package/dist/server/llm-providers/deepseek/reasoning.js +285 -0
  262. package/dist/server/llm-providers/mistral.d.ts +1 -1
  263. package/dist/server/llm-providers/provider.d.ts +1 -0
  264. package/dist/server/llm-providers/provider.js +3 -0
  265. package/dist/server/llm-providers/shengsuanyun.d.ts +29 -0
  266. package/dist/server/llm-providers/shengsuanyun.js +114 -0
  267. package/dist/server/manager/ai-feature-manager.js +1 -1
  268. package/dist/server/manager/ai-manager.d.ts +3 -0
  269. package/dist/server/manager/ai-manager.js +7 -2
  270. package/dist/server/manager/work-context-handler.js +10 -3
  271. package/dist/server/migrations/20260501000000-ai-employee-knowledge-base-retrieval-strategy.d.ts +14 -0
  272. package/dist/server/migrations/20260501000000-ai-employee-knowledge-base-retrieval-strategy.js +49 -0
  273. package/dist/server/plugin.d.ts +1 -0
  274. package/dist/server/plugin.js +31 -0
  275. package/dist/server/resource/aiConversations.d.ts +2 -0
  276. package/dist/server/resource/aiConversations.js +33 -3
  277. package/dist/server/resource/aiEmployees.d.ts +2 -0
  278. package/dist/server/resource/aiEmployees.js +70 -0
  279. package/dist/server/resource/aiWorkflowTasks.js +9 -1
  280. package/dist/server/resource/llmServices.d.ts +11 -0
  281. package/dist/server/resource/llmServices.js +85 -0
  282. package/dist/server/types/ai-message.type.d.ts +4 -0
  283. package/dist/server/types/knowledge-base.type.d.ts +8 -3
  284. package/dist/swagger/common.d.ts +143 -0
  285. package/dist/swagger/common.js +144 -0
  286. package/dist/swagger/employees.d.ts +301 -0
  287. package/dist/swagger/employees.js +131 -0
  288. package/dist/swagger/index.d.ts +1617 -0
  289. package/dist/swagger/index.js +62 -0
  290. package/dist/swagger/llm.d.ts +563 -0
  291. package/dist/swagger/llm.js +255 -0
  292. package/dist/swagger/schemas.d.ts +757 -0
  293. package/dist/swagger/schemas.js +392 -0
  294. package/package.json +2 -2
  295. package/dist/ai/docs/nocobase/ai-employees/knowledge-base/vector-store.md +0 -24
  296. package/dist/ai/docs/nocobase/data-sources/development/index.md +0 -6
  297. package/dist/client/372.40eb52905e3f3049.js +0 -10
  298. package/dist/client/681.399948c18d753667.js +0 -10
  299. package/dist/client/705.380279da896021fb.js +0 -10
  300. package/dist/client-v2/372.8cc3fde09c9bec77.js +0 -10
  301. package/dist/client-v2/406.341be51205c674e0.js +0 -10
  302. package/dist/client-v2/681.082f4f1c7b841983.js +0 -10
  303. package/dist/client-v2/ai-employees/chatbox/stores/create-selectors.d.ts +0 -46
  304. package/dist/client-v2/ai-employees/chatbox/utils/normalizeTriggerTaskOptions.d.ts +0 -19
  305. package/dist/client-v2/debug-logger.d.ts +0 -52
  306. package/dist/server/llm-providers/deepseek.d.ts +0 -40
  307. package/dist/server/llm-providers/deepseek.js +0 -174
@@ -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-07-16T12:58:31.108Z"}
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-22T02:07:15.647Z"}
@@ -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-07-16T12:58:36.909Z"}
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-22T02:07:20.859Z"}
@@ -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-07-16T12:58:36.738Z"}
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-22T02:07:19.448Z"}
@@ -1 +1 @@
1
- {"name":"nodejs-snowflake","collaborators":["Utkarsh Srivastava <utkarsh@sagacious.dev>"],"description":"Generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)","version":"2.0.1","license":"Apache 2.0","repository":{"type":"git","url":"https://github.com/utkarsh-pro/nodejs-snowflake.git"},"files":["nodejs_snowflake_bg.wasm","nodejs_snowflake.js","nodejs_snowflake.d.ts"],"main":"nodejs_snowflake.js","types":"nodejs_snowflake.d.ts","_lastModified":"2026-07-16T12:58:17.179Z"}
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-22T02:07:08.554Z"}
@@ -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-07-16T12:58:20.325Z"}
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-22T02:07:20.753Z"}
@@ -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-07-16T12:58:18.255Z"}
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-22T02:07:08.518Z"}
@@ -9,11 +9,13 @@
9
9
  import { Model, Transaction } from '@nocobase/database';
10
10
  import PluginAIServer from '../plugin';
11
11
  import { AIMessage, SubAgentConversationMetadata, UserDecision } from '../types';
12
+ import type { FrontendToolManifest } from '../../common/frontend-tools';
12
13
  export type AIConversationsOptions = {
13
14
  systemMessage?: unknown;
14
15
  skillSettings?: unknown;
15
16
  conversationSettings?: unknown;
16
17
  modelSettings?: unknown;
18
+ frontendTools?: FrontendToolManifest[];
17
19
  [key: string]: unknown;
18
20
  };
19
21
  export type AIConversationFilterParams = {
@@ -29,6 +31,7 @@ export type CreateAIConversationParams = {
29
31
  title?: string;
30
32
  options?: AIConversationsOptions;
31
33
  from?: 'main-agent' | 'sub-agent';
34
+ scope?: string;
32
35
  transaction?: Transaction;
33
36
  category?: 'chat' | 'task';
34
37
  };
@@ -55,7 +58,7 @@ export declare const registerAIConversationReadNotification: (plugin: PluginAISe
55
58
  export declare class AIConversationsManager {
56
59
  protected plugin: PluginAIServer;
57
60
  constructor(plugin: PluginAIServer);
58
- create({ userId, aiEmployee, title, options, from, transaction, category, }: CreateAIConversationParams): Promise<any>;
61
+ create({ userId, aiEmployee, title, options, from, scope, transaction, category, }: CreateAIConversationParams): Promise<any>;
59
62
  update({ userId, sessionId, title, options: inputOptions }: UpdateAIConversationParams): Promise<any>;
60
63
  getConversation({ sessionId, userId }: {
61
64
  sessionId: string;
@@ -66,6 +66,7 @@ class AIConversationsManager {
66
66
  title,
67
67
  options = {},
68
68
  from = "main-agent",
69
+ scope,
69
70
  transaction,
70
71
  category = "chat"
71
72
  }) {
@@ -77,6 +78,7 @@ class AIConversationsManager {
77
78
  options,
78
79
  thread: 1,
79
80
  from,
81
+ ...scope !== void 0 ? { scope } : {},
80
82
  category
81
83
  },
82
84
  transaction
@@ -36,6 +36,7 @@ export declare class AIEmployee {
36
36
  employee: Model;
37
37
  aiChatConversation: AIChatConversation;
38
38
  skillSettings?: Record<string, any>;
39
+ userMessageCount: number;
39
40
  private plugin;
40
41
  private db;
41
42
  private ctx;
@@ -52,6 +53,7 @@ export declare class AIEmployee {
52
53
  private get systemPromptMode();
53
54
  private areSkillsEnabled;
54
55
  private areToolsEnabled;
56
+ private getAIEmployeeRecord;
55
57
  getFormatMessages(userMessages: AIMessageInput[]): Promise<{
56
58
  role: "system" | "user" | "assistant" | "tool";
57
59
  content: any;
@@ -117,7 +119,7 @@ export declare class AIEmployee {
117
119
  initToolCall(transaction: Transaction, messageId: string, toolCalls: {
118
120
  id: string;
119
121
  name: string;
120
- args: any;
122
+ args: unknown;
121
123
  }[]): Promise<Model<AIToolMessage>[]>;
122
124
  updateToolCallInterrupted(sessionId: string, messageId: string, toolCallId: string, interruptId: string, interruptAction: {
123
125
  order: number;
@@ -147,6 +149,7 @@ export declare class AIEmployee {
147
149
  private formatMessages;
148
150
  private getToolCallMap;
149
151
  private toInterruptActions;
152
+ private getKnowledgeBaseRetrieveTool;
150
153
  private getAIEmployeeTools;
151
154
  private getAvailableSkills;
152
155
  private getAgentTools;
@@ -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_knowledge_base = require("./ai-knowledge-base");
48
49
  var import_middleware = require("./middleware");
49
50
  var import_ai = require("@nocobase/ai");
50
51
  var import_checkpoints = require("./checkpoints");
@@ -56,12 +57,16 @@ var import_base = require("@langchain/core/callbacks/base");
56
57
  var import_shared = require("../../ai/tools/sub-agents/shared");
57
58
  var import_tool_call_sanitizer = require("./tool-call-sanitizer");
58
59
  var import_attachments = require("../attachments");
60
+ var import_frontend_tools = require("../../common/frontend-tools");
61
+ var import_frontend_tools2 = require("../frontend-tools");
62
+ var import_reasoning_stream_state = require("./reasoning-stream-state");
59
63
  class AIEmployee {
60
64
  sessionId;
61
65
  from = "main-agent";
62
66
  employee;
63
67
  aiChatConversation;
64
68
  skillSettings;
69
+ userMessageCount = 0;
65
70
  plugin;
66
71
  db;
67
72
  ctx;
@@ -122,6 +127,9 @@ class AIEmployee {
122
127
  areToolsEnabled() {
123
128
  return this.chatSettings.enableTools !== false;
124
129
  }
130
+ getAIEmployeeRecord() {
131
+ return this.employee.toJSON();
132
+ }
125
133
  async getFormatMessages(userMessages) {
126
134
  const { provider } = await this.plugin.aiManager.getLLMService({
127
135
  ...this.model
@@ -204,6 +212,7 @@ class AIEmployee {
204
212
  const { provider, model, service } = await this.plugin.aiManager.getLLMService({
205
213
  ...this.model
206
214
  });
215
+ this.userMessageCount = (userMessages ?? []).filter((message) => message.role === "user").length;
207
216
  const { historyMessages, tools, resolvedTools, middleware, config, state } = await this.initSession({
208
217
  messageId,
209
218
  provider,
@@ -411,10 +420,21 @@ class AIEmployee {
411
420
  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;
412
421
  const aiMessageIdMap = /* @__PURE__ */ new Map();
413
422
  const { signal, providerName, llmService, model, provider, responseMetadata, allowEmpty = false } = options;
414
- let isReasoning = false;
423
+ const reasoningState = new import_reasoning_stream_state.ReasoningStreamState();
424
+ const stopReasoning = async (conversation) => {
425
+ if (reasoningState.stop(conversation)) {
426
+ await this.protocol.with(conversation).stopReasoning();
427
+ }
428
+ };
429
+ const stopAllReasoning = async () => {
430
+ for (const conversation of reasoningState.drain()) {
431
+ await this.protocol.with(conversation).stopReasoning();
432
+ }
433
+ };
415
434
  let gathered;
416
435
  signal.addEventListener("abort", async () => {
417
436
  try {
437
+ await stopAllReasoning();
418
438
  if ((gathered == null ? void 0 : gathered.type) === "ai") {
419
439
  const values = (0, import_utils2.convertAIMessage)({
420
440
  aiEmployee: this,
@@ -456,27 +476,27 @@ class AIEmployee {
456
476
  const { currentConversation } = metadata;
457
477
  if (chunk.type === "ai") {
458
478
  gathered = gathered !== void 0 ? (0, import_stream.concat)(gathered, chunk) : chunk;
459
- if (chunk.content) {
460
- if (isReasoning) {
461
- isReasoning = false;
462
- await this.protocol.with(currentConversation).stopReasoning();
463
- }
464
- const parsedContent = provider.parseResponseChunk(chunk.content);
465
- if (parsedContent) {
466
- await this.protocol.with(currentConversation).content(parsedContent);
467
- }
479
+ const reasoningContent = provider.parseReasoningContent(chunk);
480
+ if (reasoningContent) {
481
+ reasoningState.start(currentConversation);
482
+ await this.protocol.with(currentConversation).reasoning(reasoningContent);
483
+ }
484
+ const parsedContent = chunk.content ? provider.parseResponseChunk(chunk.content) : null;
485
+ if (parsedContent) {
486
+ await stopReasoning(currentConversation);
487
+ await this.protocol.with(currentConversation).content(parsedContent);
468
488
  }
469
489
  if ((_a = chunk.tool_call_chunks) == null ? void 0 : _a.length) {
490
+ await stopReasoning(currentConversation);
470
491
  await this.protocol.with(currentConversation).toolCallChunks(chunk.tool_call_chunks);
471
492
  }
472
493
  const webSearch = provider.parseWebSearchAction(chunk);
473
494
  if (webSearch == null ? void 0 : webSearch.length) {
495
+ await stopReasoning(currentConversation);
474
496
  await this.protocol.with(currentConversation).webSearch(webSearch);
475
497
  }
476
- const reasoningContent = provider.parseReasoningContent(chunk);
477
- if (reasoningContent) {
478
- isReasoning = true;
479
- await this.protocol.with(currentConversation).reasoning(reasoningContent);
498
+ if ((0, import_reasoning_stream_state.isReasoningFinishChunk)(chunk)) {
499
+ await stopReasoning(currentConversation);
480
500
  }
481
501
  }
482
502
  } else if (mode === "updates") {
@@ -532,6 +552,7 @@ class AIEmployee {
532
552
  }
533
553
  }
534
554
  } else if (chunks.action === "initToolCalls") {
555
+ await stopReasoning(currentConversation);
535
556
  await this.protocol.with(currentConversation).toolCalls(chunks.body);
536
557
  } else if (chunks.action === "beforeToolCall") {
537
558
  const toolsMap = await this.getToolsMap();
@@ -593,12 +614,14 @@ class AIEmployee {
593
614
  }
594
615
  }
595
616
  }
617
+ await stopAllReasoning();
596
618
  if (this.protocol.statistics.sent === 0 && !signal.aborted && !allowEmpty) {
597
619
  this.sendErrorResponse("Empty message");
598
620
  return;
599
621
  }
600
622
  await this.protocol.with(aiEmployeeConversation).endStream();
601
623
  } catch (err) {
624
+ await stopAllReasoning();
602
625
  this.ctx.log.error(err);
603
626
  if (err.name === "GraphRecursionError") {
604
627
  this.sendSpecificError({ name: err.name, message: err.message });
@@ -687,7 +710,7 @@ Field: ${field.name}, Title: ${(_a = field.options.uiSchema) == null ? void 0 :
687
710
  return message;
688
711
  }
689
712
  async getSystemPrompt(userMessages) {
690
- var _a, _b, _c, _d, _e, _f, _g;
713
+ var _a, _b, _c, _d, _e, _f, _g, _h;
691
714
  if (this.systemPromptMode === "none") {
692
715
  return "";
693
716
  }
@@ -695,9 +718,16 @@ Field: ${field.name}, Title: ${(_a = field.options.uiSchema) == null ? void 0 :
695
718
  if (this.systemPromptMode === "raw") {
696
719
  return about;
697
720
  }
721
+ const employee = this.getAIEmployeeRecord();
722
+ const knowledgeBaseManager = this.plugin.knowledgeBaseManager;
723
+ const knowledgeBaseEnabled = await knowledgeBaseManager.isEnabledKnowledgeBase(employee);
724
+ const roleNames = (0, import_ai_knowledge_base.getCurrentRoleNames)(this.ctx.state);
725
+ const hasAccessibleKnowledgeBase = knowledgeBaseEnabled ? await knowledgeBaseManager.hasAccessibleKnowledgeBase({ employee, roleNames }) : false;
726
+ const knowledgeBaseAccessDenied = knowledgeBaseEnabled && !hasAccessibleKnowledgeBase;
727
+ const knowledgeBaseOnDemand = knowledgeBaseEnabled && hasAccessibleKnowledgeBase && (0, import_ai_knowledge_base.normalizeKnowledgeBaseRetrievalStrategy)((_a = employee.knowledgeBase) == null ? void 0 : _a.retrievalStrategy) === "onDemand";
698
728
  const userConfig = await this.db.getRepository("usersAiEmployees").findOne({
699
729
  filter: {
700
- userId: ((_a = this.ctx.auth) == null ? void 0 : _a.user.id) ?? 0,
730
+ userId: ((_b = this.ctx.auth) == null ? void 0 : _b.user.id) ?? 0,
701
731
  aiEmployee: this.employee.username
702
732
  }
703
733
  });
@@ -722,17 +752,25 @@ ${workContextBackground.join("\n")}`;
722
752
  ${addSystemPrompt.map((it) => it.content).join("\n")}`;
723
753
  }
724
754
  let knowledgeBase;
725
- const { knowledgeBaseManager } = this.plugin;
726
- const employee = this.employee.toJSON();
727
- if (await knowledgeBaseManager.isEnabledKnowledgeBase(employee) && employee.knowledgeBasePrompt && (userMessages == null ? void 0 : userMessages.length)) {
755
+ if (knowledgeBaseEnabled && hasAccessibleKnowledgeBase && !knowledgeBaseOnDemand && (userMessages == null ? void 0 : userMessages.length)) {
728
756
  const lastUserMessage = userMessages.filter((x) => x.role === "user").at(-1);
729
757
  if (lastUserMessage) {
730
758
  knowledgeBase = await knowledgeBaseManager.retrievePrompt({
731
759
  employee,
732
- query: lastUserMessage.content.content
760
+ query: lastUserMessage.content.content,
761
+ roleNames
733
762
  });
734
763
  }
735
764
  }
765
+ const knowledgeBaseBackgroundPrompt = (0, import_ai_knowledge_base.getKnowledgeBaseBackgroundPrompt)({
766
+ accessDenied: knowledgeBaseAccessDenied,
767
+ onDemand: knowledgeBaseOnDemand,
768
+ preRetrieved: Boolean(knowledgeBase)
769
+ });
770
+ if (knowledgeBaseBackgroundPrompt) {
771
+ background = `${background}
772
+ ${knowledgeBaseBackgroundPrompt}`;
773
+ }
736
774
  const availableSkills = await this.getAvailableSkills();
737
775
  const availableAIEmployees = await this.getAvailableAIEmployees();
738
776
  const systemPrompt = (0, import_prompts.getSystemPrompt)({
@@ -746,8 +784,8 @@ ${addSystemPrompt.map((it) => it.content).join("\n")}`;
746
784
  personal: userConfig == null ? void 0 : userConfig.prompt,
747
785
  environment: {
748
786
  database: this.db.sequelize.getDialect(),
749
- locale: ((_c = (_b = this.ctx).getCurrentLocale) == null ? void 0 : _c.call(_b)) || "en-US",
750
- currentDateTime: getCurrentDateTimeForPrompt((_e = (_d = this.ctx).getCurrentLocale) == null ? void 0 : _e.call(_d), getCurrentTimezone(this.ctx)),
787
+ locale: ((_d = (_c = this.ctx).getCurrentLocale) == null ? void 0 : _d.call(_c)) || "en-US",
788
+ currentDateTime: getCurrentDateTimeForPrompt((_f = (_e = this.ctx).getCurrentLocale) == null ? void 0 : _f.call(_e), getCurrentTimezone(this.ctx)),
751
789
  timezone: getCurrentTimezone(this.ctx)
752
790
  },
753
791
  knowledgeBase,
@@ -755,7 +793,7 @@ ${addSystemPrompt.map((it) => it.content).join("\n")}`;
755
793
  availableAIEmployees,
756
794
  webSearch: this.webSearch
757
795
  });
758
- const { important } = ((_g = (_f = this.ctx.action) == null ? void 0 : _f.params) == null ? void 0 : _g.values) || {};
796
+ const { important } = ((_h = (_g = this.ctx.action) == null ? void 0 : _g.params) == null ? void 0 : _h.values) || {};
759
797
  if (important === "GraphRecursionError") {
760
798
  const importantPrompt = `<Important>You have already called tools multiple times and gathered sufficient information.
761
799
  First, provide a summary based on the existing information. Do not call additional tools.
@@ -769,11 +807,12 @@ If information is missing, clearly state it in the summary.</Important>`;
769
807
  async initToolCall(transaction, messageId, toolCalls) {
770
808
  const nowTime = /* @__PURE__ */ new Date();
771
809
  const toolMap = await this.getToolsMap();
810
+ const currentFrontendTools = toolCalls.some((toolCall) => toolCall.name === import_frontend_tools.EXECUTE_FRONTEND_TOOL_NAME) ? await (0, import_frontend_tools2.listCurrentFrontendTools)(this.ctx, this.sessionId) : [];
772
811
  return await this.aiToolMessagesRepo.create({
773
812
  values: toolCalls.map((toolCall) => {
774
813
  const toolsExisted = toolMap.has(toolCall.name);
775
814
  const tools = toolMap.get(toolCall.name);
776
- const auto = this.isAutoCall(tools);
815
+ const auto = toolCall.name === import_frontend_tools.EXECUTE_FRONTEND_TOOL_NAME ? toolsExisted && (0, import_frontend_tools2.shouldAutoExecuteFrontendTool)(currentFrontendTools, toolCall.args) : this.isAutoCall(tools);
777
816
  return {
778
817
  id: this.plugin.snowflake.generate(),
779
818
  sessionId: this.sessionId,
@@ -1127,20 +1166,21 @@ If information is missing, clearly state it in the summary.</Important>`;
1127
1166
  });
1128
1167
  continue;
1129
1168
  }
1169
+ const additionalKwargs = (0, import_tool_call_sanitizer.sanitizeAdditionalKwargsForToolCalls)((_b = msg.metadata) == null ? void 0 : _b.additional_kwargs, msg.toolCalls, {
1170
+ onDiscard: (info) => {
1171
+ var _a2;
1172
+ this.logger.warn("Discard malformed raw tool calls from AI message", {
1173
+ phase: "formatMessages",
1174
+ messageId: (_a2 = msg.metadata) == null ? void 0 : _a2.id,
1175
+ ...info
1176
+ });
1177
+ }
1178
+ }).additionalKwargs;
1130
1179
  formattedMessages.push({
1131
1180
  role: "assistant",
1132
1181
  content,
1133
1182
  tool_calls: msg.toolCalls,
1134
- additional_kwargs: (0, import_tool_call_sanitizer.sanitizeAdditionalKwargsForToolCalls)((_b = msg.metadata) == null ? void 0 : _b.additional_kwargs, msg.toolCalls, {
1135
- onDiscard: (info) => {
1136
- var _a2;
1137
- this.logger.warn("Discard malformed raw tool calls from AI message", {
1138
- phase: "formatMessages",
1139
- messageId: (_a2 = msg.metadata) == null ? void 0 : _a2.id,
1140
- ...info
1141
- });
1142
- }
1143
- }).additionalKwargs
1183
+ additional_kwargs: provider.prepareStoredAssistantAdditionalKwargs(additionalKwargs)
1144
1184
  });
1145
1185
  }
1146
1186
  return formattedMessages;
@@ -1185,12 +1225,32 @@ If information is missing, clearly state it in the summary.</Important>`;
1185
1225
  }
1186
1226
  return result;
1187
1227
  }
1228
+ async getKnowledgeBaseRetrieveTool() {
1229
+ const employee = this.getAIEmployeeRecord();
1230
+ const knowledgeBaseManager = this.plugin.knowledgeBaseManager;
1231
+ if (!await knowledgeBaseManager.isEnabledKnowledgeBase(employee)) {
1232
+ return void 0;
1233
+ }
1234
+ const hasAccessibleKnowledgeBase = await knowledgeBaseManager.hasAccessibleKnowledgeBase({
1235
+ employee,
1236
+ roleNames: (0, import_ai_knowledge_base.getCurrentRoleNames)(this.ctx.state)
1237
+ });
1238
+ if (!hasAccessibleKnowledgeBase) {
1239
+ return void 0;
1240
+ }
1241
+ return await this.toolsManager.getTools(import_ai.SYSTEM_TOOLS.KNOWLEDGE_BASE, { ctx: this.ctx });
1242
+ }
1188
1243
  async getAIEmployeeTools() {
1189
1244
  var _a;
1190
1245
  if (!this.areToolsEnabled()) {
1191
1246
  return [];
1192
1247
  }
1248
+ const currentFrontendTools = await (0, import_frontend_tools2.listCurrentFrontendTools)(this.ctx, this.sessionId);
1193
1249
  const tools = await this.listTools({ scope: "GENERAL" });
1250
+ const getSkill = await this.toolsManager.getTools(import_ai.SYSTEM_TOOLS.GET_SKILL, { ctx: this.ctx });
1251
+ if (getSkill) {
1252
+ tools.push(getSkill);
1253
+ }
1194
1254
  if (this.webSearch === true) {
1195
1255
  const subAgentWebSearch = await this.toolsManager.getTools(import_ai.SYSTEM_TOOLS.WEB_SEARCH, { ctx: this.ctx });
1196
1256
  tools.push(subAgentWebSearch);
@@ -1199,13 +1259,9 @@ If information is missing, clearly state it in the summary.</Important>`;
1199
1259
  const toolMap = await this.getToolsMap();
1200
1260
  const settingsTools = ((_a = this.employee.skillSettings) == null ? void 0 : _a.tools) ?? [];
1201
1261
  const employeeTools = [...settingsTools, ...this.tools];
1202
- if (await this.plugin.knowledgeBaseManager.isEnabledKnowledgeBase(this.employee.toJSON())) {
1203
- const knowledgeBaseRetrieveTool = await this.toolsManager.getTools(import_ai.SYSTEM_TOOLS.KNOWLEDGE_BASE, {
1204
- ctx: this.ctx
1205
- });
1206
- if (knowledgeBaseRetrieveTool) {
1207
- employeeTools.push({ name: import_ai.SYSTEM_TOOLS.KNOWLEDGE_BASE });
1208
- }
1262
+ const knowledgeBaseRetrieveTool = await this.getKnowledgeBaseRetrieveTool();
1263
+ if (knowledgeBaseRetrieveTool) {
1264
+ employeeTools.push({ name: import_ai.SYSTEM_TOOLS.KNOWLEDGE_BASE });
1209
1265
  }
1210
1266
  for (const toolSetting of employeeTools) {
1211
1267
  if (generalToolsNameSet.has(toolSetting.name)) {
@@ -1217,20 +1273,26 @@ If information is missing, clearly state it in the summary.</Important>`;
1217
1273
  }
1218
1274
  tools.push(tool);
1219
1275
  }
1220
- const systemTools = (0, import_ai.listSystemTools)();
1276
+ const systemTools = [...(0, import_ai.listSystemTools)(), import_frontend_tools.LOAD_FRONTEND_TOOL_NAME, import_frontend_tools.EXECUTE_FRONTEND_TOOL_NAME];
1221
1277
  if (!this.skillSettings) {
1222
- return tools;
1278
+ return (0, import_frontend_tools2.prepareToolsForFrontendConversation)(tools, currentFrontendTools);
1223
1279
  } else if (!this.skillSettings.toolsVersion) {
1224
1280
  const toolFilter = this.skillSettings.tools ?? [];
1225
- return tools.filter(
1226
- (t) => toolFilter.length === 0 || systemTools.includes(t.definition.name) || toolFilter.includes(t.definition.name)
1281
+ return (0, import_frontend_tools2.prepareToolsForFrontendConversation)(
1282
+ tools.filter(
1283
+ (t) => toolFilter.length === 0 || systemTools.includes(t.definition.name) || toolFilter.includes(t.definition.name)
1284
+ ),
1285
+ currentFrontendTools
1227
1286
  );
1228
1287
  } else {
1229
1288
  const toolFilter = this.skillSettings.tools;
1230
1289
  if (import_lodash.default.isArray(toolFilter)) {
1231
- return tools.filter((t) => systemTools.includes(t.definition.name) || toolFilter.includes(t.definition.name));
1290
+ return (0, import_frontend_tools2.prepareToolsForFrontendConversation)(
1291
+ tools.filter((t) => systemTools.includes(t.definition.name) || toolFilter.includes(t.definition.name)),
1292
+ currentFrontendTools
1293
+ );
1232
1294
  } else {
1233
- return tools;
1295
+ return (0, import_frontend_tools2.prepareToolsForFrontendConversation)(tools, currentFrontendTools);
1234
1296
  }
1235
1297
  }
1236
1298
  }
@@ -1272,6 +1334,9 @@ If information is missing, clearly state it in the summary.</Important>`;
1272
1334
  }
1273
1335
  const baseTools = await this.getAIEmployeeTools();
1274
1336
  const toolMap = await this.getToolsMap();
1337
+ for (const tool of baseTools) {
1338
+ toolMap.set(tool.definition.name, tool);
1339
+ }
1275
1340
  const availableSkills = await this.getAvailableSkills();
1276
1341
  const skillOwnedToolNames = new Set(availableSkills.flatMap((it) => it.tools ?? []));
1277
1342
  const baseToolNames = new Set(
@@ -8,15 +8,35 @@
8
8
  */
9
9
  import { AIEmployee } from '../../collections/ai-employees';
10
10
  import type PluginAIServer from '../plugin';
11
+ export declare const KNOWLEDGE_BASE_RETRIEVAL_STRATEGIES: readonly ["always", "onDemand"];
12
+ export type KnowledgeBaseRetrievalStrategy = (typeof KNOWLEDGE_BASE_RETRIEVAL_STRATEGIES)[number];
13
+ export declare const isKnowledgeBaseRetrievalStrategy: (value: unknown) => value is "always" | "onDemand";
14
+ export declare const normalizeKnowledgeBaseRetrievalStrategy: (value: unknown) => KnowledgeBaseRetrievalStrategy;
15
+ export declare const withDefaultKnowledgeBaseRetrievalStrategy: (knowledgeBase: unknown) => Record<string, unknown>;
16
+ export declare const getCurrentRoleNames: (state: unknown) => string[];
17
+ export declare const KNOWLEDGE_BASE_ON_DEMAND_PROMPT: string;
18
+ export declare const KNOWLEDGE_BASE_PRE_RETRIEVED_PROMPT: string;
19
+ export declare const KNOWLEDGE_BASE_NO_ACCESS_PROMPT: string;
20
+ export declare const getKnowledgeBaseBackgroundPrompt: ({ accessDenied, onDemand, preRetrieved, }: {
21
+ accessDenied: boolean;
22
+ onDemand: boolean;
23
+ preRetrieved: boolean;
24
+ }) => string | undefined;
11
25
  export type KnowledgeBaseRetrieveOptions = {
12
26
  username?: string;
13
27
  employee?: AIEmployee;
14
28
  query: string;
29
+ roleNames?: string[];
30
+ };
31
+ export type KnowledgeBaseAccessOptions = {
32
+ employee: AIEmployee;
33
+ roleNames: string[];
15
34
  };
16
35
  export declare class KnowledgeBaseManager {
17
36
  private readonly plugin;
18
37
  constructor(plugin: PluginAIServer);
19
- retrievePrompt({ username, employee, query }: KnowledgeBaseRetrieveOptions): Promise<string>;
38
+ retrievePrompt({ username, employee, query, roleNames }: KnowledgeBaseRetrieveOptions): Promise<string>;
39
+ hasAccessibleKnowledgeBase({ employee, roleNames }: KnowledgeBaseAccessOptions): Promise<boolean>;
20
40
  isEnabledKnowledgeBase(username: string): Promise<boolean>;
21
41
  isEnabledKnowledgeBase(employee: AIEmployee): Promise<boolean>;
22
42
  private getEmployee;