@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
|
@@ -1,49 +1,36 @@
|
|
|
1
|
+
import { createLogger } from "../utils/logger/index.js";
|
|
2
|
+
import { init_logger } from "../utils/logger.js";
|
|
1
3
|
import { getSqliteDatabase, init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
|
|
4
|
+
import { getSessionInputById, getSessionInputState, init_session_input_repository } from "../storage/sqlite/session-input-repository.js";
|
|
2
5
|
import { TaskRepository, init_task_repository } from "../tasks/task-repository.js";
|
|
3
6
|
import { TaskRunRepository, init_task_run_repository } from "../tasks/task-run-repository.js";
|
|
4
7
|
import { TaskAllocationRepository } from "../tasks/task-allocation-repository.js";
|
|
5
8
|
import { TaskOriginRepository } from "../tasks/task-origin-repository.js";
|
|
6
|
-
import { abortEmbeddedRun } from "../agent/embedded/runs.js";
|
|
9
|
+
import { abortEmbeddedRun, getEmbeddedRunByConversationId } from "../agent/embedded/runs.js";
|
|
7
10
|
import { TaskApplicationService } from "../tasks/task-application-service.js";
|
|
8
11
|
//#region src/personal-agent/task-cancel.ts
|
|
9
12
|
init_transaction();
|
|
10
13
|
init_task_repository();
|
|
11
14
|
init_task_run_repository();
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
init_session_input_repository();
|
|
16
|
+
init_logger();
|
|
17
|
+
const log = createLogger("PersonalTaskCancel");
|
|
18
|
+
const pendingStops = /* @__PURE__ */ new Set();
|
|
19
|
+
function finalizeCancellation(runId) {
|
|
15
20
|
const runs = new TaskRunRepository();
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}).ok) throw new Error("Task changed while cancelling");
|
|
30
|
-
} else if (task.resolution !== "cancelled") throw new Error("Task is already closed");
|
|
31
|
-
getSqliteDatabase().prepare("UPDATE task_allocations SET status = 'cancelled', lease_token = NULL, updated_at = ? WHERE task_id = ? AND status != 'cancelled'").run(Date.now(), taskId);
|
|
32
|
-
return {
|
|
33
|
-
active: run,
|
|
34
|
-
changed: task.phase !== "closed"
|
|
35
|
-
};
|
|
36
|
-
});
|
|
37
|
-
const latest = active ?? runs.getLatestRoot(taskId);
|
|
38
|
-
let executionStopConfirmed = !latest || !latest.conversationId && !latest.startedAt && ["queued", "cancelled"].includes(latest.status);
|
|
39
|
-
if (active?.conversationId) {
|
|
40
|
-
await abortEmbeddedRun(active.conversationId);
|
|
41
|
-
executionStopConfirmed = false;
|
|
42
|
-
}
|
|
43
|
-
const current = active ? runs.get(active.id) : void 0;
|
|
44
|
-
if (current && runs.getActiveRoot(taskId)?.id === current.id) new TaskApplicationService().completeRun({
|
|
45
|
-
runId: current.id,
|
|
46
|
-
expectedRunVersion: current.version,
|
|
21
|
+
const run = runId ? runs.get(runId) : void 0;
|
|
22
|
+
if (!run || ![
|
|
23
|
+
"queued",
|
|
24
|
+
"running",
|
|
25
|
+
"waiting",
|
|
26
|
+
"verifying",
|
|
27
|
+
"cancelled"
|
|
28
|
+
].includes(run.status)) return;
|
|
29
|
+
runs.resolveCancelledRunWaits(run.id, { kind: "user" });
|
|
30
|
+
if (run.status === "cancelled") return;
|
|
31
|
+
if (!new TaskApplicationService().completeRun({
|
|
32
|
+
runId: run.id,
|
|
33
|
+
expectedRunVersion: run.version,
|
|
47
34
|
actor: { kind: "user" },
|
|
48
35
|
terminalCode: "cancelled_by_user",
|
|
49
36
|
suppressAttention: true,
|
|
@@ -60,7 +47,70 @@ async function cancelPersonalTask(taskId, conversationId, key) {
|
|
|
60
47
|
needsUser: false,
|
|
61
48
|
completionVerdict: "not_achieved"
|
|
62
49
|
}
|
|
50
|
+
}).ok) throw new Error("Task changed while cancelling");
|
|
51
|
+
}
|
|
52
|
+
/** Close before aborting so a late router decision or receipt cannot restart the task. */
|
|
53
|
+
async function cancelPersonalTask(taskId, conversationId, key) {
|
|
54
|
+
if (!new TaskOriginRepository().owns(taskId, conversationId)) throw new Error("Task does not belong to this personal conversation");
|
|
55
|
+
const runs = new TaskRunRepository();
|
|
56
|
+
const { active, changed, targetKnown } = runSqliteWriteTransaction(() => {
|
|
57
|
+
const previous = getSqliteDatabase().prepare(`SELECT subject_id, result_json FROM command_deduplication
|
|
58
|
+
WHERE idempotency_key = ?`).get(`personal-cancel:${key}`);
|
|
59
|
+
if (previous) {
|
|
60
|
+
if (previous.subject_id !== taskId) throw new Error("Cancellation key belongs to another Task");
|
|
61
|
+
const saved = JSON.parse(previous.result_json);
|
|
62
|
+
const active = saved.cancellationRunId ? runs.get(saved.cancellationRunId) : void 0;
|
|
63
|
+
finalizeCancellation(active?.id);
|
|
64
|
+
return {
|
|
65
|
+
active,
|
|
66
|
+
changed: false,
|
|
67
|
+
targetKnown: Object.hasOwn(saved, "cancellationRunId")
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const task = new TaskRepository().require(taskId);
|
|
71
|
+
if (task.phase === "closed" && task.resolution !== "cancelled") throw new Error("Task is already closed");
|
|
72
|
+
const run = runs.getActiveRoot(taskId) ?? (task.phase === "closed" ? runs.getLatestRoot(taskId) : void 0);
|
|
73
|
+
if (!new TaskApplicationService().execute({
|
|
74
|
+
taskId,
|
|
75
|
+
expectedVersion: task.version,
|
|
76
|
+
idempotencyKey: `personal-cancel:${key}`,
|
|
77
|
+
command: {
|
|
78
|
+
type: "close",
|
|
79
|
+
resolution: "cancelled"
|
|
80
|
+
},
|
|
81
|
+
actor: { kind: "user" }
|
|
82
|
+
}).ok) throw new Error("Task changed while cancelling");
|
|
83
|
+
getSqliteDatabase().prepare(`UPDATE command_deduplication SET result_json = json_set(result_json, '$.cancellationRunId', ?)
|
|
84
|
+
WHERE idempotency_key = ?`).run(run?.id ?? null, `personal-cancel:${key}`);
|
|
85
|
+
getSqliteDatabase().prepare("UPDATE task_allocations SET status = 'cancelled', lease_token = NULL, updated_at = ? WHERE task_id = ? AND status != 'cancelled'").run(Date.now(), taskId);
|
|
86
|
+
finalizeCancellation(run?.id);
|
|
87
|
+
return {
|
|
88
|
+
active: run,
|
|
89
|
+
changed: task.phase !== "closed",
|
|
90
|
+
targetKnown: true
|
|
91
|
+
};
|
|
63
92
|
});
|
|
93
|
+
let executionStopConfirmed = targetKnown && (!active || !active.conversationId && !active.startedAt && ["queued", "cancelled"].includes(active.status));
|
|
94
|
+
if (active?.conversationId) {
|
|
95
|
+
const state = getSessionInputState(active.conversationId);
|
|
96
|
+
const input = state.activeInputId ? getSessionInputById(active.conversationId, state.activeInputId) : void 0;
|
|
97
|
+
const embedded = getEmbeddedRunByConversationId(active.conversationId);
|
|
98
|
+
const executionId = input?.taskRunId === active.id ? state.activeRunId : embedded?.runId === active.id ? active.id : void 0;
|
|
99
|
+
if (executionId && !pendingStops.has(executionId)) {
|
|
100
|
+
pendingStops.add(executionId);
|
|
101
|
+
abortEmbeddedRun(active.conversationId, "user_cancelled", executionId).catch((err) => {
|
|
102
|
+
log.warn({
|
|
103
|
+
err,
|
|
104
|
+
taskId,
|
|
105
|
+
runId: active.id,
|
|
106
|
+
executionId
|
|
107
|
+
}, "Task cancelled; execution stop was not confirmed");
|
|
108
|
+
}).finally(() => {
|
|
109
|
+
pendingStops.delete(executionId);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
executionStopConfirmed = false;
|
|
113
|
+
}
|
|
64
114
|
if (changed && new TaskAllocationRepository().get(taskId)) {
|
|
65
115
|
const zh = new TaskRepository().require(taskId).locale === "zh";
|
|
66
116
|
runSqliteWriteTransaction(() => new TaskAllocationRepository().publish(taskId, zh ? "任务已取消。" : "Task cancelled."));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { init_paths_state, resolveXopcCloudCatalogCachePath } from "../config/paths-state.js";
|
|
3
|
-
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
4
3
|
import { ComputerProfileSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
|
|
4
|
+
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
5
5
|
import { ImageGenerationCapabilitiesSchema, init_models_json } from "../config/models-json.js";
|
|
6
6
|
import { voiceManifestSchema } from "../../packages/realtime-protocol/src/voice-catalog.js";
|
|
7
7
|
import { init_voice } from "../../packages/realtime-protocol/src/voice.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { init_account_id, normalizeAccountId } from "./account-id.js";
|
|
3
|
-
import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
|
|
4
3
|
import { getConversationRouting } from "../storage/sqlite/conversation-repository.js";
|
|
5
4
|
import { init_agent_session_key, resolveAgentPeerConversationId } from "./agent-session-key.js";
|
|
6
5
|
import { init_session_key, resolveConversationId } from "./session-key.js";
|
|
6
|
+
import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
|
|
7
7
|
import { init_bindings, parseBindingRules, resolveRoute as resolveRoute$1 } from "./bindings.js";
|
|
8
8
|
//#region src/routing/resolve-route.ts
|
|
9
9
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { validateConversationId } from "../../packages/gateway-contract/src/conversation-identity.js";
|
|
2
2
|
import { init_src } from "../../packages/gateway-contract/src/index.js";
|
|
3
|
+
import { init_agent_session_key, normalizeAgentId } from "./agent-session-key.js";
|
|
3
4
|
import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
|
|
4
5
|
import { init_agent_scope, listAgentEntries, resolveAgentIdByWorkspacePath, resolveDefaultAgentId } from "../agent/agent-scope.js";
|
|
5
|
-
import { init_agent_session_key, normalizeAgentId } from "./agent-session-key.js";
|
|
6
6
|
import { randomUUID } from "node:crypto";
|
|
7
7
|
//#region src/routing/resolve-tui-session-key.ts
|
|
8
8
|
init_src();
|
|
@@ -50,7 +50,7 @@ export declare class SceneTaskExecutionService implements SceneActivationAdapter
|
|
|
50
50
|
task: {
|
|
51
51
|
id: string;
|
|
52
52
|
title: string;
|
|
53
|
-
phase: "
|
|
53
|
+
phase: "review" | "backlog" | "ready" | "active" | "closed";
|
|
54
54
|
priority: "low" | "normal" | "high" | "critical";
|
|
55
55
|
source: string;
|
|
56
56
|
latestContractVersion: number;
|
|
@@ -170,6 +170,8 @@ export declare class SceneTaskExecutionService implements SceneActivationAdapter
|
|
|
170
170
|
criterion: string;
|
|
171
171
|
status: "failed" | "passed" | "unverified";
|
|
172
172
|
evidenceTitles: string[];
|
|
173
|
+
note?: string;
|
|
174
|
+
method?: "unverified" | "model_reviewed" | "tool_verified";
|
|
173
175
|
}[];
|
|
174
176
|
};
|
|
175
177
|
remainingWork: string[];
|
|
@@ -201,7 +203,7 @@ export declare class SceneTaskExecutionService implements SceneActivationAdapter
|
|
|
201
203
|
task: {
|
|
202
204
|
id: string;
|
|
203
205
|
title: string;
|
|
204
|
-
phase: "
|
|
206
|
+
phase: "review" | "backlog" | "ready" | "active" | "closed";
|
|
205
207
|
priority: "low" | "normal" | "high" | "critical";
|
|
206
208
|
source: string;
|
|
207
209
|
latestContractVersion: number;
|
|
@@ -321,6 +323,8 @@ export declare class SceneTaskExecutionService implements SceneActivationAdapter
|
|
|
321
323
|
criterion: string;
|
|
322
324
|
status: "failed" | "passed" | "unverified";
|
|
323
325
|
evidenceTitles: string[];
|
|
326
|
+
note?: string;
|
|
327
|
+
method?: "unverified" | "model_reviewed" | "tool_verified";
|
|
324
328
|
}[];
|
|
325
329
|
};
|
|
326
330
|
remainingWork: string[];
|
|
@@ -351,7 +355,7 @@ export declare class SceneTaskExecutionService implements SceneActivationAdapter
|
|
|
351
355
|
task: {
|
|
352
356
|
id: string;
|
|
353
357
|
title: string;
|
|
354
|
-
phase: "
|
|
358
|
+
phase: "review" | "backlog" | "ready" | "active" | "closed";
|
|
355
359
|
priority: "low" | "normal" | "high" | "critical";
|
|
356
360
|
source: string;
|
|
357
361
|
latestContractVersion: number;
|
|
@@ -471,6 +475,8 @@ export declare class SceneTaskExecutionService implements SceneActivationAdapter
|
|
|
471
475
|
criterion: string;
|
|
472
476
|
status: "failed" | "passed" | "unverified";
|
|
473
477
|
evidenceTitles: string[];
|
|
478
|
+
note?: string;
|
|
479
|
+
method?: "unverified" | "model_reviewed" | "tool_verified";
|
|
474
480
|
}[];
|
|
475
481
|
};
|
|
476
482
|
remainingWork: string[];
|
|
@@ -527,7 +533,7 @@ export declare class SceneTaskExecutionService implements SceneActivationAdapter
|
|
|
527
533
|
task: {
|
|
528
534
|
id: string;
|
|
529
535
|
title: string;
|
|
530
|
-
phase: "
|
|
536
|
+
phase: "review" | "backlog" | "ready" | "active" | "closed";
|
|
531
537
|
priority: "low" | "normal" | "high" | "critical";
|
|
532
538
|
source: string;
|
|
533
539
|
latestContractVersion: number;
|
|
@@ -647,6 +653,8 @@ export declare class SceneTaskExecutionService implements SceneActivationAdapter
|
|
|
647
653
|
criterion: string;
|
|
648
654
|
status: "failed" | "passed" | "unverified";
|
|
649
655
|
evidenceTitles: string[];
|
|
656
|
+
note?: string;
|
|
657
|
+
method?: "unverified" | "model_reviewed" | "tool_verified";
|
|
650
658
|
}[];
|
|
651
659
|
};
|
|
652
660
|
remainingWork: string[];
|
|
@@ -677,7 +685,7 @@ export declare class SceneTaskExecutionService implements SceneActivationAdapter
|
|
|
677
685
|
task: {
|
|
678
686
|
id: string;
|
|
679
687
|
title: string;
|
|
680
|
-
phase: "
|
|
688
|
+
phase: "review" | "backlog" | "ready" | "active" | "closed";
|
|
681
689
|
priority: "low" | "normal" | "high" | "critical";
|
|
682
690
|
source: string;
|
|
683
691
|
latestContractVersion: number;
|
|
@@ -797,6 +805,8 @@ export declare class SceneTaskExecutionService implements SceneActivationAdapter
|
|
|
797
805
|
criterion: string;
|
|
798
806
|
status: "failed" | "passed" | "unverified";
|
|
799
807
|
evidenceTitles: string[];
|
|
808
|
+
note?: string;
|
|
809
|
+
method?: "unverified" | "model_reviewed" | "tool_verified";
|
|
800
810
|
}[];
|
|
801
811
|
};
|
|
802
812
|
remainingWork: string[];
|
|
@@ -24,7 +24,7 @@ export interface ClientHistoryMessage {
|
|
|
24
24
|
clientMessageId?: string;
|
|
25
25
|
sourceContexts?: Array<{
|
|
26
26
|
refId?: string;
|
|
27
|
-
kind: 'note' | 'task' | 'file' | 'session' | 'browser_tab' | 'browser_page' | 'mcp_resource';
|
|
27
|
+
kind: 'result' | 'note' | 'task' | 'file' | 'session' | 'browser_tab' | 'browser_page' | 'mcp_resource';
|
|
28
28
|
sourceId: string;
|
|
29
29
|
version: string;
|
|
30
30
|
title: string;
|
|
@@ -38,7 +38,7 @@ function sourceContextDisplayMetadata(metadata) {
|
|
|
38
38
|
const sourceContexts = rows.flatMap((value) => {
|
|
39
39
|
if (!value || typeof value !== "object" || Array.isArray(value)) return [];
|
|
40
40
|
const row = value;
|
|
41
|
-
if (row.kind !== "note" && row.kind !== "task" && row.kind !== "file" && row.kind !== "session" && row.kind !== "browser_tab" && row.kind !== "browser_page" && row.kind !== "mcp_resource" || typeof row.sourceId !== "string" || typeof row.version !== "string" || typeof row.title !== "string") return [];
|
|
41
|
+
if (row.kind !== "note" && row.kind !== "task" && row.kind !== "file" && row.kind !== "session" && row.kind !== "browser_tab" && row.kind !== "result" && row.kind !== "browser_page" && row.kind !== "mcp_resource" || typeof row.sourceId !== "string" || typeof row.version !== "string" || typeof row.title !== "string") return [];
|
|
42
42
|
return [{
|
|
43
43
|
...typeof row.refId === "string" ? { refId: row.refId } : {},
|
|
44
44
|
kind: row.kind,
|
|
@@ -297,7 +297,7 @@ function buildSessionContextForLlm(rows) {
|
|
|
297
297
|
continue;
|
|
298
298
|
}
|
|
299
299
|
if (isTranscriptCustomMessageEntry(r)) {
|
|
300
|
-
if (r.customType === "personal_request_status") continue;
|
|
300
|
+
if (r.customType === "personal_request_status" || r.customType === "connection_control_status") continue;
|
|
301
301
|
if (r.customType === "personal_proactive_message") {
|
|
302
302
|
const message = parsePersonalProactiveMessage(r.details);
|
|
303
303
|
if (message) out.push({
|
|
@@ -319,6 +319,8 @@ function buildSessionContextForLlm(rows) {
|
|
|
319
319
|
taskId: delivery.taskId,
|
|
320
320
|
title: delivery.taskTitle,
|
|
321
321
|
status: delivery.outcome.status,
|
|
322
|
+
resultId: delivery.deliveryId.replace(/^reply:/, ""),
|
|
323
|
+
readWith: "This chat projection is an excerpt; retrieve exact source content with available result or file tools.",
|
|
322
324
|
...delivery.text ? { result: delivery.text.slice(0, 1200) } : {},
|
|
323
325
|
...delivery.deliveryId.startsWith("personal-request:") ? { summary: delivery.outcome.summary } : {},
|
|
324
326
|
artifacts: delivery.outcome.deliverables.map((item) => ({
|
|
@@ -350,7 +352,7 @@ function buildSessionDisplayMessages(rows) {
|
|
|
350
352
|
const out = [];
|
|
351
353
|
for (const r of rows) {
|
|
352
354
|
if (isTranscriptCustomMessageEntry(r)) {
|
|
353
|
-
if (r.customType === "personal_request_status") {
|
|
355
|
+
if (r.customType === "personal_request_status" || r.customType === "connection_control_status") {
|
|
354
356
|
out.push({
|
|
355
357
|
role: "assistant",
|
|
356
358
|
content: [{
|
|
@@ -116,7 +116,9 @@ export declare class SessionStore {
|
|
|
116
116
|
private buildSessionDetail;
|
|
117
117
|
loadTranscriptRows(key: string): Promise<TranscriptStoredRow[]>;
|
|
118
118
|
loadTranscriptHistoryRows(key: string): Promise<TranscriptStoredRow[]>;
|
|
119
|
-
prepareModelFallback(key: string, rowsBeforeAttempt: readonly TranscriptStoredRow[]
|
|
119
|
+
prepareModelFallback(key: string, rowsBeforeAttempt: readonly TranscriptStoredRow[], options?: {
|
|
120
|
+
resumeTaskContinuation?: boolean;
|
|
121
|
+
}): Promise<ModelFallbackPreparation>;
|
|
120
122
|
getMetadata(key: string): Promise<SessionMetadata | null>;
|
|
121
123
|
resolveKeyByTranscriptId(transcriptId: string): Promise<string | null>;
|
|
122
124
|
updateMetadata(key: string, updates: Partial<SessionMetadata>): Promise<void>;
|
|
@@ -15,7 +15,7 @@ import { init_sqlite } from "../storage/sqlite/index.js";
|
|
|
15
15
|
import { init_agent_session_key, resolveAgentIdFromConversationId } from "../routing/agent-session-key.js";
|
|
16
16
|
import { resolveUserContextSessionAccess } from "../user-context/access-policy.js";
|
|
17
17
|
import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
|
|
18
|
-
import { canResumeAfterModelFailure } from "../agent/orchestration/turn-recovery.js";
|
|
18
|
+
import { ACCEPTANCE_REPAIR_READ_TOOLS, canResumeAfterModelFailure } from "../agent/orchestration/turn-recovery.js";
|
|
19
19
|
import { DurableState } from "../storage/sqlite/durable-state.js";
|
|
20
20
|
import { transcriptRowsToClientHistory } from "./client-history.js";
|
|
21
21
|
import { SessionCompactor } from "../agent/memory/compaction.js";
|
|
@@ -272,7 +272,7 @@ var SessionStore = class {
|
|
|
272
272
|
requireXopcDatabase();
|
|
273
273
|
return loadTranscriptHistoryRowsForSession(key);
|
|
274
274
|
}
|
|
275
|
-
async prepareModelFallback(key, rowsBeforeAttempt) {
|
|
275
|
+
async prepareModelFallback(key, rowsBeforeAttempt, options) {
|
|
276
276
|
return this.runStoreMutation(async () => {
|
|
277
277
|
requireXopcDatabase();
|
|
278
278
|
const currentRows = loadTranscriptRowsForSession(key);
|
|
@@ -289,7 +289,17 @@ var SessionStore = class {
|
|
|
289
289
|
"assistant",
|
|
290
290
|
"toolResult"
|
|
291
291
|
].includes(String(row.role)));
|
|
292
|
-
|
|
292
|
+
const onlyRecoveryMetadata = appendedRows.every((row) => "type" in row && row.type === "custom" && [
|
|
293
|
+
"coding_run_started",
|
|
294
|
+
"coding_verification",
|
|
295
|
+
"codemode-store",
|
|
296
|
+
"xopc-tool-discovery-state"
|
|
297
|
+
].includes(String(row.customType)));
|
|
298
|
+
if (removedError && options?.resumeTaskContinuation && onlyRecoveryMetadata && canResumeAfterModelFailure(preparedRows, { allowFailedReadTools: ACCEPTANCE_REPAIR_READ_TOOLS })) {
|
|
299
|
+
archiveFailedModelAttempts(key, rowsBeforeAttempt.length);
|
|
300
|
+
return "prompt";
|
|
301
|
+
}
|
|
302
|
+
if (appendedRows.some((row) => isTranscriptMessageRole(row, "user")) && appendedRows.filter((row) => isTranscriptMessageRole(row, "user")).length === 1 && (isTranscriptMessageRole(tail, "user") || isTranscriptMessageRole(tail, "toolResult")) && canResumeAfterModelFailure(preparedRows, { allowFailedReadTools: ACCEPTANCE_REPAIR_READ_TOOLS }) || appendedRows.length === 1 && isTranscriptMessageRole(appendedRows[0], "user") || removedError && appendedRows.length === 0 && isTranscriptMessageRole(preparedRows.at(-1), "user") || removedError && onlyRecoveryMetadata && (isTranscriptMessageRole(tail, "user") || isTranscriptMessageRole(tail, "toolResult")) && canResumeAfterModelFailure(preparedRows, { allowFailedReadTools: ACCEPTANCE_REPAIR_READ_TOOLS })) {
|
|
293
303
|
if (removedError) archiveFailedModelAttempts(key, rowsBeforeAttempt.length);
|
|
294
304
|
return "resume";
|
|
295
305
|
}
|
|
@@ -2,8 +2,8 @@ import { init_connection, requireXopcDatabase } from "../storage/sqlite/connecti
|
|
|
2
2
|
import { init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
|
|
3
3
|
import { init_resolution, resolveConnectedPlatformEndpoint } from "../platform/resolution.js";
|
|
4
4
|
import { CredentialResolver, init_credentials } from "../auth/credentials.js";
|
|
5
|
-
import { DurableState } from "../storage/sqlite/durable-state.js";
|
|
6
5
|
import { resolveMediaReference } from "../media/media-reference.js";
|
|
6
|
+
import { DurableState } from "../storage/sqlite/durable-state.js";
|
|
7
7
|
import { projectSessionShare } from "./session-share-projector.js";
|
|
8
8
|
import { SessionShareSnapshotConflictError } from "./session-share-service.js";
|
|
9
9
|
import { basename } from "node:path";
|
|
@@ -21,6 +21,9 @@ export declare function requireSessionConnection(input: {
|
|
|
21
21
|
status: 'connection_required' | 'skipped' | 'objective_conflict';
|
|
22
22
|
waitId?: string;
|
|
23
23
|
};
|
|
24
|
+
/** Pending messages may revise the goal; controls cannot become a competing model execution. */
|
|
25
|
+
export declare function interruptedConnectionMessage(wait: ConnectionWait): SessionInput | undefined;
|
|
26
|
+
export declare function hasPendingConnectionMessages(wait: ConnectionWait, includeControls?: boolean): boolean;
|
|
24
27
|
/** The input and the wait transition commit together, using the existing queue's unique key. */
|
|
25
28
|
export declare function queueConnectionResolution(wait: ConnectionWait, resolution: 'continued' | 'skipped', resolvePersonal?: (wait: ConnectionWait, resolution: 'continued' | 'skipped') => unknown): ConnectionWait;
|
|
26
29
|
export declare function consumeConnectionResume(input: SessionInput): boolean;
|
|
@@ -29,10 +32,10 @@ export declare function connectionBindings(conversationId: string): ConnectionNe
|
|
|
29
32
|
export declare function connectorObjectiveScope(conversationId: string): string | undefined;
|
|
30
33
|
export declare function bindObjectiveAccount(conversationId: string, connectorId: string, accountId: string): void;
|
|
31
34
|
export declare function connectionBinding(conversationId: string, connectorId: string): string | undefined;
|
|
32
|
-
/**
|
|
35
|
+
/** Explicit objective changes invalidate an outstanding auto-resume intent. */
|
|
33
36
|
export declare function invalidateConnectionResumeIntent(conversationId: string): void;
|
|
34
37
|
export declare function reviseCurrentConnectionObjective(conversationId: string, summary: string | undefined): void;
|
|
35
|
-
export declare function cancelConnectionObjective(conversationId: string): void;
|
|
38
|
+
export declare function cancelConnectionObjective(conversationId: string, expectedWaitId?: string, expectedObjectiveRevision?: number): void;
|
|
36
39
|
export declare function getConnectionResumeInput(conversationId: string, runId: string): SessionInput | undefined;
|
|
37
40
|
export declare function listConnectionWaitsToCheck(): ConnectionWait[];
|
|
38
41
|
/** A queued wait has not crossed consumeConnectionResume's execution boundary. */
|
|
@@ -73,7 +73,7 @@ function requireSessionConnection(input) {
|
|
|
73
73
|
const origin = originId ? getSessionInputById(input.conversationId, originId) : void 0;
|
|
74
74
|
const originRunId = input.origin?.runId ?? runtime.activeRunId;
|
|
75
75
|
if (!transcriptId || !origin || !originRunId || origin.expectedTranscriptId && origin.expectedTranscriptId !== transcriptId) throw new Error("Connection recovery requires a queued chat execution.");
|
|
76
|
-
const resumed = origin.payload ? getConnectionWait(origin.payload.waitId) : void 0;
|
|
76
|
+
const resumed = origin.kind === "connection_resume" && origin.payload ? getConnectionWait(origin.payload.waitId) : void 0;
|
|
77
77
|
if (resumed?.resolution === "skipped") return { status: "skipped" };
|
|
78
78
|
const active = getActiveConnectionWait(input.conversationId);
|
|
79
79
|
if (active) {
|
|
@@ -162,11 +162,23 @@ function requireSessionConnection(input) {
|
|
|
162
162
|
};
|
|
163
163
|
});
|
|
164
164
|
}
|
|
165
|
+
/** Pending messages may revise the goal; controls cannot become a competing model execution. */
|
|
166
|
+
function interruptedConnectionMessage(wait) {
|
|
167
|
+
return getSessionInputState(wait.conversationId).inputs.find((input) => input.status === "interrupted" && input.kind === "message" && input.payload?.connectionBarrier && input.payload.waitId === wait.id && input.payload.objectiveRevision === wait.objectiveRevision);
|
|
168
|
+
}
|
|
169
|
+
function hasPendingConnectionMessages(wait, includeControls = false) {
|
|
170
|
+
return Boolean(interruptedConnectionMessage(wait)) || getSessionInputState(wait.conversationId).inputs.some((input) => input.id !== wait.originInputId && input.kind === "message" && (includeControls || !input.payload?.connectionAction) && [
|
|
171
|
+
"queued",
|
|
172
|
+
"running",
|
|
173
|
+
"injecting"
|
|
174
|
+
].includes(input.status));
|
|
175
|
+
}
|
|
165
176
|
/** The input and the wait transition commit together, using the existing queue's unique key. */
|
|
166
177
|
function queueConnectionResolution(wait, resolution, resolvePersonal) {
|
|
167
178
|
return runSqliteWriteTransaction(() => {
|
|
168
179
|
const current = getConnectionWait(wait.id);
|
|
169
180
|
if (!current || current.version !== wait.version || current.status !== "open") throw new Error("WAIT_CHANGED");
|
|
181
|
+
if (resolution === "continued" && hasPendingConnectionMessages(wait)) return current;
|
|
170
182
|
if (resolvePersonal?.(wait, resolution)) return updateConnectionWait({
|
|
171
183
|
...wait,
|
|
172
184
|
status: "closed",
|
|
@@ -212,8 +224,9 @@ function queueConnectionResolution(wait, resolution, resolvePersonal) {
|
|
|
212
224
|
function consumeConnectionResume(input) {
|
|
213
225
|
if (input.kind !== "connection_resume") return true;
|
|
214
226
|
return runSqliteWriteTransaction(() => {
|
|
215
|
-
const wait = input.payload ? getConnectionWait(input.payload.waitId) : void 0;
|
|
227
|
+
const wait = input.kind === "connection_resume" && input.payload ? getConnectionWait(input.payload.waitId) : void 0;
|
|
216
228
|
if (!wait || wait.status !== "queued" || wait.queuedInputId !== input.id || wait.objectiveRevision !== input.payload?.objectiveRevision) return false;
|
|
229
|
+
if (hasPendingConnectionMessages(wait, true)) return false;
|
|
217
230
|
if (readCurrentTranscriptId(getSqliteDatabase(), input.conversationId) !== wait.transcriptId) return false;
|
|
218
231
|
if (wait.taskRunId) {
|
|
219
232
|
const runs = new TaskRunRepository();
|
|
@@ -289,7 +302,7 @@ function connectionBindings(conversationId) {
|
|
|
289
302
|
const state = getSessionInputState(conversationId);
|
|
290
303
|
const input = state.activeInputId ? getSessionInputById(conversationId, state.activeInputId) : void 0;
|
|
291
304
|
if (!input) return [];
|
|
292
|
-
const wait = input.payload ? getConnectionWait(input.payload.waitId) : void 0;
|
|
305
|
+
const wait = input.kind === "connection_resume" && input.payload ? getConnectionWait(input.payload.waitId) : void 0;
|
|
293
306
|
const stored = getSqliteDatabase().prepare(`SELECT connector_id, account_id FROM connector_objective_accounts
|
|
294
307
|
WHERE conversation_id = ? AND transcript_id = ? AND objective_id = ?`).all(conversationId, readCurrentTranscriptId(getSqliteDatabase(), conversationId) ?? "", wait?.objectiveId ?? input.id);
|
|
295
308
|
return (wait?.needs ?? stored.map((row) => ({
|
|
@@ -317,7 +330,7 @@ function connectorObjectiveScope(conversationId) {
|
|
|
317
330
|
const input = state.activeInputId ? getSessionInputById(conversationId, state.activeInputId) : void 0;
|
|
318
331
|
if (!input) return void 0;
|
|
319
332
|
const active = getActiveConnectionWait(conversationId);
|
|
320
|
-
const wait = input.payload ? getConnectionWait(input.payload.waitId) : active?.originInputId === input.id ? active : void 0;
|
|
333
|
+
const wait = input.kind === "connection_resume" && input.payload ? getConnectionWait(input.payload.waitId) : active?.originInputId === input.id ? active : void 0;
|
|
321
334
|
return JSON.stringify([
|
|
322
335
|
readCurrentTranscriptId(getSqliteDatabase(), conversationId),
|
|
323
336
|
wait?.objectiveId ?? input.id,
|
|
@@ -329,7 +342,7 @@ function bindObjectiveAccount(conversationId, connectorId, accountId) {
|
|
|
329
342
|
const state = getSessionInputState(conversationId);
|
|
330
343
|
const input = state.activeInputId ? getSessionInputById(conversationId, state.activeInputId) : void 0;
|
|
331
344
|
if (!input) return;
|
|
332
|
-
const wait = input.payload ? getConnectionWait(input.payload.waitId) : void 0;
|
|
345
|
+
const wait = input.kind === "connection_resume" && input.payload ? getConnectionWait(input.payload.waitId) : void 0;
|
|
333
346
|
db.prepare(`INSERT OR IGNORE INTO connector_objective_accounts
|
|
334
347
|
(conversation_id, transcript_id, objective_id, connector_id, account_id) VALUES (?, ?, ?, ?, ?)`).run(conversationId, readCurrentTranscriptId(db, conversationId) ?? "", wait?.objectiveId ?? input.id, connectorId, accountId);
|
|
335
348
|
}
|
|
@@ -337,7 +350,7 @@ function connectionBinding(conversationId, connectorId) {
|
|
|
337
350
|
const matches = connectionBindings(conversationId).filter((need) => need.target.type === "connector" && need.target.connectorId === connectorId);
|
|
338
351
|
return matches.length === 1 ? matches[0].connectionId : void 0;
|
|
339
352
|
}
|
|
340
|
-
/**
|
|
353
|
+
/** Explicit objective changes invalidate an outstanding auto-resume intent. */
|
|
341
354
|
function invalidateConnectionResumeIntent(conversationId) {
|
|
342
355
|
const wait = getActiveConnectionWait(conversationId);
|
|
343
356
|
if (!wait) return;
|
|
@@ -385,26 +398,38 @@ function reviseCurrentConnectionObjective(conversationId, summary) {
|
|
|
385
398
|
reviewRequired: true,
|
|
386
399
|
objectiveRevision: wait.objectiveRevision + 1
|
|
387
400
|
}, wait.version);
|
|
401
|
+
getSqliteDatabase().prepare(`UPDATE session_inputs SET payload_json = json_set(payload_json, '$.objectiveRevision', ?),
|
|
402
|
+
version = version + 1, updated_at_ms = ? WHERE conversation_id = ? AND kind = 'message'
|
|
403
|
+
AND status IN ('queued','running','injecting') AND json_extract(payload_json, '$.connectionBarrier') = 1
|
|
404
|
+
AND json_extract(payload_json, '$.waitId') = ?`).run(wait.objectiveRevision + 1, Date.now(), conversationId, wait.id);
|
|
388
405
|
});
|
|
389
406
|
publishConnectionWait(conversationId);
|
|
390
407
|
}
|
|
391
|
-
function cancelConnectionObjective(conversationId) {
|
|
392
|
-
const
|
|
408
|
+
function cancelConnectionObjective(conversationId, expectedWaitId, expectedObjectiveRevision) {
|
|
409
|
+
const runtime = getSessionInputState(conversationId);
|
|
410
|
+
const executing = runtime.activeInputId ? getSessionInputById(conversationId, runtime.activeInputId) : void 0;
|
|
411
|
+
const wait = getActiveConnectionWait(conversationId) ?? (expectedWaitId && executing?.kind === "connection_resume" && executing.payload?.waitId === expectedWaitId ? getConnectionWait(expectedWaitId) : void 0);
|
|
393
412
|
if (!wait) return;
|
|
413
|
+
if (expectedWaitId && wait.id !== expectedWaitId) return;
|
|
414
|
+
if (expectedObjectiveRevision !== void 0 && wait.objectiveRevision !== expectedObjectiveRevision) return;
|
|
394
415
|
runSqliteWriteTransaction(() => {
|
|
395
416
|
if (wait.queuedInputId) setSessionInputStatus(wait.queuedInputId, "cancelled");
|
|
396
417
|
const personalRequest = personalRequestForWait(wait.id);
|
|
397
418
|
const runs = new TaskRunRepository();
|
|
398
|
-
const
|
|
419
|
+
const personalTaskWait = personalRequest?.taskId ? getSqliteDatabase().prepare(`SELECT task_run_id FROM task_waits
|
|
420
|
+
WHERE task_id = ? AND json_extract(condition_json, '$.connectionWaitId') = ? LIMIT 1`).get(personalRequest.taskId, wait.id) : void 0;
|
|
421
|
+
const taskRunId = wait.taskRunId ?? personalRequest?.parameters.taskRunId ?? personalTaskWait?.task_run_id;
|
|
399
422
|
if (taskRunId) {
|
|
400
423
|
const run = runs.get(taskRunId);
|
|
401
|
-
if (run
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
424
|
+
if (run && [
|
|
425
|
+
"queued",
|
|
426
|
+
"running",
|
|
427
|
+
"waiting",
|
|
428
|
+
"verifying",
|
|
429
|
+
"cancelled"
|
|
430
|
+
].includes(run.status)) {
|
|
431
|
+
runs.resolveCancelledRunWaits(run.id, { kind: "system" });
|
|
432
|
+
if (run.status !== "cancelled") runs.finalize({
|
|
408
433
|
runId: run.id,
|
|
409
434
|
expectedVersion: run.version,
|
|
410
435
|
receipt: {
|
|
@@ -534,4 +559,4 @@ var init_connection_wait_repository = __esmMin((() => {
|
|
|
534
559
|
}));
|
|
535
560
|
//#endregion
|
|
536
561
|
init_connection_wait_repository();
|
|
537
|
-
export { bindObjectiveAccount, cancelConnectionObjective, connectionBinding, connectionBindings, connectorObjectiveScope, consumeConnectionResume, getActiveConnectionWait, getConnectionResumeInput, getConnectionWait, init_connection_wait_repository, invalidateConnectionResumeIntent, isConnectionSuspended, listConnectionWaitsToCheck, onConnectionWaitChanged, publishConnectionWait, queueConnectionResolution, reconcileConnectionWaits, requireSessionConnection, reviseCurrentConnectionObjective, updateConnectionWait };
|
|
562
|
+
export { bindObjectiveAccount, cancelConnectionObjective, connectionBinding, connectionBindings, connectorObjectiveScope, consumeConnectionResume, getActiveConnectionWait, getConnectionResumeInput, getConnectionWait, hasPendingConnectionMessages, init_connection_wait_repository, interruptedConnectionMessage, invalidateConnectionResumeIntent, isConnectionSuspended, listConnectionWaitsToCheck, onConnectionWaitChanged, publishConnectionWait, queueConnectionResolution, reconcileConnectionWaits, requireSessionConnection, reviseCurrentConnectionObjective, updateConnectionWait };
|
|
@@ -38,3 +38,4 @@ export { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeC
|
|
|
38
38
|
export { getConnectorAccount, listConnectorAccounts, refreshConnectorAccountCurrent, reconcileConnectorAccount, } from './connector-account-repository.js';
|
|
39
39
|
export { getConnectorSyncPolicy, getConnectorSyncPolicyForConnection, listConnectorSyncPolicies, upsertConnectorSyncPolicy, type ConnectorSyncPolicy, } from './connector-sync-policy-repository.js';
|
|
40
40
|
export { getUserTrustPolicy, setUserTrustPolicy, } from './user-trust-repository.js';
|
|
41
|
+
export { createResearchCheckpoint, getResearchCheckpoint, claimResearchCheckpoint, saveResearchCheckpoint, recordResearchEvidence, recordResearchSearch, finishResearchCheckpoint, type StoredResearchCheckpoint, } from './research-checkpoint-repository.js';
|
|
@@ -42,6 +42,7 @@ import { deleteSessionConfig, getSessionConfig, hasSessionConfig, init_config_re
|
|
|
42
42
|
import { createObjectLinkRecord, deleteObjectLinkRecord, getActivityEventRecord, init_activity_repository, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent } from "./activity-repository.js";
|
|
43
43
|
import { getConnectorSyncPolicy, getConnectorSyncPolicyForConnection, init_connector_sync_policy_repository, listConnectorSyncPolicies, upsertConnectorSyncPolicy } from "./connector-sync-policy-repository.js";
|
|
44
44
|
import { getUserTrustPolicy, init_user_trust_repository, setUserTrustPolicy } from "./user-trust-repository.js";
|
|
45
|
+
import { claimResearchCheckpoint, createResearchCheckpoint, finishResearchCheckpoint, getResearchCheckpoint, init_research_checkpoint_repository, recordResearchEvidence, recordResearchSearch, saveResearchCheckpoint } from "./research-checkpoint-repository.js";
|
|
45
46
|
//#region src/storage/sqlite/index.ts
|
|
46
47
|
var init_sqlite = __esmMin((() => {
|
|
47
48
|
init_paths();
|
|
@@ -84,7 +85,8 @@ var init_sqlite = __esmMin((() => {
|
|
|
84
85
|
init_connector_account_repository();
|
|
85
86
|
init_connector_sync_policy_repository();
|
|
86
87
|
init_user_trust_repository();
|
|
88
|
+
init_research_checkpoint_repository();
|
|
87
89
|
}));
|
|
88
90
|
//#endregion
|
|
89
91
|
init_sqlite();
|
|
90
|
-
export { COMPOSER_INPUT_HISTORY_LIMIT, DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, DatabaseSchemaTooOldError, SCHEMA_META_SCHEMA_VERSION_KEY, SidebarLayoutConflictError, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, acknowledgeHomeAttention, appendCompactionBoundaryIfUnchanged, appendComposerInputHistory, appendConnectorExecutionAudit, appendMediaToAssistantTranscriptEntry, appendTranscriptEntry, applyPendingMigrations, authenticateDeviceAccessToken, bindEndpointPrincipal, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRefreshProofMessage, cancelQueuedSessionInput, claimConnectorWebhookDelivery, claimContextExtractionRun, claimKnowledgeSourceItems, claimNextConnectorLearningJob, claimNextSessionInput, classifyStoredRow, clearComposerInputHistory, clearGatewayIdentityForTest, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, consumeClarificationApproval, consumeClarificationResume, consumeConnectorApproval, countKnowledgeSourceItems, createClarificationWait, createCollaborationRule, createConnectorApproval, createContextEvidence, createDevice, createDevicePairingSetup, createEndpointPrincipal, createObjectLinkRecord, decideConnectorApproval, deleteBrowserTabBinding, deleteBrowserTabBindingsByEndpoint, deleteBrowserTabBindingsByPrincipal, deleteConnectorConnection, deleteConnectorInstallation, deleteEndpointSessionBinding, deleteEndpointSessionBindingsByPrincipal, deleteKnowledgeSourceItems, deleteNoteAgentContextRecord, deleteNoteRecord, deleteObjectLinkRecord, deleteSessionConfig, deleteSessionRecord, discoverSqlMigrations, enqueueConnectorLearningJob, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findConversationIdByTranscriptId, findLatestAssistantTranscriptEntryId, findSessionInput, finishContextExtractionRun, finishEndpointToolInvocationAudit, finishKnowledgeSyncRun, finishSessionInputRun, getActiveClarification, getActivityEventRecord, getBrowserTabBinding, getBrowserTabBindingById, getCachedConnectorCatalogEntry, getClarification, getClarificationResumeInput, getClarificationSnapshot, getCollaborationRule, getConnectorAccount, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getConnectorSyncPolicy, getConnectorSyncPolicyForConnection, getContextExtractionRun, getCurrentTranscriptId, getDevice, getEndpointPrincipal, getEndpointSessionBinding, getGlobalSessionStats, getInteractionState, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getNoteAgentContextRecord, getNoteRecord, getOrCreateGatewayIdentity, getSessionConfig, getSessionInputById, getSessionInputState, getSessionMetadata, getSessionTaskPlan, getSidebarLayout, getSqliteDatabase, getUserPeopleIndexState, getUserPerson, getUserTrustPolicy, getXopcDatabase, hasSessionConfig, incrementSessionStatsOnAppend, init_sqlite, insertSessionInput, inspectSchemaMigrationStatus, isClarificationSuspended, isDevicePairingSetupActive, isHomeAttentionAcknowledged, isXopcDatabaseOpen, issueDeviceTokenPair, listActiveSessionInputExecutions, listActiveSessionInputRuns, listActivityRecords, listCachedConnectorCatalogEntries, listCollaborationRules, listCompactionBoundaries, listComposerInputHistory, listConnectorAccounts, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listConnectorLearningJobs, listConnectorSyncPolicies, listContextExtractionOutputs, listContextExtractionRuns, listDevices, listEndpointPrincipals, listEndpointToolInvocationAuditPage, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, listTaskUpdateRunIds, listTaskUpdateTriggers, listUserPeople, loadCompactionSourceSnapshot, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, mergeUserPeople, metadataToSessionInsert, mutateQueuedSessionInput, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, pruneBoundedKnowledgeSourceItems, readSchemaVersion, readSchemaVersionForTest, reconcileConnectorAccount, recordActivityEvent, recoverSessionInputState, recoverStaleConnectorLearningJobs, refreshConnectorAccountCurrent, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, replaceLatestSessionTurnAndQueueInput, replaceSidebarLayout, replaceTranscriptRows, replaceUserPeopleIndex, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveClarification, resolveMigrationsDir, resolveSessionAgentId, resolveXopcDatabasePath, restoreBeforeCompactionBoundary, revokeDevice, revokeEndpointPrincipal, rotateDeviceRefreshToken, runSqliteWriteTransaction, searchSessionTranscript, sessionConfigRowToConfig, sessionRowToMetadata, setBrowserTabBinding, setCollaborationRuleStatus, setConnectorLearningPaused, setEndpointSessionBinding, setInteractionState, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setSessionConfig, setSessionInputStatus, setSessionTaskPlan, setUserTrustPolicy, signGatewayPayload, sortBySidebarLayout, startEndpointToolInvocationAudit, startKnowledgeSyncRun, summarizeUserPeople, supersedeActiveClarification, touchEndpointPrincipal, transcriptEntryRowToStoredRow, updateConnectorLearningJob, updateInteractionStateFromMessage, updateSessionConfig, updateSessionStats, updateUserPerson, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertConnectorSyncPolicy, upsertKnowledgeSourceItems, upsertNoteAgentContextRecord, upsertNoteRecord, validateLatestSessionTurnTarget };
|
|
92
|
+
export { COMPOSER_INPUT_HISTORY_LIMIT, DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, DatabaseSchemaTooOldError, SCHEMA_META_SCHEMA_VERSION_KEY, SidebarLayoutConflictError, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, acknowledgeHomeAttention, appendCompactionBoundaryIfUnchanged, appendComposerInputHistory, appendConnectorExecutionAudit, appendMediaToAssistantTranscriptEntry, appendTranscriptEntry, applyPendingMigrations, authenticateDeviceAccessToken, bindEndpointPrincipal, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRefreshProofMessage, cancelQueuedSessionInput, claimConnectorWebhookDelivery, claimContextExtractionRun, claimKnowledgeSourceItems, claimNextConnectorLearningJob, claimNextSessionInput, claimResearchCheckpoint, classifyStoredRow, clearComposerInputHistory, clearGatewayIdentityForTest, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, consumeClarificationApproval, consumeClarificationResume, consumeConnectorApproval, countKnowledgeSourceItems, createClarificationWait, createCollaborationRule, createConnectorApproval, createContextEvidence, createDevice, createDevicePairingSetup, createEndpointPrincipal, createObjectLinkRecord, createResearchCheckpoint, decideConnectorApproval, deleteBrowserTabBinding, deleteBrowserTabBindingsByEndpoint, deleteBrowserTabBindingsByPrincipal, deleteConnectorConnection, deleteConnectorInstallation, deleteEndpointSessionBinding, deleteEndpointSessionBindingsByPrincipal, deleteKnowledgeSourceItems, deleteNoteAgentContextRecord, deleteNoteRecord, deleteObjectLinkRecord, deleteSessionConfig, deleteSessionRecord, discoverSqlMigrations, enqueueConnectorLearningJob, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findConversationIdByTranscriptId, findLatestAssistantTranscriptEntryId, findSessionInput, finishContextExtractionRun, finishEndpointToolInvocationAudit, finishKnowledgeSyncRun, finishResearchCheckpoint, finishSessionInputRun, getActiveClarification, getActivityEventRecord, getBrowserTabBinding, getBrowserTabBindingById, getCachedConnectorCatalogEntry, getClarification, getClarificationResumeInput, getClarificationSnapshot, getCollaborationRule, getConnectorAccount, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getConnectorSyncPolicy, getConnectorSyncPolicyForConnection, getContextExtractionRun, getCurrentTranscriptId, getDevice, getEndpointPrincipal, getEndpointSessionBinding, getGlobalSessionStats, getInteractionState, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getNoteAgentContextRecord, getNoteRecord, getOrCreateGatewayIdentity, getResearchCheckpoint, getSessionConfig, getSessionInputById, getSessionInputState, getSessionMetadata, getSessionTaskPlan, getSidebarLayout, getSqliteDatabase, getUserPeopleIndexState, getUserPerson, getUserTrustPolicy, getXopcDatabase, hasSessionConfig, incrementSessionStatsOnAppend, init_sqlite, insertSessionInput, inspectSchemaMigrationStatus, isClarificationSuspended, isDevicePairingSetupActive, isHomeAttentionAcknowledged, isXopcDatabaseOpen, issueDeviceTokenPair, listActiveSessionInputExecutions, listActiveSessionInputRuns, listActivityRecords, listCachedConnectorCatalogEntries, listCollaborationRules, listCompactionBoundaries, listComposerInputHistory, listConnectorAccounts, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listConnectorLearningJobs, listConnectorSyncPolicies, listContextExtractionOutputs, listContextExtractionRuns, listDevices, listEndpointPrincipals, listEndpointToolInvocationAuditPage, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, listTaskUpdateRunIds, listTaskUpdateTriggers, listUserPeople, loadCompactionSourceSnapshot, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, mergeUserPeople, metadataToSessionInsert, mutateQueuedSessionInput, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, pruneBoundedKnowledgeSourceItems, readSchemaVersion, readSchemaVersionForTest, reconcileConnectorAccount, recordActivityEvent, recordResearchEvidence, recordResearchSearch, recoverSessionInputState, recoverStaleConnectorLearningJobs, refreshConnectorAccountCurrent, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, replaceLatestSessionTurnAndQueueInput, replaceSidebarLayout, replaceTranscriptRows, replaceUserPeopleIndex, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveClarification, resolveMigrationsDir, resolveSessionAgentId, resolveXopcDatabasePath, restoreBeforeCompactionBoundary, revokeDevice, revokeEndpointPrincipal, rotateDeviceRefreshToken, runSqliteWriteTransaction, saveResearchCheckpoint, searchSessionTranscript, sessionConfigRowToConfig, sessionRowToMetadata, setBrowserTabBinding, setCollaborationRuleStatus, setConnectorLearningPaused, setEndpointSessionBinding, setInteractionState, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setSessionConfig, setSessionInputStatus, setSessionTaskPlan, setUserTrustPolicy, signGatewayPayload, sortBySidebarLayout, startEndpointToolInvocationAudit, startKnowledgeSyncRun, summarizeUserPeople, supersedeActiveClarification, touchEndpointPrincipal, transcriptEntryRowToStoredRow, updateConnectorLearningJob, updateInteractionStateFromMessage, updateSessionConfig, updateSessionStats, updateUserPerson, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertConnectorSyncPolicy, upsertKnowledgeSourceItems, upsertNoteAgentContextRecord, upsertNoteRecord, validateLatestSessionTurnTarget };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
CREATE TABLE research_checkpoints (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
conversation_id TEXT NOT NULL REFERENCES sessions(conversation_id) ON DELETE CASCADE,
|
|
4
|
+
workspace TEXT NOT NULL,
|
|
5
|
+
goal TEXT NOT NULL,
|
|
6
|
+
checkpoint_json TEXT NOT NULL CHECK(json_valid(checkpoint_json)),
|
|
7
|
+
status TEXT NOT NULL CHECK(status IN ('running','partial','completed','failed','cancelled')),
|
|
8
|
+
attempts INTEGER NOT NULL DEFAULT 0,
|
|
9
|
+
stop_reason TEXT,
|
|
10
|
+
summary TEXT NOT NULL DEFAULT '',
|
|
11
|
+
lease_token TEXT,
|
|
12
|
+
lease_expires_at INTEGER,
|
|
13
|
+
updated_at INTEGER NOT NULL
|
|
14
|
+
);
|
|
15
|
+
CREATE INDEX research_checkpoints_conversation ON research_checkpoints(conversation_id, updated_at);
|