@nocobase/plugin-ai 2.2.0-beta.14 → 2.2.0-beta.15

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 (397) hide show
  1. package/client-v2.d.ts +1 -0
  2. package/dist/ai/docs/nocobase/interface-builder/blocks/data-blocks/comment.md +107 -0
  3. package/dist/ai/docs/nocobase/interface-builder/index.md +7 -6
  4. package/dist/ai/docs/nocobase/interface-builder/ui-layout/desktop.md +97 -0
  5. package/dist/ai/docs/nocobase/interface-builder/ui-layout/index.md +50 -0
  6. package/dist/ai/docs/nocobase/interface-builder/ui-layout/mobile.md +133 -0
  7. package/dist/ai/docs/nocobase/plugins/@nocobase/plugin-block-comment/index.md +14 -0
  8. package/dist/ai/docs/nocobase/runjs/context/ai.md +206 -0
  9. package/dist/ai/docs/nocobase/workflow/development/api.md +259 -77
  10. package/dist/ai/docs/nocobase/workflow/development/index.md +2 -1
  11. package/dist/ai/docs/nocobase/workflow/development/migration.md +319 -0
  12. package/dist/ai/docs/nocobase/workflow/development/node.md +84 -51
  13. package/dist/ai/docs/nocobase/workflow/development/trigger.md +122 -20
  14. package/dist/ai/tools/formFiller.js +4 -3
  15. package/dist/ai/tools/subAgentWebSearch.js +20 -15
  16. package/dist/client/23.65ea8c37cd4b884b.js +10 -0
  17. package/dist/client/264.cc98933ef65608b6.js +10 -0
  18. package/dist/client/336.7a8a8853196ad779.js +11 -0
  19. package/dist/client/372.40eb52905e3f3049.js +10 -0
  20. package/dist/client/416.92b74ca47e4099c4.js +10 -0
  21. package/dist/client/446.d63c38d0309fe250.js +10 -0
  22. package/dist/client/525.203778500aca5d05.js +10 -0
  23. package/dist/client/663.680bcf6272a8504d.js +10 -0
  24. package/dist/client/681.399948c18d753667.js +10 -0
  25. package/dist/client/705.380279da896021fb.js +10 -0
  26. package/dist/client/ai-employees/1.x/selector/AIContextCollector.d.ts +1 -4
  27. package/dist/client/ai-employees/permissions/PermissionsTab.d.ts +21 -5
  28. package/dist/client/index.d.ts +15 -20
  29. package/dist/client/index.js +8 -8
  30. package/dist/client/workflow/nodes/employee/index.d.ts +2 -23
  31. package/dist/client/workflow/nodes/llm/index.d.ts +2 -52
  32. package/dist/client/workflow/triggers/ai-employee/index.d.ts +2 -83
  33. package/dist/client-v2/23.1bcb6986b40723d8.js +10 -0
  34. package/dist/client-v2/264.be92ff6a4d2612f1.js +10 -0
  35. package/dist/client-v2/336.e406470429e0670e.js +11 -0
  36. package/dist/client-v2/372.8cc3fde09c9bec77.js +10 -0
  37. package/dist/client-v2/406.341be51205c674e0.js +10 -0
  38. package/dist/client-v2/416.0e1c2d9cde43b83d.js +10 -0
  39. package/dist/client-v2/446.073d450882db29fd.js +10 -0
  40. package/dist/client-v2/457.d72febb89e88fc00.js +10 -0
  41. package/dist/client-v2/663.342341f0b2b412d8.js +10 -0
  42. package/dist/client-v2/681.082f4f1c7b841983.js +10 -0
  43. package/dist/client-v2/705.1d10027ff8cfdf79.js +10 -0
  44. package/dist/{client/ai-employees/admin/AvatarSelect.d.ts → client-v2/ai-employees/AIEmployeeDropdown.d.ts} +8 -9
  45. package/dist/client-v2/ai-employees/AIEmployeeShortcut.d.ts +9 -2
  46. package/dist/{client → client-v2}/ai-employees/AddContextButton.d.ts +1 -1
  47. package/dist/{client → client-v2}/ai-employees/ai-coding/AICodingButton.d.ts +2 -1
  48. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Actions.d.ts +2 -4
  49. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/AddLLMModal.d.ts +2 -4
  50. package/dist/client-v2/ai-employees/chatbox/components/Attachments.d.ts +27 -0
  51. package/dist/{client/ai-employees/permissions/Permissions.d.ts → client-v2/ai-employees/chatbox/components/ChatBox.d.ts} +2 -2
  52. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ChatBoxLayout.d.ts +1 -1
  53. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ContextItem.d.ts +1 -1
  54. package/dist/{client/ai-employees/admin/Employees.d.ts → client-v2/ai-employees/chatbox/components/DebugPanel.d.ts} +1 -1
  55. package/dist/{client/ai-employees/chatbox/markdown/Code.d.ts → client-v2/ai-employees/chatbox/components/Markdown.d.ts} +12 -5
  56. package/dist/{client/ai-employees/admin/ProfileSettings.d.ts → client-v2/ai-employees/chatbox/components/MessageContent.d.ts} +3 -2
  57. package/dist/client-v2/ai-employees/chatbox/components/MessageRenderers.d.ts +39 -0
  58. package/dist/{client/ai-employees/chatbox/generative-ui → client-v2/ai-employees/chatbox/components}/ToolCard.d.ts +7 -5
  59. package/dist/{client/ai-employees/admin/datasource/components/basic → client-v2/ai-employees/chatbox/components}/index.d.ts +5 -2
  60. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChat.d.ts +21 -22
  61. package/dist/client-v2/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +3 -2
  62. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatConversationActions.d.ts +2 -2
  63. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatMessageActions.d.ts +8 -4
  64. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useToolCallActions.d.ts +1 -1
  65. package/dist/client-v2/ai-employees/chatbox/hooks/useUploadFiles.d.ts +46 -0
  66. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useWorkflowTasks.d.ts +1 -1
  67. package/dist/{client → client-v2}/ai-employees/chatbox/model.d.ts +9 -2
  68. package/dist/client-v2/ai-employees/chatbox/roles.d.ts +162 -0
  69. package/dist/client-v2/ai-employees/chatbox/stores/chat-box.d.ts +1 -49
  70. package/dist/client-v2/ai-employees/chatbox/stores/chat-conversations.d.ts +2 -19
  71. package/dist/client-v2/ai-employees/chatbox/stores/chat-messages.d.ts +1 -46
  72. package/dist/{client → client-v2}/ai-employees/chatbox/stores/chat-tool-call.d.ts +1 -15
  73. package/dist/client-v2/ai-employees/chatbox/stores/chat-tools.d.ts +30 -0
  74. package/dist/client-v2/ai-employees/chatbox/stores/create-selectors.d.ts +31 -3
  75. package/dist/{client/ai-employees/chatbox/conversations/common.d.ts → client-v2/ai-employees/chatbox/stores/workflow-tasks.d.ts} +21 -4
  76. package/dist/client-v2/ai-employees/chatbox/utils/normalizeTriggerTaskOptions.d.ts +19 -0
  77. package/dist/{client → client-v2}/ai-employees/chatbox/utils.d.ts +26 -6
  78. package/dist/{client/ai-employees/data-visualization/context.d.ts → client-v2/ai-employees/context/chart-config.d.ts} +1 -1
  79. package/dist/{client → client-v2}/ai-employees/context/code-editor.d.ts +1 -1
  80. package/dist/{client → client-v2}/ai-employees/context/datasource.d.ts +1 -1
  81. package/dist/{client → client-v2}/ai-employees/context/flow-models.d.ts +1 -1
  82. package/dist/{client/ai-employees/admin/datasource/components/DatasourceSettingDetail.d.ts → client-v2/ai-employees/data-modeling/setup.d.ts} +6 -5
  83. package/dist/{client → client-v2}/ai-employees/datasource/DatasourceSelector.d.ts +6 -2
  84. package/dist/{client/ai-employees/admin/datasource/flow-models/DatasourceSettingModel.d.ts → client-v2/ai-employees/flow/index.d.ts} +4 -6
  85. package/dist/{client → client-v2}/ai-employees/form-filler/tools/index.d.ts +1 -1
  86. package/dist/{client → client-v2}/ai-employees/stores/ai-selection.d.ts +4 -4
  87. package/dist/{client → client-v2}/ai-employees/stores/dialog-controller.d.ts +4 -4
  88. package/dist/{client/ai-employees/business-report/ui → client-v2/ai-employees/tools}/BusinessReportCard.d.ts +2 -2
  89. package/dist/{client/ai-employees/business-report/ui → client-v2/ai-employees/tools}/BusinessReportModal.d.ts +2 -2
  90. package/dist/{client/ai-employees/1.x/selector/withAISelectable.d.ts → client-v2/ai-employees/tools/ChartGeneratorCard.d.ts} +5 -4
  91. package/dist/{client/ai-employees/ai-coding/ui → client-v2/ai-employees/tools}/CodeToolCard.d.ts +1 -1
  92. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools}/DataModelingCard.d.ts +3 -5
  93. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools}/DataModelingModal.d.ts +4 -6
  94. package/dist/{client/ai-employees/sub-agents/ui → client-v2/ai-employees/tools}/SubAgentDispatchCard.d.ts +4 -9
  95. package/dist/{client/ai-employees/AISettingsProvider.d.ts → client-v2/ai-employees/tools/SuggestionsOptionsCard.d.ts} +6 -8
  96. package/dist/{client/ai-employees/workflow-tasks/ui → client-v2/ai-employees/tools}/WorkflowTaskOutputCard.d.ts +7 -2
  97. package/dist/{client/ai-employees/ai-coding/tools/context-tools.d.ts → client-v2/ai-employees/tools/ai-coding.d.ts} +3 -1
  98. package/dist/client-v2/ai-employees/tools/business-report-utils.d.ts +45 -0
  99. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/CollectionNode.d.ts +2 -3
  100. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/Diagram.d.ts +1 -1
  101. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/Table.d.ts +2 -2
  102. package/dist/client-v2/ai-employees/tools/data-modeling/legacy-template.d.ts +13 -0
  103. package/dist/client-v2/ai-employees/tools/data-modeling/runtime.d.ts +15 -0
  104. package/dist/{client/ai-employees → client-v2/ai-employees/tools}/data-modeling/types.d.ts +27 -4
  105. package/dist/client-v2/ai-employees/tools/data-modeling/useFieldInterfaceOptions.d.ts +151 -0
  106. package/dist/{client/ai-employees/data-visualization/tools/index.d.ts → client-v2/ai-employees/tools/data-visualization.d.ts} +1 -1
  107. package/dist/client-v2/ai-employees/tools/index.d.ts +32 -0
  108. package/dist/client-v2/ai-employees/types.d.ts +101 -7
  109. package/dist/client-v2/components/RemoteSelect.d.ts +43 -0
  110. package/dist/{client → client-v2}/debug-logger.d.ts +2 -2
  111. package/dist/client-v2/f0053e745af0ad03.svg +50 -0
  112. package/dist/client-v2/index.d.ts +9 -8
  113. package/dist/client-v2/index.js +37 -1
  114. package/dist/client-v2/llm-providers/forms.d.ts +44 -0
  115. package/dist/client-v2/llm-providers/index.d.ts +24 -0
  116. package/dist/{client/ai-employees/ai-coding/tools/index.d.ts → client-v2/llm-services/utils.d.ts} +5 -3
  117. package/dist/client-v2/locale.d.ts +14 -0
  118. package/dist/client-v2/manager/ai-manager.d.ts +55 -0
  119. package/dist/client-v2/models/ai-employees/AIEmployeeActionModel.d.ts +33 -0
  120. package/dist/client-v2/models/ai-employees/AIEmployeeShortcutModel.d.ts +44 -0
  121. package/dist/client-v2/pages/AdminSettingsPage.d.ts +24 -0
  122. package/dist/client-v2/pages/DatasourceSettingsPage.d.ts +62 -0
  123. package/dist/client-v2/pages/EmployeesPage.d.ts +62 -0
  124. package/dist/client-v2/pages/LLMServicesPage.d.ts +75 -0
  125. package/dist/client-v2/pages/MCPSettingsPage.d.ts +73 -0
  126. package/dist/client-v2/pages/drawerWidth.d.ts +10 -0
  127. package/dist/client-v2/pages/permissions/Permissions.d.ts +67 -0
  128. package/dist/client-v2/pages/permissions/PermissionsTab.d.ts +12 -0
  129. package/dist/client-v2/pages/useUnsavedChangesBeforeClose.d.ts +29 -0
  130. package/dist/client-v2/plugin.d.ts +33 -0
  131. package/dist/client-v2/repositories/AIConfigRepository.d.ts +3 -23
  132. package/dist/client-v2/runjs/registerAIEmployeeRunJSFacade.d.ts +20 -0
  133. package/dist/client-v2/workflow/components/FormValueRegistry.d.ts +12 -0
  134. package/dist/{client/components/ListCollapse.d.ts → client-v2/workflow/components/WorkflowListCollapse.d.ts} +4 -4
  135. package/dist/client-v2/workflow/constants.d.ts +26 -0
  136. package/dist/client-v2/workflow/nodes/employee/components/AIEmployeeFieldset.d.ts +11 -0
  137. package/dist/{client/ai-employees/common/CodeHighlight.d.ts → client-v2/workflow/nodes/employee/components/AIEmployeeSelect.d.ts} +5 -6
  138. package/dist/{client/ai-employees/ContextAwareTooltip.d.ts → client-v2/workflow/nodes/employee/components/Assignees.d.ts} +2 -1
  139. package/dist/client-v2/workflow/nodes/employee/components/FeedbackSettings.d.ts +17 -0
  140. package/dist/client-v2/workflow/nodes/employee/components/FileInputs.d.ts +11 -0
  141. package/dist/{client/ai-employees/AIEmployeesProvider.d.ts → client-v2/workflow/nodes/employee/components/MessageInputs.d.ts} +2 -3
  142. package/dist/client-v2/workflow/nodes/employee/components/ModelOptions.d.ts +17 -0
  143. package/dist/{client/ai-employees/admin/datasource/components/basic/CollectionCascader.d.ts → client-v2/workflow/nodes/employee/components/SkillSettings.d.ts} +6 -3
  144. package/dist/client-v2/workflow/nodes/employee/components/StructuredOutput.d.ts +11 -0
  145. package/dist/client-v2/workflow/nodes/employee/components/UserInput.d.ts +18 -0
  146. package/dist/client-v2/workflow/nodes/employee/components/WebSearchOptions.d.ts +16 -0
  147. package/dist/client-v2/workflow/nodes/employee/index.d.ts +23 -0
  148. package/dist/{client/ai-employees/AIEmployeeListItem.d.ts → client-v2/workflow/nodes/llm/components/LLMFieldset.d.ts} +3 -5
  149. package/dist/{client/admin-settings/AdminSettings.d.ts → client-v2/workflow/nodes/llm/components/Messages.d.ts} +2 -1
  150. package/dist/client-v2/workflow/nodes/llm/components/StructuredOutput.d.ts +11 -0
  151. package/dist/client-v2/workflow/nodes/llm/index.d.ts +30 -0
  152. package/dist/{client/ai-employees/1.x/selector/BlockSelector.d.ts → client-v2/workflow/register.d.ts} +2 -6
  153. package/dist/client-v2/workflow/triggers/ai-employee/AIEmployeeTriggerConfig.d.ts +11 -0
  154. package/dist/client-v2/workflow/triggers/ai-employee/Parameters.d.ts +11 -0
  155. package/dist/client-v2/workflow/triggers/ai-employee/index.d.ts +25 -0
  156. package/dist/client-v2/workflow/types.d.ts +128 -0
  157. package/dist/externalVersion.js +20 -25
  158. package/dist/locale/en-US.json +43 -1
  159. package/dist/locale/zh-CN.json +43 -1
  160. package/dist/node_modules/@langchain/mistralai/package.json +1 -1
  161. package/dist/node_modules/@langchain/xai/package.json +1 -1
  162. package/dist/node_modules/fs-extra/package.json +1 -1
  163. package/dist/node_modules/jsonrepair/package.json +1 -1
  164. package/dist/node_modules/just-bash/package.json +1 -1
  165. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  166. package/dist/node_modules/openai/package.json +1 -1
  167. package/dist/node_modules/zod/package.json +1 -1
  168. package/dist/server/ai-employees/ai-employee.js +7 -1
  169. package/dist/server/ai-employees/prompts.d.ts +2 -1
  170. package/dist/server/ai-employees/prompts.js +8 -2
  171. package/dist/server/ai-employees/tool-call-sanitizer.d.ts +1 -0
  172. package/dist/server/ai-employees/tool-call-sanitizer.js +2 -1
  173. package/dist/server/ai-employees/utils.js +11 -5
  174. package/dist/server/llm-providers/dashscope.d.ts +2 -1
  175. package/dist/server/llm-providers/dashscope.js +16 -1
  176. package/dist/server/llm-providers/deepseek.d.ts +2 -1
  177. package/dist/server/llm-providers/deepseek.js +33 -2
  178. package/dist/server/llm-providers/kimi/provider.d.ts +2 -1
  179. package/dist/server/llm-providers/kimi/provider.js +22 -2
  180. package/dist/server/llm-providers/mistral.d.ts +36 -2
  181. package/dist/server/llm-providers/mistral.js +62 -2
  182. package/dist/server/llm-providers/openai/completions.d.ts +2 -1
  183. package/dist/server/llm-providers/openai/completions.js +17 -1
  184. package/dist/server/llm-providers/openai/responses.d.ts +2 -1
  185. package/dist/server/llm-providers/openai/responses.js +17 -1
  186. package/dist/server/llm-providers/provider.d.ts +7 -0
  187. package/dist/server/llm-providers/provider.js +7 -1
  188. package/dist/server/manager/ai-context-datasource-manager.js +34 -7
  189. package/dist/server/manager/ai-manager.d.ts +2 -1
  190. package/dist/server/manager/ai-manager.js +4 -1
  191. package/package.json +5 -5
  192. package/dist/client/119.c6bf8c6433167d81.js +0 -10
  193. package/dist/client/170.d98eacdc00d9d527.js +0 -10
  194. package/dist/client/228.b4b709f93b86b6b9.js +0 -10
  195. package/dist/client/280.003b9e9788599244.js +0 -10
  196. package/dist/client/290.0f7f441d8a94f03c.js +0 -10
  197. package/dist/client/331.d547c95410476a69.js +0 -10
  198. package/dist/client/406.15c09d98faa2ccf1.js +0 -10
  199. package/dist/client/428.5eb4f53ddbb6a3b8.js +0 -10
  200. package/dist/client/462.d172d0fe91519e35.js +0 -10
  201. package/dist/client/486.dcac8f3fcec19c33.js +0 -10
  202. package/dist/client/502.2b4a51e0a8122e52.js +0 -10
  203. package/dist/client/525.33a9c8ec28be4ec4.js +0 -10
  204. package/dist/client/559.959c46d0056ccdc8.js +0 -10
  205. package/dist/client/561.7ec804ef39ec7dcd.js +0 -10
  206. package/dist/client/580.35ba54ff91b7fe6d.js +0 -10
  207. package/dist/client/597.b0d64948d74cf6cb.js +0 -10
  208. package/dist/client/604.89c674f35b52b4ef.js +0 -10
  209. package/dist/client/614.aa766080f6b99aab.js +0 -10
  210. package/dist/client/646.051c1437c9ca4fd4.js +0 -10
  211. package/dist/client/687.224e569a99cae4bb.js +0 -10
  212. package/dist/client/699.57c0a1acb723202a.js +0 -10
  213. package/dist/client/711.92cd94681fde7e05.js +0 -10
  214. package/dist/client/758.a9741e81911e53c3.js +0 -10
  215. package/dist/client/768.5177bff46ae71a5b.js +0 -10
  216. package/dist/client/792.abb57765453bcbcc.js +0 -10
  217. package/dist/client/820.f72ef2462b61d812.js +0 -10
  218. package/dist/client/832.0cf69e3f43c320b2.js +0 -10
  219. package/dist/client/927.d95c74ebb8fd51c9.js +0 -10
  220. package/dist/client/ai-employees/1.x/selector/AISelectorProvider.d.ts +0 -33
  221. package/dist/client/ai-employees/ProfileCard.d.ts +0 -15
  222. package/dist/client/ai-employees/admin/ChatSettings.d.ts +0 -10
  223. package/dist/client/ai-employees/admin/DataSourceSettings.d.ts +0 -10
  224. package/dist/client/ai-employees/admin/EnableSwitch.d.ts +0 -10
  225. package/dist/client/ai-employees/admin/InputsFormSettings.d.ts +0 -10
  226. package/dist/client/ai-employees/admin/KnowledgeBaseSettings.d.ts +0 -10
  227. package/dist/client/ai-employees/admin/ModelSettings.d.ts +0 -10
  228. package/dist/client/ai-employees/admin/SkillSettings.d.ts +0 -19
  229. package/dist/client/ai-employees/admin/SystemPrompt.d.ts +0 -10
  230. package/dist/client/ai-employees/admin/Templates.d.ts +0 -10
  231. package/dist/client/ai-employees/admin/ToolsSettings.d.ts +0 -17
  232. package/dist/client/ai-employees/admin/datasource/components/DatasourceSettingForm.d.ts +0 -10
  233. package/dist/client/ai-employees/admin/datasource/components/DatasourceSettingGrid.d.ts +0 -10
  234. package/dist/client/ai-employees/admin/datasource/components/basic/FieldsTransfer.d.ts +0 -17
  235. package/dist/client/ai-employees/admin/datasource/components/form-steps/CollectionSetting.d.ts +0 -17
  236. package/dist/client/ai-employees/admin/datasource/components/form-steps/FieldsSetting.d.ts +0 -15
  237. package/dist/client/ai-employees/admin/datasource/components/form-steps/FilterSetting.d.ts +0 -17
  238. package/dist/client/ai-employees/admin/datasource/components/form-steps/Preview.d.ts +0 -13
  239. package/dist/client/ai-employees/admin/datasource/components/form-steps/SortSetting.d.ts +0 -15
  240. package/dist/client/ai-employees/admin/datasource/components/form-steps/index.d.ts +0 -13
  241. package/dist/client/ai-employees/admin/datasource/components/index.d.ts +0 -9
  242. package/dist/client/ai-employees/admin/datasource/context.d.ts +0 -17
  243. package/dist/client/ai-employees/admin/datasource/flow-models/index.d.ts +0 -9
  244. package/dist/client/ai-employees/admin/datasource/index.d.ts +0 -10
  245. package/dist/client/ai-employees/admin/hooks.d.ts +0 -39
  246. package/dist/client/ai-employees/admin/mcp/MCPSettings.d.ts +0 -10
  247. package/dist/client/ai-employees/admin/mcp/MCPToolsList.d.ts +0 -19
  248. package/dist/client/ai-employees/admin/mcp/context.d.ts +0 -15
  249. package/dist/client/ai-employees/admin/mcp/schemas.d.ts +0 -1314
  250. package/dist/client/ai-employees/ai-coding/CodeHistory.d.ts +0 -10
  251. package/dist/client/ai-employees/ai-coding/markdown/Code.d.ts +0 -16
  252. package/dist/client/ai-employees/avatars.d.ts +0 -9
  253. package/dist/client/ai-employees/built-in/utils.d.ts +0 -15
  254. package/dist/client/ai-employees/business-report/tools/index.d.ts +0 -10
  255. package/dist/client/ai-employees/business-report/ui/report-utils.d.ts +0 -38
  256. package/dist/client/ai-employees/chart-generator/tools/index.d.ts +0 -10
  257. package/dist/client/ai-employees/chart-generator/ui/ECharts.d.ts +0 -13
  258. package/dist/client/ai-employees/chatbox/AIThinking.d.ts +0 -12
  259. package/dist/client/ai-employees/chatbox/Attachment.d.ts +0 -14
  260. package/dist/client/ai-employees/chatbox/AttachmentsHeader.d.ts +0 -10
  261. package/dist/client/ai-employees/chatbox/ChatBox.d.ts +0 -12
  262. package/dist/client/ai-employees/chatbox/ContextItemsHeader.d.ts +0 -10
  263. package/dist/client/ai-employees/chatbox/DebugPanel.d.ts +0 -16
  264. package/dist/client/ai-employees/chatbox/EditMessageHeader.d.ts +0 -10
  265. package/dist/client/ai-employees/chatbox/HintMessageHeader.d.ts +0 -10
  266. package/dist/client/ai-employees/chatbox/MessageRenderer.d.ts +0 -33
  267. package/dist/client/ai-employees/chatbox/SenderFooter.d.ts +0 -13
  268. package/dist/client/ai-employees/chatbox/SenderHeader.d.ts +0 -10
  269. package/dist/client/ai-employees/chatbox/SenderPrefix.d.ts +0 -10
  270. package/dist/client/ai-employees/chatbox/Upload.d.ts +0 -12
  271. package/dist/client/ai-employees/chatbox/VirtualList.d.ts +0 -28
  272. package/dist/client/ai-employees/chatbox/conversations/ConversationsList.d.ts +0 -13
  273. package/dist/client/ai-employees/chatbox/conversations/WorkflowTasksList.d.ts +0 -13
  274. package/dist/client/ai-employees/chatbox/conversations/index.d.ts +0 -9
  275. package/dist/client/ai-employees/chatbox/generative-ui/DefaultToolCard.d.ts +0 -16
  276. package/dist/client/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +0 -18
  277. package/dist/client/ai-employees/chatbox/hooks/useUploadFiles.d.ts +0 -12
  278. package/dist/client/ai-employees/chatbox/markdown/ECharts.d.ts +0 -10
  279. package/dist/client/ai-employees/chatbox/markdown/Form.d.ts +0 -10
  280. package/dist/client/ai-employees/chatbox/markdown/Generating.d.ts +0 -10
  281. package/dist/client/ai-employees/chatbox/markdown/Markdown.d.ts +0 -13
  282. package/dist/client/ai-employees/chatbox/roles.d.ts +0 -32
  283. package/dist/client/ai-employees/chatbox/stores/chat-box.d.ts +0 -9
  284. package/dist/client/ai-employees/chatbox/stores/chat-conversations.d.ts +0 -9
  285. package/dist/client/ai-employees/chatbox/stores/chat-messages.d.ts +0 -9
  286. package/dist/client/ai-employees/chatbox/stores/chat-tools.d.ts +0 -51
  287. package/dist/client/ai-employees/chatbox/stores/create-selectors.d.ts +0 -18
  288. package/dist/client/ai-employees/chatbox/stores/workflow-tasks.d.ts +0 -45
  289. package/dist/client/ai-employees/context/classic-pages.d.ts +0 -10
  290. package/dist/client/ai-employees/data-modeling/Table.d.ts +0 -12
  291. package/dist/client/ai-employees/data-modeling/setup.d.ts +0 -10
  292. package/dist/client/ai-employees/data-modeling/tools/index.d.ts +0 -10
  293. package/dist/client/ai-employees/data-modeling/ui/useFieldInterfaceOptions.d.ts +0 -14
  294. package/dist/client/ai-employees/datasource/DatasourceList.d.ts +0 -17
  295. package/dist/client/ai-employees/datasource/index.d.ts +0 -9
  296. package/dist/client/ai-employees/flow/events/index.d.ts +0 -9
  297. package/dist/client/ai-employees/flow/index.d.ts +0 -36
  298. package/dist/client/ai-employees/flow/models/AIEmployeeActionModel.d.ts +0 -18
  299. package/dist/client/ai-employees/flow/models/AIEmployeeShortcutModel.d.ts +0 -30
  300. package/dist/client/ai-employees/shortcuts/ShortcutList.d.ts +0 -10
  301. package/dist/client/ai-employees/shortcuts/useShortcuts.d.ts +0 -13
  302. package/dist/client/ai-employees/stores/context-aware.d.ts +0 -19
  303. package/dist/client/ai-employees/sub-agents/tools/index.d.ts +0 -10
  304. package/dist/client/ai-employees/suggestions/tools/index.d.ts +0 -10
  305. package/dist/client/ai-employees/suggestions/ui/SuggestionsOptions.d.ts +0 -13
  306. package/dist/client/ai-employees/types.d.ts +0 -259
  307. package/dist/client/ai-employees/workflow-tasks/tools/index.d.ts +0 -10
  308. package/dist/client/chat-settings/Messages.d.ts +0 -11
  309. package/dist/client/chat-settings/StructuredOutput.d.ts +0 -11
  310. package/dist/client/components/skill-settings.d.ts +0 -22
  311. package/dist/client/features/components.d.ts +0 -9
  312. package/dist/client/features/feature-manager.d.ts +0 -9
  313. package/dist/client/features/index.d.ts +0 -9
  314. package/dist/client/features/vector-database-provider.d.ts +0 -9
  315. package/dist/client/features/vector-store-provider.d.ts +0 -9
  316. package/dist/client/llm-providers/anthropic/ModelSettings.d.ts +0 -10
  317. package/dist/client/llm-providers/anthropic/ProviderSettings.d.ts +0 -10
  318. package/dist/client/llm-providers/anthropic/index.d.ts +0 -10
  319. package/dist/client/llm-providers/components/Chat.d.ts +0 -10
  320. package/dist/client/llm-providers/components/ModelSelect.d.ts +0 -10
  321. package/dist/client/llm-providers/dashscope/ModelSettings.d.ts +0 -10
  322. package/dist/client/llm-providers/dashscope/ProviderSettings.d.ts +0 -10
  323. package/dist/client/llm-providers/dashscope/index.d.ts +0 -10
  324. package/dist/client/llm-providers/deepseek/ModelSettings.d.ts +0 -10
  325. package/dist/client/llm-providers/deepseek/index.d.ts +0 -10
  326. package/dist/client/llm-providers/google-genai/MessageRenderer.d.ts +0 -13
  327. package/dist/client/llm-providers/google-genai/ModelSettings.d.ts +0 -10
  328. package/dist/client/llm-providers/google-genai/ProviderSettings.d.ts +0 -10
  329. package/dist/client/llm-providers/google-genai/index.d.ts +0 -10
  330. package/dist/client/llm-providers/kimi/ModelSettings.d.ts +0 -10
  331. package/dist/client/llm-providers/kimi/index.d.ts +0 -10
  332. package/dist/client/llm-providers/mimo/ModelSettings.d.ts +0 -10
  333. package/dist/client/llm-providers/mimo/index.d.ts +0 -10
  334. package/dist/client/llm-providers/mistral/ModelSettings.d.ts +0 -10
  335. package/dist/client/llm-providers/mistral/index.d.ts +0 -10
  336. package/dist/client/llm-providers/ollama/ModelSettings.d.ts +0 -10
  337. package/dist/client/llm-providers/ollama/ProviderSettings.d.ts +0 -10
  338. package/dist/client/llm-providers/ollama/index.d.ts +0 -10
  339. package/dist/client/llm-providers/openai/completions/ModelSettings.d.ts +0 -10
  340. package/dist/client/llm-providers/openai/completions/index.d.ts +0 -10
  341. package/dist/client/llm-providers/openai/components/ProviderSettings.d.ts +0 -10
  342. package/dist/client/llm-providers/openai/responses/ModelSettings.d.ts +0 -10
  343. package/dist/client/llm-providers/openai/responses/index.d.ts +0 -10
  344. package/dist/client/llm-providers/orcarouter/ModelSettings.d.ts +0 -10
  345. package/dist/client/llm-providers/orcarouter/ProviderSettings.d.ts +0 -10
  346. package/dist/client/llm-providers/orcarouter/index.d.ts +0 -10
  347. package/dist/client/llm-providers/tongyi/ModelSettings.d.ts +0 -10
  348. package/dist/client/llm-providers/tongyi/ProviderSettings.d.ts +0 -10
  349. package/dist/client/llm-providers/tongyi/index.d.ts +0 -10
  350. package/dist/client/llm-providers/xai/ModelSettings.d.ts +0 -10
  351. package/dist/client/llm-providers/xai/index.d.ts +0 -10
  352. package/dist/client/llm-services/LLMServices.d.ts +0 -13
  353. package/dist/client/llm-services/component/DefaultModelSelect.d.ts +0 -10
  354. package/dist/client/llm-services/component/EnabledModelsSelect.d.ts +0 -23
  355. package/dist/client/llm-services/component/LLMTestFlight.d.ts +0 -10
  356. package/dist/client/llm-services/component/ModelOptionsSettings.d.ts +0 -10
  357. package/dist/client/llm-services/component/UnifiedModelSettings.d.ts +0 -10
  358. package/dist/client/llm-services/hooks/useLLMServiceCatalog.d.ts +0 -18
  359. package/dist/client/llm-services/llm-providers.d.ts +0 -27
  360. package/dist/client/llm-services/utils.d.ts +0 -35
  361. package/dist/client/manager/ai-feature-manager.d.ts +0 -9
  362. package/dist/client/manager/ai-manager.d.ts +0 -35
  363. package/dist/client/repositories/AIConfigRepository.d.ts +0 -60
  364. package/dist/client/repositories/hooks/useAIConfigRepository.d.ts +0 -10
  365. package/dist/client/schemas/llms.d.ts +0 -347
  366. package/dist/client/workflow/nodes/employee/components/AIEmployeeSelect.d.ts +0 -10
  367. package/dist/client/workflow/nodes/employee/components/assigness.d.ts +0 -11
  368. package/dist/client/workflow/nodes/employee/components/file-inputs.d.ts +0 -10
  369. package/dist/client/workflow/nodes/employee/components/message-inputs.d.ts +0 -12
  370. package/dist/client/workflow/nodes/employee/components/model-options.d.ts +0 -10
  371. package/dist/client/workflow/nodes/employee/components/structured-output.d.ts +0 -10
  372. package/dist/client/workflow/nodes/employee/components/users-select.d.ts +0 -15
  373. package/dist/client/workflow/nodes/employee/components/web-search-options.d.ts +0 -10
  374. package/dist/client/workflow/nodes/employee/configuration.d.ts +0 -12
  375. package/dist/client/workflow/nodes/employee/flow-models/feedback.d.ts +0 -14
  376. package/dist/client/workflow/nodes/employee/flow-models/task.d.ts +0 -13
  377. package/dist/client/workflow/nodes/llm/ModelSettings.d.ts +0 -11
  378. package/dist/client/workflow/triggers/ai-employee/Parameters.d.ts +0 -13
  379. /package/dist/{client → client-v2}/ai-employees/AISelection.d.ts +0 -0
  380. /package/dist/{client → client-v2}/ai-employees/AISelectionControl.d.ts +0 -0
  381. /package/dist/{client → client-v2}/ai-employees/ai-coding/prompts.d.ts +0 -0
  382. /package/dist/{client → client-v2}/ai-employees/ai-coding/setup.d.ts +0 -0
  383. /package/dist/{client/ai-employees/chatbox/AIEmployeeSwitch.d.ts → client-v2/ai-employees/chatbox/components/AIEmployeeSwitcher.d.ts} +0 -0
  384. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ChatButton.d.ts +0 -0
  385. /package/dist/{client/ai-employees/chatbox/conversations → client-v2/ai-employees/chatbox/components}/Conversations.d.ts +0 -0
  386. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Messages.d.ts +0 -0
  387. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ModelSwitcher.d.ts +0 -0
  388. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/SearchSwitch.d.ts +0 -0
  389. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Sender.d.ts +0 -0
  390. /package/dist/{client/ai-employees/chatbox/generative-ui → client-v2/ai-employees/chatbox/components}/ToolModal.d.ts +0 -0
  391. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/UserPrompt.d.ts +0 -0
  392. /package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatBoxEffect.d.ts +0 -0
  393. /package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useLoadMoreObserver.d.ts +0 -0
  394. /package/dist/client-v2/ai-employees/{chatbox/stores → stores}/global-store.d.ts +0 -0
  395. /package/dist/{client/ai-employees/flow/models → client-v2/models/ai-employees}/AIEmployeeShortcutListModel.d.ts +0 -0
  396. /package/dist/{client/ai-employees/flow/models → client-v2/models/ai-employees}/index.d.ts +0 -0
  397. /package/dist/{client/ai-employees/flow/events/ai-context-selection.d.ts → client-v2/workflow/components/index.d.ts} +0 -0
