@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
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "v1 to v2 Migration Guide"
|
|
3
|
+
description: "Workflow extension development: guide for migrating client-side code from v1 to v2."
|
|
4
|
+
keywords: "workflow,migration,v1,v2,NocoBase"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# v1 to v2 Client-side Migration Guide
|
|
8
|
+
|
|
9
|
+
This guide describes how to migrate the client-side code of a workflow extension plugin from v1 to v2. The core change in the v2 client is replacing Formily Schema declarative configuration UIs with a Loader + pure React/antd component approach.
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
### Main Changes
|
|
14
|
+
|
|
15
|
+
1. **Import path changes**: `@nocobase/plugin-workflow/client` → `@nocobase/plugin-workflow/client-v2`, plugin base class `@nocobase/client` → `@nocobase/client-v2`
|
|
16
|
+
2. **Configuration UI pattern changes**: From Formily Schema objects (`fieldset`) to Loader lazy-loaded React components (`FieldsetLoader`)
|
|
17
|
+
3. **`scope`/`components` properties removed**: No longer necessary to inject scope objects or components into the Schema; simply import and use them directly in React components
|
|
18
|
+
|
|
19
|
+
### Import path mapping
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
// v1
|
|
23
|
+
import { Plugin } from '@nocobase/client';
|
|
24
|
+
import WorkflowPlugin, { Trigger, Instruction } from '@nocobase/plugin-workflow/client';
|
|
25
|
+
|
|
26
|
+
// v2
|
|
27
|
+
import { Plugin } from '@nocobase/client-v2';
|
|
28
|
+
import WorkflowPlugin, { Trigger, Instruction } from '@nocobase/plugin-workflow/client-v2';
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## General Rules
|
|
32
|
+
|
|
33
|
+
### Loader pattern
|
|
34
|
+
|
|
35
|
+
v2 uses `LoaderOf`-typed properties to replace v1's `fieldset` and other Formily Schema objects. A Loader is essentially a function that returns `Promise<{ default: ComponentType }>`, enabling code splitting and lazy loading via dynamic `import()`:
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
// v1: Formily Schema object
|
|
39
|
+
fieldset = {
|
|
40
|
+
interval: {
|
|
41
|
+
type: 'number',
|
|
42
|
+
title: 'Interval',
|
|
43
|
+
'x-decorator': 'FormItem',
|
|
44
|
+
'x-component': 'InputNumber',
|
|
45
|
+
default: 60000,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// v2: Loader pointing to a React component
|
|
50
|
+
FieldsetLoader = () => import('./MyConfig');
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
If you need to point to a named export (rather than the default export), use `.then()` to remap:
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
FieldsetLoader = () => import('./MyConfig').then((m) => ({ default: m.MyPresetConfig }));
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Configuration component syntax
|
|
60
|
+
|
|
61
|
+
The component loaded by a Loader is a standard React function component that uses antd's `Form.Item` to build forms. Field paths consistently use the nested array format `['config', 'fieldName']`:
|
|
62
|
+
|
|
63
|
+
```tsx
|
|
64
|
+
// v1: Formily Schema
|
|
65
|
+
fieldset = {
|
|
66
|
+
interval: {
|
|
67
|
+
type: 'number',
|
|
68
|
+
title: '{{t("Interval")}}',
|
|
69
|
+
name: 'config.interval',
|
|
70
|
+
'x-decorator': 'FormItem',
|
|
71
|
+
'x-component': 'InputNumber',
|
|
72
|
+
default: 60000,
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// v2: React component
|
|
77
|
+
import { Form, InputNumber } from 'antd';
|
|
78
|
+
|
|
79
|
+
export default function MyConfig() {
|
|
80
|
+
const { t } = useWorkflowTranslation();
|
|
81
|
+
|
|
82
|
+
return (
|
|
83
|
+
<Form.Item
|
|
84
|
+
name={['config', 'interval']}
|
|
85
|
+
label={t('Interval')}
|
|
86
|
+
initialValue={60000}
|
|
87
|
+
>
|
|
88
|
+
<InputNumber />
|
|
89
|
+
</Form.Item>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Trigger Migration
|
|
95
|
+
|
|
96
|
+
### Property mapping table
|
|
97
|
+
|
|
98
|
+
| v1 Property | v2 Property | Description |
|
|
99
|
+
|---------|---------|------|
|
|
100
|
+
| `fieldset` | `FieldsetLoader` | Trigger configuration form |
|
|
101
|
+
| `presetFieldset` | `PresetFieldsetLoader` | Preset form on creation |
|
|
102
|
+
| `triggerFieldset` | `TriggerFieldsetLoader` | Input form for manual execution |
|
|
103
|
+
| `scope` | Removed | No longer needed; import directly in the component |
|
|
104
|
+
| `components` | Removed | No longer needed; import directly in the component |
|
|
105
|
+
| `view` | Removed | |
|
|
106
|
+
| — | `validate(config)` | New; configuration validation |
|
|
107
|
+
| — | `createDefaultConfig()` | New; provides default configuration values |
|
|
108
|
+
|
|
109
|
+
### Migration example
|
|
110
|
+
|
|
111
|
+
**v1 syntax:**
|
|
112
|
+
|
|
113
|
+
```ts
|
|
114
|
+
import { Trigger } from '@nocobase/plugin-workflow/client';
|
|
115
|
+
|
|
116
|
+
class MyTrigger extends Trigger {
|
|
117
|
+
title = '{{t("My Trigger")}}';
|
|
118
|
+
fieldset = {
|
|
119
|
+
collection: {
|
|
120
|
+
type: 'string',
|
|
121
|
+
title: '{{t("Collection")}}',
|
|
122
|
+
'x-decorator': 'FormItem',
|
|
123
|
+
'x-component': 'CollectionSelect',
|
|
124
|
+
required: true,
|
|
125
|
+
},
|
|
126
|
+
mode: {
|
|
127
|
+
type: 'number',
|
|
128
|
+
title: '{{t("Mode")}}',
|
|
129
|
+
'x-decorator': 'FormItem',
|
|
130
|
+
'x-component': 'Select',
|
|
131
|
+
'x-component-props': {
|
|
132
|
+
options: [
|
|
133
|
+
{ label: '{{t("Created")}}', value: 1 },
|
|
134
|
+
{ label: '{{t("Updated")}}', value: 2 },
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
scope = { /* ... */ };
|
|
140
|
+
components = { CollectionSelect };
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**v2 syntax:**
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
import { Trigger } from '@nocobase/plugin-workflow/client-v2';
|
|
148
|
+
|
|
149
|
+
class MyTrigger extends Trigger {
|
|
150
|
+
title = '{{t("My Trigger")}}';
|
|
151
|
+
|
|
152
|
+
PresetFieldsetLoader = () =>
|
|
153
|
+
import('./MyTriggerConfig').then((m) => ({ default: m.MyPresetConfig }));
|
|
154
|
+
FieldsetLoader = () => import('./MyTriggerConfig');
|
|
155
|
+
TriggerFieldsetLoader = () => import('./TriggerMyConfig');
|
|
156
|
+
|
|
157
|
+
validate(config) {
|
|
158
|
+
return Boolean(config?.collection && config?.mode);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```tsx
|
|
164
|
+
// MyTriggerConfig.tsx
|
|
165
|
+
import { Form, Select } from 'antd';
|
|
166
|
+
import { CollectionCascader } from '@nocobase/plugin-workflow/client-v2';
|
|
167
|
+
|
|
168
|
+
export function MyPresetConfig() {
|
|
169
|
+
return (
|
|
170
|
+
<Form.Item name={['config', 'collection']} label="Collection" rules={[{ required: true }]}>
|
|
171
|
+
<CollectionCascader />
|
|
172
|
+
</Form.Item>
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export default function MyTriggerConfig() {
|
|
177
|
+
return (
|
|
178
|
+
<>
|
|
179
|
+
<Form.Item name={['config', 'collection']} label="Collection">
|
|
180
|
+
<CollectionCascader disabled />
|
|
181
|
+
</Form.Item>
|
|
182
|
+
<Form.Item name={['config', 'mode']} label="Mode">
|
|
183
|
+
<Select
|
|
184
|
+
options={[
|
|
185
|
+
{ label: 'Created', value: 1 },
|
|
186
|
+
{ label: 'Updated', value: 2 },
|
|
187
|
+
]}
|
|
188
|
+
/>
|
|
189
|
+
</Form.Item>
|
|
190
|
+
</>
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Plugin registration
|
|
196
|
+
|
|
197
|
+
```ts
|
|
198
|
+
// v1
|
|
199
|
+
import { Plugin } from '@nocobase/client';
|
|
200
|
+
import WorkflowPlugin from '@nocobase/plugin-workflow/client';
|
|
201
|
+
|
|
202
|
+
export default class extends Plugin {
|
|
203
|
+
async load() {
|
|
204
|
+
const workflow = this.app.pm.get(WorkflowPlugin);
|
|
205
|
+
workflow.registerTrigger('myTrigger', MyTrigger);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// v2
|
|
210
|
+
import { Plugin } from '@nocobase/client-v2';
|
|
211
|
+
|
|
212
|
+
export default class extends Plugin {
|
|
213
|
+
async load() {
|
|
214
|
+
const workflow = this.app.pm.get('workflow');
|
|
215
|
+
workflow.registerTrigger('myTrigger', MyTrigger);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Node Migration
|
|
221
|
+
|
|
222
|
+
### Property mapping table
|
|
223
|
+
|
|
224
|
+
| v1 Property | v2 Property | Description |
|
|
225
|
+
|---------|---------|------|
|
|
226
|
+
| `fieldset` | `FieldsetLoader` | Node configuration drawer form |
|
|
227
|
+
| `presetFieldset` | `PresetFieldsetLoader` | Preset form on creation |
|
|
228
|
+
| `Component` | `ComponentLoader` | Custom node rendering on the canvas |
|
|
229
|
+
| `scope` | Removed | No longer needed; import directly in the component |
|
|
230
|
+
| `components` | Removed | No longer needed; import directly in the component |
|
|
231
|
+
| `view` | Removed | |
|
|
232
|
+
| — | `createDefaultConfig()` | New; provides default configuration values |
|
|
233
|
+
|
|
234
|
+
### Migration example
|
|
235
|
+
|
|
236
|
+
**v1 syntax:**
|
|
237
|
+
|
|
238
|
+
```ts
|
|
239
|
+
import WorkflowPlugin, { Instruction } from '@nocobase/plugin-workflow/client';
|
|
240
|
+
|
|
241
|
+
class MyInstruction extends Instruction {
|
|
242
|
+
title = 'Random string';
|
|
243
|
+
type = 'randomString';
|
|
244
|
+
group = 'extended';
|
|
245
|
+
fieldset = {
|
|
246
|
+
digit: {
|
|
247
|
+
type: 'number',
|
|
248
|
+
title: 'Digit',
|
|
249
|
+
name: 'digit',
|
|
250
|
+
'x-decorator': 'FormItem',
|
|
251
|
+
'x-component': 'InputNumber',
|
|
252
|
+
'x-component-props': { min: 1, max: 10 },
|
|
253
|
+
default: 6,
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
useVariables(node, options) {
|
|
257
|
+
return { value: node.key, label: node.title };
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**v2 syntax:**
|
|
263
|
+
|
|
264
|
+
```ts
|
|
265
|
+
import { Instruction } from '@nocobase/plugin-workflow/client-v2';
|
|
266
|
+
|
|
267
|
+
class MyInstruction extends Instruction {
|
|
268
|
+
title = 'Random string';
|
|
269
|
+
type = 'randomString';
|
|
270
|
+
group = 'extended';
|
|
271
|
+
|
|
272
|
+
FieldsetLoader = () => import('./components/RandomStringConfig');
|
|
273
|
+
|
|
274
|
+
useVariables(node, options) {
|
|
275
|
+
return { value: node.key, label: node.title };
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
```tsx
|
|
281
|
+
// components/RandomStringConfig.tsx
|
|
282
|
+
import { Form, InputNumber } from 'antd';
|
|
283
|
+
|
|
284
|
+
export default function RandomStringConfig() {
|
|
285
|
+
return (
|
|
286
|
+
<Form.Item
|
|
287
|
+
name={['config', 'digit']}
|
|
288
|
+
label="Digit"
|
|
289
|
+
initialValue={6}
|
|
290
|
+
rules={[{ required: true }]}
|
|
291
|
+
>
|
|
292
|
+
<InputNumber min={1} max={10} />
|
|
293
|
+
</Form.Item>
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## Other Notes
|
|
299
|
+
|
|
300
|
+
### Unchanged parts
|
|
301
|
+
|
|
302
|
+
The following properties and methods have essentially the same signatures in v1 and v2, and can be kept as-is during migration:
|
|
303
|
+
|
|
304
|
+
- `useVariables(node/config, options)` — Provides variable options
|
|
305
|
+
- `useScopeVariables(node, options)` — Provides branch-scoped variables
|
|
306
|
+
- `isAvailable(ctx)` — Node availability check (the v2 `NodeAvailableContext` adds a new `engine` property)
|
|
307
|
+
|
|
308
|
+
### New properties in v2
|
|
309
|
+
|
|
310
|
+
- `getCreateModelMenuItem` — Defines the configuration for creating sub-model menu items for nodes/triggers on the v2 canvas
|
|
311
|
+
- `useTempAssociationSource` — Provides temporary association data source information
|
|
312
|
+
- `validate(config)` — Trigger configuration validation (triggers only)
|
|
313
|
+
- `branching` — Declares whether the node is a branch node (nodes only)
|
|
314
|
+
- `end` — Declares whether the node is a terminal node (nodes only)
|
|
315
|
+
- `testable` — Declares whether the node supports test runs (nodes only)
|
|
316
|
+
|
|
317
|
+
### Value semantic consistency
|
|
318
|
+
|
|
319
|
+
When migrating, make sure the form values produced by v2 components are consistent with v1, especially the payload shape during manual execution. For example, if the v1 manual execution form stores a complete record object, the v2 version must maintain the same value structure rather than storing only the primary key.
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Extending Node Types"
|
|
3
|
+
description: "Extending node types: custom node development, node configuration, execution logic, API and lifecycle."
|
|
4
|
+
keywords: "workflow,extending nodes,custom nodes,node development,NocoBase"
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# Extending Node Types
|
|
2
8
|
|
|
3
9
|
A node's type is essentially an operational instruction. Different instructions represent different operations executed in the workflow.
|
|
@@ -111,7 +117,7 @@ export class AsyncInstruction extends Instruction {
|
|
|
111
117
|
// 2. Explicitly call exit() to flush the task to the database and commit the transaction
|
|
112
118
|
await processor.exit();
|
|
113
119
|
|
|
114
|
-
// 3. Initiate the async operation (
|
|
120
|
+
// 3. Initiate the async operation (transaction is now committed, no longer holding the DB connection)
|
|
115
121
|
const jobDone: IJob = { status: JOB_STATUS.PENDING };
|
|
116
122
|
try {
|
|
117
123
|
const result = await someAsyncOperation(node.config);
|
|
@@ -239,44 +245,78 @@ Similar to triggers, the configuration form for an instruction (node type) needs
|
|
|
239
245
|
|
|
240
246
|
All instructions need to be derived from the `Instruction` base class. The related properties and methods are used for configuring and using the node.
|
|
241
247
|
|
|
242
|
-
For example, if we need to provide a configuration interface for the random number string type (`randomString`) node defined on the server-side above, which has a configuration item `digit` representing the number of digits for the random number
|
|
248
|
+
For example, if we need to provide a configuration interface for the random number string type (`randomString`) node defined on the server-side above, which has a configuration item `digit` representing the number of digits for the random number:
|
|
243
249
|
|
|
244
|
-
```
|
|
245
|
-
import
|
|
250
|
+
```ts
|
|
251
|
+
import { Instruction } from '@nocobase/plugin-workflow/client-v2';
|
|
246
252
|
|
|
247
|
-
class
|
|
253
|
+
class RandomStringInstruction extends Instruction {
|
|
248
254
|
title = 'Random number string';
|
|
249
255
|
type = 'randomString';
|
|
250
256
|
group = 'extended';
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
'x-component': 'InputNumber',
|
|
258
|
-
'x-component-props': {
|
|
259
|
-
min: 1,
|
|
260
|
-
max: 10,
|
|
261
|
-
},
|
|
262
|
-
default: 6,
|
|
263
|
-
},
|
|
264
|
-
};
|
|
265
|
-
useVariables(node, options): VariableOption {
|
|
266
|
-
return {
|
|
267
|
-
value: node.key,
|
|
268
|
-
label: node.title,
|
|
269
|
-
};
|
|
257
|
+
|
|
258
|
+
// Node config form (lazy-loaded component)
|
|
259
|
+
FieldsetLoader = () => import('./components/RandomStringConfig');
|
|
260
|
+
|
|
261
|
+
useVariables(node, options) {
|
|
262
|
+
return { value: node.key, label: node.title };
|
|
270
263
|
}
|
|
271
264
|
}
|
|
265
|
+
```
|
|
272
266
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
267
|
+
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 that builds the form using antd's `Form.Item`:
|
|
268
|
+
|
|
269
|
+
```tsx
|
|
270
|
+
// components/RandomStringConfig.tsx
|
|
271
|
+
import { Form, InputNumber } from 'antd';
|
|
272
|
+
|
|
273
|
+
export default function RandomStringConfig() {
|
|
274
|
+
return (
|
|
275
|
+
<Form.Item
|
|
276
|
+
name={['config', 'digit']}
|
|
277
|
+
label="Digit"
|
|
278
|
+
initialValue={6}
|
|
279
|
+
rules={[{ required: true }]}
|
|
280
|
+
>
|
|
281
|
+
<InputNumber min={1} max={10} />
|
|
282
|
+
</Form.Item>
|
|
283
|
+
);
|
|
284
|
+
}
|
|
285
|
+
```
|
|
277
286
|
|
|
278
|
-
|
|
279
|
-
|
|
287
|
+
Note that the form field's `name` uses the nested array format `['config', 'fieldName']`, which is the standard antd Form convention.
|
|
288
|
+
|
|
289
|
+
### Multiple Configuration Interfaces
|
|
290
|
+
|
|
291
|
+
A node can provide multiple configuration interfaces for different scenarios:
|
|
292
|
+
|
|
293
|
+
- `FieldsetLoader` — Node configuration drawer form (most commonly used)
|
|
294
|
+

|
|
295
|
+
|
|
296
|
+
- `PresetFieldsetLoader` — Preset form when creating a node (usually contains only required fields)
|
|
297
|
+

|
|
298
|
+
|
|
299
|
+
- `ComponentLoader` — Custom node rendering on the canvas (used for branch nodes and other cases requiring special rendering)
|
|
300
|
+

|
|
301
|
+
|
|
302
|
+
When a Loader needs to point to a named export (rather than the default export) in a file, use `.then()` to remap:
|
|
303
|
+
|
|
304
|
+
```ts
|
|
305
|
+
FieldsetLoader = () => import('./components/MyNodeConfig').then((m) => ({ default: m.MyFieldset }));
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Register the Node
|
|
309
|
+
|
|
310
|
+
Register the node type with the workflow plugin instance within the extended plugin:
|
|
311
|
+
|
|
312
|
+
```ts
|
|
313
|
+
import { Plugin } from '@nocobase/client-v2';
|
|
314
|
+
import RandomStringInstruction from './RandomStringInstruction';
|
|
315
|
+
|
|
316
|
+
export default class extends Plugin {
|
|
317
|
+
async load() {
|
|
318
|
+
const workflow = this.app.pm.get('workflow');
|
|
319
|
+
workflow.registerInstruction('randomString', RandomStringInstruction);
|
|
280
320
|
}
|
|
281
321
|
}
|
|
282
322
|
```
|
|
@@ -287,7 +327,7 @@ The node type identifier registered on the client-side must be consistent with t
|
|
|
287
327
|
|
|
288
328
|
### Providing Node Results as Variables
|
|
289
329
|
|
|
290
|
-
You may notice the `useVariables` method in the example above. If you need to use the node's result (the `result` part) as a variable for subsequent nodes, you need to implement this method in the
|
|
330
|
+
You may notice the `useVariables` method in the example above. If you need to use the node's result (the `result` part) as a variable for subsequent nodes, you need to implement this method in the derived instruction class and return an object that conforms to the `VariableOption` type. This object serves as a structural description of the node's execution result, providing variable name mapping for selection and use in subsequent nodes.
|
|
291
331
|
|
|
292
332
|
The `VariableOption` type is defined as follows:
|
|
293
333
|
|
|
@@ -302,7 +342,7 @@ export type VariableOption = {
|
|
|
302
342
|
|
|
303
343
|
The core is the `value` property, which represents the segmented path value of the variable name. `label` is used for display on the interface, and `children` is used to represent a multi-level variable structure, which is used when the node's result is a deeply nested object.
|
|
304
344
|
|
|
305
|
-
A usable variable is represented internally in the system as a path template string separated by `.`, for example, `{{jobsMapByNodeKey.2dw92cdf.abc}}`. Here,
|
|
345
|
+
A usable variable is represented internally in the system as a path template string separated by `.`, for example, `{{$jobsMapByNodeKey.2dw92cdf.abc}}`. Here, `$jobsMapByNodeKey` represents the result set of all nodes (internally defined, no need to handle), `2dw92cdf` is the node's `key`, and `abc` is a custom property in the node's result object.
|
|
306
346
|
|
|
307
347
|
Additionally, since a node's result can also be a simple value, when providing node variables, the first level **must** be the description of the node itself:
|
|
308
348
|
|
|
@@ -313,14 +353,10 @@ Additionally, since a node's result can also be a simple value, when providing n
|
|
|
313
353
|
}
|
|
314
354
|
```
|
|
315
355
|
|
|
316
|
-
That is, the first level is the node's `key` and title. For example, in the
|
|
317
|
-
|
|
318
|
-
|
|
356
|
+
That is, the first level is the node's `key` and title. For example, in the Calculation node's [code reference](https://github.com/nocobase/nocobase/blob/develop/packages/plugins/%40nocobase/plugin-workflow/src/client-v2/nodes/calculation.tsx), when using the result of the Calculation node, the interface options are as follows:
|
|
319
357
|
|
|
320
358
|

|
|
321
359
|
|
|
322
|
-
|
|
323
|
-
|
|
324
360
|
When the node's result is a complex object, you can use `children` to continue describing nested properties. For example, a custom instruction might return the following JSON data:
|
|
325
361
|
|
|
326
362
|
```json
|
|
@@ -328,7 +364,7 @@ When the node's result is a complex object, you can use `children` to continue d
|
|
|
328
364
|
"message": "ok",
|
|
329
365
|
"data": {
|
|
330
366
|
"id": 1,
|
|
331
|
-
"name": "test"
|
|
367
|
+
"name": "test"
|
|
332
368
|
}
|
|
333
369
|
}
|
|
334
370
|
```
|
|
@@ -336,7 +372,7 @@ When the node's result is a complex object, you can use `children` to continue d
|
|
|
336
372
|
Then you can return it through the `useVariables` method as follows:
|
|
337
373
|
|
|
338
374
|
```ts
|
|
339
|
-
useVariables(node, options)
|
|
375
|
+
useVariables(node, options) {
|
|
340
376
|
return {
|
|
341
377
|
value: node.key,
|
|
342
378
|
label: node.title,
|
|
@@ -366,12 +402,8 @@ useVariables(node, options): VariableOption {
|
|
|
366
402
|
|
|
367
403
|
This way, in subsequent nodes, you can use the following interface to select variables from it:
|
|
368
404
|
|
|
369
|
-
|
|
370
|
-
|
|
371
405
|

|
|
372
406
|
|
|
373
|
-
|
|
374
|
-
|
|
375
407
|
:::info{title="Note"}
|
|
376
408
|
When a structure in the result is an array of deeply nested objects, you can also use `children` to describe the path, but it cannot include array indices. This is because in NocoBase workflow's variable handling, the variable path description for an array of objects is automatically flattened into an array of deep values when used, and you cannot access a specific value by its index.
|
|
377
409
|
:::
|
|
@@ -381,11 +413,6 @@ When a structure in the result is an array of deeply nested objects, you can als
|
|
|
381
413
|
By default, any node can be added to a workflow. However, in some cases, a node may not be applicable in certain types of workflows or branches. In such situations, you can configure the node's availability using `isAvailable`:
|
|
382
414
|
|
|
383
415
|
```ts
|
|
384
|
-
// Type definition
|
|
385
|
-
export abstract class Instruction {
|
|
386
|
-
isAvailable?(ctx: NodeAvailableContext): boolean;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
416
|
export type NodeAvailableContext = {
|
|
390
417
|
// Workflow plugin instance
|
|
391
418
|
engine: WorkflowPlugin;
|
|
@@ -393,7 +420,7 @@ export type NodeAvailableContext = {
|
|
|
393
420
|
workflow: object;
|
|
394
421
|
// Upstream node
|
|
395
422
|
upstream: object;
|
|
396
|
-
// Whether it is a branch node (branch
|
|
423
|
+
// Whether it is a branch node (branch index)
|
|
397
424
|
branchIndex: number;
|
|
398
425
|
};
|
|
399
426
|
```
|
|
@@ -403,11 +430,17 @@ The `isAvailable` method returns `true` if the node is available, and `false` if
|
|
|
403
430
|
If there are no special requirements, you do not need to implement the `isAvailable` method, as nodes are available by default. The most common scenario requiring configuration is when a node might be a time-consuming operation and is not suitable for execution in a synchronous workflow. You can use the `isAvailable` method to restrict its use. For example:
|
|
404
431
|
|
|
405
432
|
```ts
|
|
406
|
-
isAvailable({ engine, workflow
|
|
433
|
+
isAvailable({ engine, workflow }) {
|
|
407
434
|
return !engine.isWorkflowSync(workflow);
|
|
408
435
|
}
|
|
409
436
|
```
|
|
410
437
|
|
|
411
438
|
### Learn More
|
|
412
439
|
|
|
413
|
-
For
|
|
440
|
+
For a complete real-world example, refer to: [CalculationInstruction source code](https://github.com/nocobase/nocobase/blob/develop/packages/plugins/%40nocobase/plugin-workflow/src/client-v2/nodes/calculation.tsx)
|
|
441
|
+
|
|
442
|
+
For the definitions of various parameters for defining node types, see the [Workflow API Reference](./api) section.
|
|
443
|
+
|
|
444
|
+
:::info{title=Note}
|
|
445
|
+
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).
|
|
446
|
+
:::
|