@xopcai/xopc 0.0.385 → 0.0.387
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/dist/sidepanel.js +1 -1
- 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-Cb9eaXxR.js → agent-avatar-dicebear-Bv8M5ygD.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-DEV-xtgm.js → agent-defaults-settings-panel-UBy01-65.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-plugin-dialog-DXKc3Luj.js → agent-plugin-dialog-Q9guA8kU.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-DcNxwpJQ.js → agents-yfJFubD0.js} +3 -3
- package/dist/gateway/static/root/assets/{app-management-settings-panel-X5i0Tz7_.js → app-management-settings-panel-Cdyad8c1.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CmHHzquT.js → appearance-settings-DPPvnKH_.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-ChFA4Zp0.js → apps-page-Bn_jwaeA.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BFqsIqOI.js → automations-page-CAB2sLJ5.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-Blfak-fT.js → automations-workspace-CYRUhhH4.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-CpOLG3Co.js → block-editor-B9DmMEa8.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-BSbTJ9j2.js → browser-automations-page-BHAWpZE2.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-BUlILJrB.js → browser-settings-page-BG_17NcQ.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-2Do3eKMM.js → capabilities-BX1rCiVm.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-XFwwUNU3.js → capabilities-CW389yo6.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-page-CeRdkwRf.js → capabilities-page-BAnBYWlY.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-S-cKsGja.js → capabilities-settings-panel-Ca-d6lXk.js} +3 -3
- package/dist/gateway/static/root/assets/{capability-header-actions-6w8pQhnn.js → capability-header-actions-B3TL8TcF.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-DfNTGBmp.js → channels-BadpS-nq.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-DnoQHpDc.js → chat-terminal-dock-C_vntFpP.js} +1 -1
- package/dist/gateway/static/root/assets/{chunk-KS7C4IRE-BMYIfy9x.js → chunk-KS7C4IRE--EKdQGRF.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-7yliE7sG.js → computer-settings-page-B-5kxk70.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-DOLAUFSW.js → connector-service-page-DTnfpLHL.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-DAsn97XG.js → connectors-page-CmJV7gqj.js} +1 -1
- package/dist/gateway/static/root/assets/constants-DeXt1mV-.js +1 -0
- package/dist/gateway/static/root/assets/{date-picker-DNDqr4Fk.js → date-picker-D5zYeC8q.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-B5oG7RgE.js → dependency-picker-D72vT-tb.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-K7kUCX1O.js → desktop-pet-DvoeVPf_.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-KgOAuqSh.js → desktop-pet-settings-Dfb392hs.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-DvqniZDm.js → device-pairing-wizard-B06Sqn5D.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-BmOguLDl.js → directory-picker-path-field-CA3H3bc-.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DtHNy4TE.js → extension-debug-page-B0wTBCx4.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DSSuMQxp.js → extension-page-BeHiXhB1.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-nbgU7xBS.js → extension-provider-CJZ5EVpQ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DSd__mNd.js → extension-settings-page-Q88-LFCJ.js} +1 -1
- package/dist/gateway/static/root/assets/{fallback-models-D7bjbiwZ.js → fallback-models-BXoPCvzq.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-hSXGWumL.js → gateway-settings-IICLMGDI.js} +1 -1
- package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-C7xJwE61.js → highlighted-body-KQOG7T2V-D336so8z.js} +1 -1
- package/dist/gateway/static/root/assets/home-page--MvqsFhQ.js +2 -0
- package/dist/gateway/static/root/assets/{imports-page-BufZPzGE.js → imports-page-muV1SduS.js} +1 -1
- package/dist/gateway/static/root/assets/index-D0qMv3jf.js +260 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-B8pPP5RF.js → keyboard-shortcuts-settings-i1sDWcwl.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-zEtvE7pJ.js → local-app-workbench-page-DY9tXEO6.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-Bli7e_eg.js → local-apps-page-BHD73STy.js} +1 -1
- package/dist/gateway/static/root/assets/local-session-drafts-Be4BGM4Z.js +1 -0
- package/dist/gateway/static/root/assets/{logs-page-BimZk3R4.js → logs-page-DsPpe8Ws.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-5Y4COyU9.js → management-settings-Buwi2wQE.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-DHfQAvZQ.js → markdown-view-CBjl-XEc.js} +2 -2
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-D2mip-f9.js +1 -0
- package/dist/gateway/static/root/assets/{note-detail-panel-KLDPLVg7.js → note-detail-panel-D8n80Gbr.js} +3 -3
- package/dist/gateway/static/root/assets/{notes-api-nqN2wKYc.js → notes-api-BlGP533W.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-DST0oPXD.js → notes-page-Btf-jSS_.js} +5 -5
- package/dist/gateway/static/root/assets/{page-context-capture-button-Bmed83-6.js → page-context-capture-button-97RL8Gc7.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-BG4Ystrm.js → personal-page-B04L8Oz5.js} +1 -1
- package/dist/gateway/static/root/assets/product-open-page-9zEDvZa7.js +1 -0
- package/dist/gateway/static/root/assets/{product-preview-content-DjmupQSq.js → product-preview-content-DynBrIXq.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-CzBmV0P6.js → project-detail-page-BM7MsoVA.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-DByqe5Em.js → projects-page-pcyeEJnz.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-DTjj-odF.js → remote-access-hub-CphyTu22.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-B_ptn3T8.js → runtime-tools-settings-panel-DPafoO0G.js} +1 -1
- package/dist/gateway/static/root/assets/{scenes-page-wkua4l5y.js → scenes-page-j97FrDRW.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-VvOSM84Y.js → schema-form-CuJNwKHO.js} +1 -1
- package/dist/gateway/static/root/assets/{send-session-input-BCAF-Ikt.js → send-session-input-C293-Hbx.js} +1 -1
- package/dist/gateway/static/root/assets/session-manager-COd9RECl.js +16 -0
- package/dist/gateway/static/root/assets/{sessions-page-D06XwYAT.js → sessions-page-D8t_8fMl.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CDkitNHA.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-C-6BJdb1.js → settings-page-DS9DMYUe.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-L0JSG0K-.js → setup-status-panel-DRDvm9yZ.js} +1 -1
- package/dist/gateway/static/root/assets/{share-link-dialog-C47Xgzta.js → share-link-dialog-BKGI8Kr0.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-nJ2FWAEP.js → share-preview-page-BF2WaO43.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-BbgAUM3v.js → shares-settings-DQTQZu6V.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-BFU1tPyw.js → skill-api-DzVa7G-O.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-DZw6el4o.js → skills-page-CfJIjRdS.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-DshSGWNg.js → system-settings-panel-Bzhqed-a.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-BYQFC0-U.js +2 -0
- package/dist/gateway/static/root/assets/task-expandable-content-C9ohICpw.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-DFDXwWnU.js → tunnel-api-DrgpZ81I.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-2RJLg54s.js → usage-page-Drk8FWnj.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-BFP3k6oC.js → use-composer-attachments-rgW7h4sD.js} +1 -1
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-B1BiTQNS.js → use-file-preview-expanded-DSKIxfz9.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-y1gjGYPI.js → user-model-page-07t2-nFE.js} +2 -2
- package/dist/gateway/static/root/assets/{work-discovery-overlay-Ch-KfpCF.js → work-discovery-overlay-TQ5bjVot.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CTu297Hc.js → workflow-run-setup-panel-C9HP2uGG.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-CRZXG_rm.js → workflows-page-DK01JRI1.js} +3 -3
- package/dist/gateway/static/root/assets/{workspace-api-Xr3wz8T3.js → workspace-api-JWHOFos6.js} +2 -2
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-hEfjVjnc.js → xopc-cloud-account-card-B-BhQdAf.js} +1 -1
- package/dist/gateway/static/root/index.html +16 -16
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/index.js +4 -0
- package/dist/packages/gateway-contract/src/result-reference.js +25 -0
- package/dist/packages/gateway-contract/src/session-input-command.js +2 -1
- package/dist/packages/gateway-contract/src/task-research-result.js +90 -0
- package/dist/packages/gateway-contract/src/task-result-delivery.js +21 -0
- package/dist/packages/gateway-contract/src/tasks.js +7 -1
- package/dist/packages/gateway-contract/src/turn-outcome.js +4 -0
- package/dist/src/agent/agent-manager.js +3 -3
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/child-agent-factory.d.ts +4 -1
- package/dist/src/agent/child-agent-factory.js +86 -12
- 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/run-for-session.js +5 -2
- package/dist/src/agent/embedded/run-turn.js +19 -6
- 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 +5 -2
- package/dist/src/agent/embedded/types.d.ts +4 -0
- package/dist/src/agent/embedded/xopc-tools-bridge.js +13 -2
- package/dist/src/agent/external-tools/cliProvider.js +1 -1
- package/dist/src/agent/external-tools/composio-provider.js +2 -2
- package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
- package/dist/src/agent/external-tools/gateway-tools.js +8 -4
- package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
- package/dist/src/agent/orchestration/agent-run-supervisor.js +2 -1
- 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 +17 -9
- 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 +4 -1
- package/dist/src/agent/orchestration/turn-recovery.js +19 -3
- 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.d.ts +2 -0
- package/dist/src/agent/service/direct-turn-helpers.js +4 -0
- package/dist/src/agent/service/process-direct-one-shot.js +4 -1
- package/dist/src/agent/service/process-direct-streaming.js +3 -2
- package/dist/src/agent/service.js +2 -2
- package/dist/src/agent/skills/index.js +1 -1
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/source-context/index.js +1 -1
- package/dist/src/agent/source-context/result-context.d.ts +2 -0
- package/dist/src/agent/source-context/result-context.js +32 -0
- package/dist/src/agent/source-context/types.d.ts +2 -2
- package/dist/src/agent/source-context/types.js +1 -1
- package/dist/src/agent/tasks/task-judge-service.js +3 -1
- 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/exec-command.js +47 -2
- package/dist/src/agent/tools/factory.js +19 -10
- package/dist/src/agent/tools/index.d.ts +1 -0
- package/dist/src/agent/tools/index.js +2 -1
- package/dist/src/agent/tools/language-diagnostics.js +1 -1
- package/dist/src/agent/tools/personal-performance.d.ts +2 -0
- package/dist/src/agent/tools/personal-performance.js +82 -0
- package/dist/src/agent/tools/personal-read-tool.js +1 -1
- package/dist/src/agent/tools/personal-request-tool.js +9 -14
- package/dist/src/agent/tools/personal-result-tool.d.ts +2 -0
- package/dist/src/agent/tools/personal-result-tool.js +106 -0
- package/dist/src/agent/tools/personal-task-tool.d.ts +12 -3
- package/dist/src/agent/tools/personal-task-tool.js +115 -10
- 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 +21 -2
- 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/send-media.js +1 -1
- package/dist/src/agent/tools/task-collaboration-tool.d.ts +9 -1
- package/dist/src/agent/tools/task-collaboration-tool.js +121 -2
- package/dist/src/agent/tools/task-evidence.d.ts +3 -0
- package/dist/src/agent/tools/task-evidence.js +71 -0
- package/dist/src/agent/tools/task-result-tool.d.ts +2 -0
- package/dist/src/agent/tools/task-result-tool.js +93 -0
- package/dist/src/agent/tools/tool-media.js +1 -1
- 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 +27 -6
- package/dist/src/agent/workspace-runtime/registry.js +1 -1
- package/dist/src/agent-catalog/capabilities.js +2 -2
- package/dist/src/automations/capabilities/drafts.js +1 -1
- 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/automations/service/action-executor.js +1 -1
- package/dist/src/bootstrap/application-state.js +1 -1
- package/dist/src/browser/automations/schema.d.ts +2 -2
- package/dist/src/browser/automations/service.d.ts +2 -2
- package/dist/src/capabilities/runtime/dispatcher.js +1 -1
- package/dist/src/capabilities/runtime/product.js +1 -1
- package/dist/src/chat-commands/agent-edit.js +1 -1
- package/dist/src/cli/commands/agent.js +1 -1
- package/dist/src/cli/commands/agents.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard/model.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/config/agent-profile.js +2 -2
- package/dist/src/config/index.js +2 -2
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/config/schema.d.ts +1 -0
- package/dist/src/config/schema.js +5 -2
- package/dist/src/connectors/connection-recovery-service.d.ts +3 -1
- package/dist/src/connectors/connection-recovery-service.js +67 -6
- package/dist/src/discussions/action-tasks.d.ts +2 -2
- package/dist/src/extensions/agent-plugins/validation.js +1 -1
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/routes/agent-stream.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
- package/dist/src/gateway/hono/routes/connectors.js +1 -1
- package/dist/src/gateway/hono/routes/context-sources.js +1 -1
- package/dist/src/gateway/hono/routes/notes.js +2 -2
- package/dist/src/gateway/hono/routes/projects.js +3 -3
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +18 -2
- package/dist/src/gateway/hono/routes/session-input-handler.js +2 -2
- package/dist/src/gateway/hono/routes/tasks.js +2 -2
- package/dist/src/gateway/image-generation-setup.js +1 -1
- package/dist/src/gateway/lock.js +1 -1
- package/dist/src/gateway/media-access.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 +32 -2
- package/dist/src/gateway/service/session-input-coordinator.d.ts +10 -1
- package/dist/src/gateway/service/session-input-coordinator.js +214 -27
- package/dist/src/gateway/service.d.ts +1 -0
- package/dist/src/gateway/service.js +49 -16
- package/dist/src/gateway/session-context-summary.js +1 -1
- package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
- package/dist/src/home-intelligence/host.js +2 -2
- package/dist/src/local-apps/service.js +1 -1
- package/dist/src/media/session-references.js +1 -1
- package/dist/src/personal-agent/communication.js +1 -0
- package/dist/src/personal-agent/performance.d.ts +83 -0
- package/dist/src/personal-agent/performance.js +65 -0
- package/dist/src/personal-agent/policy.d.ts +1 -1
- package/dist/src/personal-agent/policy.js +1 -0
- package/dist/src/personal-agent/proactivity/service.js +1 -1
- package/dist/src/personal-agent/prompt-context.js +3 -1
- package/dist/src/personal-agent/prompts.js +10 -4
- package/dist/src/personal-agent/reply-composer.d.ts +1 -0
- package/dist/src/personal-agent/reply-composer.js +149 -20
- 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-delivery.js +3 -1
- package/dist/src/personal-agent/request-repository.d.ts +2 -0
- package/dist/src/personal-agent/request-service.d.ts +4 -0
- package/dist/src/personal-agent/request-service.js +91 -20
- package/dist/src/personal-agent/result-extraction.d.ts +42 -0
- package/dist/src/personal-agent/result-extraction.js +209 -0
- 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/result-read-continuations.d.ts +13 -0
- package/dist/src/personal-agent/result-read-continuations.js +78 -0
- package/dist/src/personal-agent/result-reader.d.ts +43 -0
- package/dist/src/personal-agent/result-reader.js +461 -0
- package/dist/src/personal-agent/service.js +2 -2
- package/dist/src/personal-agent/task-cancel.js +85 -35
- package/dist/src/providers/model-catalog-persistence.js +1 -1
- package/dist/src/routing/resolve-route.js +1 -1
- package/dist/src/routing/resolve-tui-session-key.js +1 -1
- package/dist/src/scenes/taskFollowUp/service.d.ts +15 -5
- package/dist/src/session/client-history.d.ts +1 -1
- package/dist/src/session/client-history.js +1 -1
- package/dist/src/session/session-context-for-llm.js +4 -2
- package/dist/src/session/store.d.ts +3 -1
- package/dist/src/session/store.js +13 -3
- package/dist/src/share/hosted-session-share.js +1 -1
- package/dist/src/storage/sqlite/connection-wait-repository.d.ts +5 -2
- package/dist/src/storage/sqlite/connection-wait-repository.js +42 -17
- 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/251_personal_result_reads.sql +40 -0
- package/dist/src/storage/sqlite/migrations/252_task_work_revisions.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/tasks/capabilities/management.d.ts +2 -2
- package/dist/src/tasks/capabilities/read.js +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/capabilities/write.js +1 -1
- 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 +100 -8
- package/dist/src/tasks/task-application-service.d.ts +18 -0
- package/dist/src/tasks/task-application-service.js +133 -2
- package/dist/src/tasks/task-context-assembler.js +13 -5
- package/dist/src/tasks/task-continuation.d.ts +1 -0
- package/dist/src/tasks/task-continuation.js +1 -0
- package/dist/src/tasks/task-contract-definition.d.ts +3 -0
- package/dist/src/tasks/task-contract-planner.d.ts +1 -0
- package/dist/src/tasks/task-contract-planner.js +61 -20
- package/dist/src/tasks/task-conversation-repository.js +1 -1
- package/dist/src/tasks/task-evidence-ranges.d.ts +7 -0
- package/dist/src/tasks/task-evidence-ranges.js +20 -0
- package/dist/src/tasks/task-execution-capabilities.d.ts +26 -0
- package/dist/src/tasks/task-execution-capabilities.js +117 -0
- package/dist/src/tasks/task-handoff-service.js +1 -1
- package/dist/src/tasks/task-handoff.d.ts +56 -0
- package/dist/src/tasks/task-handoff.js +510 -0
- 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.d.ts +6 -0
- package/dist/src/tasks/task-read-model-projector.js +12 -1
- package/dist/src/tasks/task-research-repair.d.ts +19 -0
- package/dist/src/tasks/task-research-repair.js +79 -0
- package/dist/src/tasks/task-research-result.d.ts +99 -0
- package/dist/src/tasks/task-research-result.js +478 -0
- package/dist/src/tasks/task-result-delivery-repository.js +37 -3
- package/dist/src/tasks/task-result-delivery-service.js +38 -10
- package/dist/src/tasks/task-run-coordinator.js +71 -15
- package/dist/src/tasks/task-run-dispatcher.d.ts +1 -0
- package/dist/src/tasks/task-run-dispatcher.js +3 -1
- package/dist/src/tasks/task-run-repository.d.ts +5 -0
- package/dist/src/tasks/task-run-repository.js +88 -1
- package/dist/src/tui/backends/embedded-backend.js +2 -2
- package/dist/src/voice/realtime/persona-context.js +1 -1
- package/package.json +12 -6
- package/dist/gateway/static/root/assets/constants-Dy8Gw0sF.js +0 -1
- package/dist/gateway/static/root/assets/home-page-DJNmlMfH.js +0 -2
- package/dist/gateway/static/root/assets/index-K8SXDtxr.js +0 -260
- package/dist/gateway/static/root/assets/local-session-drafts-D_tYFy7d.js +0 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-DBRj4-1-.js +0 -1
- package/dist/gateway/static/root/assets/product-open-page-CXkYP9xE.js +0 -1
- package/dist/gateway/static/root/assets/session-manager-_yy4bxhT.js +0 -16
- package/dist/gateway/static/root/assets/settings-advanced-gate-DoAHy1wj.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-CfZhq4XZ.js +0 -2
- package/dist/gateway/static/root/assets/task-expandable-content-CF6Bj-Qa.js +0 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
CREATE TABLE personal_result_documents (
|
|
2
|
+
document_id TEXT PRIMARY KEY,
|
|
3
|
+
delivery_id TEXT NOT NULL REFERENCES task_result_deliveries(delivery_id) ON DELETE CASCADE,
|
|
4
|
+
source_id TEXT NOT NULL,
|
|
5
|
+
status TEXT NOT NULL CHECK(status IN ('pending', 'ready', 'unsupported', 'failed')),
|
|
6
|
+
lease_token TEXT,
|
|
7
|
+
lease_until INTEGER NOT NULL DEFAULT 0,
|
|
8
|
+
parser_version INTEGER NOT NULL,
|
|
9
|
+
content_revision TEXT,
|
|
10
|
+
content TEXT,
|
|
11
|
+
sections_json TEXT NOT NULL DEFAULT '[]',
|
|
12
|
+
limitations_json TEXT NOT NULL DEFAULT '[]',
|
|
13
|
+
fingerprint TEXT,
|
|
14
|
+
error TEXT,
|
|
15
|
+
UNIQUE(delivery_id, source_id)
|
|
16
|
+
);
|
|
17
|
+
CREATE VIRTUAL TABLE personal_result_search USING fts5(
|
|
18
|
+
document_id UNINDEXED, start_offset UNINDEXED, text, tokenize='trigram'
|
|
19
|
+
);
|
|
20
|
+
CREATE TABLE personal_result_sections (
|
|
21
|
+
document_id TEXT NOT NULL REFERENCES personal_result_documents(document_id) ON DELETE CASCADE,
|
|
22
|
+
section_id TEXT NOT NULL,
|
|
23
|
+
ordinal INTEGER NOT NULL,
|
|
24
|
+
title TEXT NOT NULL,
|
|
25
|
+
start_offset INTEGER NOT NULL,
|
|
26
|
+
char_length INTEGER NOT NULL,
|
|
27
|
+
locator_json TEXT NOT NULL,
|
|
28
|
+
PRIMARY KEY(document_id, section_id)
|
|
29
|
+
);
|
|
30
|
+
CREATE INDEX idx_personal_result_sections_order ON personal_result_sections(document_id, ordinal);
|
|
31
|
+
CREATE TABLE personal_result_read_waits (
|
|
32
|
+
input_id TEXT PRIMARY KEY REFERENCES session_inputs(id) ON DELETE CASCADE,
|
|
33
|
+
conversation_id TEXT NOT NULL REFERENCES sessions(conversation_id) ON DELETE CASCADE,
|
|
34
|
+
transcript_id TEXT NOT NULL,
|
|
35
|
+
requests_json TEXT NOT NULL,
|
|
36
|
+
status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending','queued','done','stale'))
|
|
37
|
+
);
|
|
38
|
+
CREATE TRIGGER personal_result_documents_delete AFTER DELETE ON personal_result_documents BEGIN
|
|
39
|
+
DELETE FROM personal_result_search WHERE document_id = old.document_id;
|
|
40
|
+
END;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
CREATE TABLE task_work_revisions (
|
|
2
|
+
revision_id TEXT PRIMARY KEY,
|
|
3
|
+
task_id TEXT NOT NULL REFERENCES tasks(task_id) ON DELETE CASCADE,
|
|
4
|
+
contract_version INTEGER NOT NULL,
|
|
5
|
+
baseline_delivery_id TEXT NOT NULL,
|
|
6
|
+
baseline_version TEXT NOT NULL,
|
|
7
|
+
instruction_entry_id TEXT NOT NULL,
|
|
8
|
+
input_id TEXT,
|
|
9
|
+
idempotency_key TEXT NOT NULL UNIQUE,
|
|
10
|
+
request_hash TEXT NOT NULL,
|
|
11
|
+
supersedes_json TEXT NOT NULL DEFAULT '[]',
|
|
12
|
+
original_body TEXT,
|
|
13
|
+
created_at INTEGER NOT NULL,
|
|
14
|
+
UNIQUE(task_id, contract_version)
|
|
15
|
+
);
|
|
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
|
|
|
3
3
|
/** Baseline schema version applied from schema.sql on first open. */
|
|
4
4
|
export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 165;
|
|
5
5
|
/** Latest schema version this release supports (increment when adding migrations). */
|
|
6
|
-
export declare const XOPC_DB_SCHEMA_VERSION =
|
|
6
|
+
export declare const XOPC_DB_SCHEMA_VERSION = 252;
|
|
7
7
|
export declare function resolveMigrationsDir(override?: string): string;
|
|
8
8
|
/**
|
|
9
9
|
* Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
|
|
@@ -59,7 +59,7 @@ function applySingleMigration(db, migration, discardOldScenes = false) {
|
|
|
59
59
|
function applyPendingMigrations(db, options = {}) {
|
|
60
60
|
db.function("xopc_memory_search_text", { deterministic: true }, (value) => memorySearchText(String(value ?? "")));
|
|
61
61
|
db.function("xopc_operation_id", () => currentOperationId() ?? null);
|
|
62
|
-
const targetVersion = options.targetVersion ??
|
|
62
|
+
const targetVersion = options.targetVersion ?? 252;
|
|
63
63
|
let currentVersion = readSchemaVersion(db);
|
|
64
64
|
if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
|
|
65
65
|
if (!options.migrationsDir && currentVersion < 165) throw new DatabaseSchemaTooOldError(currentVersion, 165);
|
|
@@ -97,7 +97,7 @@ function applyPendingMigrations(db, options = {}) {
|
|
|
97
97
|
}
|
|
98
98
|
/** Inspect schema version without mutating the database. */
|
|
99
99
|
function inspectSchemaMigrationStatus(db, options = {}) {
|
|
100
|
-
const appVersion = options.targetVersion ??
|
|
100
|
+
const appVersion = options.targetVersion ?? 252;
|
|
101
101
|
const dbVersion = readSchemaVersion(db);
|
|
102
102
|
if (dbVersion > appVersion) return {
|
|
103
103
|
dbVersion,
|
|
@@ -140,7 +140,7 @@ var init_runner = __esmMin((() => {
|
|
|
140
140
|
init_errors();
|
|
141
141
|
log = createLogger("Sqlite:Migrations");
|
|
142
142
|
XOPC_DB_BASELINE_SCHEMA_VERSION = 165;
|
|
143
|
-
XOPC_DB_SCHEMA_VERSION =
|
|
143
|
+
XOPC_DB_SCHEMA_VERSION = 252;
|
|
144
144
|
}));
|
|
145
145
|
//#endregion
|
|
146
146
|
init_runner();
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { SearchCacheEntry } from '../../agent/tools/search/cache.js';
|
|
2
|
+
import { type ResearchCheckpoint, type ResearchCheckpointUpdate, type ResearchEvidence } from '../../agent/orchestration/research-checkpoint.js';
|
|
3
|
+
export interface StoredResearchCheckpoint {
|
|
4
|
+
id: string;
|
|
5
|
+
conversationId: string;
|
|
6
|
+
workspace: string;
|
|
7
|
+
goal: string;
|
|
8
|
+
checkpoint: ResearchCheckpoint;
|
|
9
|
+
status: 'running' | 'partial' | 'completed' | 'failed' | 'cancelled';
|
|
10
|
+
attempts: number;
|
|
11
|
+
stopReason?: string;
|
|
12
|
+
summary: string;
|
|
13
|
+
leaseToken?: string;
|
|
14
|
+
leaseExpiresAt?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function getResearchCheckpoint(id: string, conversationId: string, workspace: string): StoredResearchCheckpoint | undefined;
|
|
17
|
+
export declare function createResearchCheckpoint(conversationId: string, workspace: string, goal: string): StoredResearchCheckpoint;
|
|
18
|
+
/** Lease ownership fences late tool callbacks and competing resume requests. */
|
|
19
|
+
export declare function claimResearchCheckpoint(record: StoredResearchCheckpoint, timeoutMs: number, now?: number): StoredResearchCheckpoint;
|
|
20
|
+
export declare function saveResearchCheckpoint(record: StoredResearchCheckpoint, update: ResearchCheckpointUpdate): ResearchCheckpoint;
|
|
21
|
+
export declare function recordResearchEvidence(record: StoredResearchCheckpoint, evidence: ResearchEvidence): void;
|
|
22
|
+
export declare function finishResearchCheckpoint(record: StoredResearchCheckpoint, status: StoredResearchCheckpoint['status'], stopReason: string, summary: string): void;
|
|
23
|
+
/** Keep successful public search results with the same task lease and a bounded envelope. */
|
|
24
|
+
export declare function recordResearchSearch(record: StoredResearchCheckpoint, entry: SearchCacheEntry): void;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { __esmMin } from "../../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { getSqliteDatabase, init_transaction, runSqliteWriteTransaction } from "./transaction.js";
|
|
3
|
+
import { init_research_checkpoint, mergeResearchCheckpoint } from "../../agent/orchestration/research-checkpoint.js";
|
|
4
|
+
import { randomUUID } from "node:crypto";
|
|
5
|
+
//#region src/storage/sqlite/research-checkpoint-repository.ts
|
|
6
|
+
function decode(row) {
|
|
7
|
+
return {
|
|
8
|
+
id: row.id,
|
|
9
|
+
conversationId: row.conversation_id,
|
|
10
|
+
workspace: row.workspace,
|
|
11
|
+
goal: row.goal,
|
|
12
|
+
checkpoint: JSON.parse(row.checkpoint_json),
|
|
13
|
+
status: row.status,
|
|
14
|
+
attempts: row.attempts,
|
|
15
|
+
stopReason: row.stop_reason ?? void 0,
|
|
16
|
+
summary: row.summary,
|
|
17
|
+
leaseToken: row.lease_token ?? void 0,
|
|
18
|
+
leaseExpiresAt: row.lease_expires_at ?? void 0
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function getResearchCheckpoint(id, conversationId, workspace) {
|
|
22
|
+
const row = getSqliteDatabase().prepare("SELECT * FROM research_checkpoints WHERE id = ? AND conversation_id = ? AND workspace = ?").get(id, conversationId, workspace);
|
|
23
|
+
return row ? decode(row) : void 0;
|
|
24
|
+
}
|
|
25
|
+
function createResearchCheckpoint(conversationId, workspace, goal) {
|
|
26
|
+
const id = randomUUID();
|
|
27
|
+
const checkpoint = {
|
|
28
|
+
findings: [],
|
|
29
|
+
evidence: [],
|
|
30
|
+
nextSteps: [goal.slice(0, 500)]
|
|
31
|
+
};
|
|
32
|
+
runSqliteWriteTransaction((db) => db.prepare(`INSERT INTO research_checkpoints
|
|
33
|
+
(id, conversation_id, workspace, goal, checkpoint_json, status, updated_at) VALUES (?, ?, ?, ?, ?, 'partial', ?)`).run(id, conversationId, workspace, goal, JSON.stringify(checkpoint), Date.now()));
|
|
34
|
+
return getResearchCheckpoint(id, conversationId, workspace);
|
|
35
|
+
}
|
|
36
|
+
/** Lease ownership fences late tool callbacks and competing resume requests. */
|
|
37
|
+
function claimResearchCheckpoint(record, timeoutMs, now = Date.now()) {
|
|
38
|
+
return runSqliteWriteTransaction((db) => {
|
|
39
|
+
const token = randomUUID();
|
|
40
|
+
if (!db.prepare(`UPDATE research_checkpoints SET status = 'running', attempts = attempts + 1,
|
|
41
|
+
lease_token = ?, lease_expires_at = ?, updated_at = ? WHERE id = ? AND conversation_id = ? AND workspace = ?
|
|
42
|
+
AND status != 'completed' AND (lease_token IS NULL OR lease_expires_at <= ?)`).run(token, now + timeoutMs, now, record.id, record.conversationId, record.workspace, now).changes) throw new Error("Research checkpoint is complete or already running");
|
|
43
|
+
return getResearchCheckpoint(record.id, record.conversationId, record.workspace);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function mutate(record, transform) {
|
|
47
|
+
return runSqliteWriteTransaction((db) => {
|
|
48
|
+
const current = getResearchCheckpoint(record.id, record.conversationId, record.workspace);
|
|
49
|
+
if (!current || !record.leaseToken || current.leaseToken !== record.leaseToken || current.status !== "running" || (current.leaseExpiresAt ?? 0) <= Date.now()) throw new Error("Research checkpoint lease expired");
|
|
50
|
+
const checkpoint = transform(current.checkpoint);
|
|
51
|
+
db.prepare("UPDATE research_checkpoints SET checkpoint_json = ?, updated_at = ? WHERE id = ? AND lease_token = ?").run(JSON.stringify(checkpoint), Date.now(), record.id, record.leaseToken);
|
|
52
|
+
return checkpoint;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function saveResearchCheckpoint(record, update) {
|
|
56
|
+
return mutate(record, (current) => mergeResearchCheckpoint(current, update));
|
|
57
|
+
}
|
|
58
|
+
function recordResearchEvidence(record, evidence) {
|
|
59
|
+
mutate(record, (current) => ({
|
|
60
|
+
...current,
|
|
61
|
+
evidence: [...current.evidence.filter((item) => item.toolCallId !== evidence.toolCallId || item.runId !== evidence.runId), {
|
|
62
|
+
...evidence,
|
|
63
|
+
excerpt: evidence.excerpt.slice(0, 2e3)
|
|
64
|
+
}].slice(-30)
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
function finishResearchCheckpoint(record, status, stopReason, summary) {
|
|
68
|
+
if (!runSqliteWriteTransaction((db) => db.prepare(`UPDATE research_checkpoints SET status = ?, stop_reason = ?, summary = ?,
|
|
69
|
+
lease_token = NULL, lease_expires_at = NULL, updated_at = ? WHERE id = ? AND lease_token = ?`).run(status, stopReason, summary.slice(0, 8e3), Date.now(), record.id, record.leaseToken ?? "")).changes) throw new Error("Research checkpoint lease was replaced");
|
|
70
|
+
}
|
|
71
|
+
/** Keep successful public search results with the same task lease and a bounded envelope. */
|
|
72
|
+
function recordResearchSearch(record, entry) {
|
|
73
|
+
mutate(record, (current) => {
|
|
74
|
+
const searches = [...(current.searches ?? []).filter((item) => item.key !== entry.key), entry].slice(-20);
|
|
75
|
+
while (searches.length && JSON.stringify({
|
|
76
|
+
...current,
|
|
77
|
+
searches
|
|
78
|
+
}).length > 2e5) searches.shift();
|
|
79
|
+
return {
|
|
80
|
+
...current,
|
|
81
|
+
searches
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
var init_research_checkpoint_repository = __esmMin((() => {
|
|
86
|
+
init_research_checkpoint();
|
|
87
|
+
init_transaction();
|
|
88
|
+
}));
|
|
89
|
+
//#endregion
|
|
90
|
+
init_research_checkpoint_repository();
|
|
91
|
+
export { claimResearchCheckpoint, createResearchCheckpoint, finishResearchCheckpoint, getResearchCheckpoint, init_research_checkpoint_repository, recordResearchEvidence, recordResearchSearch, saveResearchCheckpoint };
|
|
@@ -3,7 +3,7 @@ import { sessionCommandIdentity } from "../../../packages/gateway-contract/src/s
|
|
|
3
3
|
import { init_src } from "../../../packages/gateway-contract/src/index.js";
|
|
4
4
|
import { init_session_input_repository, insertSessionInput } from "./session-input-repository.js";
|
|
5
5
|
import { init_clarification_wait_repository, supersedeActiveClarification } from "./clarification-wait-repository.js";
|
|
6
|
-
import {
|
|
6
|
+
import { cancelConnectionObjective, init_connection_wait_repository } from "./connection-wait-repository.js";
|
|
7
7
|
import { getSessionMetadata } from "./session-read-repository.js";
|
|
8
8
|
import { init_session_repository } from "./session-repository.js";
|
|
9
9
|
import { init_config_repository, setSessionConfig } from "./config-repository.js";
|
|
@@ -113,7 +113,8 @@ function acceptSessionCommand(input) {
|
|
|
113
113
|
expectedTranscriptId: transcriptId
|
|
114
114
|
});
|
|
115
115
|
if (inputId) {
|
|
116
|
-
|
|
116
|
+
const control = input.preparedInput?.payload;
|
|
117
|
+
if (control?.connectionAction === "cancel") cancelConnectionObjective(conversationId, control.waitId, control.objectiveRevision);
|
|
117
118
|
supersedeActiveClarification(conversationId);
|
|
118
119
|
}
|
|
119
120
|
const receipt = {
|
|
@@ -8,10 +8,26 @@ export type SessionInputPayload = {
|
|
|
8
8
|
waitId: string;
|
|
9
9
|
objectiveRevision: number;
|
|
10
10
|
resolution: 'continued' | 'skipped';
|
|
11
|
+
connectionAction?: never;
|
|
12
|
+
connectionBarrier?: never;
|
|
11
13
|
} | {
|
|
12
14
|
waitId: string;
|
|
13
15
|
objectiveRevision: number;
|
|
14
16
|
resolution: 'answered' | 'agent_decide' | 'cancelled';
|
|
17
|
+
connectionAction?: never;
|
|
18
|
+
connectionBarrier?: never;
|
|
19
|
+
} | {
|
|
20
|
+
waitId: string;
|
|
21
|
+
objectiveRevision: number;
|
|
22
|
+
connectionAction: 'continue' | 'cancel';
|
|
23
|
+
resolution?: never;
|
|
24
|
+
connectionBarrier?: never;
|
|
25
|
+
} | {
|
|
26
|
+
waitId: string;
|
|
27
|
+
objectiveRevision: number;
|
|
28
|
+
connectionBarrier: true;
|
|
29
|
+
connectionAction?: never;
|
|
30
|
+
resolution?: never;
|
|
15
31
|
};
|
|
16
32
|
export type SessionInput = {
|
|
17
33
|
id: string;
|
|
@@ -152,23 +152,39 @@ function claimNextSessionInput(conversationId, runId, expectedInputId) {
|
|
|
152
152
|
version = version + 1, updated_at_ms = ? WHERE conversation_id = ? AND status = 'queued'
|
|
153
153
|
AND expected_transcript_id IS NOT NULL AND expected_transcript_id IS NOT ?`).run(Date.now(), conversationId, readCurrentTranscriptId(db, conversationId)).changes) bumpSessionInputRevision(db, conversationId);
|
|
154
154
|
const row = db.prepare(`${SELECT_INPUTS} WHERE conversation_id = ? AND effective_delivery = 'next'
|
|
155
|
-
AND status = 'queued'
|
|
155
|
+
AND status = 'queued' AND (kind != 'connection_resume' OR NOT EXISTS (
|
|
156
|
+
SELECT 1 FROM session_inputs barrier WHERE barrier.conversation_id = session_inputs.conversation_id
|
|
157
|
+
AND barrier.status = 'interrupted' AND barrier.kind = 'message'
|
|
158
|
+
AND json_extract(barrier.payload_json, '$.connectionBarrier') = 1
|
|
159
|
+
AND json_extract(barrier.payload_json, '$.waitId') = json_extract(session_inputs.payload_json, '$.waitId')
|
|
160
|
+
AND json_extract(barrier.payload_json, '$.objectiveRevision') = json_extract(session_inputs.payload_json, '$.objectiveRevision')
|
|
161
|
+
)) ORDER BY CASE WHEN kind = 'connection_resume' THEN 1 ELSE 0 END,
|
|
162
|
+
interrupt_requested DESC, position, created_at_ms, id LIMIT 1`).get(conversationId);
|
|
156
163
|
if (!row) return void 0;
|
|
157
164
|
if (expectedInputId && row.id !== expectedInputId) return void 0;
|
|
158
165
|
const now = Date.now();
|
|
166
|
+
if (row.kind === "message" && !JSON.parse(row.payload_json ?? "{}").connectionAction) db.prepare(`UPDATE session_inputs SET payload_json = COALESCE((
|
|
167
|
+
SELECT json_object('waitId', wait.id, 'objectiveRevision', json_extract(wait.data_json, '$.objectiveRevision'), 'connectionBarrier', json('true'))
|
|
168
|
+
FROM session_connection_waits wait WHERE wait.conversation_id = session_inputs.conversation_id
|
|
169
|
+
AND wait.transcript_id = ? AND wait.status IN ('open','queued')
|
|
170
|
+
AND (session_inputs.payload_json IS NULL OR wait.id = json_extract(session_inputs.payload_json, '$.waitId'))
|
|
171
|
+
AND session_inputs.id != json_extract(wait.data_json, '$.originInputId') LIMIT 1
|
|
172
|
+
), payload_json) WHERE id = ?`).run(readCurrentTranscriptId(db, conversationId), row.id);
|
|
159
173
|
db.prepare(`UPDATE session_inputs SET status = 'running', run_id = ?, version = version + 1,
|
|
160
174
|
updated_at_ms = ? WHERE id = ?`).run(runId, now, row.id);
|
|
161
175
|
db.prepare(`UPDATE session_input_runtime SET active_run_id = ?, active_input_id = ?,
|
|
162
176
|
revision = revision + 1, updated_at_ms = ? WHERE conversation_id = ?`).run(runId, row.id, now, conversationId);
|
|
163
177
|
const claimed = mapInput(db.prepare(`${SELECT_INPUTS} WHERE id = ?`).get(row.id));
|
|
164
178
|
const hasMaterial = (value) => Boolean(value.attachments_json && JSON.parse(value.attachments_json).length || value.context_snapshots_json && JSON.parse(value.context_snapshots_json).length);
|
|
165
|
-
if (row.interrupt_requested && !hasMaterial(row)) {
|
|
179
|
+
if (row.interrupt_requested && !claimed.payload?.connectionAction && !hasMaterial(row)) {
|
|
166
180
|
const pending = db.prepare(`${SELECT_INPUTS} WHERE conversation_id = ? AND status = 'queued'
|
|
167
181
|
ORDER BY interrupt_requested DESC, position, created_at_ms, id LIMIT 10`).all(conversationId);
|
|
168
182
|
for (const next of pending) {
|
|
169
|
-
if (!next.interrupt_requested || next.kind !== "message" || hasMaterial(next) || next.thinking !== row.thinking || next.expected_transcript_id !== row.expected_transcript_id || next.origin_json !== row.origin_json || next.created_at_ms - row.created_at_ms > 500 || claimed.content.length + next.content.length > 64e3) break;
|
|
183
|
+
if (!next.interrupt_requested || next.kind !== "message" || JSON.parse(next.payload_json ?? "{}").connectionAction || hasMaterial(next) || next.thinking !== row.thinking || next.expected_transcript_id !== row.expected_transcript_id || next.origin_json !== row.origin_json || next.created_at_ms - row.created_at_ms > 500 || claimed.content.length + next.content.length > 64e3) break;
|
|
184
|
+
const nextPayload = JSON.parse(next.payload_json ?? "{}");
|
|
185
|
+
if (claimed.payload?.connectionBarrier && nextPayload?.waitId && nextPayload.waitId !== claimed.payload.waitId) break;
|
|
170
186
|
db.prepare(`UPDATE session_inputs SET status = 'injecting', effective_delivery = 'steer', target_run_id = ?,
|
|
171
|
-
version = version + 1, updated_at_ms = ? WHERE id = ?`).run(runId, now, next.id);
|
|
187
|
+
payload_json = ?, version = version + 1, updated_at_ms = ? WHERE id = ?`).run(runId, claimed.payload?.connectionBarrier ? JSON.stringify(claimed.payload) : next.payload_json, now, next.id);
|
|
172
188
|
claimed.content += `\n\n${next.content}`;
|
|
173
189
|
}
|
|
174
190
|
}
|
|
@@ -210,9 +226,12 @@ function mutateQueuedSessionInput(input) {
|
|
|
210
226
|
ordered.splice(Math.max(0, Math.min(input.position, ordered.length)), 0, row);
|
|
211
227
|
const stmt = db.prepare(`UPDATE session_inputs SET position = ?, version = version + 1, updated_at_ms = ? WHERE id = ?`);
|
|
212
228
|
ordered.forEach((item, index) => stmt.run(index + 1, now, item.id));
|
|
213
|
-
} else
|
|
214
|
-
|
|
215
|
-
|
|
229
|
+
} else {
|
|
230
|
+
const clearControl = Boolean(row.payload_json && JSON.parse(row.payload_json).connectionAction && (input.content !== void 0 && input.content !== row.content || input.attachments?.length || input.contextSnapshots?.length));
|
|
231
|
+
db.prepare(`UPDATE session_inputs SET content = ?, attachments_json = ?, context_refs_json = ?,
|
|
232
|
+
context_snapshots_json = ?, thinking = ?, payload_json = ?, version = version + 1,
|
|
233
|
+
updated_at_ms = ? WHERE id = ?`).run(input.content ?? row.content, input.attachments ? JSON.stringify(input.attachments) : row.attachments_json, input.contextRefs ? JSON.stringify(input.contextRefs) : row.context_refs_json, input.contextSnapshots ? JSON.stringify(input.contextSnapshots) : row.context_snapshots_json, input.thinking ?? row.thinking, clearControl ? null : row.payload_json, now, input.id);
|
|
234
|
+
}
|
|
216
235
|
bumpSessionInputRevision(db, input.conversationId);
|
|
217
236
|
return true;
|
|
218
237
|
});
|
|
@@ -230,8 +249,23 @@ function recoverSessionInputState() {
|
|
|
230
249
|
return runSqliteWriteTransaction((db) => {
|
|
231
250
|
const keys = db.prepare(`SELECT DISTINCT conversation_id FROM session_inputs WHERE status IN ('queued','running','injecting')`).all();
|
|
232
251
|
const now = Date.now();
|
|
252
|
+
db.prepare(`UPDATE session_inputs SET payload_json = (
|
|
253
|
+
SELECT json_object('waitId', wait.id, 'objectiveRevision', json_extract(wait.data_json, '$.objectiveRevision'), 'connectionBarrier', json('true'))
|
|
254
|
+
FROM session_connection_waits wait JOIN sessions session ON session.active_transcript_id = wait.transcript_id
|
|
255
|
+
WHERE wait.conversation_id = session_inputs.conversation_id AND wait.status IN ('open','queued')
|
|
256
|
+
AND (session_inputs.payload_json IS NULL OR wait.id = json_extract(session_inputs.payload_json, '$.waitId'))
|
|
257
|
+
AND (session_inputs.expected_transcript_id IS NULL OR session_inputs.expected_transcript_id = wait.transcript_id)
|
|
258
|
+
AND session_inputs.id != json_extract(wait.data_json, '$.originInputId')
|
|
259
|
+
AND (json_extract(session_inputs.payload_json, '$.connectionBarrier') = 1
|
|
260
|
+
OR session_inputs.created_at_ms >= json_extract(wait.data_json, '$.createdAt')) LIMIT 1
|
|
261
|
+
) WHERE kind = 'message' AND status IN ('running','injecting')
|
|
262
|
+
AND (payload_json IS NULL OR json_extract(payload_json, '$.connectionBarrier') = 1)`).run();
|
|
233
263
|
db.prepare(`UPDATE session_inputs SET status = 'interrupted', error = 'Gateway restarted during delivery',
|
|
234
264
|
version = version + 1, updated_at_ms = ? WHERE status IN ('running','injecting')`).run(now);
|
|
265
|
+
db.prepare(`UPDATE session_inputs SET status = 'queued', error = NULL, version = version + 1,
|
|
266
|
+
updated_at_ms = ? WHERE status = 'interrupted' AND kind = 'message'
|
|
267
|
+
AND error = 'Gateway restarted during delivery'
|
|
268
|
+
AND json_extract(payload_json, '$.connectionAction') IN ('continue','cancel')`).run(now);
|
|
235
269
|
db.prepare(`UPDATE session_input_runtime SET active_run_id = NULL, active_input_id = NULL,
|
|
236
270
|
revision = revision + 1, updated_at_ms = ?`).run(now);
|
|
237
271
|
return keys.map((row) => row.conversation_id);
|
|
@@ -7,10 +7,10 @@ export declare const TaskEditOutputSchema: z.ZodObject<{
|
|
|
7
7
|
title: z.ZodString;
|
|
8
8
|
body: z.ZodOptional<z.ZodString>;
|
|
9
9
|
phase: z.ZodEnum<{
|
|
10
|
+
review: "review";
|
|
10
11
|
backlog: "backlog";
|
|
11
12
|
ready: "ready";
|
|
12
13
|
active: "active";
|
|
13
|
-
review: "review";
|
|
14
14
|
closed: "closed";
|
|
15
15
|
}>;
|
|
16
16
|
resolution: z.ZodOptional<z.ZodEnum<{
|
|
@@ -78,10 +78,10 @@ export declare const TaskDeleteOutputSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
78
78
|
title: z.ZodString;
|
|
79
79
|
body: z.ZodOptional<z.ZodString>;
|
|
80
80
|
phase: z.ZodEnum<{
|
|
81
|
+
review: "review";
|
|
81
82
|
backlog: "backlog";
|
|
82
83
|
ready: "ready";
|
|
83
84
|
active: "active";
|
|
84
|
-
review: "review";
|
|
85
85
|
closed: "closed";
|
|
86
86
|
}>;
|
|
87
87
|
resolution: z.ZodOptional<z.ZodEnum<{
|
|
@@ -2,10 +2,10 @@ import { ProductReadContracts } from "../../../packages/gateway-contract/src/cap
|
|
|
2
2
|
import { init_src } from "../../../packages/gateway-contract/src/index.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 { CapabilityError } from "../../capabilities/runtime/errors.js";
|
|
6
|
-
import { defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
|
|
7
5
|
import { TaskReadModelProjector } from "../task-read-model-projector.js";
|
|
8
6
|
import { TaskConversationRepository } from "../task-conversation-repository.js";
|
|
7
|
+
import { CapabilityError } from "../../capabilities/runtime/errors.js";
|
|
8
|
+
import { defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
|
|
9
9
|
import { TaskContextRepository } from "../task-context-repository.js";
|
|
10
10
|
import { TaskDependencyService } from "../task-dependency-service.js";
|
|
11
11
|
import { TaskCriterionReviewRepository } from "../task-criterion-review-repository.js";
|
|
@@ -7,10 +7,10 @@ export declare const TaskDependenciesOutputSchema: z.ZodObject<{
|
|
|
7
7
|
title: z.ZodString;
|
|
8
8
|
body: z.ZodOptional<z.ZodString>;
|
|
9
9
|
phase: z.ZodEnum<{
|
|
10
|
+
review: "review";
|
|
10
11
|
backlog: "backlog";
|
|
11
12
|
ready: "ready";
|
|
12
13
|
active: "active";
|
|
13
|
-
review: "review";
|
|
14
14
|
closed: "closed";
|
|
15
15
|
}>;
|
|
16
16
|
resolution: z.ZodOptional<z.ZodEnum<{
|
|
@@ -74,10 +74,10 @@ export declare const TaskDependenciesOutputSchema: z.ZodObject<{
|
|
|
74
74
|
id: z.ZodString;
|
|
75
75
|
title: z.ZodString;
|
|
76
76
|
phase: z.ZodEnum<{
|
|
77
|
+
review: "review";
|
|
77
78
|
backlog: "backlog";
|
|
78
79
|
ready: "ready";
|
|
79
80
|
active: "active";
|
|
80
|
-
review: "review";
|
|
81
81
|
closed: "closed";
|
|
82
82
|
}>;
|
|
83
83
|
resolution: z.ZodOptional<z.ZodEnum<{
|
|
@@ -119,10 +119,10 @@ export declare const TaskDependenciesOutputSchema: z.ZodObject<{
|
|
|
119
119
|
id: z.ZodString;
|
|
120
120
|
title: z.ZodString;
|
|
121
121
|
phase: z.ZodEnum<{
|
|
122
|
+
review: "review";
|
|
122
123
|
backlog: "backlog";
|
|
123
124
|
ready: "ready";
|
|
124
125
|
active: "active";
|
|
125
|
-
review: "review";
|
|
126
126
|
closed: "closed";
|
|
127
127
|
}>;
|
|
128
128
|
resolution: z.ZodOptional<z.ZodEnum<{
|
|
@@ -174,15 +174,15 @@ export declare const TaskContextMutationOutputSchema: z.ZodObject<{
|
|
|
174
174
|
task: "task";
|
|
175
175
|
file: "file";
|
|
176
176
|
memory: "memory";
|
|
177
|
-
document: "document";
|
|
178
177
|
url: "url";
|
|
178
|
+
document: "document";
|
|
179
179
|
source: "source";
|
|
180
180
|
artifact: "artifact";
|
|
181
181
|
}>;
|
|
182
182
|
targetId: z.ZodString;
|
|
183
183
|
role: z.ZodEnum<{
|
|
184
|
-
evidence: "evidence";
|
|
185
184
|
input: "input";
|
|
185
|
+
evidence: "evidence";
|
|
186
186
|
deliverable: "deliverable";
|
|
187
187
|
reference: "reference";
|
|
188
188
|
constraint: "constraint";
|
|
@@ -211,15 +211,15 @@ export declare const TaskContextMutationOutputSchema: z.ZodObject<{
|
|
|
211
211
|
task: "task";
|
|
212
212
|
file: "file";
|
|
213
213
|
memory: "memory";
|
|
214
|
-
document: "document";
|
|
215
214
|
url: "url";
|
|
215
|
+
document: "document";
|
|
216
216
|
source: "source";
|
|
217
217
|
artifact: "artifact";
|
|
218
218
|
}>;
|
|
219
219
|
targetId: z.ZodString;
|
|
220
220
|
role: z.ZodEnum<{
|
|
221
|
-
evidence: "evidence";
|
|
222
221
|
input: "input";
|
|
222
|
+
evidence: "evidence";
|
|
223
223
|
deliverable: "deliverable";
|
|
224
224
|
reference: "reference";
|
|
225
225
|
constraint: "constraint";
|
|
@@ -11,10 +11,10 @@ export declare const TaskMutationOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObj
|
|
|
11
11
|
title: z.ZodString;
|
|
12
12
|
body: z.ZodOptional<z.ZodString>;
|
|
13
13
|
phase: z.ZodEnum<{
|
|
14
|
+
review: "review";
|
|
14
15
|
backlog: "backlog";
|
|
15
16
|
ready: "ready";
|
|
16
17
|
active: "active";
|
|
17
|
-
review: "review";
|
|
18
18
|
closed: "closed";
|
|
19
19
|
}>;
|
|
20
20
|
resolution: z.ZodOptional<z.ZodEnum<{
|
|
@@ -134,10 +134,10 @@ export declare const TaskMutationOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObj
|
|
|
134
134
|
title: z.ZodString;
|
|
135
135
|
body: z.ZodOptional<z.ZodString>;
|
|
136
136
|
phase: z.ZodEnum<{
|
|
137
|
+
review: "review";
|
|
137
138
|
backlog: "backlog";
|
|
138
139
|
ready: "ready";
|
|
139
140
|
active: "active";
|
|
140
|
-
review: "review";
|
|
141
141
|
closed: "closed";
|
|
142
142
|
}>;
|
|
143
143
|
resolution: z.ZodOptional<z.ZodEnum<{
|
|
@@ -2,9 +2,9 @@ import { TaskCommandRequestSchema, TaskCreateRequestSchema, TaskDetailResponseSc
|
|
|
2
2
|
import { init_src } from "../../../packages/gateway-contract/src/index.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 { resolveTaskLocale } from "../task-language.js";
|
|
5
6
|
import { CapabilityError } from "../../capabilities/runtime/errors.js";
|
|
6
7
|
import { defineAtomicCapability } from "../../capabilities/runtime/dispatcher.js";
|
|
7
|
-
import { resolveTaskLocale } from "../task-language.js";
|
|
8
8
|
import { resolveProjectAgentId } from "../../projects/project-agent.js";
|
|
9
9
|
import { resolveResponseLanguageForSession } from "../../agent/prompt/response-language.js";
|
|
10
10
|
import { TaskApplicationService } from "../task-application-service.js";
|
package/dist/src/tasks/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { TaskRepository, init_task_repository } from "./task-repository.js";
|
|
|
3
3
|
import { TaskRunRepository, init_task_run_repository } from "./task-run-repository.js";
|
|
4
4
|
import { TaskReadModelProjector } from "./task-read-model-projector.js";
|
|
5
5
|
import { TaskConversationConflictError, TaskConversationRepository } from "./task-conversation-repository.js";
|
|
6
|
+
import { defineTaskContract } from "./task-contract-definition.js";
|
|
6
7
|
import { TaskContextRepository } from "./task-context-repository.js";
|
|
7
8
|
import { TaskDependencyError, TaskDependencyService } from "./task-dependency-service.js";
|
|
8
9
|
import { TaskValueMetricsService } from "./task-value-metrics-service.js";
|
|
@@ -13,7 +14,6 @@ import { resolveExecutionContext } from "./execution-context.js";
|
|
|
13
14
|
import { AttentionGovernor } from "./attention-governor.js";
|
|
14
15
|
import { HomeQueryService, buildHomeWorkbench, decisionFromTask } from "./home-query-service.js";
|
|
15
16
|
import { TaskWorkflowCoordinator } from "./task-workflow-coordinator.js";
|
|
16
|
-
import { defineTaskContract } from "./task-contract-definition.js";
|
|
17
17
|
import { ModelTaskContractPlanner, parseTaskContractResponse } from "./task-contract-planner.js";
|
|
18
18
|
import { assembleTaskContext, buildDelegatedTaskDirective, buildTaskExecutionDirective, getTaskContextManifest, getTaskExecutionBrief } from "./task-context-assembler.js";
|
|
19
19
|
import { TaskRunCoordinator } from "./task-run-coordinator.js";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { type MatchingContext, type SpecialistAssessment } from '../agent-matching/service.js';
|
|
3
3
|
import { TaskRepository } from './task-repository.js';
|
|
4
|
+
import { type TaskContractPlanner } from './task-contract-planner.js';
|
|
4
5
|
declare const DecisionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
5
6
|
kind: z.ZodLiteral<"select">;
|
|
6
7
|
agentId: z.ZodString;
|
|
@@ -26,6 +27,7 @@ export declare class TaskAllocationDispatcher {
|
|
|
26
27
|
constructor(deps: {
|
|
27
28
|
context: (conversationId: string) => MatchingContext;
|
|
28
29
|
decide?: (input: AllocationDecisionInput) => Promise<AllocationDecision>;
|
|
30
|
+
planner?: TaskContractPlanner;
|
|
29
31
|
wake: () => void;
|
|
30
32
|
});
|
|
31
33
|
dispatch(): void;
|