@xopcai/xopc 0.0.384 → 0.0.386
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSel9yf8.js → agent-avatar-dicebear-D-86VOlb.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-DgHMyhuY.js → agent-defaults-settings-panel-SmeUVHY8.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-plugin-dialog-BosuN4dO.js → agent-plugin-dialog-BVT3wXq5.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-B-pw5RKI.js → agents-D7rLQFhX.js} +3 -3
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DuOqKkfH.js → app-management-settings-panel-CUR7n5iP.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-8JF9rXFr.js → appearance-settings-BCotSGep.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-Cuclpk0A.js → apps-page-hk0bo9LT.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-D7NwNy2I.js → automations-page-CqxuUwox.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-CSxW4wX0.js → automations-workspace-11_Z69pr.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Dnb7CH_l.js → block-editor-eldB84Mj.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-GBgDe21o.js → browser-automations-page-D4TaUPYT.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-B2FXaO3n.js → browser-settings-page-BXRlxeGV.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-XFwwUNU3.js → capabilities-BkKgImWi.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-2Do3eKMM.js → capabilities-DVj9n65C.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-page-f2-MquJn.js → capabilities-page-CyYlueEd.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-D9F0mw16.js → capabilities-settings-panel-uVEgfvo0.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-header-actions-DVRxJPQP.js → capability-header-actions-BXv0xu56.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-CnDm5T1t.js → channels-fNb3SOzm.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-BxSCDbK7.js → chat-terminal-dock-CnLtparQ.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-DVAB-kQw.js → computer-settings-page-xM0AnOlP.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-D2EeLXei.js → connector-service-page-CdG2WUb6.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-DK9n4hgZ.js → connectors-page-BRd08GH6.js} +1 -1
- package/dist/gateway/static/root/assets/constants-CpWu0oHS.js +1 -0
- package/dist/gateway/static/root/assets/{date-picker-Cl9KfFj8.js → date-picker-DIBbE-O8.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-Ei6aX5WM.js → dependency-picker-DDD8zokD.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-4Evl4RKX.js → desktop-pet-KlF390Xn.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DAD_OWcX.js → desktop-pet-settings-CgqQMKDC.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-BA21epMn.js → device-pairing-wizard-BR6isfG2.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-B_Zb5nNR.js → directory-picker-path-field-vPQsW05P.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DtHNy4TE.js → extension-debug-page-ZHLPrLbH.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-8gWSThWP.js → extension-page-DJ42KFRN.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-nbgU7xBS.js → extension-provider-6IcsyNaV.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CunUbB09.js → extension-settings-page-D7-5v0V4.js} +1 -1
- package/dist/gateway/static/root/assets/{fallback-models-BSAfzXby.js → fallback-models-DnYn7qOV.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-CN-2229W.js → gateway-settings-Bwe3JWX-.js} +1 -1
- package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-DktBCtHF.js → highlighted-body-KQOG7T2V-DefTxF3q.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-CUJcNW3H.js → home-page-BtSy2hRV.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-DQm1MNNC.js → imports-page-CTdBYZib.js} +1 -1
- package/dist/gateway/static/root/assets/{index-BPNL54bv.js → index-B08iR7fT.js} +10 -10
- package/dist/gateway/static/root/assets/index-DBRwvWzm.css +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DaC5YjuJ.js → keyboard-shortcuts-settings-CXKp57O_.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-DwQyyo7a.js → local-app-workbench-page-DzD_OzGY.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-CpZhivpf.js → local-apps-page-B0E0vttg.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-Db43nh1M.js → logs-page-eL4fYcMl.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-DrKejBEZ.js → management-settings-DSpjodMC.js} +1 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-BTrk2wWv.js +1 -0
- package/dist/gateway/static/root/assets/{note-detail-panel-a8NSwmmW.js → note-detail-panel-CsY5tQp5.js} +3 -3
- package/dist/gateway/static/root/assets/{notes-page-BKRke43F.js → notes-page-D09LjNoj.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-capture-button-DUaMkmxv.js → page-context-capture-button-DO-aP3D9.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-BqF-HHw1.js → personal-page-E8F2aGNB.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-GrhtTQIz.js → product-open-page-aUoA-uPw.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-zdP7gN0y.js → product-preview-content-B-cz-pIV.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-9Vd_AqDW.js → project-detail-page-WhefAh8E.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-DGunhjoM.js → projects-page-CyqAs0tO.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-BoRsF3Lx.js → remote-access-hub-BwhRGL6m.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-W0HDm--J.js → runtime-tools-settings-panel-o26dmPNq.js} +1 -1
- package/dist/gateway/static/root/assets/{scenes-page-CYsFOfVJ.js → scenes-page-D_e19kv_.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-CBxEbBQq.js → schema-form-DLLdqUC3.js} +1 -1
- package/dist/gateway/static/root/assets/{send-session-input-BCAF-Ikt.js → send-session-input-2I-nFJcE.js} +1 -1
- package/dist/gateway/static/root/assets/session-manager-Co5ozD0l.js +16 -0
- package/dist/gateway/static/root/assets/{sessions-page-Dthfx_vc.js → sessions-page-DX6INsiS.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-C4_gW1vw.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-CFs-WP_2.js → settings-page-Bc_zxxRu.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-D2-9fXYL.js → setup-status-panel-FpF_cPPr.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-nJ2FWAEP.js → share-preview-page-BOCcPBqQ.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-DTb88RHD.js → shares-settings-CInxjxgJ.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-DJ8UBsxq.js → skill-api-Bjd8WAA4.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-DjbBOikT.js → skills-page-8CKS3Oo2.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-Dt5GkLhM.js → system-settings-panel-BgQdsrNw.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-BnG5ehZ6.js +2 -0
- package/dist/gateway/static/root/assets/task-expandable-content-BCuc70Vc.js +1 -0
- package/dist/gateway/static/root/assets/{tasks-DJIeIk9C.js → tasks-PuIUgF9L.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-JHttXi63.js → tunnel-api-CY7MoDGf.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-B3rUa0fW.js → usage-page-s8Sv_PIG.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-BFP3k6oC.js → use-composer-attachments-D0S2iZF4.js} +1 -1
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-B1BiTQNS.js → use-file-preview-expanded-BElqELib.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-Cq1VSsZw.js → user-model-page-CyWrEtHY.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-BAtG_JHv.js → work-discovery-overlay-DmZXLs1v.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Cw12NFgx.js → workflow-run-setup-panel-BdLOzHm4.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-kR5ouOuM.js → workflows-page-Cx3I3AV5.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-api-Xr3wz8T3.js → workspace-api-Du7-xJ0q.js} +2 -2
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-BTBVKpSg.js → xopc-cloud-account-card-D8B136vW.js} +1 -1
- package/dist/gateway/static/root/index.html +12 -12
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/index.js +2 -0
- package/dist/packages/gateway-contract/src/task-research-result.js +89 -0
- package/dist/packages/gateway-contract/src/tasks.js +7 -1
- package/dist/packages/gateway-contract/src/turn-outcome.js +3 -0
- package/dist/src/agent/child-agent-factory.d.ts +4 -1
- package/dist/src/agent/child-agent-factory.js +91 -11
- package/dist/src/agent/context/connection-objective-context.d.ts +1 -0
- package/dist/src/agent/context/connection-objective-context.js +33 -0
- package/dist/src/agent/data-acquisition/service.js +41 -6
- package/dist/src/agent/data-acquisition/types.d.ts +2 -0
- package/dist/src/agent/embedded/agent-profile-context.d.ts +7 -0
- package/dist/src/agent/embedded/agent-profile-context.js +92 -0
- package/dist/src/agent/embedded/execution-tool-policy.d.ts +1 -1
- package/dist/src/agent/embedded/execution-tool-policy.js +3 -2
- package/dist/src/agent/embedded/run-for-session.js +37 -14
- package/dist/src/agent/embedded/run-turn.js +123 -26
- package/dist/src/agent/embedded/runs.d.ts +9 -2
- package/dist/src/agent/embedded/runs.js +30 -7
- package/dist/src/agent/embedded/session-runner.js +14 -3
- package/dist/src/agent/embedded/types.d.ts +6 -1
- package/dist/src/agent/external-tools/cliProvider.d.ts +1 -0
- package/dist/src/agent/external-tools/cliProvider.js +1 -0
- package/dist/src/agent/external-tools/composio-provider.js +2 -0
- package/dist/src/agent/external-tools/gateway-tools.js +15 -5
- package/dist/src/agent/external-tools/service.d.ts +1 -0
- package/dist/src/agent/external-tools/service.js +3 -1
- package/dist/src/agent/external-tools/types.d.ts +4 -0
- package/dist/src/agent/orchestration/agent-run-supervisor.js +2 -1
- package/dist/src/agent/orchestration/agent-turn-policy.d.ts +1 -0
- package/dist/src/agent/orchestration/agent-turn-policy.js +5 -1
- package/dist/src/agent/orchestration/delegation-budget.d.ts +7 -1
- package/dist/src/agent/orchestration/delegation-budget.js +19 -10
- package/dist/src/agent/orchestration/llm-turn-retry.d.ts +5 -0
- package/dist/src/agent/orchestration/llm-turn-retry.js +15 -5
- package/dist/src/agent/orchestration/research-checkpoint.d.ts +56 -0
- package/dist/src/agent/orchestration/research-checkpoint.js +64 -0
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +3 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +15 -2
- package/dist/src/agent/orchestration/run-termination.d.ts +12 -0
- package/dist/src/agent/orchestration/run-termination.js +24 -0
- package/dist/src/agent/orchestration/turn-recovery.d.ts +9 -0
- package/dist/src/agent/orchestration/turn-recovery.js +45 -0
- package/dist/src/agent/prompt/sections/agent-identity.js +12 -7
- package/dist/src/agent/prompt/sections/messaging-runtime.js +1 -1
- package/dist/src/agent/prompt/sections/project-context.js +1 -1
- package/dist/src/agent/prompt/sections/response-language.d.ts +1 -1
- package/dist/src/agent/prompt/sections/response-language.js +6 -2
- package/dist/src/agent/prompt/subagent-context.js +1 -1
- package/dist/src/agent/prompt/system-prompt.js +4 -6
- package/dist/src/agent/service/direct-turn-helpers.js +6 -5
- package/dist/src/agent/service/process-direct-streaming.js +7 -1
- package/dist/src/agent/tasks/task-judge-service.js +30 -10
- package/dist/src/agent/tools/apply-patch.js +1 -1
- package/dist/src/agent/tools/delegate-tool.js +216 -121
- package/dist/src/agent/tools/delegation-policy.js +13 -1
- package/dist/src/agent/tools/factory.js +12 -1
- package/dist/src/agent/tools/index.d.ts +2 -0
- package/dist/src/agent/tools/index.js +3 -1
- package/dist/src/agent/tools/language-diagnostics.js +1 -1
- package/dist/src/agent/tools/personal-request-result-tool.js +20 -3
- package/dist/src/agent/tools/personal-request-tool.js +165 -23
- package/dist/src/agent/tools/personal-task-tool.d.ts +6 -3
- package/dist/src/agent/tools/personal-task-tool.js +146 -23
- package/dist/src/agent/tools/publish-artifacts.js +1 -1
- package/dist/src/agent/tools/research-checkpoint-tool.d.ts +3 -0
- package/dist/src/agent/tools/research-checkpoint-tool.js +28 -0
- package/dist/src/agent/tools/review-workspace.js +1 -1
- package/dist/src/agent/tools/search/cache.d.ts +20 -0
- package/dist/src/agent/tools/search/cache.js +19 -0
- package/dist/src/agent/tools/search/errors.d.ts +19 -0
- package/dist/src/agent/tools/search/errors.js +69 -0
- package/dist/src/agent/tools/search/providers/bing-api.js +2 -1
- package/dist/src/agent/tools/search/providers/bing-html.js +2 -1
- package/dist/src/agent/tools/search/providers/brave.js +2 -1
- package/dist/src/agent/tools/search/providers/duckduckgo-html.js +2 -1
- package/dist/src/agent/tools/search/providers/searxng.js +2 -1
- package/dist/src/agent/tools/search/providers/tavily.js +2 -1
- package/dist/src/agent/tools/search/providers/xopc-cloud.d.ts +1 -0
- package/dist/src/agent/tools/search/providers/xopc-cloud.js +7 -2
- package/dist/src/agent/tools/search/registry.d.ts +21 -5
- package/dist/src/agent/tools/search/registry.js +252 -25
- package/dist/src/agent/tools/search/types.d.ts +25 -0
- package/dist/src/agent/tools/task-collaboration-tool.d.ts +16 -0
- package/dist/src/agent/tools/task-collaboration-tool.js +153 -0
- package/dist/src/agent/tools/task-result-tool.d.ts +2 -0
- package/dist/src/agent/tools/task-result-tool.js +73 -0
- package/dist/src/agent/tools/web.d.ts +16 -2
- package/dist/src/agent/tools/web.js +74 -29
- package/dist/src/agent/tools/xopc-use-tool.js +3 -3
- package/dist/src/automations/capabilities/write.d.ts +4 -4
- package/dist/src/automations/domain/validation.d.ts +8 -8
- package/dist/src/automations/draft/automation-draft-validator.d.ts +2 -2
- package/dist/src/browser/automations/schema.d.ts +2 -2
- package/dist/src/browser/automations/service.d.ts +2 -2
- package/dist/src/cli/commands/channels.js +1 -1
- package/dist/src/cli/commands/connectors.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/config/index.js +2 -2
- package/dist/src/config/schema.d.ts +1 -0
- package/dist/src/config/schema.js +4 -1
- package/dist/src/connectors/connection-recovery-service.d.ts +9 -1
- package/dist/src/connectors/connection-recovery-service.js +213 -33
- package/dist/src/discussions/action-tasks.d.ts +2 -2
- package/dist/src/extensions/sdk/index.js +1 -1
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/hono/routes/connection-waits.js +3 -1
- package/dist/src/gateway/hono/routes/projects.js +1 -1
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +16 -0
- package/dist/src/gateway/hono/routes/tasks.js +1 -1
- package/dist/src/gateway/service/agent-runner.d.ts +2 -0
- package/dist/src/gateway/service/agent-runner.js +30 -17
- package/dist/src/gateway/service/run-gateway-agent.js +21 -6
- package/dist/src/gateway/service/session-input-coordinator.d.ts +10 -1
- package/dist/src/gateway/service/session-input-coordinator.js +216 -27
- package/dist/src/gateway/service.d.ts +1 -0
- package/dist/src/gateway/service.js +6 -4
- package/dist/src/gateway/session-context-summary.js +1 -1
- package/dist/src/personal-agent/prompts.js +10 -3
- package/dist/src/personal-agent/reply-composer.d.ts +1 -0
- package/dist/src/personal-agent/reply-composer.js +91 -19
- package/dist/src/personal-agent/reply-style.d.ts +1 -1
- package/dist/src/personal-agent/reply-style.js +1 -0
- package/dist/src/personal-agent/repository.d.ts +1 -1
- package/dist/src/personal-agent/repository.js +1 -1
- package/dist/src/personal-agent/request-access.d.ts +3 -0
- package/dist/src/personal-agent/request-access.js +31 -0
- package/dist/src/personal-agent/request-delivery.js +9 -4
- package/dist/src/personal-agent/request-repository.d.ts +3 -0
- package/dist/src/personal-agent/request-service.d.ts +6 -0
- package/dist/src/personal-agent/request-service.js +121 -25
- package/dist/src/personal-agent/result-file-links.d.ts +3 -0
- package/dist/src/personal-agent/result-file-links.js +21 -0
- package/dist/src/personal-agent/task-cancel.js +85 -35
- package/dist/src/providers/model-response.js +13 -2
- package/dist/src/scenes/taskFollowUp/service.d.ts +15 -5
- package/dist/src/session/session-context-for-llm.js +2 -2
- package/dist/src/session/store.d.ts +3 -1
- package/dist/src/session/store.js +30 -7
- package/dist/src/storage/sqlite/connection-wait-repository.d.ts +7 -2
- package/dist/src/storage/sqlite/connection-wait-repository.js +124 -20
- package/dist/src/storage/sqlite/index.d.ts +1 -0
- package/dist/src/storage/sqlite/index.js +3 -1
- package/dist/src/storage/sqlite/migrations/250_research_checkpoints.sql +15 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/research-checkpoint-repository.d.ts +24 -0
- package/dist/src/storage/sqlite/research-checkpoint-repository.js +91 -0
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/session-creation-repository.js +3 -2
- package/dist/src/storage/sqlite/session-input-repository.d.ts +16 -0
- package/dist/src/storage/sqlite/session-input-repository.js +41 -7
- package/dist/src/storage/sqlite/transcript-repository.d.ts +2 -0
- package/dist/src/storage/sqlite/transcript-repository.js +25 -1
- package/dist/src/tasks/capabilities/management.d.ts +2 -2
- package/dist/src/tasks/capabilities/relations.d.ts +7 -7
- package/dist/src/tasks/capabilities/write.d.ts +2 -2
- package/dist/src/tasks/index.js +1 -1
- package/dist/src/tasks/task-allocation-service.d.ts +2 -0
- package/dist/src/tasks/task-allocation-service.js +43 -2
- package/dist/src/tasks/task-application-service.js +3 -3
- package/dist/src/tasks/task-collaboration-delivery.js +4 -1
- package/dist/src/tasks/task-collaboration-repository.d.ts +3 -0
- package/dist/src/tasks/task-collaboration-repository.js +11 -1
- package/dist/src/tasks/task-context-assembler.js +19 -6
- package/dist/src/tasks/task-continuation.d.ts +6 -0
- package/dist/src/tasks/task-continuation.js +33 -0
- package/dist/src/tasks/task-contract-planner.d.ts +1 -0
- package/dist/src/tasks/task-contract-planner.js +22 -15
- package/dist/src/tasks/task-main-update-delivery.js +13 -8
- package/dist/src/tasks/task-model-call.d.ts +7 -0
- package/dist/src/tasks/task-model-call.js +35 -0
- package/dist/src/tasks/task-read-model-projector.js +1 -1
- package/dist/src/tasks/task-research-repair.d.ts +19 -0
- package/dist/src/tasks/task-research-repair.js +75 -0
- package/dist/src/tasks/task-research-result.d.ts +85 -0
- package/dist/src/tasks/task-research-result.js +394 -0
- package/dist/src/tasks/task-result-delivery-repository.js +13 -2
- package/dist/src/tasks/task-result-delivery-service.js +1 -1
- package/dist/src/tasks/task-run-coordinator.d.ts +1 -0
- package/dist/src/tasks/task-run-coordinator.js +80 -11
- package/dist/src/tasks/task-run-dispatcher.js +12 -0
- package/dist/src/tasks/task-run-repository.d.ts +13 -0
- package/dist/src/tasks/task-run-repository.js +120 -2
- package/package.json +7 -3
- package/dist/gateway/static/root/assets/constants-Dy8Gw0sF.js +0 -1
- package/dist/gateway/static/root/assets/index-yseLAt9D.css +0 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-C4VzqE9z.js +0 -1
- package/dist/gateway/static/root/assets/session-manager-_yy4bxhT.js +0 -16
- package/dist/gateway/static/root/assets/settings-advanced-gate-O_0Lk38S.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-88EShcbs.js +0 -2
- package/dist/gateway/static/root/assets/task-expandable-content-CF6Bj-Qa.js +0 -1
|
@@ -2,12 +2,16 @@ import { createLogger } from "../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { TaskRepository, init_task_repository } from "./task-repository.js";
|
|
4
4
|
import { TaskRunRepository, init_task_run_repository } from "./task-run-repository.js";
|
|
5
|
+
import { loadTranscriptRowsForSession } from "../storage/sqlite/transcript-repository.js";
|
|
6
|
+
import { init_sqlite } from "../storage/sqlite/index.js";
|
|
7
|
+
import { canResumeAfterModelFailure } from "../agent/orchestration/turn-recovery.js";
|
|
5
8
|
import { resolveTaskLocale } from "./task-language.js";
|
|
6
9
|
import { TaskApplicationService } from "./task-application-service.js";
|
|
7
10
|
//#region src/tasks/task-run-dispatcher.ts
|
|
8
11
|
init_logger();
|
|
9
12
|
init_task_repository();
|
|
10
13
|
init_task_run_repository();
|
|
14
|
+
init_sqlite();
|
|
11
15
|
const log = createLogger("TaskRunDispatcher");
|
|
12
16
|
const LEASE_MS = 6e4;
|
|
13
17
|
const HEARTBEAT_MS = 15e3;
|
|
@@ -35,6 +39,7 @@ var TaskRunDispatcher = class {
|
|
|
35
39
|
}
|
|
36
40
|
async drain() {
|
|
37
41
|
if (this.#stopped) return;
|
|
42
|
+
this.#runs.reconcileCancelledRuns();
|
|
38
43
|
this.reconcileExpiredRuns();
|
|
39
44
|
const count = Math.max(1, Math.min(8, this.deps.maxConcurrency ?? 3));
|
|
40
45
|
await Promise.all(Array.from({ length: count }, (_, slot) => this.drainSlot(`${this.deps.workerId}:${slot}`)));
|
|
@@ -43,6 +48,12 @@ var TaskRunDispatcher = class {
|
|
|
43
48
|
for (const run of this.#runs.listExpiredLeasedRunning()) {
|
|
44
49
|
if (this.#activeRunIds.has(run.id)) continue;
|
|
45
50
|
try {
|
|
51
|
+
if (run.conversationId && canResumeAfterModelFailure(loadTranscriptRowsForSession(run.conversationId)) && this.#runs.scheduleContinuation({
|
|
52
|
+
runId: run.id,
|
|
53
|
+
expectedVersion: run.version,
|
|
54
|
+
reason: "process_restart",
|
|
55
|
+
message: "Execution was interrupted by a process restart. Continue this same task from confirmed tool results. Do not repeat completed operations. If any external effect cannot be confirmed, ask for verification instead of replaying it."
|
|
56
|
+
})) continue;
|
|
46
57
|
const zh = resolveTaskLocale(this.#tasks.require(run.taskId)) === "zh";
|
|
47
58
|
this.#application.completeRun({
|
|
48
59
|
runId: run.id,
|
|
@@ -126,6 +137,7 @@ var TaskRunDispatcher = class {
|
|
|
126
137
|
} catch (error) {
|
|
127
138
|
if (this.#stopped) return;
|
|
128
139
|
const current = this.#runs.get(run.id);
|
|
140
|
+
if (current?.status === "waiting" && current.policySnapshot.continuation) continue;
|
|
129
141
|
if (current && [
|
|
130
142
|
"queued",
|
|
131
143
|
"running",
|
|
@@ -56,6 +56,17 @@ export declare class TaskRunRepository {
|
|
|
56
56
|
now?: number;
|
|
57
57
|
}): TaskRun | undefined;
|
|
58
58
|
listExpiredLeasedRunning(now?: number, limit?: number): TaskRun[];
|
|
59
|
+
/** Finish cancellations persisted before an earlier process could observe execution exit. */
|
|
60
|
+
reconcileCancelledRuns(): number;
|
|
61
|
+
/** Resume the same TaskRun and conversation within its original deadline and attempt budget. */
|
|
62
|
+
scheduleContinuation(input: {
|
|
63
|
+
runId: string;
|
|
64
|
+
expectedVersion: number;
|
|
65
|
+
message: string;
|
|
66
|
+
reason: string;
|
|
67
|
+
repairFingerprint?: string;
|
|
68
|
+
now?: number;
|
|
69
|
+
}): boolean;
|
|
59
70
|
finalize(input: {
|
|
60
71
|
runId: string;
|
|
61
72
|
expectedVersion: number;
|
|
@@ -93,6 +104,8 @@ export declare class TaskRunRepository {
|
|
|
93
104
|
getWait(waitId: string): TaskWait | undefined;
|
|
94
105
|
requireWait(waitId: string): TaskWait;
|
|
95
106
|
listActiveWaits(taskId: string): TaskWait[];
|
|
107
|
+
/** A Run's cancellation owns all its waits, never those of another Run on the same Task. */
|
|
108
|
+
resolveCancelledRunWaits(runId: string, actor: ActorRef): number;
|
|
96
109
|
resolveWait(input: {
|
|
97
110
|
waitId: string;
|
|
98
111
|
actor: ActorRef;
|
|
@@ -74,7 +74,7 @@ function receiptFromRow(row) {
|
|
|
74
74
|
finalizedAt: row.finalized_at
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
|
-
var ACTIVE_RUN_STATUSES, TaskRunRepository;
|
|
77
|
+
var ACTIVE_RUN_STATUSES, CANCELLED_ACTIVE_RUNS, TaskRunRepository;
|
|
78
78
|
var init_task_run_repository = __esmMin((() => {
|
|
79
79
|
init_transaction();
|
|
80
80
|
init_task_change_events();
|
|
@@ -85,10 +85,23 @@ var init_task_run_repository = __esmMin((() => {
|
|
|
85
85
|
"waiting",
|
|
86
86
|
"verifying"
|
|
87
87
|
];
|
|
88
|
+
CANCELLED_ACTIVE_RUNS = `SELECT run.run_id FROM task_runs run
|
|
89
|
+
WHERE ((run.status = 'cancelled' AND EXISTS (SELECT 1 FROM task_waits remaining
|
|
90
|
+
WHERE remaining.task_run_id = run.run_id AND remaining.status = 'active'))
|
|
91
|
+
OR (run.status IN ('queued','running','waiting','verifying') AND (
|
|
92
|
+
EXISTS (SELECT 1 FROM session_connection_waits wait WHERE wait.status = 'closed'
|
|
93
|
+
AND json_extract(wait.data_json, '$.resolution') = 'cancelled' AND (
|
|
94
|
+
json_extract(wait.data_json, '$.taskRunId') = run.run_id
|
|
95
|
+
OR EXISTS (SELECT 1 FROM session_inputs origin WHERE origin.id = json_extract(wait.data_json, '$.originInputId')
|
|
96
|
+
AND origin.task_run_id = run.run_id)
|
|
97
|
+
OR EXISTS (SELECT 1 FROM task_waits task_wait WHERE task_wait.task_run_id = run.run_id
|
|
98
|
+
AND json_extract(task_wait.condition_json, '$.connectionWaitId') = wait.id)))
|
|
99
|
+
OR EXISTS (SELECT 1 FROM command_deduplication command WHERE command.command_type = 'task.close'
|
|
100
|
+
AND command.subject_id = run.task_id AND json_extract(command.result_json, '$.cancellationRunId') = run.run_id))))`;
|
|
88
101
|
TaskRunRepository = class {
|
|
89
102
|
nextAgentInputClientMessageId(runId) {
|
|
90
103
|
const finished = getSqliteDatabase().prepare(`SELECT COUNT(*) AS count FROM session_inputs
|
|
91
|
-
WHERE task_run_id = ? AND status IN ('completed', 'suspended')`).get(runId);
|
|
104
|
+
WHERE task_run_id = ? AND status IN ('completed', 'suspended', 'failed', 'interrupted', 'cancelled')`).get(runId);
|
|
92
105
|
return finished.count === 0 ? `task:${runId}` : `task:${runId}:resume:${finished.count}`;
|
|
93
106
|
}
|
|
94
107
|
create(input) {
|
|
@@ -204,6 +217,87 @@ var init_task_run_repository = __esmMin((() => {
|
|
|
204
217
|
AND lease_expires_at IS NOT NULL AND lease_expires_at <= ?
|
|
205
218
|
ORDER BY lease_expires_at LIMIT ?`).all(now, Math.max(1, Math.min(200, Math.floor(limit)))).map(fromRow);
|
|
206
219
|
}
|
|
220
|
+
/** Finish cancellations persisted before an earlier process could observe execution exit. */
|
|
221
|
+
reconcileCancelledRuns() {
|
|
222
|
+
return runSqliteWriteTransaction((db) => {
|
|
223
|
+
const rows = db.prepare(CANCELLED_ACTIVE_RUNS).all();
|
|
224
|
+
let completed = 0;
|
|
225
|
+
for (const row of rows) {
|
|
226
|
+
const run = this.get(row.run_id);
|
|
227
|
+
if (!run) continue;
|
|
228
|
+
const cleared = this.resolveCancelledRunWaits(run.id, { kind: "system" });
|
|
229
|
+
if (run.status === "cancelled") {
|
|
230
|
+
if (cleared) completed++;
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (run && this.finalize({
|
|
234
|
+
runId: run.id,
|
|
235
|
+
expectedVersion: run.version,
|
|
236
|
+
actor: { kind: "system" },
|
|
237
|
+
terminalCode: "cancelled_by_user",
|
|
238
|
+
receipt: {
|
|
239
|
+
status: "cancelled",
|
|
240
|
+
summary: "Task cancelled",
|
|
241
|
+
changes: [],
|
|
242
|
+
evidence: [],
|
|
243
|
+
verification: {
|
|
244
|
+
status: "unverified",
|
|
245
|
+
checks: []
|
|
246
|
+
},
|
|
247
|
+
remainingWork: [],
|
|
248
|
+
needsUser: false,
|
|
249
|
+
completionVerdict: "not_achieved"
|
|
250
|
+
}
|
|
251
|
+
})) {
|
|
252
|
+
const task = new TaskRepository().require(run.taskId);
|
|
253
|
+
enqueueTaskChangedEvent(db, {
|
|
254
|
+
taskId: task.id,
|
|
255
|
+
projectId: task.projectId,
|
|
256
|
+
version: task.version,
|
|
257
|
+
changedFields: ["runs", "receipts"],
|
|
258
|
+
actor: { kind: "system" },
|
|
259
|
+
source: "runtime"
|
|
260
|
+
});
|
|
261
|
+
completed++;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return completed;
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
/** Resume the same TaskRun and conversation within its original deadline and attempt budget. */
|
|
268
|
+
scheduleContinuation(input) {
|
|
269
|
+
const now = input.now ?? Date.now();
|
|
270
|
+
return runSqliteWriteTransaction((db) => {
|
|
271
|
+
const run = this.get(input.runId);
|
|
272
|
+
if (db.prepare(`${CANCELLED_ACTIVE_RUNS} AND run.run_id = ?`).get(input.runId)) return false;
|
|
273
|
+
if (!run || run.version !== input.expectedVersion || !["running", "verifying"].includes(run.status) || run.parentRunId || !run.conversationId || run.timeoutAt !== void 0 && run.timeoutAt <= now || this.listActiveWaits(run.taskId).length > 0) return false;
|
|
274
|
+
const execution = db.prepare("SELECT active_conversation_id FROM task_conversation_state WHERE task_id = ?").get(run.taskId);
|
|
275
|
+
if (execution?.active_conversation_id && execution.active_conversation_id !== run.conversationId) return false;
|
|
276
|
+
const task = new TaskRepository().require(run.taskId);
|
|
277
|
+
if (task.phase !== "active" || run.contractVersion !== task.latestContractVersion) return false;
|
|
278
|
+
const attempts = Number(run.policySnapshot.continuationAttempts ?? 0);
|
|
279
|
+
const maxAttempts = Math.max(1, Math.min(3, Number(run.retryPolicy.maxAttempts ?? 1)));
|
|
280
|
+
if (!Number.isFinite(attempts) || !Number.isFinite(maxAttempts) || attempts >= maxAttempts - 1) return false;
|
|
281
|
+
if (input.repairFingerprint && run.policySnapshot.repairFingerprint === input.repairFingerprint) return false;
|
|
282
|
+
const policy = {
|
|
283
|
+
...run.policySnapshot,
|
|
284
|
+
continuationAttempts: attempts + 1,
|
|
285
|
+
...input.repairFingerprint ? { repairFingerprint: input.repairFingerprint } : {},
|
|
286
|
+
continuation: {
|
|
287
|
+
message: input.message,
|
|
288
|
+
reason: input.reason,
|
|
289
|
+
transcriptId: db.prepare("SELECT active_transcript_id FROM sessions WHERE conversation_id = ?").get(run.conversationId)?.active_transcript_id
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
if (!db.prepare(`UPDATE task_runs SET status = 'waiting', policy_snapshot_json = ?,
|
|
293
|
+
lease_owner = NULL, lease_expires_at = NULL, version = version + 1 WHERE run_id = ? AND version = ?`).run(JSON.stringify(policy), run.id, run.version).changes) return false;
|
|
294
|
+
this.appendEvent(db, run.id, "task_run.continuation_scheduled", {
|
|
295
|
+
reason: input.reason,
|
|
296
|
+
attempt: attempts + 2
|
|
297
|
+
}, { kind: "system" }, now);
|
|
298
|
+
return true;
|
|
299
|
+
});
|
|
300
|
+
}
|
|
207
301
|
finalize(input) {
|
|
208
302
|
const now = input.now ?? Date.now();
|
|
209
303
|
return runSqliteWriteTransaction((db) => {
|
|
@@ -301,6 +395,30 @@ var init_task_run_repository = __esmMin((() => {
|
|
|
301
395
|
return getSqliteDatabase().prepare(`SELECT * FROM task_waits WHERE task_id = ? AND status = 'active'
|
|
302
396
|
ORDER BY created_at ASC`).all(taskId).map(waitFromRow);
|
|
303
397
|
}
|
|
398
|
+
/** A Run's cancellation owns all its waits, never those of another Run on the same Task. */
|
|
399
|
+
resolveCancelledRunWaits(runId, actor) {
|
|
400
|
+
return runSqliteWriteTransaction((db) => {
|
|
401
|
+
const run = this.get(runId);
|
|
402
|
+
if (!run) return 0;
|
|
403
|
+
let resolved = 0;
|
|
404
|
+
for (const wait of this.listActiveWaits(run.taskId)) if (wait.taskRunId === run.id && this.resolveWait({
|
|
405
|
+
waitId: wait.id,
|
|
406
|
+
actor,
|
|
407
|
+
resolution: { cancelled: true }
|
|
408
|
+
})) resolved++;
|
|
409
|
+
if (resolved) {
|
|
410
|
+
const task = new TaskRepository().require(run.taskId);
|
|
411
|
+
enqueueTaskChangedEvent(db, {
|
|
412
|
+
taskId: task.id,
|
|
413
|
+
projectId: task.projectId,
|
|
414
|
+
version: task.version,
|
|
415
|
+
changedFields: ["runs"],
|
|
416
|
+
actor
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
return resolved;
|
|
420
|
+
});
|
|
421
|
+
}
|
|
304
422
|
resolveWait(input) {
|
|
305
423
|
const now = input.now ?? Date.now();
|
|
306
424
|
return runSqliteWriteTransaction((db) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xopcai/xopc",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.386",
|
|
4
4
|
"description": "Local-first personal AI with Ada, task delegation, files, projects, workflows, and automations. Use cloud or local models.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -170,10 +170,10 @@
|
|
|
170
170
|
"vue": "^3.5.35",
|
|
171
171
|
"@xopcai/browser-control-contract": "0.1.0",
|
|
172
172
|
"@xopcai/computer-control-contract": "0.1.0",
|
|
173
|
-
"@xopcai/endpoint-tools-client": "0.0.0",
|
|
174
173
|
"@xopcai/endpoint-tools-protocol": "0.0.0",
|
|
175
|
-
"@xopcai/
|
|
174
|
+
"@xopcai/endpoint-tools-client": "0.0.0",
|
|
176
175
|
"@xopcai/gateway-contract": "0.0.0",
|
|
176
|
+
"@xopcai/image-providers": "0.1.0",
|
|
177
177
|
"@xopcai/realtime-client": "0.0.0",
|
|
178
178
|
"@xopcai/realtime-protocol": "0.0.0"
|
|
179
179
|
},
|
|
@@ -242,6 +242,10 @@
|
|
|
242
242
|
"test:startup:gateway:check": "node --import tsx scripts/bench-gateway-startup.ts --runs 2 --warmup 0 --ready-budget-ms 20000",
|
|
243
243
|
"test:startup:imports": "node scripts/check-cli-bootstrap-imports.mjs",
|
|
244
244
|
"eval:coder": "tsx evals/coder/apps/cli/src/main.ts",
|
|
245
|
+
"eval:personal:p0": "tsx scripts/personal-delivery-benchmark.mts",
|
|
246
|
+
"eval:personal:p1": "tsx scripts/personal-delivery-benchmark.mts --suite p1",
|
|
247
|
+
"eval:personal:p2": "tsx scripts/personal-delivery-benchmark.mts --suite p2",
|
|
248
|
+
"eval:personal:live-repair": "tsx scripts/personal-repair-live-benchmark.mts",
|
|
245
249
|
"eval:coder:check": "pnpm -C evals/coder run check",
|
|
246
250
|
"eval:coder:smoke": "pnpm -C evals/coder run smoke",
|
|
247
251
|
"eval:coder:web": "tsx evals/coder/apps/web/src/server.ts",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,l as t,p as n,r,s as i,t as a,u as o}from"./schemas-CObaziC7.js";var s=a([`document`,`spreadsheet`,`presentation`,`pdf`,`image`,`video`,`audio`,`site`,`archive`,`file`]),c=a([`workspace`,`external_host`,`worktree`,`remote_runtime`,`artifact_store`]),l=a([`materializing`,`available`,`expired`,`missing`,`failed`]),u=a([`preview`,`download`,`open`,`import`,`share`,`regenerate`]),d=o({artifactId:n().min(1),sourceFileId:n().min(1).optional(),title:n().min(1),kind:s,mimeType:n().optional(),sizeBytes:t().nonnegative().optional(),availability:l,location:c,capabilities:r(u),uri:n().optional(),workspaceRelativePath:n().optional(),shareUrl:n().url().optional(),thumbnailUrl:n().optional(),expiresAt:n().optional()}),f=o({path:n().min(1),status:a([`added`,`modified`,`deleted`,`renamed`]).optional(),added:t().nonnegative().optional(),removed:t().nonnegative().optional()}),p=o({changeSetId:n().min(1),files:r(f),added:t().nonnegative(),removed:t().nonnegative(),diff:n(),diffTruncated:e().optional(),environment:a([`workspace`,`worktree`,`remote_runtime`])}),m=o({evidenceId:n().min(1),kind:a([`check`,`screenshot`,`video`,`log`]),label:n().min(1),status:a([`passed`,`failed`,`warning`]),durationMs:t().nonnegative().optional(),command:n().optional(),artifactId:n().optional(),revision:n().optional(),logPath:n().optional()}),h=o({version:i(1),outcomeId:n().min(1),runId:n().min(1),turnId:n().min(1),status:a([`succeeded`,`partial`,`failed`]),summary:n().optional(),deliverables:r(d),changeSet:p.optional(),evidence:r(m),createdAt:n()}),g=`xopc-file:`;function _(e){if(!e.startsWith(g))return null;try{return decodeURIComponent(e.slice(10)).trim()||null}catch{return null}}function v(e){let t=new Map(e.map(e=>[e.artifactId,e])),n=new Map,r=e=>e.availability===`available`?e.location===`artifact_store`?2:1:0;for(let e of t.values()){let t=e.sourceFileId??_(e.uri??``),i=t?`source:${t}`:`artifact:${e.artifactId}`,a=n.get(i);(!a||r(e)>=r(a))&&n.set(i,e)}return[...n.values()]}function y(e){let t=h.safeParse(e);return t.success?{...t.data,deliverables:v(t.data.deliverables)}:null}var b=32*1024*1024;export{y as i,h as n,_ as r,b as t};
|