@@ -1,4 +1,10 @@
1
- # Extend Trigger Types
1
+ ---
2
+ title: "Extending Trigger Types"
3
+ description: "Extending trigger types: custom trigger development, configuration interface, trigger logic, API reference."
4
+ keywords: "workflow,extending triggers,custom triggers,trigger development,NocoBase"
5
+ ---
6
+
7
+ # Extending Trigger Types
2
8
 
3
9
  Every workflow must be configured with a specific trigger, which serves as the entry point for starting the process execution.
4
10
 
@@ -62,39 +68,129 @@ After the server starts and loads, the `'interval'` type trigger can be added an
62
68
 
63
69
  The client-side part mainly provides a configuration interface based on the configuration items required by the trigger type. Each trigger type also needs to register its corresponding type configuration with the Workflow plugin.
64
70
 
65
- For example, for the scheduled execution trigger mentioned above, define the required interval time configuration item (`interval`) in the configuration interface form:
71
+ The trigger's configuration interface is defined through a Loader (lazy-loading function), which points to a plain React component that builds the form using antd's `Form.Item`.
72
+
73
+ ### The Simplest Trigger
74
+
75
+ For example, for the interval timer trigger described above, define the interval time configuration item (`interval`) needed in the configuration interface form:
66
76
 
67
77
  ```ts
68
- import { Trigger } from '@nocobase/workflow/client';
78
+ import { Trigger } from '@nocobase/plugin-workflow/client-v2';
69
79
 
70
80
  class MyTrigger extends Trigger {
71
81
  title = 'Interval timer trigger';
72
- // fields of trigger config
73
- fieldset = {
74
- interval: {
75
- type: 'number',
76
- title: 'Interval',
77
- name: 'config.interval',
78
- 'x-decorator': 'FormItem',
79
- 'x-component': 'InputNumber',
80
- default: 60000,
81
- },
82
- };
82
+
83
+ // Trigger config form (lazy-loaded component)
84
+ FieldsetLoader = () => import('./IntervalConfig');
85
+
86
+ // Config validation
87
+ validate(config) {
88
+ return Boolean(config?.interval);
89
+ }
90
+ }
91
+ ```
92
+
93
+ Here, `FieldsetLoader` is a function that returns `Promise<{ default: ComponentType }>`, implementing lazy loading via dynamic `import()`. The component it points to is a standard React function component:
94
+
95
+ ```tsx
96
+ // IntervalConfig.tsx
97
+ import { Form, InputNumber } from 'antd';
98
+
99
+ export default function IntervalConfig() {
100
+ return (
101
+ <Form.Item
102
+ name={['config', 'interval']}
103
+ label="Interval"
104
+ initialValue={60000}
105
+ rules={[{ required: true }]}
106
+ >
107
+ <InputNumber min={1000} />
108
+ </Form.Item>
109
+ );
83
110
  }
84
111
  ```
