@nocobase/plugin-ai 2.2.0-beta.9 → 2.2.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-dev/watermark-plugin.md +2 -0
- package/dist/ai/docs/nocobase/ai-employees/block/ai-chat-box.md +133 -0
- package/dist/ai/docs/nocobase/ai-employees/knowledge-base/knowledge-base/documents.md +1 -1
- package/dist/ai/docs/nocobase/ai-employees/knowledge-base/knowledge-base/index.md +11 -7
- package/dist/ai/docs/nocobase/ai-employees/knowledge-base/knowledge-base/settings.md +12 -8
- package/dist/ai/docs/nocobase/ai-employees/knowledge-base/rag.md +43 -13
- package/dist/ai/docs/nocobase/ai-employees/knowledge-base/vector-database.md +3 -3
- package/dist/ai/docs/nocobase/ai-employees/scenarios/company-background-research.md +125 -0
- package/dist/ai/docs/nocobase/ai-employees/workflow/nodes/knowledge/create-document.md +1 -1
- package/dist/ai/docs/nocobase/api/app/env.md +2 -0
- package/dist/ai/docs/nocobase/api/cli/api/resource/create.md +4 -3
- package/dist/ai/docs/nocobase/building-tips/ai-fill-js-block-form.md +1092 -0
- package/dist/ai/docs/nocobase/building-tips/operations-dashboard.md +513 -0
- package/dist/ai/docs/nocobase/data-sources/calendar/calendar-collection.md +100 -3
- package/dist/ai/docs/nocobase/data-sources/collection-comment/index.md +92 -39
- package/dist/ai/docs/nocobase/data-sources/collection-sql/index.md +150 -29
- package/dist/ai/docs/nocobase/data-sources/collection-tree/index.md +93 -5
- package/dist/ai/docs/nocobase/data-sources/collection-view/index.md +226 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/china-region.md +122 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/collection-select.md +105 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/json.md +102 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/nano-id.md +104 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/snowflake-id.md +108 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/sort.md +3 -19
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/advanced/uuid.md +104 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/associations/index.md +44 -8
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/color.md +102 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/email.md +104 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/icon.md +102 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/input.md +112 -8
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/integer.md +103 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/number.md +103 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/password.md +102 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/percent.md +104 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/phone.md +104 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/textarea.md +99 -8
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/basic/url.md +103 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/checkbox-group.md +105 -3
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/checkbox.md +102 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/china-region.md +108 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/multiple-select.md +103 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/radio-group.md +106 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/choices/select.md +103 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/date.md +102 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/datetime-without-tz.md +103 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/datetime.md +103 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/index.md +53 -47
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/time.md +102 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/datetime/unix-timestamp.md +103 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/geometric/circle.md +102 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/geometric/line.md +103 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/geometric/point.md +102 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/geometric/polygon.md +102 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/index.md +62 -16
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/media/markdown.md +104 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/media/rich-text.md +105 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/created-at.md +105 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/created-by.md +103 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/space.md +100 -6
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/table-oid.md +102 -4
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/updated-at.md +104 -5
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/system-info/updated-by.md +104 -6
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection-fields/validation.md +68 -58
- package/dist/ai/docs/nocobase/data-sources/data-modeling/collection.md +32 -13
- package/dist/ai/docs/nocobase/data-sources/data-modeling/index.md +41 -33
- package/dist/ai/docs/nocobase/data-sources/data-source-external-mariadb/index.md +114 -6
- package/dist/ai/docs/nocobase/data-sources/data-source-external-mssql/index.md +117 -6
- package/dist/ai/docs/nocobase/data-sources/data-source-external-mysql/index.md +103 -6
- package/dist/ai/docs/nocobase/data-sources/data-source-external-nocobase/index.md +75 -73
- package/dist/ai/docs/nocobase/data-sources/data-source-external-oracle/index.md +129 -11
- package/dist/ai/docs/nocobase/data-sources/data-source-external-postgres/index.md +110 -6
- package/dist/ai/docs/nocobase/data-sources/data-source-kingbase/index.md +75 -49
- package/dist/ai/docs/nocobase/data-sources/data-source-main/general-collection.md +116 -15
- package/dist/ai/docs/nocobase/data-sources/data-source-main/index.md +92 -62
- package/dist/ai/docs/nocobase/data-sources/data-source-main/inheritance-collection.md +97 -10
- package/dist/ai/docs/nocobase/data-sources/data-source-manager/external-database.md +97 -58
- package/dist/ai/docs/nocobase/data-sources/data-source-manager/index.md +32 -24
- package/dist/ai/docs/nocobase/data-sources/data-source-rest-api/index.md +115 -153
- package/dist/ai/docs/nocobase/data-sources/external/clickhouse.md +124 -0
- package/dist/ai/docs/nocobase/data-sources/external/doris.md +130 -0
- package/dist/ai/docs/nocobase/data-sources/external/index.md +140 -0
- package/dist/ai/docs/nocobase/data-sources/external/kingbase.md +129 -0
- package/dist/ai/docs/nocobase/data-sources/external/mariadb.md +126 -0
- package/dist/ai/docs/nocobase/data-sources/external/mssql.md +129 -0
- package/dist/ai/docs/nocobase/data-sources/external/mysql.md +115 -0
- package/dist/ai/docs/nocobase/data-sources/external/nocobase.md +159 -0
- package/dist/ai/docs/nocobase/data-sources/external/oceanbase.md +126 -0
- package/dist/ai/docs/nocobase/data-sources/external/oracle.md +158 -0
- package/dist/ai/docs/nocobase/data-sources/external/postgresql.md +122 -0
- package/dist/ai/docs/nocobase/data-sources/external/rest-api.md +245 -0
- package/dist/ai/docs/nocobase/data-sources/field-attachment-url/index.md +100 -12
- package/dist/ai/docs/nocobase/data-sources/field-encryption/index.md +48 -47
- package/dist/ai/docs/nocobase/data-sources/field-formula/index.md +99 -5
- package/dist/ai/docs/nocobase/data-sources/field-markdown-vditor/index.md +105 -5
- package/dist/ai/docs/nocobase/data-sources/field-sequence/index.md +102 -5
- package/dist/ai/docs/nocobase/data-sources/field-signature/index.md +18 -16
- package/dist/ai/docs/nocobase/data-sources/field-sort/index.md +76 -73
- package/dist/ai/docs/nocobase/data-sources/file-manager/field-attachment.md +101 -7
- package/dist/ai/docs/nocobase/data-sources/file-manager/file-collection.md +101 -14
- package/dist/ai/docs/nocobase/data-sources/index.md +49 -33
- package/dist/ai/docs/nocobase/data-sources/main/index.md +130 -0
- package/dist/ai/docs/nocobase/data-sources/main/kingbase.md +147 -0
- package/dist/ai/docs/nocobase/data-sources/main/mariadb.md +59 -0
- package/dist/ai/docs/nocobase/data-sources/main/mysql.md +59 -0
- package/dist/ai/docs/nocobase/data-sources/main/oceanbase.md +62 -0
- package/dist/ai/docs/nocobase/data-sources/main/postgresql.md +61 -0
- package/dist/ai/docs/nocobase/file-manager/file-preview/index.md +44 -3
- package/dist/ai/docs/nocobase/file-manager/stable-url.md +87 -0
- package/dist/ai/docs/nocobase/file-manager/storage/aliyun-oss.md +100 -3
- package/dist/ai/docs/nocobase/file-manager/storage/index.md +66 -26
- package/dist/ai/docs/nocobase/file-manager/storage/local.md +3 -1
- package/dist/ai/docs/nocobase/file-manager/storage/s3-pro.md +58 -7
- 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 +34 -1
- 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/ops-management/migration-manager/built-in-tables.md +1 -2
- package/dist/ai/docs/nocobase/plugin-development/build.md +10 -4
- package/dist/ai/docs/nocobase/plugin-development/client/appendix/faq.md +1 -1
- package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-action.md +2 -0
- package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-block.md +2 -0
- package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-field.md +2 -0
- package/dist/ai/docs/nocobase/plugin-development/client/examples/fullstack-plugin.md +2 -0
- package/dist/ai/docs/nocobase/plugin-development/client/examples/settings-page.md +2 -0
- package/dist/ai/docs/nocobase/plugin-development/common/i18n.md +3 -3
- package/dist/ai/docs/nocobase/plugin-development/server/cache.md +1 -1
- package/dist/ai/docs/nocobase/plugin-development/server/collections.md +0 -6
- package/dist/ai/docs/nocobase/plugin-development/server/command.md +2 -2
- package/dist/ai/docs/nocobase/plugin-development/server/context.md +2 -2
- package/dist/ai/docs/nocobase/plugin-development/server/i18n.md +4 -4
- package/dist/ai/docs/nocobase/plugin-development/write-your-first-plugin.md +91 -43
- package/dist/ai/docs/nocobase/plugins/@nocobase/plugin-block-comment/index.md +14 -0
- package/dist/ai/docs/nocobase/runjs/context/ai.md +396 -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/users-permissions/sync/index.md +8 -1
- package/dist/ai/docs/nocobase/users-permissions/sync/sources/dingtalk.md +138 -0
- package/dist/ai/docs/nocobase/users-permissions/sync/sources/ldap.md +87 -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/ai/docs/nocobase/workflow/nodes/javascript.md +21 -1
- package/dist/ai/tools/executeFrontendTool.d.ts +10 -0
- package/dist/ai/tools/executeFrontendTool.js +86 -0
- package/dist/ai/tools/formFiller.js +4 -3
- package/dist/ai/tools/getSkill.js +1 -1
- package/dist/ai/tools/knowledge-base-retrieve.js +3 -1
- package/dist/ai/tools/loadFrontendTool.d.ts +10 -0
- package/dist/ai/tools/loadFrontendTool.js +99 -0
- package/dist/ai/tools/subAgentWebSearch.js +20 -15
- package/dist/client/23.65ea8c37cd4b884b.js +10 -0
- package/dist/client/244.28ee769f796b7c2f.js +10 -0
- package/dist/client/264.cc98933ef65608b6.js +10 -0
- package/dist/client/336.7a8a8853196ad779.js +11 -0
- package/dist/client/416.92b74ca47e4099c4.js +10 -0
- package/dist/client/446.d63c38d0309fe250.js +10 -0
- package/dist/client/525.94dd4136c1361477.js +10 -0
- package/dist/client/663.680bcf6272a8504d.js +10 -0
- package/dist/client/681.6ffbc9329b9ac242.js +10 -0
- package/dist/client/705.a4fe26945d175e8a.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 +13 -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/244.39348a95d627d9e3.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/416.0e1c2d9cde43b83d.js +10 -0
- package/dist/client-v2/420.a5b929a5e7f330be.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.6890caa389564ff7.js +10 -0
- package/dist/client-v2/705.f2e1b26a3f000075.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 +11 -2
- package/dist/{client → client-v2}/ai-employees/AddContextButton.d.ts +3 -1
- package/dist/{client → client-v2}/ai-employees/ai-coding/AICodingButton.d.ts +2 -1
- package/dist/{client/ai-employees/chatbox/AIEmployeeSwitch.d.ts → client-v2/ai-employees/chatbox/components/AIEmployeeSwitcher.d.ts} +1 -0
- 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/markdown/Code.d.ts → client-v2/ai-employees/chatbox/components/ChatBoxUnreadBadge.d.ts} +6 -7
- package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ContextItem.d.ts +1 -1
- package/dist/client-v2/ai-employees/chatbox/components/Conversations.d.ts +18 -0
- package/dist/{client/ai-employees/ai-coding/markdown/Code.d.ts → client-v2/ai-employees/chatbox/components/Markdown.d.ts} +12 -3
- package/dist/{client/ai-employees/1.x/selector/BlockSelector.d.ts → client-v2/ai-employees/chatbox/components/MessageContent.d.ts} +3 -4
- package/dist/client-v2/ai-employees/chatbox/components/MessageRenderers.d.ts +39 -0
- package/dist/{client/ai-employees/admin/datasource/components/DatasourceSettingDetail.d.ts → client-v2/ai-employees/chatbox/components/Messages.d.ts} +4 -4
- package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ModelSwitcher.d.ts +4 -0
- package/dist/client-v2/ai-employees/chatbox/components/Sender.d.ts +42 -0
- package/dist/{client/ai-employees/chatbox/generative-ui → client-v2/ai-employees/chatbox/components}/ToolCard.d.ts +7 -5
- package/dist/client-v2/ai-employees/chatbox/components/index.d.ts +14 -0
- package/dist/client-v2/ai-employees/chatbox/hooks/reasoning-stream.d.ts +10 -0
- package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChat.d.ts +29 -27
- package/dist/client-v2/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +5 -3
- package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatBoxEffect.d.ts +2 -1
- package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatConversationActions.d.ts +5 -4
- package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatMessageActions.d.ts +12 -6
- package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useToolCallActions.d.ts +4 -2
- package/dist/client-v2/ai-employees/chatbox/hooks/useUploadFiles.d.ts +56 -0
- package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useWorkflowTasks.d.ts +4 -3
- package/dist/client-v2/ai-employees/chatbox/index.d.ts +17 -0
- package/dist/{client → client-v2}/ai-employees/chatbox/model.d.ts +9 -2
- package/dist/client-v2/ai-employees/chatbox/roles.d.ts +11 -0
- package/dist/client-v2/ai-employees/chatbox/stores/chat-box.d.ts +46 -81
- package/dist/client-v2/ai-employees/chatbox/stores/chat-conversations.d.ts +8 -25
- package/dist/client-v2/ai-employees/chatbox/stores/chat-messages.d.ts +23 -63
- package/dist/client-v2/ai-employees/chatbox/stores/chat-sender.d.ts +43 -0
- package/dist/{client → client-v2}/ai-employees/chatbox/stores/chat-tool-call.d.ts +6 -19
- package/dist/client-v2/ai-employees/chatbox/stores/chat-tools.d.ts +36 -0
- package/dist/client-v2/ai-employees/chatbox/stores/mounted-chat-boxes.d.ts +20 -0
- package/dist/client-v2/ai-employees/chatbox/stores/runtime.d.ts +43 -0
- package/dist/client-v2/ai-employees/chatbox/stores/workflow-tasks.d.ts +72 -0
- package/dist/client-v2/ai-employees/chatbox/upload.d.ts +19 -0
- package/dist/client-v2/ai-employees/chatbox/utils.d.ts +85 -0
- 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-v2/ai-employees/data-modeling/setup.d.ts +15 -0
- 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/ai-employees/ai-coding/tools/index.d.ts → client-v2/ai-employees/frontend-tools.d.ts} +3 -3
- 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-v2/ai-employees/tools/SuggestionsOptionsCard.d.ts +16 -0
- package/dist/client-v2/ai-employees/tools/WorkflowTaskOutputCard.d.ts +16 -0
- 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 +131 -7
- package/dist/client-v2/block/ai-chat-box/AIChatBoxBlockModel.d.ts +21 -0
- package/dist/{client/workflow/nodes/employee/flow-models/task.d.ts → client-v2/block/ai-chat-box/AIChatBoxCoreModel.d.ts} +1 -1
- package/dist/{client/admin-settings/AdminSettings.d.ts → client-v2/block/ai-chat-box/components/AIChatBoxCoreView.d.ts} +1 -1
- package/dist/{client/ai-employees/AIEmployeeListItem.d.ts → client-v2/block/ai-chat-box/components/AIChatBoxView.d.ts} +3 -5
- package/dist/client-v2/block/ai-chat-box/index.d.ts +14 -0
- package/dist/client-v2/block/ai-chat-box/settings.d.ts +12 -0
- package/dist/client-v2/block/ai-chat-box/sub-models.d.ts +26 -0
- package/dist/client-v2/block/ai-chat-box/types.d.ts +38 -0
- package/dist/client-v2/block/ai-chat-box/utils.d.ts +26 -0
- package/dist/client-v2/components/RemoteSelect.d.ts +43 -0
- package/dist/client-v2/f0053e745af0ad03.svg +50 -0
- package/dist/client-v2/index.d.ts +11 -12
- package/dist/client-v2/index.js +37 -1
- package/dist/client-v2/llm-providers/forms.d.ts +46 -0
- package/dist/client-v2/llm-providers/index.d.ts +25 -0
- package/dist/client-v2/llm-services/model-select.d.ts +33 -0
- package/dist/client-v2/llm-services/utils.d.ts +14 -0
- package/dist/client-v2/locale.d.ts +14 -0
- package/dist/client-v2/manager/ai-manager.d.ts +62 -0
- package/dist/client-v2/manager/frontend-tool-registry.d.ts +30 -0
- package/dist/client-v2/models/ai-employees/AIEmployeeActionModel.d.ts +36 -0
- package/dist/client-v2/models/ai-employees/AIEmployeeShortcutModel.d.ts +52 -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 +74 -0
- package/dist/client-v2/pages/LLMServicesPage.d.ts +80 -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 +5 -23
- package/dist/client-v2/runjs/registerAIEmployeeRunJSFacade.d.ts +21 -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/ai-employees/AISettingsProvider.d.ts → client-v2/workflow/nodes/employee/components/WebSearchOptions.d.ts} +6 -8
- package/dist/client-v2/workflow/nodes/employee/index.d.ts +23 -0
- package/dist/client-v2/workflow/nodes/llm/components/LLMFieldset.d.ts +12 -0
- package/dist/{client/ai-employees/chatbox → 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-v2/workflow/register.d.ts +10 -0
- 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/collections/ai-employees.d.ts +1 -0
- package/dist/collections/ai-employees.js +1 -0
- package/dist/common/ai-employee-validation.d.ts +15 -0
- package/dist/common/ai-employee-validation.js +61 -0
- package/dist/common/error-codes.d.ts +13 -0
- package/dist/common/error-codes.js +48 -0
- package/dist/common/frontend-tools.d.ts +26 -0
- package/dist/common/frontend-tools.js +57 -0
- package/dist/common/llm-service-models.d.ts +16 -0
- package/dist/common/llm-service-models.js +84 -0
- package/dist/externalVersion.js +23 -26
- package/dist/locale/de-DE.json +2 -1
- package/dist/locale/en-US.json +129 -1
- package/dist/locale/es-ES.json +2 -1
- package/dist/locale/fr-FR.json +2 -1
- package/dist/locale/hu-HU.json +2 -1
- package/dist/locale/id-ID.json +2 -1
- package/dist/locale/it-IT.json +2 -1
- package/dist/locale/ja-JP.json +2 -1
- package/dist/locale/ko-KR.json +2 -1
- package/dist/locale/nl-NL.json +2 -1
- package/dist/locale/pt-BR.json +2 -1
- package/dist/locale/ru-RU.json +2 -1
- package/dist/locale/tr-TR.json +2 -1
- package/dist/locale/uk-UA.json +2 -1
- package/dist/locale/vi-VN.json +2 -1
- package/dist/locale/zh-CN.json +129 -1
- package/dist/locale/zh-TW.json +2 -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-conversations.d.ts +4 -1
- package/dist/server/ai-employees/ai-conversations.js +2 -0
- package/dist/server/ai-employees/ai-employee.d.ts +5 -1
- package/dist/server/ai-employees/ai-employee.js +149 -49
- package/dist/server/ai-employees/ai-knowledge-base.d.ts +21 -1
- package/dist/server/ai-employees/ai-knowledge-base.js +76 -8
- package/dist/server/ai-employees/middleware/conversation.js +9 -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/reasoning-stream-state.d.ts +23 -0
- package/dist/server/ai-employees/reasoning-stream-state.js +63 -0
- 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-conversations.js +5 -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/constants.js +1 -1
- 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/features/knowledge-base.d.ts +2 -0
- package/dist/server/frontend-tools.d.ts +25 -0
- package/dist/server/frontend-tools.js +171 -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/common/reasoning.js +18 -10
- package/dist/server/llm-providers/dashscope.d.ts +2 -1
- package/dist/server/llm-providers/dashscope.js +16 -1
- package/dist/{client/ai-employees/datasource → server/llm-providers/deepseek}/index.d.ts +2 -1
- package/dist/server/llm-providers/deepseek/index.js +32 -0
- package/dist/server/llm-providers/deepseek/provider.d.ts +57 -0
- package/dist/server/llm-providers/deepseek/provider.js +320 -0
- package/dist/server/llm-providers/deepseek/reasoning.d.ts +83 -0
- package/dist/server/llm-providers/deepseek/reasoning.js +285 -0
- 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/{deepseek.js → orcarouter.js} +68 -56
- package/dist/server/llm-providers/provider.d.ts +11 -2
- package/dist/server/llm-providers/provider.js +36 -4
- package/dist/server/llm-providers/shengsuanyun.d.ts +29 -0
- package/dist/server/llm-providers/shengsuanyun.js +114 -0
- 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-feature-manager.js +1 -1
- package/dist/server/manager/ai-manager.d.ts +5 -1
- package/dist/server/manager/ai-manager.js +11 -3
- package/dist/server/manager/ai-usage-events.d.ts +49 -0
- package/dist/server/manager/ai-usage-events.js +195 -0
- package/dist/server/manager/work-context-handler.js +10 -3
- package/dist/server/migrations/20260501000000-ai-employee-knowledge-base-retrieval-strategy.d.ts +14 -0
- package/dist/server/migrations/20260501000000-ai-employee-knowledge-base-retrieval-strategy.js +49 -0
- package/dist/server/plugin.d.ts +1 -0
- package/dist/server/plugin.js +47 -0
- package/dist/server/resource/aiConversations.d.ts +2 -0
- package/dist/server/resource/aiConversations.js +77 -4
- package/dist/server/resource/aiEmployees.d.ts +2 -0
- package/dist/server/resource/aiEmployees.js +70 -0
- package/dist/server/resource/aiWorkflowTasks.js +9 -1
- package/dist/server/resource/llmServices.d.ts +11 -0
- package/dist/server/resource/llmServices.js +85 -0
- package/dist/server/types/ai-message.type.d.ts +4 -0
- package/dist/server/types/knowledge-base.type.d.ts +8 -3
- 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/dist/swagger/common.d.ts +143 -0
- package/dist/swagger/common.js +144 -0
- package/dist/swagger/employees.d.ts +301 -0
- package/dist/swagger/employees.js +131 -0
- package/dist/swagger/index.d.ts +1617 -0
- package/dist/swagger/index.js +62 -0
- package/dist/swagger/llm.d.ts +563 -0
- package/dist/swagger/llm.js +255 -0
- package/dist/swagger/schemas.d.ts +757 -0
- package/dist/swagger/schemas.js +392 -0
- package/package.json +5 -5
- package/dist/ai/docs/nocobase/ai-employees/knowledge-base/vector-store.md +0 -24
- package/dist/ai/docs/nocobase/data-sources/development/index.md +0 -6
- 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/Employees.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/ProfileSettings.d.ts +0 -12
- 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/basic/index.d.ts +0 -10
- 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/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/Sender.d.ts +0 -10
- 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/Conversations.d.ts +0 -10
- 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/common.d.ts +0 -43
- 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/chatbox/utils.d.ts +0 -41
- 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/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/ai-employees/workflow-tasks/ui/WorkflowTaskOutputCard.d.ts +0 -11
- 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/debug-logger.d.ts +0 -52
- 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/llm/ModelSettings.d.ts +0 -11
- package/dist/client/workflow/triggers/ai-employee/Parameters.d.ts +0 -13
- package/dist/client-v2/ai-employees/chatbox/stores/create-selectors.d.ts +0 -18
- package/dist/server/llm-providers/deepseek.d.ts +0 -39
- /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 → client-v2/ai-employees/chatbox/components}/ChatButton.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/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/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
|
@@ -45,6 +45,7 @@ var import_utils = require("../utils");
|
|
|
45
45
|
var import_prompts = require("./prompts");
|
|
46
46
|
var import_lodash = __toESM(require("lodash"));
|
|
47
47
|
var import_ai_chat_conversation = require("../manager/ai-chat-conversation");
|
|
48
|
+
var import_ai_knowledge_base = require("./ai-knowledge-base");
|
|
48
49
|
var import_middleware = require("./middleware");
|
|
49
50
|
var import_ai = require("@nocobase/ai");
|
|
50
51
|
var import_checkpoints = require("./checkpoints");
|
|
@@ -55,12 +56,17 @@ var import_utils2 = require("./utils");
|
|
|
55
56
|
var import_base = require("@langchain/core/callbacks/base");
|
|
56
57
|
var import_shared = require("../../ai/tools/sub-agents/shared");
|
|
57
58
|
var import_tool_call_sanitizer = require("./tool-call-sanitizer");
|
|
59
|
+
var import_attachments = require("../attachments");
|
|
60
|
+
var import_frontend_tools = require("../../common/frontend-tools");
|
|
61
|
+
var import_frontend_tools2 = require("../frontend-tools");
|
|
62
|
+
var import_reasoning_stream_state = require("./reasoning-stream-state");
|
|
58
63
|
class AIEmployee {
|
|
59
64
|
sessionId;
|
|
60
65
|
from = "main-agent";
|
|
61
66
|
employee;
|
|
62
67
|
aiChatConversation;
|
|
63
68
|
skillSettings;
|
|
69
|
+
userMessageCount = 0;
|
|
64
70
|
plugin;
|
|
65
71
|
db;
|
|
66
72
|
ctx;
|
|
@@ -121,6 +127,9 @@ class AIEmployee {
|
|
|
121
127
|
areToolsEnabled() {
|
|
122
128
|
return this.chatSettings.enableTools !== false;
|
|
123
129
|
}
|
|
130
|
+
getAIEmployeeRecord() {
|
|
131
|
+
return this.employee.toJSON();
|
|
132
|
+
}
|
|
124
133
|
async getFormatMessages(userMessages) {
|
|
125
134
|
const { provider } = await this.plugin.aiManager.getLLMService({
|
|
126
135
|
...this.model
|
|
@@ -141,7 +150,12 @@ class AIEmployee {
|
|
|
141
150
|
}
|
|
142
151
|
// === Chat flow ===
|
|
143
152
|
buildState(messages) {
|
|
153
|
+
const toolCallMessage = messages.findLast((message) => {
|
|
154
|
+
var _a;
|
|
155
|
+
return (_a = message.toolCalls) == null ? void 0 : _a.length;
|
|
156
|
+
});
|
|
144
157
|
return {
|
|
158
|
+
messageId: toolCallMessage == null ? void 0 : toolCallMessage.messageId,
|
|
145
159
|
lastMessageIndex: {
|
|
146
160
|
lastHumanMessageIndex: messages.filter((m) => m.role === "user").length,
|
|
147
161
|
lastAIMessageIndex: messages.filter((m) => m.role === this.employee.username).length,
|
|
@@ -198,6 +212,7 @@ class AIEmployee {
|
|
|
198
212
|
const { provider, model, service } = await this.plugin.aiManager.getLLMService({
|
|
199
213
|
...this.model
|
|
200
214
|
});
|
|
215
|
+
this.userMessageCount = (userMessages ?? []).filter((message) => message.role === "user").length;
|
|
201
216
|
const { historyMessages, tools, resolvedTools, middleware, config, state } = await this.initSession({
|
|
202
217
|
messageId,
|
|
203
218
|
provider,
|
|
@@ -405,10 +420,21 @@ class AIEmployee {
|
|
|
405
420
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
|
|
406
421
|
const aiMessageIdMap = /* @__PURE__ */ new Map();
|
|
407
422
|
const { signal, providerName, llmService, model, provider, responseMetadata, allowEmpty = false } = options;
|
|
408
|
-
|
|
423
|
+
const reasoningState = new import_reasoning_stream_state.ReasoningStreamState();
|
|
424
|
+
const stopReasoning = async (conversation) => {
|
|
425
|
+
if (reasoningState.stop(conversation)) {
|
|
426
|
+
await this.protocol.with(conversation).stopReasoning();
|
|
427
|
+
}
|
|
428
|
+
};
|
|
429
|
+
const stopAllReasoning = async () => {
|
|
430
|
+
for (const conversation of reasoningState.drain()) {
|
|
431
|
+
await this.protocol.with(conversation).stopReasoning();
|
|
432
|
+
}
|
|
433
|
+
};
|
|
409
434
|
let gathered;
|
|
410
435
|
signal.addEventListener("abort", async () => {
|
|
411
436
|
try {
|
|
437
|
+
await stopAllReasoning();
|
|
412
438
|
if ((gathered == null ? void 0 : gathered.type) === "ai") {
|
|
413
439
|
const values = (0, import_utils2.convertAIMessage)({
|
|
414
440
|
aiEmployee: this,
|
|
@@ -450,27 +476,27 @@ class AIEmployee {
|
|
|
450
476
|
const { currentConversation } = metadata;
|
|
451
477
|
if (chunk.type === "ai") {
|
|
452
478
|
gathered = gathered !== void 0 ? (0, import_stream.concat)(gathered, chunk) : chunk;
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
479
|
+
const reasoningContent = provider.parseReasoningContent(chunk);
|
|
480
|
+
if (reasoningContent) {
|
|
481
|
+
reasoningState.start(currentConversation);
|
|
482
|
+
await this.protocol.with(currentConversation).reasoning(reasoningContent);
|
|
483
|
+
}
|
|
484
|
+
const parsedContent = chunk.content ? provider.parseResponseChunk(chunk.content) : null;
|
|
485
|
+
if (parsedContent) {
|
|
486
|
+
await stopReasoning(currentConversation);
|
|
487
|
+
await this.protocol.with(currentConversation).content(parsedContent);
|
|
462
488
|
}
|
|
463
489
|
if ((_a = chunk.tool_call_chunks) == null ? void 0 : _a.length) {
|
|
490
|
+
await stopReasoning(currentConversation);
|
|
464
491
|
await this.protocol.with(currentConversation).toolCallChunks(chunk.tool_call_chunks);
|
|
465
492
|
}
|
|
466
493
|
const webSearch = provider.parseWebSearchAction(chunk);
|
|
467
494
|
if (webSearch == null ? void 0 : webSearch.length) {
|
|
495
|
+
await stopReasoning(currentConversation);
|
|
468
496
|
await this.protocol.with(currentConversation).webSearch(webSearch);
|
|
469
497
|
}
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
isReasoning = true;
|
|
473
|
-
await this.protocol.with(currentConversation).reasoning(reasoningContent);
|
|
498
|
+
if ((0, import_reasoning_stream_state.isReasoningFinishChunk)(chunk)) {
|
|
499
|
+
await stopReasoning(currentConversation);
|
|
474
500
|
}
|
|
475
501
|
}
|
|
476
502
|
} else if (mode === "updates") {
|
|
@@ -526,6 +552,7 @@ class AIEmployee {
|
|
|
526
552
|
}
|
|
527
553
|
}
|
|
528
554
|
} else if (chunks.action === "initToolCalls") {
|
|
555
|
+
await stopReasoning(currentConversation);
|
|
529
556
|
await this.protocol.with(currentConversation).toolCalls(chunks.body);
|
|
530
557
|
} else if (chunks.action === "beforeToolCall") {
|
|
531
558
|
const toolsMap = await this.getToolsMap();
|
|
@@ -587,12 +614,14 @@ class AIEmployee {
|
|
|
587
614
|
}
|
|
588
615
|
}
|
|
589
616
|
}
|
|
617
|
+
await stopAllReasoning();
|
|
590
618
|
if (this.protocol.statistics.sent === 0 && !signal.aborted && !allowEmpty) {
|
|
591
619
|
this.sendErrorResponse("Empty message");
|
|
592
620
|
return;
|
|
593
621
|
}
|
|
594
622
|
await this.protocol.with(aiEmployeeConversation).endStream();
|
|
595
623
|
} catch (err) {
|
|
624
|
+
await stopAllReasoning();
|
|
596
625
|
this.ctx.log.error(err);
|
|
597
626
|
if (err.name === "GraphRecursionError") {
|
|
598
627
|
this.sendSpecificError({ name: err.name, message: err.message });
|
|
@@ -681,7 +710,7 @@ Field: ${field.name}, Title: ${(_a = field.options.uiSchema) == null ? void 0 :
|
|
|
681
710
|
return message;
|
|
682
711
|
}
|
|
683
712
|
async getSystemPrompt(userMessages) {
|
|
684
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
713
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
685
714
|
if (this.systemPromptMode === "none") {
|
|
686
715
|
return "";
|
|
687
716
|
}
|
|
@@ -689,9 +718,16 @@ Field: ${field.name}, Title: ${(_a = field.options.uiSchema) == null ? void 0 :
|
|
|
689
718
|
if (this.systemPromptMode === "raw") {
|
|
690
719
|
return about;
|
|
691
720
|
}
|
|
721
|
+
const employee = this.getAIEmployeeRecord();
|
|
722
|
+
const knowledgeBaseManager = this.plugin.knowledgeBaseManager;
|
|
723
|
+
const knowledgeBaseEnabled = await knowledgeBaseManager.isEnabledKnowledgeBase(employee);
|
|
724
|
+
const roleNames = (0, import_ai_knowledge_base.getCurrentRoleNames)(this.ctx.state);
|
|
725
|
+
const hasAccessibleKnowledgeBase = knowledgeBaseEnabled ? await knowledgeBaseManager.hasAccessibleKnowledgeBase({ employee, roleNames }) : false;
|
|
726
|
+
const knowledgeBaseAccessDenied = knowledgeBaseEnabled && !hasAccessibleKnowledgeBase;
|
|
727
|
+
const knowledgeBaseOnDemand = knowledgeBaseEnabled && hasAccessibleKnowledgeBase && (0, import_ai_knowledge_base.normalizeKnowledgeBaseRetrievalStrategy)((_a = employee.knowledgeBase) == null ? void 0 : _a.retrievalStrategy) === "onDemand";
|
|
692
728
|
const userConfig = await this.db.getRepository("usersAiEmployees").findOne({
|
|
693
729
|
filter: {
|
|
694
|
-
userId: ((
|
|
730
|
+
userId: ((_b = this.ctx.auth) == null ? void 0 : _b.user.id) ?? 0,
|
|
695
731
|
aiEmployee: this.employee.username
|
|
696
732
|
}
|
|
697
733
|
});
|
|
@@ -716,17 +752,25 @@ ${workContextBackground.join("\n")}`;
|
|
|
716
752
|
${addSystemPrompt.map((it) => it.content).join("\n")}`;
|
|
717
753
|
}
|
|
718
754
|
let knowledgeBase;
|
|
719
|
-
|
|
720
|
-
const employee = this.employee.toJSON();
|
|
721
|
-
if (await knowledgeBaseManager.isEnabledKnowledgeBase(employee) && employee.knowledgeBasePrompt && (userMessages == null ? void 0 : userMessages.length)) {
|
|
755
|
+
if (knowledgeBaseEnabled && hasAccessibleKnowledgeBase && !knowledgeBaseOnDemand && (userMessages == null ? void 0 : userMessages.length)) {
|
|
722
756
|
const lastUserMessage = userMessages.filter((x) => x.role === "user").at(-1);
|
|
723
757
|
if (lastUserMessage) {
|
|
724
758
|
knowledgeBase = await knowledgeBaseManager.retrievePrompt({
|
|
725
759
|
employee,
|
|
726
|
-
query: lastUserMessage.content.content
|
|
760
|
+
query: lastUserMessage.content.content,
|
|
761
|
+
roleNames
|
|
727
762
|
});
|
|
728
763
|
}
|
|
729
764
|
}
|
|
765
|
+
const knowledgeBaseBackgroundPrompt = (0, import_ai_knowledge_base.getKnowledgeBaseBackgroundPrompt)({
|
|
766
|
+
accessDenied: knowledgeBaseAccessDenied,
|
|
767
|
+
onDemand: knowledgeBaseOnDemand,
|
|
768
|
+
preRetrieved: Boolean(knowledgeBase)
|
|
769
|
+
});
|
|
770
|
+
if (knowledgeBaseBackgroundPrompt) {
|
|
771
|
+
background = `${background}
|
|
772
|
+
${knowledgeBaseBackgroundPrompt}`;
|
|
773
|
+
}
|
|
730
774
|
const availableSkills = await this.getAvailableSkills();
|
|
731
775
|
const availableAIEmployees = await this.getAvailableAIEmployees();
|
|
732
776
|
const systemPrompt = (0, import_prompts.getSystemPrompt)({
|
|
@@ -740,15 +784,16 @@ ${addSystemPrompt.map((it) => it.content).join("\n")}`;
|
|
|
740
784
|
personal: userConfig == null ? void 0 : userConfig.prompt,
|
|
741
785
|
environment: {
|
|
742
786
|
database: this.db.sequelize.getDialect(),
|
|
743
|
-
locale: ((
|
|
744
|
-
currentDateTime: getCurrentDateTimeForPrompt((
|
|
787
|
+
locale: ((_d = (_c = this.ctx).getCurrentLocale) == null ? void 0 : _d.call(_c)) || "en-US",
|
|
788
|
+
currentDateTime: getCurrentDateTimeForPrompt((_f = (_e = this.ctx).getCurrentLocale) == null ? void 0 : _f.call(_e), getCurrentTimezone(this.ctx)),
|
|
745
789
|
timezone: getCurrentTimezone(this.ctx)
|
|
746
790
|
},
|
|
747
791
|
knowledgeBase,
|
|
748
792
|
availableSkills,
|
|
749
|
-
availableAIEmployees
|
|
793
|
+
availableAIEmployees,
|
|
794
|
+
webSearch: this.webSearch
|
|
750
795
|
});
|
|
751
|
-
const { important } = ((
|
|
796
|
+
const { important } = ((_h = (_g = this.ctx.action) == null ? void 0 : _g.params) == null ? void 0 : _h.values) || {};
|
|
752
797
|
if (important === "GraphRecursionError") {
|
|
753
798
|
const importantPrompt = `<Important>You have already called tools multiple times and gathered sufficient information.
|
|
754
799
|
First, provide a summary based on the existing information. Do not call additional tools.
|
|
@@ -762,11 +807,12 @@ If information is missing, clearly state it in the summary.</Important>`;
|
|
|
762
807
|
async initToolCall(transaction, messageId, toolCalls) {
|
|
763
808
|
const nowTime = /* @__PURE__ */ new Date();
|
|
764
809
|
const toolMap = await this.getToolsMap();
|
|
810
|
+
const currentFrontendTools = toolCalls.some((toolCall) => toolCall.name === import_frontend_tools.EXECUTE_FRONTEND_TOOL_NAME) ? await (0, import_frontend_tools2.listCurrentFrontendTools)(this.ctx, this.sessionId) : [];
|
|
765
811
|
return await this.aiToolMessagesRepo.create({
|
|
766
812
|
values: toolCalls.map((toolCall) => {
|
|
767
813
|
const toolsExisted = toolMap.has(toolCall.name);
|
|
768
814
|
const tools = toolMap.get(toolCall.name);
|
|
769
|
-
const auto = this.isAutoCall(tools);
|
|
815
|
+
const auto = toolCall.name === import_frontend_tools.EXECUTE_FRONTEND_TOOL_NAME ? toolsExisted && (0, import_frontend_tools2.shouldAutoExecuteFrontendTool)(currentFrontendTools, toolCall.args) : this.isAutoCall(tools);
|
|
770
816
|
return {
|
|
771
817
|
id: this.plugin.snowflake.generate(),
|
|
772
818
|
sessionId: this.sessionId,
|
|
@@ -1019,15 +1065,43 @@ If information is missing, clearly state it in the summary.</Important>`;
|
|
|
1019
1065
|
const presetTools = employeeTools.find((s) => s.name === tools.definition.name);
|
|
1020
1066
|
return presetTools ? presetTools.autoCall : isAutoCall;
|
|
1021
1067
|
}
|
|
1068
|
+
async normalizeMessageAttachments(messages) {
|
|
1069
|
+
const attachments = messages.filter((message) => Array.isArray(message.attachments)).flatMap((message) => message.attachments);
|
|
1070
|
+
if (!attachments.length) {
|
|
1071
|
+
return messages;
|
|
1072
|
+
}
|
|
1073
|
+
const attachmentsByLookup = await (0, import_attachments.findMessageAttachments)(this.ctx, attachments);
|
|
1074
|
+
return messages.map((message) => {
|
|
1075
|
+
if (!Array.isArray(message.attachments) || !message.attachments.length) {
|
|
1076
|
+
return message;
|
|
1077
|
+
}
|
|
1078
|
+
return {
|
|
1079
|
+
...message,
|
|
1080
|
+
attachments: message.attachments.flatMap((attachment) => {
|
|
1081
|
+
const source = (0, import_attachments.getAttachmentSource)(attachment);
|
|
1082
|
+
if (!source || (0, import_attachments.shouldSkipAttachmentSourceLookup)(source)) {
|
|
1083
|
+
return [attachment];
|
|
1084
|
+
}
|
|
1085
|
+
const lookupKey = (0, import_attachments.getMessageAttachmentLookupKey)(attachment);
|
|
1086
|
+
const verifiedAttachment = lookupKey ? attachmentsByLookup.get(lookupKey) : null;
|
|
1087
|
+
if (!verifiedAttachment) {
|
|
1088
|
+
return [];
|
|
1089
|
+
}
|
|
1090
|
+
return [{ ...verifiedAttachment, source }];
|
|
1091
|
+
})
|
|
1092
|
+
};
|
|
1093
|
+
});
|
|
1094
|
+
}
|
|
1022
1095
|
async formatMessages({ messages, provider }) {
|
|
1023
1096
|
var _a, _b;
|
|
1024
1097
|
const formattedMessages = [];
|
|
1025
1098
|
const workContextHandler = this.plugin.workContextHandler;
|
|
1099
|
+
const normalizedMessages = await this.normalizeMessageAttachments(messages);
|
|
1026
1100
|
const truncate = (text, maxLen = 5e4) => {
|
|
1027
1101
|
if (!text || text.length <= maxLen) return text;
|
|
1028
1102
|
return text.slice(0, maxLen) + "\n...[truncated]";
|
|
1029
1103
|
};
|
|
1030
|
-
for (const msg of
|
|
1104
|
+
for (const msg of normalizedMessages) {
|
|
1031
1105
|
const attachments = msg.attachments;
|
|
1032
1106
|
const workContext = msg.workContext;
|
|
1033
1107
|
const userContent = msg.content;
|
|
@@ -1092,20 +1166,21 @@ If information is missing, clearly state it in the summary.</Important>`;
|
|
|
1092
1166
|
});
|
|
1093
1167
|
continue;
|
|
1094
1168
|
}
|
|
1169
|
+
const additionalKwargs = (0, import_tool_call_sanitizer.sanitizeAdditionalKwargsForToolCalls)((_b = msg.metadata) == null ? void 0 : _b.additional_kwargs, msg.toolCalls, {
|
|
1170
|
+
onDiscard: (info) => {
|
|
1171
|
+
var _a2;
|
|
1172
|
+
this.logger.warn("Discard malformed raw tool calls from AI message", {
|
|
1173
|
+
phase: "formatMessages",
|
|
1174
|
+
messageId: (_a2 = msg.metadata) == null ? void 0 : _a2.id,
|
|
1175
|
+
...info
|
|
1176
|
+
});
|
|
1177
|
+
}
|
|
1178
|
+
}).additionalKwargs;
|
|
1095
1179
|
formattedMessages.push({
|
|
1096
1180
|
role: "assistant",
|
|
1097
1181
|
content,
|
|
1098
1182
|
tool_calls: msg.toolCalls,
|
|
1099
|
-
additional_kwargs:
|
|
1100
|
-
onDiscard: (info) => {
|
|
1101
|
-
var _a2;
|
|
1102
|
-
this.logger.warn("Discard malformed raw tool calls from AI message", {
|
|
1103
|
-
phase: "formatMessages",
|
|
1104
|
-
messageId: (_a2 = msg.metadata) == null ? void 0 : _a2.id,
|
|
1105
|
-
...info
|
|
1106
|
-
});
|
|
1107
|
-
}
|
|
1108
|
-
}).additionalKwargs
|
|
1183
|
+
additional_kwargs: provider.prepareStoredAssistantAdditionalKwargs(additionalKwargs)
|
|
1109
1184
|
});
|
|
1110
1185
|
}
|
|
1111
1186
|
return formattedMessages;
|
|
@@ -1150,12 +1225,32 @@ If information is missing, clearly state it in the summary.</Important>`;
|
|
|
1150
1225
|
}
|
|
1151
1226
|
return result;
|
|
1152
1227
|
}
|
|
1228
|
+
async getKnowledgeBaseRetrieveTool() {
|
|
1229
|
+
const employee = this.getAIEmployeeRecord();
|
|
1230
|
+
const knowledgeBaseManager = this.plugin.knowledgeBaseManager;
|
|
1231
|
+
if (!await knowledgeBaseManager.isEnabledKnowledgeBase(employee)) {
|
|
1232
|
+
return void 0;
|
|
1233
|
+
}
|
|
1234
|
+
const hasAccessibleKnowledgeBase = await knowledgeBaseManager.hasAccessibleKnowledgeBase({
|
|
1235
|
+
employee,
|
|
1236
|
+
roleNames: (0, import_ai_knowledge_base.getCurrentRoleNames)(this.ctx.state)
|
|
1237
|
+
});
|
|
1238
|
+
if (!hasAccessibleKnowledgeBase) {
|
|
1239
|
+
return void 0;
|
|
1240
|
+
}
|
|
1241
|
+
return await this.toolsManager.getTools(import_ai.SYSTEM_TOOLS.KNOWLEDGE_BASE, { ctx: this.ctx });
|
|
1242
|
+
}
|
|
1153
1243
|
async getAIEmployeeTools() {
|
|
1154
1244
|
var _a;
|
|
1155
1245
|
if (!this.areToolsEnabled()) {
|
|
1156
1246
|
return [];
|
|
1157
1247
|
}
|
|
1248
|
+
const currentFrontendTools = await (0, import_frontend_tools2.listCurrentFrontendTools)(this.ctx, this.sessionId);
|
|
1158
1249
|
const tools = await this.listTools({ scope: "GENERAL" });
|
|
1250
|
+
const getSkill = await this.toolsManager.getTools(import_ai.SYSTEM_TOOLS.GET_SKILL, { ctx: this.ctx });
|
|
1251
|
+
if (getSkill) {
|
|
1252
|
+
tools.push(getSkill);
|
|
1253
|
+
}
|
|
1159
1254
|
if (this.webSearch === true) {
|
|
1160
1255
|
const subAgentWebSearch = await this.toolsManager.getTools(import_ai.SYSTEM_TOOLS.WEB_SEARCH, { ctx: this.ctx });
|
|
1161
1256
|
tools.push(subAgentWebSearch);
|
|
@@ -1164,13 +1259,9 @@ If information is missing, clearly state it in the summary.</Important>`;
|
|
|
1164
1259
|
const toolMap = await this.getToolsMap();
|
|
1165
1260
|
const settingsTools = ((_a = this.employee.skillSettings) == null ? void 0 : _a.tools) ?? [];
|
|
1166
1261
|
const employeeTools = [...settingsTools, ...this.tools];
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
});
|
|
1171
|
-
if (knowledgeBaseRetrieveTool) {
|
|
1172
|
-
employeeTools.push({ name: import_ai.SYSTEM_TOOLS.KNOWLEDGE_BASE });
|
|
1173
|
-
}
|
|
1262
|
+
const knowledgeBaseRetrieveTool = await this.getKnowledgeBaseRetrieveTool();
|
|
1263
|
+
if (knowledgeBaseRetrieveTool) {
|
|
1264
|
+
employeeTools.push({ name: import_ai.SYSTEM_TOOLS.KNOWLEDGE_BASE });
|
|
1174
1265
|
}
|
|
1175
1266
|
for (const toolSetting of employeeTools) {
|
|
1176
1267
|
if (generalToolsNameSet.has(toolSetting.name)) {
|
|
@@ -1182,20 +1273,26 @@ If information is missing, clearly state it in the summary.</Important>`;
|
|
|
1182
1273
|
}
|
|
1183
1274
|
tools.push(tool);
|
|
1184
1275
|
}
|
|
1185
|
-
const systemTools = (0, import_ai.listSystemTools)();
|
|
1276
|
+
const systemTools = [...(0, import_ai.listSystemTools)(), import_frontend_tools.LOAD_FRONTEND_TOOL_NAME, import_frontend_tools.EXECUTE_FRONTEND_TOOL_NAME];
|
|
1186
1277
|
if (!this.skillSettings) {
|
|
1187
|
-
return tools;
|
|
1278
|
+
return (0, import_frontend_tools2.prepareToolsForFrontendConversation)(tools, currentFrontendTools);
|
|
1188
1279
|
} else if (!this.skillSettings.toolsVersion) {
|
|
1189
1280
|
const toolFilter = this.skillSettings.tools ?? [];
|
|
1190
|
-
return
|
|
1191
|
-
|
|
1281
|
+
return (0, import_frontend_tools2.prepareToolsForFrontendConversation)(
|
|
1282
|
+
tools.filter(
|
|
1283
|
+
(t) => toolFilter.length === 0 || systemTools.includes(t.definition.name) || toolFilter.includes(t.definition.name)
|
|
1284
|
+
),
|
|
1285
|
+
currentFrontendTools
|
|
1192
1286
|
);
|
|
1193
1287
|
} else {
|
|
1194
1288
|
const toolFilter = this.skillSettings.tools;
|
|
1195
1289
|
if (import_lodash.default.isArray(toolFilter)) {
|
|
1196
|
-
return
|
|
1290
|
+
return (0, import_frontend_tools2.prepareToolsForFrontendConversation)(
|
|
1291
|
+
tools.filter((t) => systemTools.includes(t.definition.name) || toolFilter.includes(t.definition.name)),
|
|
1292
|
+
currentFrontendTools
|
|
1293
|
+
);
|
|
1197
1294
|
} else {
|
|
1198
|
-
return tools;
|
|
1295
|
+
return (0, import_frontend_tools2.prepareToolsForFrontendConversation)(tools, currentFrontendTools);
|
|
1199
1296
|
}
|
|
1200
1297
|
}
|
|
1201
1298
|
}
|
|
@@ -1237,6 +1334,9 @@ If information is missing, clearly state it in the summary.</Important>`;
|
|
|
1237
1334
|
}
|
|
1238
1335
|
const baseTools = await this.getAIEmployeeTools();
|
|
1239
1336
|
const toolMap = await this.getToolsMap();
|
|
1337
|
+
for (const tool of baseTools) {
|
|
1338
|
+
toolMap.set(tool.definition.name, tool);
|
|
1339
|
+
}
|
|
1240
1340
|
const availableSkills = await this.getAvailableSkills();
|
|
1241
1341
|
const skillOwnedToolNames = new Set(availableSkills.flatMap((it) => it.tools ?? []));
|
|
1242
1342
|
const baseToolNames = new Set(
|
|
@@ -8,15 +8,35 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { AIEmployee } from '../../collections/ai-employees';
|
|
10
10
|
import type PluginAIServer from '../plugin';
|
|
11
|
+
export declare const KNOWLEDGE_BASE_RETRIEVAL_STRATEGIES: readonly ["always", "onDemand"];
|
|
12
|
+
export type KnowledgeBaseRetrievalStrategy = (typeof KNOWLEDGE_BASE_RETRIEVAL_STRATEGIES)[number];
|
|
13
|
+
export declare const isKnowledgeBaseRetrievalStrategy: (value: unknown) => value is "always" | "onDemand";
|
|
14
|
+
export declare const normalizeKnowledgeBaseRetrievalStrategy: (value: unknown) => KnowledgeBaseRetrievalStrategy;
|
|
15
|
+
export declare const withDefaultKnowledgeBaseRetrievalStrategy: (knowledgeBase: unknown) => Record<string, unknown>;
|
|
16
|
+
export declare const getCurrentRoleNames: (state: unknown) => string[];
|
|
17
|
+
export declare const KNOWLEDGE_BASE_ON_DEMAND_PROMPT: string;
|
|
18
|
+
export declare const KNOWLEDGE_BASE_PRE_RETRIEVED_PROMPT: string;
|
|
19
|
+
export declare const KNOWLEDGE_BASE_NO_ACCESS_PROMPT: string;
|
|
20
|
+
export declare const getKnowledgeBaseBackgroundPrompt: ({ accessDenied, onDemand, preRetrieved, }: {
|
|
21
|
+
accessDenied: boolean;
|
|
22
|
+
onDemand: boolean;
|
|
23
|
+
preRetrieved: boolean;
|
|
24
|
+
}) => string | undefined;
|
|
11
25
|
export type KnowledgeBaseRetrieveOptions = {
|
|
12
26
|
username?: string;
|
|
13
27
|
employee?: AIEmployee;
|
|
14
28
|
query: string;
|
|
29
|
+
roleNames?: string[];
|
|
30
|
+
};
|
|
31
|
+
export type KnowledgeBaseAccessOptions = {
|
|
32
|
+
employee: AIEmployee;
|
|
33
|
+
roleNames: string[];
|
|
15
34
|
};
|
|
16
35
|
export declare class KnowledgeBaseManager {
|
|
17
36
|
private readonly plugin;
|
|
18
37
|
constructor(plugin: PluginAIServer);
|
|
19
|
-
retrievePrompt({ username, employee, query }: KnowledgeBaseRetrieveOptions): Promise<string>;
|
|
38
|
+
retrievePrompt({ username, employee, query, roleNames }: KnowledgeBaseRetrieveOptions): Promise<string>;
|
|
39
|
+
hasAccessibleKnowledgeBase({ employee, roleNames }: KnowledgeBaseAccessOptions): Promise<boolean>;
|
|
20
40
|
isEnabledKnowledgeBase(username: string): Promise<boolean>;
|
|
21
41
|
isEnabledKnowledgeBase(employee: AIEmployee): Promise<boolean>;
|
|
22
42
|
private getEmployee;
|
|
@@ -36,12 +36,64 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
36
36
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
37
37
|
var ai_knowledge_base_exports = {};
|
|
38
38
|
__export(ai_knowledge_base_exports, {
|
|
39
|
-
|
|
39
|
+
KNOWLEDGE_BASE_NO_ACCESS_PROMPT: () => KNOWLEDGE_BASE_NO_ACCESS_PROMPT,
|
|
40
|
+
KNOWLEDGE_BASE_ON_DEMAND_PROMPT: () => KNOWLEDGE_BASE_ON_DEMAND_PROMPT,
|
|
41
|
+
KNOWLEDGE_BASE_PRE_RETRIEVED_PROMPT: () => KNOWLEDGE_BASE_PRE_RETRIEVED_PROMPT,
|
|
42
|
+
KNOWLEDGE_BASE_RETRIEVAL_STRATEGIES: () => KNOWLEDGE_BASE_RETRIEVAL_STRATEGIES,
|
|
43
|
+
KnowledgeBaseManager: () => KnowledgeBaseManager,
|
|
44
|
+
getCurrentRoleNames: () => getCurrentRoleNames,
|
|
45
|
+
getKnowledgeBaseBackgroundPrompt: () => getKnowledgeBaseBackgroundPrompt,
|
|
46
|
+
isKnowledgeBaseRetrievalStrategy: () => isKnowledgeBaseRetrievalStrategy,
|
|
47
|
+
normalizeKnowledgeBaseRetrievalStrategy: () => normalizeKnowledgeBaseRetrievalStrategy,
|
|
48
|
+
withDefaultKnowledgeBaseRetrievalStrategy: () => withDefaultKnowledgeBaseRetrievalStrategy
|
|
40
49
|
});
|
|
41
50
|
module.exports = __toCommonJS(ai_knowledge_base_exports);
|
|
42
51
|
var import_prompts = require("@langchain/core/prompts");
|
|
43
52
|
var import_ai_feature_manager = require("../manager/ai-feature-manager");
|
|
44
53
|
var import_lodash = __toESM(require("lodash"));
|
|
54
|
+
const KNOWLEDGE_BASE_RETRIEVAL_STRATEGIES = ["always", "onDemand"];
|
|
55
|
+
const isRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
|
|
56
|
+
const getRoleNames = (roles) => Array.isArray(roles) ? Array.from(
|
|
57
|
+
new Set(
|
|
58
|
+
roles.map((role) => isRecord(role) ? role.name : role).filter((role) => typeof role === "string" && role.length > 0)
|
|
59
|
+
)
|
|
60
|
+
) : [];
|
|
61
|
+
const isKnowledgeBaseRetrievalStrategy = (value) => typeof value === "string" && KNOWLEDGE_BASE_RETRIEVAL_STRATEGIES.includes(value);
|
|
62
|
+
const normalizeKnowledgeBaseRetrievalStrategy = (value) => isKnowledgeBaseRetrievalStrategy(value) ? value : "always";
|
|
63
|
+
const withDefaultKnowledgeBaseRetrievalStrategy = (knowledgeBase) => {
|
|
64
|
+
const settings = isRecord(knowledgeBase) ? { ...knowledgeBase } : {};
|
|
65
|
+
if (!isKnowledgeBaseRetrievalStrategy(settings.retrievalStrategy)) {
|
|
66
|
+
settings.retrievalStrategy = "onDemand";
|
|
67
|
+
}
|
|
68
|
+
return settings;
|
|
69
|
+
};
|
|
70
|
+
const getCurrentRoleNames = (state) => {
|
|
71
|
+
const { currentRole, currentRoles, currentUser } = isRecord(state) ? state : {};
|
|
72
|
+
const currentUserRoleNames = getRoleNames(isRecord(currentUser) ? currentUser.roles : void 0);
|
|
73
|
+
if (currentUserRoleNames.length) {
|
|
74
|
+
return currentUserRoleNames;
|
|
75
|
+
}
|
|
76
|
+
if (Array.isArray(currentRoles)) {
|
|
77
|
+
return getRoleNames(currentRoles);
|
|
78
|
+
}
|
|
79
|
+
return typeof currentRole === "string" && currentRole.length > 0 ? [currentRole] : [];
|
|
80
|
+
};
|
|
81
|
+
const KNOWLEDGE_BASE_ON_DEMAND_PROMPT = "Use the knowledge base retrieval tool only when the request needs internal knowledge, uploaded documents, or knowledge-base facts. Do not call it for requests that clearly do not need those sources.";
|
|
82
|
+
const KNOWLEDGE_BASE_PRE_RETRIEVED_PROMPT = "The <knowledgeBase> content was retrieved in advance for the current user request. Use it directly when it is sufficient to answer; do not call the knowledge base retrieval tool again unless additional or different knowledge-base information is genuinely needed.";
|
|
83
|
+
const KNOWLEDGE_BASE_NO_ACCESS_PROMPT = "The current user does not have permission to access any knowledge base in this AI employee's configured scope. First answer the user's question as helpfully as possible using only information available without knowledge-base content; do not replace or interrupt the answer with a permission notice, and do not fabricate unavailable facts. Only after completing the answer, append a brief notice in the user's language stating that this response did not use knowledge-base content because the current user does not have permission to access these knowledge bases. Format this notice as a visually prominent Markdown reminder, using a blockquote with a bold warning or reminder heading so that it is easy to notice. If knowledge-base access is needed, advise the user to contact an administrator. Do not claim to have searched or used knowledge-base content.";
|
|
84
|
+
const getKnowledgeBaseBackgroundPrompt = ({
|
|
85
|
+
accessDenied,
|
|
86
|
+
onDemand,
|
|
87
|
+
preRetrieved
|
|
88
|
+
}) => {
|
|
89
|
+
if (accessDenied) {
|
|
90
|
+
return KNOWLEDGE_BASE_NO_ACCESS_PROMPT;
|
|
91
|
+
}
|
|
92
|
+
if (onDemand) {
|
|
93
|
+
return KNOWLEDGE_BASE_ON_DEMAND_PROMPT;
|
|
94
|
+
}
|
|
95
|
+
return preRetrieved ? KNOWLEDGE_BASE_PRE_RETRIEVED_PROMPT : void 0;
|
|
96
|
+
};
|
|
45
97
|
const normalizeMatchedQuestions = (value) => {
|
|
46
98
|
if (!Array.isArray(value)) {
|
|
47
99
|
return [];
|
|
@@ -62,17 +114,14 @@ class KnowledgeBaseManager {
|
|
|
62
114
|
constructor(plugin) {
|
|
63
115
|
this.plugin = plugin;
|
|
64
116
|
}
|
|
65
|
-
async retrievePrompt({ username, employee, query }) {
|
|
117
|
+
async retrievePrompt({ username, employee, query, roleNames }) {
|
|
66
118
|
employee = employee ?? (username ? await this.getEmployee(username) : null);
|
|
67
119
|
if (!employee) {
|
|
68
120
|
return "Specified knowledge base not existed";
|
|
69
121
|
}
|
|
70
|
-
const { knowledgeBaseKeys, topK, score } = employee.knowledgeBase ?? {};
|
|
71
|
-
if (!knowledgeBaseKeys || import_lodash.default.isEmpty(knowledgeBaseKeys)) {
|
|
72
|
-
return "Specified knowledge base not existed";
|
|
73
|
-
}
|
|
122
|
+
const { knowledgeBaseKeys = [], topK, score } = employee.knowledgeBase ?? {};
|
|
74
123
|
const promptTemplate = import_prompts.ChatPromptTemplate.fromTemplate(employee.knowledgeBasePrompt ?? "{knowledgeBaseData}");
|
|
75
|
-
const docs = await this.plugin.features.knowledgeBase.search({ knowledgeBaseKeys, query, topK, score });
|
|
124
|
+
const docs = await this.plugin.features.knowledgeBase.search({ knowledgeBaseKeys, query, topK, score, roleNames });
|
|
76
125
|
if (!(docs == null ? void 0 : docs.length)) {
|
|
77
126
|
return "No document match in knowledge base";
|
|
78
127
|
}
|
|
@@ -81,6 +130,16 @@ class KnowledgeBaseManager {
|
|
|
81
130
|
knowledgeBaseData
|
|
82
131
|
});
|
|
83
132
|
}
|
|
133
|
+
async hasAccessibleKnowledgeBase({ employee, roleNames }) {
|
|
134
|
+
var _a;
|
|
135
|
+
const knowledgeBaseKeys = ((_a = employee.knowledgeBase) == null ? void 0 : _a.knowledgeBaseKeys) ?? [];
|
|
136
|
+
const knowledgeBaseFeature = this.plugin.features.knowledgeBase;
|
|
137
|
+
if (!knowledgeBaseFeature.getAccessibleKnowledgeBaseKeys) {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
const accessibleKeys = await knowledgeBaseFeature.getAccessibleKnowledgeBaseKeys({ knowledgeBaseKeys, roleNames });
|
|
141
|
+
return accessibleKeys.length > 0;
|
|
142
|
+
}
|
|
84
143
|
async isEnabledKnowledgeBase(usernameOrEmployee) {
|
|
85
144
|
const featureEnabled = this.plugin.features.isFeaturesEnabled(Object.values(import_ai_feature_manager.EEFeatures));
|
|
86
145
|
const employee = typeof usernameOrEmployee === "string" ? await this.getEmployee(usernameOrEmployee) : usernameOrEmployee;
|
|
@@ -96,5 +155,14 @@ class KnowledgeBaseManager {
|
|
|
96
155
|
}
|
|
97
156
|
// Annotate the CommonJS export names for ESM import in node:
|
|
98
157
|
0 && (module.exports = {
|
|
99
|
-
|
|
158
|
+
KNOWLEDGE_BASE_NO_ACCESS_PROMPT,
|
|
159
|
+
KNOWLEDGE_BASE_ON_DEMAND_PROMPT,
|
|
160
|
+
KNOWLEDGE_BASE_PRE_RETRIEVED_PROMPT,
|
|
161
|
+
KNOWLEDGE_BASE_RETRIEVAL_STRATEGIES,
|
|
162
|
+
KnowledgeBaseManager,
|
|
163
|
+
getCurrentRoleNames,
|
|
164
|
+
getKnowledgeBaseBackgroundPrompt,
|
|
165
|
+
isKnowledgeBaseRetrievalStrategy,
|
|
166
|
+
normalizeKnowledgeBaseRetrievalStrategy,
|
|
167
|
+
withDefaultKnowledgeBaseRetrievalStrategy
|
|
100
168
|
});
|
|
@@ -98,8 +98,9 @@ const conversationMiddleware = (aiEmployee, options) => {
|
|
|
98
98
|
})
|
|
99
99
|
}),
|
|
100
100
|
beforeAgent: async (state) => {
|
|
101
|
-
const
|
|
102
|
-
const
|
|
101
|
+
const humanMessages = state.messages.filter((x) => x.type === "human");
|
|
102
|
+
const currentHumanMessageIndex = humanMessages.length;
|
|
103
|
+
const userMessages = (aiEmployee.userMessageCount ? humanMessages.slice(-aiEmployee.userMessageCount) : []).map((x) => x).map(convertHumanMessage);
|
|
103
104
|
await aiEmployee.aiChatConversation.withTransaction(async (conversation, transaction) => {
|
|
104
105
|
if (agentThread) {
|
|
105
106
|
await aiEmployee.updateThread(transaction, agentThread);
|
|
@@ -111,6 +112,12 @@ const conversationMiddleware = (aiEmployee, options) => {
|
|
|
111
112
|
await conversation.addMessages(userMessages);
|
|
112
113
|
}
|
|
113
114
|
});
|
|
115
|
+
return {
|
|
116
|
+
lastMessageIndex: {
|
|
117
|
+
...state.lastMessageIndex,
|
|
118
|
+
lastHumanMessageIndex: currentHumanMessageIndex
|
|
119
|
+
}
|
|
120
|
+
};
|
|
114
121
|
},
|
|
115
122
|
afterAgent: async () => {
|
|
116
123
|
aiEmployee.removeAbortController();
|
|
@@ -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
|
-
export declare function getSystemPrompt({ aiEmployee, personal, task, environment, knowledgeBase, availableSkills, availableAIEmployees, }: {
|
|
9
|
+
export declare function getSystemPrompt({ aiEmployee, personal, task, environment, knowledgeBase, availableSkills, availableAIEmployees, webSearch, }: {
|
|
10
10
|
aiEmployee: {
|
|
11
11
|
nickname: string;
|
|
12
12
|
about: string;
|
|
@@ -23,6 +23,7 @@ export declare function getSystemPrompt({ aiEmployee, personal, task, environmen
|
|
|
23
23
|
timezone?: string;
|
|
24
24
|
};
|
|
25
25
|
knowledgeBase?: string;
|
|
26
|
+
webSearch?: boolean;
|
|
26
27
|
availableSkills?: {
|
|
27
28
|
name: string;
|
|
28
29
|
description: string;
|
|
@@ -36,7 +36,8 @@ function getSystemPrompt({
|
|
|
36
36
|
environment,
|
|
37
37
|
knowledgeBase,
|
|
38
38
|
availableSkills,
|
|
39
|
-
availableAIEmployees
|
|
39
|
+
availableAIEmployees,
|
|
40
|
+
webSearch
|
|
40
41
|
}) {
|
|
41
42
|
const getDatabaseQuotingRules = () => {
|
|
42
43
|
const quotingMap = {
|
|
@@ -52,6 +53,11 @@ function getSystemPrompt({
|
|
|
52
53
|
};
|
|
53
54
|
const quotingRules = getDatabaseQuotingRules();
|
|
54
55
|
const isUnderscored = process.env.DB_UNDERSCORED === "true";
|
|
56
|
+
const webSearchInstructions = webSearch === true ? `
|
|
57
|
+
- When using web search, batch all independent search queries needed for this turn into one tool call whenever possible so they can run in parallel.
|
|
58
|
+
- Do not make repeated web search calls with the same or similar queries in the same turn.
|
|
59
|
+
- After receiving usable web search results, synthesize an answer from those results instead of searching again.
|
|
60
|
+
- Search again only when a critical fact is still missing and the new query is materially different from previous queries.` : "";
|
|
55
61
|
return `You are **${aiEmployee.nickname}**, an AI employee working in **NocoBase**, the leading no-code platform.
|
|
56
62
|
|
|
57
63
|
You assist developers in building enterprise management systems (CRM, ERP, OA, etc.) and help end users complete business tasks.
|
|
@@ -114,7 +120,7 @@ This prompt uses a structured tag system to organize your operational framework:
|
|
|
114
120
|
5. **Tool Integration**
|
|
115
121
|
- Utilize system-provided tools to enhance response quality
|
|
116
122
|
- **NEVER refer to tool names when speaking to the USER.** Instead, just say what the tool is doing in natural language.
|
|
117
|
-
- If you need additional information that you can get via tool calls, prefer that over asking the user
|
|
123
|
+
- If you need additional information that you can get via tool calls, prefer that over asking the user.${webSearchInstructions}
|
|
118
124
|
</global>
|
|
119
125
|
|
|
120
126
|
<ai_employee>
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
export type StreamConversation = {
|
|
10
|
+
sessionId: string;
|
|
11
|
+
from: string;
|
|
12
|
+
username: string;
|
|
13
|
+
};
|
|
14
|
+
export declare class ReasoningStreamState {
|
|
15
|
+
private readonly active;
|
|
16
|
+
start(conversation: StreamConversation): void;
|
|
17
|
+
stop(conversation: StreamConversation): boolean;
|
|
18
|
+
drain(): StreamConversation[];
|
|
19
|
+
}
|
|
20
|
+
export declare const isReasoningFinishChunk: (chunk: {
|
|
21
|
+
response_metadata?: Record<string, unknown>;
|
|
22
|
+
usage_metadata?: Record<string, unknown>;
|
|
23
|
+
}) => boolean;
|