@nocobase/app-plugin-agents 2.0.0-beta.1 → 2.0.0-beta.11
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 +197 -0
- package/README.md +25 -5
- package/dist/client/chat/api.d.ts +6 -1
- package/dist/client/chat/api.d.ts.map +1 -1
- package/dist/client/chat/api.js +18 -0
- package/dist/client/chat/api.js.map +1 -1
- package/dist/client/chat/controller.d.ts +12 -0
- package/dist/client/chat/controller.d.ts.map +1 -1
- package/dist/client/chat/controller.js +65 -20
- package/dist/client/chat/controller.js.map +1 -1
- package/dist/client/chat/notices.d.ts +12 -0
- package/dist/client/chat/notices.d.ts.map +1 -0
- package/dist/client/chat/notices.js +15 -0
- package/dist/client/chat/notices.js.map +1 -0
- package/dist/client/chat/submissions.d.ts +16 -0
- package/dist/client/chat/submissions.d.ts.map +1 -1
- package/dist/client/chat/submissions.js +22 -0
- package/dist/client/chat/submissions.js.map +1 -1
- package/dist/client/chat/use-chat.d.ts.map +1 -1
- package/dist/client/chat/use-chat.js +1 -0
- package/dist/client/chat/use-chat.js.map +1 -1
- package/dist/client/chat.d.ts +1 -0
- package/dist/client/chat.d.ts.map +1 -1
- package/dist/client/chat.js +1 -0
- package/dist/client/chat.js.map +1 -1
- package/dist/client/components/page-container.js +1 -1
- package/dist/client/components/page-container.js.map +1 -1
- package/dist/client/components/route-child-page.d.ts +1 -1
- package/dist/client/components/route-child-page.d.ts.map +1 -1
- package/dist/client/components/route-child-page.js +18 -2
- package/dist/client/components/route-child-page.js.map +1 -1
- package/dist/client/components/route-overlay.d.ts +4 -1
- package/dist/client/components/route-overlay.d.ts.map +1 -1
- package/dist/client/components/route-overlay.js +32 -3
- package/dist/client/components/route-overlay.js.map +1 -1
- package/dist/client/components/ui/alert-dialog.d.ts +3 -1
- package/dist/client/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/client/components/ui/alert-dialog.js +2 -2
- package/dist/client/components/ui/alert-dialog.js.map +1 -1
- package/dist/client/components/unsaved-changes.d.ts.map +1 -1
- package/dist/client/components/unsaved-changes.js +17 -4
- package/dist/client/components/unsaved-changes.js.map +1 -1
- package/dist/client/components/use-route-overlay.d.ts +2 -9
- package/dist/client/components/use-route-overlay.d.ts.map +1 -1
- package/dist/client/components/use-route-overlay.js +5 -3
- package/dist/client/components/use-route-overlay.js.map +1 -1
- package/dist/client/lib/format.d.ts.map +1 -1
- package/dist/client/lib/format.js +1 -0
- package/dist/client/lib/format.js.map +1 -1
- package/dist/client/locales/de-DE.d.ts.map +1 -1
- package/dist/client/locales/de-DE.js +145 -109
- package/dist/client/locales/de-DE.js.map +1 -1
- package/dist/client/locales/en-US.d.ts +2 -0
- package/dist/client/locales/en-US.d.ts.map +1 -1
- package/dist/client/locales/en-US.js +4 -2
- package/dist/client/locales/en-US.js.map +1 -1
- package/dist/client/locales/es-ES.d.ts.map +1 -1
- package/dist/client/locales/es-ES.js +222 -186
- package/dist/client/locales/es-ES.js.map +1 -1
- package/dist/client/locales/fr-FR.d.ts.map +1 -1
- package/dist/client/locales/fr-FR.js +154 -118
- package/dist/client/locales/fr-FR.js.map +1 -1
- package/dist/client/locales/id-ID.d.ts.map +1 -1
- package/dist/client/locales/id-ID.js +143 -107
- package/dist/client/locales/id-ID.js.map +1 -1
- package/dist/client/locales/index.d.ts.map +1 -1
- package/dist/client/locales/index.js +2 -0
- package/dist/client/locales/index.js.map +1 -1
- package/dist/client/locales/ja-JP.d.ts.map +1 -1
- package/dist/client/locales/ja-JP.js +226 -190
- package/dist/client/locales/ja-JP.js.map +1 -1
- package/dist/client/locales/ko-KR.d.ts +5 -0
- package/dist/client/locales/ko-KR.d.ts.map +1 -0
- package/dist/client/locales/ko-KR.js +1319 -0
- package/dist/client/locales/ko-KR.js.map +1 -0
- package/dist/client/locales/pt-BR.d.ts.map +1 -1
- package/dist/client/locales/pt-BR.js +216 -180
- package/dist/client/locales/pt-BR.js.map +1 -1
- package/dist/client/locales/ru-RU.d.ts +5 -0
- package/dist/client/locales/ru-RU.d.ts.map +1 -0
- package/dist/client/locales/ru-RU.js +1349 -0
- package/dist/client/locales/ru-RU.js.map +1 -0
- package/dist/client/locales/runWait.en-US.d.ts +2 -0
- package/dist/client/locales/runWait.en-US.d.ts.map +1 -1
- package/dist/client/locales/runWait.en-US.js +2 -0
- package/dist/client/locales/runWait.en-US.js.map +1 -1
- package/dist/client/locales/runWait.zh-CN.d.ts.map +1 -1
- package/dist/client/locales/runWait.zh-CN.js +2 -0
- package/dist/client/locales/runWait.zh-CN.js.map +1 -1
- package/dist/client/locales/runtimes.en-US.d.ts +9 -0
- package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
- package/dist/client/locales/runtimes.en-US.js +11 -2
- 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 +11 -2
- package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
- package/dist/client/locales/vi-VN.d.ts.map +1 -1
- package/dist/client/locales/vi-VN.js +182 -146
- package/dist/client/locales/vi-VN.js.map +1 -1
- package/dist/client/locales/zh-CN.d.ts.map +1 -1
- package/dist/client/locales/zh-CN.js +4 -2
- package/dist/client/locales/zh-CN.js.map +1 -1
- package/dist/client/locales/zh-TW.d.ts.map +1 -1
- package/dist/client/locales/zh-TW.js +159 -123
- package/dist/client/locales/zh-TW.js.map +1 -1
- package/dist/client/pages/runtimes/quota-limit-setting.d.ts +12 -0
- package/dist/client/pages/runtimes/quota-limit-setting.d.ts.map +1 -0
- package/dist/client/pages/runtimes/quota-limit-setting.js +57 -0
- package/dist/client/pages/runtimes/quota-limit-setting.js.map +1 -0
- package/dist/client/pages/runtimes/quota.d.ts +3 -2
- package/dist/client/pages/runtimes/quota.d.ts.map +1 -1
- package/dist/client/pages/runtimes/quota.js +10 -4
- package/dist/client/pages/runtimes/quota.js.map +1 -1
- package/dist/client/pages/runtimes/runner-runs.d.ts.map +1 -1
- package/dist/client/pages/runtimes/runner-runs.js +2 -8
- package/dist/client/pages/runtimes/runner-runs.js.map +1 -1
- package/dist/client/pages/runtimes/runner-tools.d.ts.map +1 -1
- package/dist/client/pages/runtimes/runner-tools.js +7 -16
- package/dist/client/pages/runtimes/runner-tools.js.map +1 -1
- package/dist/client/pages/runtimes/workspace-diagnostics.js +3 -3
- package/dist/client/pages/runtimes/workspace-diagnostics.js.map +1 -1
- package/dist/client/pages/usage/date-range-picker.d.ts.map +1 -1
- package/dist/client/pages/usage/date-range-picker.js +3 -1
- package/dist/client/pages/usage/date-range-picker.js.map +1 -1
- package/dist/client/routes.d.ts.map +1 -1
- package/dist/client/routes.js +7 -0
- package/dist/client/routes.js.map +1 -1
- package/dist/client/runs/format-wait.d.ts.map +1 -1
- package/dist/client/runs/format-wait.js +2 -0
- package/dist/client/runs/format-wait.js.map +1 -1
- package/dist/database/migrations/.manifest.json +20 -0
- package/dist/database/migrations/202611070001_ag_run_runner_pin.d.ts +4 -0
- package/dist/database/migrations/202611070001_ag_run_runner_pin.d.ts.map +1 -0
- package/dist/database/migrations/202611070001_ag_run_runner_pin.js +17 -0
- package/dist/database/migrations/202611070001_ag_run_runner_pin.js.map +1 -0
- package/dist/database/migrations/202611080001_ag_conversation_shares.d.ts +4 -0
- package/dist/database/migrations/202611080001_ag_conversation_shares.d.ts.map +1 -0
- package/dist/database/migrations/202611080001_ag_conversation_shares.js +25 -0
- package/dist/database/migrations/202611080001_ag_conversation_shares.js.map +1 -0
- package/dist/database/migrations/202611080002_ag_run_failure_params.d.ts +4 -0
- package/dist/database/migrations/202611080002_ag_run_failure_params.d.ts.map +1 -0
- package/dist/database/migrations/202611080002_ag_run_failure_params.js +17 -0
- package/dist/database/migrations/202611080002_ag_run_failure_params.js.map +1 -0
- package/dist/database/migrations/202611090001_ag_runner_preference.d.ts +9 -0
- package/dist/database/migrations/202611090001_ag_runner_preference.d.ts.map +1 -0
- package/dist/database/migrations/202611090001_ag_runner_preference.js +28 -0
- package/dist/database/migrations/202611090001_ag_runner_preference.js.map +1 -0
- package/dist/database/migrations/202611110001_ag_runner_quota_limits.d.ts +4 -0
- package/dist/database/migrations/202611110001_ag_runner_quota_limits.d.ts.map +1 -0
- package/dist/database/migrations/202611110001_ag_runner_quota_limits.js +17 -0
- package/dist/database/migrations/202611110001_ag_runner_quota_limits.js.map +1 -0
- package/dist/package.json +4 -2
- package/dist/server/composition.d.ts +9 -1
- package/dist/server/composition.d.ts.map +1 -1
- package/dist/server/composition.js +31 -2
- package/dist/server/composition.js.map +1 -1
- package/dist/server/core/agents/agent.service.d.ts +2 -1
- package/dist/server/core/agents/agent.service.d.ts.map +1 -1
- package/dist/server/core/agents/agent.service.js.map +1 -1
- package/dist/server/core/agents/agent.store.d.ts +2 -2
- package/dist/server/core/agents/agent.store.d.ts.map +1 -1
- package/dist/server/core/agents/agent.store.js +8 -2
- package/dist/server/core/agents/agent.store.js.map +1 -1
- package/dist/server/core/brief/brief.d.ts +10 -5
- package/dist/server/core/brief/brief.d.ts.map +1 -1
- package/dist/server/core/brief/brief.js +36 -13
- package/dist/server/core/brief/brief.js.map +1 -1
- package/dist/server/core/brief/index.d.ts +1 -1
- package/dist/server/core/brief/index.d.ts.map +1 -1
- package/dist/server/core/brief/index.js +1 -1
- package/dist/server/core/brief/index.js.map +1 -1
- package/dist/server/core/conversations/attachments.d.ts +6 -4
- package/dist/server/core/conversations/attachments.d.ts.map +1 -1
- package/dist/server/core/conversations/attachments.js +66 -22
- package/dist/server/core/conversations/attachments.js.map +1 -1
- package/dist/server/core/conversations/chat-settings.d.ts +1 -1
- package/dist/server/core/conversations/chat-settings.d.ts.map +1 -1
- package/dist/server/core/conversations/chat-settings.js +6 -0
- package/dist/server/core/conversations/chat-settings.js.map +1 -1
- package/dist/server/core/conversations/conversation.service.d.ts +3 -1
- package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
- package/dist/server/core/conversations/conversation.service.js +198 -18
- package/dist/server/core/conversations/conversation.service.js.map +1 -1
- package/dist/server/core/conversations/conversation.store.d.ts +2 -0
- package/dist/server/core/conversations/conversation.store.d.ts.map +1 -1
- package/dist/server/core/conversations/conversation.store.js.map +1 -1
- package/dist/server/core/conversations/index.d.ts +1 -0
- package/dist/server/core/conversations/index.d.ts.map +1 -1
- package/dist/server/core/conversations/links.d.ts.map +1 -1
- package/dist/server/core/conversations/links.js +10 -5
- package/dist/server/core/conversations/links.js.map +1 -1
- package/dist/server/core/conversations/ports.d.ts +8 -2
- package/dist/server/core/conversations/ports.d.ts.map +1 -1
- package/dist/server/core/conversations/shares.d.ts +38 -0
- package/dist/server/core/conversations/shares.d.ts.map +1 -0
- package/dist/server/core/conversations/shares.js +189 -0
- package/dist/server/core/conversations/shares.js.map +1 -0
- package/dist/server/core/reports/report.service.d.ts.map +1 -1
- package/dist/server/core/reports/report.service.js +24 -13
- package/dist/server/core/reports/report.service.js.map +1 -1
- package/dist/server/core/runs/access.d.ts +7 -1
- package/dist/server/core/runs/access.d.ts.map +1 -1
- package/dist/server/core/runs/access.js +51 -2
- package/dist/server/core/runs/access.js.map +1 -1
- package/dist/server/core/runs/claim.d.ts +22 -3
- package/dist/server/core/runs/claim.d.ts.map +1 -1
- package/dist/server/core/runs/claim.js +260 -42
- package/dist/server/core/runs/claim.js.map +1 -1
- package/dist/server/core/runs/eligibility.d.ts.map +1 -1
- package/dist/server/core/runs/eligibility.js +1 -0
- package/dist/server/core/runs/eligibility.js.map +1 -1
- package/dist/server/core/runs/extensions.d.ts +30 -2
- package/dist/server/core/runs/extensions.d.ts.map +1 -1
- package/dist/server/core/runs/extensions.js +18 -1
- package/dist/server/core/runs/extensions.js.map +1 -1
- package/dist/server/core/runs/git-credentials.d.ts.map +1 -1
- package/dist/server/core/runs/git-credentials.js +24 -2
- package/dist/server/core/runs/git-credentials.js.map +1 -1
- package/dist/server/core/runs/identity.d.ts.map +1 -1
- package/dist/server/core/runs/identity.js +9 -0
- package/dist/server/core/runs/identity.js.map +1 -1
- package/dist/server/core/runs/index.d.ts +3 -2
- package/dist/server/core/runs/index.d.ts.map +1 -1
- package/dist/server/core/runs/index.js +2 -1
- package/dist/server/core/runs/index.js.map +1 -1
- package/dist/server/core/runs/lifecycle.d.ts.map +1 -1
- package/dist/server/core/runs/lifecycle.js +14 -0
- package/dist/server/core/runs/lifecycle.js.map +1 -1
- package/dist/server/core/runs/npm-credentials.d.ts +35 -0
- package/dist/server/core/runs/npm-credentials.d.ts.map +1 -0
- package/dist/server/core/runs/npm-credentials.js +83 -0
- package/dist/server/core/runs/npm-credentials.js.map +1 -0
- package/dist/server/core/runs/ports.d.ts +24 -3
- package/dist/server/core/runs/ports.d.ts.map +1 -1
- package/dist/server/core/runs/ports.js.map +1 -1
- package/dist/server/core/runs/preview.d.ts +1 -4
- package/dist/server/core/runs/preview.d.ts.map +1 -1
- package/dist/server/core/runs/preview.js +10 -5
- package/dist/server/core/runs/preview.js.map +1 -1
- package/dist/server/core/runs/quota-wait.d.ts +7 -0
- package/dist/server/core/runs/quota-wait.d.ts.map +1 -0
- package/dist/server/core/runs/quota-wait.js +56 -0
- package/dist/server/core/runs/quota-wait.js.map +1 -0
- package/dist/server/core/runs/run-data-purge.d.ts.map +1 -1
- package/dist/server/core/runs/run-data-purge.js +1 -0
- package/dist/server/core/runs/run-data-purge.js.map +1 -1
- package/dist/server/core/runs/run.service.d.ts +31 -5
- package/dist/server/core/runs/run.service.d.ts.map +1 -1
- package/dist/server/core/runs/run.service.js +129 -35
- package/dist/server/core/runs/run.service.js.map +1 -1
- package/dist/server/core/runs/run.store.d.ts +24 -0
- package/dist/server/core/runs/run.store.d.ts.map +1 -1
- package/dist/server/core/runs/run.store.js +44 -0
- package/dist/server/core/runs/run.store.js.map +1 -1
- package/dist/server/core/runs/sweeper.d.ts.map +1 -1
- package/dist/server/core/runs/sweeper.js +2 -0
- package/dist/server/core/runs/sweeper.js.map +1 -1
- package/dist/server/core/runs/transitions.d.ts +1 -0
- package/dist/server/core/runs/transitions.d.ts.map +1 -1
- package/dist/server/core/runs/transitions.js +15 -1
- package/dist/server/core/runs/transitions.js.map +1 -1
- package/dist/server/core/runs/workload.d.ts +2 -2
- package/dist/server/core/runs/workload.d.ts.map +1 -1
- package/dist/server/core/runs/workload.js +62 -9
- package/dist/server/core/runs/workload.js.map +1 -1
- package/dist/server/kernel/clock.d.ts +2 -0
- package/dist/server/kernel/clock.d.ts.map +1 -1
- package/dist/server/kernel/clock.js +14 -0
- package/dist/server/kernel/clock.js.map +1 -1
- package/dist/server/kernel/events.d.ts +4 -1
- package/dist/server/kernel/events.d.ts.map +1 -1
- package/dist/server/kernel/events.js.map +1 -1
- package/dist/server/locales/de-DE.js +3 -3
- package/dist/server/locales/de-DE.js.map +1 -1
- package/dist/server/locales/es-ES.js +6 -6
- package/dist/server/locales/es-ES.js.map +1 -1
- package/dist/server/locales/fr-FR.js +4 -4
- package/dist/server/locales/fr-FR.js.map +1 -1
- package/dist/server/locales/id-ID.js +5 -5
- package/dist/server/locales/id-ID.js.map +1 -1
- package/dist/server/locales/index.d.ts.map +1 -1
- package/dist/server/locales/index.js +2 -0
- package/dist/server/locales/index.js.map +1 -1
- package/dist/server/locales/ja-JP.d.ts.map +1 -1
- package/dist/server/locales/ja-JP.js +6 -6
- package/dist/server/locales/ja-JP.js.map +1 -1
- package/dist/server/locales/ko-KR.d.ts +5 -0
- package/dist/server/locales/ko-KR.d.ts.map +1 -0
- package/dist/server/locales/ko-KR.js +59 -0
- package/dist/server/locales/ko-KR.js.map +1 -0
- package/dist/server/locales/pt-BR.js +6 -6
- package/dist/server/locales/pt-BR.js.map +1 -1
- package/dist/server/locales/ru-RU.d.ts +5 -0
- package/dist/server/locales/ru-RU.d.ts.map +1 -0
- package/dist/server/locales/ru-RU.js +59 -0
- package/dist/server/locales/ru-RU.js.map +1 -0
- package/dist/server/locales/vi-VN.js +6 -6
- package/dist/server/locales/vi-VN.js.map +1 -1
- package/dist/server/locales/zh-TW.d.ts.map +1 -1
- package/dist/server/locales/zh-TW.js +6 -6
- package/dist/server/locales/zh-TW.js.map +1 -1
- package/dist/server/online/agent/persistence/store.d.ts.map +1 -1
- package/dist/server/online/agent/persistence/store.js +3 -0
- package/dist/server/online/agent/persistence/store.js.map +1 -1
- package/dist/server/online/agent/runner/projection.d.ts +1 -1
- package/dist/server/online/agent/runner/projection.d.ts.map +1 -1
- package/dist/server/online/agent/runner/projection.js +8 -1
- package/dist/server/online/agent/runner/projection.js.map +1 -1
- package/dist/server/online/files/input.d.ts +2 -2
- package/dist/server/online/files/input.d.ts.map +1 -1
- package/dist/server/online/files/input.js +5 -6
- package/dist/server/online/files/input.js.map +1 -1
- package/dist/server/online/files/kimi.d.ts.map +1 -1
- package/dist/server/online/files/kimi.js +2 -2
- package/dist/server/online/files/kimi.js.map +1 -1
- package/dist/server/online/files/service.d.ts +2 -1
- package/dist/server/online/files/service.d.ts.map +1 -1
- package/dist/server/online/files/service.js +11 -10
- package/dist/server/online/files/service.js.map +1 -1
- package/dist/server/providers/agents.d.ts.map +1 -1
- package/dist/server/providers/agents.js +5 -2
- package/dist/server/providers/agents.js.map +1 -1
- package/dist/server/routes/admin.d.ts +1 -0
- package/dist/server/routes/admin.d.ts.map +1 -1
- package/dist/server/routes/admin.js +41 -14
- 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 +107 -24
- 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 +8 -2
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/run.js +1 -1
- package/dist/server/routes/run.js.map +1 -1
- package/dist/server/routes/runners/admin.d.ts.map +1 -1
- package/dist/server/routes/runners/admin.js +3 -3
- package/dist/server/routes/runners/admin.js.map +1 -1
- package/dist/server/routes/runners/install.d.ts.map +1 -1
- package/dist/server/routes/runners/install.js +5 -0
- 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 +13 -22
- 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 +20 -1
- package/dist/server/routes/runners/runs.js.map +1 -1
- package/dist/server/routes/schemas.d.ts +4 -0
- package/dist/server/routes/schemas.d.ts.map +1 -1
- package/dist/server/routes/schemas.js +31 -6
- package/dist/server/routes/schemas.js.map +1 -1
- package/dist/server/runners/runner.service.d.ts.map +1 -1
- package/dist/server/runners/runner.service.js +33 -9
- package/dist/server/runners/runner.service.js.map +1 -1
- package/dist/server/runners/runner.store.d.ts +1 -0
- package/dist/server/runners/runner.store.d.ts.map +1 -1
- package/dist/server/runners/runner.store.js +1 -0
- package/dist/server/runners/runner.store.js.map +1 -1
- package/dist/server/tokens.d.ts +1 -1
- package/dist/server/tokens.d.ts.map +1 -1
- package/dist/server/tokens.js.map +1 -1
- package/dist/shared/briefs.d.ts +2 -6
- package/dist/shared/briefs.d.ts.map +1 -1
- package/dist/shared/conversations.d.ts +34 -3
- package/dist/shared/conversations.d.ts.map +1 -1
- package/dist/shared/conversations.js +10 -2
- package/dist/shared/conversations.js.map +1 -1
- package/dist/shared/runners.d.ts +7 -3
- package/dist/shared/runners.d.ts.map +1 -1
- package/dist/shared/runners.js +20 -4
- package/dist/shared/runners.js.map +1 -1
- package/dist/shared/runs.d.ts +11 -3
- package/dist/shared/runs.d.ts.map +1 -1
- package/dist/shared/runs.js +2 -0
- package/dist/shared/runs.js.map +1 -1
- package/docs/conversation-sharing.md +55 -0
- package/package.json +18 -16
- package/skills/nocobase-app-plugin-agents/SKILL.md +5 -1
- package/skills/nocobase-app-plugin-agents/references/extension-points.md +5 -1
- package/skills/nocobase-app-plugin-agents/references/online-agent.md +6 -6
- package/skills/nocobase-app-plugin-agents/references/runners.md +1 -1
- package/skills/nocobase-app-plugin-agents/references/verification-and-troubleshooting.md +2 -1
|
@@ -9,8 +9,11 @@
|
|
|
9
9
|
* conversation. Anyone else gets 404, as if it did not exist. Uploads never sent are purged after
|
|
10
10
|
* `CHAT_ATTACHMENT_ORPHAN_HOURS`.
|
|
11
11
|
*/
|
|
12
|
+
import { assertFileUploadSize, } from '@nocobase/app-plugin-file/server';
|
|
13
|
+
import { conversationAccess } from './shares.js';
|
|
14
|
+
import { messagesRepo } from './conversation.store.js';
|
|
12
15
|
import { Readable } from 'node:stream';
|
|
13
|
-
import { CHAT_ATTACHMENT_ORPHAN_HOURS,
|
|
16
|
+
import { CHAT_ATTACHMENT_ORPHAN_HOURS, CHAT_ATTACHMENTS_PER_MESSAGE_MAX, CONVERSATION_SUBJECT, isInlineImage, } from '../../../shared/conversations.js';
|
|
14
17
|
import { invalid, notFound, precondition, ProtocolError, } from '../../kernel/errors.js';
|
|
15
18
|
export const CHAT_ATTACHMENTS = 'agChatAttachments';
|
|
16
19
|
/** Required by the file repository; nothing is served there (the content route checks who may read). */
|
|
@@ -155,11 +158,8 @@ export function readAttachmentIds(value) {
|
|
|
155
158
|
throw invalid(`At most ${CHAT_ATTACHMENTS_PER_MESSAGE_MAX} files per message.`, { field: 'attachmentIds' });
|
|
156
159
|
return ids;
|
|
157
160
|
}
|
|
158
|
-
/** 413 `UPLOAD_TOO_LARGE`: a file over `CHAT_ATTACHMENT_SIZE_MAX`. */
|
|
159
|
-
export function fileTooLarge() {
|
|
160
|
-
return new ProtocolError('UPLOAD_TOO_LARGE', `A file may have at most ${CHAT_ATTACHMENT_SIZE_MAX} bytes.`, { maxBytes: CHAT_ATTACHMENT_SIZE_MAX });
|
|
161
|
-
}
|
|
162
161
|
export function createChatAttachments(deps) {
|
|
162
|
+
const uploadLimit = deps.limitForDisk();
|
|
163
163
|
const now = deps.now ?? (() => new Date());
|
|
164
164
|
const view = (row) => attachmentView(deps.basePath(), stored(row));
|
|
165
165
|
/** The row, when the reader may read it; 404 otherwise. */
|
|
@@ -177,11 +177,29 @@ export function createChatAttachments(deps) {
|
|
|
177
177
|
(reader.run.subjectKind !== CONVERSATION_SUBJECT ||
|
|
178
178
|
reader.run.subjectId !== row.conversationId))
|
|
179
179
|
throw notFound('Attachment');
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
180
|
+
let access;
|
|
181
|
+
try {
|
|
182
|
+
access = await conversationAccess(conn, reader.userId, row.conversationId);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (error instanceof ProtocolError &&
|
|
186
|
+
error.code === 'CONVERSATION_NOT_FOUND')
|
|
187
|
+
throw notFound('Attachment');
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
if (access.share) {
|
|
191
|
+
if (reader.run || !row.messageId)
|
|
192
|
+
throw notFound('Attachment');
|
|
193
|
+
const message = await messagesRepo(conn).findOne({
|
|
194
|
+
filter: (f) => f.and([
|
|
195
|
+
f.string('id').eq(row.messageId),
|
|
196
|
+
f.string('conversationId').eq(row.conversationId),
|
|
197
|
+
f.number('seq').lte(Number(access.share.cutoffSeq)),
|
|
198
|
+
]),
|
|
199
|
+
});
|
|
200
|
+
if (!message)
|
|
201
|
+
throw notFound('Attachment');
|
|
202
|
+
}
|
|
185
203
|
return row;
|
|
186
204
|
}
|
|
187
205
|
/** Deletes the row only while it is still attached to nothing; answers whether it did. */
|
|
@@ -199,23 +217,45 @@ export function createChatAttachments(deps) {
|
|
|
199
217
|
new Set(ids).size !== ids.length)
|
|
200
218
|
throw invalid('Send at most the allowed number of distinct attachments.');
|
|
201
219
|
const rows = await findFiles(conn, ids);
|
|
220
|
+
// A withdrawn input can be sent with another Agent in the same owned conversation, without copying files.
|
|
221
|
+
const reused = rows.filter((row) => row.conversationId === target.conversationId &&
|
|
222
|
+
row.uploaderId === userId);
|
|
223
|
+
const withdrawn = reused.length
|
|
224
|
+
? await conn
|
|
225
|
+
.repository('agConversationMessages')
|
|
226
|
+
.findMany({
|
|
227
|
+
filter: (f) => f.and([
|
|
228
|
+
f.string('conversationId').eq(target.conversationId),
|
|
229
|
+
f.or(reused.flatMap((row) => row.messageId ? [f.string('id').eq(row.messageId)] : [])),
|
|
230
|
+
f.json('metadata').path(['withdrawn']).eq(true),
|
|
231
|
+
]),
|
|
232
|
+
})
|
|
233
|
+
: [];
|
|
234
|
+
const reusable = new Set(reused
|
|
235
|
+
.filter((row) => withdrawn.some((message) => message.id === row.messageId))
|
|
236
|
+
.map((row) => row.id));
|
|
202
237
|
const ordered = ids.map((id) => {
|
|
203
238
|
const row = rows.find((candidate) => candidate.id === id);
|
|
204
|
-
if (!row ||
|
|
239
|
+
if (!row ||
|
|
240
|
+
(row.conversationId !== null && !reusable.has(id)) ||
|
|
241
|
+
row.uploaderId !== userId)
|
|
205
242
|
throw invalid(`File ${id} is not an upload of yours to send.`, {
|
|
206
243
|
field: 'attachmentIds',
|
|
207
244
|
fileId: id,
|
|
208
245
|
});
|
|
209
246
|
return row;
|
|
210
247
|
});
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
f
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
248
|
+
const fresh = ids.filter((id) => !reusable.has(id));
|
|
249
|
+
const bound = fresh.length
|
|
250
|
+
? await files(conn).updateMany({
|
|
251
|
+
filter: (f) => f.and([
|
|
252
|
+
f.or(fresh.map((id) => f.string('id').eq(id))),
|
|
253
|
+
f.string('conversationId').eq(null),
|
|
254
|
+
]),
|
|
255
|
+
values: { ...target, updatedAt: now() },
|
|
256
|
+
})
|
|
257
|
+
: { updatedCount: 0 };
|
|
258
|
+
if (bound.updatedCount !== fresh.length)
|
|
219
259
|
throw invalid('An upload was already attached to another message.');
|
|
220
260
|
return ordered.map(stored);
|
|
221
261
|
},
|
|
@@ -231,9 +271,9 @@ export function createChatAttachments(deps) {
|
|
|
231
271
|
},
|
|
232
272
|
};
|
|
233
273
|
const service = {
|
|
274
|
+
uploadLimit,
|
|
234
275
|
async upload(userId, file) {
|
|
235
|
-
|
|
236
|
-
throw fileTooLarge();
|
|
276
|
+
assertFileUploadSize(file, uploadLimit);
|
|
237
277
|
const id = await deps.storage.store(file, userId);
|
|
238
278
|
const row = await findFile(deps.tx.read(), id);
|
|
239
279
|
if (!row)
|
|
@@ -250,7 +290,11 @@ export function createChatAttachments(deps) {
|
|
|
250
290
|
},
|
|
251
291
|
async content(reader, id, conn) {
|
|
252
292
|
const row = await readable(conn ?? deps.tx.read(), reader, id);
|
|
253
|
-
return {
|
|
293
|
+
return {
|
|
294
|
+
attachment: view(row),
|
|
295
|
+
body: await deps.storage.stream(row),
|
|
296
|
+
uploadLimit: deps.limitForDisk(row.disk),
|
|
297
|
+
};
|
|
254
298
|
},
|
|
255
299
|
async images(conversationId, ids, maxBytes) {
|
|
256
300
|
const rows = await findFiles(deps.tx.read(), ids);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../../server/core/conversations/attachments.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../../server/core/conversations/attachments.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Who new conversations go to: the team's system default chat agent (`agSettings`, key `chat`) and each person's own
|
|
3
|
-
* default (`agChatPreferences`).
|
|
3
|
+
* default (`agChatPreferences`), which also keeps the kind of runner their runs go to first (`runnerPreference`).
|
|
4
4
|
*/
|
|
5
5
|
import type { DatabaseConnection } from '@nocobase/db';
|
|
6
6
|
import { z } from 'zod';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-settings.d.ts","sourceRoot":"","sources":["../../../../server/core/conversations/chat-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-settings.d.ts","sourceRoot":"","sources":["../../../../server/core/conversations/chat-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAK1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMvD,eAAO,MAAM,0BAA0B,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAc3D,CAAC;AAEb,eAAO,MAAM,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CASrD,CAAC;AAEb,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,yEAAyE;IACzE,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,YAAY,CAAC,CAAC;IACzB,WAAW,CACT,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,kBAAkB,GACxB,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5B,yDAAyD;IACzD,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7B;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAClD,GAAG,mBAAmB,CAqHtB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { RUNNER_PREFERENCES, toRunnerPreference, } from '../../../shared/conversations.js';
|
|
2
3
|
import { forbidden, invalid } from '../../kernel/errors.js';
|
|
3
4
|
import { asJson, jsonObject } from '../../kernel/values.js';
|
|
4
5
|
import { findAgent } from '../agents/index.js';
|
|
@@ -12,6 +13,9 @@ export const ChatPreferencesPatchSchema = z
|
|
|
12
13
|
.max(64)
|
|
13
14
|
.nullable()
|
|
14
15
|
.describe('The default agent identifier.'),
|
|
16
|
+
runnerPreference: z
|
|
17
|
+
.enum(RUNNER_PREFERENCES)
|
|
18
|
+
.describe('Which kind of runner runs queued from now on go to first: auto, personal or team.'),
|
|
15
19
|
})
|
|
16
20
|
.partial();
|
|
17
21
|
export const ChatSettingsPatchSchema = z
|
|
@@ -39,6 +43,7 @@ export function createChatSettingsService(deps) {
|
|
|
39
43
|
const row = await preferencesRepo(conn).findOne({ filter: { userId } });
|
|
40
44
|
return {
|
|
41
45
|
defaultAgentId: row?.defaultAgentId ?? null,
|
|
46
|
+
runnerPreference: toRunnerPreference(row?.runnerPreference),
|
|
42
47
|
};
|
|
43
48
|
}
|
|
44
49
|
async function validateOnlineDefault(patch) {
|
|
@@ -103,6 +108,7 @@ export function createChatSettingsService(deps) {
|
|
|
103
108
|
}
|
|
104
109
|
const values = {
|
|
105
110
|
defaultAgentId: next.defaultAgentId,
|
|
111
|
+
runnerPreference: next.runnerPreference === 'auto' ? null : next.runnerPreference,
|
|
106
112
|
updatedAt: clock.now().toISOString(),
|
|
107
113
|
};
|
|
108
114
|
const existing = await preferencesRepo(conn).findOne({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-settings.js","sourceRoot":"","sources":["../../../../server/core/conversations/chat-settings.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-settings.js","sourceRoot":"","sources":["../../../../server/core/conversations/chat-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ import { type ConversationRecord } from './conversation.store.js';
|
|
|
12
12
|
import type { ConversationService } from './ports.js';
|
|
13
13
|
import type { AppUIMessage } from '../../../shared/online-agent.js';
|
|
14
14
|
export interface ConversationServiceDeps {
|
|
15
|
+
/** Reuse the native backend's registered public tool projections, without an executable session facade. */
|
|
16
|
+
readonly nativeHistory?: (messages: unknown[]) => Promise<AppUIMessage[]>;
|
|
15
17
|
readonly nativeNotice?: (unit: Tx, record: ConversationRecord, id: string, parts: AppUIMessage['parts']) => Promise<unknown>;
|
|
16
18
|
readonly tx: TxRunner;
|
|
17
19
|
readonly measure?: (phase: string, durationMs: number) => void;
|
|
@@ -20,7 +22,7 @@ export interface ConversationServiceDeps {
|
|
|
20
22
|
readonly agents: Pick<AgentService, 'mayInvoke' | 'get' | 'list'>;
|
|
21
23
|
readonly runners: Pick<RunnerService, 'list' | 'all'>;
|
|
22
24
|
readonly eligibility: Pick<ClaimEligibility, 'canClaim' | 'runnersFor' | 'prepare'>;
|
|
23
|
-
readonly runs: Pick<RunService, 'enqueue' | 'cancel' | 'withdrawQueued' | 'get' | 'detail'>;
|
|
25
|
+
readonly runs: Pick<RunService, 'enqueue' | 'cancel' | 'withdrawQueued' | 'get' | 'detail' | 'queueWait'>;
|
|
24
26
|
readonly people: People;
|
|
25
27
|
readonly settings: ChatSettingsService;
|
|
26
28
|
readonly contextKinds: PageContextKinds;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.service.d.ts","sourceRoot":"","sources":["../../../../server/core/conversations/conversation.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conversation.service.d.ts","sourceRoot":"","sources":["../../../../server/core/conversations/conversation.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { conversationAccess, createConversationShares, sharesRepo, } from './shares.js';
|
|
2
|
+
import { runnerUIPage } from '../../online/agent/runner/projection.js';
|
|
3
|
+
import { NativeMessages } from '../../online/agent/messages/projection.js';
|
|
4
|
+
import { OnlineAgentConfigurator } from '../../online/agent/configuration.js';
|
|
1
5
|
import { outputBlock, TERMINAL_RUN_STATUSES } from '@nocobase/agent-protocol';
|
|
2
6
|
import { historicalPageContext, hasContent, renderPageContext, } from './page-context.js';
|
|
3
7
|
import { nativeExecutionStatus, runnerBinding, } from '../../online/agent/persistence/state.js';
|
|
@@ -206,6 +210,12 @@ export function createConversationService(deps) {
|
|
|
206
210
|
return workspace.resolve(conn, conversation, prepared);
|
|
207
211
|
}
|
|
208
212
|
const sources = createSources();
|
|
213
|
+
const shares = createConversationShares({
|
|
214
|
+
tx,
|
|
215
|
+
ids,
|
|
216
|
+
people: deps.people,
|
|
217
|
+
now,
|
|
218
|
+
});
|
|
209
219
|
const links = createConversationLinks({
|
|
210
220
|
tx,
|
|
211
221
|
ids,
|
|
@@ -394,6 +404,9 @@ export function createConversationService(deps) {
|
|
|
394
404
|
effort: typeof jsonObject(record.metadata).effort === 'string'
|
|
395
405
|
? jsonObject(record.metadata).effort
|
|
396
406
|
: null,
|
|
407
|
+
wait: summary.mode === 'runner' && summary.run?.status === 'queued'
|
|
408
|
+
? await deps.runs.queueWait(summary.run.id, record.runnerId)
|
|
409
|
+
: null,
|
|
397
410
|
availability: await availabilityFor(conn, agent, record.userId),
|
|
398
411
|
canFallback: Boolean(target),
|
|
399
412
|
canRestore: !runnerBinding(record.metadata) &&
|
|
@@ -402,7 +415,48 @@ export function createConversationService(deps) {
|
|
|
402
415
|
}
|
|
403
416
|
async function detail(userId, id) {
|
|
404
417
|
const conn = tx.read();
|
|
405
|
-
|
|
418
|
+
const { record, share } = await conversationAccess(conn, userId, id);
|
|
419
|
+
if (!share)
|
|
420
|
+
return detailOf(conn, record);
|
|
421
|
+
// Whitelist snapshot fields: no latest runner, project, execution, usage, wait or owner attention.
|
|
422
|
+
return {
|
|
423
|
+
id,
|
|
424
|
+
title: share.title,
|
|
425
|
+
titleSource: 'user',
|
|
426
|
+
category: 'chat',
|
|
427
|
+
showInChatList: false,
|
|
428
|
+
source: 'panel',
|
|
429
|
+
mode: record.mode,
|
|
430
|
+
agent: jsonObject(record.metadata).onlineAgent
|
|
431
|
+
? {
|
|
432
|
+
id: 'online',
|
|
433
|
+
name: 'Online agent',
|
|
434
|
+
nameText: null,
|
|
435
|
+
avatar: null,
|
|
436
|
+
archived: false,
|
|
437
|
+
}
|
|
438
|
+
: {
|
|
439
|
+
...agentRef(record.agentId, record.agentId ? await findAgent(conn, record.agentId) : null),
|
|
440
|
+
avatar: null,
|
|
441
|
+
archived: false,
|
|
442
|
+
},
|
|
443
|
+
fallbackFrom: null,
|
|
444
|
+
read: true,
|
|
445
|
+
lastMessageAt: share.snapshotAt,
|
|
446
|
+
archivedAt: null,
|
|
447
|
+
createdAt: record.createdAt,
|
|
448
|
+
updatedAt: share.updatedAt,
|
|
449
|
+
run: null,
|
|
450
|
+
lastSeq: Number(share.cutoffSeq),
|
|
451
|
+
links: [],
|
|
452
|
+
availability: { online: false, reason: null, onlineRunners: 0 },
|
|
453
|
+
canFallback: false,
|
|
454
|
+
canRestore: false,
|
|
455
|
+
snapshot: {
|
|
456
|
+
cutoffSeq: Number(share.cutoffSeq),
|
|
457
|
+
snapshotAt: share.snapshotAt,
|
|
458
|
+
},
|
|
459
|
+
};
|
|
406
460
|
}
|
|
407
461
|
// -------------------------------------------------------------------------------------------------------------------
|
|
408
462
|
// Writing
|
|
@@ -742,6 +796,9 @@ export function createConversationService(deps) {
|
|
|
742
796
|
const released = deps.attachments
|
|
743
797
|
? await deps.attachments.release(unit.conn, record.id)
|
|
744
798
|
: async () => { };
|
|
799
|
+
await sharesRepo(unit.conn).deleteMany({
|
|
800
|
+
filter: { conversationId: record.id },
|
|
801
|
+
});
|
|
745
802
|
await messagesRepo(unit.conn).deleteMany({
|
|
746
803
|
filter: { conversationId: record.id },
|
|
747
804
|
});
|
|
@@ -1100,6 +1157,35 @@ export function createConversationService(deps) {
|
|
|
1100
1157
|
messageId: `runner:${run.id}`,
|
|
1101
1158
|
revision: Number(answered.seq) + 1,
|
|
1102
1159
|
});
|
|
1160
|
+
// Stop ends this turn; messages the Agent never acknowledged retain their identity in the next one.
|
|
1161
|
+
// A queued withdrawal or system cancellation must not start more work.
|
|
1162
|
+
if (run.status === 'cancelled' &&
|
|
1163
|
+
run.cancelRequestedAt !== null &&
|
|
1164
|
+
run.cancelledById === record.userId &&
|
|
1165
|
+
record.mode === 'runner' &&
|
|
1166
|
+
record.agentId === run.agentId) {
|
|
1167
|
+
const queued = await messagesRepo(unit.conn).findMany({
|
|
1168
|
+
filter: (f) => f.and([
|
|
1169
|
+
f.string('conversationId').eq(record.id),
|
|
1170
|
+
f.string('runId').eq(run.id),
|
|
1171
|
+
f.string('role').eq('user'),
|
|
1172
|
+
f.json('metadata').path(['queued']).eq(true),
|
|
1173
|
+
]),
|
|
1174
|
+
sort: (sort) => sort.field('seq').asc(),
|
|
1175
|
+
});
|
|
1176
|
+
const pending = queued.filter((message) => {
|
|
1177
|
+
const metadata = metadataOf(message);
|
|
1178
|
+
return !metadata.pickedUp && !metadata.withdrawn;
|
|
1179
|
+
});
|
|
1180
|
+
if (pending.length) {
|
|
1181
|
+
await wake(unit, record, pending);
|
|
1182
|
+
for (const message of pending)
|
|
1183
|
+
changed(unit, record, {
|
|
1184
|
+
messageId: message.id,
|
|
1185
|
+
revision: Number(message.seq),
|
|
1186
|
+
});
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1103
1189
|
await attend(unit, record.id, run);
|
|
1104
1190
|
},
|
|
1105
1191
|
},
|
|
@@ -1328,6 +1414,81 @@ export function createConversationService(deps) {
|
|
|
1328
1414
|
}
|
|
1329
1415
|
const service = {
|
|
1330
1416
|
binding,
|
|
1417
|
+
shares,
|
|
1418
|
+
async snapshotMessages(userId, id, query) {
|
|
1419
|
+
const conn = tx.read();
|
|
1420
|
+
const { record, share } = await conversationAccess(conn, userId, id);
|
|
1421
|
+
if (!share)
|
|
1422
|
+
return null;
|
|
1423
|
+
const cutoff = Number(share.cutoffSeq);
|
|
1424
|
+
let page;
|
|
1425
|
+
if (record.mode === 'runner' || !jsonObject(record.metadata).onlineAgent)
|
|
1426
|
+
page = await runnerUIPage(tx, id, cutoff, query, deps.basePath?.() ?? '', cutoff);
|
|
1427
|
+
else {
|
|
1428
|
+
const rows = await messagesRepo(conn).findMany({
|
|
1429
|
+
filter: (f) => f.and([
|
|
1430
|
+
f.string('conversationId').eq(id),
|
|
1431
|
+
f.number('seq').lte(cutoff),
|
|
1432
|
+
...(query.ids
|
|
1433
|
+
? [f.or(query.ids.map((key) => f.string('id').eq(key)))]
|
|
1434
|
+
: []),
|
|
1435
|
+
...(query.before !== undefined
|
|
1436
|
+
? [f.number('seq').lt(query.before)]
|
|
1437
|
+
: []),
|
|
1438
|
+
...(query.after !== undefined
|
|
1439
|
+
? [f.number('seq').gt(query.after)]
|
|
1440
|
+
: []),
|
|
1441
|
+
]),
|
|
1442
|
+
sort: (s) => query.after !== undefined || query.ids
|
|
1443
|
+
? s.field('seq').asc()
|
|
1444
|
+
: s.field('seq').desc(),
|
|
1445
|
+
limit: query.ids ? query.ids.length : query.limit + 1,
|
|
1446
|
+
});
|
|
1447
|
+
const hasMore = !query.ids && rows.length > query.limit;
|
|
1448
|
+
const selected = rows.slice(0, query.ids ? rows.length : query.limit);
|
|
1449
|
+
if (query.after === undefined && !query.ids)
|
|
1450
|
+
selected.reverse();
|
|
1451
|
+
const native = new NativeMessages(new OnlineAgentConfigurator());
|
|
1452
|
+
page = {
|
|
1453
|
+
items: selected.length
|
|
1454
|
+
? await (deps.nativeHistory ??
|
|
1455
|
+
(async (values) => native.public(await native.validate(values))))(selected.map((row) => jsonObject(row.content).original))
|
|
1456
|
+
: [],
|
|
1457
|
+
lastSeq: cutoff,
|
|
1458
|
+
hasMore,
|
|
1459
|
+
...(query.after !== undefined && hasMore && selected.length
|
|
1460
|
+
? { nextAfter: Number(selected.at(-1).seq) }
|
|
1461
|
+
: {}),
|
|
1462
|
+
};
|
|
1463
|
+
}
|
|
1464
|
+
for (const message of page.items) {
|
|
1465
|
+
if (message.metadata) {
|
|
1466
|
+
delete message.metadata.queue;
|
|
1467
|
+
delete message.metadata.executionId;
|
|
1468
|
+
delete message.metadata.turnId;
|
|
1469
|
+
}
|
|
1470
|
+
// A shared transcript contains historical content; linked records are always resolved as this viewer.
|
|
1471
|
+
if (message.metadata?.context) {
|
|
1472
|
+
const context = message.metadata.context;
|
|
1473
|
+
message.metadata.context = await deps.contextKinds.resolve(conn, userId, {
|
|
1474
|
+
route: '',
|
|
1475
|
+
items: context.items.map(({ kind, id }) => ({ kind, id })),
|
|
1476
|
+
});
|
|
1477
|
+
}
|
|
1478
|
+
const indexes = message.parts.flatMap((part, index) => part.type === 'data-turn' || part.type === 'data-phase'
|
|
1479
|
+
? []
|
|
1480
|
+
: [index]);
|
|
1481
|
+
if (message.metadata?.sourceRecords)
|
|
1482
|
+
message.metadata.sourceRecords = message.metadata.sourceRecords
|
|
1483
|
+
.filter((source) => indexes.includes(source.partIndex))
|
|
1484
|
+
.map((source) => ({
|
|
1485
|
+
...source,
|
|
1486
|
+
partIndex: indexes.indexOf(source.partIndex),
|
|
1487
|
+
}));
|
|
1488
|
+
message.parts = indexes.map((index) => message.parts[index]);
|
|
1489
|
+
}
|
|
1490
|
+
return page;
|
|
1491
|
+
},
|
|
1331
1492
|
contextKinds: deps.contextKinds,
|
|
1332
1493
|
sources,
|
|
1333
1494
|
ownedTitles,
|
|
@@ -1607,7 +1768,7 @@ export function createConversationService(deps) {
|
|
|
1607
1768
|
sendRealtime: (userId, id, request, input) => sendMessage(userId, id, request, input),
|
|
1608
1769
|
async withdraw(userId, id, messageId) {
|
|
1609
1770
|
await tx.run(async (unit) => {
|
|
1610
|
-
|
|
1771
|
+
let record = await owned(unit.conn, userId, id);
|
|
1611
1772
|
const message = await messagesRepo(unit.conn).findOne({
|
|
1612
1773
|
filter: { id: messageId, conversationId: id },
|
|
1613
1774
|
});
|
|
@@ -1616,25 +1777,44 @@ export function createConversationService(deps) {
|
|
|
1616
1777
|
const metadata = jsonObject(message.metadata);
|
|
1617
1778
|
if (metadata.withdrawn)
|
|
1618
1779
|
return;
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1780
|
+
if (!metadata.queued && message.runId) {
|
|
1781
|
+
// Match claim's run-before-conversation order. An initial turn has no queued-follow-up marker.
|
|
1782
|
+
// End only a still-unclaimed run, using the existing guarded queued withdrawal. If claim wins, the transaction rolls back and the running turn is kept.
|
|
1783
|
+
const run = await findRunRecord(unit.conn, message.runId);
|
|
1784
|
+
if (!run || run.status !== 'queued' || run.runnerId !== null)
|
|
1785
|
+
throw conversationConflict('messageTaken', 'The agent already has this message.');
|
|
1786
|
+
const ended = await deps.runs.withdrawQueued({
|
|
1787
|
+
subject: subjectOf(id),
|
|
1788
|
+
agentId: record.agentId,
|
|
1789
|
+
actorUserId: userId,
|
|
1790
|
+
byUserId: userId,
|
|
1791
|
+
}, unit);
|
|
1792
|
+
if (!ended.some((run) => run.id === message.runId))
|
|
1793
|
+
throw conversationConflict('messageTaken', 'The agent already has this message.');
|
|
1794
|
+
record = await lockOwned(unit, userId, id, true);
|
|
1795
|
+
}
|
|
1796
|
+
else {
|
|
1797
|
+
record = await lockOwned(unit, userId, id, true);
|
|
1798
|
+
// Taken back only while no runner has it: one conditional update, which a delivery racing it cannot both
|
|
1799
|
+
// pass (`markDelivered` updates only an input not handled).
|
|
1800
|
+
const taken = !metadata.queued ||
|
|
1801
|
+
metadata.pickedUp ||
|
|
1802
|
+
typeof metadata.inputId !== 'string' ||
|
|
1803
|
+
(await inputsRepo(unit.conn).updateMany({
|
|
1804
|
+
filter: (f) => f.and([
|
|
1805
|
+
f.string('id').eq(metadata.inputId),
|
|
1806
|
+
f.date('deliveredAt').empty(),
|
|
1807
|
+
f.date('handledAt').empty(),
|
|
1808
|
+
]),
|
|
1809
|
+
values: { handledAt: now() },
|
|
1810
|
+
})).updatedCount !== 1;
|
|
1811
|
+
if (taken)
|
|
1812
|
+
throw conversationConflict('messageTaken', 'The agent already has this message.');
|
|
1813
|
+
}
|
|
1634
1814
|
await messagesRepo(unit.conn).updateMany({
|
|
1635
1815
|
filter: { id: message.id },
|
|
1636
1816
|
values: {
|
|
1637
|
-
metadata: asJson({ ...metadata, withdrawn: true }),
|
|
1817
|
+
metadata: asJson({ ...metadata, queued: true, withdrawn: true }),
|
|
1638
1818
|
updatedAt: now(),
|
|
1639
1819
|
},
|
|
1640
1820
|
});
|