@nocobase/plugin-ai 2.1.0-beta.15 → 2.1.0-beta.16
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/dist/ai/ai-employees/atlas/index.d.ts +10 -0
- package/dist/{server/ai-employees/built-in/ai-coding/prompt.js → ai/ai-employees/atlas/index.js} +29 -20
- package/dist/ai/ai-employees/atlas/prompt.md +84 -0
- package/dist/ai/ai-employees/dara.d.ts +10 -0
- package/dist/{server/ai-employees/built-in/data-visualization/prompt.js → ai/ai-employees/dara.js} +21 -13
- package/dist/ai/ai-employees/dex.d.ts +10 -0
- package/dist/{server/ai-employees/built-in/data-organizer/prompt.js → ai/ai-employees/dex.js} +15 -7
- package/dist/ai/ai-employees/ellis.d.ts +10 -0
- package/dist/{server/ai-employees/built-in/email-assistant/prompt.js → ai/ai-employees/ellis.js} +19 -11
- package/dist/ai/ai-employees/lexi.d.ts +10 -0
- package/dist/{server/ai-employees/built-in/translator/prompt.js → ai/ai-employees/lexi.js} +15 -7
- package/dist/ai/ai-employees/vera.d.ts +10 -0
- package/dist/{server/ai-employees/built-in/research-analyst/prompt.js → ai/ai-employees/vera.js} +16 -8
- package/dist/ai/ai-employees/viz.d.ts +10 -0
- package/dist/{server/ai-employees/built-in/insights-analyst/prompt.js → ai/ai-employees/viz.js} +15 -7
- package/dist/ai/skills/business-analysis-report/SKILLS.md +88 -0
- package/dist/{server/ai-employees/built-in/ai-coding/prompt.d.ts → ai/skills/business-analysis-report/tools/businessReportGenerator.d.ts} +1 -3
- package/dist/ai/skills/business-analysis-report/tools/businessReportGenerator.js +98 -0
- package/dist/ai/skills/document-search/SKILLS.md +69 -0
- package/dist/ai/tools/chartGenerator.js +15 -3
- package/dist/ai/tools/formFiller.js +13 -2
- package/dist/{server/ai-employees/built-in/data-modeling/prompt.d.ts → ai/tools/getSkill.d.ts} +1 -3
- package/dist/{server/ai-employees/built-in/data-modeling/index.js → ai/tools/getSkill.js} +39 -32
- package/dist/{server/ai-employees/built-in/data-organizer/prompt.d.ts → ai/tools/knowledge-base-retrieve.d.ts} +1 -3
- package/dist/ai/tools/knowledge-base-retrieve.js +94 -0
- package/dist/{server/ai-employees/built-in/data-visualization/prompt.d.ts → ai/tools/sub-agents/dispatch-sub-agent-task.d.ts} +1 -3
- package/dist/ai/tools/sub-agents/dispatch-sub-agent-task.js +108 -0
- package/dist/ai/tools/sub-agents/get-ai-employee.d.ts +10 -0
- package/dist/{server/ai-employees/built-in/translator/profile.js → ai/tools/sub-agents/get-ai-employee.js} +28 -21
- package/dist/ai/tools/sub-agents/list-ai-employees.d.ts +10 -0
- package/dist/{server/ai-employees/built-in/email-assistant/profile.js → ai/tools/sub-agents/list-ai-employees.js} +25 -21
- package/dist/ai/tools/sub-agents/shared.d.ts +33 -0
- package/dist/ai/tools/sub-agents/shared.js +169 -0
- package/dist/ai/tools/suggestions.js +15 -4
- package/dist/client/170.d98eacdc00d9d527.js +10 -0
- package/dist/client/228.b18148eb1009d2fb.js +10 -0
- package/dist/client/280.029428b83d62155f.js +10 -0
- package/dist/client/290.0888139e33c9b7cb.js +10 -0
- package/dist/client/{524.954f96ec4fc2fd7a.js → 331.d547c95410476a69.js} +1 -1
- package/dist/client/343.83f7d96664e4e038.js +10 -0
- package/dist/client/406.15c09d98faa2ccf1.js +10 -0
- package/dist/client/428.e9f38da3b0d8b498.js +10 -0
- package/dist/client/486.77c26e2e7f8daf28.js +10 -0
- package/dist/client/502.2b4a51e0a8122e52.js +10 -0
- package/dist/client/525.33a9c8ec28be4ec4.js +10 -0
- package/dist/client/559.133d286a0a0a1d93.js +10 -0
- package/dist/client/{91.90e7098b7fbd5d00.js → 561.776886c5308e3c26.js} +1 -1
- package/dist/client/580.e75f97fb883ad042.js +10 -0
- package/dist/client/597.aa363881a325b5c0.js +10 -0
- package/dist/client/604.de96f3ec4d471afd.js +10 -0
- package/dist/client/614.aa766080f6b99aab.js +10 -0
- package/dist/client/646.ef9d7c2ea8641044.js +10 -0
- package/dist/client/687.224e569a99cae4bb.js +10 -0
- package/dist/client/699.57c0a1acb723202a.js +10 -0
- package/dist/client/711.266b8f1c520d467a.js +10 -0
- package/dist/client/758.a9741e81911e53c3.js +10 -0
- package/dist/client/768.973ce32e15099a48.js +10 -0
- package/dist/client/792.ae8ad1fcae9fd974.js +10 -0
- package/dist/client/820.6a26239ea96c075a.js +10 -0
- package/dist/client/832.0cf69e3f43c320b2.js +10 -0
- package/dist/client/927.ff5cd05b14901ae6.js +10 -0
- package/dist/client/ai-employees/admin/SkillSettings.d.ts +7 -5
- package/dist/client/ai-employees/admin/ToolsSettings.d.ts +17 -0
- package/dist/client/ai-employees/admin/mcp/MCPSettings.d.ts +10 -0
- package/dist/client/ai-employees/admin/mcp/MCPToolsList.d.ts +19 -0
- package/dist/client/ai-employees/admin/mcp/context.d.ts +15 -0
- package/dist/client/ai-employees/admin/mcp/schemas.d.ts +1286 -0
- package/dist/client/ai-employees/built-in/utils.d.ts +1 -0
- package/dist/client/ai-employees/business-report/tools/index.d.ts +10 -0
- package/dist/client/ai-employees/business-report/ui/BusinessReportCard.d.ts +12 -0
- package/dist/client/ai-employees/business-report/ui/BusinessReportModal.d.ts +17 -0
- package/dist/client/ai-employees/business-report/ui/report-utils.d.ts +38 -0
- package/dist/client/ai-employees/chatbox/AIEmployeeSwitch.d.ts +3 -2
- package/dist/client/ai-employees/chatbox/HintMessageHeader.d.ts +10 -0
- package/dist/client/ai-employees/chatbox/ModelSwitcher.d.ts +3 -1
- package/dist/client/ai-employees/chatbox/SearchSwitch.d.ts +3 -1
- package/dist/client/ai-employees/chatbox/Upload.d.ts +3 -1
- package/dist/client/ai-employees/chatbox/conversations/ConversationsList.d.ts +27 -0
- package/dist/client/ai-employees/chatbox/conversations/WorkflowTasksList.d.ts +31 -0
- package/dist/client/ai-employees/chatbox/conversations/common.d.ts +43 -0
- package/dist/client/ai-employees/chatbox/conversations/index.d.ts +9 -0
- package/dist/client/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +5 -3
- package/dist/client/ai-employees/chatbox/hooks/useWorkflowTasks.d.ts +24 -0
- package/dist/client/ai-employees/chatbox/markdown/ECharts.d.ts +1 -2
- package/dist/client/ai-employees/chatbox/markdown/Markdown.d.ts +1 -1
- package/dist/client/ai-employees/chatbox/roles.d.ts +1 -0
- package/dist/client/ai-employees/chatbox/stores/chat-box.d.ts +8 -0
- package/dist/client/ai-employees/chatbox/stores/chat-conversations.d.ts +4 -0
- package/dist/client/ai-employees/chatbox/stores/chat-messages.d.ts +8 -0
- package/dist/client/ai-employees/chatbox/stores/workflow-tasks.d.ts +41 -0
- package/dist/client/ai-employees/chatbox/utils.d.ts +17 -7
- package/dist/client/ai-employees/sub-agents/tools/index.d.ts +10 -0
- package/dist/client/ai-employees/sub-agents/ui/SubAgentDispatchCard.d.ts +21 -0
- package/dist/client/ai-employees/types.d.ts +24 -4
- package/dist/{server/ai-employees/built-in/ai-coding/document/example/js-filter → client/ai-employees/workflow-tasks/tools}/index.d.ts +2 -7
- package/dist/client/ai-employees/workflow-tasks/ui/WorkflowTaskOutputCard.d.ts +11 -0
- package/dist/client/components/ListCollapse.d.ts +28 -0
- package/dist/client/index.js +7 -7
- package/dist/client/manager/ai-manager.d.ts +4 -23
- package/dist/client/repositories/AIConfigRepository.d.ts +11 -3
- package/dist/client/workflow/nodes/employee/components/AIEmployeeSelect.d.ts +10 -0
- package/dist/client/workflow/nodes/employee/components/assigness.d.ts +11 -0
- package/dist/client/workflow/nodes/employee/components/file-inputs.d.ts +10 -0
- package/dist/client/workflow/nodes/employee/components/message-inputs.d.ts +12 -0
- package/dist/client/workflow/nodes/employee/components/model-options.d.ts +10 -0
- package/dist/client/workflow/nodes/employee/components/skill-settings.d.ts +10 -0
- package/dist/client/workflow/nodes/employee/components/structured-output.d.ts +10 -0
- package/dist/client/workflow/nodes/employee/components/users-select.d.ts +15 -0
- package/dist/client/workflow/nodes/employee/components/web-search-options.d.ts +10 -0
- package/dist/client/workflow/nodes/employee/configuration.d.ts +12 -0
- package/dist/client/workflow/nodes/employee/flow-models/feedback.d.ts +13 -0
- package/dist/client/workflow/nodes/employee/flow-models/task.d.ts +13 -0
- package/dist/client/workflow/nodes/employee/index.d.ts +7 -31
- package/dist/collections/ai-employees.js +2 -1
- package/dist/collections/ai-mcp-clients.d.ts +51 -0
- package/dist/collections/ai-mcp-clients.js +111 -0
- package/dist/externalVersion.js +17 -15
- package/dist/locale/en-US.json +136 -8
- package/dist/locale/zh-CN.json +138 -9
- package/dist/node_modules/fast-glob/out/index.js +8 -8
- package/dist/node_modules/fast-glob/package.json +1 -1
- package/dist/node_modules/flexsearch/dist/flexsearch.bundle.min.js +2 -2
- package/dist/node_modules/flexsearch/package.json +1 -1
- package/dist/node_modules/fs-extra/lib/index.js +1 -1
- package/dist/node_modules/fs-extra/package.json +1 -1
- package/dist/node_modules/nodejs-snowflake/nodejs_snowflake.js +1 -1
- package/dist/node_modules/nodejs-snowflake/package.json +1 -1
- package/dist/node_modules/openai/index.js +1 -1
- package/dist/node_modules/openai/package.json +1 -1
- package/dist/node_modules/zod/index.cjs +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/ai-employees/ai-conversations.d.ts +70 -0
- package/dist/server/ai-employees/ai-conversations.js +325 -0
- package/dist/server/ai-employees/ai-employee.d.ts +100 -19
- package/dist/server/ai-employees/ai-employee.js +484 -261
- package/dist/server/ai-employees/ai-knowledge-base.d.ts +28 -0
- package/dist/server/ai-employees/ai-knowledge-base.js +167 -0
- package/dist/server/ai-employees/middleware/conversation.d.ts +2 -0
- package/dist/server/ai-employees/middleware/conversation.js +38 -5
- package/dist/server/ai-employees/middleware/index.d.ts +2 -0
- package/dist/server/ai-employees/middleware/index.js +5 -1
- package/dist/server/ai-employees/middleware/skill-tools.d.ts +12 -0
- package/dist/server/ai-employees/middleware/skill-tools.js +88 -0
- package/dist/server/ai-employees/middleware/tools.js +37 -10
- package/dist/server/ai-employees/middleware/workflow-history.d.ts +22 -0
- package/dist/server/ai-employees/middleware/workflow-history.js +173 -0
- package/dist/server/ai-employees/prompts.d.ts +16 -1
- package/dist/server/ai-employees/prompts.js +37 -1
- package/dist/server/ai-employees/sub-agents/dispatcher.d.ts +36 -0
- package/dist/server/ai-employees/sub-agents/dispatcher.js +225 -0
- package/dist/server/ai-employees/sub-agents/index.d.ts +9 -0
- package/dist/server/{migrations/20250923221107-setup-build-in.js → ai-employees/sub-agents/index.js} +9 -13
- package/dist/server/ai-employees/templates/form-assistant.d.ts +2 -2
- package/dist/server/ai-employees/templates/form-assistant.js +2 -2
- package/dist/server/ai-employees/utils.js +2 -2
- package/dist/server/collections/ai-conversations.js +18 -0
- package/dist/server/{ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_contacts_en.d.ts → collections/ai-mcp-clients.d.ts} +1 -4
- package/dist/server/{ai-employees/built-in/nocobase-assistant/index.js → collections/ai-mcp-clients.js} +12 -13
- package/dist/server/{ai-employees/built-in/ai-coding/document/basic/flow-resource.d.ts → collections/ai-skills.d.ts} +1 -4
- package/dist/server/{ai-employees/built-in/email-assistant/index.js → collections/ai-skills.js} +46 -23
- package/dist/server/{ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_opportunities_en.d.ts → collections/ai-workflow-tasks.d.ts} +1 -4
- package/dist/server/collections/ai-workflow-tasks.js +112 -0
- package/dist/server/{ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_accounts_en.d.ts → collections/users-ai-workflow-tasks.d.ts} +1 -4
- package/dist/server/collections/users-ai-workflow-tasks.js +44 -0
- package/dist/server/llm-providers/anthropic.d.ts +1 -0
- package/dist/server/llm-providers/anthropic.js +2 -1
- package/dist/server/llm-providers/dashscope.d.ts +1 -0
- package/dist/server/llm-providers/deepseek.d.ts +1 -0
- package/dist/server/llm-providers/google-genai.d.ts +1 -0
- package/dist/server/llm-providers/google-genai.js +2 -1
- package/dist/server/llm-providers/kimi/provider.d.ts +1 -0
- package/dist/server/llm-providers/openai/responses.d.ts +1 -0
- package/dist/server/llm-providers/openai/responses.js +2 -1
- package/dist/server/llm-providers/provider.d.ts +1 -10
- package/dist/server/llm-providers/provider.js +3 -34
- package/dist/server/manager/ai-coding-manager.d.ts +1 -2
- package/dist/server/manager/ai-coding-manager.js +0 -41
- package/dist/server/manager/ai-context-datasource-manager.js +30 -1
- package/dist/server/manager/built-in-manager.d.ts +2 -4
- package/dist/server/manager/built-in-manager.js +8 -117
- package/dist/server/migrations/20260306000001-migrate-skill-settings-tools.js +68 -0
- package/dist/server/migrations/20260319000000-add-ai-conversations-from.d.ts +14 -0
- package/dist/server/migrations/20260319000000-add-ai-conversations-from.js +63 -0
- package/dist/server/plugin.d.ts +6 -1
- package/dist/server/plugin.js +31 -8
- package/dist/server/resource/aiConversations.js +112 -188
- package/dist/server/resource/aiEmployees.js +5 -7
- package/dist/server/resource/aiMcpClients.d.ts +11 -0
- package/dist/server/resource/aiMcpClients.js +78 -0
- package/dist/server/{ai-employees/built-in/ai-coding/document/example/js-column/index.d.ts → resource/aiSkills.d.ts} +3 -7
- package/dist/server/resource/aiSkills.js +71 -0
- package/dist/server/resource/aiTools.js +4 -6
- package/dist/server/resource/aiWorkflowTasks.d.ts +12 -0
- package/dist/server/resource/aiWorkflowTasks.js +290 -0
- package/dist/server/tools/docs.js +4 -3
- package/dist/server/tools/workflow-caller.js +1 -0
- package/dist/server/types/ai-chat-conversation.type.d.ts +8 -2
- package/dist/server/types/ai-message.type.d.ts +7 -0
- package/dist/server/utils.d.ts +3 -0
- package/dist/server/utils.js +28 -3
- package/dist/server/workflow/nodes/employee/files.d.ts +16 -0
- package/dist/server/workflow/nodes/employee/files.js +125 -0
- package/dist/server/workflow/nodes/employee/handler.d.ts +11 -0
- package/dist/server/workflow/nodes/employee/handler.js +107 -0
- package/dist/server/workflow/nodes/employee/index.d.ts +17 -0
- package/dist/server/workflow/nodes/employee/index.js +391 -0
- package/dist/server/workflow/nodes/employee/tools.d.ts +12 -0
- package/dist/server/workflow/nodes/employee/tools.js +133 -0
- package/dist/server/workflow/nodes/employee/types.d.ts +35 -0
- package/dist/server/workflow/nodes/employee/types.js +24 -0
- package/dist/server/workflow/utils.d.ts +14 -0
- package/dist/server/workflow/utils.js +111 -0
- package/package.json +4 -2
- package/dist/client/107.64d9efa24d6b9143.js +0 -10
- package/dist/client/124.768c8aa5d6e6b461.js +0 -10
- package/dist/client/159.d52107c7a34ce2da.js +0 -10
- package/dist/client/192.0419770b69678994.js +0 -10
- package/dist/client/204.91be8cfc54d91a59.js +0 -10
- package/dist/client/238.9f784a7cdb751999.js +0 -10
- package/dist/client/263.6e1dfb1cbb1964f5.js +0 -10
- package/dist/client/35.5ee7503d9c09daa8.js +0 -10
- package/dist/client/47.6bd245f2140efd24.js +0 -10
- package/dist/client/481.03b3d2306d409933.js +0 -10
- package/dist/client/586.6a1510cabaa84f23.js +0 -10
- package/dist/client/650.8871a07b31c307ea.js +0 -10
- package/dist/client/755.e295bbd2b2a1cc21.js +0 -10
- package/dist/client/772.d51f683c55e18dd4.js +0 -10
- package/dist/client/870.84187dcb8c89b4dc.js +0 -10
- package/dist/client/933.baab3aa75f30e020.js +0 -10
- package/dist/client/987.3aee964e7f406939.js +0 -10
- package/dist/server/ai-employees/built-in/ai-coding/document/basic/flow-resource.js +0 -256
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/index.js +0 -48
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_accounts_en.js +0 -452
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_contacts_en.js +0 -363
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_opportunities_en.js +0 -270
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_quotations_en.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_quotations_en.js +0 -219
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_tickets_en.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-column/js_columns_for_tickets_en.js +0 -409
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/accounts_filter_ant_style.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/accounts_filter_ant_style.js +0 -324
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/contacts_filter_ant_style.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/contacts_filter_ant_style.js +0 -309
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/index.js +0 -50
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/leads_filter_ant_style.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/leads_filter_ant_style.js +0 -345
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/opportunities_filter_ant_style.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/opportunities_filter_ant_style.js +0 -381
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/product_categories_ant_style.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/product_categories_ant_style.js +0 -545
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/tickets_filter_ant_style.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/example/js-filter/tickets_filter_ant_style.js +0 -346
- package/dist/server/ai-employees/built-in/ai-coding/document/js-action.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/js-action.js +0 -102
- package/dist/server/ai-employees/built-in/ai-coding/document/js-block.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/js-block.js +0 -314
- package/dist/server/ai-employees/built-in/ai-coding/document/js-column.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/js-column.js +0 -113
- package/dist/server/ai-employees/built-in/ai-coding/document/js-field.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/js-field.js +0 -498
- package/dist/server/ai-employees/built-in/ai-coding/document/js-item.d.ts +0 -13
- package/dist/server/ai-employees/built-in/ai-coding/document/js-item.js +0 -184
- package/dist/server/ai-employees/built-in/ai-coding/index.d.ts +0 -37
- package/dist/server/ai-employees/built-in/ai-coding/index.js +0 -99
- package/dist/server/ai-employees/built-in/ai-coding/profile.d.ts +0 -27
- package/dist/server/ai-employees/built-in/ai-coding/profile.js +0 -60
- package/dist/server/ai-employees/built-in/ai-coding/prompt_en.md +0 -110
- package/dist/server/ai-employees/built-in/data-modeling/index.d.ts +0 -37
- package/dist/server/ai-employees/built-in/data-modeling/profile.d.ts +0 -27
- package/dist/server/ai-employees/built-in/data-modeling/profile.js +0 -60
- package/dist/server/ai-employees/built-in/data-modeling/prompt.js +0 -283
- package/dist/server/ai-employees/built-in/data-organizer/index.d.ts +0 -37
- package/dist/server/ai-employees/built-in/data-organizer/index.js +0 -63
- package/dist/server/ai-employees/built-in/data-organizer/profile.d.ts +0 -27
- package/dist/server/ai-employees/built-in/data-organizer/profile.js +0 -60
- package/dist/server/ai-employees/built-in/data-visualization/index.d.ts +0 -37
- package/dist/server/ai-employees/built-in/data-visualization/index.js +0 -58
- package/dist/server/ai-employees/built-in/data-visualization/profile.d.ts +0 -27
- package/dist/server/ai-employees/built-in/data-visualization/profile.js +0 -60
- package/dist/server/ai-employees/built-in/email-assistant/index.d.ts +0 -34
- package/dist/server/ai-employees/built-in/email-assistant/profile.d.ts +0 -27
- package/dist/server/ai-employees/built-in/email-assistant/prompt.d.ts +0 -12
- package/dist/server/ai-employees/built-in/insights-analyst/index.d.ts +0 -37
- package/dist/server/ai-employees/built-in/insights-analyst/index.js +0 -63
- package/dist/server/ai-employees/built-in/insights-analyst/profile.d.ts +0 -27
- package/dist/server/ai-employees/built-in/insights-analyst/profile.js +0 -60
- package/dist/server/ai-employees/built-in/insights-analyst/prompt.d.ts +0 -12
- package/dist/server/ai-employees/built-in/nocobase-assistant/index.d.ts +0 -34
- package/dist/server/ai-employees/built-in/nocobase-assistant/profile.d.ts +0 -27
- package/dist/server/ai-employees/built-in/nocobase-assistant/profile.js +0 -60
- package/dist/server/ai-employees/built-in/nocobase-assistant/prompt.d.ts +0 -12
- package/dist/server/ai-employees/built-in/nocobase-assistant/prompt.js +0 -52
- package/dist/server/ai-employees/built-in/research-analyst/index.d.ts +0 -37
- package/dist/server/ai-employees/built-in/research-analyst/index.js +0 -63
- package/dist/server/ai-employees/built-in/research-analyst/profile.d.ts +0 -27
- package/dist/server/ai-employees/built-in/research-analyst/profile.js +0 -60
- package/dist/server/ai-employees/built-in/research-analyst/prompt.d.ts +0 -12
- package/dist/server/ai-employees/built-in/translator/index.d.ts +0 -37
- package/dist/server/ai-employees/built-in/translator/index.js +0 -67
- package/dist/server/ai-employees/built-in/translator/profile.d.ts +0 -27
- package/dist/server/ai-employees/built-in/translator/prompt.d.ts +0 -12
- /package/dist/client/ai-employees/chatbox/{Conversations.d.ts → conversations/Conversations.d.ts} +0 -0
- /package/dist/server/migrations/{20250923221107-setup-build-in.d.ts → 20260306000001-migrate-skill-settings-tools.d.ts} +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
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 { AIEmployee } from '../../collections/ai-employees';
|
|
10
|
+
import { DocumentSegmentedWithScore } from '../features';
|
|
11
|
+
import type PluginAIServer from '../plugin';
|
|
12
|
+
export type KnowledgeBaseRetrieveOptions = {
|
|
13
|
+
username?: string;
|
|
14
|
+
employee?: AIEmployee;
|
|
15
|
+
query: string;
|
|
16
|
+
};
|
|
17
|
+
export declare class KnowledgeBaseManager {
|
|
18
|
+
private readonly plugin;
|
|
19
|
+
constructor(plugin: PluginAIServer);
|
|
20
|
+
retrievePrompt({ username, employee, query }: KnowledgeBaseRetrieveOptions): Promise<string>;
|
|
21
|
+
retrieve({ username, employee, query }: KnowledgeBaseRetrieveOptions): Promise<DocumentSegmentedWithScore[]>;
|
|
22
|
+
isEnabledKnowledgeBase(username: string): Promise<boolean>;
|
|
23
|
+
isEnabledKnowledgeBase(employee: AIEmployee): Promise<boolean>;
|
|
24
|
+
private getAIEmployeeKnowledgeBaseConfig;
|
|
25
|
+
private getKnowledgeBaseGroup;
|
|
26
|
+
private getEmployee;
|
|
27
|
+
private get aiEmployeeRepo();
|
|
28
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
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 ai_knowledge_base_exports = {};
|
|
38
|
+
__export(ai_knowledge_base_exports, {
|
|
39
|
+
KnowledgeBaseManager: () => KnowledgeBaseManager
|
|
40
|
+
});
|
|
41
|
+
module.exports = __toCommonJS(ai_knowledge_base_exports);
|
|
42
|
+
var import_prompts = require("@langchain/core/prompts");
|
|
43
|
+
var import_ai_feature_manager = require("../manager/ai-feature-manager");
|
|
44
|
+
var import_lodash = __toESM(require("lodash"));
|
|
45
|
+
class KnowledgeBaseManager {
|
|
46
|
+
constructor(plugin) {
|
|
47
|
+
this.plugin = plugin;
|
|
48
|
+
}
|
|
49
|
+
async retrievePrompt({ username, employee, query }) {
|
|
50
|
+
employee = employee ?? await this.getEmployee(username);
|
|
51
|
+
if (!employee) {
|
|
52
|
+
return "Specified knowledge base not existed";
|
|
53
|
+
}
|
|
54
|
+
const promptTemplate = import_prompts.ChatPromptTemplate.fromTemplate(employee.knowledgeBasePrompt);
|
|
55
|
+
const docs = await this.retrieve({
|
|
56
|
+
employee,
|
|
57
|
+
query
|
|
58
|
+
});
|
|
59
|
+
if (!(docs == null ? void 0 : docs.length)) {
|
|
60
|
+
return "No document match in knowledge base";
|
|
61
|
+
}
|
|
62
|
+
const knowledgeBaseData = docs.map((x) => x.content).join("\n");
|
|
63
|
+
return import_lodash.default.isEmpty(knowledgeBaseData) ? void 0 : await promptTemplate.format({
|
|
64
|
+
knowledgeBaseData
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async retrieve({ username, employee, query }) {
|
|
68
|
+
const vectorStoreProvider = this.plugin.features.vectorStoreProvider;
|
|
69
|
+
let queryResult = [];
|
|
70
|
+
if (!query || import_lodash.default.isEmpty(query)) {
|
|
71
|
+
return queryResult;
|
|
72
|
+
}
|
|
73
|
+
employee = employee ?? await this.getEmployee(username);
|
|
74
|
+
if (!employee) {
|
|
75
|
+
return queryResult;
|
|
76
|
+
}
|
|
77
|
+
const { topK, score } = this.getAIEmployeeKnowledgeBaseConfig(employee);
|
|
78
|
+
const knowledgeBaseGroup = await this.getKnowledgeBaseGroup(employee);
|
|
79
|
+
for (const entry of knowledgeBaseGroup) {
|
|
80
|
+
const { vectorStoreConfig, knowledgeBaseType, knowledgeBaseList } = entry;
|
|
81
|
+
if (!knowledgeBaseList || import_lodash.default.isEmpty(knowledgeBaseList)) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (knowledgeBaseType === "LOCAL") {
|
|
85
|
+
const vectorStoreService = await vectorStoreProvider.createVectorStoreService(
|
|
86
|
+
vectorStoreConfig.vectorStoreProvider,
|
|
87
|
+
[
|
|
88
|
+
{
|
|
89
|
+
key: "vectorStoreConfigId",
|
|
90
|
+
value: vectorStoreConfig.vectorStoreConfigId
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
);
|
|
94
|
+
const knowledgeBaseOuterIds = knowledgeBaseList.map((x) => x.knowledgeBaseOuterId);
|
|
95
|
+
const result = await vectorStoreService.search(query, {
|
|
96
|
+
topK,
|
|
97
|
+
score,
|
|
98
|
+
filter: {
|
|
99
|
+
knowledgeBaseOuterId: { in: knowledgeBaseOuterIds }
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
queryResult = [...queryResult, ...result];
|
|
103
|
+
} else if (knowledgeBaseType === "READONLY") {
|
|
104
|
+
for (const knowledgeBase of knowledgeBaseList) {
|
|
105
|
+
const vectorStoreService = await vectorStoreProvider.createVectorStoreService(
|
|
106
|
+
vectorStoreConfig.vectorStoreProvider,
|
|
107
|
+
[
|
|
108
|
+
...knowledgeBase.vectorStoreProps,
|
|
109
|
+
{
|
|
110
|
+
key: "vectorStoreConfigId",
|
|
111
|
+
value: vectorStoreConfig.vectorStoreConfigId
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
);
|
|
115
|
+
const result = await vectorStoreService.search(query, {
|
|
116
|
+
topK,
|
|
117
|
+
score
|
|
118
|
+
});
|
|
119
|
+
queryResult = [...queryResult, ...result];
|
|
120
|
+
}
|
|
121
|
+
} else if (knowledgeBaseType === "EXTERNAL") {
|
|
122
|
+
for (const knowledgeBase of knowledgeBaseList) {
|
|
123
|
+
const vectorStoreService = await vectorStoreProvider.createVectorStoreService(
|
|
124
|
+
vectorStoreConfig.vectorStoreProvider,
|
|
125
|
+
knowledgeBase.vectorStoreProps
|
|
126
|
+
);
|
|
127
|
+
const result = await vectorStoreService.search(query, {
|
|
128
|
+
topK,
|
|
129
|
+
score
|
|
130
|
+
});
|
|
131
|
+
queryResult = [...queryResult, ...result];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return queryResult;
|
|
136
|
+
}
|
|
137
|
+
async isEnabledKnowledgeBase(usernameOrEmployee) {
|
|
138
|
+
const featureEnabled = this.plugin.features.isFeaturesEnabled(Object.values(import_ai_feature_manager.EEFeatures));
|
|
139
|
+
const employee = typeof usernameOrEmployee === "string" ? await this.getEmployee(usernameOrEmployee) : usernameOrEmployee;
|
|
140
|
+
const knowledgeBaseEnabled = employee == null ? void 0 : employee.enableKnowledgeBase;
|
|
141
|
+
return featureEnabled && knowledgeBaseEnabled;
|
|
142
|
+
}
|
|
143
|
+
getAIEmployeeKnowledgeBaseConfig(employee) {
|
|
144
|
+
const { topK, score } = (employee == null ? void 0 : employee.knowledgeBase) ?? {};
|
|
145
|
+
return {
|
|
146
|
+
topK,
|
|
147
|
+
score
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
async getKnowledgeBaseGroup(employee) {
|
|
151
|
+
const { knowledgeBaseIds } = (employee == null ? void 0 : employee.knowledgeBase) ?? {};
|
|
152
|
+
if (!knowledgeBaseIds || import_lodash.default.isEmpty(knowledgeBaseIds)) {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
return await this.plugin.features.knowledgeBase.getKnowledgeBaseGroup(knowledgeBaseIds);
|
|
156
|
+
}
|
|
157
|
+
async getEmployee(username) {
|
|
158
|
+
return await this.aiEmployeeRepo.findOne({ filter: { username } });
|
|
159
|
+
}
|
|
160
|
+
get aiEmployeeRepo() {
|
|
161
|
+
return this.plugin.db.getRepository("aiEmployees");
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
165
|
+
0 && (module.exports = {
|
|
166
|
+
KnowledgeBaseManager
|
|
167
|
+
});
|
|
@@ -26,6 +26,8 @@ export declare const conversationMiddleware: (aiEmployee: AIEmployee, options: {
|
|
|
26
26
|
}, z.core.$strip>>;
|
|
27
27
|
}, z.core.$strip>, z.ZodObject<{
|
|
28
28
|
ctx: z.ZodAny;
|
|
29
|
+
appendMessage: z.ZodAny;
|
|
29
30
|
}, z.core.$strip>, {
|
|
30
31
|
ctx: any;
|
|
32
|
+
appendMessage: any;
|
|
31
33
|
}, readonly (import("@langchain/core/dist/tools").ClientTool | import("@langchain/core/dist/tools").ServerTool)[]>;
|
|
@@ -77,7 +77,8 @@ const conversationMiddleware = (aiEmployee, options) => {
|
|
|
77
77
|
return (0, import_langchain.createMiddleware)({
|
|
78
78
|
name: "ConversationMiddleware",
|
|
79
79
|
contextSchema: import_zod.default.object({
|
|
80
|
-
ctx: import_zod.default.any()
|
|
80
|
+
ctx: import_zod.default.any(),
|
|
81
|
+
appendMessage: import_zod.default.any()
|
|
81
82
|
}),
|
|
82
83
|
stateSchema: import_zod.default.object({
|
|
83
84
|
messageId: import_zod.default.coerce.string().optional(),
|
|
@@ -125,13 +126,28 @@ const conversationMiddleware = (aiEmployee, options) => {
|
|
|
125
126
|
toolMessages.map((x) => x.metadata.toolCallId)
|
|
126
127
|
);
|
|
127
128
|
});
|
|
128
|
-
|
|
129
|
+
const currentConversation = {
|
|
130
|
+
sessionId: aiEmployee.sessionId,
|
|
131
|
+
username: aiEmployee.employee.username,
|
|
132
|
+
from: aiEmployee.from
|
|
133
|
+
};
|
|
134
|
+
(_a = runtime.writer) == null ? void 0 : _a.call(runtime, {
|
|
135
|
+
action: "beforeSendToolMessage",
|
|
136
|
+
body: { messageId: messageId2, messages: toolMessages },
|
|
137
|
+
currentConversation
|
|
138
|
+
});
|
|
129
139
|
}
|
|
130
140
|
},
|
|
131
141
|
afterModel: async (state, runtime) => {
|
|
132
142
|
var _a, _b, _c, _d, _e, _f;
|
|
133
143
|
try {
|
|
144
|
+
const currentConversation = {
|
|
145
|
+
sessionId: aiEmployee.sessionId,
|
|
146
|
+
username: aiEmployee.employee.username,
|
|
147
|
+
from: aiEmployee.from
|
|
148
|
+
};
|
|
134
149
|
const newState = {
|
|
150
|
+
messageId: state.messageId,
|
|
135
151
|
lastMessageIndex: {
|
|
136
152
|
lastHumanMessageIndex: state.messages.filter((x) => x.type === "human").length,
|
|
137
153
|
lastAIMessageIndex: state.messages.filter((x) => x.type === "ai").length,
|
|
@@ -153,7 +169,7 @@ const conversationMiddleware = (aiEmployee, options) => {
|
|
|
153
169
|
if (values) {
|
|
154
170
|
await aiEmployee.aiChatConversation.withTransaction(async (conversation, transaction) => {
|
|
155
171
|
const result = await conversation.addMessages(values);
|
|
156
|
-
|
|
172
|
+
newState.messageId = result.messageId;
|
|
157
173
|
if (toolCalls == null ? void 0 : toolCalls.length) {
|
|
158
174
|
const toolsMap = await aiEmployee.getToolsMap();
|
|
159
175
|
const initializedToolCalls = await aiEmployee.initToolCall(
|
|
@@ -166,19 +182,36 @@ const conversationMiddleware = (aiEmployee, options) => {
|
|
|
166
182
|
});
|
|
167
183
|
(_b = runtime.writer) == null ? void 0 : _b.call(runtime, {
|
|
168
184
|
action: "AfterAIMessageSaved",
|
|
169
|
-
body: { id: aiMessage.id, messageId:
|
|
185
|
+
body: { id: aiMessage.id, messageId: newState.messageId },
|
|
186
|
+
currentConversation
|
|
170
187
|
});
|
|
171
188
|
}
|
|
172
189
|
if (toolCalls == null ? void 0 : toolCalls.length) {
|
|
173
190
|
(_c = runtime.writer) == null ? void 0 : _c.call(runtime, {
|
|
174
191
|
action: "initToolCalls",
|
|
175
|
-
body: { toolCalls }
|
|
192
|
+
body: { toolCalls },
|
|
193
|
+
currentConversation
|
|
176
194
|
});
|
|
177
195
|
}
|
|
178
196
|
return newState;
|
|
179
197
|
} catch (e) {
|
|
180
198
|
(_f = (_e = (_d = runtime.context) == null ? void 0 : _d.ctx) == null ? void 0 : _e.logger) == null ? void 0 : _f.error(e);
|
|
181
199
|
}
|
|
200
|
+
},
|
|
201
|
+
wrapModelCall: async (request, handler) => {
|
|
202
|
+
const runtimeContext = request.runtime.context;
|
|
203
|
+
const appendMessage = runtimeContext == null ? void 0 : runtimeContext.appendMessage;
|
|
204
|
+
if (Array.isArray(appendMessage) && appendMessage.length) {
|
|
205
|
+
await aiEmployee.aiChatConversation.withTransaction(async (conversation) => {
|
|
206
|
+
await conversation.addMessages(convertToolMessage(request.messages.at(-1)));
|
|
207
|
+
await conversation.addMessages(appendMessage.map((x) => x).map(convertHumanMessage));
|
|
208
|
+
});
|
|
209
|
+
request.messages.push(...appendMessage);
|
|
210
|
+
if (runtimeContext) {
|
|
211
|
+
delete runtimeContext.appendMessage;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return handler(request);
|
|
182
215
|
}
|
|
183
216
|
});
|
|
184
217
|
};
|
|
@@ -24,9 +24,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
24
24
|
var middleware_exports = {};
|
|
25
25
|
module.exports = __toCommonJS(middleware_exports);
|
|
26
26
|
__reExport(middleware_exports, require("./conversation"), module.exports);
|
|
27
|
+
__reExport(middleware_exports, require("./skill-tools"), module.exports);
|
|
27
28
|
__reExport(middleware_exports, require("./tools"), module.exports);
|
|
29
|
+
__reExport(middleware_exports, require("./workflow-history"), module.exports);
|
|
28
30
|
// Annotate the CommonJS export names for ESM import in node:
|
|
29
31
|
0 && (module.exports = {
|
|
30
32
|
...require("./conversation"),
|
|
31
|
-
...require("./tools")
|
|
33
|
+
...require("./skill-tools"),
|
|
34
|
+
...require("./tools"),
|
|
35
|
+
...require("./workflow-history")
|
|
32
36
|
});
|
|
@@ -0,0 +1,12 @@
|
|
|
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 { AIEmployee } from '../ai-employee';
|
|
10
|
+
export declare const skillToolBindingMiddleware: (aiEmployee: AIEmployee, options: {
|
|
11
|
+
baseToolNames: string[];
|
|
12
|
+
}) => import("langchain/dist/agents/middleware/types.cjs").AgentMiddleware<undefined, undefined, unknown, readonly (import("@langchain/core/dist/tools").ClientTool | import("@langchain/core/dist/tools").ServerTool)[]>;
|
|
@@ -0,0 +1,88 @@
|
|
|
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 skill_tools_exports = {};
|
|
28
|
+
__export(skill_tools_exports, {
|
|
29
|
+
skillToolBindingMiddleware: () => skillToolBindingMiddleware
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(skill_tools_exports);
|
|
32
|
+
var import_langchain = require("langchain");
|
|
33
|
+
const skillToolBindingMiddleware = (aiEmployee, options) => {
|
|
34
|
+
const baseToolNames = new Set(options.baseToolNames ?? []);
|
|
35
|
+
const getAllowedToolNames = async () => {
|
|
36
|
+
const activatedSkillToolNames = await aiEmployee.getActivatedSkillToolNames();
|
|
37
|
+
return /* @__PURE__ */ new Set([...baseToolNames, ...activatedSkillToolNames]);
|
|
38
|
+
};
|
|
39
|
+
const getToolName = (tool) => {
|
|
40
|
+
var _a;
|
|
41
|
+
if (!tool || typeof tool !== "object") {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
if (typeof tool.name === "string") {
|
|
45
|
+
return tool.name;
|
|
46
|
+
}
|
|
47
|
+
if (typeof ((_a = tool.function) == null ? void 0 : _a.name) === "string") {
|
|
48
|
+
return tool.function.name;
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
};
|
|
52
|
+
const filterRequestTools = async (tools = []) => {
|
|
53
|
+
const allowedToolNames = await getAllowedToolNames();
|
|
54
|
+
return tools.filter((tool) => {
|
|
55
|
+
const name = getToolName(tool);
|
|
56
|
+
if (name == null) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
return name && allowedToolNames.has(name);
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
return (0, import_langchain.createMiddleware)({
|
|
63
|
+
name: "SkillToolBindingMiddleware",
|
|
64
|
+
wrapModelCall: async (request, handler) => {
|
|
65
|
+
const tools = await filterRequestTools(request.tools ?? []);
|
|
66
|
+
return handler({
|
|
67
|
+
...request,
|
|
68
|
+
tools
|
|
69
|
+
});
|
|
70
|
+
},
|
|
71
|
+
wrapToolCall: async (request, handler) => {
|
|
72
|
+
const allowedToolNames = await getAllowedToolNames();
|
|
73
|
+
if (!allowedToolNames.has(request.toolCall.name)) {
|
|
74
|
+
return new import_langchain.ToolMessage({
|
|
75
|
+
tool_call_id: request.toolCall.id,
|
|
76
|
+
name: request.toolCall.name,
|
|
77
|
+
status: "error",
|
|
78
|
+
content: "Tool unavailable."
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return handler(request);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
86
|
+
0 && (module.exports = {
|
|
87
|
+
skillToolBindingMiddleware
|
|
88
|
+
});
|
|
@@ -46,7 +46,16 @@ var import_lodash = __toESM(require("lodash"));
|
|
|
46
46
|
const toolInteractionMiddleware = (aiEmployee, tools) => {
|
|
47
47
|
const interruptOn = {};
|
|
48
48
|
for (const tool of tools) {
|
|
49
|
-
interruptOn[tool.definition.name] = aiEmployee.shouldInterruptToolCall(tool)
|
|
49
|
+
interruptOn[tool.definition.name] = aiEmployee.shouldInterruptToolCall(tool) ? {
|
|
50
|
+
allowedDecisions: ["approve", "reject", "edit"],
|
|
51
|
+
description: (toolCall) => JSON.stringify({
|
|
52
|
+
sessionId: aiEmployee.sessionId,
|
|
53
|
+
from: aiEmployee.from,
|
|
54
|
+
username: aiEmployee.employee.username,
|
|
55
|
+
toolCallId: toolCall.id,
|
|
56
|
+
toolCallName: toolCall.name
|
|
57
|
+
})
|
|
58
|
+
} : false;
|
|
50
59
|
}
|
|
51
60
|
return (0, import_langchain.humanInTheLoopMiddleware)({
|
|
52
61
|
interruptOn
|
|
@@ -60,13 +69,23 @@ const toolCallStatusMiddleware = (aiEmployee) => {
|
|
|
60
69
|
}),
|
|
61
70
|
wrapToolCall: async (request, handler) => {
|
|
62
71
|
var _a, _b, _c, _d;
|
|
72
|
+
let interrupted = false;
|
|
63
73
|
const { runtime, toolCall } = request;
|
|
64
74
|
const { messageId } = request.state;
|
|
75
|
+
const currentConversation = {
|
|
76
|
+
sessionId: aiEmployee.sessionId,
|
|
77
|
+
username: aiEmployee.employee.username,
|
|
78
|
+
from: aiEmployee.from
|
|
79
|
+
};
|
|
65
80
|
const tm = await aiEmployee.getToolCallResult(messageId, request.toolCall.id);
|
|
81
|
+
if (!tm) {
|
|
82
|
+
throw new Error(`Tool call result not found for messageId=${messageId}, toolCallId=${request.toolCall.id}`);
|
|
83
|
+
}
|
|
66
84
|
if (tm.status === "error") {
|
|
67
85
|
(_a = runtime.writer) == null ? void 0 : _a.call(runtime, {
|
|
68
86
|
action: "afterToolCall",
|
|
69
|
-
body: { toolCall, toolCallResult: tm }
|
|
87
|
+
body: { toolCall, toolCallResult: tm },
|
|
88
|
+
currentConversation
|
|
70
89
|
});
|
|
71
90
|
return new import_langchain.ToolMessage({
|
|
72
91
|
tool_call_id: request.toolCall.id,
|
|
@@ -78,7 +97,7 @@ const toolCallStatusMiddleware = (aiEmployee) => {
|
|
|
78
97
|
});
|
|
79
98
|
}
|
|
80
99
|
await aiEmployee.updateToolCallPending(messageId, request.toolCall.id);
|
|
81
|
-
(_b = runtime.writer) == null ? void 0 : _b.call(runtime, { action: "beforeToolCall", body: { toolCall } });
|
|
100
|
+
(_b = runtime.writer) == null ? void 0 : _b.call(runtime, { action: "beforeToolCall", body: { toolCall }, currentConversation });
|
|
82
101
|
let result;
|
|
83
102
|
try {
|
|
84
103
|
const toolMessage = await handler(request);
|
|
@@ -100,11 +119,16 @@ const toolCallStatusMiddleware = (aiEmployee) => {
|
|
|
100
119
|
}
|
|
101
120
|
return toolMessage;
|
|
102
121
|
} catch (e) {
|
|
122
|
+
if (e.name === "GraphInterrupt") {
|
|
123
|
+
interrupted = true;
|
|
124
|
+
throw e;
|
|
125
|
+
}
|
|
103
126
|
aiEmployee.logger.error(e);
|
|
104
127
|
result = { status: "error", content: e.message };
|
|
105
128
|
(_c = runtime.writer) == null ? void 0 : _c.call(runtime, {
|
|
106
129
|
action: "afterToolCallError",
|
|
107
|
-
body: { toolCall, error: e }
|
|
130
|
+
body: { toolCall, error: e },
|
|
131
|
+
currentConversation
|
|
108
132
|
});
|
|
109
133
|
return new import_langchain.ToolMessage({
|
|
110
134
|
tool_call_id: request.toolCall.id,
|
|
@@ -115,12 +139,15 @@ const toolCallStatusMiddleware = (aiEmployee) => {
|
|
|
115
139
|
}
|
|
116
140
|
});
|
|
117
141
|
} finally {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
142
|
+
if (!interrupted) {
|
|
143
|
+
await aiEmployee.updateToolCallDone(messageId, request.toolCall.id, result);
|
|
144
|
+
const toolCallResult = await aiEmployee.getToolCallResult(messageId, request.toolCall.id);
|
|
145
|
+
(_d = runtime.writer) == null ? void 0 : _d.call(runtime, {
|
|
146
|
+
action: "afterToolCall",
|
|
147
|
+
body: { toolCall, toolCallResult },
|
|
148
|
+
currentConversation
|
|
149
|
+
});
|
|
150
|
+
}
|
|
124
151
|
}
|
|
125
152
|
}
|
|
126
153
|
});
|
|
@@ -0,0 +1,22 @@
|
|
|
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 { Database } from '@nocobase/database';
|
|
10
|
+
import { createMiddleware } from 'langchain';
|
|
11
|
+
import { AIEmployee } from '../ai-employee';
|
|
12
|
+
export declare class WorkflowJobsLogHandler {
|
|
13
|
+
private readonly db;
|
|
14
|
+
private readonly sessionId;
|
|
15
|
+
constructor(db: Database, sessionId: string);
|
|
16
|
+
append(entries: Array<{
|
|
17
|
+
type: 'toolMessage' | 'toolCall';
|
|
18
|
+
toolCallId?: string;
|
|
19
|
+
value: unknown;
|
|
20
|
+
}>): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
export declare const workflowHistoryMiddleware: (aiEmployee: AIEmployee, db: Database) => ReturnType<typeof createMiddleware>;
|