@nocobase/plugin-ai 2.2.0-beta.9 → 2.3.0-alpha.1
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/ai-employees/scenarios/company-background-research.md +125 -0
- package/dist/ai/docs/nocobase/building-tips/operations-dashboard.md +513 -0
- package/dist/ai/docs/nocobase/file-manager/stable-url.md +87 -0
- package/dist/ai/docs/nocobase/file-manager/storage/local.md +3 -1
- package/dist/ai/docs/nocobase/get-started/deployment/production.md +24 -2
- package/dist/ai/docs/nocobase/get-started/installation/docker-caddy.mdx +3 -0
- package/dist/ai/docs/nocobase/get-started/installation/docker-nginx.mdx +3 -0
- package/dist/ai/docs/nocobase/get-started/installation/docker.mdx +27 -3
- package/dist/ai/docs/nocobase/get-started/installation/env.md +33 -0
- package/dist/ai/docs/nocobase/index.md +1 -1
- package/dist/ai/docs/nocobase/interface-builder/blocks/data-blocks/comment.md +107 -0
- package/dist/ai/docs/nocobase/interface-builder/index.md +7 -6
- package/dist/ai/docs/nocobase/interface-builder/ui-layout/desktop.md +97 -0
- package/dist/ai/docs/nocobase/interface-builder/ui-layout/index.md +50 -0
- package/dist/ai/docs/nocobase/interface-builder/ui-layout/mobile.md +133 -0
- package/dist/ai/docs/nocobase/multi-app/multi-app-vs-multi-portal-vs-multi-space.md +159 -0
- package/dist/ai/docs/nocobase/multi-app/multi-portal/index.md +195 -0
- package/dist/ai/docs/nocobase/nocobase-cli/production/index.md +10 -0
- package/dist/ai/docs/nocobase/nocobase-cli/production/reverse-proxy/caddy.md +15 -2
- package/dist/ai/docs/nocobase/nocobase-cli/production/reverse-proxy/index.md +1 -1
- package/dist/ai/docs/nocobase/nocobase-cli/production/reverse-proxy/nginx.md +16 -2
- package/dist/ai/docs/nocobase/plugins/@nocobase/plugin-block-comment/index.md +14 -0
- package/dist/ai/docs/nocobase/runjs/context/ai.md +206 -0
- package/dist/ai/docs/nocobase/security/guide.md +23 -0
- package/dist/ai/docs/nocobase/tutorials/index.md +20 -1
- 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/ai/tools/formFiller.js +4 -3
- package/dist/ai/tools/subAgentWebSearch.js +20 -15
- 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.40eb52905e3f3049.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.8cc3fde09c9bec77.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-v2/ai-employees/chatbox/utils/normalizeTriggerTaskOptions.d.ts +19 -0
- package/dist/{client → client-v2}/ai-employees/chatbox/utils.d.ts +26 -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 +151 -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 +44 -0
- package/dist/client-v2/llm-providers/index.d.ts +24 -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-v2/manager/ai-manager.d.ts +55 -0
- 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 +62 -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 +33 -0
- package/dist/client-v2/repositories/AIConfigRepository.d.ts +3 -23
- package/dist/client-v2/runjs/registerAIEmployeeRunJSFacade.d.ts +20 -0
- 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 +49 -1
- package/dist/locale/zh-CN.json +49 -1
- package/dist/node_modules/@langchain/mistralai/package.json +1 -1
- 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.d.ts +1 -0
- package/dist/server/ai-employees/ai-employee.js +37 -2
- package/dist/server/ai-employees/prompts.d.ts +2 -1
- package/dist/server/ai-employees/prompts.js +8 -2
- package/dist/server/ai-employees/tool-call-sanitizer.d.ts +1 -0
- package/dist/server/ai-employees/tool-call-sanitizer.js +2 -1
- package/dist/server/ai-employees/utils.js +11 -5
- package/dist/server/attachments.d.ts +24 -0
- package/dist/server/attachments.js +204 -0
- package/dist/server/collections/ai-usage-events.d.ts +10 -0
- package/dist/server/collections/ai-usage-events.js +183 -0
- package/dist/server/document-loader/cached.d.ts +1 -0
- package/dist/server/document-loader/cached.js +18 -9
- package/dist/server/document-loader/loader.d.ts +0 -1
- package/dist/server/document-loader/loader.js +25 -8
- package/dist/server/document-loader/types.d.ts +7 -0
- package/dist/server/llm-providers/anthropic.d.ts +2 -1
- package/dist/server/llm-providers/anthropic.js +1 -3
- package/dist/server/llm-providers/dashscope.d.ts +2 -1
- package/dist/server/llm-providers/dashscope.js +16 -1
- package/dist/server/llm-providers/deepseek.d.ts +2 -1
- package/dist/server/llm-providers/deepseek.js +33 -2
- package/dist/server/llm-providers/google-genai.d.ts +1 -1
- package/dist/server/llm-providers/google-genai.js +1 -5
- package/dist/server/llm-providers/kimi/provider.d.ts +2 -1
- package/dist/server/llm-providers/kimi/provider.js +22 -2
- package/dist/server/llm-providers/mistral.d.ts +36 -2
- package/dist/server/llm-providers/mistral.js +62 -2
- package/dist/server/llm-providers/openai/completions.d.ts +2 -1
- package/dist/server/llm-providers/openai/completions.js +17 -1
- package/dist/server/llm-providers/openai/responses.d.ts +2 -1
- package/dist/server/llm-providers/openai/responses.js +17 -1
- package/dist/server/llm-providers/orcarouter.d.ts +35 -0
- package/dist/server/llm-providers/orcarouter.js +155 -0
- package/dist/server/llm-providers/provider.d.ts +10 -2
- package/dist/server/llm-providers/provider.js +33 -4
- package/dist/server/manager/ai-chat-conversation.js +2 -0
- package/dist/server/manager/ai-context-datasource-manager.js +34 -7
- package/dist/server/manager/ai-manager.d.ts +2 -1
- package/dist/server/manager/ai-manager.js +4 -1
- package/dist/server/manager/ai-usage-events.d.ts +49 -0
- package/dist/server/manager/ai-usage-events.js +195 -0
- package/dist/server/plugin.js +16 -0
- package/dist/server/resource/aiConversations.js +44 -1
- package/dist/server/utils.d.ts +5 -2
- package/dist/server/utils.js +11 -19
- package/dist/server/workflow/nodes/employee/files.d.ts +3 -1
- package/dist/server/workflow/nodes/employee/files.js +31 -5
- package/package.json +5 -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.9f97ebcdb0bd6231.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/mistral/ModelSettings.d.ts +0 -10
- package/dist/client/llm-providers/mistral/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 -35
- package/dist/client/manager/ai-feature-manager.d.ts +0 -9
- package/dist/client/manager/ai-manager.d.ts +0 -35
- 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,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
var __create = Object.create;
|
|
11
|
+
var __defProp = Object.defineProperty;
|
|
12
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
13
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
14
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
15
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
16
|
+
var __export = (target, all) => {
|
|
17
|
+
for (var name in all)
|
|
18
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
19
|
+
};
|
|
20
|
+
var __copyProps = (to, from, except, desc) => {
|
|
21
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
22
|
+
for (let key of __getOwnPropNames(from))
|
|
23
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
24
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
25
|
+
}
|
|
26
|
+
return to;
|
|
27
|
+
};
|
|
28
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
29
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
30
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
31
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
32
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
33
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
34
|
+
mod
|
|
35
|
+
));
|
|
36
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
37
|
+
var orcarouter_exports = {};
|
|
38
|
+
__export(orcarouter_exports, {
|
|
39
|
+
OrcaRouterProvider: () => OrcaRouterProvider,
|
|
40
|
+
orcarouterProviderOptions: () => orcarouterProviderOptions
|
|
41
|
+
});
|
|
42
|
+
module.exports = __toCommonJS(orcarouter_exports);
|
|
43
|
+
var import_provider = require("./provider");
|
|
44
|
+
var import_ai_manager = require("../manager/ai-manager");
|
|
45
|
+
var import_lodash = __toESM(require("lodash"));
|
|
46
|
+
var import_openai = require("@langchain/openai");
|
|
47
|
+
var import_messages = require("@langchain/core/messages");
|
|
48
|
+
var import_reasoning = require("./common/reasoning");
|
|
49
|
+
class OrcaRouterProvider extends import_provider.LLMProvider {
|
|
50
|
+
get baseURL() {
|
|
51
|
+
return "https://api.orcarouter.ai/v1";
|
|
52
|
+
}
|
|
53
|
+
createModel() {
|
|
54
|
+
const { apiKey, httpReferer, xTitle } = this.serviceOptions || {};
|
|
55
|
+
const { responseFormat, structuredOutput } = this.modelOptions || {};
|
|
56
|
+
const { name, schema } = structuredOutput || {};
|
|
57
|
+
const responseFormatOptions = {
|
|
58
|
+
type: responseFormat ?? "text"
|
|
59
|
+
};
|
|
60
|
+
if (responseFormat === "json_schema" && schema) {
|
|
61
|
+
responseFormatOptions["json_schema"] = { schema, name: name ?? "schema" };
|
|
62
|
+
}
|
|
63
|
+
const defaultHeaders = {};
|
|
64
|
+
if (httpReferer) {
|
|
65
|
+
defaultHeaders["HTTP-Referer"] = httpReferer;
|
|
66
|
+
}
|
|
67
|
+
if (xTitle) {
|
|
68
|
+
defaultHeaders["X-Title"] = xTitle;
|
|
69
|
+
}
|
|
70
|
+
return new ChatOrcaRouterCompletions({
|
|
71
|
+
apiKey,
|
|
72
|
+
...this.modelOptions,
|
|
73
|
+
modelKwargs: {
|
|
74
|
+
response_format: responseFormatOptions
|
|
75
|
+
},
|
|
76
|
+
configuration: {
|
|
77
|
+
baseURL: this.getResolvedBaseURL(),
|
|
78
|
+
...Object.keys(defaultHeaders).length ? { defaultHeaders } : {}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
isApiSupportedAttachment(attachment) {
|
|
83
|
+
const media = ["image/"];
|
|
84
|
+
return media.some((it) => {
|
|
85
|
+
var _a;
|
|
86
|
+
return (_a = attachment == null ? void 0 : attachment.mimetype) == null ? void 0 : _a.startsWith(it);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
parseResponseMessage(message) {
|
|
90
|
+
var _a;
|
|
91
|
+
const result = super.parseResponseMessage(message);
|
|
92
|
+
if (["user", "tool"].includes(result == null ? void 0 : result.role)) {
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
const { metadata } = (message == null ? void 0 : message.toJSON()) ?? {};
|
|
96
|
+
if (!import_lodash.default.isEmpty((_a = metadata == null ? void 0 : metadata.additional_kwargs) == null ? void 0 : _a.reasoning_content)) {
|
|
97
|
+
result.content = {
|
|
98
|
+
...result.content ?? {},
|
|
99
|
+
reasoning: {
|
|
100
|
+
status: "stop",
|
|
101
|
+
content: metadata == null ? void 0 : metadata.additional_kwargs.reasoning_content
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
parseReasoningContent(chunk) {
|
|
108
|
+
var _a;
|
|
109
|
+
if (!import_lodash.default.isEmpty((_a = chunk == null ? void 0 : chunk.additional_kwargs) == null ? void 0 : _a.reasoning_content)) {
|
|
110
|
+
return {
|
|
111
|
+
status: "streaming",
|
|
112
|
+
content: chunk.additional_kwargs.reasoning_content
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
class ChatOrcaRouterCompletions extends import_reasoning.ReasoningChatOpenAI {
|
|
119
|
+
_convertCompletionsDeltaToBaseMessageChunk(delta, rawResponse, defaultRole) {
|
|
120
|
+
const chunk = (0, import_openai.convertCompletionsDeltaToBaseMessageChunk)({
|
|
121
|
+
delta,
|
|
122
|
+
rawResponse,
|
|
123
|
+
includeRawResponse: this.__includeRawResponse,
|
|
124
|
+
defaultRole
|
|
125
|
+
});
|
|
126
|
+
if (chunk instanceof import_messages.AIMessageChunk) {
|
|
127
|
+
if (delta.reasoning_content) {
|
|
128
|
+
chunk.additional_kwargs.reasoning_content = delta.reasoning_content;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return chunk;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const orcarouterProviderOptions = {
|
|
135
|
+
title: "OrcaRouter",
|
|
136
|
+
supportedModel: [import_ai_manager.SupportedModel.LLM],
|
|
137
|
+
models: {
|
|
138
|
+
[import_ai_manager.SupportedModel.LLM]: [
|
|
139
|
+
"orcarouter/auto",
|
|
140
|
+
"openai/gpt-5.5",
|
|
141
|
+
"google/gemini-3.5-flash",
|
|
142
|
+
"anthropic/claude-opus-4.8",
|
|
143
|
+
"grok/grok-4.3",
|
|
144
|
+
"deepseek/deepseek-v4-pro",
|
|
145
|
+
"minimax/minimax-m2.7",
|
|
146
|
+
"qwen/qwen3.7-max"
|
|
147
|
+
]
|
|
148
|
+
},
|
|
149
|
+
provider: OrcaRouterProvider
|
|
150
|
+
};
|
|
151
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
152
|
+
0 && (module.exports = {
|
|
153
|
+
OrcaRouterProvider,
|
|
154
|
+
orcarouterProviderOptions
|
|
155
|
+
});
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
10
10
|
import { Model } from '@nocobase/database';
|
|
11
|
-
import { AttachmentModel } from '@nocobase/plugin-file-manager';
|
|
11
|
+
import { type AttachmentModel } from '@nocobase/plugin-file-manager';
|
|
12
12
|
import { Application } from '@nocobase/server';
|
|
13
13
|
import { AIChatContext, AIMessageInput } from '../types/ai-chat-conversation.type';
|
|
14
14
|
import { EmbeddingsInterface } from '@langchain/core/embeddings';
|
|
@@ -27,6 +27,11 @@ export type LLMProviderInvokeOptions = {
|
|
|
27
27
|
modelRequestParams?: Record<string, any>;
|
|
28
28
|
[key: string]: any;
|
|
29
29
|
};
|
|
30
|
+
export type ReasoningMode = 'default' | 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
31
|
+
export type ReasoningOptions = {
|
|
32
|
+
mode: ReasoningMode;
|
|
33
|
+
};
|
|
34
|
+
export type ResolvedReasoningOptions = Pick<LLMProviderInvokeOptions, 'modelKwargs' | 'modelRequestParams'>;
|
|
30
35
|
export type LLMModelRequestBuilderResult = {
|
|
31
36
|
context: AIChatContext;
|
|
32
37
|
options?: LLMProviderInvokeOptions;
|
|
@@ -45,10 +50,12 @@ export declare abstract class LLMProvider {
|
|
|
45
50
|
serviceOptions: Record<string, any>;
|
|
46
51
|
modelOptions: Record<string, any> | undefined;
|
|
47
52
|
chatModel: any;
|
|
53
|
+
protected modelReasoningOptions: ReasoningOptions | undefined;
|
|
48
54
|
abstract createModel(): BaseChatModel | any;
|
|
49
55
|
get baseURL(): string | null;
|
|
50
56
|
constructor(opts: LLMProviderOptions);
|
|
51
57
|
protected getModelRequestBuilder(_model?: string): LLMModelRequestBuilder | null;
|
|
58
|
+
protected resolveReasoningOptions(_reasoning?: ReasoningOptions): ResolvedReasoningOptions;
|
|
52
59
|
prepareChain(context: AIChatContext): any;
|
|
53
60
|
invoke(context: AIChatContext, options?: LLMProviderInvokeOptions): Promise<any>;
|
|
54
61
|
stream(context: AIChatContext, options?: any): Promise<any>;
|
|
@@ -69,7 +76,8 @@ export declare abstract class LLMProvider {
|
|
|
69
76
|
parseAttachment(ctx: Context, attachment: AttachmentModel): Promise<ParsedAttachmentResult>;
|
|
70
77
|
protected isApiSupportedAttachment(attachment: AttachmentModel): boolean;
|
|
71
78
|
protected isDocumentLoaderSupportedAttachment(attachment: AttachmentModel): boolean;
|
|
72
|
-
protected
|
|
79
|
+
protected encodeAttachment(ctx: Context, attachment: AttachmentModel): Promise<string>;
|
|
80
|
+
protected convertToContent(ctx: Context, attachment: AttachmentModel): Promise<ParsedAttachmentResult>;
|
|
73
81
|
protected loadDocument(ctx: Context, attachment: any): Promise<any>;
|
|
74
82
|
getStructuredOutputOptions(structuredOutput: AIChatContext['structuredOutput']): any;
|
|
75
83
|
testFlight(): Promise<{
|
|
@@ -84,6 +84,7 @@ class LLMProvider {
|
|
|
84
84
|
serviceOptions;
|
|
85
85
|
modelOptions;
|
|
86
86
|
chatModel;
|
|
87
|
+
modelReasoningOptions;
|
|
87
88
|
get baseURL() {
|
|
88
89
|
return null;
|
|
89
90
|
}
|
|
@@ -92,13 +93,18 @@ class LLMProvider {
|
|
|
92
93
|
this.app = app;
|
|
93
94
|
this.serviceOptions = resolveServiceOptions(serviceOptions, app);
|
|
94
95
|
if (modelOptions) {
|
|
95
|
-
|
|
96
|
+
const { _reasoning, ...restModelOptions } = modelOptions;
|
|
97
|
+
this.modelReasoningOptions = _reasoning;
|
|
98
|
+
this.modelOptions = restModelOptions;
|
|
96
99
|
this.chatModel = this.createModel();
|
|
97
100
|
}
|
|
98
101
|
}
|
|
99
102
|
getModelRequestBuilder(_model) {
|
|
100
103
|
return null;
|
|
101
104
|
}
|
|
105
|
+
resolveReasoningOptions(_reasoning) {
|
|
106
|
+
return {};
|
|
107
|
+
}
|
|
102
108
|
prepareChain(context) {
|
|
103
109
|
var _a, _b, _c, _d;
|
|
104
110
|
let chain = this.chatModel;
|
|
@@ -183,6 +189,15 @@ class LLMProvider {
|
|
|
183
189
|
return (0, import_utils2.stripToolCallTags)(chunk);
|
|
184
190
|
}
|
|
185
191
|
async parseAttachment(ctx, attachment) {
|
|
192
|
+
var _a;
|
|
193
|
+
const dataSourceKey = (_a = attachment == null ? void 0 : attachment.source) == null ? void 0 : _a.dataSourceKey;
|
|
194
|
+
const isExternalAttachment = Boolean(dataSourceKey && dataSourceKey !== "main");
|
|
195
|
+
if (!(attachment == null ? void 0 : attachment.storageId) && !isExternalAttachment || !(attachment == null ? void 0 : attachment.filename)) {
|
|
196
|
+
return {
|
|
197
|
+
placement: "system",
|
|
198
|
+
content: "The user provided an attachment, but it is unavailable or invalid and cannot be parsed. Do not use this attachment as evidence; tell the user the attachment is unavailable."
|
|
199
|
+
};
|
|
200
|
+
}
|
|
186
201
|
if (this.isApiSupportedAttachment(attachment)) {
|
|
187
202
|
return await this.convertToContent(ctx, attachment);
|
|
188
203
|
} else if (this.isDocumentLoaderSupportedAttachment(attachment)) {
|
|
@@ -212,10 +227,24 @@ class LLMProvider {
|
|
|
212
227
|
const ext = import_node_path.default.extname((attachment == null ? void 0 : attachment.filename) ?? "").toLocaleLowerCase();
|
|
213
228
|
return import_document_loader.SUPPORTED_DOCUMENT_EXTNAMES.includes(ext);
|
|
214
229
|
}
|
|
215
|
-
async
|
|
230
|
+
async encodeAttachment(ctx, attachment) {
|
|
216
231
|
const fileManager = this.app.pm.get("file-manager");
|
|
217
|
-
|
|
218
|
-
|
|
232
|
+
if (typeof ctx.get !== "function") {
|
|
233
|
+
const { stream: stream2 } = await fileManager.getFileStream(attachment);
|
|
234
|
+
return await (0, import_utils2.encodeReadableStream)(stream2);
|
|
235
|
+
}
|
|
236
|
+
const { stream } = await fileManager.getFileStream(attachment, {
|
|
237
|
+
requestOptions: {
|
|
238
|
+
headers: {
|
|
239
|
+
Referer: ctx.get("referer") || "",
|
|
240
|
+
"User-Agent": ctx.get("user-agent") || ""
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
return await (0, import_utils2.encodeReadableStream)(stream);
|
|
245
|
+
}
|
|
246
|
+
async convertToContent(ctx, attachment) {
|
|
247
|
+
const data = await this.encodeAttachment(ctx, attachment);
|
|
219
248
|
if (attachment.mimetype.startsWith("image/")) {
|
|
220
249
|
return {
|
|
221
250
|
placement: "contentBlocks",
|
|
@@ -40,6 +40,7 @@ __export(ai_chat_conversation_exports, {
|
|
|
40
40
|
});
|
|
41
41
|
module.exports = __toCommonJS(ai_chat_conversation_exports);
|
|
42
42
|
var import_lodash = __toESM(require("lodash"));
|
|
43
|
+
var import_ai_usage_events = require("./ai-usage-events");
|
|
43
44
|
const createAIChatConversation = (ctx, sessionId) => {
|
|
44
45
|
return new AIChatConversationImpl(ctx, sessionId);
|
|
45
46
|
};
|
|
@@ -81,6 +82,7 @@ class AIChatConversationImpl {
|
|
|
81
82
|
),
|
|
82
83
|
transaction: this.transaction
|
|
83
84
|
});
|
|
85
|
+
await (0, import_ai_usage_events.recordAIUsageEventsForMessages)(this.ctx, this.sessionId, instances, this.transaction);
|
|
84
86
|
return isArray ? instances : instances[0];
|
|
85
87
|
}
|
|
86
88
|
async removeMessages({ messageId }) {
|
|
@@ -60,6 +60,34 @@ function serializeQueryFieldValue(value) {
|
|
|
60
60
|
}
|
|
61
61
|
return value;
|
|
62
62
|
}
|
|
63
|
+
function getRecordFieldValue(record, field) {
|
|
64
|
+
return field.split(".").reduce((current, key) => {
|
|
65
|
+
if (current === null || current === void 0) {
|
|
66
|
+
return current;
|
|
67
|
+
}
|
|
68
|
+
if (typeof current.get === "function") {
|
|
69
|
+
return current.get(key);
|
|
70
|
+
}
|
|
71
|
+
return current[key];
|
|
72
|
+
}, record);
|
|
73
|
+
}
|
|
74
|
+
function getQueryFieldOptions(collection, field) {
|
|
75
|
+
const parts = field.split(".");
|
|
76
|
+
let currentCollection = collection;
|
|
77
|
+
for (const [index, part] of parts.entries()) {
|
|
78
|
+
const currentField = currentCollection == null ? void 0 : currentCollection.getField(part);
|
|
79
|
+
if (!currentField) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (index === parts.length - 1) {
|
|
83
|
+
return currentField.options;
|
|
84
|
+
}
|
|
85
|
+
if (!currentField.isRelationField()) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
currentCollection = currentField.targetCollection();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
63
91
|
class AIContextDatasourceManager {
|
|
64
92
|
constructor(plugin) {
|
|
65
93
|
this.plugin = plugin;
|
|
@@ -149,17 +177,16 @@ class AIContextDatasourceManager {
|
|
|
149
177
|
}
|
|
150
178
|
});
|
|
151
179
|
}
|
|
152
|
-
const { fields, filter, sort, offset, limit } = options;
|
|
153
|
-
const result = await collection.repository.find({ fields, filter, sort, offset: offset ?? 0, limit });
|
|
180
|
+
const { fields, appends, filter, sort, offset, limit } = options;
|
|
181
|
+
const result = await collection.repository.find({ fields, appends, filter, sort, offset: offset ?? 0, limit });
|
|
154
182
|
const total = await collection.repository.count({ fields, filter });
|
|
155
183
|
const records = result.map(
|
|
156
184
|
(x) => fields.map((field) => {
|
|
157
|
-
|
|
158
|
-
const
|
|
159
|
-
const value = serializeQueryFieldValue(x[field]);
|
|
185
|
+
const { name, type } = getQueryFieldOptions(collection, field) || {};
|
|
186
|
+
const value = serializeQueryFieldValue(getRecordFieldValue(x, field));
|
|
160
187
|
return {
|
|
161
|
-
name,
|
|
162
|
-
type,
|
|
188
|
+
name: field.includes(".") ? field : name || field,
|
|
189
|
+
type: type || "unknown",
|
|
163
190
|
value
|
|
164
191
|
};
|
|
165
192
|
})
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
import { LLMProvider, LLMProviderOptions, EmbeddingProvider, EmbeddingProviderOptions } from '../llm-providers/provider';
|
|
9
|
+
import { LLMProvider, LLMProviderOptions, EmbeddingProvider, EmbeddingProviderOptions, ReasoningOptions } from '../llm-providers/provider';
|
|
10
10
|
import PluginAIServer from '../plugin';
|
|
11
11
|
import { ToolManager } from './tool-manager';
|
|
12
12
|
export type LLMProviderMeta = {
|
|
@@ -25,6 +25,7 @@ export type LLMModelOptions = {
|
|
|
25
25
|
llmService: string;
|
|
26
26
|
model: string;
|
|
27
27
|
webSearch?: boolean;
|
|
28
|
+
reasoning?: ReasoningOptions;
|
|
28
29
|
};
|
|
29
30
|
export type EnabledLLMModel = {
|
|
30
31
|
label: string;
|
|
@@ -123,7 +123,7 @@ class AIManager {
|
|
|
123
123
|
return (0, import_recommended_models.getRecommendedModels)(provider);
|
|
124
124
|
}
|
|
125
125
|
async getLLMService(options) {
|
|
126
|
-
const { llmService, model, webSearch } = options ?? {};
|
|
126
|
+
const { llmService, model, webSearch, reasoning } = options ?? {};
|
|
127
127
|
if (!llmService || !model) {
|
|
128
128
|
throw new Error("LLM service not configured");
|
|
129
129
|
}
|
|
@@ -134,6 +134,9 @@ class AIManager {
|
|
|
134
134
|
if (webSearch === true) {
|
|
135
135
|
modelOptions.builtIn = { webSearch: true };
|
|
136
136
|
}
|
|
137
|
+
if (reasoning) {
|
|
138
|
+
modelOptions._reasoning = reasoning;
|
|
139
|
+
}
|
|
137
140
|
const service = await this.plugin.db.getRepository("llmServices").findOne({
|
|
138
141
|
filter: {
|
|
139
142
|
name: llmService
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
import { Context } from '@nocobase/actions';
|
|
10
|
+
import { Transaction } from '@nocobase/database';
|
|
11
|
+
import { AIMessage } from '../types';
|
|
12
|
+
type RecordLike = Record<string, unknown> & {
|
|
13
|
+
get?: (key: string) => unknown;
|
|
14
|
+
};
|
|
15
|
+
export type NormalizedUsageMetadata = {
|
|
16
|
+
inputTokens: number;
|
|
17
|
+
outputTokens: number;
|
|
18
|
+
totalTokens: number;
|
|
19
|
+
cachedTokens: number;
|
|
20
|
+
reasoningTokens: number;
|
|
21
|
+
};
|
|
22
|
+
export type AIUsageEventValues = {
|
|
23
|
+
occurredAt: Date;
|
|
24
|
+
sessionId: string;
|
|
25
|
+
messageId: string;
|
|
26
|
+
userId?: unknown;
|
|
27
|
+
aiEmployeeUsername?: unknown;
|
|
28
|
+
from: string;
|
|
29
|
+
category: string;
|
|
30
|
+
eventType: 'llm_message';
|
|
31
|
+
role: string;
|
|
32
|
+
provider: string;
|
|
33
|
+
llmService?: string;
|
|
34
|
+
model: string;
|
|
35
|
+
inputTokens: number;
|
|
36
|
+
outputTokens: number;
|
|
37
|
+
totalTokens: number;
|
|
38
|
+
cachedTokens: number;
|
|
39
|
+
reasoningTokens: number;
|
|
40
|
+
toolCallCount: number;
|
|
41
|
+
autoToolCallCount: number;
|
|
42
|
+
status: 'success';
|
|
43
|
+
rawUsageMetadata: Record<string, unknown>;
|
|
44
|
+
rawResponseMetadata?: Record<string, unknown>;
|
|
45
|
+
};
|
|
46
|
+
export declare function normalizeUsageMetadata(usageMetadata: Record<string, unknown>): NormalizedUsageMetadata;
|
|
47
|
+
export declare function buildAIUsageEventValues(sessionId: string, message: AIMessage, conversation: RecordLike): AIUsageEventValues | null;
|
|
48
|
+
export declare function recordAIUsageEventsForMessages(ctx: Context, sessionId: string, messages: AIMessage[], transaction?: Transaction): Promise<void>;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
var __defProp = Object.defineProperty;
|
|
11
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
12
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __export = (target, all) => {
|
|
15
|
+
for (var name in all)
|
|
16
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
17
|
+
};
|
|
18
|
+
var __copyProps = (to, from, except, desc) => {
|
|
19
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
20
|
+
for (let key of __getOwnPropNames(from))
|
|
21
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
22
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
23
|
+
}
|
|
24
|
+
return to;
|
|
25
|
+
};
|
|
26
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
27
|
+
var ai_usage_events_exports = {};
|
|
28
|
+
__export(ai_usage_events_exports, {
|
|
29
|
+
buildAIUsageEventValues: () => buildAIUsageEventValues,
|
|
30
|
+
normalizeUsageMetadata: () => normalizeUsageMetadata,
|
|
31
|
+
recordAIUsageEventsForMessages: () => recordAIUsageEventsForMessages
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(ai_usage_events_exports);
|
|
34
|
+
const SKIPPED_MESSAGE_ROLES = /* @__PURE__ */ new Set(["user", "tool", "system"]);
|
|
35
|
+
function normalizeUsageMetadata(usageMetadata) {
|
|
36
|
+
const inputTokens = getNumericValue(usageMetadata, ["input_tokens", "prompt_tokens", "inputTokens", "promptTokens"]) ?? 0;
|
|
37
|
+
const outputTokens = getNumericValue(usageMetadata, ["output_tokens", "completion_tokens", "outputTokens", "completionTokens"]) ?? 0;
|
|
38
|
+
const totalTokens = getNumericValue(usageMetadata, ["total_tokens", "totalTokens"]) ?? inputTokens + outputTokens;
|
|
39
|
+
const cachedTokens = getNumericValue(usageMetadata, ["cached_tokens", "cachedTokens"]) ?? getNestedNumericValue(usageMetadata, ["input_token_details", "cache_read"]) ?? getNestedNumericValue(usageMetadata, ["input_token_details", "cached_tokens"]) ?? getNestedNumericValue(usageMetadata, ["prompt_tokens_details", "cached_tokens"]) ?? 0;
|
|
40
|
+
const reasoningTokens = getNumericValue(usageMetadata, ["reasoning_tokens", "reasoningTokens"]) ?? getNestedNumericValue(usageMetadata, ["output_token_details", "reasoning"]) ?? getNestedNumericValue(usageMetadata, ["completion_tokens_details", "reasoning_tokens"]) ?? 0;
|
|
41
|
+
return {
|
|
42
|
+
inputTokens,
|
|
43
|
+
outputTokens,
|
|
44
|
+
totalTokens,
|
|
45
|
+
cachedTokens,
|
|
46
|
+
reasoningTokens
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function buildAIUsageEventValues(sessionId, message, conversation) {
|
|
50
|
+
const role = readString(message, "role");
|
|
51
|
+
if (!role || SKIPPED_MESSAGE_ROLES.has(role)) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
const metadata = readRecord(message, "metadata");
|
|
55
|
+
const provider = readString(metadata, "provider");
|
|
56
|
+
const model = readString(metadata, "model");
|
|
57
|
+
if (!provider || !model) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const usageMetadata = readRecord(metadata, "usage_metadata") ?? {};
|
|
61
|
+
const responseMetadata = readRecord(metadata, "response_metadata");
|
|
62
|
+
const normalizedUsage = normalizeUsageMetadata(usageMetadata);
|
|
63
|
+
const toolCalls = readArray(message, "toolCalls");
|
|
64
|
+
const autoCallTools = readArray(metadata, "autoCallTools");
|
|
65
|
+
const llmService = readString(metadata, "llmService");
|
|
66
|
+
return {
|
|
67
|
+
occurredAt: normalizeDate(readValue(message, "createdAt")),
|
|
68
|
+
sessionId,
|
|
69
|
+
messageId: String(readValue(message, "messageId") ?? ""),
|
|
70
|
+
userId: readValue(conversation, "userId"),
|
|
71
|
+
aiEmployeeUsername: readValue(conversation, "aiEmployeeUsername"),
|
|
72
|
+
from: readString(conversation, "from") ?? "main-agent",
|
|
73
|
+
category: readString(conversation, "category") ?? "chat",
|
|
74
|
+
eventType: "llm_message",
|
|
75
|
+
role,
|
|
76
|
+
provider,
|
|
77
|
+
...llmService ? { llmService } : {},
|
|
78
|
+
model,
|
|
79
|
+
...normalizedUsage,
|
|
80
|
+
toolCallCount: (toolCalls == null ? void 0 : toolCalls.length) ?? 0,
|
|
81
|
+
autoToolCallCount: (autoCallTools == null ? void 0 : autoCallTools.length) ?? 0,
|
|
82
|
+
status: "success",
|
|
83
|
+
rawUsageMetadata: usageMetadata,
|
|
84
|
+
...responseMetadata ? { rawResponseMetadata: responseMetadata } : {}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async function recordAIUsageEventsForMessages(ctx, sessionId, messages, transaction) {
|
|
88
|
+
const recordableMessages = messages.filter(isRecordableLLMMessage);
|
|
89
|
+
if (recordableMessages.length === 0) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const conversation = await ctx.db.getRepository("aiConversations").findOne({
|
|
93
|
+
filter: {
|
|
94
|
+
sessionId
|
|
95
|
+
},
|
|
96
|
+
transaction
|
|
97
|
+
});
|
|
98
|
+
if (!conversation) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const usageEvents = recordableMessages.map((message) => buildAIUsageEventValues(sessionId, message, conversation)).filter(isUsageEventValues);
|
|
102
|
+
if (usageEvents.length === 0) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const usageEventsRepo = ctx.db.getRepository("aiUsageEvents");
|
|
106
|
+
for (const values of usageEvents) {
|
|
107
|
+
await usageEventsRepo.updateOrCreate({
|
|
108
|
+
filterKeys: ["messageId", "eventType"],
|
|
109
|
+
values,
|
|
110
|
+
transaction
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function isUsageEventValues(value) {
|
|
115
|
+
return value !== null && value.messageId !== "";
|
|
116
|
+
}
|
|
117
|
+
function isRecordableLLMMessage(message) {
|
|
118
|
+
const role = readString(message, "role");
|
|
119
|
+
if (!role || SKIPPED_MESSAGE_ROLES.has(role)) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
const metadata = readRecord(message, "metadata");
|
|
123
|
+
return Boolean(readString(metadata, "provider") && readString(metadata, "model"));
|
|
124
|
+
}
|
|
125
|
+
function isRecord(value) {
|
|
126
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
127
|
+
}
|
|
128
|
+
function readValue(source, key) {
|
|
129
|
+
if (!isRecord(source)) {
|
|
130
|
+
return void 0;
|
|
131
|
+
}
|
|
132
|
+
const value = source[key];
|
|
133
|
+
if (value !== void 0) {
|
|
134
|
+
return value;
|
|
135
|
+
}
|
|
136
|
+
if (typeof source.get === "function") {
|
|
137
|
+
return source.get(key);
|
|
138
|
+
}
|
|
139
|
+
return void 0;
|
|
140
|
+
}
|
|
141
|
+
function readString(source, key) {
|
|
142
|
+
const value = readValue(source, key);
|
|
143
|
+
return typeof value === "string" && value !== "" ? value : void 0;
|
|
144
|
+
}
|
|
145
|
+
function readRecord(source, key) {
|
|
146
|
+
const value = readValue(source, key);
|
|
147
|
+
return isRecord(value) ? value : void 0;
|
|
148
|
+
}
|
|
149
|
+
function readArray(source, key) {
|
|
150
|
+
const value = readValue(source, key);
|
|
151
|
+
return Array.isArray(value) ? value : void 0;
|
|
152
|
+
}
|
|
153
|
+
function getNumericValue(source, keys) {
|
|
154
|
+
for (const key of keys) {
|
|
155
|
+
const normalized = normalizeNumber(source[key]);
|
|
156
|
+
if (normalized !== void 0) {
|
|
157
|
+
return normalized;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function getNestedNumericValue(source, path) {
|
|
162
|
+
let current = source;
|
|
163
|
+
for (const key of path) {
|
|
164
|
+
if (!isRecord(current)) {
|
|
165
|
+
return void 0;
|
|
166
|
+
}
|
|
167
|
+
current = current[key];
|
|
168
|
+
}
|
|
169
|
+
return normalizeNumber(current);
|
|
170
|
+
}
|
|
171
|
+
function normalizeNumber(value) {
|
|
172
|
+
const numeric = typeof value === "number" ? value : typeof value === "string" ? Number(value) : NaN;
|
|
173
|
+
if (!Number.isFinite(numeric)) {
|
|
174
|
+
return void 0;
|
|
175
|
+
}
|
|
176
|
+
return Math.max(0, Math.trunc(numeric));
|
|
177
|
+
}
|
|
178
|
+
function normalizeDate(value) {
|
|
179
|
+
if (value instanceof Date && Number.isFinite(value.getTime())) {
|
|
180
|
+
return value;
|
|
181
|
+
}
|
|
182
|
+
if (typeof value === "string" || typeof value === "number") {
|
|
183
|
+
const date = new Date(value);
|
|
184
|
+
if (Number.isFinite(date.getTime())) {
|
|
185
|
+
return date;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return /* @__PURE__ */ new Date();
|
|
189
|
+
}
|
|
190
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
191
|
+
0 && (module.exports = {
|
|
192
|
+
buildAIUsageEventValues,
|
|
193
|
+
normalizeUsageMetadata,
|
|
194
|
+
recordAIUsageEventsForMessages
|
|
195
|
+
});
|
package/dist/server/plugin.js
CHANGED
|
@@ -75,10 +75,12 @@ var import_document_loader = require("./document-loader");
|
|
|
75
75
|
var import_checkpoints = require("./ai-employees/checkpoints");
|
|
76
76
|
var import_mimo = require("./llm-providers/mimo");
|
|
77
77
|
var import_mistral = require("./llm-providers/mistral");
|
|
78
|
+
var import_orcarouter = require("./llm-providers/orcarouter");
|
|
78
79
|
var import_sub_agents = require("./ai-employees/sub-agents");
|
|
79
80
|
var import_employee = require("./workflow/nodes/employee");
|
|
80
81
|
var import_ai_knowledge_base = require("./ai-employees/ai-knowledge-base");
|
|
81
82
|
var import_llm_stream_manager = require("./manager/llm-stream-manager");
|
|
83
|
+
var import_attachments = require("./attachments");
|
|
82
84
|
class PluginAIServer extends import_server.Plugin {
|
|
83
85
|
features = new import_ai_feature_manager.AIPluginFeatureManagerImpl();
|
|
84
86
|
aiManager = new import_ai_manager.AIManager(this);
|
|
@@ -186,6 +188,7 @@ class PluginAIServer extends import_server.Plugin {
|
|
|
186
188
|
this.aiManager.registerLLMProvider("openai-completions", import_openai2.openaiCompletionsProviderOptions);
|
|
187
189
|
this.aiManager.registerLLMProvider("kimi", import_kimi.kimiProviderOptions);
|
|
188
190
|
this.aiManager.registerLLMProvider("xai", import_xai.xaiProviderOptions);
|
|
191
|
+
this.aiManager.registerLLMProvider("orcarouter", import_orcarouter.orcarouterProviderOptions);
|
|
189
192
|
}
|
|
190
193
|
registerTools() {
|
|
191
194
|
const toolsManager = this.ai.toolsManager;
|
|
@@ -216,6 +219,19 @@ class PluginAIServer extends import_server.Plugin {
|
|
|
216
219
|
},
|
|
217
220
|
{ before: "createMiddleware" }
|
|
218
221
|
);
|
|
222
|
+
this.app.resourceManager.use(
|
|
223
|
+
async (ctx, next) => {
|
|
224
|
+
const { resourceName, actionName } = ctx.action;
|
|
225
|
+
if (resourceName === "aiFiles" && actionName === "create") {
|
|
226
|
+
(0, import_attachments.appendAIFileAttachmentSource)(ctx.action.params.values);
|
|
227
|
+
}
|
|
228
|
+
await next();
|
|
229
|
+
if (resourceName === "aiFiles" && actionName === "create") {
|
|
230
|
+
(0, import_attachments.appendAIFileAttachmentSource)(ctx.body);
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
{ after: "createMiddleware" }
|
|
234
|
+
);
|
|
219
235
|
Object.entries(aiEmployeeActions).forEach(([name, action]) => {
|
|
220
236
|
this.app.resourceManager.registerActionHandler(`aiEmployees:${name}`, action);
|
|
221
237
|
});
|