@xopcai/xopc 0.0.285 → 0.0.286
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/assets/{auth-DB30ywek.js → auth-BXCWrPlg.js} +1 -1
- package/dist/browser-ext/dist/background.js +2 -2
- package/dist/browser-ext/dist/sidepanel.html +1 -1
- package/dist/browser-ext/dist/sidepanel.js +136 -136
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/adapters/gateway-setup.js +14 -14
- package/dist/extensions/feishu/src/state/message-bindings.d.ts +1 -1
- package/dist/extensions/feishu/src/state/thread-bindings.d.ts +4 -4
- package/dist/extensions/feishu/src/state/thread-bindings.js +6 -6
- package/dist/extensions/feishu/src/subagent-hooks.d.ts +1 -1
- package/dist/extensions/feishu/src/subagent-hooks.js +5 -5
- package/dist/extensions/feishu/src/transport/socket-mode/monitor.js +9 -9
- package/dist/extensions/feishu/src/transport/webhook/monitor.js +4 -4
- package/dist/extensions/feishu/src/workflow-progress.d.ts +1 -1
- package/dist/extensions/feishu/src/workflow-progress.js +8 -7
- package/dist/extensions/telegram/src/approval-store.d.ts +2 -2
- package/dist/extensions/telegram/src/approval-store.js +1 -1
- package/dist/extensions/telegram/src/command-handler.d.ts +2 -2
- package/dist/extensions/telegram/src/command-handler.js +8 -8
- package/dist/extensions/telegram/src/delivery-chat-id.d.ts +1 -1
- package/dist/extensions/telegram/src/delivery-chat-id.js +7 -3
- package/dist/extensions/telegram/src/exec-approval-handler.js +1 -1
- package/dist/extensions/telegram/src/focus-handler.d.ts +2 -2
- package/dist/extensions/telegram/src/focus-handler.js +10 -10
- package/dist/extensions/telegram/src/inbound-processor.d.ts +3 -3
- package/dist/extensions/telegram/src/inbound-processor.js +11 -11
- package/dist/extensions/telegram/src/plugin.js +5 -5
- package/dist/extensions/telegram/src/routing-integration.d.ts +1 -1
- package/dist/extensions/telegram/src/routing-integration.js +19 -21
- package/dist/extensions/telegram/src/thread-bindings.d.ts +1 -1
- package/dist/extensions/telegram/src/workflow-progress.js +8 -7
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/auth/login-qr.d.ts +4 -4
- package/dist/extensions/weixin/src/auth/login-qr.js +21 -21
- package/dist/extensions/weixin/src/auth/weixin-account-id.d.ts +1 -1
- package/dist/extensions/weixin/src/auth/weixin-account-id.js +1 -1
- package/dist/extensions/weixin/src/cli/gateway-qr-login.d.ts +2 -2
- package/dist/extensions/weixin/src/cli/gateway-qr-login.js +13 -13
- package/dist/extensions/weixin/src/cli/qr-login.js +1 -1
- package/dist/extensions/weixin/src/delivery-to.js +6 -2
- package/dist/extensions/weixin/src/messaging/inbound.d.ts +1 -1
- package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
- package/dist/extensions/weixin/src/messaging/process-message.js +3 -3
- package/dist/extensions/weixin/src/plugin.js +5 -5
- package/dist/extensions/weixin/src/routing-integration.d.ts +1 -1
- package/dist/extensions/weixin/src/routing-integration.js +3 -3
- package/dist/extensions/weixin/src/workflow-progress.d.ts +1 -1
- package/dist/extensions/weixin/src/workflow-progress.js +7 -6
- package/dist/gateway/static/root/assets/{activity-store-B0BTIk9j.js → activity-store-xOhV8FHx.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Dc-0QZTQ.js → agent-avatar-dicebear-BzQbYWEj.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-CcmqK1Sc.js → agent-defaults-settings-panel-BxR5eog4.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-B_7PVt7S.js → agents-Dx1om1eN.js} +1 -1
- package/dist/gateway/static/root/assets/{api-Coly9ab6.js → api-CVJQLBv9.js} +1 -1
- package/dist/gateway/static/root/assets/api-q1kIMCLW.js +1 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-TWBO-msg.js → app-management-settings-panel-CTyuXkNC.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CpTZ2KuT.js → appearance-settings-Tk-GJtvF.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-BA-7OrhJ.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-z_u6alob.js → archive-plugin-O49jeeXo.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-C2nS04TC.js → attachment-load-r9lBF2tW.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-aIBsw9zR.js → automations-page-CFFLXYgS.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-BRQlU4qk.js → automations-workspace-DUZE1NOH.js} +3 -3
- package/dist/gateway/static/root/assets/{binary-plugins-CGmXoZnl.js → binary-plugins-BpM43vsn.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-CtvzCZhC.js → block-editor-DFrfEcGw.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automation-inputs-BOTU1isH.js → browser-automation-inputs-CyHGQwxQ.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-BwU5V8J0.js → browser-automations-page-CPkOWfM9.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-DDjbDeHQ.js → browser-settings-page-BOcseZxg.js} +2 -2
- package/dist/gateway/static/root/assets/button-CGlRPNzi.js +1 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-ohEV64hG.js +8 -0
- package/dist/gateway/static/root/assets/channels-settings-UOf9mgqt.js +1 -0
- package/dist/gateway/static/root/assets/{channels-status-swr-Dfi0Desh.js → channels-status-swr-BArPeImO.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-B0MvcO6j.js → chat-terminal-dock-D5Aka4S8.js} +2 -2
- package/dist/gateway/static/root/assets/{connectors-page-L8JehrxF.js → connectors-page-BEQR0NRq.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-expression-CjrWuy2m.js → cron-expression-GDPX4NxC.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-DXOvbHCr.js → date-picker-DNtRu6EB.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-BEnC-eS0.js → dependency-picker-Dng3dIQa.js} +1 -1
- package/dist/gateway/static/root/assets/desktop-pet-BicYycxy.js +1 -0
- package/dist/gateway/static/root/assets/{desktop-pet-settings-CYyjcSn6.js → desktop-pet-settings-BEse55eX.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-BPMGvAKE.js → device-pairing-wizard-be30HuFI.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-H_aPMGXW.js → extension-debug-page-YzhYyuay.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-C1JnpeMt.js → extension-page-CEXVIkDl.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-CrlbgK8g.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-config-swr-G2lQt7Ak.js → gateway-config-swr-BNuoHXiZ.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-CDJY1AOW.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-GP31PUrG.js → gateway-startup-retry-zMPfje0n.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-C7fjiowt.js → heartbeat-settings-BtxitqZ3.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-DZXeXdUL.js → home-page-_oqo0pNR.js} +1 -1
- package/dist/gateway/static/root/assets/{image-generation-api-CKFhfHSw.js → image-generation-api-B_Tyx74A.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-GROumhj8.js → imports-page-eZciuLw_.js} +1 -1
- package/dist/gateway/static/root/assets/index--YC42LAz.css +2 -0
- package/dist/gateway/static/root/assets/index-fVtuw2o9.js +75 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-zcI822m_.js → keyboard-shortcuts-settings-B796W039.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-CAEKGTAg.js → local-app-workbench-page-Z8mpau9d.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-BtgDJ92Q.js → local-apps-page-DXmY5jwM.js} +1 -1
- package/dist/gateway/static/root/assets/locale-store-D0001I7p.js +1 -0
- package/dist/gateway/static/root/assets/logs-page-BGOO8ouT.js +2 -0
- package/dist/gateway/static/root/assets/{management-settings-DasZxCyD.js → management-settings-b1MG7s-3.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-6oYdBahT.js → markdown-view-2txE_Blz.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-CxthbBvk.js → media-plugins-CDEf3ksI.js} +1 -1
- package/dist/gateway/static/root/assets/messages-BWANv-N-.js +3 -0
- package/dist/gateway/static/root/assets/{note-detail-panel-BcWq3ddw.js → note-detail-panel-Bm33_3xJ.js} +3 -3
- package/dist/gateway/static/root/assets/notes-page-C32-xssK.js +8 -0
- package/dist/gateway/static/root/assets/page-tabs-Bi_-DA5J.js +1 -0
- package/dist/gateway/static/root/assets/popover-select-DldSX8GX.js +1 -0
- package/dist/gateway/static/root/assets/{preview-open-alternatives-Bevpbq9f.js → preview-open-alternatives-Dhfdf14p.js} +1 -1
- package/dist/gateway/static/root/assets/proactive-page-BNouL7Tv.js +1 -0
- package/dist/gateway/static/root/assets/{product-open-page-Bi1seZpM.js → product-open-page-BkbZBqBr.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-CZ7glGYw.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-DP3ZINZz.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-D0ddwBFj.js → registry-api-icwoEKYB.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-xqJcPdOO.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-Wkru8_My.js → runtime-tools-settings-panel-bmgxwWpW.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-CSMRzj9Y.js → schema-form-DoZeepCg.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-Hj9uFcIO.js → sessions-page-BaxIfjpm.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-Cy3Ab3Vg.js +1 -0
- package/dist/gateway/static/root/assets/settings-form-section-sw2bbS2b.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-BcQGAnCs.js → settings-page-BWF8uac0.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-layout-CsUQKRq0.js +1 -0
- package/dist/gateway/static/root/assets/{setup-status-panel-DzxmsaQG.js → setup-status-panel-BuYto2mT.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-DQocUl-1.js → share-preview-page-BIHYD6-O.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-DKtWUneq.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-Dn7ElMUk.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-AmqtBJo7.js → skills-page-D-7UtJIc.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-DtlfCgJp.js → skills-page.utils-dvue6Ish.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-Ct698Nf-.js → system-settings-panel-DCyxPWCl.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-efmH43Pq.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-ng8KJsAT.js → theme-store-CZwYGpbY.js} +1 -1
- package/dist/gateway/static/root/assets/tunnel-api-__auf8Ww.js +1 -0
- package/dist/gateway/static/root/assets/{use-autosave-BSyxRHt2.js → use-autosave-Iq83UDt3.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-DIEHnAER.js → user-model-page-DByIJcQq.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-SE3OQI1s.js → voice-api-key-field-D-QssKik.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-VNuCmdFe.js → voice-config-api-B0wNN_tE.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-Dn1vy2oq.js → work-discovery-overlay-5NRYg1iI.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BJEfGY-k.js → workflow-run-setup-panel-Ds2SZjLG.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-DgRNIyr7.js → workflows-page-BJv3eoKR.js} +2 -2
- package/dist/gateway/static/root/index.html +12 -12
- package/dist/package.js +1 -1
- package/dist/packages/endpoint-tools-protocol/src/index.js +312 -305
- package/dist/packages/gateway-contract/src/agent-stream.js +6 -0
- package/dist/packages/gateway-contract/src/automations.js +215 -0
- package/dist/packages/gateway-contract/src/browser-page-context.js +48 -39
- package/dist/packages/gateway-contract/src/browser-tab-binding.js +30 -25
- package/dist/packages/gateway-contract/src/clarifications.js +6 -0
- package/dist/packages/gateway-contract/src/connection-waits.js +6 -0
- package/dist/packages/gateway-contract/src/conversation-identity.js +17 -0
- package/dist/packages/gateway-contract/src/device-pairing.js +84 -78
- package/dist/packages/gateway-contract/src/discussions.js +19 -15
- package/dist/packages/gateway-contract/src/files.js +55 -0
- package/dist/packages/gateway-contract/src/home.js +188 -0
- package/dist/packages/gateway-contract/src/index.js +65 -0
- package/dist/packages/gateway-contract/src/mobile-privacy.js +26 -0
- package/dist/packages/gateway-contract/src/model-selection.js +4 -1
- package/dist/packages/gateway-contract/src/new-session.js +5 -1
- package/dist/packages/gateway-contract/src/notifications.js +64 -59
- package/dist/packages/gateway-contract/src/proactive.js +133 -128
- package/dist/packages/gateway-contract/src/product-delivery.js +56 -50
- package/dist/packages/gateway-contract/src/project-monitoring.js +33 -28
- package/dist/packages/gateway-contract/src/project-operating.js +100 -0
- package/dist/packages/gateway-contract/src/session-identity.js +38 -34
- package/dist/packages/gateway-contract/src/session-input-reliability.js +6 -0
- package/dist/packages/gateway-contract/src/sessions.js +145 -0
- package/dist/packages/gateway-contract/src/task-lifecycle.js +69 -64
- package/dist/packages/gateway-contract/src/task-runs.js +80 -75
- package/dist/packages/gateway-contract/src/tasks.js +445 -438
- package/dist/packages/gateway-contract/src/tool-activity.js +154 -149
- package/dist/packages/gateway-contract/src/turn-outcome.js +118 -112
- package/dist/packages/gateway-contract/src/user-message-display.js +13 -8
- package/dist/packages/gateway-contract/src/welcome-suggestions.js +6 -0
- package/dist/packages/realtime-client/src/index.js +1 -1
- package/dist/packages/realtime-protocol/src/index.js +4 -2
- package/dist/packages/realtime-protocol/src/voice.js +4 -4
- package/dist/src/activity/types.d.ts +1 -1
- package/dist/src/agent/agent-instance-gateway.d.ts +18 -18
- package/dist/src/agent/agent-manager.d.ts +27 -27
- package/dist/src/agent/agent-manager.js +180 -179
- package/dist/src/agent/background-review/coordinator.d.ts +3 -3
- package/dist/src/agent/background-review/coordinator.js +10 -10
- package/dist/src/agent/background-review/run-background-review.d.ts +1 -1
- package/dist/src/agent/background-review/run-background-review.js +14 -14
- package/dist/src/agent/bootstrap/bootstrap-cache.d.ts +4 -4
- package/dist/src/agent/bootstrap/bootstrap-cache.js +9 -9
- package/dist/src/agent/bootstrap/bootstrap-files.d.ts +4 -4
- package/dist/src/agent/bootstrap/bootstrap-files.js +9 -9
- package/dist/src/agent/bootstrap/filter-bootstrap-files.d.ts +1 -1
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js +3 -3
- package/dist/src/agent/child-agent-factory.d.ts +3 -3
- package/dist/src/agent/child-agent-factory.js +5 -5
- package/dist/src/agent/coding/workspace-revision.js +1 -1
- package/dist/src/agent/commands/command-registry.js +2 -1
- package/dist/src/agent/context/audit.d.ts +2 -2
- package/dist/src/agent/context/audit.js +5 -4
- package/dist/src/agent/context/coordinator.d.ts +6 -6
- package/dist/src/agent/context/coordinator.js +13 -13
- package/dist/src/agent/context/execution-context.js +4 -3
- package/dist/src/agent/context/execution-scope.d.ts +3 -3
- package/dist/src/agent/context/execution-scope.js +13 -13
- package/dist/src/agent/context/project-context.d.ts +1 -1
- package/dist/src/agent/context/project-context.js +4 -4
- package/dist/src/agent/embedded/execution-context.d.ts +1 -1
- package/dist/src/agent/embedded/execution-context.js +3 -3
- package/dist/src/agent/embedded/index.d.ts +1 -1
- package/dist/src/agent/embedded/index.js +2 -2
- package/dist/src/agent/embedded/run-for-session.d.ts +1 -1
- package/dist/src/agent/embedded/run-for-session.js +78 -104
- package/dist/src/agent/embedded/run-turn.js +77 -33
- package/dist/src/agent/embedded/runs.d.ts +11 -11
- package/dist/src/agent/embedded/runs.js +22 -22
- package/dist/src/agent/embedded/session-runner.d.ts +2 -2
- package/dist/src/agent/embedded/session-runner.js +5 -5
- package/dist/src/agent/embedded/session-tool-result-guard.d.ts +2 -2
- package/dist/src/agent/embedded/session-tool-result-guard.js +8 -8
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.d.ts +2 -2
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +4 -4
- package/dist/src/agent/embedded/transcript-runtime.d.ts +4 -3
- package/dist/src/agent/embedded/transcript-runtime.js +33 -20
- package/dist/src/agent/embedded/types.d.ts +2 -1
- package/dist/src/agent/external-tools/composio-provider.d.ts +1 -1
- package/dist/src/agent/external-tools/composio-provider.js +12 -11
- package/dist/src/agent/external-tools/endpoint-provider.js +1 -1
- package/dist/src/agent/external-tools/extension-provider.d.ts +1 -1
- package/dist/src/agent/external-tools/extension-provider.js +1 -1
- package/dist/src/agent/external-tools/gateway-tools.js +9 -8
- package/dist/src/agent/external-tools/index.js +3 -3
- package/dist/src/agent/external-tools/mcp-provider.d.ts +2 -2
- package/dist/src/agent/external-tools/mcp-provider.js +8 -8
- package/dist/src/agent/external-tools/memory-provider.d.ts +1 -1
- package/dist/src/agent/external-tools/memory-provider.js +1 -1
- package/dist/src/agent/external-tools/types.d.ts +1 -1
- package/dist/src/agent/inbound/attachment-pipeline.d.ts +7 -7
- package/dist/src/agent/inbound/attachment-pipeline.js +22 -21
- package/dist/src/agent/inbound/inbound-loop.d.ts +6 -6
- package/dist/src/agent/inbound/inbound-loop.js +23 -23
- package/dist/src/agent/inbound/turn-dispatcher.d.ts +14 -14
- package/dist/src/agent/inbound/turn-dispatcher.js +16 -16
- package/dist/src/agent/ipc/bus.d.ts +1 -1
- package/dist/src/agent/ipc/types.d.ts +3 -3
- package/dist/src/agent/ipc/types.js +1 -1
- package/dist/src/agent/lifecycle/hook-handler.d.ts +2 -2
- package/dist/src/agent/lifecycle/hook-handler.js +6 -6
- package/dist/src/agent/lifecycle/manager.d.ts +1 -1
- package/dist/src/agent/lifecycle/manager.js +4 -4
- package/dist/src/agent/lifecycle/types.d.ts +1 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.d.ts +4 -4
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +21 -20
- package/dist/src/agent/mcp/bundle-mcp-tools.d.ts +1 -1
- package/dist/src/agent/mcp/bundle-mcp-tools.js +2 -2
- package/dist/src/agent/mcp/bundle-mcp-types.d.ts +4 -4
- package/dist/src/agent/mcp/index.js +2 -2
- package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +9 -8
- package/dist/src/agent/memory/compaction-ledger.js +9 -2
- package/dist/src/agent/memory/compaction-promotion.d.ts +2 -2
- package/dist/src/agent/memory/compaction-promotion.js +6 -6
- package/dist/src/agent/memory/compaction-source-planner.d.ts +2 -0
- package/dist/src/agent/memory/compaction-source-planner.js +9 -1
- package/dist/src/agent/memory/compaction.d.ts +6 -1
- package/dist/src/agent/memory/compaction.js +22 -11
- package/dist/src/agent/memory/context-recovery.d.ts +44 -0
- package/dist/src/agent/memory/context-recovery.js +96 -0
- package/dist/src/agent/memory/manager.js +11 -11
- package/dist/src/agent/memory/turn-provenance.d.ts +5 -5
- package/dist/src/agent/memory/turn-provenance.js +21 -17
- package/dist/src/agent/memory/types.d.ts +2 -2
- package/dist/src/agent/messaging/command-handler.d.ts +11 -11
- package/dist/src/agent/messaging/command-handler.js +7 -7
- package/dist/src/agent/messaging/message-router.d.ts +1 -1
- package/dist/src/agent/messaging/message-router.js +4 -4
- package/dist/src/agent/messaging/outbound-coordinator.d.ts +2 -2
- package/dist/src/agent/messaging/outbound-coordinator.js +4 -4
- package/dist/src/agent/middleware/context.d.ts +1 -2
- package/dist/src/agent/middleware/context.js +2 -5
- package/dist/src/agent/models/manager.d.ts +10 -10
- package/dist/src/agent/models/manager.js +34 -34
- package/dist/src/agent/orchestration/agent-event-handler.js +14 -14
- package/dist/src/agent/orchestration/agent-orchestrator.d.ts +7 -7
- package/dist/src/agent/orchestration/agent-orchestrator.js +29 -29
- package/dist/src/agent/orchestration/context-overflow.js +2 -0
- package/dist/src/agent/orchestration/llm-turn-retry.d.ts +1 -1
- package/dist/src/agent/orchestration/llm-turn-retry.js +2 -2
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +2 -2
- package/dist/src/agent/prompt/response-language.d.ts +1 -1
- package/dist/src/agent/prompt/response-language.js +2 -2
- package/dist/src/agent/prompt/service-prompt-builder.d.ts +2 -2
- package/dist/src/agent/prompt/service-prompt-builder.js +4 -4
- package/dist/src/agent/prompt/subagent-context.d.ts +4 -4
- package/dist/src/agent/prompt/subagent-context.js +1 -1
- package/dist/src/agent/prompt/system-prompt-params.d.ts +4 -4
- package/dist/src/agent/prompt/system-prompt-params.js +13 -12
- package/dist/src/agent/reply/apply-turn-user-enrichment.d.ts +1 -1
- package/dist/src/agent/reply/apply-turn-user-enrichment.js +3 -3
- package/dist/src/agent/reply/post-compaction-context.d.ts +1 -1
- package/dist/src/agent/reply/post-compaction-context.js +2 -2
- package/dist/src/agent/service/btw-query.d.ts +1 -1
- package/dist/src/agent/service/btw-query.js +4 -4
- package/dist/src/agent/service/build-direct-message-content.d.ts +1 -1
- package/dist/src/agent/service/build-direct-message-content.js +2 -2
- package/dist/src/agent/service/direct-turn-helpers.d.ts +6 -6
- package/dist/src/agent/service/direct-turn-helpers.js +17 -16
- package/dist/src/agent/service/parse-outbound-session-key.d.ts +1 -1
- package/dist/src/agent/service/parse-outbound-session-key.js +8 -9
- package/dist/src/agent/service/process-direct-one-shot.d.ts +11 -11
- package/dist/src/agent/service/process-direct-one-shot.js +16 -16
- package/dist/src/agent/service/process-direct-streaming.d.ts +18 -18
- package/dist/src/agent/service/process-direct-streaming.js +45 -40
- package/dist/src/agent/service/session-context-report.d.ts +1 -1
- package/dist/src/agent/service/session-context-report.js +3 -3
- package/dist/src/agent/service/webchat-tts.d.ts +3 -3
- package/dist/src/agent/service/webchat-tts.js +7 -7
- package/dist/src/agent/service.d.ts +23 -23
- package/dist/src/agent/service.js +111 -108
- package/dist/src/agent/service.types.d.ts +3 -3
- package/dist/src/agent/session/session-config-service.d.ts +5 -5
- package/dist/src/agent/session/session-config-service.js +53 -66
- package/dist/src/agent/session/session-context.d.ts +2 -2
- package/dist/src/agent/session/session-context.js +2 -2
- package/dist/src/agent/session/session-hydrator.d.ts +3 -3
- package/dist/src/agent/session/session-hydrator.js +19 -19
- package/dist/src/agent/session/session-inspector.d.ts +7 -7
- package/dist/src/agent/session/session-inspector.js +45 -45
- package/dist/src/agent/session/session-lifecycle.d.ts +2 -2
- package/dist/src/agent/session/session-lifecycle.js +17 -17
- package/dist/src/agent/session/session-state-bag.d.ts +18 -18
- package/dist/src/agent/session/session-state-bag.js +46 -46
- package/dist/src/agent/session/tracker.d.ts +7 -7
- package/dist/src/agent/session/tracker.js +27 -27
- package/dist/src/agent/source-context/types.d.ts +1 -1
- package/dist/src/agent/tasks/task-judge-service.d.ts +1 -1
- package/dist/src/agent/tasks/task-judge-service.js +11 -10
- package/dist/src/agent/tools/automation-tool.js +2 -0
- package/dist/src/agent/tools/chain-tracker.d.ts +10 -10
- package/dist/src/agent/tools/chain-tracker.js +31 -31
- package/dist/src/agent/tools/clarify-tool.d.ts +1 -1
- package/dist/src/agent/tools/create-share-tool.js +2 -0
- package/dist/src/agent/tools/delegate-tool.d.ts +1 -1
- package/dist/src/agent/tools/delegate-tool.js +4 -4
- package/dist/src/agent/tools/exec-command.d.ts +1 -1
- package/dist/src/agent/tools/exec-command.js +1 -1
- package/dist/src/agent/tools/factory.d.ts +3 -3
- package/dist/src/agent/tools/factory.js +36 -36
- package/dist/src/agent/tools/knowledge-memory-tool.js +2 -2
- package/dist/src/agent/tools/managed-job-tool.d.ts +1 -1
- package/dist/src/agent/tools/managed-job-tool.js +2 -2
- package/dist/src/agent/tools/publish-artifacts.js +2 -0
- package/dist/src/agent/tools/send-media.js +2 -0
- package/dist/src/agent/tools/session-recall-tool.d.ts +1 -1
- package/dist/src/agent/tools/session-recall-tool.js +3 -3
- package/dist/src/agent/tools/session-search-tool.d.ts +1 -1
- package/dist/src/agent/tools/session-search-tool.js +6 -6
- package/dist/src/agent/tools/skill-install-tool.d.ts +3 -3
- package/dist/src/agent/tools/skill-install-tool.js +3 -3
- package/dist/src/agent/tools/todo-tool.d.ts +3 -3
- package/dist/src/agent/tools/todo-tool.js +4 -4
- package/dist/src/agent/tools/workflow-tool.d.ts +1 -1
- package/dist/src/agent/tools/workflow-tool.js +15 -13
- package/dist/src/agent/tools/write.js +2 -0
- package/dist/src/agent/tools/xopc-use-tool.d.ts +1 -1
- package/dist/src/agent/tools/xopc-use-tool.js +16 -13
- package/dist/src/agent/types.d.ts +1 -1
- package/dist/src/agent/workflow/catalog.js +4 -2
- package/dist/src/agent/workflow/channel-capability.d.ts +2 -2
- package/dist/src/agent/workflow/progress-broker.d.ts +4 -4
- package/dist/src/agent/workflow/progress-broker.js +17 -17
- package/dist/src/agent/workflow/subagent-runner.js +10 -10
- package/dist/src/agent/workflow/types.d.ts +2 -2
- package/dist/src/agent/workflow/workflow-child-tools.js +1 -1
- package/dist/src/agent/workspace-runtime/registry.js +1 -1
- package/dist/src/automations/domain/types.d.ts +7 -7
- package/dist/src/automations/domain/validation.js +2 -0
- package/dist/src/automations/service/action-executor.js +15 -15
- package/dist/src/automations/service/automation-service.js +4 -3
- package/dist/src/automations/storage/automation-repository.js +2 -1
- package/dist/src/automations/storage/automation-run-repository.js +9 -8
- package/dist/src/browser/native-messaging-host.js +4 -1
- package/dist/src/browser/policy/approval-store.d.ts +4 -4
- package/dist/src/browser/policy/approval-store.js +8 -8
- package/dist/src/browser/providers/extension.js +6 -6
- package/dist/src/browser/providers/realtime-extension.js +2 -2
- package/dist/src/browser/runtime/browser-runtime.js +3 -3
- package/dist/src/channels/exec-approval-runtime.d.ts +1 -1
- package/dist/src/channels/manager.js +1 -1
- package/dist/src/channels/pipeline.js +2 -2
- package/dist/src/channels/plugin-types.d.ts +2 -2
- package/dist/src/channels/plugins/types.adapters.d.ts +1 -1
- package/dist/src/channels/telegram/index.d.ts +1 -1
- package/dist/src/channels/telegram/index.js +2 -2
- package/dist/src/chat-commands/agent-edit.js +2 -2
- package/dist/src/chat-commands/builtins/review.js +4 -4
- package/dist/src/chat-commands/builtins/session.js +1 -1
- package/dist/src/chat-commands/builtins/system.js +2 -2
- package/dist/src/chat-commands/builtins/thinking.js +7 -7
- package/dist/src/chat-commands/builtins/understanding.js +4 -4
- package/dist/src/chat-commands/builtins/workflow.js +8 -8
- package/dist/src/chat-commands/context.d.ts +9 -9
- package/dist/src/chat-commands/context.js +35 -35
- package/dist/src/chat-commands/index.d.ts +1 -1
- package/dist/src/chat-commands/index.js +2 -2
- package/dist/src/chat-commands/processor.js +2 -2
- package/dist/src/chat-commands/registry.js +1 -1
- package/dist/src/chat-commands/session-key.d.ts +3 -3
- package/dist/src/chat-commands/session-key.js +20 -24
- package/dist/src/chat-commands/types.d.ts +3 -3
- package/dist/src/cli/command-manifest.js +1 -1
- package/dist/src/cli/commands/agent/interactive.d.ts +1 -1
- package/dist/src/cli/commands/agent/interactive.js +8 -8
- package/dist/src/cli/commands/agent/stream-renderer.d.ts +1 -1
- package/dist/src/cli/commands/agent/stream-renderer.js +2 -2
- package/dist/src/cli/commands/agent.js +10 -6
- package/dist/src/cli/commands/doctor/checks/database-schema.js +3 -2
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +9 -9
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/gateway/run-foreground.js +2 -1
- package/dist/src/cli/commands/import.js +2 -1
- package/dist/src/cli/commands/logs.js +3 -3
- package/dist/src/cli/commands/project.js +5 -5
- package/dist/src/cli/commands/resume.js +4 -4
- package/dist/src/cli/commands/tunnel.js +2 -1
- package/dist/src/config/agent-profile.d.ts +3 -3
- package/dist/src/config/agent-profile.js +12 -12
- package/dist/src/config/models-json.d.ts +6 -6
- package/dist/src/config/schema.d.ts +1 -1
- package/dist/src/connectors/catalog.js +2 -1
- package/dist/src/connectors/composio-sessions.d.ts +1 -1
- package/dist/src/connectors/composio-sessions.js +3 -3
- package/dist/src/connectors/connection-recovery-service.d.ts +4 -4
- package/dist/src/connectors/connection-recovery-service.js +41 -37
- package/dist/src/connectors/principal.d.ts +1 -1
- package/dist/src/connectors/principal.js +4 -3
- package/dist/src/connectors/types.d.ts +2 -2
- package/dist/src/discussions/action-tasks.js +5 -2
- package/dist/src/discussions/analyzer.js +2 -1
- package/dist/src/discussions/edits.js +4 -2
- package/dist/src/discussions/index.js +1 -1
- package/dist/src/discussions/organizer.js +3 -2
- package/dist/src/discussions/recording.js +5 -2
- package/dist/src/discussions/recordingJobs.js +2 -1
- package/dist/src/discussions/repository.js +2 -1
- package/dist/src/discussions/revisions.js +2 -1
- package/dist/src/discussions/sealer.js +1 -1
- package/dist/src/discussions/service.js +6 -3
- package/dist/src/discussions/types.js +4 -0
- package/dist/src/endpoint-tools/auth.js +2 -1
- package/dist/src/endpoint-tools/binding-service.d.ts +8 -8
- package/dist/src/endpoint-tools/binding-service.js +14 -14
- package/dist/src/endpoint-tools/invocation-service.js +2 -1
- package/dist/src/endpoint-tools/policy.js +2 -1
- package/dist/src/endpoint-tools/registry.js +2 -1
- package/dist/src/endpoint-tools/upload-service.js +2 -1
- package/dist/src/execution-environments/local-worktree-manager.d.ts +1 -1
- package/dist/src/execution-environments/local-worktree-manager.js +2 -2
- package/dist/src/execution-environments/session-environment-service.d.ts +3 -3
- package/dist/src/execution-environments/session-environment-service.js +10 -10
- package/dist/src/execution-environments/store.d.ts +2 -2
- package/dist/src/execution-environments/store.js +15 -14
- package/dist/src/execution-environments/subject.d.ts +1 -1
- package/dist/src/execution-environments/subject.js +2 -2
- package/dist/src/execution-environments/types.d.ts +2 -2
- package/dist/src/extensions/api.js +1 -1
- package/dist/src/extensions/install.js +1 -1
- package/dist/src/extensions/loader.d.ts +1 -1
- package/dist/src/extensions/types/core.d.ts +2 -2
- package/dist/src/extensions/types/hooks.d.ts +12 -12
- package/dist/src/extensions/types/tools.d.ts +3 -3
- package/dist/src/extensions/types/tui.d.ts +3 -3
- package/dist/src/files/file-service.d.ts +3 -3
- package/dist/src/files/file-service.js +3 -3
- package/dist/src/gateway/automation-agent-session.js +5 -5
- package/dist/src/gateway/chat-stream/mapper.d.ts +1 -1
- package/dist/src/gateway/chat-stream/mapper.js +4 -2
- package/dist/src/gateway/chat-stream/protocol.d.ts +1 -1
- package/dist/src/gateway/chat-stream/thinking-delta-coalescer.js +1 -1
- package/dist/src/gateway/clarify-runtime.d.ts +2 -2
- package/dist/src/gateway/clarify-runtime.js +2 -2
- package/dist/src/gateway/file-path-classifier.d.ts +2 -2
- package/dist/src/gateway/file-path-classifier.js +4 -4
- package/dist/src/gateway/file-reference-registry.d.ts +2 -2
- package/dist/src/gateway/file-reference-registry.js +1 -1
- package/dist/src/gateway/file-space-service.js +3 -3
- package/dist/src/gateway/gateway-workflow-host.types.d.ts +1 -1
- package/dist/src/gateway/heartbeat/check-store.js +2 -1
- package/dist/src/gateway/heartbeat/service.js +23 -9
- package/dist/src/gateway/hono/middleware/log-context.d.ts +1 -1
- package/dist/src/gateway/hono/middleware/log-context.js +3 -3
- package/dist/src/gateway/hono/routes/agent-stream.js +20 -20
- package/dist/src/gateway/hono/routes/browser-session.js +2 -2
- package/dist/src/gateway/hono/routes/browser.js +22 -20
- package/dist/src/gateway/hono/routes/chat-model-config.d.ts +1 -1
- package/dist/src/gateway/hono/routes/chat-model-config.js +6 -6
- package/dist/src/gateway/hono/routes/commands-skills.js +13 -13
- package/dist/src/gateway/hono/routes/connection-waits.js +5 -5
- package/dist/src/gateway/hono/routes/connectors.js +5 -5
- package/dist/src/gateway/hono/routes/context-sources.js +2 -1
- package/dist/src/gateway/hono/routes/device-pairing-approval.js +2 -0
- package/dist/src/gateway/hono/routes/devices.js +2 -0
- package/dist/src/gateway/hono/routes/discussions.js +2 -2
- package/dist/src/gateway/hono/routes/endpoint-tools.js +8 -7
- package/dist/src/gateway/hono/routes/execution-environments.js +11 -11
- package/dist/src/gateway/hono/routes/file-references.js +5 -5
- package/dist/src/gateway/hono/routes/home.js +1 -1
- package/dist/src/gateway/hono/routes/interaction-state.js +6 -6
- package/dist/src/gateway/hono/routes/logs.js +2 -2
- package/dist/src/gateway/hono/routes/media.js +3 -3
- package/dist/src/gateway/hono/routes/notes.js +11 -11
- package/dist/src/gateway/hono/routes/projects.js +26 -26
- package/dist/src/gateway/hono/routes/public-gateway.js +3 -3
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +10 -10
- package/dist/src/gateway/hono/routes/session-input-handler.js +20 -17
- package/dist/src/gateway/hono/routes/sessions.js +79 -50
- package/dist/src/gateway/hono/routes/shares.js +38 -38
- package/dist/src/gateway/hono/routes/side-chats.js +4 -2
- package/dist/src/gateway/hono/routes/site-shares.js +6 -6
- package/dist/src/gateway/hono/routes/tasks.js +18 -13
- package/dist/src/gateway/hono/routes/tui.js +2 -2
- package/dist/src/gateway/hono/routes/user-model.js +1 -1
- package/dist/src/gateway/hono/routes/voice.js +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +9 -9
- package/dist/src/gateway/media-access.d.ts +1 -1
- package/dist/src/gateway/media-access.js +3 -3
- package/dist/src/gateway/resolve-webchat-session-key.d.ts +5 -5
- package/dist/src/gateway/resolve-webchat-session-key.js +5 -5
- package/dist/src/gateway/service/agent-runner.d.ts +15 -15
- package/dist/src/gateway/service/agent-runner.js +63 -62
- package/dist/src/gateway/service/marketplace-service.d.ts +3 -3
- package/dist/src/gateway/service/marketplace-service.js +6 -6
- package/dist/src/gateway/service/run-gateway-agent.js +51 -49
- package/dist/src/gateway/service/session-input-coordinator.d.ts +11 -11
- package/dist/src/gateway/service/session-input-coordinator.js +76 -74
- package/dist/src/gateway/service/sessions-api.d.ts +19 -20
- package/dist/src/gateway/service/sessions-api.js +30 -38
- package/dist/src/gateway/service/task-conversation-query-service.d.ts +3 -2
- package/dist/src/gateway/service/task-conversation-query-service.js +3 -3
- package/dist/src/gateway/service.d.ts +4 -4
- package/dist/src/gateway/service.js +75 -69
- package/dist/src/gateway/session-context-summary.d.ts +1 -1
- package/dist/src/gateway/session-context-summary.js +13 -11
- package/dist/src/gateway/session-reset-service.d.ts +4 -4
- package/dist/src/gateway/session-reset-service.js +12 -12
- package/dist/src/gateway/side-chat/context-snapshot.d.ts +2 -2
- package/dist/src/gateway/side-chat/context-snapshot.js +2 -2
- package/dist/src/gateway/side-chat/manager.d.ts +4 -4
- package/dist/src/gateway/side-chat/manager.js +13 -13
- package/dist/src/gateway/side-chat/run-service.js +8 -8
- package/dist/src/gateway/side-chat/types.d.ts +4 -4
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/heartbeat/wake.d.ts +1 -1
- package/dist/src/history/ctx/exporter.js +11 -11
- package/dist/src/history/ctx/format.d.ts +1 -1
- package/dist/src/history/ctx/format.js +7 -7
- package/dist/src/imports/contextImport.js +2 -1
- package/dist/src/imports/productImport.js +2 -1
- package/dist/src/infra/node-sqlite.js +9 -3
- package/dist/src/infra/process-diagnostics.js +9 -5
- package/dist/src/infra/sqlite-errors.js +25 -20
- package/dist/src/infra/unhandled-rejections.js +15 -7
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/infra/warning-filter.js +9 -3
- package/dist/src/knowledge-memory/domain.d.ts +2 -2
- package/dist/src/knowledge-memory/repository.d.ts +1 -1
- package/dist/src/knowledge-memory/repository.js +10 -8
- package/dist/src/mcp/channel-bridge.d.ts +3 -3
- package/dist/src/mcp/channel-bridge.js +7 -7
- package/dist/src/mcp/channel-shared.d.ts +4 -4
- package/dist/src/mcp/channel-shared.js +3 -3
- package/dist/src/mcp/channel-tools.js +19 -19
- package/dist/src/media/session-references.js +2 -2
- package/dist/src/memory-maintenance/service.js +2 -1
- package/dist/src/migrations/conversation-routing-config.d.ts +2 -0
- package/dist/src/migrations/conversation-routing-config.js +42 -0
- package/dist/src/migrations/runner.js +6 -5
- package/dist/src/notes/service.d.ts +2 -2
- package/dist/src/notes/service.js +6 -6
- package/dist/src/notes/store.js +2 -1
- package/dist/src/notes/types.d.ts +3 -3
- package/dist/src/notifications/device-store.js +2 -1
- package/dist/src/notifications/planner.js +5 -3
- package/dist/src/notifications/proactive-channel.js +4 -1
- package/dist/src/notifications/proactive-policy.js +2 -1
- package/dist/src/notifications/service.d.ts +4 -4
- package/dist/src/notifications/service.js +4 -1
- package/dist/src/notifications/store.js +4 -1
- package/dist/src/notifications/web-push.js +4 -1
- package/dist/src/platform/contracts.d.ts +3 -3
- package/dist/src/proactive/actions/service.js +2 -1
- package/dist/src/proactive/events/product-event-bridge.js +1 -1
- package/dist/src/proactive/events/repository.js +2 -1
- package/dist/src/proactive/execution/authorization.js +2 -1
- package/dist/src/proactive/execution/context.js +2 -1
- package/dist/src/proactive/execution/insight.js +2 -0
- package/dist/src/proactive/execution/repository.js +2 -1
- package/dist/src/proactive/execution/worker.js +3 -2
- package/dist/src/proactive/experience.d.ts +1 -1
- package/dist/src/proactive/experience.js +4 -3
- package/dist/src/proactive/follow-ups.d.ts +7 -7
- package/dist/src/proactive/follow-ups.js +5 -4
- package/dist/src/proactive/inbox/cards.js +5 -2
- package/dist/src/proactive/inbox/delivery.js +2 -1
- package/dist/src/proactive/inbox/digest.js +2 -1
- package/dist/src/proactive/inbox/lifecycle.js +2 -1
- package/dist/src/proactive/inbox/repository.js +2 -1
- package/dist/src/proactive/inbox/service.js +2 -1
- package/dist/src/proactive/mail-thread.js +2 -1
- package/dist/src/proactive/maintenance.js +2 -1
- package/dist/src/proactive/metrics.js +2 -1
- package/dist/src/proactive/policy/presence.js +2 -1
- package/dist/src/proactive/policy/service.js +4 -1
- package/dist/src/proactive/routing/batch-repository.js +2 -1
- package/dist/src/proactive/scenarios/control.js +4 -1
- package/dist/src/proactive/scenarios/repository.js +2 -1
- package/dist/src/proactive/service.js +2 -1
- package/dist/src/proactive/source-freshness.js +2 -1
- package/dist/src/proactive/status.js +2 -1
- package/dist/src/proactive/temporal/schedule.js +2 -1
- package/dist/src/projects/automation-bind.js +2 -1
- package/dist/src/projects/index.js +2 -2
- package/dist/src/projects/knowledge-bind.js +2 -1
- package/dist/src/projects/project-agent.js +4 -1
- package/dist/src/projects/project-service.d.ts +4 -4
- package/dist/src/projects/project-service.js +11 -10
- package/dist/src/projects/project-store.js +11 -9
- package/dist/src/projects/session-bind.d.ts +5 -5
- package/dist/src/projects/session-bind.js +18 -17
- package/dist/src/projects/types.d.ts +1 -1
- package/dist/src/projects/workflow-bind.js +2 -1
- package/dist/src/projects/workspace.d.ts +3 -3
- package/dist/src/projects/workspace.js +6 -6
- package/dist/src/providers/model-reference-auditor.js +1 -1
- package/dist/src/providers/prompt-cache-lifecycle.d.ts +2 -2
- package/dist/src/providers/prompt-cache-lifecycle.js +6 -6
- package/dist/src/realtime/broker.js +3 -3
- package/dist/src/realtime/runtime.js +1 -1
- package/dist/src/retrieval/queryProfile.d.ts +1 -1
- package/dist/src/routing/agent-session-key.d.ts +12 -41
- package/dist/src/routing/agent-session-key.js +39 -120
- package/dist/src/routing/conversation-route.d.ts +28 -0
- package/dist/src/routing/conversation-route.js +50 -0
- package/dist/src/routing/index.d.ts +2 -2
- package/dist/src/routing/index.js +5 -5
- package/dist/src/routing/resolve-route.d.ts +4 -9
- package/dist/src/routing/resolve-route.js +20 -60
- package/dist/src/routing/resolve-tui-session-key.d.ts +5 -13
- package/dist/src/routing/resolve-tui-session-key.js +11 -36
- package/dist/src/routing/session-key.d.ts +6 -39
- package/dist/src/routing/session-key.js +13 -161
- package/dist/src/session/client-history.js +2 -0
- package/dist/src/session/compaction-types.js +18 -13
- package/dist/src/session/config-store.d.ts +8 -8
- package/dist/src/session/config-store.js +19 -19
- package/dist/src/session/index.d.ts +2 -2
- package/dist/src/session/index.js +9 -5
- package/dist/src/session/init-session-turn.d.ts +7 -7
- package/dist/src/session/init-session-turn.js +18 -18
- package/dist/src/session/manager.d.ts +7 -7
- package/dist/src/session/manager.js +6 -6
- package/dist/src/session/model-config-lock.d.ts +1 -1
- package/dist/src/session/model-config-lock.js +4 -4
- package/dist/src/session/resolve-session.d.ts +10 -10
- package/dist/src/session/resolve-session.js +20 -20
- package/dist/src/session/session-context-for-llm.js +17 -10
- package/dist/src/session/session-title.d.ts +5 -5
- package/dist/src/session/session-title.js +28 -28
- package/dist/src/session/session-workspace.d.ts +1 -1
- package/dist/src/session/session-workspace.js +3 -3
- package/dist/src/session/store.d.ts +14 -14
- package/dist/src/session/store.js +70 -50
- package/dist/src/session/stored-rows-to-file-entries.d.ts +1 -1
- package/dist/src/session/stored-rows-to-file-entries.js +5 -3
- package/dist/src/session/thinking-resolve.d.ts +2 -2
- package/dist/src/session/thinking-resolve.js +4 -4
- package/dist/src/session/transcript-events.d.ts +1 -1
- package/dist/src/session/transcript-events.js +3 -3
- package/dist/src/session/transcript-outline.js +2 -1
- package/dist/src/session/turn-outcome-projector.js +2 -0
- package/dist/src/session/types.d.ts +5 -4
- package/dist/src/session/types.js +13 -9
- package/dist/src/session/user-message-display.js +2 -0
- package/dist/src/session/user-round-delete.js +2 -1
- package/dist/src/session/voice-transcript.js +8 -3
- package/dist/src/share/hosted-session-share.d.ts +6 -6
- package/dist/src/share/hosted-session-share.js +13 -11
- package/dist/src/share/hosted-static-site-publish.d.ts +1 -1
- package/dist/src/share/hosted-static-site-publish.js +1 -1
- package/dist/src/share/session-share-service.d.ts +9 -9
- package/dist/src/share/session-share-service.js +19 -19
- package/dist/src/share/share-store.d.ts +2 -2
- package/dist/src/share/share-store.js +9 -7
- package/dist/src/share/share-types.d.ts +2 -2
- package/dist/src/share/site-share-router.d.ts +2 -2
- package/dist/src/share/site-share-store.js +4 -2
- package/dist/src/share/site-share-types.d.ts +1 -1
- package/dist/src/storage/sqlite/activity-repository.js +2 -1
- package/dist/src/storage/sqlite/browser-session-repository.js +2 -1
- package/dist/src/storage/sqlite/browser-tab-binding-repository.d.ts +2 -2
- package/dist/src/storage/sqlite/browser-tab-binding-repository.js +10 -9
- package/dist/src/storage/sqlite/clarification-wait-repository.d.ts +7 -7
- package/dist/src/storage/sqlite/clarification-wait-repository.js +58 -53
- package/dist/src/storage/sqlite/collaboration-rule-repository.js +2 -1
- package/dist/src/storage/sqlite/composer-input-history-repository.js +2 -1
- package/dist/src/storage/sqlite/config-repository.d.ts +6 -6
- package/dist/src/storage/sqlite/config-repository.js +29 -25
- package/dist/src/storage/sqlite/connection-wait-repository.d.ts +11 -11
- package/dist/src/storage/sqlite/connection-wait-repository.js +61 -51
- package/dist/src/storage/sqlite/connection.js +28 -18
- package/dist/src/storage/sqlite/connector-account-repository.js +2 -1
- package/dist/src/storage/sqlite/connector-learning-repository.js +2 -1
- package/dist/src/storage/sqlite/connector-repository.d.ts +1 -1
- package/dist/src/storage/sqlite/connector-repository.js +11 -10
- package/dist/src/storage/sqlite/connector-sync-policy-repository.js +2 -1
- package/dist/src/storage/sqlite/context-evidence-repository.d.ts +1 -1
- package/dist/src/storage/sqlite/context-evidence-repository.js +7 -6
- package/dist/src/storage/sqlite/context-extraction-repository.js +2 -1
- package/dist/src/storage/sqlite/context-relation-repository.js +2 -1
- package/dist/src/storage/sqlite/conversation-repository.d.ts +12 -0
- package/dist/src/storage/sqlite/conversation-repository.js +76 -0
- package/dist/src/storage/sqlite/device-access-repository.js +4 -1
- package/dist/src/storage/sqlite/device-pairing-approval.js +4 -1
- package/dist/src/storage/sqlite/device-pairing-repository.js +2 -1
- package/dist/src/storage/sqlite/durable-queue.js +4 -2
- package/dist/src/storage/sqlite/durable-state.js +4 -2
- package/dist/src/storage/sqlite/endpoint-principal-repository.js +2 -1
- package/dist/src/storage/sqlite/endpoint-session-binding-repository.d.ts +3 -3
- package/dist/src/storage/sqlite/endpoint-session-binding-repository.js +12 -11
- package/dist/src/storage/sqlite/endpoint-tool-invocation-repository.js +2 -1
- package/dist/src/storage/sqlite/fts.js +39 -34
- package/dist/src/storage/sqlite/gateway-identity-repository.js +2 -1
- package/dist/src/storage/sqlite/home-attention-repository.js +2 -1
- package/dist/src/storage/sqlite/import-repository.js +2 -1
- package/dist/src/storage/sqlite/import-selection-repository.js +2 -1
- package/dist/src/storage/sqlite/index.d.ts +1 -1
- package/dist/src/storage/sqlite/index.js +25 -11
- package/dist/src/storage/sqlite/interaction-state-repository.d.ts +4 -4
- package/dist/src/storage/sqlite/interaction-state-repository.js +12 -11
- package/dist/src/storage/sqlite/knowledge-repository.js +2 -1
- package/dist/src/storage/sqlite/migrations/178_conversation_uuid.sql +2 -0
- package/dist/src/storage/sqlite/migrations/conversation-backup.d.ts +3 -0
- package/dist/src/storage/sqlite/migrations/conversation-backup.js +88 -0
- package/dist/src/storage/sqlite/migrations/conversation-backup.ts +66 -0
- package/dist/src/storage/sqlite/migrations/conversation-key-decoder.d.ts +8 -0
- package/dist/src/storage/sqlite/migrations/conversation-key-decoder.js +87 -0
- package/dist/src/storage/sqlite/migrations/conversation-key-decoder.ts +50 -0
- package/dist/src/storage/sqlite/migrations/conversation-uuid.d.ts +8 -0
- package/dist/src/storage/sqlite/migrations/conversation-uuid.js +366 -0
- package/dist/src/storage/sqlite/migrations/conversation-uuid.ts +324 -0
- package/dist/src/storage/sqlite/migrations/conversation-windows-owners.d.ts +1 -0
- package/dist/src/storage/sqlite/migrations/conversation-windows-owners.js +92 -0
- package/dist/src/storage/sqlite/migrations/conversation-windows-owners.ts +71 -0
- package/dist/src/storage/sqlite/migrations/discover.js +7 -3
- package/dist/src/storage/sqlite/migrations/errors.js +28 -23
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +43 -14
- package/dist/src/storage/sqlite/migrations/runner.ts +13 -3
- package/dist/src/storage/sqlite/migrations/types.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/types.ts +1 -1
- package/dist/src/storage/sqlite/note-agent-context-repository.js +2 -1
- package/dist/src/storage/sqlite/notes-repository.js +4 -2
- package/dist/src/storage/sqlite/paths.js +6 -2
- package/dist/src/storage/sqlite/relationship-settings-repository.js +2 -1
- package/dist/src/storage/sqlite/row-mappers.d.ts +10 -10
- package/dist/src/storage/sqlite/row-mappers.js +22 -15
- package/dist/src/storage/sqlite/schema-version.js +7 -2
- package/dist/src/storage/sqlite/schema.js +14 -6
- package/dist/src/storage/sqlite/session-identity-sql.js +12 -5
- package/dist/src/storage/sqlite/session-input-repository.d.ts +14 -14
- package/dist/src/storage/sqlite/session-input-repository.js +69 -61
- package/dist/src/storage/sqlite/session-instance-repository.d.ts +1 -1
- package/dist/src/storage/sqlite/session-instance-repository.js +6 -3
- package/dist/src/storage/sqlite/session-metadata.d.ts +2 -2
- package/dist/src/storage/sqlite/session-metadata.js +7 -3
- package/dist/src/storage/sqlite/session-repository.d.ts +15 -15
- package/dist/src/storage/sqlite/session-repository.js +126 -102
- package/dist/src/storage/sqlite/session-task-plan-repository.d.ts +3 -3
- package/dist/src/storage/sqlite/session-task-plan-repository.js +21 -19
- package/dist/src/storage/sqlite/session-turn-replace-repository.d.ts +2 -2
- package/dist/src/storage/sqlite/session-turn-replace-repository.js +26 -22
- package/dist/src/storage/sqlite/transaction.js +12 -6
- package/dist/src/storage/sqlite/transcript-repository.d.ts +14 -14
- package/dist/src/storage/sqlite/transcript-repository.js +107 -102
- package/dist/src/storage/sqlite/user-people-repository.js +2 -1
- package/dist/src/storage/sqlite/user-trust-repository.js +2 -1
- package/dist/src/support/collect-support-report.js +7 -7
- package/dist/src/support/types.d.ts +2 -2
- package/dist/src/support/types.js +1 -1
- package/dist/src/tasks/execution-context.d.ts +2 -2
- package/dist/src/tasks/execution-context.js +3 -3
- package/dist/src/tasks/home-query-service.d.ts +2 -2
- package/dist/src/tasks/home-query-service.js +6 -6
- package/dist/src/tasks/index.js +6 -2
- package/dist/src/tasks/project-monitoring-service.js +2 -1
- package/dist/src/tasks/project-operating-view-service.js +2 -1
- package/dist/src/tasks/task-application-service.js +9 -4
- package/dist/src/tasks/task-change-events.js +7 -2
- package/dist/src/tasks/task-context-assembler.d.ts +2 -2
- package/dist/src/tasks/task-context-assembler.js +12 -9
- package/dist/src/tasks/task-context-repository.d.ts +1 -1
- package/dist/src/tasks/task-context-repository.js +4 -3
- package/dist/src/tasks/task-conversation-repository.d.ts +7 -7
- package/dist/src/tasks/task-conversation-repository.js +27 -26
- package/dist/src/tasks/task-deletion-service.js +2 -1
- package/dist/src/tasks/task-dependency-service.js +2 -1
- package/dist/src/tasks/task-handoff-service.d.ts +2 -2
- package/dist/src/tasks/task-handoff-service.js +16 -15
- package/dist/src/tasks/task-outbox-dispatcher.js +2 -1
- package/dist/src/tasks/task-read-model-projector.js +4 -2
- package/dist/src/tasks/task-repository.js +2 -1
- package/dist/src/tasks/task-run-coordinator.js +6 -5
- package/dist/src/tasks/task-run-dispatcher.d.ts +1 -1
- package/dist/src/tasks/task-run-dispatcher.js +4 -3
- package/dist/src/tasks/task-run-repository.d.ts +2 -2
- package/dist/src/tasks/task-run-repository.js +219 -212
- package/dist/src/tasks/task-signal-service.js +6 -2
- package/dist/src/tasks/task-workflow-coordinator.js +2 -1
- package/dist/src/tui/backends/embedded-backend.d.ts +33 -32
- package/dist/src/tui/backends/embedded-backend.js +95 -83
- package/dist/src/tui/backends/gateway-realtime-backend.d.ts +34 -33
- package/dist/src/tui/backends/gateway-realtime-backend.js +95 -78
- package/dist/src/tui/components/branch-summary.js +3 -3
- package/dist/src/tui/components/session-selector.d.ts +5 -5
- package/dist/src/tui/components/session-selector.js +7 -7
- package/dist/src/tui/components/tui-bottom-bar.js +1 -1
- package/dist/src/tui/components/tui-header.d.ts +1 -1
- package/dist/src/tui/components/tui-header.js +2 -2
- package/dist/src/tui/extension-host/autocomplete.d.ts +2 -2
- package/dist/src/tui/extension-host/autocomplete.js +4 -4
- package/dist/src/tui/extension-host/host.d.ts +1 -1
- package/dist/src/tui/extension-host/runtime-context.d.ts +1 -1
- package/dist/src/tui/extension-host/runtime-context.js +2 -2
- package/dist/src/tui/extension-host/runtime.d.ts +1 -1
- package/dist/src/tui/extension-host/runtime.js +6 -6
- package/dist/src/tui/tui-backend.d.ts +43 -39
- package/dist/src/tui/tui-command-formatters.d.ts +2 -2
- package/dist/src/tui/tui-command-formatters.js +10 -18
- package/dist/src/tui/tui-commands.d.ts +3 -3
- package/dist/src/tui/tui-commands.js +31 -33
- package/dist/src/tui/tui-empty-session-cleanup.d.ts +2 -3
- package/dist/src/tui/tui-empty-session-cleanup.js +7 -15
- package/dist/src/tui/tui-file-autocomplete.d.ts +1 -1
- package/dist/src/tui/tui-file-autocomplete.js +2 -2
- package/dist/src/tui/tui-new-session-preferences.js +2 -0
- package/dist/src/tui/tui-picker-overlay.d.ts +1 -1
- package/dist/src/tui/tui-picker-overlay.js +41 -53
- package/dist/src/tui/tui-picker-services.d.ts +3 -3
- package/dist/src/tui/tui-session-actions.d.ts +1 -1
- package/dist/src/tui/tui-session-actions.js +8 -17
- package/dist/src/tui/tui-session-format.js +4 -1
- package/dist/src/tui/tui-session-snapshot.d.ts +2 -2
- package/dist/src/tui/tui-session-snapshot.js +4 -4
- package/dist/src/tui/tui-settings.js +2 -0
- package/dist/src/tui/tui-startup-resources.d.ts +1 -1
- package/dist/src/tui/tui-startup-resources.js +3 -3
- package/dist/src/tui/tui-startup-text.js +1 -1
- package/dist/src/tui/tui-transcript-tree-picker.d.ts +1 -1
- package/dist/src/tui/tui-transcript-tree-picker.js +2 -2
- package/dist/src/tui/tui-types.d.ts +4 -2
- package/dist/src/tui/tui-types.js +2 -2
- package/dist/src/tui/tui.js +114 -112
- package/dist/src/user-context/access-policy.d.ts +1 -1
- package/dist/src/user-context/access-policy.js +6 -5
- package/dist/src/user-context/changes.js +9 -4
- package/dist/src/user-context/domain.d.ts +1 -1
- package/dist/src/user-context/relationship-continuity.d.ts +1 -1
- package/dist/src/user-context/relationship-continuity.js +1 -1
- package/dist/src/user-context/sources/repository.js +4 -2
- package/dist/src/user-model/capture/executor.d.ts +1 -1
- package/dist/src/user-model/capture/executor.js +3 -3
- package/dist/src/user-model/goals.js +2 -1
- package/dist/src/user-model/repository.js +2 -1
- package/dist/src/utils/global-singleton.js +4 -1
- package/dist/src/utils/logger/context.d.ts +1 -1
- package/dist/src/utils/logger/context.js +2 -2
- package/dist/src/utils/logger/log-store.js +2 -2
- package/dist/src/utils/logger/pino-record.js +6 -6
- package/dist/src/utils/logger/types.d.ts +6 -6
- package/dist/src/voice/realtime/agentBroker.d.ts +6 -6
- package/dist/src/voice/realtime/agentBroker.js +6 -6
- package/dist/src/voice/realtime/agentEngine.js +6 -6
- package/dist/src/voice/realtime/memory-context.d.ts +2 -2
- package/dist/src/voice/realtime/memory-context.js +15 -15
- package/dist/src/voice/realtime/persona-context.d.ts +1 -1
- package/dist/src/voice/realtime/persona-context.js +6 -6
- package/dist/src/voice/realtime/runtime.d.ts +1 -1
- package/dist/src/voice/realtime/runtime.js +14 -13
- package/dist/src/voice/realtime/runtime.types.d.ts +6 -6
- package/dist/src/work-discovery/investigation-repository.js +4 -2
- package/dist/src/work-discovery/probe.js +1 -1
- package/dist/src/work-discovery/repository.js +7 -5
- package/dist/src/work-discovery/service.js +33 -29
- package/dist/src/work-discovery/types.d.ts +1 -1
- package/dist/src/workflows/context/workflow-context-snapshot-repository.js +2 -1
- package/dist/src/workflows/domain/event.d.ts +1 -1
- package/dist/src/workflows/domain/run.d.ts +5 -5
- package/dist/src/workflows/engine/projector.js +1 -1
- package/dist/src/workflows/engine/workflow-engine.d.ts +2 -2
- package/dist/src/workflows/engine/workflow-engine.js +15 -18
- package/dist/src/workflows/index.js +3 -3
- package/dist/src/workflows/project-presets/project-workflow-preset-repository.js +2 -1
- package/dist/src/workflows/service/run-view-to-snapshot.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.d.ts +2 -2
- package/dist/src/workflows/service/workflow-run-service.js +53 -42
- package/dist/src/workflows/service/workflow-run-service.types.d.ts +2 -2
- package/dist/src/workflows/service/workflow-session-bridge.d.ts +2 -2
- package/dist/src/workflows/service/workflow-session-bridge.js +31 -31
- package/dist/src/workflows/service/workflow-session-key.d.ts +1 -1
- package/dist/src/workflows/service/workflow-session-key.js +4 -4
- package/dist/src/workflows/service/workflow-writeback-service.js +2 -1
- package/dist/src/workflows/store/event-store.js +4 -2
- package/dist/src/workflows/store/run-index-store.js +9 -8
- package/package.json +4 -4
- package/dist/gateway/static/root/assets/api-COG_Tzpv.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-6qxxKFsK.js +0 -1
- package/dist/gateway/static/root/assets/button-BA45yciM.js +0 -1
- package/dist/gateway/static/root/assets/capabilities-settings-panel-DM1Bcf1x.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-Bq36CUxL.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-DtPNvznL.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-C75kCOqe.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BCF732TU.js +0 -1
- package/dist/gateway/static/root/assets/index-ChIrvv3t.js +0 -74
- package/dist/gateway/static/root/assets/index-R1VNlHjj.css +0 -2
- package/dist/gateway/static/root/assets/locale-store-DlOv7896.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-DHZ4BEkG.js +0 -2
- package/dist/gateway/static/root/assets/messages-Ls1Aaiqd.js +0 -3
- package/dist/gateway/static/root/assets/notes-page-DfZ8QWyv.js +0 -8
- package/dist/gateway/static/root/assets/page-tabs-BG39KidE.js +0 -1
- package/dist/gateway/static/root/assets/popover-select-DGmMQt4t.js +0 -1
- package/dist/gateway/static/root/assets/proactive-page-D2U_xQaS.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-CzlGTW4F.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-mQsM-TsP.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-Cb56JcO1.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CV4-_EVA.js +0 -1
- package/dist/gateway/static/root/assets/settings-form-section-wcAdCkK8.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-layout-DYelDcMV.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-xlJh1ccG.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-wSXJRSxX.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-sQpwq5-c.js +0 -1
- package/dist/gateway/static/root/assets/tunnel-api-Boajol0M.js +0 -1
- package/dist/src/routing/session-key-utils.d.ts +0 -23
- package/dist/src/routing/session-key-utils.js +0 -85
- package/dist/src/session/session-id.d.ts +0 -3
- package/dist/src/session/session-id.js +0 -10
package/dist/src/tui/tui.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { version } from "../../package.js";
|
|
2
2
|
import { resolveStateDir, resolveXopcDatabasePath } from "../config/paths-state.js";
|
|
3
|
-
import { parseAgentSessionKey } from "../routing/session-key-utils.js";
|
|
4
3
|
import { init_agent_session_key, normalizeAgentId } from "../routing/agent-session-key.js";
|
|
5
4
|
import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
|
|
6
5
|
import { init_paths } from "../config/paths.js";
|
|
@@ -14,7 +13,7 @@ import "../config/index.js";
|
|
|
14
13
|
import { isTerminalWorkflowRunStatus } from "../workflows/domain/run.js";
|
|
15
14
|
import "../workflows/domain/index.js";
|
|
16
15
|
import { runViewToSnapshot } from "../workflows/service/run-view-to-snapshot.js";
|
|
17
|
-
import {
|
|
16
|
+
import { resolveTuiConversationId, resolveTuiStartupConversationId } from "../routing/resolve-tui-session-key.js";
|
|
18
17
|
import { applyThemeById, getBashExcludeBorderColor, getBashModeBorderColor, getCustomThemesDir, getThemeExports, getThinkingBorderColor, initTuiTheme, listAvailableThemeIds, resolveThemePalette } from "./theme-manager.js";
|
|
19
18
|
import { editorTheme, theme } from "./theme.js";
|
|
20
19
|
import { extensionForImageMimeType, readClipboardImage } from "./clipboard-image.js";
|
|
@@ -27,7 +26,7 @@ import { transcriptTreeEntryIdToRowNumber } from "./tui-transcript-tree.js";
|
|
|
27
26
|
import { formatTuiCompactionResult, formatTuiShareResult } from "./tui-command-formatters.js";
|
|
28
27
|
import { formatTuiStartupText } from "./tui-startup-text.js";
|
|
29
28
|
import { createTuiCommandHandler, getSlashCommands } from "./tui-commands.js";
|
|
30
|
-
import { GENERATED_TUI_SESSION_SHELL_PATCH, cleanupAbandonedTuiSessions, deleteGeneratedTuiSessionIfEmpty
|
|
29
|
+
import { GENERATED_TUI_SESSION_SHELL_PATCH, cleanupAbandonedTuiSessions, deleteGeneratedTuiSessionIfEmpty } from "./tui-empty-session-cleanup.js";
|
|
31
30
|
import { extensionCustomMessageContentToText, extensionCustomMessageToTurnText, extensionUserMessageContentToText } from "./tui-extension-user-message.js";
|
|
32
31
|
import { resolveFdPath } from "./tui-fd-path.js";
|
|
33
32
|
import { createBackspaceDeduper, drainAndStopTuiSafely, isIgnorableTuiStopError, resolveCtrlCAction, stopTuiSafely } from "./tui-lifecycle.js";
|
|
@@ -107,8 +106,8 @@ function wrapMarkdownExportAsHtml(markdown) {
|
|
|
107
106
|
""
|
|
108
107
|
].join("\n");
|
|
109
108
|
}
|
|
110
|
-
function defaultExportPath(
|
|
111
|
-
const safeKey =
|
|
109
|
+
function defaultExportPath(conversationId, format) {
|
|
110
|
+
const safeKey = conversationId.replace(/[^a-z0-9_.-]+/gi, "_").replace(/^_+|_+$/g, "") || "session";
|
|
112
111
|
const stamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
|
|
113
112
|
return resolve(process.cwd(), `xopc-session-${safeKey}-${stamp}.${exportExtension(format)}`);
|
|
114
113
|
}
|
|
@@ -138,11 +137,11 @@ function shellQuote(value) {
|
|
|
138
137
|
if (/^[A-Za-z0-9_/:@%+=,.-]+$/.test(value)) return value;
|
|
139
138
|
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
140
139
|
}
|
|
141
|
-
function formatTuiResumeCommand(opts,
|
|
140
|
+
function formatTuiResumeCommand(opts, conversationId) {
|
|
142
141
|
const parts = ["xopc", "tui"];
|
|
143
142
|
if (opts.local === true) parts.push("--local");
|
|
144
143
|
if (opts.url) parts.push("--url", shellQuote(opts.url));
|
|
145
|
-
parts.push("--session", shellQuote(
|
|
144
|
+
parts.push("--session", shellQuote(conversationId));
|
|
146
145
|
return parts.join(" ");
|
|
147
146
|
}
|
|
148
147
|
function isLoopbackGatewayUrl(rawUrl) {
|
|
@@ -180,27 +179,21 @@ async function runTui(opts) {
|
|
|
180
179
|
const isLocalMode = opts.local === true;
|
|
181
180
|
const loadedConfig = loadConfig();
|
|
182
181
|
const config = isLocalMode ? ensureStarterAgentsInitialized(loadedConfig).config : loadedConfig;
|
|
183
|
-
const startup =
|
|
182
|
+
const startup = resolveTuiStartupConversationId({
|
|
184
183
|
cfg: config,
|
|
185
184
|
sessionOption: opts.session,
|
|
186
185
|
agentOption: opts.agentId,
|
|
187
186
|
cwd: process.cwd()
|
|
188
187
|
});
|
|
189
188
|
let currentAgentId = startup.agentId;
|
|
190
|
-
const
|
|
191
|
-
const sessionMainKey = startup.sessionMainKey;
|
|
192
|
-
const resolveSessionKey = (raw) => resolveTuiSessionKey({
|
|
193
|
-
raw,
|
|
194
|
-
sessionScope,
|
|
195
|
-
currentAgentId,
|
|
196
|
-
sessionMainKey
|
|
197
|
-
});
|
|
189
|
+
const resolveConversationId = (raw) => resolveTuiConversationId({ raw });
|
|
198
190
|
let tuiSettings = loadTuiSettings();
|
|
199
191
|
const newSessionPreferenceKey = isLocalMode ? tuiGatewayPreferenceKey() : tuiGatewayPreferenceKey(opts.url ?? "http://localhost:3120");
|
|
200
192
|
initTuiTheme({ themeId: opts.theme ?? tuiSettings.theme });
|
|
201
|
-
const state = createInitialState(startup.
|
|
202
|
-
const
|
|
203
|
-
const
|
|
193
|
+
const state = createInitialState(startup.conversationId);
|
|
194
|
+
const generatedStartupConversationId = !opts.session?.trim() ? startup.conversationId : null;
|
|
195
|
+
const generatedStartupConversationIds = new Set(generatedStartupConversationId ? [generatedStartupConversationId] : []);
|
|
196
|
+
const isGeneratedTuiConversationId = (id) => generatedStartupConversationIds.has(id);
|
|
204
197
|
let startupSessionHadUserTurn = false;
|
|
205
198
|
const startupWorkingDirectory = resolveStartupWorkingDirectory(opts, isLocalMode);
|
|
206
199
|
const implicitTrustedWorkspace = startupWorkingDirectory ?? (isLocalMode ? process.cwd() : void 0);
|
|
@@ -215,7 +208,7 @@ async function runTui(opts) {
|
|
|
215
208
|
};
|
|
216
209
|
const sessionStateDir = resolveStateDir();
|
|
217
210
|
const sessionDatabasePath = resolveXopcDatabasePath();
|
|
218
|
-
const sessionSnapshot = new TuiSessionSnapshot(() => state.
|
|
211
|
+
const sessionSnapshot = new TuiSessionSnapshot(() => state.currentConversationId, () => process.cwd(), () => state.sessionInfo.displayName, () => `${sessionDatabasePath}#session=${encodeURIComponent(state.currentConversationId)}`, () => sessionStateDir);
|
|
219
212
|
state.scopedModelRefs = loadScopedModelRefs();
|
|
220
213
|
state.showThinking = tuiSettings.showThinking;
|
|
221
214
|
state.toolsExpanded = tuiSettings.toolsExpanded;
|
|
@@ -265,7 +258,7 @@ async function runTui(opts) {
|
|
|
265
258
|
const header = new TuiHeader(() => ({
|
|
266
259
|
version: version ?? "dev",
|
|
267
260
|
connectionLabel: client.connectionLabel,
|
|
268
|
-
|
|
261
|
+
conversationId: state.currentConversationId,
|
|
269
262
|
showHints: tuiSettings.showStartupHints
|
|
270
263
|
}), keybindings);
|
|
271
264
|
const statusContainer = new Container();
|
|
@@ -283,7 +276,7 @@ async function runTui(opts) {
|
|
|
283
276
|
});
|
|
284
277
|
setExtensionLabel = (entryId, label) => {
|
|
285
278
|
sessionSnapshot.setLabel(entryId, label);
|
|
286
|
-
client.setTranscriptLabel(state.
|
|
279
|
+
client.setTranscriptLabel(state.currentConversationId, entryId, label).catch((err) => {
|
|
287
280
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
288
281
|
chatLog.addSystem(`Label update failed: ${errorMessage}`);
|
|
289
282
|
}).finally(() => {
|
|
@@ -295,7 +288,7 @@ async function runTui(opts) {
|
|
|
295
288
|
const normalized = customType.trim();
|
|
296
289
|
if (!normalized) throw new Error("appendEntry requires customType.");
|
|
297
290
|
sessionSnapshot.appendCustomEntry(normalized, data);
|
|
298
|
-
client.appendCustomEntry(state.
|
|
291
|
+
client.appendCustomEntry(state.currentConversationId, normalized, data).catch((err) => {
|
|
299
292
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
300
293
|
chatLog.addSystem(`Custom entry append failed: ${errorMessage}`);
|
|
301
294
|
}).finally(() => {
|
|
@@ -324,7 +317,7 @@ async function runTui(opts) {
|
|
|
324
317
|
});
|
|
325
318
|
tui.requestRender();
|
|
326
319
|
}
|
|
327
|
-
const persist = client.appendCustomMessage(state.
|
|
320
|
+
const persist = client.appendCustomMessage(state.currentConversationId, nextMessage).catch((err) => {
|
|
328
321
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
329
322
|
chatLog.addSystem(`Custom message append failed: ${errorMessage}`);
|
|
330
323
|
throw err;
|
|
@@ -346,7 +339,7 @@ async function runTui(opts) {
|
|
|
346
339
|
if (state.activeRunId) {
|
|
347
340
|
if (options?.deliverAs === "next") {
|
|
348
341
|
client.submitChatInput({
|
|
349
|
-
|
|
342
|
+
conversationId: state.currentConversationId,
|
|
350
343
|
message: controlText,
|
|
351
344
|
delivery: "next"
|
|
352
345
|
}).then((result) => {
|
|
@@ -561,7 +554,7 @@ async function runTui(opts) {
|
|
|
561
554
|
}
|
|
562
555
|
};
|
|
563
556
|
const getAvailableProviderCount = () => getAllProviders().filter((provider) => isProviderConfiguredSync(provider)).length;
|
|
564
|
-
const getExtensionSystemPrompt = () => resolveEffectiveAgentProfileForSession(config, state.
|
|
557
|
+
const getExtensionSystemPrompt = () => resolveEffectiveAgentProfileForSession(config, state.currentConversationId).customInstructions ?? "";
|
|
565
558
|
const waitForTuiIdle = async () => {
|
|
566
559
|
while (state.activeRunId != null || state.isCompacting || state.activityStatus === "sending" || state.activityStatus === "waiting" || state.activityStatus === "streaming" || state.activityStatus === "running" || state.activityStatus === "compacting") await new Promise((resolveDelay) => setTimeout(resolveDelay, 50));
|
|
567
560
|
};
|
|
@@ -660,7 +653,7 @@ async function runTui(opts) {
|
|
|
660
653
|
},
|
|
661
654
|
model,
|
|
662
655
|
cwd: process.cwd(),
|
|
663
|
-
|
|
656
|
+
conversationId: state.currentConversationId,
|
|
664
657
|
isProjectTrusted: isCurrentProjectTrusted,
|
|
665
658
|
isIdle: () => !state.activeRunId && !state.isCompacting,
|
|
666
659
|
hasPendingMessages: () => state.compactionQueue.length > 0,
|
|
@@ -673,7 +666,7 @@ async function runTui(opts) {
|
|
|
673
666
|
getSystemPrompt: getExtensionSystemPrompt,
|
|
674
667
|
getSystemPromptOptions: () => ({
|
|
675
668
|
cwd: process.cwd(),
|
|
676
|
-
|
|
669
|
+
conversationId: state.currentConversationId,
|
|
677
670
|
...model ? { model } : {}
|
|
678
671
|
}),
|
|
679
672
|
waitForIdle: waitForTuiIdle,
|
|
@@ -725,7 +718,7 @@ async function runTui(opts) {
|
|
|
725
718
|
};
|
|
726
719
|
const runExtensionNewSession = async (options) => {
|
|
727
720
|
await abortActive({ clearUi: false });
|
|
728
|
-
await startPreferredNewSession(
|
|
721
|
+
await startPreferredNewSession();
|
|
729
722
|
await options?.setup?.(sessionSnapshot.manager());
|
|
730
723
|
await runWithReplacementContext(options?.withSession);
|
|
731
724
|
return { cancelled: false };
|
|
@@ -735,14 +728,14 @@ async function runTui(opts) {
|
|
|
735
728
|
if (rowNumber == null) throw new Error(`Invalid entry ID for forking: ${entryId}`);
|
|
736
729
|
const throughRow = options?.position === "before" ? rowNumber - 1 : rowNumber;
|
|
737
730
|
if (throughRow <= 0) throw new Error(`Invalid entry ID for forking: ${entryId}`);
|
|
738
|
-
const
|
|
739
|
-
const targetKey =
|
|
731
|
+
const sourceConversationId = state.currentConversationId;
|
|
732
|
+
const targetKey = randomUUID();
|
|
740
733
|
await abortActive({ clearUi: false });
|
|
741
|
-
const result = await client.forkSessionAt(
|
|
742
|
-
await setSession(result.
|
|
734
|
+
const result = await client.forkSessionAt(sourceConversationId, targetKey, `row-${throughRow}`);
|
|
735
|
+
await setSession(result.conversationId);
|
|
743
736
|
chatLog.addBranchSummary({
|
|
744
|
-
|
|
745
|
-
|
|
737
|
+
sourceConversationId,
|
|
738
|
+
targetConversationId: result.conversationId,
|
|
746
739
|
rowCount: result.rowCount,
|
|
747
740
|
entryId
|
|
748
741
|
});
|
|
@@ -776,7 +769,7 @@ async function runTui(opts) {
|
|
|
776
769
|
getEditorText: () => editor.getExpandedText?.() ?? editor.getText(),
|
|
777
770
|
setEditorComponent,
|
|
778
771
|
getEditorComponent: () => editorComponentFactory,
|
|
779
|
-
searchWorkspaceFiles: (
|
|
772
|
+
searchWorkspaceFiles: (conversationId, query, options) => client.searchWorkspaceFiles?.(conversationId, query, options) ?? Promise.resolve([]),
|
|
780
773
|
getThemeObject: () => theme,
|
|
781
774
|
getAllThemes: getAllExtensionThemes,
|
|
782
775
|
getTheme: getExtensionTheme,
|
|
@@ -800,7 +793,7 @@ async function runTui(opts) {
|
|
|
800
793
|
getSystemPrompt: getExtensionSystemPrompt,
|
|
801
794
|
getSystemPromptOptions: () => ({
|
|
802
795
|
cwd: process.cwd(),
|
|
803
|
-
|
|
796
|
+
conversationId: state.currentConversationId,
|
|
804
797
|
...state.sessionInfo.model ? { model: {
|
|
805
798
|
...state.sessionInfo.modelProvider ? { provider: state.sessionInfo.modelProvider } : {},
|
|
806
799
|
id: state.sessionInfo.model,
|
|
@@ -936,7 +929,7 @@ async function runTui(opts) {
|
|
|
936
929
|
syncTerminalTitle();
|
|
937
930
|
};
|
|
938
931
|
const syncTerminalTitle = () => {
|
|
939
|
-
const shortKey = state.
|
|
932
|
+
const shortKey = state.currentConversationId.length > 48 ? `${state.currentConversationId.slice(0, 45)}…` : state.currentConversationId;
|
|
940
933
|
tui.terminal.setTitle(`xopc · ${shortKey}`);
|
|
941
934
|
};
|
|
942
935
|
const updateFooter = () => {
|
|
@@ -967,15 +960,15 @@ async function runTui(opts) {
|
|
|
967
960
|
tui.terminal.setProgress(false);
|
|
968
961
|
(async () => {
|
|
969
962
|
const removedEmptyStartupSessions = /* @__PURE__ */ new Set();
|
|
970
|
-
if (!state.activeRunId) for (const
|
|
971
|
-
if (
|
|
972
|
-
if (await deleteGeneratedTuiSessionIfEmpty(client,
|
|
963
|
+
if (!state.activeRunId) for (const conversationId of generatedStartupConversationIds) {
|
|
964
|
+
if (conversationId === state.currentConversationId && startupSessionHadUserTurn) continue;
|
|
965
|
+
if (await deleteGeneratedTuiSessionIfEmpty(client, conversationId).catch(() => false)) removedEmptyStartupSessions.add(conversationId);
|
|
973
966
|
}
|
|
974
967
|
client.stop();
|
|
975
968
|
await drainAndStopTuiSafely(tui);
|
|
976
969
|
restoreStdio();
|
|
977
|
-
const currentSessionWasRemoved = removedEmptyStartupSessions.has(state.
|
|
978
|
-
if (options?.showResumeHint !== false && !currentSessionWasRemoved) process.stdout.write(`\nTo resume this session: ${formatTuiResumeCommand(opts, state.
|
|
970
|
+
const currentSessionWasRemoved = removedEmptyStartupSessions.has(state.currentConversationId);
|
|
971
|
+
if (options?.showResumeHint !== false && !currentSessionWasRemoved) process.stdout.write(`\nTo resume this session: ${formatTuiResumeCommand(opts, state.currentConversationId)}\n`);
|
|
979
972
|
finishTui?.();
|
|
980
973
|
process.exit(0);
|
|
981
974
|
})();
|
|
@@ -985,7 +978,7 @@ async function runTui(opts) {
|
|
|
985
978
|
chatLog,
|
|
986
979
|
tui,
|
|
987
980
|
state,
|
|
988
|
-
|
|
981
|
+
resolveConversationId,
|
|
989
982
|
updateHeader,
|
|
990
983
|
updateFooter,
|
|
991
984
|
setActivityStatus,
|
|
@@ -1006,15 +999,17 @@ async function runTui(opts) {
|
|
|
1006
999
|
});
|
|
1007
1000
|
saveTuiSettings(tuiSettings);
|
|
1008
1001
|
};
|
|
1009
|
-
const startPreferredNewSession = async (
|
|
1002
|
+
const startPreferredNewSession = async () => {
|
|
1010
1003
|
const projectId = state.sessionInfo.projectId?.trim() || void 0;
|
|
1011
|
-
await
|
|
1004
|
+
const targetKey = await client.createConversation(currentAgentId);
|
|
1005
|
+
generatedStartupConversationIds.add(targetKey);
|
|
1006
|
+
await setSession(targetKey);
|
|
1012
1007
|
const initialAgentConfig = tuiInitialAgentConfig(tuiSettings, newSessionPreferenceKey, currentAgentId);
|
|
1013
1008
|
if (initialAgentConfig || projectId) {
|
|
1014
|
-
await client.patchSession(state.
|
|
1009
|
+
await client.patchSession(state.currentConversationId, {
|
|
1015
1010
|
...initialAgentConfig,
|
|
1016
1011
|
...projectId ? { projectId } : {},
|
|
1017
|
-
...
|
|
1012
|
+
...isGeneratedTuiConversationId(state.currentConversationId) ? GENERATED_TUI_SESSION_SHELL_PATCH : {}
|
|
1018
1013
|
});
|
|
1019
1014
|
await refreshSessionInfo();
|
|
1020
1015
|
}
|
|
@@ -1031,7 +1026,7 @@ async function runTui(opts) {
|
|
|
1031
1026
|
return;
|
|
1032
1027
|
}
|
|
1033
1028
|
try {
|
|
1034
|
-
startupResources = await client.getStartupResources(state.
|
|
1029
|
+
startupResources = await client.getStartupResources(state.currentConversationId);
|
|
1035
1030
|
} catch {
|
|
1036
1031
|
startupResources = void 0;
|
|
1037
1032
|
}
|
|
@@ -1051,9 +1046,9 @@ async function runTui(opts) {
|
|
|
1051
1046
|
const applyStartupWorkingDirectory = async () => {
|
|
1052
1047
|
if (startupWorkingDirectoryApplied || !startupWorkingDirectory) return;
|
|
1053
1048
|
startupWorkingDirectoryApplied = true;
|
|
1054
|
-
await client.patchSession(state.
|
|
1049
|
+
await client.patchSession(state.currentConversationId, {
|
|
1055
1050
|
workingDirectory: startupWorkingDirectory,
|
|
1056
|
-
...
|
|
1051
|
+
...isGeneratedTuiConversationId(state.currentConversationId) ? GENERATED_TUI_SESSION_SHELL_PATCH : {}
|
|
1057
1052
|
});
|
|
1058
1053
|
state.sessionInfo.effectiveWorkspacePath = startupWorkingDirectory;
|
|
1059
1054
|
state.sessionInfo.workingDirectoryLocked = true;
|
|
@@ -1063,29 +1058,28 @@ async function runTui(opts) {
|
|
|
1063
1058
|
startupProjectApplied = true;
|
|
1064
1059
|
const result = await client.resolveStartupProject?.({
|
|
1065
1060
|
workspacePath: startupWorkingDirectory,
|
|
1066
|
-
|
|
1061
|
+
conversationId: state.currentConversationId,
|
|
1067
1062
|
agentId: currentAgentId,
|
|
1068
1063
|
autoCreate: true
|
|
1069
1064
|
});
|
|
1070
1065
|
if (!result?.project) return;
|
|
1071
1066
|
const projectAgentId = result.project.defaultAgentId?.trim() ? normalizeAgentId(result.project.defaultAgentId) : void 0;
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
await setSession(
|
|
1076
|
-
if (isGeneratedTuiSessionKey(targetSessionKey)) generatedStartupSessionKeys.add(targetSessionKey);
|
|
1067
|
+
if (!opts.agentId?.trim() && projectAgentId && projectAgentId !== currentAgentId) {
|
|
1068
|
+
const targetConversationId = await client.createConversation(projectAgentId);
|
|
1069
|
+
generatedStartupConversationIds.add(targetConversationId);
|
|
1070
|
+
await setSession(targetConversationId);
|
|
1077
1071
|
currentAgentId = projectAgentId;
|
|
1078
|
-
if (
|
|
1079
|
-
await client.patchSession(state.
|
|
1072
|
+
if (isGeneratedTuiConversationId(state.currentConversationId)) await client.patchSession(state.currentConversationId, GENERATED_TUI_SESSION_SHELL_PATCH);
|
|
1073
|
+
await client.patchSession(state.currentConversationId, {
|
|
1080
1074
|
projectId: result.project.id,
|
|
1081
1075
|
workingDirectory: startupWorkingDirectory,
|
|
1082
|
-
...
|
|
1076
|
+
...isGeneratedTuiConversationId(state.currentConversationId) ? GENERATED_TUI_SESSION_SHELL_PATCH : {}
|
|
1083
1077
|
});
|
|
1084
1078
|
state.sessionInfo.effectiveWorkspacePath = startupWorkingDirectory;
|
|
1085
1079
|
state.sessionInfo.workingDirectoryLocked = true;
|
|
1086
|
-
} else await client.patchSession(state.
|
|
1080
|
+
} else await client.patchSession(state.currentConversationId, {
|
|
1087
1081
|
projectId: result.project.id,
|
|
1088
|
-
...
|
|
1082
|
+
...isGeneratedTuiConversationId(state.currentConversationId) ? GENERATED_TUI_SESSION_SHELL_PATCH : {}
|
|
1089
1083
|
});
|
|
1090
1084
|
const verb = result.created ? "Created project" : "Using project";
|
|
1091
1085
|
chatLog.addStatus(theme.dim(`${verb}: ${result.project.name}`));
|
|
@@ -1106,7 +1100,7 @@ async function runTui(opts) {
|
|
|
1106
1100
|
clearSeenStreamEventsForRun(runId);
|
|
1107
1101
|
if (client.resumeChat) {
|
|
1108
1102
|
const resumed = await client.resumeChat({
|
|
1109
|
-
|
|
1103
|
+
conversationId: state.currentConversationId,
|
|
1110
1104
|
runId
|
|
1111
1105
|
});
|
|
1112
1106
|
if (resumed.ok) {
|
|
@@ -1142,7 +1136,7 @@ async function runTui(opts) {
|
|
|
1142
1136
|
};
|
|
1143
1137
|
const setThinkingLevel = async (level) => {
|
|
1144
1138
|
try {
|
|
1145
|
-
await client.patchSession(state.
|
|
1139
|
+
await client.patchSession(state.currentConversationId, { thinkingLevel: level });
|
|
1146
1140
|
state.sessionInfo.thinkingLevel = level;
|
|
1147
1141
|
const currentModelRef = state.sessionInfo.modelProvider && state.sessionInfo.model ? `${state.sessionInfo.modelProvider}/${state.sessionInfo.model}` : state.sessionInfo.model;
|
|
1148
1142
|
if (currentModelRef) {
|
|
@@ -1164,7 +1158,7 @@ async function runTui(opts) {
|
|
|
1164
1158
|
};
|
|
1165
1159
|
const setReasoningLevel = async (level) => {
|
|
1166
1160
|
try {
|
|
1167
|
-
await client.patchSession(state.
|
|
1161
|
+
await client.patchSession(state.currentConversationId, { reasoningLevel: level });
|
|
1168
1162
|
state.sessionInfo.reasoningLevel = level;
|
|
1169
1163
|
await refreshSessionInfoWithBorder();
|
|
1170
1164
|
updateFooter();
|
|
@@ -1178,7 +1172,7 @@ async function runTui(opts) {
|
|
|
1178
1172
|
};
|
|
1179
1173
|
const setVerboseLevel = async (level) => {
|
|
1180
1174
|
try {
|
|
1181
|
-
await client.patchSession(state.
|
|
1175
|
+
await client.patchSession(state.currentConversationId, { verboseLevel: level });
|
|
1182
1176
|
state.sessionInfo.verboseLevel = level;
|
|
1183
1177
|
await refreshSessionInfoWithBorder();
|
|
1184
1178
|
updateFooter();
|
|
@@ -1215,7 +1209,7 @@ async function runTui(opts) {
|
|
|
1215
1209
|
return;
|
|
1216
1210
|
}
|
|
1217
1211
|
try {
|
|
1218
|
-
if (!(await client.renameSession(state.
|
|
1212
|
+
if (!(await client.renameSession(state.currentConversationId, nextName)).ok) {
|
|
1219
1213
|
chatLog.addSystem("Session rename failed.");
|
|
1220
1214
|
tui.requestRender();
|
|
1221
1215
|
return;
|
|
@@ -1284,7 +1278,7 @@ async function runTui(opts) {
|
|
|
1284
1278
|
return;
|
|
1285
1279
|
}
|
|
1286
1280
|
try {
|
|
1287
|
-
await client.patchSession(state.
|
|
1281
|
+
await client.patchSession(state.currentConversationId, { model: trimmed });
|
|
1288
1282
|
state.sessionInfo.modelProvider = selected.provider;
|
|
1289
1283
|
state.sessionInfo.model = selected.id;
|
|
1290
1284
|
tuiSettings = rememberTuiAgentModel(tuiSettings, newSessionPreferenceKey, currentAgentId, {
|
|
@@ -1305,10 +1299,10 @@ async function runTui(opts) {
|
|
|
1305
1299
|
}
|
|
1306
1300
|
};
|
|
1307
1301
|
const exportCurrentSession = async (request) => {
|
|
1308
|
-
const outputPath = request.outputPath ? isAbsolute(request.outputPath) ? request.outputPath : resolve(process.cwd(), request.outputPath) : defaultExportPath(state.
|
|
1302
|
+
const outputPath = request.outputPath ? isAbsolute(request.outputPath) ? request.outputPath : resolve(process.cwd(), request.outputPath) : defaultExportPath(state.currentConversationId, request.format);
|
|
1309
1303
|
try {
|
|
1310
1304
|
const backendFormat = request.format === "json" ? "json" : "markdown";
|
|
1311
|
-
const raw = await client.exportSession(state.
|
|
1305
|
+
const raw = await client.exportSession(state.currentConversationId, backendFormat);
|
|
1312
1306
|
const content = request.format === "html" ? wrapMarkdownExportAsHtml(raw) : raw;
|
|
1313
1307
|
mkdirSync(dirname(outputPath), { recursive: true });
|
|
1314
1308
|
writeFileSync(outputPath, content, "utf8");
|
|
@@ -1328,11 +1322,11 @@ async function runTui(opts) {
|
|
|
1328
1322
|
return;
|
|
1329
1323
|
}
|
|
1330
1324
|
const inputPath = isAbsolute(rawPath) ? rawPath : resolve(process.cwd(), rawPath);
|
|
1331
|
-
const targetKey =
|
|
1325
|
+
const targetKey = resolveConversationId(request.targetKey?.trim() || randomUUID());
|
|
1332
1326
|
try {
|
|
1333
1327
|
const content = readFileSync(inputPath, "utf8");
|
|
1334
1328
|
const result = await client.importSession(targetKey, content);
|
|
1335
|
-
await setSession(result.
|
|
1329
|
+
await setSession(result.conversationId);
|
|
1336
1330
|
chatLog.addStatus(theme.dim(`Imported ${result.rowCount} transcript rows from: ${inputPath}`));
|
|
1337
1331
|
} catch (err) {
|
|
1338
1332
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
@@ -1345,7 +1339,7 @@ async function runTui(opts) {
|
|
|
1345
1339
|
try {
|
|
1346
1340
|
chatLog.addStatus(theme.dim(`Creating share for: ${request.path}`));
|
|
1347
1341
|
tui.requestRender();
|
|
1348
|
-
const result = await client.createShare(state.
|
|
1342
|
+
const result = await client.createShare(state.currentConversationId, request, { agentId: currentAgentId });
|
|
1349
1343
|
chatLog.addSystem(formatTuiShareResult(result));
|
|
1350
1344
|
} catch (err) {
|
|
1351
1345
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
@@ -1357,7 +1351,7 @@ async function runTui(opts) {
|
|
|
1357
1351
|
const startWorkflowRun = async (request) => {
|
|
1358
1352
|
if (!client.startWorkflowRun) throw new Error("Workflow runs are not available in this mode.");
|
|
1359
1353
|
const result = await client.startWorkflowRun({
|
|
1360
|
-
|
|
1354
|
+
conversationId: state.currentConversationId,
|
|
1361
1355
|
definitionId: request.definitionId,
|
|
1362
1356
|
agentId: currentAgentId,
|
|
1363
1357
|
goal: request.goal
|
|
@@ -1374,7 +1368,7 @@ async function runTui(opts) {
|
|
|
1374
1368
|
chatLog.addUser(`/btw ${question}`);
|
|
1375
1369
|
chatLog.addStatus(theme.dim("BTW running..."));
|
|
1376
1370
|
tui.requestRender();
|
|
1377
|
-
const result = await client.btwQuery(state.
|
|
1371
|
+
const result = await client.btwQuery(state.currentConversationId, question);
|
|
1378
1372
|
if (result.error) {
|
|
1379
1373
|
chatLog.addSystem(`BTW failed: ${result.error}`);
|
|
1380
1374
|
return;
|
|
@@ -1397,20 +1391,20 @@ async function runTui(opts) {
|
|
|
1397
1391
|
}
|
|
1398
1392
|
};
|
|
1399
1393
|
const forkCurrentSession = async (rawKey) => {
|
|
1400
|
-
const targetKey =
|
|
1401
|
-
if (targetKey === state.
|
|
1394
|
+
const targetKey = resolveConversationId(rawKey?.trim() || randomUUID());
|
|
1395
|
+
if (targetKey === state.currentConversationId) {
|
|
1402
1396
|
chatLog.addSystem("Fork target must be different from the current session.");
|
|
1403
1397
|
tui.requestRender();
|
|
1404
1398
|
return;
|
|
1405
1399
|
}
|
|
1406
|
-
const
|
|
1400
|
+
const sourceConversationId = state.currentConversationId;
|
|
1407
1401
|
try {
|
|
1408
1402
|
await abortActive({ clearUi: false });
|
|
1409
|
-
const result = await client.forkSession(
|
|
1410
|
-
await setSession(result.
|
|
1403
|
+
const result = await client.forkSession(sourceConversationId, targetKey);
|
|
1404
|
+
await setSession(result.conversationId);
|
|
1411
1405
|
chatLog.addBranchSummary({
|
|
1412
|
-
|
|
1413
|
-
|
|
1406
|
+
sourceConversationId,
|
|
1407
|
+
targetConversationId: result.conversationId,
|
|
1414
1408
|
rowCount: result.rowCount
|
|
1415
1409
|
});
|
|
1416
1410
|
} catch (err) {
|
|
@@ -1468,7 +1462,7 @@ async function runTui(opts) {
|
|
|
1468
1462
|
touchStreamingActivity();
|
|
1469
1463
|
tui.requestRender();
|
|
1470
1464
|
client.submitChatInput({
|
|
1471
|
-
|
|
1465
|
+
conversationId: state.currentConversationId,
|
|
1472
1466
|
message: text,
|
|
1473
1467
|
delivery: "steer"
|
|
1474
1468
|
}).then(({ ok, effectiveDelivery }) => {
|
|
@@ -1530,7 +1524,7 @@ async function runTui(opts) {
|
|
|
1530
1524
|
touchStreamingActivity();
|
|
1531
1525
|
tui.requestRender();
|
|
1532
1526
|
client.sendChat({
|
|
1533
|
-
|
|
1527
|
+
conversationId: state.currentConversationId,
|
|
1534
1528
|
message: messageText,
|
|
1535
1529
|
attachments: attachments.length > 0 ? attachments : void 0,
|
|
1536
1530
|
thinking: opts.thinking
|
|
@@ -1555,7 +1549,7 @@ async function runTui(opts) {
|
|
|
1555
1549
|
}
|
|
1556
1550
|
if (options?.deliverAs === "next") {
|
|
1557
1551
|
client.submitChatInput({
|
|
1558
|
-
|
|
1552
|
+
conversationId: state.currentConversationId,
|
|
1559
1553
|
message: text,
|
|
1560
1554
|
delivery: "next"
|
|
1561
1555
|
}).then((result) => {
|
|
@@ -1578,7 +1572,7 @@ async function runTui(opts) {
|
|
|
1578
1572
|
chatLog.addSystem(theme.dim(instructions ? `Compacting session with instructions: ${instructions}` : "Compacting session…"));
|
|
1579
1573
|
tui.requestRender();
|
|
1580
1574
|
try {
|
|
1581
|
-
const result = await client.compactSession(state.
|
|
1575
|
+
const result = await client.compactSession(state.currentConversationId, {
|
|
1582
1576
|
force: true,
|
|
1583
1577
|
instructions
|
|
1584
1578
|
});
|
|
@@ -1685,12 +1679,14 @@ async function runTui(opts) {
|
|
|
1685
1679
|
if (state.activeRunId) await abortActive({ clearUi: false });
|
|
1686
1680
|
sendMessage(message);
|
|
1687
1681
|
};
|
|
1688
|
-
const switchAgentSession = async (
|
|
1682
|
+
const switchAgentSession = async (conversationId, agentId) => {
|
|
1689
1683
|
const previousWorkspace = state.sessionInfo.effectiveWorkspacePath?.trim();
|
|
1690
|
-
await
|
|
1684
|
+
await client.createConversation(agentId, conversationId);
|
|
1685
|
+
generatedStartupConversationIds.add(conversationId);
|
|
1686
|
+
await setSession(conversationId);
|
|
1691
1687
|
await refreshStartupResources();
|
|
1692
1688
|
if (previousWorkspace && state.sessionInfo.workingDirectoryLocked !== true) try {
|
|
1693
|
-
await client.patchSession(state.
|
|
1689
|
+
await client.patchSession(state.currentConversationId, { workingDirectory: previousWorkspace });
|
|
1694
1690
|
state.sessionInfo.effectiveWorkspacePath = previousWorkspace;
|
|
1695
1691
|
state.sessionInfo.workingDirectoryLocked = true;
|
|
1696
1692
|
await refreshSessionInfoWithBorder();
|
|
@@ -1727,10 +1723,10 @@ async function runTui(opts) {
|
|
|
1727
1723
|
listAgents: () => client.listAgents(),
|
|
1728
1724
|
setTuiDefaultAgent: (agentId) => client.setTuiDefaultAgent?.(agentId) ?? Promise.reject(/* @__PURE__ */ new Error("Not available")),
|
|
1729
1725
|
switchAgentSession,
|
|
1730
|
-
getSessionStats: () => client.getSessionStats(state.
|
|
1726
|
+
getSessionStats: () => client.getSessionStats(state.currentConversationId),
|
|
1731
1727
|
getStartupResources: () => startupResources,
|
|
1732
|
-
loadTranscriptTree: () => client.loadTranscriptTree(state.
|
|
1733
|
-
loadTimeline: () => client.loadTimeline(state.
|
|
1728
|
+
loadTranscriptTree: () => client.loadTranscriptTree(state.currentConversationId),
|
|
1729
|
+
loadTimeline: () => client.loadTimeline(state.currentConversationId),
|
|
1734
1730
|
loadHistoryWindow,
|
|
1735
1731
|
loadSessionHistory: () => loadSessionHistory(),
|
|
1736
1732
|
exportSession: exportCurrentSession,
|
|
@@ -1791,7 +1787,7 @@ async function runTui(opts) {
|
|
|
1791
1787
|
return workspace;
|
|
1792
1788
|
},
|
|
1793
1789
|
onComplete: async (entry) => {
|
|
1794
|
-
await client.appendBashExecution(state.
|
|
1790
|
+
await client.appendBashExecution(state.currentConversationId, entry).catch((err) => {
|
|
1795
1791
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
1796
1792
|
chatLog.addSystem(`Bash transcript append failed: ${errorMessage}`);
|
|
1797
1793
|
}).finally(() => {
|
|
@@ -1835,12 +1831,12 @@ async function runTui(opts) {
|
|
|
1835
1831
|
applyComposerHistory(await client.getComposerInputHistory());
|
|
1836
1832
|
} catch {}
|
|
1837
1833
|
};
|
|
1838
|
-
const refreshPendingInputCount = async (
|
|
1834
|
+
const refreshPendingInputCount = async (conversationId = state.currentConversationId) => {
|
|
1839
1835
|
try {
|
|
1840
|
-
const inputState = await client.getChatInputState(
|
|
1841
|
-
if (state.
|
|
1836
|
+
const inputState = await client.getChatInputState(conversationId);
|
|
1837
|
+
if (state.currentConversationId === conversationId) state.pendingInputCount = countPendingChatInputs(inputState.inputs);
|
|
1842
1838
|
} catch {
|
|
1843
|
-
if (state.
|
|
1839
|
+
if (state.currentConversationId === conversationId) state.pendingInputCount = 0;
|
|
1844
1840
|
}
|
|
1845
1841
|
bottomBar.invalidate();
|
|
1846
1842
|
tui.requestRender();
|
|
@@ -1893,17 +1889,17 @@ async function runTui(opts) {
|
|
|
1893
1889
|
tui.requestRender();
|
|
1894
1890
|
return;
|
|
1895
1891
|
}
|
|
1896
|
-
const
|
|
1892
|
+
const conversationId = state.currentConversationId;
|
|
1897
1893
|
client.submitChatInput({
|
|
1898
|
-
|
|
1894
|
+
conversationId,
|
|
1899
1895
|
message: text,
|
|
1900
1896
|
delivery: "next"
|
|
1901
1897
|
}).then(async ({ ok }) => {
|
|
1902
1898
|
if (!ok) throw new Error("Gateway did not accept the message");
|
|
1903
1899
|
recordChatHistory(text);
|
|
1904
|
-
if (state.
|
|
1900
|
+
if (state.currentConversationId === conversationId && editor.getText().trim() === text) editor.setText("");
|
|
1905
1901
|
chatLog.addSystem(theme.dim("Queued as the next message."));
|
|
1906
|
-
await refreshPendingInputCount(
|
|
1902
|
+
await refreshPendingInputCount(conversationId);
|
|
1907
1903
|
}).catch((error) => {
|
|
1908
1904
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1909
1905
|
chatLog.addSystem(theme.dim(`Queue failed: ${errorMessage}`));
|
|
@@ -1913,15 +1909,16 @@ async function runTui(opts) {
|
|
|
1913
1909
|
}
|
|
1914
1910
|
submitBurst(text);
|
|
1915
1911
|
};
|
|
1916
|
-
const
|
|
1917
|
-
state.
|
|
1912
|
+
const setConversationId = (key) => {
|
|
1913
|
+
state.currentConversationId = resolveConversationId(key);
|
|
1918
1914
|
state.pendingInputCount = 0;
|
|
1919
|
-
refreshPendingInputCount(state.
|
|
1915
|
+
refreshPendingInputCount(state.currentConversationId);
|
|
1920
1916
|
updateAgentFromPicker(key);
|
|
1921
1917
|
};
|
|
1922
1918
|
const updateAgentFromPicker = (key) => {
|
|
1923
|
-
|
|
1924
|
-
|
|
1919
|
+
client.getSessionInfo(resolveConversationId(key)).then((info) => {
|
|
1920
|
+
if (state.currentConversationId === resolveConversationId(key) && info.agentId) currentAgentId = info.agentId;
|
|
1921
|
+
}).catch(() => void 0);
|
|
1925
1922
|
};
|
|
1926
1923
|
let ctrlCHandling = false;
|
|
1927
1924
|
const handleCtrlC = () => {
|
|
@@ -1967,7 +1964,7 @@ async function runTui(opts) {
|
|
|
1967
1964
|
refreshSessionInfo,
|
|
1968
1965
|
updateHeader,
|
|
1969
1966
|
state,
|
|
1970
|
-
|
|
1967
|
+
setConversationId,
|
|
1971
1968
|
switchAgentSession,
|
|
1972
1969
|
clearChatForSessionSwitch,
|
|
1973
1970
|
loadSessionHistory,
|
|
@@ -2144,7 +2141,7 @@ async function runTui(opts) {
|
|
|
2144
2141
|
client.onEvent = (evt) => {
|
|
2145
2142
|
const data = evt.data ?? {};
|
|
2146
2143
|
if (evt.event === "session.input-state") {
|
|
2147
|
-
if (data.
|
|
2144
|
+
if (data.conversationId === state.currentConversationId && Array.isArray(data.inputs)) {
|
|
2148
2145
|
state.pendingInputCount = countPendingChatInputs(data.inputs);
|
|
2149
2146
|
bottomBar.invalidate();
|
|
2150
2147
|
tui.requestRender();
|
|
@@ -2172,11 +2169,16 @@ async function runTui(opts) {
|
|
|
2172
2169
|
dispatchAgentEvent(evt.event, data, state, chatLog, tui, setActivityStatus, touchStreamingActivity, onAgentRunEnded, (message) => sessionSnapshot.appendMessage("assistant", assistantMessagePlainText(message)), evt.source);
|
|
2173
2170
|
};
|
|
2174
2171
|
let startupSessionPickerOpened = false;
|
|
2172
|
+
let startupConversationCreated = Boolean(opts.session?.trim());
|
|
2175
2173
|
client.onConnected = () => {
|
|
2176
2174
|
state.isConnected = true;
|
|
2177
2175
|
setConnectionStatus(isLocalMode ? "local ready" : "gateway connected");
|
|
2178
2176
|
touchStreamingActivity();
|
|
2179
2177
|
(async () => {
|
|
2178
|
+
if (!startupConversationCreated) {
|
|
2179
|
+
await client.createConversation(currentAgentId, state.currentConversationId);
|
|
2180
|
+
startupConversationCreated = true;
|
|
2181
|
+
}
|
|
2180
2182
|
await refreshComposerHistory();
|
|
2181
2183
|
if (opts.openSessionPickerOnStart && !startupSessionPickerOpened) {
|
|
2182
2184
|
startupSessionPickerOpened = true;
|
|
@@ -2204,9 +2206,9 @@ async function runTui(opts) {
|
|
|
2204
2206
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
2205
2207
|
chatLog.addSystem(`Project not selected: ${errorMessage}`);
|
|
2206
2208
|
}
|
|
2207
|
-
if (!opts.session?.trim() &&
|
|
2209
|
+
if (!opts.session?.trim() && isGeneratedTuiConversationId(state.currentConversationId)) {
|
|
2208
2210
|
const initialAgentConfig = tuiInitialAgentConfig(tuiSettings, newSessionPreferenceKey, currentAgentId);
|
|
2209
|
-
if (initialAgentConfig || opts.thinking?.trim()) await client.patchSession(state.
|
|
2211
|
+
if (initialAgentConfig || opts.thinking?.trim()) await client.patchSession(state.currentConversationId, {
|
|
2210
2212
|
...initialAgentConfig,
|
|
2211
2213
|
...opts.thinking?.trim() ? { thinkingLevel: opts.thinking.trim() } : {}
|
|
2212
2214
|
});
|
|
@@ -2214,13 +2216,13 @@ async function runTui(opts) {
|
|
|
2214
2216
|
await refreshSessionInfoWithBorder();
|
|
2215
2217
|
persistCurrentNewSessionContext();
|
|
2216
2218
|
try {
|
|
2217
|
-
state.pendingInputCount = countPendingChatInputs((await client.getChatInputState(state.
|
|
2219
|
+
state.pendingInputCount = countPendingChatInputs((await client.getChatInputState(state.currentConversationId)).inputs);
|
|
2218
2220
|
} catch {
|
|
2219
2221
|
state.pendingInputCount = 0;
|
|
2220
2222
|
}
|
|
2221
2223
|
await refreshModelChoices();
|
|
2222
2224
|
await loadSessionHistory({ merge: true });
|
|
2223
|
-
cleanupAbandonedTuiSessions(client, state.
|
|
2225
|
+
cleanupAbandonedTuiSessions(client, state.currentConversationId).catch(() => {});
|
|
2224
2226
|
showStartupCardOnce();
|
|
2225
2227
|
refreshStartupResources().then(() => {
|
|
2226
2228
|
updateFooter();
|