@nocobase/app-plugin-agents 0.1.0-beta.1 → 0.1.0-beta.10
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/CHANGELOG.md +355 -0
- package/README.md +107 -67
- package/dist/client/api/client.d.ts +25 -17
- package/dist/client/api/client.d.ts.map +1 -1
- package/dist/client/api/client.js +29 -27
- package/dist/client/api/client.js.map +1 -1
- package/dist/client/api/keys.d.ts +1 -1
- package/dist/client/api/keys.d.ts.map +1 -1
- package/dist/client/api/keys.js +1 -1
- package/dist/client/api/keys.js.map +1 -1
- package/dist/client/chat/api.d.ts +2 -7
- package/dist/client/chat/api.d.ts.map +1 -1
- package/dist/client/chat/api.js +0 -7
- package/dist/client/chat/api.js.map +1 -1
- package/dist/client/chat/consultation-identity.d.ts +7 -0
- package/dist/client/chat/consultation-identity.d.ts.map +1 -0
- package/dist/client/chat/consultation-identity.js +39 -0
- package/dist/client/chat/consultation-identity.js.map +1 -0
- package/dist/client/chat/message-model.d.ts +4 -2
- package/dist/client/chat/message-model.d.ts.map +1 -1
- package/dist/client/chat/message-model.js +28 -3
- package/dist/client/chat/message-model.js.map +1 -1
- package/dist/client/chat/use-chat.d.ts +2 -10
- package/dist/client/chat/use-chat.d.ts.map +1 -1
- package/dist/client/chat/use-chat.js +3 -10
- package/dist/client/chat/use-chat.js.map +1 -1
- package/dist/client/chat.d.ts +4 -1
- package/dist/client/chat.d.ts.map +1 -1
- package/dist/client/chat.js +3 -0
- package/dist/client/chat.js.map +1 -1
- package/dist/client/components/agent-picker.d.ts +6 -23
- package/dist/client/components/agent-picker.d.ts.map +1 -1
- package/dist/client/components/agent-picker.js +19 -39
- package/dist/client/components/agent-picker.js.map +1 -1
- package/dist/client/components/variables/variable-dialogs.d.ts +6 -1
- package/dist/client/components/variables/variable-dialogs.d.ts.map +1 -1
- package/dist/client/components/variables/variable-dialogs.js +27 -11
- package/dist/client/components/variables/variable-dialogs.js.map +1 -1
- package/dist/client/components/variables/variables-panel.d.ts.map +1 -1
- package/dist/client/components/variables/variables-panel.js +9 -2
- package/dist/client/components/variables/variables-panel.js.map +1 -1
- package/dist/client/hooks/use-agent-picker-labels.d.ts.map +1 -1
- package/dist/client/hooks/use-agent-picker-labels.js +3 -12
- package/dist/client/hooks/use-agent-picker-labels.js.map +1 -1
- package/dist/client/kit.d.ts +9 -12
- package/dist/client/kit.d.ts.map +1 -1
- package/dist/client/kit.js +12 -14
- package/dist/client/kit.js.map +1 -1
- package/dist/client/lib/agents.d.ts +5 -13
- package/dist/client/lib/agents.d.ts.map +1 -1
- package/dist/client/lib/agents.js +17 -32
- package/dist/client/lib/agents.js.map +1 -1
- package/dist/client/lib/install.js +1 -1
- package/dist/client/locales/chat.en-US.d.ts +9 -22
- package/dist/client/locales/chat.en-US.d.ts.map +1 -1
- package/dist/client/locales/chat.en-US.js +13 -25
- package/dist/client/locales/chat.en-US.js.map +1 -1
- package/dist/client/locales/chat.zh-CN.d.ts.map +1 -1
- package/dist/client/locales/chat.zh-CN.js +10 -22
- package/dist/client/locales/chat.zh-CN.js.map +1 -1
- package/dist/client/locales/en-US.d.ts +100 -219
- package/dist/client/locales/en-US.d.ts.map +1 -1
- package/dist/client/locales/en-US.js +105 -219
- package/dist/client/locales/en-US.js.map +1 -1
- package/dist/client/locales/runWait.en-US.d.ts +38 -0
- package/dist/client/locales/runWait.en-US.d.ts.map +1 -0
- package/dist/client/locales/runWait.en-US.js +37 -0
- package/dist/client/locales/runWait.en-US.js.map +1 -0
- package/dist/client/locales/runWait.zh-CN.d.ts +5 -0
- package/dist/client/locales/runWait.zh-CN.d.ts.map +1 -0
- package/dist/client/locales/runWait.zh-CN.js +32 -0
- package/dist/client/locales/runWait.zh-CN.js.map +1 -0
- package/dist/client/locales/runtimes.en-US.d.ts +55 -0
- package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
- package/dist/client/locales/runtimes.en-US.js +58 -3
- package/dist/client/locales/runtimes.en-US.js.map +1 -1
- package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
- package/dist/client/locales/runtimes.zh-CN.js +58 -3
- package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
- package/dist/client/locales/zh-CN.d.ts.map +1 -1
- package/dist/client/locales/zh-CN.js +107 -221
- package/dist/client/locales/zh-CN.js.map +1 -1
- package/dist/client/online/services.d.ts.map +1 -1
- package/dist/client/online/services.js +5 -6
- package/dist/client/online/services.js.map +1 -1
- package/dist/client/pages/agents/agent-dialog.d.ts +9 -0
- package/dist/client/pages/agents/agent-dialog.d.ts.map +1 -0
- package/dist/client/pages/agents/agent-dialog.js +106 -0
- package/dist/client/pages/agents/agent-dialog.js.map +1 -0
- package/dist/client/pages/agents/agent-state.d.ts +11 -0
- package/dist/client/pages/agents/agent-state.d.ts.map +1 -0
- package/dist/client/pages/agents/agent-state.js +28 -0
- package/dist/client/pages/agents/agent-state.js.map +1 -0
- package/dist/client/pages/agents/index.d.ts +1 -1
- package/dist/client/pages/agents/index.d.ts.map +1 -1
- package/dist/client/pages/agents/index.js +6 -100
- package/dist/client/pages/agents/index.js.map +1 -1
- package/dist/client/pages/agents/runner-agents.d.ts +3 -0
- package/dist/client/pages/agents/runner-agents.d.ts.map +1 -0
- package/dist/client/pages/agents/runner-agents.js +172 -0
- package/dist/client/pages/agents/runner-agents.js.map +1 -0
- package/dist/client/pages/runtimes/connect.js +1 -1
- package/dist/client/pages/runtimes/connect.js.map +1 -1
- package/dist/client/pages/runtimes/index.d.ts.map +1 -1
- package/dist/client/pages/runtimes/index.js +3 -2
- package/dist/client/pages/runtimes/index.js.map +1 -1
- package/dist/client/pages/runtimes/runner-cells.d.ts +1 -1
- package/dist/client/pages/runtimes/runner-cells.d.ts.map +1 -1
- package/dist/client/pages/runtimes/runner-cells.js +4 -1
- package/dist/client/pages/runtimes/runner-cells.js.map +1 -1
- package/dist/client/pages/runtimes/runner-sheet.d.ts.map +1 -1
- package/dist/client/pages/runtimes/runner-sheet.js +12 -3
- package/dist/client/pages/runtimes/runner-sheet.js.map +1 -1
- package/dist/client/pages/runtimes/workspace-diagnostics.d.ts +9 -0
- package/dist/client/pages/runtimes/workspace-diagnostics.d.ts.map +1 -0
- package/dist/client/pages/runtimes/workspace-diagnostics.js +70 -0
- package/dist/client/pages/runtimes/workspace-diagnostics.js.map +1 -0
- package/dist/client/pages/usage/index.js +2 -2
- package/dist/client/pages/usage/index.js.map +1 -1
- package/dist/client/profile/default-agent.d.ts.map +1 -1
- package/dist/client/profile/default-agent.js +2 -4
- package/dist/client/profile/default-agent.js.map +1 -1
- package/dist/client/routes.d.ts +1 -1
- package/dist/client/routes.d.ts.map +1 -1
- package/dist/client/routes.js +1 -13
- package/dist/client/routes.js.map +1 -1
- package/dist/client/runs/format-wait.d.ts +21 -0
- package/dist/client/runs/format-wait.d.ts.map +1 -0
- package/dist/client/runs/format-wait.js +90 -0
- package/dist/client/runs/format-wait.js.map +1 -0
- package/dist/client/runs/subject-runs.d.ts +5 -0
- package/dist/client/runs/subject-runs.d.ts.map +1 -1
- package/dist/client/runs/subject-runs.js +13 -7
- package/dist/client/runs/subject-runs.js.map +1 -1
- package/dist/client/runs.d.ts +3 -1
- package/dist/client/runs.d.ts.map +1 -1
- package/dist/client/runs.js +3 -1
- package/dist/client/runs.js.map +1 -1
- package/dist/database/migrations/.manifest.json +48 -0
- package/dist/database/migrations/202610090001_ag_add_team_runner_variables.d.ts +9 -0
- package/dist/database/migrations/202610090001_ag_add_team_runner_variables.d.ts.map +1 -0
- package/dist/database/migrations/202610090001_ag_add_team_runner_variables.js +28 -0
- package/dist/database/migrations/202610090001_ag_add_team_runner_variables.js.map +1 -0
- package/dist/database/migrations/202610090002_ag_create_run_requests.d.ts +10 -0
- package/dist/database/migrations/202610090002_ag_create_run_requests.d.ts.map +1 -0
- package/dist/database/migrations/202610090002_ag_create_run_requests.js +105 -0
- package/dist/database/migrations/202610090002_ag_create_run_requests.js.map +1 -0
- package/dist/database/migrations/202610090003_ag_add_execution_history.d.ts +4 -0
- package/dist/database/migrations/202610090003_ag_add_execution_history.d.ts.map +1 -0
- package/dist/database/migrations/202610090003_ag_add_execution_history.js +17 -0
- package/dist/database/migrations/202610090003_ag_add_execution_history.js.map +1 -0
- package/dist/database/migrations/202610090004_ag_add_runner_workspace_usage.d.ts +9 -0
- package/dist/database/migrations/202610090004_ag_add_runner_workspace_usage.d.ts.map +1 -0
- package/dist/database/migrations/202610090004_ag_add_runner_workspace_usage.js +22 -0
- package/dist/database/migrations/202610090004_ag_add_runner_workspace_usage.js.map +1 -0
- package/dist/database/migrations/202610090005_ag_add_runner_variables.d.ts +10 -0
- package/dist/database/migrations/202610090005_ag_add_runner_variables.d.ts.map +1 -0
- package/dist/database/migrations/202610090005_ag_add_runner_variables.js +36 -0
- package/dist/database/migrations/202610090005_ag_add_runner_variables.js.map +1 -0
- package/dist/database/migrations/202610100001_ag_index_run_event_types.d.ts +4 -0
- package/dist/database/migrations/202610100001_ag_index_run_event_types.d.ts.map +1 -0
- package/dist/database/migrations/202610100001_ag_index_run_event_types.js +17 -0
- package/dist/database/migrations/202610100001_ag_index_run_event_types.js.map +1 -0
- package/dist/database/migrations/202610100002_ag_add_run_git_credentials.d.ts +9 -0
- package/dist/database/migrations/202610100002_ag_add_run_git_credentials.d.ts.map +1 -0
- package/dist/database/migrations/202610100002_ag_add_run_git_credentials.js +30 -0
- package/dist/database/migrations/202610100002_ag_add_run_git_credentials.js.map +1 -0
- package/dist/database/migrations/202610110001_ag_add_fresh_sessions.d.ts +4 -0
- package/dist/database/migrations/202610110001_ag_add_fresh_sessions.d.ts.map +1 -0
- package/dist/database/migrations/202610110001_ag_add_fresh_sessions.js +23 -0
- package/dist/database/migrations/202610110001_ag_add_fresh_sessions.js.map +1 -0
- package/dist/database/migrations/202610120001_ag_index_run_retries.d.ts +4 -0
- package/dist/database/migrations/202610120001_ag_index_run_retries.d.ts.map +1 -0
- package/dist/database/migrations/202610120001_ag_index_run_retries.js +17 -0
- package/dist/database/migrations/202610120001_ag_index_run_retries.js.map +1 -0
- package/dist/database/migrations/202610120002_ag_add_queue_entered_at.d.ts +4 -0
- package/dist/database/migrations/202610120002_ag_add_queue_entered_at.d.ts.map +1 -0
- package/dist/database/migrations/202610120002_ag_add_queue_entered_at.js +50 -0
- package/dist/database/migrations/202610120002_ag_add_queue_entered_at.js.map +1 -0
- package/dist/database/migrations/202610240020_ag_runner_agents.d.ts +4 -0
- package/dist/database/migrations/202610240020_ag_runner_agents.d.ts.map +1 -0
- package/dist/database/migrations/202610240020_ag_runner_agents.js +115 -0
- package/dist/database/migrations/202610240020_ag_runner_agents.js.map +1 -0
- package/dist/database/migrations/202610240040_ag_discovery_preferences.d.ts +4 -0
- package/dist/database/migrations/202610240040_ag_discovery_preferences.d.ts.map +1 -0
- package/dist/database/migrations/202610240040_ag_discovery_preferences.js +18 -0
- package/dist/database/migrations/202610240040_ag_discovery_preferences.js.map +1 -0
- package/dist/package.json +8 -10
- package/dist/server/cli/run-credential.js +1 -1
- package/dist/server/composition.d.ts +39 -37
- package/dist/server/composition.d.ts.map +1 -1
- package/dist/server/composition.js +53 -65
- package/dist/server/composition.js.map +1 -1
- package/dist/server/core/agents/agent.service.d.ts +51 -43
- package/dist/server/core/agents/agent.service.d.ts.map +1 -1
- package/dist/server/core/agents/agent.service.js +342 -317
- package/dist/server/core/agents/agent.service.js.map +1 -1
- package/dist/server/core/agents/agent.store.d.ts +24 -12
- package/dist/server/core/agents/agent.store.d.ts.map +1 -1
- package/dist/server/core/agents/agent.store.js +65 -64
- package/dist/server/core/agents/agent.store.js.map +1 -1
- package/dist/server/core/agents/agent.views.d.ts +29 -0
- package/dist/server/core/agents/agent.views.d.ts.map +1 -0
- package/dist/server/core/agents/agent.views.js +86 -0
- package/dist/server/core/agents/agent.views.js.map +1 -0
- package/dist/server/core/agents/discovery.d.ts +12 -0
- package/dist/server/core/agents/discovery.d.ts.map +1 -0
- package/dist/server/core/agents/discovery.js +39 -0
- package/dist/server/core/agents/discovery.js.map +1 -0
- package/dist/server/core/agents/index.d.ts +2 -1
- package/dist/server/core/agents/index.d.ts.map +1 -1
- package/dist/server/core/agents/index.js +2 -1
- package/dist/server/core/agents/index.js.map +1 -1
- package/dist/server/core/brief/brief.js +1 -1
- package/dist/server/core/brief/brief.js.map +1 -1
- package/dist/server/core/callers/index.d.ts +1 -1
- package/dist/server/core/conversations/availability.d.ts +11 -10
- package/dist/server/core/conversations/availability.d.ts.map +1 -1
- package/dist/server/core/conversations/availability.js +14 -32
- package/dist/server/core/conversations/availability.js.map +1 -1
- package/dist/server/core/conversations/chat-settings.d.ts.map +1 -1
- package/dist/server/core/conversations/chat-settings.js +5 -3
- package/dist/server/core/conversations/chat-settings.js.map +1 -1
- package/dist/server/core/conversations/conversation.service.d.ts +3 -5
- package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
- package/dist/server/core/conversations/conversation.service.js +161 -221
- package/dist/server/core/conversations/conversation.service.js.map +1 -1
- package/dist/server/core/conversations/ports.d.ts +3 -17
- package/dist/server/core/conversations/ports.d.ts.map +1 -1
- package/dist/server/core/reports/report.service.d.ts.map +1 -1
- package/dist/server/core/reports/report.service.js +5 -2
- package/dist/server/core/reports/report.service.js.map +1 -1
- package/dist/server/core/runs/availability.d.ts +18 -7
- package/dist/server/core/runs/availability.d.ts.map +1 -1
- package/dist/server/core/runs/availability.js +35 -24
- package/dist/server/core/runs/availability.js.map +1 -1
- package/dist/server/core/runs/claim.d.ts +33 -65
- package/dist/server/core/runs/claim.d.ts.map +1 -1
- package/dist/server/core/runs/claim.js +566 -307
- package/dist/server/core/runs/claim.js.map +1 -1
- package/dist/server/core/runs/eligibility.d.ts +51 -0
- package/dist/server/core/runs/eligibility.d.ts.map +1 -0
- package/dist/server/core/runs/eligibility.js +44 -0
- package/dist/server/core/runs/eligibility.js.map +1 -0
- package/dist/server/core/runs/execution-view.d.ts +10 -0
- package/dist/server/core/runs/execution-view.d.ts.map +1 -0
- package/dist/server/core/runs/execution-view.js +25 -0
- package/dist/server/core/runs/execution-view.js.map +1 -0
- package/dist/server/core/runs/execution.d.ts +13 -0
- package/dist/server/core/runs/execution.d.ts.map +1 -0
- package/dist/server/core/runs/execution.js +85 -0
- package/dist/server/core/runs/execution.js.map +1 -0
- package/dist/server/core/runs/extensions.d.ts +59 -4
- package/dist/server/core/runs/extensions.d.ts.map +1 -1
- package/dist/server/core/runs/extensions.js +45 -9
- package/dist/server/core/runs/extensions.js.map +1 -1
- package/dist/server/core/runs/git-credentials.d.ts +43 -0
- package/dist/server/core/runs/git-credentials.d.ts.map +1 -0
- package/dist/server/core/runs/git-credentials.js +129 -0
- package/dist/server/core/runs/git-credentials.js.map +1 -0
- package/dist/server/core/runs/identity.d.ts +6 -0
- package/dist/server/core/runs/identity.d.ts.map +1 -0
- package/dist/server/core/runs/identity.js +49 -0
- package/dist/server/core/runs/identity.js.map +1 -0
- package/dist/server/core/runs/index.d.ts +9 -5
- package/dist/server/core/runs/index.d.ts.map +1 -1
- package/dist/server/core/runs/index.js +9 -5
- package/dist/server/core/runs/index.js.map +1 -1
- package/dist/server/core/runs/input-gate.d.ts +34 -0
- package/dist/server/core/runs/input-gate.d.ts.map +1 -0
- package/dist/server/core/runs/input-gate.js +54 -0
- package/dist/server/core/runs/input-gate.js.map +1 -0
- package/dist/server/core/runs/lifecycle.d.ts +9 -19
- package/dist/server/core/runs/lifecycle.d.ts.map +1 -1
- package/dist/server/core/runs/lifecycle.js +76 -34
- package/dist/server/core/runs/lifecycle.js.map +1 -1
- package/dist/server/core/runs/policy.d.ts +8 -0
- package/dist/server/core/runs/policy.d.ts.map +1 -1
- package/dist/server/core/runs/policy.js +10 -0
- package/dist/server/core/runs/policy.js.map +1 -1
- package/dist/server/core/runs/ports.d.ts +84 -28
- package/dist/server/core/runs/ports.d.ts.map +1 -1
- package/dist/server/core/runs/ports.js +2 -13
- package/dist/server/core/runs/ports.js.map +1 -1
- package/dist/server/core/runs/preview.d.ts.map +1 -1
- package/dist/server/core/runs/preview.js +3 -3
- package/dist/server/core/runs/preview.js.map +1 -1
- package/dist/server/core/runs/run-requests.d.ts +220 -0
- package/dist/server/core/runs/run-requests.d.ts.map +1 -0
- package/dist/server/core/runs/run-requests.js +475 -0
- package/dist/server/core/runs/run-requests.js.map +1 -0
- package/dist/server/core/runs/run.service.d.ts +84 -11
- package/dist/server/core/runs/run.service.d.ts.map +1 -1
- package/dist/server/core/runs/run.service.js +433 -93
- package/dist/server/core/runs/run.service.js.map +1 -1
- package/dist/server/core/runs/run.store.d.ts +20 -3
- package/dist/server/core/runs/run.store.d.ts.map +1 -1
- package/dist/server/core/runs/run.store.js +49 -2
- package/dist/server/core/runs/run.store.js.map +1 -1
- package/dist/server/core/runs/runner-view.d.ts +6 -4
- package/dist/server/core/runs/runner-view.d.ts.map +1 -1
- package/dist/server/core/runs/runner-view.js +13 -11
- package/dist/server/core/runs/runner-view.js.map +1 -1
- package/dist/server/core/runs/selection.d.ts +13 -0
- package/dist/server/core/runs/selection.d.ts.map +1 -0
- package/dist/server/core/runs/selection.js +21 -0
- package/dist/server/core/runs/selection.js.map +1 -0
- package/dist/server/core/runs/sweeper.d.ts.map +1 -1
- package/dist/server/core/runs/sweeper.js +54 -10
- package/dist/server/core/runs/sweeper.js.map +1 -1
- package/dist/server/core/runs/transitions.d.ts +1 -1
- package/dist/server/core/runs/transitions.d.ts.map +1 -1
- package/dist/server/core/runs/transitions.js +69 -5
- package/dist/server/core/runs/transitions.js.map +1 -1
- package/dist/server/core/runs/workload.d.ts +3 -3
- package/dist/server/core/runs/workload.d.ts.map +1 -1
- package/dist/server/core/runs/workload.js +154 -45
- package/dist/server/core/runs/workload.js.map +1 -1
- package/dist/server/core/variables/index.d.ts +1 -1
- package/dist/server/core/variables/index.d.ts.map +1 -1
- package/dist/server/core/variables/index.js +1 -1
- package/dist/server/core/variables/index.js.map +1 -1
- package/dist/server/core/variables/variable.service.d.ts +38 -6
- package/dist/server/core/variables/variable.service.d.ts.map +1 -1
- package/dist/server/core/variables/variable.service.js +201 -30
- package/dist/server/core/variables/variable.service.js.map +1 -1
- package/dist/server/distribution/dist.service.d.ts +27 -5
- package/dist/server/distribution/dist.service.d.ts.map +1 -1
- package/dist/server/distribution/dist.service.js +41 -5
- package/dist/server/distribution/dist.service.js.map +1 -1
- package/dist/server/distribution/download-tokens.d.ts +1 -1
- package/dist/server/distribution/download-tokens.d.ts.map +1 -1
- package/dist/server/distribution/download-tokens.js +7 -4
- package/dist/server/distribution/download-tokens.js.map +1 -1
- package/dist/server/distribution/index.d.ts +11 -3
- package/dist/server/distribution/index.d.ts.map +1 -1
- package/dist/server/distribution/index.js +31 -8
- package/dist/server/distribution/index.js.map +1 -1
- package/dist/server/jobs/index.d.ts +1 -1
- package/dist/server/jobs/index.d.ts.map +1 -1
- package/dist/server/jobs/index.js +1 -1
- package/dist/server/jobs/index.js.map +1 -1
- package/dist/server/jobs/job.service.d.ts +3 -1
- package/dist/server/jobs/job.service.d.ts.map +1 -1
- package/dist/server/jobs/job.service.js +11 -3
- package/dist/server/jobs/job.service.js.map +1 -1
- package/dist/server/jobs/spec.d.ts +4 -0
- package/dist/server/jobs/spec.d.ts.map +1 -1
- package/dist/server/jobs/spec.js +6 -0
- package/dist/server/jobs/spec.js.map +1 -1
- package/dist/server/kernel/errors.d.ts +1 -1
- package/dist/server/kernel/errors.d.ts.map +1 -1
- package/dist/server/kernel/errors.js +1 -0
- package/dist/server/kernel/errors.js.map +1 -1
- package/dist/server/kernel/events.d.ts +34 -9
- package/dist/server/kernel/events.d.ts.map +1 -1
- package/dist/server/kernel/events.js.map +1 -1
- package/dist/server/kernel/redaction.d.ts +2 -0
- package/dist/server/kernel/redaction.d.ts.map +1 -1
- package/dist/server/kernel/redaction.js +17 -0
- package/dist/server/kernel/redaction.js.map +1 -1
- package/dist/server/online/index.d.ts +0 -5
- package/dist/server/online/index.d.ts.map +1 -1
- package/dist/server/online/index.js +0 -5
- package/dist/server/online/index.js.map +1 -1
- package/dist/server/online/routes.d.ts.map +1 -1
- package/dist/server/online/routes.js +6 -35
- package/dist/server/online/routes.js.map +1 -1
- package/dist/server/providers/agents.d.ts +4 -25
- package/dist/server/providers/agents.d.ts.map +1 -1
- package/dist/server/providers/agents.js +8 -75
- package/dist/server/providers/agents.js.map +1 -1
- package/dist/server/routes/admin.d.ts.map +1 -1
- package/dist/server/routes/admin.js +140 -201
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/chat.d.ts.map +1 -1
- package/dist/server/routes/chat.js +12 -70
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/index.d.ts.map +1 -1
- package/dist/server/routes/index.js +11 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/roster.d.ts.map +1 -1
- package/dist/server/routes/roster.js +6 -21
- package/dist/server/routes/roster.js.map +1 -1
- package/dist/server/routes/run-requests.d.ts +6 -0
- package/dist/server/routes/run-requests.d.ts.map +1 -0
- package/dist/server/routes/run-requests.js +216 -0
- package/dist/server/routes/run-requests.js.map +1 -0
- package/dist/server/routes/runners/admin.d.ts +9 -1
- package/dist/server/routes/runners/admin.d.ts.map +1 -1
- package/dist/server/routes/runners/admin.js +62 -24
- package/dist/server/routes/runners/admin.js.map +1 -1
- package/dist/server/routes/runners/dist.d.ts +5 -1
- package/dist/server/routes/runners/dist.d.ts.map +1 -1
- package/dist/server/routes/runners/dist.js +36 -9
- package/dist/server/routes/runners/dist.js.map +1 -1
- package/dist/server/routes/runners/install.d.ts.map +1 -1
- package/dist/server/routes/runners/install.js +98 -15
- package/dist/server/routes/runners/install.js.map +1 -1
- package/dist/server/routes/runners/runner.d.ts.map +1 -1
- package/dist/server/routes/runners/runner.js +25 -7
- package/dist/server/routes/runners/runner.js.map +1 -1
- package/dist/server/routes/runners/runs.d.ts +1 -1
- package/dist/server/routes/runners/runs.d.ts.map +1 -1
- package/dist/server/routes/runners/runs.js +23 -3
- package/dist/server/routes/runners/runs.js.map +1 -1
- package/dist/server/routes/schemas.d.ts +37 -8
- package/dist/server/routes/schemas.d.ts.map +1 -1
- package/dist/server/routes/schemas.js +367 -82
- package/dist/server/routes/schemas.js.map +1 -1
- package/dist/server/runners/index.d.ts +1 -0
- package/dist/server/runners/index.d.ts.map +1 -1
- package/dist/server/runners/index.js +1 -0
- package/dist/server/runners/index.js.map +1 -1
- package/dist/server/runners/runner.service.d.ts +22 -8
- package/dist/server/runners/runner.service.d.ts.map +1 -1
- package/dist/server/runners/runner.service.js +112 -14
- package/dist/server/runners/runner.service.js.map +1 -1
- package/dist/server/runners/runner.store.d.ts +10 -1
- package/dist/server/runners/runner.store.d.ts.map +1 -1
- package/dist/server/runners/runner.store.js +117 -4
- package/dist/server/runners/runner.store.js.map +1 -1
- package/dist/server/runners/sweeper.d.ts +5 -0
- package/dist/server/runners/sweeper.d.ts.map +1 -1
- package/dist/server/runners/sweeper.js +4 -2
- package/dist/server/runners/sweeper.js.map +1 -1
- package/dist/server/runners/workspaces.d.ts +33 -0
- package/dist/server/runners/workspaces.d.ts.map +1 -0
- package/dist/server/runners/workspaces.js +248 -0
- package/dist/server/runners/workspaces.js.map +1 -0
- package/dist/server/testing.d.ts +0 -2
- package/dist/server/testing.d.ts.map +1 -1
- package/dist/server/testing.js +1 -4
- package/dist/server/testing.js.map +1 -1
- package/dist/server/tokens.d.ts +12 -9
- package/dist/server/tokens.d.ts.map +1 -1
- package/dist/server/tokens.js +6 -2
- package/dist/server/tokens.js.map +1 -1
- package/dist/shared/access.d.ts +2 -6
- package/dist/shared/access.d.ts.map +1 -1
- package/dist/shared/access.js +2 -6
- package/dist/shared/access.js.map +1 -1
- package/dist/shared/agents.d.ts +128 -165
- package/dist/shared/agents.d.ts.map +1 -1
- package/dist/shared/agents.js +46 -97
- package/dist/shared/agents.js.map +1 -1
- package/dist/shared/conversations.d.ts +43 -89
- package/dist/shared/conversations.d.ts.map +1 -1
- package/dist/shared/conversations.js +5 -24
- package/dist/shared/conversations.js.map +1 -1
- package/dist/shared/model-catalog.d.ts +48 -0
- package/dist/shared/model-catalog.d.ts.map +1 -0
- package/dist/shared/model-catalog.js +148 -0
- package/dist/shared/model-catalog.js.map +1 -0
- package/dist/shared/models.js +1 -1
- package/dist/shared/models.js.map +1 -1
- package/dist/shared/runners.d.ts +107 -17
- package/dist/shared/runners.d.ts.map +1 -1
- package/dist/shared/runners.js +49 -7
- package/dist/shared/runners.js.map +1 -1
- package/dist/shared/runs.d.ts +203 -1
- package/dist/shared/runs.d.ts.map +1 -1
- package/dist/shared/runs.js +24 -0
- package/dist/shared/runs.js.map +1 -1
- package/dist/shared/variables.d.ts +22 -0
- package/dist/shared/variables.d.ts.map +1 -1
- package/dist/shared/variables.js +9 -1
- package/dist/shared/variables.js.map +1 -1
- package/package.json +24 -26
- package/skills/nocobase-app-plugin-agents/SKILL.md +8 -7
- package/skills/nocobase-app-plugin-agents/references/agents.md +30 -0
- package/skills/nocobase-app-plugin-agents/references/distribution.md +21 -4
- package/skills/nocobase-app-plugin-agents/references/extension-points.md +30 -20
- package/skills/nocobase-app-plugin-agents/references/model-services.md +17 -0
- package/skills/nocobase-app-plugin-agents/references/runners.md +15 -1
- package/skills/nocobase-app-plugin-agents/references/setup-and-config.md +4 -7
- package/skills/nocobase-app-plugin-agents/references/variables-skills-usage.md +4 -4
- package/skills/nocobase-app-plugin-agents/references/verification-and-troubleshooting.md +33 -32
- package/dist/client/chat/settings-section.d.ts +0 -5
- package/dist/client/chat/settings-section.d.ts.map +0 -1
- package/dist/client/chat/settings-section.js +0 -76
- package/dist/client/chat/settings-section.js.map +0 -1
- package/dist/client/components/agent-fields.d.ts +0 -45
- package/dist/client/components/agent-fields.d.ts.map +0 -1
- package/dist/client/components/agent-fields.js +0 -83
- package/dist/client/components/agent-fields.js.map +0 -1
- package/dist/client/components/agent-type.d.ts +0 -32
- package/dist/client/components/agent-type.d.ts.map +0 -1
- package/dist/client/components/agent-type.js +0 -80
- package/dist/client/components/agent-type.js.map +0 -1
- package/dist/client/components/model-entries.d.ts +0 -35
- package/dist/client/components/model-entries.d.ts.map +0 -1
- package/dist/client/components/model-entries.js +0 -82
- package/dist/client/components/model-entries.js.map +0 -1
- package/dist/client/hooks/use-agent-save.d.ts +0 -9
- package/dist/client/hooks/use-agent-save.d.ts.map +0 -1
- package/dist/client/hooks/use-agent-save.js +0 -40
- package/dist/client/hooks/use-agent-save.js.map +0 -1
- package/dist/client/hooks/use-model-catalog.d.ts +0 -9
- package/dist/client/hooks/use-model-catalog.d.ts.map +0 -1
- package/dist/client/hooks/use-model-catalog.js +0 -27
- package/dist/client/hooks/use-model-catalog.js.map +0 -1
- package/dist/client/lib/tool-policy.d.ts +0 -5
- package/dist/client/lib/tool-policy.d.ts.map +0 -1
- package/dist/client/lib/tool-policy.js +0 -10
- package/dist/client/lib/tool-policy.js.map +0 -1
- package/dist/client/online/default-model.d.ts +0 -5
- package/dist/client/online/default-model.d.ts.map +0 -1
- package/dist/client/online/default-model.js +0 -65
- package/dist/client/online/default-model.js.map +0 -1
- package/dist/client/pages/agents/agent-model.d.ts +0 -73
- package/dist/client/pages/agents/agent-model.d.ts.map +0 -1
- package/dist/client/pages/agents/agent-model.js +0 -172
- package/dist/client/pages/agents/agent-model.js.map +0 -1
- package/dist/client/pages/agents/detail/brief-preview.d.ts +0 -7
- package/dist/client/pages/agents/detail/brief-preview.d.ts.map +0 -1
- package/dist/client/pages/agents/detail/brief-preview.js +0 -43
- package/dist/client/pages/agents/detail/brief-preview.js.map +0 -1
- package/dist/client/pages/agents/detail/history.d.ts +0 -11
- package/dist/client/pages/agents/detail/history.d.ts.map +0 -1
- package/dist/client/pages/agents/detail/history.js +0 -149
- package/dist/client/pages/agents/detail/history.js.map +0 -1
- package/dist/client/pages/agents/detail/index.d.ts +0 -3
- package/dist/client/pages/agents/detail/index.d.ts.map +0 -1
- package/dist/client/pages/agents/detail/index.js +0 -241
- package/dist/client/pages/agents/detail/index.js.map +0 -1
- package/dist/client/pages/agents/detail/sections.d.ts +0 -22
- package/dist/client/pages/agents/detail/sections.d.ts.map +0 -1
- package/dist/client/pages/agents/detail/sections.js +0 -311
- package/dist/client/pages/agents/detail/sections.js.map +0 -1
- package/dist/client/pages/agents/detail/tab-draft.d.ts +0 -43
- package/dist/client/pages/agents/detail/tab-draft.d.ts.map +0 -1
- package/dist/client/pages/agents/detail/tab-draft.js +0 -115
- package/dist/client/pages/agents/detail/tab-draft.js.map +0 -1
- package/dist/client/pages/agents/detail/unsaved-bar.d.ts +0 -13
- package/dist/client/pages/agents/detail/unsaved-bar.d.ts.map +0 -1
- package/dist/client/pages/agents/detail/unsaved-bar.js +0 -21
- package/dist/client/pages/agents/detail/unsaved-bar.js.map +0 -1
- package/dist/client/pages/agents/new.d.ts +0 -3
- package/dist/client/pages/agents/new.d.ts.map +0 -1
- package/dist/client/pages/agents/new.js +0 -149
- package/dist/client/pages/agents/new.js.map +0 -1
- package/dist/client/pages/agents/preset-picker.d.ts +0 -8
- package/dist/client/pages/agents/preset-picker.d.ts.map +0 -1
- package/dist/client/pages/agents/preset-picker.js +0 -41
- package/dist/client/pages/agents/preset-picker.js.map +0 -1
- package/dist/server/core/consultations/consultation.service.d.ts +0 -59
- package/dist/server/core/consultations/consultation.service.d.ts.map +0 -1
- package/dist/server/core/consultations/consultation.service.js +0 -195
- package/dist/server/core/consultations/consultation.service.js.map +0 -1
- package/dist/server/core/consultations/index.d.ts +0 -3
- package/dist/server/core/consultations/index.d.ts.map +0 -1
- package/dist/server/core/consultations/index.js +0 -3
- package/dist/server/core/consultations/index.js.map +0 -1
- package/dist/server/core/consultations/prompt.d.ts +0 -41
- package/dist/server/core/consultations/prompt.d.ts.map +0 -1
- package/dist/server/core/consultations/prompt.js +0 -64
- package/dist/server/core/consultations/prompt.js.map +0 -1
- package/dist/server/core/presets/index.d.ts +0 -19
- package/dist/server/core/presets/index.d.ts.map +0 -1
- package/dist/server/core/presets/index.js +0 -28
- package/dist/server/core/presets/index.js.map +0 -1
- package/dist/server/online/cli-command.d.ts +0 -20
- package/dist/server/online/cli-command.d.ts.map +0 -1
- package/dist/server/online/cli-command.js +0 -345
- package/dist/server/online/cli-command.js.map +0 -1
- package/dist/server/online/consult-tool.d.ts +0 -54
- package/dist/server/online/consult-tool.d.ts.map +0 -1
- package/dist/server/online/consult-tool.js +0 -177
- package/dist/server/online/consult-tool.js.map +0 -1
- package/dist/server/online/executor.d.ts +0 -83
- package/dist/server/online/executor.d.ts.map +0 -1
- package/dist/server/online/executor.js +0 -714
- package/dist/server/online/executor.js.map +0 -1
- package/dist/server/online/sandbox.d.ts +0 -32
- package/dist/server/online/sandbox.d.ts.map +0 -1
- package/dist/server/online/sandbox.js +0 -246
- package/dist/server/online/sandbox.js.map +0 -1
- package/dist/server/online/scripted.d.ts +0 -12
- package/dist/server/online/scripted.d.ts.map +0 -1
- package/dist/server/online/scripted.js +0 -176
- package/dist/server/online/scripted.js.map +0 -1
- package/dist/server/online/tools.d.ts +0 -17
- package/dist/server/online/tools.d.ts.map +0 -1
- package/dist/server/online/tools.js +0 -31
- package/dist/server/online/tools.js.map +0 -1
- package/dist/server/vendor/THIRD_PARTY_LICENSES.txt +0 -782
- package/dist/server/vendor/just-bash.d.ts +0 -83
- package/dist/server/vendor/just-bash.js +0 -2102
- package/dist/shared/presets.d.ts +0 -30
- package/dist/shared/presets.d.ts.map +0 -1
- package/dist/shared/presets.js +0 -2
- package/dist/shared/presets.js.map +0 -1
- package/skills/nocobase-app-plugin-agents/references/online-agents.md +0 -31
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { CONVERSATION_HISTORY_IN_PROMPT, CONVERSATION_PAGE_DEFAULT, CONVERSATION_PAGE_MAX, CONVERSATION_SOURCE_PATTERN, CONVERSATION_SUBJECT, CONVERSATION_TITLE_AGENT_MAX, CONVERSATION_TITLE_AUTO_CHARS, CONVERSATION_TITLE_MAX, MESSAGE_CONTENT_MAX, MESSAGE_PAGE_DEFAULT, MESSAGE_PAGE_MAX, } from '../../../shared/conversations.js';
|
|
2
|
+
import { runnerTakesAgent } from '../../../shared/runners.js';
|
|
3
3
|
import { CONSULT_MAX_DEPTH } from '../../../shared/runs.js';
|
|
4
4
|
import { ACCESS_NAMESPACE } from '../../../shared/access.js';
|
|
5
5
|
import { sampleValue } from '../../../shared/briefs.js';
|
|
6
6
|
import { forbidden, invalid, notFound, ProtocolError, } from '../../kernel/errors.js';
|
|
7
7
|
import { asJson } from '../../kernel/values.js';
|
|
8
8
|
import { findAgent } from '../agents/index.js';
|
|
9
|
-
import {
|
|
9
|
+
import { agentNamesOf } from '../agents/agent.store.js';
|
|
10
|
+
import { eventsAfter, hasSession, lastSummary, openRunsOnEach, queuedRun, } from '../runs/index.js';
|
|
10
11
|
import { findRunRecord, toRun } from '../runs/run.store.js';
|
|
11
12
|
import { readAttachmentIds, storedAttachments, } from './attachments.js';
|
|
12
13
|
import { availabilityOf, wakeable } from './availability.js';
|
|
@@ -76,6 +77,10 @@ function noticeText(notice, names) {
|
|
|
76
77
|
switch (notice.code) {
|
|
77
78
|
case 'switchedToDefault':
|
|
78
79
|
return `This conversation now uses ${name(notice.agentId)}, the default agent, until you switch back to ${name(notice.fromAgentId)}.`;
|
|
80
|
+
case 'switchedToOnline':
|
|
81
|
+
return `${name(notice.fromAgentId)} has no runner for you now, so ${name(notice.agentId)} answers until you switch back.`;
|
|
82
|
+
case 'onlineFallbackUnavailable':
|
|
83
|
+
return `The online fallback agent cannot answer (${notice.reason}). This conversation stays with ${name(notice.fromAgentId)} while it waits for a runner.`;
|
|
79
84
|
case 'switchedBack':
|
|
80
85
|
return `This conversation is back with ${name(notice.agentId)}.`;
|
|
81
86
|
case 'runFailed':
|
|
@@ -125,7 +130,7 @@ export function createConversationService(deps) {
|
|
|
125
130
|
name: agent?.name ?? null,
|
|
126
131
|
nameText: agent?.nameText ?? null,
|
|
127
132
|
avatar: agent?.avatar ?? null,
|
|
128
|
-
archived:
|
|
133
|
+
archived: agent ? agent.status !== 'enabled' : false,
|
|
129
134
|
};
|
|
130
135
|
}
|
|
131
136
|
function runRef(runs) {
|
|
@@ -134,29 +139,7 @@ export function createConversationService(deps) {
|
|
|
134
139
|
? { id: run.id, status: run.status, acceptsInput: run.acceptsInput }
|
|
135
140
|
: null;
|
|
136
141
|
}
|
|
137
|
-
|
|
138
|
-
function chosenModel(record) {
|
|
139
|
-
return record.modelService && record.model
|
|
140
|
-
? { modelService: record.modelService, model: record.model }
|
|
141
|
-
: undefined;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* The entry an online conversation answers with now (the system default chat model, `defaultModel`, for an agent
|
|
145
|
-
* that lists none); null for a runner one or a missing agent.
|
|
146
|
-
*/
|
|
147
|
-
function modelOf(record, agent, defaultModel) {
|
|
148
|
-
if (record.mode !== 'online' || !agent)
|
|
149
|
-
return null;
|
|
150
|
-
return onlineEntryOf(agent, chosenModel(record), defaultModel);
|
|
151
|
-
}
|
|
152
|
-
async function summaries(conn, records,
|
|
153
|
-
/** The system default chat model, when the caller has read it; read here when an online one needs it. */
|
|
154
|
-
known) {
|
|
155
|
-
const defaultModel = known !== undefined
|
|
156
|
-
? known
|
|
157
|
-
: records.some((record) => record.mode === 'online')
|
|
158
|
-
? ((await deps.models.catalog()).defaultModel ?? null)
|
|
159
|
-
: null;
|
|
142
|
+
async function summaries(conn, records) {
|
|
160
143
|
const agents = new Map();
|
|
161
144
|
for (const record of records)
|
|
162
145
|
for (const id of [record.agentId, record.fallbackFromAgentId])
|
|
@@ -174,7 +157,6 @@ export function createConversationService(deps) {
|
|
|
174
157
|
fallbackFrom: record.fallbackFromAgentId
|
|
175
158
|
? agentRef(record.fallbackFromAgentId, agents.get(record.fallbackFromAgentId) ?? null)
|
|
176
159
|
: null,
|
|
177
|
-
model: modelOf(record, agents.get(record.agentId) ?? null, defaultModel),
|
|
178
160
|
read: Boolean(record.read),
|
|
179
161
|
lastMessageAt: record.lastMessageAt,
|
|
180
162
|
archivedAt: record.archivedAt,
|
|
@@ -190,25 +172,49 @@ export function createConversationService(deps) {
|
|
|
190
172
|
const agent = await findAgent(conn, defaultAgentId);
|
|
191
173
|
return wakeable(agent, userId, deps.agents.mayInvoke) ? agent : null;
|
|
192
174
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
175
|
+
/** Reads the same features and variable restrictions as claim, before any write transaction. */
|
|
176
|
+
async function availabilityFor(conn, agent, userId, runners) {
|
|
177
|
+
if (!wakeable(agent, userId, deps.agents.mayInvoke))
|
|
178
|
+
return availabilityOf(agent, userId, deps.agents.mayInvoke, 0);
|
|
179
|
+
const online = runners ??
|
|
180
|
+
(await deps.runners.list()).filter((runner) => runner.status === 'online');
|
|
181
|
+
const eligible = await deps.eligibility.runnersFor(conn, agent, {
|
|
182
|
+
actorUserId: userId,
|
|
183
|
+
runners: online,
|
|
184
|
+
});
|
|
185
|
+
return availabilityOf(agent, userId, deps.agents.mayInvoke, eligible.length, online.some((runner) => runnerTakesAgent(runner, agent)));
|
|
186
|
+
}
|
|
187
|
+
async function canAnswer(conn, agent, userId) {
|
|
188
|
+
if (!wakeable(agent, userId, deps.agents.mayInvoke))
|
|
189
|
+
return false;
|
|
190
|
+
return deps.eligibility.canClaim(conn, agent, { actorUserId: userId });
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* The agent `fallback` switches the conversation to: the system default when it can answer. Null while the
|
|
194
|
+
* conversation already uses another agent in place of its own.
|
|
195
|
+
*/
|
|
196
|
+
async function fallbackTarget(conn, record) {
|
|
197
|
+
if (record.fallbackFromAgentId)
|
|
198
|
+
return null;
|
|
199
|
+
const system = await systemDefault(conn, record.userId);
|
|
200
|
+
if (system &&
|
|
201
|
+
system.id !== record.agentId &&
|
|
202
|
+
(await canAnswer(conn, system, record.userId)))
|
|
203
|
+
return system;
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
async function detailOf(conn, record) {
|
|
207
|
+
const [summary] = await summaries(conn, [record]);
|
|
196
208
|
const agent = await findAgent(conn, record.agentId);
|
|
197
209
|
const fallbackFrom = record.fallbackFromAgentId
|
|
198
210
|
? await findAgent(conn, record.fallbackFromAgentId)
|
|
199
211
|
: null;
|
|
200
|
-
const
|
|
212
|
+
const target = await fallbackTarget(conn, record);
|
|
201
213
|
return {
|
|
202
214
|
...summary,
|
|
203
|
-
availability:
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
: [],
|
|
207
|
-
canFallback: Boolean(system &&
|
|
208
|
-
!record.fallbackFromAgentId &&
|
|
209
|
-
system.id !== record.agentId &&
|
|
210
|
-
system.type === record.mode),
|
|
211
|
-
canRestore: wakeable(fallbackFrom, record.userId, deps.agents.mayInvoke),
|
|
215
|
+
availability: await availabilityFor(conn, agent, record.userId),
|
|
216
|
+
canFallback: Boolean(target),
|
|
217
|
+
canRestore: await canAnswer(conn, fallbackFrom, record.userId),
|
|
212
218
|
};
|
|
213
219
|
}
|
|
214
220
|
async function detail(userId, id) {
|
|
@@ -232,9 +238,13 @@ export function createConversationService(deps) {
|
|
|
232
238
|
return appended;
|
|
233
239
|
}
|
|
234
240
|
async function notice(unit, record, value, runId = null) {
|
|
235
|
-
const agentIds = value.code === 'switchedToDefault' ||
|
|
241
|
+
const agentIds = value.code === 'switchedToDefault' ||
|
|
242
|
+
value.code === 'switchedToOnline' ||
|
|
243
|
+
value.code === 'switchedBack'
|
|
236
244
|
? [value.agentId, value.fromAgentId]
|
|
237
|
-
:
|
|
245
|
+
: value.code === 'onlineFallbackUnavailable'
|
|
246
|
+
? [value.fromAgentId]
|
|
247
|
+
: [];
|
|
238
248
|
const names = new Map();
|
|
239
249
|
for (const id of agentIds) {
|
|
240
250
|
const agent = await findAgent(unit.conn, id);
|
|
@@ -272,7 +282,7 @@ export function createConversationService(deps) {
|
|
|
272
282
|
let result = null;
|
|
273
283
|
for (const message of messages) {
|
|
274
284
|
const files = storedAttachments(message.attachments);
|
|
275
|
-
const enqueued = await deps.runs.enqueue({
|
|
285
|
+
const enqueued = queuedRun(await deps.runs.enqueue({
|
|
276
286
|
agentId: agent.id,
|
|
277
287
|
subject: subjectOf(record.id),
|
|
278
288
|
threadScope: threadScopeOf(record),
|
|
@@ -287,28 +297,30 @@ export function createConversationService(deps) {
|
|
|
287
297
|
conversationId: record.id,
|
|
288
298
|
messageId: message.id,
|
|
289
299
|
seq: Number(message.seq),
|
|
290
|
-
// An online agent's executor shows the images among them to its model.
|
|
291
300
|
...(files.length > 0
|
|
292
301
|
? { attachmentIds: files.map((file) => file.id) }
|
|
293
302
|
: {}),
|
|
294
303
|
},
|
|
295
304
|
},
|
|
296
|
-
}, unit);
|
|
305
|
+
}, unit));
|
|
297
306
|
await updateMessageRun(unit.conn, message, enqueued.runId, { inputId: enqueued.inputId }, now());
|
|
298
307
|
result = { id: enqueued.runId, outcome: enqueued.outcome };
|
|
299
308
|
}
|
|
300
309
|
return result;
|
|
301
310
|
}
|
|
302
311
|
/**
|
|
303
|
-
* Moves the conversation to `
|
|
312
|
+
* Moves the conversation to `agent`: its queued work is withdrawn, the thread moves on (a new session), and the
|
|
304
313
|
* messages nobody answered go to the new agent.
|
|
305
314
|
*/
|
|
306
|
-
async function rebind(unit, record,
|
|
315
|
+
async function rebind(unit, record, agent, fallbackFromAgentId, value) {
|
|
307
316
|
const withdrawn = await deps.runs.withdrawQueued({ subject: subjectOf(record.id), byUserId: record.userId }, unit);
|
|
308
317
|
await conversationsRepo(unit.conn).updateMany({
|
|
309
318
|
filter: { id: record.id },
|
|
310
319
|
values: {
|
|
311
|
-
agentId,
|
|
320
|
+
agentId: agent.id,
|
|
321
|
+
mode: 'runner',
|
|
322
|
+
modelService: null,
|
|
323
|
+
model: null,
|
|
312
324
|
fallbackFromAgentId,
|
|
313
325
|
thread: Number(record.thread) + 1,
|
|
314
326
|
updatedAt: now(),
|
|
@@ -365,13 +377,6 @@ export function createConversationService(deps) {
|
|
|
365
377
|
agentId: run.agentId,
|
|
366
378
|
runEventSeq: Number(event.seq),
|
|
367
379
|
};
|
|
368
|
-
// An online agent's draft of this text becomes the final message, where the person watched it grow.
|
|
369
|
-
const draft = await findDraft(unit.conn, record.id, run.id);
|
|
370
|
-
if (draft) {
|
|
371
|
-
await rewriteMessage(unit.conn, draft, { text, metadata, runEventSeq: Number(event.seq) }, now());
|
|
372
|
-
changed(unit, record, Number(draft.seq));
|
|
373
|
-
continue;
|
|
374
|
-
}
|
|
375
380
|
await append(unit, record, {
|
|
376
381
|
role: 'assistant',
|
|
377
382
|
text,
|
|
@@ -394,7 +399,7 @@ export function createConversationService(deps) {
|
|
|
394
399
|
// The run subject
|
|
395
400
|
// -------------------------------------------------------------------------------------------------------------------
|
|
396
401
|
/** A run's assembly in `conversation`, as its owner (`ownerName`) left it: `history` the messages before its inputs. */
|
|
397
|
-
async function conversationAssembly(conn, claim, conversation, ownerName, history, previousSummary
|
|
402
|
+
async function conversationAssembly(conn, claim, conversation, ownerName, history, previousSummary) {
|
|
398
403
|
const key = conversationKey(conversation.id);
|
|
399
404
|
const added = await Promise.all(rules.map((source) => source(conn, {
|
|
400
405
|
conversation: {
|
|
@@ -407,7 +412,6 @@ export function createConversationService(deps) {
|
|
|
407
412
|
agent: claim.agent,
|
|
408
413
|
ownerName,
|
|
409
414
|
cli: claim.cli,
|
|
410
|
-
dialect: claim.dialect,
|
|
411
415
|
})));
|
|
412
416
|
return {
|
|
413
417
|
subject: {
|
|
@@ -422,7 +426,6 @@ export function createConversationService(deps) {
|
|
|
422
426
|
key,
|
|
423
427
|
cli: claim.cli,
|
|
424
428
|
appName: claim.appName,
|
|
425
|
-
dialect: claim.dialect,
|
|
426
429
|
rules: added.flatMap((lines) => lines.rules ?? []),
|
|
427
430
|
sections: added.flatMap((lines) => lines.sections ?? []),
|
|
428
431
|
}),
|
|
@@ -451,14 +454,11 @@ export function createConversationService(deps) {
|
|
|
451
454
|
},
|
|
452
455
|
dirs: [],
|
|
453
456
|
scopes: [],
|
|
454
|
-
...(chosen ? { model: chosen } : {}),
|
|
455
457
|
};
|
|
456
458
|
}
|
|
457
459
|
const binding = {
|
|
458
460
|
kind: CONVERSATION_SUBJECT,
|
|
459
461
|
private: true,
|
|
460
|
-
// A conversation needs no working directory: online agents answer in it as well as runner agents.
|
|
461
|
-
agentTypes: ['online', 'runner'],
|
|
462
462
|
title: { key: 'subjects.conversation', ns: ACCESS_NAMESPACE },
|
|
463
463
|
triggers: CONVERSATION_TRIGGERS,
|
|
464
464
|
// "Preview full prompt": a new conversation of the previewer's, with one message, both made up.
|
|
@@ -481,7 +481,7 @@ export function createConversationService(deps) {
|
|
|
481
481
|
title: sampleValue('This week'),
|
|
482
482
|
source: 'panel',
|
|
483
483
|
createdAt: claim.run.createdAt,
|
|
484
|
-
}, await nameOf(conn, claim.run.actorUserId ?? ''), [], null
|
|
484
|
+
}, await nameOf(conn, claim.run.actorUserId ?? ''), [], null);
|
|
485
485
|
},
|
|
486
486
|
},
|
|
487
487
|
context: {
|
|
@@ -542,7 +542,7 @@ export function createConversationService(deps) {
|
|
|
542
542
|
subjectId: record.id,
|
|
543
543
|
}, claim.run.id)
|
|
544
544
|
: null;
|
|
545
|
-
return conversationAssembly(conn, claim, { ...refOf(record), createdAt: record.createdAt }, ownerName, history, previousSummary
|
|
545
|
+
return conversationAssembly(conn, claim, { ...refOf(record), createdAt: record.createdAt }, ownerName, history, previousSummary);
|
|
546
546
|
},
|
|
547
547
|
},
|
|
548
548
|
sink: {
|
|
@@ -740,17 +740,8 @@ export function createConversationService(deps) {
|
|
|
740
740
|
};
|
|
741
741
|
},
|
|
742
742
|
async create(userId, request) {
|
|
743
|
-
const wanted = request.model ?? null;
|
|
744
|
-
// Read before the transaction, which a read on another connection would wait for.
|
|
745
|
-
const fallback = wanted
|
|
746
|
-
? ((await deps.models.catalog()).defaultModel ?? null)
|
|
747
|
-
: null;
|
|
748
743
|
const id = await tx.run(async (unit) => {
|
|
749
744
|
const agent = await pickAgent(unit.conn, userId, request.agentId);
|
|
750
|
-
if (wanted &&
|
|
751
|
-
(agent.type !== 'online' ||
|
|
752
|
-
!onlineEntriesOrDefault(agent, fallback).some((entry) => sameEntry(entry, wanted))))
|
|
753
|
-
throw invalid(`The agent does not list the model ${wanted.modelService} · ${wanted.model}.`, { reason: 'MODEL_NOT_LISTED' });
|
|
754
745
|
const title = request.title === undefined
|
|
755
746
|
? null
|
|
756
747
|
: titleFor(request.title, CONVERSATION_TITLE_MAX);
|
|
@@ -764,10 +755,10 @@ export function createConversationService(deps) {
|
|
|
764
755
|
id: conversationId,
|
|
765
756
|
userId,
|
|
766
757
|
agentId: agent.id,
|
|
767
|
-
mode:
|
|
758
|
+
mode: 'runner',
|
|
768
759
|
fallbackFromAgentId: null,
|
|
769
|
-
modelService:
|
|
770
|
-
model:
|
|
760
|
+
modelService: null,
|
|
761
|
+
model: null,
|
|
771
762
|
title,
|
|
772
763
|
titleSource: title ? 'user' : 'auto',
|
|
773
764
|
category: 'chat',
|
|
@@ -791,10 +782,6 @@ export function createConversationService(deps) {
|
|
|
791
782
|
},
|
|
792
783
|
get: detail,
|
|
793
784
|
async update(userId, id, patch) {
|
|
794
|
-
// Read before the transaction, which a read on another connection would wait for.
|
|
795
|
-
const fallback = patch.model !== undefined && patch.model !== null
|
|
796
|
-
? ((await deps.models.catalog()).defaultModel ?? null)
|
|
797
|
-
: null;
|
|
798
785
|
await tx.run(async (unit) => {
|
|
799
786
|
const record = await lockOwned(unit, userId, id);
|
|
800
787
|
const values = {};
|
|
@@ -806,18 +793,6 @@ export function createConversationService(deps) {
|
|
|
806
793
|
values.archivedAt = patch.archived
|
|
807
794
|
? (record.archivedAt ?? now())
|
|
808
795
|
: null;
|
|
809
|
-
if (patch.model !== undefined) {
|
|
810
|
-
const wanted = patch.model;
|
|
811
|
-
if (wanted !== null) {
|
|
812
|
-
const agent = await findAgent(unit.conn, record.agentId);
|
|
813
|
-
if (record.mode !== 'online' ||
|
|
814
|
-
!agent ||
|
|
815
|
-
!onlineEntriesOrDefault(agent, fallback).some((entry) => sameEntry(entry, wanted)))
|
|
816
|
-
throw invalid(`The agent does not list the model ${wanted.modelService} · ${wanted.model}.`, { reason: 'MODEL_NOT_LISTED' });
|
|
817
|
-
}
|
|
818
|
-
values.modelService = wanted?.modelService ?? null;
|
|
819
|
-
values.model = wanted?.model ?? null;
|
|
820
|
-
}
|
|
821
796
|
if (Object.keys(values).length === 0)
|
|
822
797
|
return;
|
|
823
798
|
await conversationsRepo(unit.conn).updateMany({
|
|
@@ -861,8 +836,51 @@ export function createConversationService(deps) {
|
|
|
861
836
|
hasMore = newest.length > limit;
|
|
862
837
|
rows = newest.slice(0, limit).reverse();
|
|
863
838
|
}
|
|
839
|
+
const items = rows.map((row) => viewOf(row));
|
|
840
|
+
const consultationRuns = items.flatMap((item) => item.metadata?.notice?.code === 'consultation' &&
|
|
841
|
+
!item.metadata?.notice.agentId &&
|
|
842
|
+
item.metadata?.notice.runId
|
|
843
|
+
? [item.metadata?.notice.runId]
|
|
844
|
+
: []);
|
|
845
|
+
const consultedRuns = consultationRuns.length
|
|
846
|
+
? await conn.query
|
|
847
|
+
.selectFrom('agRuns')
|
|
848
|
+
.select(['id', 'agentId'])
|
|
849
|
+
.where('id', 'in', consultationRuns)
|
|
850
|
+
.execute()
|
|
851
|
+
: [];
|
|
852
|
+
const runAgents = new Map(consultedRuns.map((run) => [String(run.id), String(run.agentId)]));
|
|
853
|
+
const ids = items.flatMap((item) => item.metadata?.notice?.code === 'consultation'
|
|
854
|
+
? [
|
|
855
|
+
item.metadata?.notice.agentId ??
|
|
856
|
+
(item.metadata?.notice.runId
|
|
857
|
+
? runAgents.get(item.metadata?.notice.runId)
|
|
858
|
+
: undefined),
|
|
859
|
+
].filter((id) => Boolean(id))
|
|
860
|
+
: []);
|
|
861
|
+
const names = await agentNamesOf(conn, ids);
|
|
864
862
|
return {
|
|
865
|
-
items:
|
|
863
|
+
items: items.map((item) => {
|
|
864
|
+
if (item.metadata?.notice?.code !== 'consultation')
|
|
865
|
+
return item;
|
|
866
|
+
const agentId = item.metadata?.notice.agentId ??
|
|
867
|
+
(item.metadata?.notice.runId
|
|
868
|
+
? (runAgents.get(item.metadata?.notice.runId) ?? null)
|
|
869
|
+
: null);
|
|
870
|
+
const name = agentId ? names.get(agentId) : undefined;
|
|
871
|
+
return {
|
|
872
|
+
...item,
|
|
873
|
+
metadata: {
|
|
874
|
+
...item.metadata,
|
|
875
|
+
notice: {
|
|
876
|
+
...item.metadata.notice,
|
|
877
|
+
agentId,
|
|
878
|
+
agentName: name ?? item.metadata.notice.agentName,
|
|
879
|
+
identitySnapshot: name === undefined,
|
|
880
|
+
},
|
|
881
|
+
},
|
|
882
|
+
};
|
|
883
|
+
}),
|
|
866
884
|
hasMore,
|
|
867
885
|
lastSeq: Number(current.lastSeq),
|
|
868
886
|
};
|
|
@@ -916,31 +934,44 @@ export function createConversationService(deps) {
|
|
|
916
934
|
return detail(userId, id);
|
|
917
935
|
},
|
|
918
936
|
async fallback(userId, id) {
|
|
937
|
+
const before = await owned(tx.read(), userId, id);
|
|
938
|
+
const target = await fallbackTarget(tx.read(), before);
|
|
919
939
|
await tx.run(async (unit) => {
|
|
920
940
|
const record = await lockOwned(unit, userId, id);
|
|
921
|
-
const
|
|
922
|
-
if (!
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
941
|
+
const current = target ? await findAgent(unit.conn, target.id) : null;
|
|
942
|
+
if (!target ||
|
|
943
|
+
!wakeable(current, userId, deps.agents.mayInvoke) ||
|
|
944
|
+
current.revision !== target.revision ||
|
|
945
|
+
record.agentId !== before.agentId ||
|
|
946
|
+
record.thread !== before.thread ||
|
|
947
|
+
record.fallbackFromAgentId !== before.fallbackFromAgentId)
|
|
948
|
+
throw conversationConflict('noFallback', 'This conversation cannot switch to another agent.');
|
|
949
|
+
await rebind(unit, record, current, record.agentId, {
|
|
928
950
|
code: 'switchedToDefault',
|
|
929
|
-
agentId:
|
|
951
|
+
agentId: target.id,
|
|
930
952
|
fromAgentId: record.agentId,
|
|
931
953
|
});
|
|
932
954
|
});
|
|
933
955
|
return detail(userId, id);
|
|
934
956
|
},
|
|
935
957
|
async restore(userId, id) {
|
|
958
|
+
const before = await owned(tx.read(), userId, id);
|
|
959
|
+
const own = before.fallbackFromAgentId
|
|
960
|
+
? await findAgent(tx.read(), before.fallbackFromAgentId)
|
|
961
|
+
: null;
|
|
962
|
+
const available = await canAnswer(tx.read(), own, userId);
|
|
936
963
|
await tx.run(async (unit) => {
|
|
937
964
|
const record = await lockOwned(unit, userId, id);
|
|
938
|
-
const
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
965
|
+
const current = own ? await findAgent(unit.conn, own.id) : null;
|
|
966
|
+
if (!own ||
|
|
967
|
+
!available ||
|
|
968
|
+
!wakeable(current, userId, deps.agents.mayInvoke) ||
|
|
969
|
+
current.revision !== own.revision ||
|
|
970
|
+
record.agentId !== before.agentId ||
|
|
971
|
+
record.thread !== before.thread ||
|
|
972
|
+
record.fallbackFromAgentId !== own.id)
|
|
942
973
|
throw conversationConflict('noRestore', 'This conversation cannot switch back to its own agent now.');
|
|
943
|
-
await rebind(unit, record,
|
|
974
|
+
await rebind(unit, record, current, null, {
|
|
944
975
|
code: 'switchedBack',
|
|
945
976
|
agentId: own.id,
|
|
946
977
|
fromAgentId: record.agentId,
|
|
@@ -994,41 +1025,6 @@ export function createConversationService(deps) {
|
|
|
994
1025
|
return null;
|
|
995
1026
|
return refOf(record);
|
|
996
1027
|
},
|
|
997
|
-
async consultation(run, card) {
|
|
998
|
-
if (run.subject.kind !== CONVERSATION_SUBJECT)
|
|
999
|
-
return;
|
|
1000
|
-
await tx.run(async (unit) => {
|
|
1001
|
-
const record = await lockConversation(unit.conn, run.subject.id, now());
|
|
1002
|
-
if (!record || record.userId !== run.actorUserId)
|
|
1003
|
-
return;
|
|
1004
|
-
const metadata = {
|
|
1005
|
-
notice: card,
|
|
1006
|
-
...(card.agentId ? { agentId: card.agentId } : {}),
|
|
1007
|
-
...(card.state === 'running' ? { streaming: true } : {}),
|
|
1008
|
-
};
|
|
1009
|
-
const existing = (await messagesRepo(unit.conn).findMany({
|
|
1010
|
-
filter: {
|
|
1011
|
-
conversationId: record.id,
|
|
1012
|
-
runId: run.id,
|
|
1013
|
-
role: 'system',
|
|
1014
|
-
},
|
|
1015
|
-
})).find((message) => {
|
|
1016
|
-
const notice = metadataOf(message).notice;
|
|
1017
|
-
return (notice?.code === 'consultation' && notice.callId === card.callId);
|
|
1018
|
-
});
|
|
1019
|
-
if (existing) {
|
|
1020
|
-
await rewriteMessage(unit.conn, existing, { text: noticeText(card, new Map()), metadata }, now());
|
|
1021
|
-
changed(unit, record, Number(existing.seq));
|
|
1022
|
-
return;
|
|
1023
|
-
}
|
|
1024
|
-
await append(unit, record, {
|
|
1025
|
-
role: 'system',
|
|
1026
|
-
text: noticeText(card, new Map()),
|
|
1027
|
-
metadata,
|
|
1028
|
-
runId: run.id,
|
|
1029
|
-
});
|
|
1030
|
-
});
|
|
1031
|
-
},
|
|
1032
1028
|
async deliver(outer, conversationId, news) {
|
|
1033
1029
|
const record = await lockConversation(outer.conn, conversationId, now());
|
|
1034
1030
|
if (!record)
|
|
@@ -1039,14 +1035,14 @@ export function createConversationService(deps) {
|
|
|
1039
1035
|
const agent = await findAgent(outer.conn, record.agentId);
|
|
1040
1036
|
if (!wakeable(agent, record.userId, deps.agents.mayInvoke))
|
|
1041
1037
|
return null;
|
|
1042
|
-
const enqueued = await deps.runs.enqueue({
|
|
1038
|
+
const enqueued = queuedRun(await deps.runs.enqueue({
|
|
1043
1039
|
agentId: agent.id,
|
|
1044
1040
|
subject: subjectOf(record.id),
|
|
1045
1041
|
threadScope: threadScopeOf(record),
|
|
1046
1042
|
actorUserId: record.userId,
|
|
1047
1043
|
ownerUserId: record.userId,
|
|
1048
1044
|
input: news.input,
|
|
1049
|
-
}, outer);
|
|
1045
|
+
}, outer));
|
|
1050
1046
|
return { id: enqueued.runId, outcome: enqueued.outcome };
|
|
1051
1047
|
},
|
|
1052
1048
|
lock: async (conn, id) => (await lockConversation(conn, id, now())) !== null,
|
|
@@ -1066,92 +1062,36 @@ export function createConversationService(deps) {
|
|
|
1066
1062
|
return;
|
|
1067
1063
|
await tx.run((unit) => syncIn(unit, run));
|
|
1068
1064
|
},
|
|
1069
|
-
async streamDraft(run, text) {
|
|
1070
|
-
if (run.subject.kind !== CONVERSATION_SUBJECT)
|
|
1071
|
-
return;
|
|
1072
|
-
await tx.run(async (unit) => {
|
|
1073
|
-
const record = await lockConversation(unit.conn, run.subject.id, now());
|
|
1074
|
-
if (!record || record.userId !== run.actorUserId)
|
|
1075
|
-
return;
|
|
1076
|
-
const draft = await findDraft(unit.conn, record.id, run.id);
|
|
1077
|
-
if (draft) {
|
|
1078
|
-
await rewriteMessage(unit.conn, draft, {
|
|
1079
|
-
text,
|
|
1080
|
-
metadata: { ...metadataOf(draft), streaming: true },
|
|
1081
|
-
}, now());
|
|
1082
|
-
changed(unit, record, Number(draft.seq));
|
|
1083
|
-
return;
|
|
1084
|
-
}
|
|
1085
|
-
if (text.trim() === '')
|
|
1086
|
-
return;
|
|
1087
|
-
await append(unit, record, {
|
|
1088
|
-
role: 'assistant',
|
|
1089
|
-
text,
|
|
1090
|
-
runId: run.id,
|
|
1091
|
-
metadata: { agentId: run.agentId, streaming: true },
|
|
1092
|
-
});
|
|
1093
|
-
});
|
|
1094
|
-
},
|
|
1095
1065
|
async chatAgents(userId) {
|
|
1096
1066
|
const conn = tx.read();
|
|
1097
|
-
const [agents, runners, settings, preferences
|
|
1067
|
+
const [agents, runners, settings, preferences] = await Promise.all([
|
|
1098
1068
|
deps.agents.list(),
|
|
1099
|
-
deps.runners
|
|
1069
|
+
deps.runners
|
|
1070
|
+
.list()
|
|
1071
|
+
.then((all) => all.filter((runner) => runner.status === 'online')),
|
|
1100
1072
|
deps.settings.settings(conn),
|
|
1101
1073
|
deps.settings.preferences(userId, conn),
|
|
1102
|
-
deps.models.catalog(),
|
|
1103
1074
|
]);
|
|
1104
|
-
return agents
|
|
1105
|
-
|
|
1106
|
-
.
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
:
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1075
|
+
return Promise.all(agents
|
|
1076
|
+
// People talk to the agents discovered from runners; an application's own agents do work of its own.
|
|
1077
|
+
.filter((agent) => agent.source === 'runner' && deps.agents.mayInvoke(agent, userId))
|
|
1078
|
+
.map(async (agent) => {
|
|
1079
|
+
const fitting = runners.filter((runner) => runnerTakesAgent(runner, agent));
|
|
1080
|
+
return {
|
|
1081
|
+
id: agent.id,
|
|
1082
|
+
name: agent.name,
|
|
1083
|
+
description: agent.description,
|
|
1084
|
+
nameText: agent.nameText,
|
|
1085
|
+
descriptionText: agent.descriptionText,
|
|
1086
|
+
avatar: agent.avatar,
|
|
1087
|
+
isSystemDefault: agent.id === settings.defaultAgentId,
|
|
1088
|
+
isMyDefault: agent.id === preferences.defaultAgentId,
|
|
1089
|
+
availability: await availabilityFor(conn, agent, userId, runners),
|
|
1090
|
+
personalOnly: fitting.length > 0 &&
|
|
1091
|
+
fitting.every((runner) => runner.trust !== 'team'),
|
|
1092
|
+
};
|
|
1121
1093
|
}));
|
|
1122
1094
|
},
|
|
1123
|
-
async copyAgent(userId, agentId, request) {
|
|
1124
|
-
const source = await deps.agents.get(agentId);
|
|
1125
|
-
if (!deps.agents.mayInvoke(source, userId))
|
|
1126
|
-
throw notFound('Agent');
|
|
1127
|
-
const name = request.name?.trim() || `${source.name} (copy)`;
|
|
1128
|
-
if ([...name].length > 200)
|
|
1129
|
-
throw invalid('name must be at most 200 characters.');
|
|
1130
|
-
const copy = await deps.agents.create(userId, {
|
|
1131
|
-
name,
|
|
1132
|
-
description: source.description,
|
|
1133
|
-
descriptionText: source.descriptionText,
|
|
1134
|
-
avatar: source.avatar,
|
|
1135
|
-
type: source.type,
|
|
1136
|
-
modelEntries: source.modelEntries,
|
|
1137
|
-
instructions: source.instructions,
|
|
1138
|
-
actions: source.actions,
|
|
1139
|
-
confirmChanges: source.confirmChanges,
|
|
1140
|
-
access: 'ownerOnly',
|
|
1141
|
-
userIds: [],
|
|
1142
|
-
ownerUserId: userId,
|
|
1143
|
-
runnerIds: source.runnerIds,
|
|
1144
|
-
skillIds: source.skillIds,
|
|
1145
|
-
maxConcurrentRuns: source.maxConcurrentRuns,
|
|
1146
|
-
maxAttempts: source.maxAttempts,
|
|
1147
|
-
toolPolicy: source.toolPolicy,
|
|
1148
|
-
});
|
|
1149
|
-
if (request.makeDefault)
|
|
1150
|
-
await deps.settings.updatePreferences(userId, {
|
|
1151
|
-
defaultAgentId: copy.id,
|
|
1152
|
-
});
|
|
1153
|
-
return copy;
|
|
1154
|
-
},
|
|
1155
1095
|
};
|
|
1156
1096
|
return service;
|
|
1157
1097
|
}
|