@nocobase/plugin-ai 2.2.0-alpha.3 → 2.2.0-alpha.5
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.
- package/client-v2.d.ts +1 -0
- package/dist/ai/docs/nocobase/api/app/env.md +28 -1
- package/dist/ai/docs/nocobase/api/cli/config/delete.md +8 -6
- package/dist/ai/docs/nocobase/api/cli/config/get.md +8 -6
- package/dist/ai/docs/nocobase/api/cli/config/index.md +37 -26
- package/dist/ai/docs/nocobase/api/cli/config/set.md +14 -8
- package/dist/ai/docs/nocobase/file-manager/field-attachment.md +6 -0
- package/dist/ai/docs/nocobase/file-manager/file-preview/index.md +3 -12
- package/dist/ai/docs/nocobase/file-manager/storage/aliyun-oss.md +9 -0
- package/dist/ai/docs/nocobase/file-manager/storage/amazon-s3.md +9 -0
- package/dist/ai/docs/nocobase/file-manager/storage/index.md +23 -0
- package/dist/ai/docs/nocobase/file-manager/storage/local.md +9 -0
- package/dist/ai/docs/nocobase/file-manager/storage/migrate-to-s3-pro.md +269 -0
- package/dist/ai/docs/nocobase/file-manager/storage/tencent-cos.md +9 -0
- package/dist/ai/docs/nocobase/get-started/installation/docker-caddy.mdx +170 -0
- package/dist/ai/docs/nocobase/get-started/installation/docker-nginx.mdx +172 -0
- package/dist/ai/docs/nocobase/get-started/installation/env.md +14 -4
- package/dist/ai/docs/nocobase/interface-builder/blocks/data-blocks/comment.md +107 -0
- package/dist/ai/docs/nocobase/ops-management/version-control/index.md +1 -0
- package/dist/ai/docs/nocobase/plugins/@nocobase/plugin-block-comment/index.md +14 -0
- package/dist/ai/docs/nocobase/workflow/development/api.md +259 -77
- package/dist/ai/docs/nocobase/workflow/development/index.md +2 -1
- package/dist/ai/docs/nocobase/workflow/development/migration.md +319 -0
- package/dist/ai/docs/nocobase/workflow/development/node.md +84 -51
- package/dist/ai/docs/nocobase/workflow/development/trigger.md +122 -20
- package/dist/client/23.65ea8c37cd4b884b.js +10 -0
- package/dist/client/264.cc98933ef65608b6.js +10 -0
- package/dist/client/336.7a8a8853196ad779.js +11 -0
- package/dist/client/372.da38fe350bf841f4.js +10 -0
- package/dist/client/416.92b74ca47e4099c4.js +10 -0
- package/dist/client/446.d63c38d0309fe250.js +10 -0
- package/dist/client/525.203778500aca5d05.js +10 -0
- package/dist/client/663.680bcf6272a8504d.js +10 -0
- package/dist/client/681.399948c18d753667.js +10 -0
- package/dist/client/705.380279da896021fb.js +10 -0
- package/dist/client/ai-employees/1.x/selector/AIContextCollector.d.ts +1 -4
- package/dist/client/ai-employees/permissions/PermissionsTab.d.ts +21 -5
- package/dist/client/index.d.ts +15 -20
- package/dist/client/index.js +8 -8
- package/dist/client/workflow/nodes/employee/index.d.ts +2 -23
- package/dist/client/workflow/nodes/llm/index.d.ts +2 -52
- package/dist/client/workflow/triggers/ai-employee/index.d.ts +2 -83
- package/dist/client-v2/23.1bcb6986b40723d8.js +10 -0
- package/dist/client-v2/264.be92ff6a4d2612f1.js +10 -0
- package/dist/client-v2/336.e406470429e0670e.js +11 -0
- package/dist/client-v2/372.d76ea1ceed2be2a4.js +10 -0
- package/dist/client-v2/406.341be51205c674e0.js +10 -0
- package/dist/client-v2/416.0e1c2d9cde43b83d.js +10 -0
- package/dist/client-v2/446.073d450882db29fd.js +10 -0
- package/dist/client-v2/457.d72febb89e88fc00.js +10 -0
- package/dist/client-v2/663.342341f0b2b412d8.js +10 -0
- package/dist/client-v2/681.082f4f1c7b841983.js +10 -0
- package/dist/client-v2/705.1d10027ff8cfdf79.js +10 -0
- package/dist/{client/ai-employees/admin/AvatarSelect.d.ts → client-v2/ai-employees/AIEmployeeDropdown.d.ts} +8 -9
- package/dist/client-v2/ai-employees/AIEmployeeShortcut.d.ts +9 -2
- package/dist/{client → client-v2}/ai-employees/AddContextButton.d.ts +1 -1
- package/dist/{client → client-v2}/ai-employees/ai-coding/AICodingButton.d.ts +2 -1
- package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Actions.d.ts +2 -4
- package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/AddLLMModal.d.ts +2 -4
- package/dist/client-v2/ai-employees/chatbox/components/Attachments.d.ts +27 -0
- package/dist/{client/ai-employees/permissions/Permissions.d.ts → client-v2/ai-employees/chatbox/components/ChatBox.d.ts} +2 -2
- package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ChatBoxLayout.d.ts +1 -1
- package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ContextItem.d.ts +1 -1
- package/dist/{client/ai-employees/admin/Employees.d.ts → client-v2/ai-employees/chatbox/components/DebugPanel.d.ts} +1 -1
- package/dist/{client/ai-employees/chatbox/markdown/Code.d.ts → client-v2/ai-employees/chatbox/components/Markdown.d.ts} +12 -5
- package/dist/{client/ai-employees/admin/ProfileSettings.d.ts → client-v2/ai-employees/chatbox/components/MessageContent.d.ts} +3 -2
- package/dist/client-v2/ai-employees/chatbox/components/MessageRenderers.d.ts +39 -0
- package/dist/{client/ai-employees/chatbox/generative-ui → client-v2/ai-employees/chatbox/components}/ToolCard.d.ts +7 -5
- package/dist/{client/ai-employees/admin/datasource/components/basic → client-v2/ai-employees/chatbox/components}/index.d.ts +5 -2
- package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChat.d.ts +21 -22
- package/dist/client-v2/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +3 -2
- package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatConversationActions.d.ts +2 -2
- package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatMessageActions.d.ts +8 -4
- package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useToolCallActions.d.ts +1 -1
- package/dist/client-v2/ai-employees/chatbox/hooks/useUploadFiles.d.ts +46 -0
- package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useWorkflowTasks.d.ts +1 -1
- package/dist/{client → client-v2}/ai-employees/chatbox/model.d.ts +9 -2
- package/dist/client-v2/ai-employees/chatbox/roles.d.ts +162 -0
- package/dist/client-v2/ai-employees/chatbox/stores/chat-box.d.ts +1 -49
- package/dist/client-v2/ai-employees/chatbox/stores/chat-conversations.d.ts +2 -19
- package/dist/client-v2/ai-employees/chatbox/stores/chat-messages.d.ts +1 -46
- package/dist/{client → client-v2}/ai-employees/chatbox/stores/chat-tool-call.d.ts +1 -15
- package/dist/client-v2/ai-employees/chatbox/stores/chat-tools.d.ts +30 -0
- package/dist/client-v2/ai-employees/chatbox/stores/create-selectors.d.ts +31 -3
- package/dist/{client/ai-employees/chatbox/conversations/common.d.ts → client-v2/ai-employees/chatbox/stores/workflow-tasks.d.ts} +21 -4
- package/dist/{client → client-v2}/ai-employees/chatbox/utils.d.ts +21 -6
- package/dist/{client/ai-employees/data-visualization/context.d.ts → client-v2/ai-employees/context/chart-config.d.ts} +1 -1
- package/dist/{client → client-v2}/ai-employees/context/code-editor.d.ts +1 -1
- package/dist/{client → client-v2}/ai-employees/context/datasource.d.ts +1 -1
- package/dist/{client → client-v2}/ai-employees/context/flow-models.d.ts +1 -1
- package/dist/{client/ai-employees/admin/datasource/components/DatasourceSettingDetail.d.ts → client-v2/ai-employees/data-modeling/setup.d.ts} +6 -5
- package/dist/{client → client-v2}/ai-employees/datasource/DatasourceSelector.d.ts +6 -2
- package/dist/{client/ai-employees/admin/datasource/flow-models/DatasourceSettingModel.d.ts → client-v2/ai-employees/flow/index.d.ts} +4 -6
- package/dist/{client → client-v2}/ai-employees/form-filler/tools/index.d.ts +1 -1
- package/dist/{client → client-v2}/ai-employees/stores/ai-selection.d.ts +4 -4
- package/dist/{client → client-v2}/ai-employees/stores/dialog-controller.d.ts +4 -4
- package/dist/{client/ai-employees/business-report/ui → client-v2/ai-employees/tools}/BusinessReportCard.d.ts +2 -2
- package/dist/{client/ai-employees/business-report/ui → client-v2/ai-employees/tools}/BusinessReportModal.d.ts +2 -2
- package/dist/{client/ai-employees/1.x/selector/withAISelectable.d.ts → client-v2/ai-employees/tools/ChartGeneratorCard.d.ts} +5 -4
- package/dist/{client/ai-employees/ai-coding/ui → client-v2/ai-employees/tools}/CodeToolCard.d.ts +1 -1
- package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools}/DataModelingCard.d.ts +3 -5
- package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools}/DataModelingModal.d.ts +4 -6
- package/dist/{client/ai-employees/sub-agents/ui → client-v2/ai-employees/tools}/SubAgentDispatchCard.d.ts +4 -9
- package/dist/{client/ai-employees/AISettingsProvider.d.ts → client-v2/ai-employees/tools/SuggestionsOptionsCard.d.ts} +6 -8
- package/dist/{client/ai-employees/workflow-tasks/ui → client-v2/ai-employees/tools}/WorkflowTaskOutputCard.d.ts +7 -2
- package/dist/{client/ai-employees/ai-coding/tools/context-tools.d.ts → client-v2/ai-employees/tools/ai-coding.d.ts} +3 -1
- package/dist/client-v2/ai-employees/tools/business-report-utils.d.ts +45 -0
- package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/CollectionNode.d.ts +2 -3
- package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/Diagram.d.ts +1 -1
- package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/Table.d.ts +2 -2
- package/dist/client-v2/ai-employees/tools/data-modeling/legacy-template.d.ts +13 -0
- package/dist/client-v2/ai-employees/tools/data-modeling/runtime.d.ts +15 -0
- package/dist/{client/ai-employees → client-v2/ai-employees/tools}/data-modeling/types.d.ts +27 -4
- package/dist/client-v2/ai-employees/tools/data-modeling/useFieldInterfaceOptions.d.ts +150 -0
- package/dist/{client/ai-employees/data-visualization/tools/index.d.ts → client-v2/ai-employees/tools/data-visualization.d.ts} +1 -1
- package/dist/client-v2/ai-employees/tools/index.d.ts +32 -0
- package/dist/client-v2/ai-employees/types.d.ts +101 -7
- package/dist/client-v2/components/RemoteSelect.d.ts +43 -0
- package/dist/{client → client-v2}/debug-logger.d.ts +2 -2
- package/dist/client-v2/f0053e745af0ad03.svg +50 -0
- package/dist/client-v2/index.d.ts +9 -8
- package/dist/client-v2/index.js +37 -1
- package/dist/client-v2/llm-providers/forms.d.ts +42 -0
- package/dist/client-v2/llm-providers/index.d.ts +23 -0
- package/dist/{client/ai-employees/ai-coding/tools/index.d.ts → client-v2/llm-services/utils.d.ts} +5 -3
- package/dist/client-v2/locale.d.ts +14 -0
- package/dist/{client → client-v2}/manager/ai-manager.d.ts +4 -5
- package/dist/client-v2/models/ai-employees/AIEmployeeActionModel.d.ts +33 -0
- package/dist/client-v2/models/ai-employees/AIEmployeeShortcutModel.d.ts +44 -0
- package/dist/client-v2/pages/AdminSettingsPage.d.ts +24 -0
- package/dist/client-v2/pages/DatasourceSettingsPage.d.ts +62 -0
- package/dist/client-v2/pages/EmployeesPage.d.ts +53 -0
- package/dist/client-v2/pages/LLMServicesPage.d.ts +75 -0
- package/dist/client-v2/pages/MCPSettingsPage.d.ts +73 -0
- package/dist/client-v2/pages/drawerWidth.d.ts +10 -0
- package/dist/client-v2/pages/permissions/Permissions.d.ts +67 -0
- package/dist/client-v2/pages/permissions/PermissionsTab.d.ts +12 -0
- package/dist/client-v2/pages/useUnsavedChangesBeforeClose.d.ts +29 -0
- package/dist/client-v2/plugin.d.ts +32 -0
- package/dist/client-v2/repositories/AIConfigRepository.d.ts +3 -23
- package/dist/client-v2/workflow/components/FormValueRegistry.d.ts +12 -0
- package/dist/{client/components/ListCollapse.d.ts → client-v2/workflow/components/WorkflowListCollapse.d.ts} +4 -4
- package/dist/client-v2/workflow/constants.d.ts +26 -0
- package/dist/client-v2/workflow/nodes/employee/components/AIEmployeeFieldset.d.ts +11 -0
- package/dist/{client/ai-employees/common/CodeHighlight.d.ts → client-v2/workflow/nodes/employee/components/AIEmployeeSelect.d.ts} +5 -6
- package/dist/{client/ai-employees/ContextAwareTooltip.d.ts → client-v2/workflow/nodes/employee/components/Assignees.d.ts} +2 -1
- package/dist/client-v2/workflow/nodes/employee/components/FeedbackSettings.d.ts +17 -0
- package/dist/client-v2/workflow/nodes/employee/components/FileInputs.d.ts +11 -0
- package/dist/{client/ai-employees/AIEmployeesProvider.d.ts → client-v2/workflow/nodes/employee/components/MessageInputs.d.ts} +2 -3
- package/dist/client-v2/workflow/nodes/employee/components/ModelOptions.d.ts +17 -0
- package/dist/{client/ai-employees/admin/datasource/components/basic/CollectionCascader.d.ts → client-v2/workflow/nodes/employee/components/SkillSettings.d.ts} +6 -3
- package/dist/client-v2/workflow/nodes/employee/components/StructuredOutput.d.ts +11 -0
- package/dist/client-v2/workflow/nodes/employee/components/UserInput.d.ts +18 -0
- package/dist/client-v2/workflow/nodes/employee/components/WebSearchOptions.d.ts +16 -0
- package/dist/client-v2/workflow/nodes/employee/index.d.ts +23 -0
- package/dist/{client/ai-employees/AIEmployeeListItem.d.ts → client-v2/workflow/nodes/llm/components/LLMFieldset.d.ts} +3 -5
- package/dist/{client/admin-settings/AdminSettings.d.ts → client-v2/workflow/nodes/llm/components/Messages.d.ts} +2 -1
- package/dist/client-v2/workflow/nodes/llm/components/StructuredOutput.d.ts +11 -0
- package/dist/client-v2/workflow/nodes/llm/index.d.ts +30 -0
- package/dist/{client/ai-employees/1.x/selector/BlockSelector.d.ts → client-v2/workflow/register.d.ts} +2 -6
- package/dist/client-v2/workflow/triggers/ai-employee/AIEmployeeTriggerConfig.d.ts +11 -0
- package/dist/client-v2/workflow/triggers/ai-employee/Parameters.d.ts +11 -0
- package/dist/client-v2/workflow/triggers/ai-employee/index.d.ts +25 -0
- package/dist/client-v2/workflow/types.d.ts +128 -0
- package/dist/externalVersion.js +20 -25
- package/dist/locale/en-US.json +42 -1
- package/dist/locale/zh-CN.json +42 -1
- package/dist/node_modules/@langchain/mistralai/LICENSE +21 -0
- package/dist/node_modules/@langchain/mistralai/dist/_virtual/rolldown_runtime.cjs +25 -0
- package/dist/node_modules/@langchain/mistralai/dist/chat_models.cjs +859 -0
- package/dist/node_modules/@langchain/mistralai/dist/chat_models.d.cts +541 -0
- package/dist/node_modules/@langchain/mistralai/dist/chat_models.d.ts +541 -0
- package/dist/node_modules/@langchain/mistralai/dist/chat_models.js +857 -0
- package/dist/node_modules/@langchain/mistralai/dist/embeddings.cjs +140 -0
- package/dist/node_modules/@langchain/mistralai/dist/embeddings.d.cts +116 -0
- package/dist/node_modules/@langchain/mistralai/dist/embeddings.d.ts +116 -0
- package/dist/node_modules/@langchain/mistralai/dist/embeddings.js +139 -0
- package/dist/node_modules/@langchain/mistralai/dist/index.cjs +21 -0
- package/dist/node_modules/@langchain/mistralai/dist/index.d.cts +4 -0
- package/dist/node_modules/@langchain/mistralai/dist/index.d.ts +4 -0
- package/dist/node_modules/@langchain/mistralai/dist/index.js +5 -0
- package/dist/node_modules/@langchain/mistralai/dist/llms.cjs +275 -0
- package/dist/node_modules/@langchain/mistralai/dist/llms.d.cts +147 -0
- package/dist/node_modules/@langchain/mistralai/dist/llms.d.ts +147 -0
- package/dist/node_modules/@langchain/mistralai/dist/llms.js +274 -0
- package/dist/node_modules/@langchain/mistralai/dist/utils.cjs +61 -0
- package/dist/node_modules/@langchain/mistralai/dist/utils.js +59 -0
- package/dist/node_modules/@langchain/mistralai/package.json +1 -0
- package/dist/node_modules/@langchain/xai/dist/index.cjs +2 -2
- package/dist/node_modules/@langchain/xai/package.json +1 -1
- package/dist/node_modules/fs-extra/package.json +1 -1
- package/dist/node_modules/jsonrepair/package.json +1 -1
- package/dist/node_modules/just-bash/package.json +1 -1
- package/dist/node_modules/nodejs-snowflake/package.json +1 -1
- package/dist/node_modules/openai/package.json +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/ai-employees/ai-employee.js +12 -5
- package/dist/server/ai-employees/checkpoints/cleaner.d.ts +2 -0
- package/dist/server/ai-employees/checkpoints/cleaner.js +11 -1
- package/dist/server/ai-employees/middleware/conversation.d.ts +2 -0
- package/dist/server/ai-employees/middleware/conversation.js +2 -1
- package/dist/server/ai-employees/utils.d.ts +3 -1
- package/dist/server/ai-employees/utils.js +2 -0
- package/dist/server/llm-providers/mistral.d.ts +62 -0
- package/dist/server/llm-providers/mistral.js +265 -0
- package/dist/server/llm-providers/provider.d.ts +6 -2
- package/dist/server/llm-providers/provider.js +27 -14
- package/dist/server/plugin.js +2 -0
- package/dist/server/workflow/nodes/employee/index.js +92 -46
- package/dist/server/workflow/nodes/employee/tools.js +8 -1
- package/package.json +6 -5
- package/dist/client/119.c6bf8c6433167d81.js +0 -10
- package/dist/client/170.d98eacdc00d9d527.js +0 -10
- package/dist/client/228.b4b709f93b86b6b9.js +0 -10
- package/dist/client/280.003b9e9788599244.js +0 -10
- package/dist/client/290.0f7f441d8a94f03c.js +0 -10
- package/dist/client/331.d547c95410476a69.js +0 -10
- package/dist/client/406.15c09d98faa2ccf1.js +0 -10
- package/dist/client/428.5eb4f53ddbb6a3b8.js +0 -10
- package/dist/client/462.d172d0fe91519e35.js +0 -10
- package/dist/client/486.dcac8f3fcec19c33.js +0 -10
- package/dist/client/502.2b4a51e0a8122e52.js +0 -10
- package/dist/client/525.33a9c8ec28be4ec4.js +0 -10
- package/dist/client/559.a0f2f1cc2be3c039.js +0 -10
- package/dist/client/561.7ec804ef39ec7dcd.js +0 -10
- package/dist/client/580.35ba54ff91b7fe6d.js +0 -10
- package/dist/client/597.b0d64948d74cf6cb.js +0 -10
- package/dist/client/604.89c674f35b52b4ef.js +0 -10
- package/dist/client/614.aa766080f6b99aab.js +0 -10
- package/dist/client/646.d4483b4ff23da0a0.js +0 -10
- package/dist/client/687.224e569a99cae4bb.js +0 -10
- package/dist/client/699.57c0a1acb723202a.js +0 -10
- package/dist/client/711.92cd94681fde7e05.js +0 -10
- package/dist/client/758.a9741e81911e53c3.js +0 -10
- package/dist/client/768.5177bff46ae71a5b.js +0 -10
- package/dist/client/792.abb57765453bcbcc.js +0 -10
- package/dist/client/820.f72ef2462b61d812.js +0 -10
- package/dist/client/832.0cf69e3f43c320b2.js +0 -10
- package/dist/client/927.d95c74ebb8fd51c9.js +0 -10
- package/dist/client/ai-employees/1.x/selector/AISelectorProvider.d.ts +0 -33
- package/dist/client/ai-employees/ProfileCard.d.ts +0 -15
- package/dist/client/ai-employees/admin/ChatSettings.d.ts +0 -10
- package/dist/client/ai-employees/admin/DataSourceSettings.d.ts +0 -10
- package/dist/client/ai-employees/admin/EnableSwitch.d.ts +0 -10
- package/dist/client/ai-employees/admin/InputsFormSettings.d.ts +0 -10
- package/dist/client/ai-employees/admin/KnowledgeBaseSettings.d.ts +0 -10
- package/dist/client/ai-employees/admin/ModelSettings.d.ts +0 -10
- package/dist/client/ai-employees/admin/SkillSettings.d.ts +0 -19
- package/dist/client/ai-employees/admin/SystemPrompt.d.ts +0 -10
- package/dist/client/ai-employees/admin/Templates.d.ts +0 -10
- package/dist/client/ai-employees/admin/ToolsSettings.d.ts +0 -17
- package/dist/client/ai-employees/admin/datasource/components/DatasourceSettingForm.d.ts +0 -10
- package/dist/client/ai-employees/admin/datasource/components/DatasourceSettingGrid.d.ts +0 -10
- package/dist/client/ai-employees/admin/datasource/components/basic/FieldsTransfer.d.ts +0 -17
- package/dist/client/ai-employees/admin/datasource/components/form-steps/CollectionSetting.d.ts +0 -17
- package/dist/client/ai-employees/admin/datasource/components/form-steps/FieldsSetting.d.ts +0 -15
- package/dist/client/ai-employees/admin/datasource/components/form-steps/FilterSetting.d.ts +0 -17
- package/dist/client/ai-employees/admin/datasource/components/form-steps/Preview.d.ts +0 -13
- package/dist/client/ai-employees/admin/datasource/components/form-steps/SortSetting.d.ts +0 -15
- package/dist/client/ai-employees/admin/datasource/components/form-steps/index.d.ts +0 -13
- package/dist/client/ai-employees/admin/datasource/components/index.d.ts +0 -9
- package/dist/client/ai-employees/admin/datasource/context.d.ts +0 -17
- package/dist/client/ai-employees/admin/datasource/flow-models/index.d.ts +0 -9
- package/dist/client/ai-employees/admin/datasource/index.d.ts +0 -10
- package/dist/client/ai-employees/admin/hooks.d.ts +0 -39
- package/dist/client/ai-employees/admin/mcp/MCPSettings.d.ts +0 -10
- package/dist/client/ai-employees/admin/mcp/MCPToolsList.d.ts +0 -19
- package/dist/client/ai-employees/admin/mcp/context.d.ts +0 -15
- package/dist/client/ai-employees/admin/mcp/schemas.d.ts +0 -1314
- package/dist/client/ai-employees/ai-coding/CodeHistory.d.ts +0 -10
- package/dist/client/ai-employees/ai-coding/markdown/Code.d.ts +0 -16
- package/dist/client/ai-employees/avatars.d.ts +0 -9
- package/dist/client/ai-employees/built-in/utils.d.ts +0 -15
- package/dist/client/ai-employees/business-report/tools/index.d.ts +0 -10
- package/dist/client/ai-employees/business-report/ui/report-utils.d.ts +0 -38
- package/dist/client/ai-employees/chart-generator/tools/index.d.ts +0 -10
- package/dist/client/ai-employees/chart-generator/ui/ECharts.d.ts +0 -13
- package/dist/client/ai-employees/chatbox/AIThinking.d.ts +0 -12
- package/dist/client/ai-employees/chatbox/Attachment.d.ts +0 -14
- package/dist/client/ai-employees/chatbox/AttachmentsHeader.d.ts +0 -10
- package/dist/client/ai-employees/chatbox/ChatBox.d.ts +0 -12
- package/dist/client/ai-employees/chatbox/ContextItemsHeader.d.ts +0 -10
- package/dist/client/ai-employees/chatbox/DebugPanel.d.ts +0 -16
- package/dist/client/ai-employees/chatbox/EditMessageHeader.d.ts +0 -10
- package/dist/client/ai-employees/chatbox/HintMessageHeader.d.ts +0 -10
- package/dist/client/ai-employees/chatbox/MessageRenderer.d.ts +0 -33
- package/dist/client/ai-employees/chatbox/SenderFooter.d.ts +0 -13
- package/dist/client/ai-employees/chatbox/SenderHeader.d.ts +0 -10
- package/dist/client/ai-employees/chatbox/SenderPrefix.d.ts +0 -10
- package/dist/client/ai-employees/chatbox/Upload.d.ts +0 -12
- package/dist/client/ai-employees/chatbox/VirtualList.d.ts +0 -28
- package/dist/client/ai-employees/chatbox/conversations/ConversationsList.d.ts +0 -13
- package/dist/client/ai-employees/chatbox/conversations/WorkflowTasksList.d.ts +0 -13
- package/dist/client/ai-employees/chatbox/conversations/index.d.ts +0 -9
- package/dist/client/ai-employees/chatbox/generative-ui/DefaultToolCard.d.ts +0 -16
- package/dist/client/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +0 -18
- package/dist/client/ai-employees/chatbox/hooks/useUploadFiles.d.ts +0 -12
- package/dist/client/ai-employees/chatbox/markdown/ECharts.d.ts +0 -10
- package/dist/client/ai-employees/chatbox/markdown/Form.d.ts +0 -10
- package/dist/client/ai-employees/chatbox/markdown/Generating.d.ts +0 -10
- package/dist/client/ai-employees/chatbox/markdown/Markdown.d.ts +0 -13
- package/dist/client/ai-employees/chatbox/roles.d.ts +0 -32
- package/dist/client/ai-employees/chatbox/stores/chat-box.d.ts +0 -9
- package/dist/client/ai-employees/chatbox/stores/chat-conversations.d.ts +0 -9
- package/dist/client/ai-employees/chatbox/stores/chat-messages.d.ts +0 -9
- package/dist/client/ai-employees/chatbox/stores/chat-tools.d.ts +0 -51
- package/dist/client/ai-employees/chatbox/stores/create-selectors.d.ts +0 -18
- package/dist/client/ai-employees/chatbox/stores/workflow-tasks.d.ts +0 -45
- package/dist/client/ai-employees/context/classic-pages.d.ts +0 -10
- package/dist/client/ai-employees/data-modeling/Table.d.ts +0 -12
- package/dist/client/ai-employees/data-modeling/setup.d.ts +0 -10
- package/dist/client/ai-employees/data-modeling/tools/index.d.ts +0 -10
- package/dist/client/ai-employees/data-modeling/ui/useFieldInterfaceOptions.d.ts +0 -14
- package/dist/client/ai-employees/datasource/DatasourceList.d.ts +0 -17
- package/dist/client/ai-employees/datasource/index.d.ts +0 -9
- package/dist/client/ai-employees/flow/events/index.d.ts +0 -9
- package/dist/client/ai-employees/flow/index.d.ts +0 -36
- package/dist/client/ai-employees/flow/models/AIEmployeeActionModel.d.ts +0 -18
- package/dist/client/ai-employees/flow/models/AIEmployeeShortcutModel.d.ts +0 -30
- package/dist/client/ai-employees/shortcuts/ShortcutList.d.ts +0 -10
- package/dist/client/ai-employees/shortcuts/useShortcuts.d.ts +0 -13
- package/dist/client/ai-employees/stores/context-aware.d.ts +0 -19
- package/dist/client/ai-employees/sub-agents/tools/index.d.ts +0 -10
- package/dist/client/ai-employees/suggestions/tools/index.d.ts +0 -10
- package/dist/client/ai-employees/suggestions/ui/SuggestionsOptions.d.ts +0 -13
- package/dist/client/ai-employees/types.d.ts +0 -259
- package/dist/client/ai-employees/workflow-tasks/tools/index.d.ts +0 -10
- package/dist/client/chat-settings/Messages.d.ts +0 -11
- package/dist/client/chat-settings/StructuredOutput.d.ts +0 -11
- package/dist/client/components/skill-settings.d.ts +0 -22
- package/dist/client/features/components.d.ts +0 -9
- package/dist/client/features/feature-manager.d.ts +0 -9
- package/dist/client/features/index.d.ts +0 -9
- package/dist/client/features/vector-database-provider.d.ts +0 -9
- package/dist/client/features/vector-store-provider.d.ts +0 -9
- package/dist/client/llm-providers/anthropic/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/anthropic/ProviderSettings.d.ts +0 -10
- package/dist/client/llm-providers/anthropic/index.d.ts +0 -10
- package/dist/client/llm-providers/components/Chat.d.ts +0 -10
- package/dist/client/llm-providers/components/ModelSelect.d.ts +0 -10
- package/dist/client/llm-providers/dashscope/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/dashscope/ProviderSettings.d.ts +0 -10
- package/dist/client/llm-providers/dashscope/index.d.ts +0 -10
- package/dist/client/llm-providers/deepseek/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/deepseek/index.d.ts +0 -10
- package/dist/client/llm-providers/google-genai/MessageRenderer.d.ts +0 -13
- package/dist/client/llm-providers/google-genai/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/google-genai/ProviderSettings.d.ts +0 -10
- package/dist/client/llm-providers/google-genai/index.d.ts +0 -10
- package/dist/client/llm-providers/kimi/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/kimi/index.d.ts +0 -10
- package/dist/client/llm-providers/mimo/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/mimo/index.d.ts +0 -10
- package/dist/client/llm-providers/ollama/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/ollama/ProviderSettings.d.ts +0 -10
- package/dist/client/llm-providers/ollama/index.d.ts +0 -10
- package/dist/client/llm-providers/openai/completions/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/openai/completions/index.d.ts +0 -10
- package/dist/client/llm-providers/openai/components/ProviderSettings.d.ts +0 -10
- package/dist/client/llm-providers/openai/responses/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/openai/responses/index.d.ts +0 -10
- package/dist/client/llm-providers/tongyi/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/tongyi/ProviderSettings.d.ts +0 -10
- package/dist/client/llm-providers/tongyi/index.d.ts +0 -10
- package/dist/client/llm-providers/xai/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/xai/index.d.ts +0 -10
- package/dist/client/llm-services/LLMServices.d.ts +0 -13
- package/dist/client/llm-services/component/DefaultModelSelect.d.ts +0 -10
- package/dist/client/llm-services/component/EnabledModelsSelect.d.ts +0 -23
- package/dist/client/llm-services/component/LLMTestFlight.d.ts +0 -10
- package/dist/client/llm-services/component/ModelOptionsSettings.d.ts +0 -10
- package/dist/client/llm-services/component/UnifiedModelSettings.d.ts +0 -10
- package/dist/client/llm-services/hooks/useLLMServiceCatalog.d.ts +0 -18
- package/dist/client/llm-services/llm-providers.d.ts +0 -27
- package/dist/client/llm-services/utils.d.ts +0 -30
- package/dist/client/manager/ai-feature-manager.d.ts +0 -9
- package/dist/client/repositories/AIConfigRepository.d.ts +0 -60
- package/dist/client/repositories/hooks/useAIConfigRepository.d.ts +0 -10
- package/dist/client/schemas/llms.d.ts +0 -347
- package/dist/client/workflow/nodes/employee/components/AIEmployeeSelect.d.ts +0 -10
- package/dist/client/workflow/nodes/employee/components/assigness.d.ts +0 -11
- package/dist/client/workflow/nodes/employee/components/file-inputs.d.ts +0 -10
- package/dist/client/workflow/nodes/employee/components/message-inputs.d.ts +0 -12
- package/dist/client/workflow/nodes/employee/components/model-options.d.ts +0 -10
- package/dist/client/workflow/nodes/employee/components/structured-output.d.ts +0 -10
- package/dist/client/workflow/nodes/employee/components/users-select.d.ts +0 -15
- package/dist/client/workflow/nodes/employee/components/web-search-options.d.ts +0 -10
- package/dist/client/workflow/nodes/employee/configuration.d.ts +0 -12
- package/dist/client/workflow/nodes/employee/flow-models/feedback.d.ts +0 -14
- package/dist/client/workflow/nodes/employee/flow-models/task.d.ts +0 -13
- package/dist/client/workflow/nodes/llm/ModelSettings.d.ts +0 -11
- package/dist/client/workflow/triggers/ai-employee/Parameters.d.ts +0 -13
- /package/dist/{client → client-v2}/ai-employees/AISelection.d.ts +0 -0
- /package/dist/{client → client-v2}/ai-employees/AISelectionControl.d.ts +0 -0
- /package/dist/{client → client-v2}/ai-employees/ai-coding/prompts.d.ts +0 -0
- /package/dist/{client → client-v2}/ai-employees/ai-coding/setup.d.ts +0 -0
- /package/dist/{client/ai-employees/chatbox/AIEmployeeSwitch.d.ts → client-v2/ai-employees/chatbox/components/AIEmployeeSwitcher.d.ts} +0 -0
- /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ChatButton.d.ts +0 -0
- /package/dist/{client/ai-employees/chatbox/conversations → client-v2/ai-employees/chatbox/components}/Conversations.d.ts +0 -0
- /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Messages.d.ts +0 -0
- /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ModelSwitcher.d.ts +0 -0
- /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/SearchSwitch.d.ts +0 -0
- /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Sender.d.ts +0 -0
- /package/dist/{client/ai-employees/chatbox/generative-ui → client-v2/ai-employees/chatbox/components}/ToolModal.d.ts +0 -0
- /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/UserPrompt.d.ts +0 -0
- /package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatBoxEffect.d.ts +0 -0
- /package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useLoadMoreObserver.d.ts +0 -0
- /package/dist/client-v2/ai-employees/{chatbox/stores → stores}/global-store.d.ts +0 -0
- /package/dist/{client/ai-employees/flow/models → client-v2/models/ai-employees}/AIEmployeeShortcutListModel.d.ts +0 -0
- /package/dist/{client/ai-employees/flow/models → client-v2/models/ai-employees}/index.d.ts +0 -0
- /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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
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
|
+

|
|
121
|
+
|
|
122
|
+
- `FieldsetLoader` — Full trigger configuration form (displayed in the configuration drawer)
|
|
123
|
+

|
|
124
|
+
|
|
125
|
+
- `TriggerFieldsetLoader` — Input form for manual execution
|
|
126
|
+

|
|
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
|
-
|
|
90
|
-
|
|
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(
|
|
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
|
|
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
|
+
:::
|
|
@@ -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}}]);
|