85
112
 
86
- Then, register this trigger type with the workflow plugin instance within the extended plugin:
113
+ Note that the form field's `name` uses the nested array format `['config', 'fieldName']`, which is the standard antd Form convention.
114
+
115
+ ### Multiple Configuration Interfaces
116
+
117
+ A trigger can provide multiple configuration interfaces for different scenarios:
118
+
119
+ - `PresetFieldsetLoader` — Preset form when creating a workflow (usually contains only required fields)
120
+ ![PresetFieldsetLoader](https://static-docs.nocobase.com/20260701152711.png)
121
+
122
+ - `FieldsetLoader` — Full trigger configuration form (displayed in the configuration drawer)
123
+ ![FieldsetLoader](https://static-docs.nocobase.com/20260701152822.png)
124
+
125
+ - `TriggerFieldsetLoader` — Input form for manual execution
126
+ ![FieldsetLoader](https://static-docs.nocobase.com/20260701152846.png)
127
+
128
+ When a Loader needs to point to a named export (rather than the default export) in a file, use `.then()` to remap:
87
129
 
88
130
  ```ts
89
- import { Plugin } from '@nocobase/client';
90
- import WorkflowPlugin from '@nocobase/plugin-workflow/client';
131
+ class MyTrigger extends Trigger {
132
+ title = 'My trigger';
91
133
 
134
+ PresetFieldsetLoader = () =>
135
+ import('./MyTriggerConfig').then((m) => ({ default: m.MyPresetConfig }));
136
+ FieldsetLoader = () => import('./MyTriggerConfig');
137
+ TriggerFieldsetLoader = () => import('./TriggerMyConfig');
138
+
139
+ validate(config) {
140
+ return Boolean(config?.collection && config?.mode);
141
+ }
142
+
143
+ createDefaultConfig() {
144
+ return { mode: 1 };
145
+ }
146
+ }
147
+ ```
148
+
149
+ ```tsx
150
+ // MyTriggerConfig.tsx
151
+ import { Form, Select } from 'antd';
152
+ import { CollectionCascader } from '@nocobase/plugin-workflow/client-v2';
153
+
154
+ // Preset form for creation (named export)
155
+ export function MyPresetConfig() {
156
+ return (
157
+ <Form.Item name={['config', 'collection']} label="Collection" rules={[{ required: true }]}>
158
+ <CollectionCascader />
159
+ </Form.Item>
160
+ );
161
+ }
162
+
163
+ // Full config form (default export)
164
+ export default function MyTriggerConfig() {
165
+ return (
166
+ <>
167
+ <Form.Item name={['config', 'collection']} label="Collection">
168
+ <CollectionCascader disabled />
169
+ </Form.Item>
170
+ <Form.Item name={['config', 'mode']} label="Mode">
171
+ <Select
172
+ options={[
173
+ { label: 'Created', value: 1 },
174
+ { label: 'Updated', value: 2 },
175
+ ]}
176
+ />
177
+ </Form.Item>
178
+ </>
179
+ );
180
+ }
181
+ ```
182
+
183
+ ### Register the Trigger
184
+
185
+ Register the trigger type with the workflow plugin instance within the extended plugin:
186
+
187
+ ```ts
188
+ import { Plugin } from '@nocobase/client-v2';
92
189
  import MyTrigger from './MyTrigger';
93
190
 
94
191
  export default class extends Plugin {
95
- // You can get and modify the app instance here
96
192
  async load() {
97
- const workflow = this.app.pm.get(WorkflowPlugin) as WorkflowPlugin;
193
+ const workflow = this.app.pm.get('workflow');
98
194
  workflow.registerTrigger('interval', MyTrigger);
99
195
  }
100
196
  }
@@ -106,4 +202,10 @@ After that, the new trigger type will be visible in the workflow configuration i
106
202
  The identifier of the trigger type registered on the client-side must be consistent with the one on the server-side, otherwise it will cause errors.
107
203
  :::
108
204
 
109
- For other details on defining trigger types, please refer to the [Workflow API Reference](./api#pluginregisterTrigger) section.
205
+ For a complete real-world example, refer to: [CollectionTrigger source code](https://github.com/nocobase/nocobase/blob/develop/packages/plugins/%40nocobase/plugin-workflow/src/client-v2/triggers/collection/index.tsx)
206
+
207
+ For other details on defining trigger types, please refer to the [Workflow API Reference](./api) section.
208
+
209
+ :::info{title=Note}
210
+ If you were previously using the legacy (v1) client-side code and want to migrate to the new v2 version, refer to the [v1 to v2 Migration Guide](./migration).
211
+ :::
@@ -48,16 +48,17 @@ var formFiller_default = (0, import_ai.defineTools)({
48
48
  execution: "frontend",
49
49
  introduction: {
50
50
  title: `{{t("Form filler", { ns: "${import_package.default.name}" })}}`,
51
- about: `{{t("Fill the form with the given content", { ns: "${import_package.default.name}" })}}`
51
+ about: `{{t("Fill form fields with the given content. This tool only writes values into the form UI; it does not submit or save the form.", { ns: "${import_package.default.name}" })}}`
52
52
  },
53
53
  definition: {
54
54
  name: "formFiller",
55
- description: "Fill the form with the given content",
55
+ description: "Fill form fields with the given content. This tool only writes values into the form UI; it does not submit, save, create, or update records. After using it, tell the user to review the filled values and manually submit the form.",
56
56
  schema: import_zod.z.object({
57
57
  form: import_zod.z.string().describe("The UI Schema ID of the target form to be filled."),
58
58
  data: import_zod.z.object({}).catchall(import_zod.z.any()).describe(
59
59
  `Structured key-value pairs matching the form's JSON Schema,
60
60
  to be assigned to form.values.
61
+ This only populates fields in the form UI and does not submit, save, create, or update records.
61
62
  Example: { "username": "alice", "email": "alice@example.com", "age": 30 }`
62
63
  )
63
64
  })
@@ -65,7 +66,7 @@ var formFiller_default = (0, import_ai.defineTools)({
65
66
  invoke: async () => {
66
67
  return {
67
68
  status: "success",
68
- content: "I have filled the form with the provided data."
69
+ content: "I have filled the form with the provided data. Please review the values and manually submit the form to save the data."
69
70
  };
70
71
  }
71
72
  });
@@ -40,9 +40,12 @@ var subAgentWebSearch_default = (0, import_ai.defineTools)({
40
40
  },
41
41
  definition: {
42
42
  name: "subAgentWebSearch",
43
- description: "Use the query to search the web and return concise, relevant findings with source links.",
43
+ description: "Search the web for current information. Put all independent search queries needed for this turn into one call so they can run in parallel. Do not call this tool repeatedly with similar queries unless the previous results are clearly insufficient for a critical missing fact.",
44
44
  schema: import_zod.z.object({
45
- query: import_zod.z.array(import_zod.z.string(), "A clear and specific web search query describing the information to retrieve.")
45
+ query: import_zod.z.array(
46
+ import_zod.z.string(),
47
+ "A list of clear, specific, non-overlapping web search queries. Include all independent queries needed for this answer in a single tool call so they can run in parallel."
48
+ )
46
49
  })
47
50
  },
48
51
  invoke: async (ctx, args, id) => {
@@ -51,7 +54,8 @@ var subAgentWebSearch_default = (0, import_ai.defineTools)({
51
54
  const { model } = ((_b = (_a = ctx.action) == null ? void 0 : _a.params) == null ? void 0 : _b.values) ?? {};
52
55
  const { provider } = await pluginAI.aiManager.getLLMService({
53
56
  ...model,
54
- webSearch: true
57
+ webSearch: true,
58
+ reasoning: { mode: "off" }
55
59
  });
56
60
  if (!((_c = args.query) == null ? void 0 : _c.length)) {
57
61
  return {
@@ -85,19 +89,20 @@ var subAgentWebSearch_default = (0, import_ai.defineTools)({
85
89
  };
86
90
  }
87
91
  });
88
- const WEB_SEARCH_SYSTEM_PROMPT = `You are a web search assistant.
92
+ const WEB_SEARCH_SYSTEM_PROMPT = `You are a web search retrieval assistant.
89
93
 
90
- Your primary task is to retrieve up-to-date information from the internet based on the user's input query.
94
+ Your output is for another AI model, not the final user-facing answer.
91
95
 
92
96
  Requirements:
93
- 1. Actively attempt web retrieval first. Use internet search to find relevant and recent information.
94
- 2. Summarize and synthesize findings clearly and concisely.
95
- 3. Explicitly cite sources for key points whenever possible (for example: website/publication name, article title, and URL if available).
96
- 4. Distinguish confirmed facts from uncertain or incomplete information.
97
- 5. Do not fabricate search results, sources, or real-time data.
98
- 6. If you cannot access reliable real-time information from the internet, clearly and honestly state that real-time retrieval was not possible, then provide the best available general information with that limitation noted.
97
+ 1. Retrieve current, relevant information for the query.
98
+ 2. Return concise findings only. Do not write a polished final answer.
99
+ 3. Include source title, publisher/site, URL, and publication or update date when available.
100
+ 4. Prefer authoritative and recent sources.
101
+ 5. Distinguish confirmed facts from uncertain or incomplete information.
102
+ 6. Do not fabricate results, sources, dates, or URLs.
103
+ 7. If results are weak, say exactly what is missing instead of broadening the search yourself.
99
104
 
100
- Output style:
101
- - Start with a brief direct answer.
102
- - Then provide a structured summary of findings.
103
- - End with a "Sources" section listing the origin of the information used.`;
105
+ Output format:
106
+ - Findings: 3-6 concise bullet points.
107
+ - Sources: numbered list with title, site, URL, and date when available.
108
+ - Gaps: one short sentence if important information could not be verified.`;
@@ -0,0 +1,10 @@
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
+ "use strict";(self.webpackChunk_nocobase_plugin_ai=self.webpackChunk_nocobase_plugin_ai||[]).push([["23"],{8178:function(e,t,r){r.r(t),r.d(t,{BusinessReportModal:function(){return j},BusinessReportModalFooter:function(){return P}});var n=r(9155),o=r.n(n),a=r(2059),i=r(7375),l=r(3485),u=r(9488),c=r(9305),s=r(1020);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function p(e,t,r,n,o,a,i){try{var l=e[a](i),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function f(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){p(a,n,o,i,l,"next",e)}function l(e){p(a,n,o,i,l,"throw",e)}i(void 0)})}}function y(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function m(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function v(e){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){m(e,t,r[t])})}return e}function g(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function w(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,n=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw n}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return d(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(k=function(){return!!e})()}function O(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(i,"next",{value:u(0)}),l(i,"throw",{value:u(1)}),l(i,"return",{value:u(2)}),"function"==typeof Symbol&&l(i,Symbol.iterator,{value:function(){return this}}),i;function u(l){return function(u){var c=[l,u];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var E=function(e){var t,r;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function n(){var e,t,r;if(!(this instanceof n))throw TypeError("Cannot call a class as a function");return t=n,r=arguments,t=v(t),m(e=function(e,t){var r;if(t&&("object"==((r=t)&&"u">typeof Symbol&&r.constructor===Symbol?"symbol":typeof r)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,k()?Reflect.construct(t,r||[],v(this).constructor):t.apply(this,r)),"state",{error:null,resetKey:e.props.resetKey}),e}return n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&h(n,e),t=[{key:"render",value:function(){return this.state.error?this.props.fallback(this.state.error):this.props.children}}],r=[{key:"getDerivedStateFromError",value:function(e){return{error:e}}},{key:"getDerivedStateFromProps",value:function(e,t){return e.resetKey!==t.resetKey?{error:null,resetKey:e.resetKey}:null}}],t&&y(n.prototype,t),r&&y(n,r),n}(o().Component),S=function(e){var t,r,d,p,y,m,v,h,k,E,S,P,j,M,T,B,R,x,A=e.tool,_=(0,u.kj)(),C=a.theme.useToken().token,L=(t=(0,u.kj)(),r=(0,l.useApp)().apiClient.auth.getLocale(),d=(0,n.useMemo)(function(){return(0,s.cZ)(g(b({},null==A?void 0:A.args),{generatedAt:null==A?void 0:A.invokeEndTime}))},[null==A?void 0:A.args,null==A?void 0:A.invokeEndTime]),p=!["done","confirmed"].includes(A.invokeStatus),y=!!((null==d?void 0:d.title)||(null==d?void 0:d.summary)||(null==d?void 0:d.markdown)),v=(m=w((0,n.useState)(null),2))[0],h=m[1],E=(k=w((0,n.useState)(null),2))[0],S=k[1],P=(0,n.useMemo)(function(){return JSON.stringify({title:(null==d?void 0:d.title)||"",summary:(null==d?void 0:d.summary)||"",markdown:(null==d?void 0:d.markdown)||"",charts:(null==d?void 0:d.charts)||[],generatedAt:(null==d?void 0:d.generatedAt)||null})},[d]),(0,n.useEffect)(function(){h(null),S(null)},[A.id]),(0,n.useEffect)(function(){"success"===A.status&&"done"===A.invokeStatus&&y&&P!==E&&(h(d),S(P))},[y,d,P,E,A.invokeStatus,A.status]),M=(null==(j=v||d)?void 0:j.title)||t("Business analysis report"),T=(0,n.useMemo)(function(){return(0,s.wP)(j,{locale:"string"==typeof r?r:void 0,t:t})},[j,r,t]),B=(0,n.useMemo)(function(){return(0,s.e4)(j)},[j]),R=(0,n.useMemo)(function(){return p?g(b({},j),{charts:[]}):j},[j,p]),x=(0,n.useMemo)(function(){return{content:(null==R?void 0:R.markdown)?(0,s.wP)(R,{locale:"string"==typeof r?r:void 0,t:t}):"# ".concat(M,"\n\n").concat((null==j?void 0:j.summary)||t("Generating business analysis report...")),type:"text",messageId:A.id}},[null==j?void 0:j.summary,r,R,t,M,A.id]),!y&&p?{displayReport:j,isGenerating:p,markdown:T,fileName:B,previewMessage:x,title:M,locale:"string"==typeof r?r:void 0,invalid:!1,loading:!0}:{displayReport:j,isGenerating:p,markdown:T,fileName:B,previewMessage:x,title:M,locale:"string"==typeof r?r:void 0,invalid:!(null==j?void 0:j.title)&&!(null==j?void 0:j.markdown)&&!p,loading:!1}),G=L.previewMessage,F=L.displayReport,D=L.isGenerating,I=L.title,K=L.invalid,N=L.loading,H=L.markdown,X="calc(100vh - ".concat(C.controlHeightLG+6*C.marginXXL,"px)"),J=w((0,n.useState)(""),2),U=J[0],W=J[1],z=(0,n.useMemo)(function(){return JSON.stringify({title:(null==F?void 0:F.title)||"",summary:(null==F?void 0:F.summary)||"",markdown:(null==F?void 0:F.markdown)||"",charts:(null==F?void 0:F.charts)||[],generatedAt:(null==F?void 0:F.generatedAt)||null})},[F]);return((0,n.useEffect)(function(){var e=!1;return f(function(){var t,r;return O(this,function(n){switch(n.label){case 0:if(!(null==F?void 0:F.markdown)||D)return W(""),[2];n.label=1;case 1:return n.trys.push([1,3,,4]),[4,(0,s.UV)(F,{locale:L.locale,t:_})];case 2:if(t=n.sent(),e)return[2];return W(function(e){return e===t?e:t}),[3,4];case 3:return r=n.sent(),e||(console.error("Failed to build business report HTML:",r),W("")),[3,4];case 4:return[2]}})})(),function(){e=!0}},[F,z,D,L.locale,_]),N)?o().createElement(a.Result,{icon:o().createElement(i.LoadingOutlined,{spin:!0}),title:_("Generating business analysis report..."),subTitle:_("The report modal will update in real time as new content arrives.")}):K?o().createElement(a.Alert,{type:"error",showIcon:!0,message:_("Invalid report definition")}):o().createElement("div",null,o().createElement("div",null,o().createElement("div",{style:{paddingRight:C.paddingSM}},o().createElement(a.Typography.Title,{level:4,style:{marginBottom:C.marginXXS}},I,D?o().createElement(a.Spin,{indicator:o().createElement(i.LoadingOutlined,{spin:!0}),size:"small",style:{marginLeft:C.marginSM}}):null),F.summary?o().createElement(a.Typography.Paragraph,{type:"secondary",style:{marginBottom:0}},F.summary):D?o().createElement(a.Typography.Paragraph,{type:"secondary",style:{marginBottom:0}},_("The report modal will update in real time as new content arrives.")):null)),o().createElement(a.Tabs,{style:{height:X},tabBarStyle:{marginBottom:C.marginSM},items:[{key:"preview",label:_("Preview"),children:o().createElement("div",{style:{height:X,overflow:"auto",padding:C.padding,border:"".concat(C.lineWidth,"px ").concat(C.lineType," ").concat(C.colorBorderSecondary),borderRadius:C.borderRadiusLG,background:C.colorBgContainer,color:C.colorText,boxShadow:"inset 0 ".concat(C.lineWidth,"px 0 ").concat(C.colorFillQuaternary)}},o().createElement(c.oz,{message:G},G.content))},{key:"markdown",label:_("Markdown"),children:o().createElement("pre",{style:{height:X,overflow:"auto",padding:C.padding,borderRadius:C.borderRadiusLG,background:C.colorText,color:C.colorBgContainer,whiteSpace:"pre-wrap",wordBreak:"break-word"}},H||_("Generating business analysis report..."))},{key:"html",label:_("HTML"),children:U?o().createElement("iframe",{title:I,srcDoc:U,style:{width:"100%",height:X,border:"".concat(C.lineWidth,"px ").concat(C.lineType," ").concat(C.colorBorderSecondary),borderRadius:C.borderRadiusLG,background:C.colorBgContainer}}):o().createElement(a.Result,{icon:o().createElement(i.LoadingOutlined,{spin:!0}),title:_("Generating business analysis report...")})}]}))},P=function(e){var t=e.tool,r=(0,u.kj)(),c=(0,l.useApp)(),d=a.App.useApp().message,p=c.apiClient.auth.getLocale(),y=(0,n.useMemo)(function(){return(0,s.cZ)(g(b({},null==t?void 0:t.args),{generatedAt:null==t?void 0:t.invokeEndTime}))},[null==t?void 0:t.args,null==t?void 0:t.invokeEndTime]),m=!["done","confirmed"].includes(t.invokeStatus),v=(0,n.useMemo)(function(){return(0,s.wP)(y,{locale:"string"==typeof p?p:void 0,t:r})},[p,y,r]),h=(0,n.useMemo)(function(){return(0,s.e4)(y)},[y]),k=w((0,n.useState)(!1),2),E=k[0],S=k[1],P=!!(null==y?void 0:y.markdown);return o().createElement(a.Space,{wrap:!0,style:{justifyContent:"flex-end",width:"100%"}},o().createElement(a.Button,{icon:o().createElement(i.FileMarkdownOutlined,null),disabled:m||!P,onClick:function(){return(0,s.MT)("".concat(h,".md"),v,"text/markdown;charset=utf-8")}},r("Download Markdown")),o().createElement(a.Button,{icon:o().createElement(i.FileTextOutlined,null),disabled:m||!P||E,onClick:function(){return f(function(){var e;return O(this,function(t){switch(t.label){case 0:S(!0),t.label=1;case 1:return t.trys.push([1,,3,4]),[4,(0,s.UV)(y,{printMode:!0,locale:"string"==typeof p?p:void 0,t:r})];case 2:return e=t.sent(),(0,s.MT)("".concat(h,".html"),e,"text/html;charset=utf-8"),[3,4];case 3:return S(!1),[7];case 4:return[2]}})})()}},r("Download HTML")),o().createElement(a.Button,{type:"primary",icon:o().createElement(i.FilePdfOutlined,null),loading:E,disabled:m||!P||E,onClick:function(){return f(function(){return O(this,function(e){switch(e.label){case 0:S(!0),e.label=1;case 1:return e.trys.push([1,3,4,5]),[4,(0,s.Y_)(y,{locale:"string"==typeof p?p:void 0,t:r})];case 2:return e.sent()||d.error(r("Popup blocked. Please allow popups and try again.")),[3,5];case 3:return console.error("Failed to print business report:",e.sent()),d.error(r("Popup blocked. Please allow popups and try again.")),[3,5];case 4:return S(!1),[7];case 5:return[2]}})})()}},r("Print PDF")))},j=function(e){var t=e.tool,r=(0,u.kj)(),n="".concat(t.id,":").concat(t.invokeStatus,":").concat(JSON.stringify(t.args));return o().createElement(E,{resetKey:n,fallback:function(e){return o().createElement(a.Alert,{type:"error",showIcon:!0,message:r("Invalid report definition"),description:e.message})}},o().createElement(S,{tool:t}))};j.displayName="BusinessReportModal",P.displayName="BusinessReportModalFooter"}}]);
@@ -0,0 +1,10 @@
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
+ "use strict";(self.webpackChunk_nocobase_plugin_ai=self.webpackChunk_nocobase_plugin_ai||[]).push([["264"],{2851:function(e,t,n){n.r(t),n.d(t,{MCPSettingsPage:function(){return ei},createMCPClient:function(){return V},createMCPRequestVariableNode:function(){return J},deleteMCPClient:function(){return X},deleteMCPClients:function(){return _},getMCPToolsByServer:function(){return U},listMCPClients:function(){return z},listMCPTools:function(){return $},rebuildMCPClient:function(){return W},sanitizeMCPValues:function(){return D},testMCPConnection:function(){return L},toMCPFormValues:function(){return N},updateMCPClient:function(){return H},updateMCPClientEnabled:function(){return K},updateMCPToolPermission:function(){return G}});var r=n(9155),a=n.n(r),l=n(2059),i=n(7375),u=n(5477),o=n(3485),c=n(7694),s=n(9488),f=n(9312),m=n(8666);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function p(e,t,n,r,a,l,i){try{var u=e[l](i),o=u.value}catch(e){n(e);return}u.done?t(o):Promise.resolve(o).then(r,a)}function b(e){return function(){var t=this,n=arguments;return new Promise(function(r,a){var l=e.apply(t,n);function i(e){p(l,r,a,i,u,"next",e)}function u(e){p(l,r,a,i,u,"throw",e)}i(void 0)})}}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e,t){return null!=t&&"u">typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){h(e,t,n[t])})}return e}function v(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function E(e,t){if(null==e)return{};var n,r,a,l={};if("u">typeof Reflect&&Reflect.ownKeys){for(a=0,n=Reflect.ownKeys(Object(e));a<n.length;a++)r=n[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r]);return l}if(l=function(e,t){if(null==e)return{};var n,r,a={},l=Object.getOwnPropertyNames(e);for(r=0;r<l.length;r++)n=l[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}(e,t),Object.getOwnPropertySymbols)for(a=0,n=Object.getOwnPropertySymbols(e);a<n.length;a++)r=n[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r]);return l}function C(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var l=[],i=!0,u=!1;try{for(a=a.call(e);!(i=(n=a.next()).done)&&(l.push(n.value),!t||l.length!==t);i=!0);}catch(e){u=!0,r=e}finally{try{i||null==a.return||a.return()}finally{if(u)throw r}}return l}}(e,t)||S(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||S(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(e,t)}}function x(e,t){var n,r,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),u=Object.defineProperty;return u(i,"next",{value:o(0)}),u(i,"throw",{value:o(1)}),u(i,"return",{value:o(2)}),"function"==typeof Symbol&&u(i,Symbol.iterator,{value:function(){return this}}),i;function o(u){return function(o){var c=[u,o];if(n)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(l=0)),l;)try{if(n=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return l.label++,{value:c[1],done:!1};case 5:l.label++,r=c[1],c=[0];continue;case 7:c=l.ops.pop(),l.trys.pop();continue;default:if(!(a=(a=l.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){l=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){l.label=c[1];break}if(6===c[0]&&l.label<a[1]){l.label=a[1],a=c;break}if(a&&l.label<a[2]){l.label=a[2],l.ops.push(c);break}a[2]&&l.ops.pop(),l.trys.pop();continue}c=t.call(e,l)}catch(e){c=[6,e],r=0}finally{n=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function P(){var e,t,n=(e=["\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n\n .ant-spin-nested-loading,\n .ant-spin-container,\n .ant-table,\n .ant-table-container {\n min-height: 0;\n flex: 1;\n display: flex;\n flex-direction: column;\n }\n\n .ant-table-content {\n flex: 1;\n min-height: 0;\n }\n\n .ant-table-body {\n flex: 1;\n min-height: 0;\n }\n\n .ant-table-thead > tr > th {\n white-space: nowrap;\n }\n\n .ant-pagination {\n flex: 0 0 auto;\n }\n"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return P=function(){return n},n}var O=[{label:"Stdio",value:"stdio"},{label:"HTTP (Streamable)",value:"http"},{label:"HTTP + SSE (Legacy)",value:"sse"}],A={stdio:"blue",http:"green",sse:"gold"},F=(0,u.css)(P()),k=function(e){return null!==e&&(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"&&!Array.isArray(e)},j=function(e){var t,n;if(k(e))return null!=(t=null==(n=e.data)?void 0:n.data)?t:e.data},T=function(e){if(k(e)){var t,n=null==(t=e.data)?void 0:t.count;return"number"==typeof n?n:void 0}},M=function(e,t,n,r){return b(function(){var a;return x(this,function(l){if("function"!=typeof(a=e.resource(t)[n]))throw Error("Missing resource action: ".concat(t,".").concat(n));return[2,a(r)]})})()},I=function(e){var t;return k(e)&&"string"==typeof e.name&&("stdio"===(t=e.transport)||"http"===t||"sse"===t)},q=function(e){return k(e)&&"string"==typeof e.name&&"string"==typeof e.title&&"string"==typeof e.serverName},R=function(e){return Object.entries(e||{}).map(function(e){var t=C(e,2),n=t[0],r=t[1];return{name:n,value:null==r?"":String(r)}})},B=function(e){return k(e)?Object.entries(e).reduce(function(e,t){var n=C(t,2),r=n[0],a=n[1];return r&&(e[r]=null==a?"":String(a)),e},{}):(Array.isArray(e)?e:[]).reduce(function(e,t){return(null==t?void 0:t.name)&&(e[t.name]=t.value||""),e},{})},D=function(e){var t=e.transport,n=v(g({},e),{useUserContext:"stdio"!==t&&!0===e.useUserContext,args:"string"==typeof e.args?e.args.split(" ").map(function(e){return e.trim()}).filter(Boolean):Array.isArray(e.args)?e.args:[],env:B(e.env),headers:B(e.headers),restart:k(e.restart)?e.restart:{}});return"stdio"===t?v(g({},n),{url:null,headers:{}}):v(g({},n),{command:null,args:[],env:{}})},N=function(e){return v(g({},e),{args:Array.isArray(e.args)?e.args.join(" "):"",env:R(e.env),headers:R(e.headers),restart:k(e.restart)?e.restart:{}})},U=function(e,t){var n=null==e?void 0:e[t];return Array.isArray(n)?n.filter(q):[]};function z(e){return b(function(){var t,n;return x(this,function(r){switch(r.label){case 0:return[4,M(e,"aiMcpClients","list")];case 1:return[2,{data:Array.isArray(n=j(t=r.sent()))?n.filter(I):[],total:T(t)}]}})})()}function L(e,t){return b(function(){var n;return x(this,function(r){switch(r.label){case 0:return[4,M(e,"aiMcpClients","testConnection",{values:D(t)})];case 1:var a;return[2,k(a=n=j(r.sent()))&&"boolean"==typeof a.success?n:null]}})})()}function V(e,t){return b(function(){return x(this,function(n){switch(n.label){case 0:return[4,M(e,"aiMcpClients","create",{values:D(t)})];case 1:return n.sent(),[2]}})})()}function H(e,t,n){return b(function(){return x(this,function(r){switch(r.label){case 0:return[4,M(e,"aiMcpClients","update",{values:D(t),filterByTk:n})];case 1:return r.sent(),[2]}})})()}function X(e,t){return b(function(){return x(this,function(n){switch(n.label){case 0:return[4,M(e,"aiMcpClients","destroy",{filterByTk:t})];case 1:return n.sent(),[2]}})})()}function _(e,t){return b(function(){return x(this,function(n){switch(n.label){case 0:return[4,M(e,"aiMcpClients","destroy",{filterByTk:t})];case 1:return n.sent(),[2]}})})()}function K(e,t,n){return b(function(){return x(this,function(r){switch(r.label){case 0:return[4,M(e,"aiMcpClients","update",{filterByTk:t,values:{enabled:n}})];case 1:return r.sent(),[2]}})})()}function W(e){return b(function(){return x(this,function(t){switch(t.label){case 0:return[4,M(e,"aiMcpClients","rebuildClient")];case 1:return t.sent(),[2]}})})()}function $(e,t){return b(function(){var n;return x(this,function(r){switch(r.label){case 0:return[4,M(e,"aiMcpClients","listTools")];case 1:return[2,k(n=j(r.sent()))?U(n,t):[]]}})})()}function G(e,t,n){return b(function(){return x(this,function(r){switch(r.label){case 0:return[4,M(e,"aiMcpClients","updateToolPermission",{values:{toolName:t,permission:n}})];case 1:return r.sent(),[2]}})})()}var J=function(e){return{name:"request",title:e("NocoBase request"),type:"object",paths:["request"],children:[{name:"headers",title:"headers",type:"object",paths:["request","headers"],children:[{name:"x-app",title:"X-App",type:"string",paths:["request","headers","x-app"]},{name:"x-locale",title:"X-Locale",type:"string",paths:["request","headers","x-locale"]},{name:"x-hostname",title:"X-Hostname",type:"string",paths:["request","headers","x-hostname"]},{name:"x-timezone",title:"X-Timezone",type:"string",paths:["request","headers","x-timezone"]},{name:"x-role",title:"X-Role",type:"string",paths:["request","headers","x-role"]},{name:"x-authenticator",title:"X-Authenticator",type:"string",paths:["request","headers","x-authenticator"]}]},{name:"token",title:"Token",type:"string",paths:["request","token"]}]}},Q=function(e,t){var n,r=(null==(n=e.paths)?void 0:n.length)?[t].concat(w(e.paths.slice(1))):[t];return v(g({},e),{name:1===r.length?t:e.name,paths:r,children:function(e){if(e)return"function"==typeof e?function(){return b(function(){return x(this,function(n){switch(n.label){case 0:return[4,e()];case 1:return[2,n.sent().map(function(e){return Q(e,t)})]}})})()}:e.map(function(e){return Q(e,t)})}(e.children)})},Y=function(e){var t=(0,c.useFlowContext)(),n=(0,s.kj)();return(0,r.useMemo)(function(){if(!e)return[];var r,a=null==(r=t.getPropertyMetaTree)?void 0:r.call(t).find(function(e){return"user"===e.name});return[a?Q(a,"$user"):null,J(n)].filter(function(e){return!!e})},[e,t,n])},Z=function(e){var t=e.variableScope,n=E(e,["variableScope"]),r=l.Form.useFormInstance(),i=l.Form.useWatch("useUserContext",r),u=Y("user"===(void 0===t?"env":t)&&!0===i);return a().createElement(o.VariableInput,v(g({},n),{namespaces:["$env"],extraNodes:u}))},ee=function(e){var t=e.tooltip,n=E(e,["tooltip"]),i=l.Form.useFormInstance(),u="stdio"===l.Form.useWatch("transport",i);(0,r.useEffect)(function(){u&&i.getFieldValue("useUserContext")&&i.setFieldValue("useUserContext",!1)},[u,i]);var o=a().createElement(l.Checkbox,v(g({},n),{disabled:u||n.disabled}));return t?a().createElement(l.Tooltip,{title:t},o):o},et=function(e){var t=e.value,n=e.onChange,r=e.addLabel,u=e.variableScope,o=void 0===u?"env":u,c=(0,s.kj)(),f=Array.isArray(t)?t:R(t),m=function(e,t,r){var a=w(f);a[e]=v(g({},a[e]),h({},t,r)),null==n||n(a)};return a().createElement(l.Flex,{vertical:!0,gap:"small"},f.map(function(e,t){return a().createElement(l.Flex,{key:t,gap:"small",align:"baseline"},a().createElement(l.Input,{placeholder:c("Name"),value:e.name,onChange:function(e){return m(t,"name",e.target.value)}}),a().createElement(Z,{variableScope:o,value:e.value,onChange:function(e){return m(t,"value",e)}}),a().createElement(l.Button,{"aria-label":c("Delete"),type:"text",icon:a().createElement(i.DeleteOutlined,null),onClick:function(){return null==n?void 0:n(f.filter(function(e,n){return n!==t}))}}))}),a().createElement(l.Button,{type:"dashed",icon:a().createElement(i.PlusOutlined,null),onClick:function(){return null==n?void 0:n(w(f).concat([{name:"",value:""}]))}},r))},en=function(e){var t=e.editing,n=e.testResult,r=e.testing,i=(0,s.kj)(),u=l.Form.useFormInstance(),o=l.Form.useWatch("transport",u);return a().createElement(a().Fragment,null,a().createElement(l.Form.Item,{name:"name",label:i("Name"),rules:[{required:!0}]},a().createElement(l.Input,{disabled:t})),a().createElement(l.Form.Item,{name:"title",label:i("Title"),rules:[{required:!0}]},a().createElement(l.Input,null)),a().createElement(l.Form.Item,{name:"description",label:i("Description")},a().createElement(l.Input.TextArea,{autoSize:{minRows:2,maxRows:4}})),a().createElement(l.Form.Item,{name:"transport",label:i("Transport"),rules:[{required:!0}]},a().createElement(l.Select,{options:O.map(function(e){return v(g({},e),{label:i(e.label)})})})),a().createElement(l.Form.Item,{name:"useUserContext",label:i("Depends on current user"),valuePropName:"checked"},a().createElement(ee,{tooltip:i("When enabled, URL and headers can use current user variables and NocoBase request variables. Stdio transport is not supported.")})),"stdio"===o?a().createElement(a().Fragment,null,a().createElement(l.Form.Item,{name:"command",label:i("Command"),rules:[{required:!0}]},a().createElement(Z,{placeholder:i("For example: npx, uvx, node")})),a().createElement(l.Form.Item,{name:"args",label:i("Arguments")},a().createElement(Z,{placeholder:i("Space-separated args, e.g.: -u --flag value")})),a().createElement(l.Form.Item,{name:"env",label:i("Environment variables")},a().createElement(et,{addLabel:i("Add variable")}))):null,"http"===o||"sse"===o?a().createElement(a().Fragment,null,a().createElement(l.Form.Item,{name:"url",label:i("URL"),rules:[{required:!0}]},a().createElement(Z,{variableScope:"user",placeholder:i("For example: https://example.com/mcp")})),a().createElement(l.Form.Item,{name:"headers",label:i("Headers")},a().createElement(et,{variableScope:"user",addLabel:i("Add request header")}))):null,a().createElement(er,{result:n,loading:r}))},er=function(e){var t,n=e.result,r=e.loading,u=(0,s.kj)();return r?a().createElement(l.Flex,{justify:"center"},a().createElement(l.Spin,{tip:u("Testing connection...")})):n?n.success?a().createElement(l.Alert,{type:"success",showIcon:!0,icon:a().createElement(i.CheckCircleOutlined,null),message:u("Connection Successful"),description:a().createElement(l.Flex,{vertical:!0,gap:"small"},a().createElement("span",null,u("Successfully connected to MCP server")),a().createElement("span",null,u("Tools found"),": ",n.toolsCount),(null==(t=n.tools)?void 0:t.length)?a().createElement(l.Space,{wrap:!0},n.tools.map(function(e){return a().createElement(l.Tag,{key:e},e)}),n.toolsTruncated?a().createElement("span",null,"..."):null):null)}):a().createElement(l.Alert,{type:"error",showIcon:!0,icon:a().createElement(i.CloseCircleOutlined,null),message:u("Connection Failed"),description:a().createElement(l.Flex,{vertical:!0,gap:"small"},a().createElement("span",null,n.error||u("Failed to connect to MCP server")),n.details?a().createElement(l.Typography.Text,{code:!0},n.details):null)}):null},ea=function(e){var t=e.record,n=e.rebuilding,i=(0,o.useApp)(),u=(0,s.kj)(),c=l.App.useApp().message,f=C((0,r.useState)([]),2),m=f[0],d=f[1],p=C((0,r.useState)(!1),2),h=p[0],E=p[1],w=C((0,r.useState)(null),2),S=w[0],P=w[1],O=(0,r.useRef)(c),A=(0,r.useRef)(u);return(O.current=c,A.current=u,(0,r.useEffect)(function(){var e=!1;return b(function(){var n,r;return x(this,function(a){switch(a.label){case 0:E(!0),a.label=1;case 1:return a.trys.push([1,3,4,5]),[4,$(i.apiClient,t.name)];case 2:return n=a.sent(),e||d(n),[3,5];case 3:return r=a.sent(),e||(O.current.error(y(r,Error)?r.message:A.current("Failed to load MCP tools")),d([])),[3,5];case 4:return e||E(!1),[7];case 5:return[2]}})})().catch(function(e){console.error(e)}),function(){e=!0}},[i.apiClient,t.name]),h)?a().createElement(l.Flex,{justify:"center"},a().createElement(l.Spin,null)):m.length?a().createElement(l.List,{itemLayout:"vertical",dataSource:m,pagination:{pageSize:10,hideOnSinglePage:!1,size:"small",showTotal:function(e){return u("Total {{count}} items",{count:e})}},renderItem:function(e){return a().createElement(l.List.Item,{key:e.name,extra:a().createElement(l.Space,null,a().createElement(l.Typography.Text,{type:"secondary"},u("Permission")),a().createElement(l.Segmented,{size:"small",options:[{label:u("Ask"),value:"ASK"},{label:u("Allow"),value:"ALLOW"}],value:e.permission,disabled:n||S===e.name,onChange:function(t){var n;return n=e.name,b(function(){var e,r;return x(this,function(a){switch(a.label){case 0:e=m,P(n),d(function(e){return e.map(function(e){return e.name===n?v(g({},e),{permission:t}):e})}),a.label=1;case 1:return a.trys.push([1,3,4,5]),[4,G(i.apiClient,n,t)];case 2:return a.sent(),[3,5];case 3:return r=a.sent(),d(e),O.current.error(y(r,Error)?r.message:A.current("Failed to update tool permission")),[3,5];case 4:return P(null),[7];case 5:return[2]}})})()}}))},a().createElement("div",null,e.title),e.description?a().createElement(l.Typography.Paragraph,{type:"secondary",ellipsis:{rows:3,expandable:"collapsible"}},e.description):null)}}):a().createElement(l.Empty,{image:l.Empty.PRESENTED_IMAGE_SIMPLE,description:u("No data")})},el=function(e){var t=e.record,n=e.rebuilding,i=e.onUpdated,u=(0,o.useApp)(),c=C((0,r.useState)(!1),2),s=c[0],f=c[1];return a().createElement(l.Switch,{size:"small",checked:!1!==t.enabled,loading:s,disabled:n,onChange:function(e){return b(function(){return x(this,function(n){switch(n.label){case 0:f(!0),n.label=1;case 1:return n.trys.push([1,,5,6]),[4,K(u.apiClient,t.name,e)];case 2:return n.sent(),[4,W(u.apiClient)];case 3:return n.sent(),[4,i()];case 4:return n.sent(),[3,6];case 5:return f(!1),[7];case 6:return[2]}})})()}})},ei=function(){var e=(0,o.useApp)(),t=(0,c.useFlowContext)(),n=(0,s.kj)(),u=l.App.useApp(),m=u.message;u.modal;var d=l.theme.useToken().token,p=C((0,r.useState)([]),2),h=p[0],y=p[1],g=C((0,r.useState)(!1),2),v=g[0],E=g[1],w=C((0,r.useState)([]),2),S=w[0],P=w[1],k=C((0,r.useState)(!1),2),j=k[0],T=k[1],M=(0,r.useRef)(Promise.resolve()),I=(0,r.useRef)(0),q=(0,r.useMemo)(function(){return{color:d.colorPrimary,marginInline:-d.paddingSM,paddingBlockEnd:d.paddingSM,paddingBlockStart:d.paddingSM+d.paddingXS,paddingInlineEnd:d.paddingXS+d.paddingSM,paddingInlineStart:d.paddingSM}},[d.colorPrimary,d.paddingSM,d.paddingXS]),R=(0,r.useCallback)(function(){return b(function(){var t;return x(this,function(n){return I.current+=1,T(!0),t=M.current.catch(function(){}).then(function(){return b(function(){return x(this,function(t){switch(t.label){case 0:return[4,W(e.apiClient)];case 1:return t.sent(),[2]}})})()}),M.current=t.finally(function(){I.current-=1,0===I.current&&T(!1)}),[2,t]})})()},[e.apiClient]),B=(0,r.useCallback)(function(){return b(function(){return x(this,function(t){switch(t.label){case 0:E(!0),t.label=1;case 1:return t.trys.push([1,,3,4]),[4,z(e.apiClient)];case 2:return y(t.sent().data),[3,4];case 3:return E(!1),[7];case 4:return[2]}})})()},[e.apiClient]);(0,r.useEffect)(function(){B().catch(function(e){console.error(e),E(!1)})},[B]);var D=function(e){t.viewer.open({type:"drawer",width:f.o,closable:!0,content:a().createElement(eu,{record:e,rebuilding:j,rebuildClient:R,onSubmitted:B})})},N=[{title:n("Name"),dataIndex:"name"},{title:n("Title"),dataIndex:"title"},{title:n("Transport"),dataIndex:"transport",render:function(e){var t,r=(null==(t=O.find(function(t){return t.value===e}))?void 0:t.label)||e;return a().createElement(l.Tag,{color:A[e]},n(r))}},{title:n("Enabled"),dataIndex:"enabled",render:function(e,t){return a().createElement(el,{record:t,rebuilding:j,onUpdated:B})}},{title:n("Actions"),key:"actions",render:function(r,i){return a().createElement(l.Space,{size:d.marginXS},a().createElement("a",{style:q,onClick:function(){t.viewer.open({type:"drawer",width:f.p,closable:!0,content:a().createElement(eo,{record:i,rebuilding:j})})}},n("View")),a().createElement("a",{style:q,onClick:function(){return D(i)}},n("Edit")),a().createElement(l.Popconfirm,{title:n("Delete record"),description:n("Are you sure you want to delete it?"),onConfirm:function(){return b(function(){return x(this,function(t){switch(t.label){case 0:return[4,X(e.apiClient,i.name)];case 1:return t.sent(),[4,R()];case 2:return t.sent(),m.success(n("Saved successfully")),[4,B()];case 3:return t.sent(),[2]}})})()}},a().createElement("a",{style:q},n("Delete"))))}}];return a().createElement(l.Card,{style:{display:"flex",flexDirection:"column",minHeight:"100%"},styles:{body:{display:"flex",flex:1,flexDirection:"column",minHeight:0}}},a().createElement(l.Flex,{vertical:!0,gap:"middle",style:{flex:1,minHeight:0}},a().createElement(l.Flex,{justify:"end",wrap:"wrap",gap:"middle"},a().createElement(l.Space,null,a().createElement(l.Button,{icon:a().createElement(i.ReloadOutlined,null),onClick:function(){return B()}},n("Refresh")),a().createElement(l.Popconfirm,{title:n("Delete record"),description:n("Are you sure you want to delete it?"),disabled:!S.length||j,onConfirm:function(){return b(function(){var t;return x(this,function(r){switch(r.label){case 0:if(!(t=S.filter(function(e){return"string"==typeof e})).length)return[2];return[4,_(e.apiClient,t)];case 1:return r.sent(),[4,R()];case 2:return r.sent(),P([]),m.success(n("Saved successfully")),[4,B()];case 3:return r.sent(),[2]}})})()}},a().createElement(l.Button,{icon:a().createElement(i.DeleteOutlined,null),disabled:!S.length||j},n("Delete"))),a().createElement(l.Button,{type:"primary",icon:a().createElement(i.PlusOutlined,null),onClick:function(){t.viewer.open({type:"drawer",width:f.o,closable:!0,content:a().createElement(eu,{rebuilding:j,rebuildClient:R,onSubmitted:B})})},disabled:j},n("Add new")))),a().createElement("div",{style:{display:"flex",flex:1,flexDirection:"column",minHeight:0}},a().createElement(o.Table,{rowKey:"name",loading:v,columns:N,dataSource:h,className:F,rowSelection:{selectedRowKeys:S,onChange:P},pagination:{defaultPageSize:20,showTotal:function(e){return n("Total {{count}} items",{count:e})}},scroll:{x:"max-content",y:"100%"}}))))},eu=function(e){var t=e.record,n=e.rebuilding,i=e.rebuildClient,u=e.onSubmitted,f=(0,o.useApp)(),d=(0,c.useFlowContext)(),p=(0,s.kj)(),h=l.App.useApp(),g=h.message,v=h.modal,E=C(l.Form.useForm(),1)[0],w=C((0,r.useState)(!1),2),S=w[0],P=w[1],O=C((0,r.useState)(!1),2),A=O[0],F=O[1],k=C((0,r.useState)(null),2),j=k[0],T=k[1],M=C((0,r.useState)(!1),2),I=M[0],q=M[1],R=(0,r.useMemo)(function(){return t?N(t):{name:"",title:"",enabled:!0,transport:"stdio",useUserContext:!1,command:"",url:"",args:"",env:[],headers:[],restart:{}}},[t]),B=d.view,U=B.Header,z=B.Footer;(0,r.useEffect)(function(){E.setFieldsValue(R)},[E,R]);var X=(0,m.C)({view:d.view,form:E,initialValues:R,dirty:I,title:p("Unsaved changes"),content:p("Are you sure you don't want to save?")}),_=function(){return b(function(){var e,t,n;return x(this,function(r){switch(r.label){case 0:e=E.getFieldsValue(!0),F(!0),T(null),r.label=1;case 1:return r.trys.push([1,3,4,5]),[4,L(f.apiClient,e)];case 2:return T(t=r.sent()),[2,!!(null==t?void 0:t.success)];case 3:return T({success:!1,error:y(n=r.sent(),Error)?n.message:p("An error occurred while testing the connection")}),[2,!1];case 4:return F(!1),[7];case 5:return[2]}})})()};return a().createElement(a().Fragment,null,a().createElement(U,{title:t?p("Edit record"):p("Add new")}),a().createElement(l.Spin,{spinning:S},a().createElement(l.Form,{form:E,layout:"vertical",onFinish:function(e){return b(function(){return x(this,function(n){switch(n.label){case 0:P(!0),n.label=1;case 1:return n.trys.push([1,,12,13]),[4,_()];case 2:if(n.sent())return[3,4];if(!0!==D(e).useUserContext)return[2];return[4,v.confirm({title:p("Connection test failed"),content:p("The MCP server uses current user variables and the connection test failed. Do you want to save it anyway?"),okText:p("Save anyway"),cancelText:p("Cancel")})];case 3:if(!n.sent())return[2];n.label=4;case 4:if(!t)return[3,6];return[4,H(f.apiClient,e,t.name)];case 5:return n.sent(),[3,8];case 6:return[4,V(f.apiClient,e)];case 7:n.sent(),n.label=8;case 8:return[4,i()];case 9:return n.sent(),g.success(p("Saved successfully")),[4,u()];case 10:return n.sent(),[4,d.view.close(void 0,!0)];case 11:return n.sent(),[3,13];case 12:return P(!1),[7];case 13:return[2]}})})()},onValuesChange:function(){return q(!0)}},a().createElement(en,{editing:!!t,testResult:j,testing:A}))),a().createElement(z,null,a().createElement(l.Flex,{justify:"end",gap:"small"},a().createElement(l.Space,null,a().createElement(l.Button,{loading:A,onClick:function(){return _()}},p("Test flight")),a().createElement(l.Button,{onClick:X},p("Cancel")),a().createElement(l.Button,{type:"primary",loading:S||A||n,onClick:function(){return E.submit()}},p("Submit"))))))},eo=function(e){var t=e.record,n=e.rebuilding,r=(0,c.useFlowContext)(),l=(0,s.kj)(),i=r.view.Header;return a().createElement(a().Fragment,null,a().createElement(i,{title:l("MCP tools")}),a().createElement(ea,{record:t,rebuilding:n}))};t.default=ei}}]);