@xopcai/xopc 0.0.320 → 0.0.323
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-DKo-NMUY.js → auth-DocRzRlS.js} +95 -21
- package/dist/browser-ext/dist/background.js +1 -1
- package/dist/browser-ext/dist/sidepanel.html +1 -1
- package/dist/browser-ext/dist/sidepanel.js +18 -2
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BXLU0HJa.js → agent-avatar-dicebear-DFzmThVi.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CAFHadiy.js +1 -0
- package/dist/gateway/static/root/assets/agent-plugin-dialog-DYFYiuig.js +1 -0
- package/dist/gateway/static/root/assets/{agents-hrbGiOHn.js → agents-BqIlB5Co.js} +1 -1
- package/dist/gateway/static/root/assets/{app-link-nL8iPwEr.js → app-link-C6gA5Nck.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-C0jEvonH.js → app-management-settings-panel-BgvMRGWe.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-ByVRv2Oe.js → appearance-settings-CliHU03A.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-Drt3Foi9.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-CMITc1PQ.js → archive-plugin-DnuPpm0u.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-B5Z1PKHm.js → attachment-load-BiwaK0ie.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BOcXqVar.js → automations-page-CJSISGQH.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-B-Eduqwz.js +7 -0
- package/dist/gateway/static/root/assets/{binary-plugins-BkRb9adx.js → binary-plugins-KDjduQZO.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-DsmDlkC2.js → block-editor-bclvgove.js} +3 -3
- package/dist/gateway/static/root/assets/{browser-automation-inputs-BgBH3eFk.js → browser-automation-inputs-CfQ2T9t6.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-e3KpurLo.js → browser-automations-page-Cxq38Nnp.js} +2 -2
- package/dist/gateway/static/root/assets/browser-settings-page-Dwgir6mu.js +3 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-H5L5vynP.js +8 -0
- package/dist/gateway/static/root/assets/capabilities-uFKh3Hd0.js +1 -0
- package/dist/gateway/static/root/assets/channels-settings-RFBRYe5S.js +1 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-DUdkU1C5.js → chat-terminal-dock-DKQC62nQ.js} +2 -2
- package/dist/gateway/static/root/assets/{computer-settings-page-C6WR9Syy.js → computer-settings-page-D1whpIqL.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-SVKcySx0.js → connector-service-page-BAuYTgf5.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-Px-v3Q6Q.js +2 -0
- package/dist/gateway/static/root/assets/{date-picker-DBD5yedi.js → date-picker-CfCo3lqh.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-HE41Co5W.js → dependency-picker-DOuVO2M1.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-DH9EU9O3.js → desktop-pet-D9tu6Bhu.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-Br6Z1Vau.js → desktop-pet-settings-CQPXub2f.js} +1 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-DxkOYSut.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-CFjVNb1m.js → extension-debug-page-CtWClPz-.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-BQ3ldBhh.js → extension-page-BHh9HLCz.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CaXnWbRI.js → extension-settings-page-BdT3v5Uh.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-DgFmBSH9.js → gateway-config-swr-1eqyz9vZ.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-CZas_Ekx.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-C7h3xef0.js → gateway-startup-retry-C4rsW6vJ.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-w3_aWeNt.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-DJ1xaz2p.js → image-generation-api-B5DXMylk.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-CaB54QIp.js → imports-page-B1JH0G5j.js} +1 -1
- package/dist/gateway/static/root/assets/index--3c0awkr.js +121 -0
- package/dist/gateway/static/root/assets/index-CNc4N4TX.css +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DnvHvKQJ.js → keyboard-shortcuts-settings-DGrLJ8Yh.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-BYKrJpFF.js +1 -0
- package/dist/gateway/static/root/assets/local-apps-Bpja8nC6.js +1 -0
- package/dist/gateway/static/root/assets/local-apps-page-DqjStqbL.js +1 -0
- package/dist/gateway/static/root/assets/{locale-store-C4RjTd0C.js → locale-store-BIkcRr3t.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-N0q5DxnI.js → logs-page-Dl4kM4Na.js} +2 -2
- package/dist/gateway/static/root/assets/management-settings-gCfH4cwH.js +1 -0
- package/dist/gateway/static/root/assets/{markdown-view-DkPzc50Z.js → markdown-view-Ck_5MADq.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-BzLYE9lj.js → media-plugins-DTsZqgo6.js} +1 -1
- package/dist/gateway/static/root/assets/messages-7VAhscYe.js +3 -0
- package/dist/gateway/static/root/assets/note-detail-panel-j6sioeL1.js +5 -0
- package/dist/gateway/static/root/assets/notes-page-CMvvHv0f.js +8 -0
- package/dist/gateway/static/root/assets/{page-context-capture-button-DVnGa7Lu.js → page-context-capture-button-DTI_g4tz.js} +1 -1
- package/dist/gateway/static/root/assets/{page-tabs-q6lpN9OD.js → page-tabs-CfW_Q-K5.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-Ck63fJaQ.js → preview-open-alternatives-CuPN-vAn.js} +1 -1
- package/dist/gateway/static/root/assets/product-delivery-bv3z8Xkh.js +1 -0
- package/dist/gateway/static/root/assets/product-open-page-BHjxRz1E.js +1 -0
- package/dist/gateway/static/root/assets/project-detail-page-C9K_e-EV.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-Bk-es4i9.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-CRnytFLF.js → registry-api-BAAZUGnU.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CLGJNA42.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-Bu3XyrDI.js → runtime-tools-settings-panel-CHJBJKL1.js} +2 -2
- package/dist/gateway/static/root/assets/{scenes-page-B_5HOUzl.js → scenes-page-ClLAD1pz.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-CbOOKW1B.js → schema-form-FQAit5HL.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-Xj8MkXN1.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-DwALV8mi.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-D3UN4rb4.js → settings-form-section-BDc6bw1q.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-BHztZayW.js → settings-page-DnhxBJjV.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-nskqtzZs.js → settings-page-layout-D3KNSQ5g.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-BtukdJ-z.js → setup-status-panel-F0rCQ-2a.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-DbYXEqur.js → share-preview-page-DVQCRxwK.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-C7hf6Cov.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-xPrFejRE.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-CK9Jeaur.js → skills-page-RdDYu7Yj.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-B44aWbyL.js → skills-page.utils-mDwC9UJ-.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-BwqpUGv_.js → system-settings-panel-Bk7GrMij.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-2A966jFY.js +1 -0
- package/dist/gateway/static/root/assets/{tunnel-api-BKTZzQIT.js → tunnel-api-D3Aquraj.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-BB1JBOCz.js → use-autosave-C1xQ-sHn.js} +1 -1
- package/dist/gateway/static/root/assets/user-model-page-CnBxPBVe.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-C-HsgED9.js → voice-api-key-field-DCNECvcp.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-DvJKYYA0.js → voice-config-api-B-_niUTU.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-K3e5ONUo.js → work-discovery-overlay-BrGx_JS_.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-dXRTHBoE.js → workflow-run-setup-panel-CmmC2Pdr.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-BZVpqw4T.js +6 -0
- package/dist/gateway/static/root/index.html +12 -11
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/capabilities.js +4 -110
- package/dist/packages/gateway-contract/src/chat-previews.js +73 -0
- package/dist/packages/gateway-contract/src/index.js +6 -0
- package/dist/packages/gateway-contract/src/local-apps.js +215 -0
- package/dist/packages/gateway-contract/src/product-delivery.js +62 -17
- package/dist/packages/gateway-contract/src/user-turn-document.js +60 -0
- package/dist/src/agent/agent-manager.d.ts +1 -0
- package/dist/src/agent/agent-manager.js +5 -4
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/embedded/model-runtime.js +1 -1
- package/dist/src/agent/embedded/run-for-session.js +1 -1
- package/dist/src/agent/embedded/transcript-runtime.d.ts +3 -0
- package/dist/src/agent/embedded/transcript-runtime.js +6 -0
- package/dist/src/agent/external-tools/cliProvider.js +4 -1
- package/dist/src/agent/external-tools/composio-provider.js +9 -3
- package/dist/src/agent/external-tools/gateway-tools.js +17 -10
- package/dist/src/agent/external-tools/mcp-provider.d.ts +3 -1
- package/dist/src/agent/external-tools/mcp-provider.js +91 -6
- package/dist/src/agent/external-tools/service.d.ts +2 -1
- package/dist/src/agent/external-tools/service.js +8 -3
- package/dist/src/agent/external-tools/types.d.ts +9 -0
- package/dist/src/agent/image/tool-model-config.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-config.js +37 -5
- package/dist/src/agent/mcp/bundle-mcp-gateway.d.ts +1 -0
- package/dist/src/agent/mcp/bundle-mcp-gateway.js +1 -0
- package/dist/src/agent/mcp/bundle-mcp-names.js +2 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +33 -1
- package/dist/src/agent/mcp/bundle-mcp-types.d.ts +4 -0
- package/dist/src/agent/mcp/index.js +1 -1
- package/dist/src/agent/mcp/mcp-stdio-transport.d.ts +1 -0
- package/dist/src/agent/mcp/mcp-stdio-transport.js +10 -0
- package/dist/src/agent/mcp/mcp-transport.js +12 -8
- package/dist/src/agent/mcp/oauth/index.js +1 -1
- package/dist/src/agent/mcp/oauth/mcp-oauth-manager.d.ts +6 -1
- package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +70 -14
- package/dist/src/agent/mcp/oauth/mcp-oauth-provider.js +1 -1
- package/dist/src/agent/mcp/oauth/mcp-oauth-session.d.ts +2 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-session.js +12 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-store.d.ts +3 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +14 -2
- package/dist/src/agent/mcp/plugin-http-fetch.d.ts +2 -0
- package/dist/src/agent/mcp/plugin-http-fetch.js +56 -0
- package/dist/src/agent/service/process-direct-streaming.js +27 -12
- package/dist/src/agent/service.js +3 -2
- package/dist/src/agent/service.types.d.ts +2 -0
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +1 -1
- package/dist/src/agent/skills/index.js +8 -1
- package/dist/src/agent/skills/skill-manager.d.ts +2 -0
- package/dist/src/agent/skills/skill-manager.js +8 -0
- package/dist/src/agent/skills/skill-sources.js +17 -0
- package/dist/src/agent/skills/types.d.ts +3 -1
- package/dist/src/agent/source-context/injector.js +10 -5
- package/dist/src/agent/source-context/types.d.ts +3 -0
- package/dist/src/agent/source-context/types.js +8 -2
- package/dist/src/agent/tasks/task-judge-service.js +3 -3
- package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
- package/dist/src/agent/tool-manuals/xopc-use.js +12 -2
- package/dist/src/agent/tools/automation-tool.js +1 -1
- package/dist/src/agent/tools/factory.d.ts +1 -0
- package/dist/src/agent/tools/factory.js +2 -1
- package/dist/src/agent/tools/search/registry.js +4 -1
- package/dist/src/agent/tools/workflow-tool.js +1 -1
- package/dist/src/agent/tools/write.js +1 -1
- package/dist/src/agent/tools/xopc-use-tool.d.ts +4 -2
- package/dist/src/agent/tools/xopc-use-tool.js +120 -12
- package/dist/src/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/auth/oauth/xopc-cloud.js +1 -1
- package/dist/src/auth/profiles/store.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +2 -2
- package/dist/src/browser/providers/browser-ext-install.js +1 -1
- package/dist/src/chat-commands/agent-edit.js +1 -1
- package/dist/src/chat-previews/index.d.ts +2 -0
- package/dist/src/chat-previews/index.js +3 -0
- package/dist/src/chat-previews/service.d.ts +27 -0
- package/dist/src/chat-previews/service.js +106 -0
- package/dist/src/chat-previews/store.d.ts +28 -0
- package/dist/src/chat-previews/store.js +77 -0
- package/dist/src/cli/commands/agent.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +3 -3
- package/dist/src/cli/commands/extension-agent-plugin.d.ts +8 -0
- package/dist/src/cli/commands/extension-agent-plugin.js +82 -0
- package/dist/src/cli/commands/extension-marketplace.js +44 -4
- package/dist/src/cli/commands/extension.js +35 -3
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/computer/runtime.js +1 -1
- package/dist/src/config/index.js +4 -4
- package/dist/src/config/loader.js +2 -2
- package/dist/src/config/models-json.js +2 -2
- package/dist/src/config/schema.js +2 -2
- package/dist/src/connectors/account-selection.js +1 -1
- package/dist/src/connectors/connection-candidates.d.ts +4 -1
- package/dist/src/connectors/connection-candidates.js +8 -2
- package/dist/src/connectors/connection-capabilities.d.ts +2 -2
- package/dist/src/connectors/connection-capabilities.js +3 -1
- package/dist/src/connectors/connection-recovery-service.d.ts +6 -1
- package/dist/src/connectors/connection-recovery-service.js +138 -26
- package/dist/src/connectors/plugin-mcp-recovery.d.ts +28 -0
- package/dist/src/connectors/plugin-mcp-recovery.js +90 -0
- package/dist/src/extensions/agent-plugins/auth.d.ts +39 -0
- package/dist/src/extensions/agent-plugins/auth.js +156 -0
- package/dist/src/extensions/agent-plugins/connection.d.ts +8 -0
- package/dist/src/extensions/agent-plugins/connection.js +41 -0
- package/dist/src/extensions/agent-plugins/health.d.ts +4 -0
- package/dist/src/extensions/agent-plugins/health.js +48 -0
- package/dist/src/extensions/agent-plugins/inventory.d.ts +53 -0
- package/dist/src/extensions/agent-plugins/inventory.js +34 -0
- package/dist/src/extensions/agent-plugins/mcp-adapter.d.ts +3 -0
- package/dist/src/extensions/agent-plugins/mcp-adapter.js +47 -0
- package/dist/src/extensions/agent-plugins/sources.d.ts +5 -0
- package/dist/src/extensions/agent-plugins/sources.js +72 -0
- package/dist/src/extensions/agent-plugins/store.d.ts +61 -0
- package/dist/src/extensions/agent-plugins/store.js +305 -0
- package/dist/src/extensions/agent-plugins/validation.d.ts +59 -0
- package/dist/src/extensions/agent-plugins/validation.js +211 -0
- package/dist/src/extensions/lockfile.js +1 -1
- package/dist/src/extensions/update.js +1 -1
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/chat-stream/mapper.js +10 -3
- package/dist/src/gateway/file-path-classifier.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/routes/agent-plugins.d.ts +3 -0
- package/dist/src/gateway/hono/routes/agent-plugins.js +166 -0
- package/dist/src/gateway/hono/routes/agent-stream.js +14 -0
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +4 -2
- package/dist/src/gateway/hono/routes/chat-previews.d.ts +3 -0
- package/dist/src/gateway/hono/routes/chat-previews.js +41 -0
- package/dist/src/gateway/hono/routes/connection-waits.js +4 -2
- package/dist/src/gateway/hono/routes/index.js +2 -0
- package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
- package/dist/src/gateway/hono/routes/local-apps.js +71 -39
- package/dist/src/gateway/hono/routes/mcp.js +48 -21
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +4 -0
- package/dist/src/gateway/hono/routes/session-input-handler.js +22 -0
- package/dist/src/gateway/hono/routes/side-chats.js +11 -0
- package/dist/src/gateway/service/agent-runner.js +7 -1
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service/marketplace-service.d.ts +1 -0
- package/dist/src/gateway/service/marketplace-service.js +15 -1
- package/dist/src/gateway/service/session-input-coordinator.js +3 -3
- package/dist/src/gateway/service.d.ts +5 -1
- package/dist/src/gateway/service.js +19 -5
- package/dist/src/gateway/side-chat/index.d.ts +3 -1
- package/dist/src/gateway/side-chat/index.js +2 -1
- package/dist/src/gateway/side-chat/manager.d.ts +16 -0
- package/dist/src/gateway/side-chat/manager.js +40 -6
- package/dist/src/gateway/side-chat/promotion-service.d.ts +19 -0
- package/dist/src/gateway/side-chat/promotion-service.js +111 -0
- package/dist/src/gateway/side-chat/run-service.js +1 -0
- package/dist/src/gateway/side-chat/types.d.ts +1 -1
- package/dist/src/local-apps/artifact-files.d.ts +3 -0
- package/dist/src/local-apps/artifact-files.js +45 -0
- package/dist/src/local-apps/capabilities/write.js +1 -1
- package/dist/src/local-apps/fix-guidance.d.ts +3 -0
- package/dist/src/local-apps/fix-guidance.js +75 -0
- package/dist/src/local-apps/index.d.ts +2 -1
- package/dist/src/local-apps/scaffold.d.ts +5 -0
- package/dist/src/local-apps/scaffold.js +18 -5
- package/dist/src/local-apps/service.d.ts +18 -3
- package/dist/src/local-apps/service.js +106 -64
- package/dist/src/local-apps/snapshot-store.d.ts +8 -0
- package/dist/src/local-apps/snapshot-store.js +68 -0
- package/dist/src/local-apps/types.d.ts +4 -87
- package/dist/src/notes/service.js +1 -1
- package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
- package/dist/src/providers/index.js +2 -2
- package/dist/src/providers/model-catalog-persistence.js +1 -1
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/providers/register-runtime-providers.js +1 -1
- package/dist/src/session/client-history.d.ts +3 -1
- package/dist/src/session/client-history.js +10 -3
- package/dist/src/session/index.d.ts +1 -1
- package/dist/src/session/manager.d.ts +4 -0
- package/dist/src/session/manager.js +6 -0
- package/dist/src/session/session-context-for-llm.d.ts +12 -1
- package/dist/src/session/session-context-for-llm.js +16 -2
- package/dist/src/session/store.d.ts +14 -0
- package/dist/src/session/store.js +17 -0
- package/dist/src/session/stored-rows-to-file-entries.js +10 -1
- package/dist/src/session/transcript-outline.js +10 -3
- package/dist/src/storage/sqlite/connection-wait-repository.js +9 -3
- package/dist/src/storage/sqlite/migrations/202_chat_previews.sql +26 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/row-mappers.js +6 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/tui/backends/embedded-backend.js +1 -1
- package/dist/src/tui/tui-commands.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/tui.js +2 -2
- package/dist/src/voice/tts/audio.js +1 -1
- package/dist/src/work-discovery/service.js +2 -2
- package/dist/src/workflows/service/workflow-run-service.js +1 -1
- package/package.json +4 -4
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-BGCqlTcR.js +0 -1
- package/dist/gateway/static/root/assets/api-DEneywgz.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-vC87gAyb.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-CzYmREol.js +0 -7
- package/dist/gateway/static/root/assets/browser-settings-page-BxaSzUIU.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-D0S3DuAD.js +0 -1
- package/dist/gateway/static/root/assets/capabilities-settings-panel-CFCu-8da.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-CENp82yt.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-g_KTZWCb.js +0 -2
- package/dist/gateway/static/root/assets/device-pairing-wizard-DO7jp0ep.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BkeSEBxk.js +0 -1
- package/dist/gateway/static/root/assets/home-page-KoQXV4hp.js +0 -1
- package/dist/gateway/static/root/assets/index-ZxnWUdPv.css +0 -1
- package/dist/gateway/static/root/assets/index-u4709aCa.js +0 -89
- package/dist/gateway/static/root/assets/local-app-workbench-page-7QX0YFa7.js +0 -2
- package/dist/gateway/static/root/assets/local-apps-page-RSAl-NhO.js +0 -1
- package/dist/gateway/static/root/assets/management-settings-C_cb0Kue.js +0 -1
- package/dist/gateway/static/root/assets/messages-M5xl1fHE.js +0 -3
- package/dist/gateway/static/root/assets/note-detail-panel-CVWst-Er.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-BFwCgIls.js +0 -8
- package/dist/gateway/static/root/assets/product-delivery-chCjIpvu.js +0 -1
- package/dist/gateway/static/root/assets/product-open-page-BIGvTs9n.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-BFEtpkcf.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-CHr-P2z4.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-PhEyHSOb.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-CmIhlHPS.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CCOTu1jb.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-CG1sll8V.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-Byq23h9c.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-D5q-wk_d.js +0 -1
- package/dist/gateway/static/root/assets/user-model-page-DE3ZeJL3.js +0 -2
- package/dist/gateway/static/root/assets/workflows-page-DGZaETmN.js +0 -6
|
@@ -1,40 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
export type
|
|
3
|
-
export type
|
|
4
|
-
export
|
|
5
|
-
id: string;
|
|
6
|
-
appId: string;
|
|
7
|
-
version: number;
|
|
8
|
-
sourceHash: string;
|
|
9
|
-
healthStatus: LocalAppReleaseHealth;
|
|
10
|
-
createdAt: number;
|
|
11
|
-
activatedAt?: number;
|
|
12
|
-
isActive: boolean;
|
|
13
|
-
}
|
|
14
|
-
export interface LocalApp {
|
|
15
|
-
id: string;
|
|
16
|
-
extensionId: string;
|
|
17
|
-
projectId: string;
|
|
18
|
-
name: string;
|
|
19
|
-
description?: string;
|
|
20
|
-
idea: string;
|
|
21
|
-
status: LocalAppStatus;
|
|
22
|
-
workspaceRoot: string;
|
|
23
|
-
draftVersion: number;
|
|
24
|
-
activeVersion?: number;
|
|
25
|
-
activeReleaseId?: string;
|
|
26
|
-
installationState: LocalAppInstallationState;
|
|
27
|
-
enabled: boolean;
|
|
28
|
-
createdAt: number;
|
|
29
|
-
updatedAt: number;
|
|
30
|
-
installedAt?: number;
|
|
31
|
-
}
|
|
32
|
-
export interface LocalAppDetail extends LocalApp {
|
|
33
|
-
previewUrl: string;
|
|
34
|
-
permissions: string[];
|
|
35
|
-
releases: LocalAppRelease[];
|
|
36
|
-
acceptanceRuns: LocalAppAcceptanceRun[];
|
|
37
|
-
}
|
|
1
|
+
import type { LocalAppAcceptanceInput, LocalAppAcceptanceRun, LocalAppAcceptanceScenarioSummary, LocalAppChangedFile, LocalAppDetail, LocalAppDiagnostic, LocalAppDiagnosticPhase, LocalAppFixGuidance, LocalAppFixGuidanceInput, LocalAppInstallationState, LocalAppRecord, LocalAppRelease, LocalAppReleaseHealth, LocalAppStatus, LocalAppValidationIssue, LocalAppValidationResult } from '@xopcai/gateway-contract';
|
|
2
|
+
export type LocalApp = LocalAppRecord;
|
|
3
|
+
export type RecordLocalAppAcceptanceInput = LocalAppAcceptanceInput;
|
|
4
|
+
export type { LocalAppAcceptanceRun, LocalAppAcceptanceScenarioSummary, LocalAppChangedFile, LocalAppDetail, LocalAppDiagnostic, LocalAppDiagnosticPhase, LocalAppFixGuidance, LocalAppFixGuidanceInput, LocalAppInstallationState, LocalAppRelease, LocalAppReleaseHealth, LocalAppStatus, LocalAppValidationIssue, LocalAppValidationResult, };
|
|
38
5
|
export interface LocalAppUiGrant {
|
|
39
6
|
granted: boolean;
|
|
40
7
|
extensionId: string;
|
|
@@ -43,56 +10,6 @@ export interface LocalAppUiGrant {
|
|
|
43
10
|
permissions: string[];
|
|
44
11
|
grantedAt?: number;
|
|
45
12
|
}
|
|
46
|
-
export interface LocalAppAcceptanceCheck {
|
|
47
|
-
id: 'document' | 'content' | 'interaction' | 'criteria';
|
|
48
|
-
status: 'passed' | 'failed' | 'skipped';
|
|
49
|
-
message: string;
|
|
50
|
-
}
|
|
51
|
-
export interface LocalAppAcceptanceRun {
|
|
52
|
-
id: string;
|
|
53
|
-
appId: string;
|
|
54
|
-
sourceHash: string;
|
|
55
|
-
status: 'passed' | 'failed';
|
|
56
|
-
checks: LocalAppAcceptanceCheck[];
|
|
57
|
-
interactiveCount: number;
|
|
58
|
-
createdAt: number;
|
|
59
|
-
}
|
|
60
|
-
export interface RecordLocalAppAcceptanceInput {
|
|
61
|
-
sourceHash: string;
|
|
62
|
-
status: 'passed' | 'failed';
|
|
63
|
-
checks: LocalAppAcceptanceCheck[];
|
|
64
|
-
interactiveCount: number;
|
|
65
|
-
}
|
|
66
|
-
export interface LocalAppValidationIssue {
|
|
67
|
-
code: string;
|
|
68
|
-
severity: 'error' | 'warning';
|
|
69
|
-
message: string;
|
|
70
|
-
}
|
|
71
|
-
export interface LocalAppChangedFile {
|
|
72
|
-
path: string;
|
|
73
|
-
status: 'added' | 'modified' | 'deleted';
|
|
74
|
-
}
|
|
75
|
-
export interface LocalAppAcceptanceScenarioSummary {
|
|
76
|
-
id: string;
|
|
77
|
-
name: string;
|
|
78
|
-
stepCount: number;
|
|
79
|
-
}
|
|
80
|
-
export interface LocalAppValidationResult {
|
|
81
|
-
status: 'healthy' | 'failed';
|
|
82
|
-
checkedAt: number;
|
|
83
|
-
sourceHash?: string;
|
|
84
|
-
hasDraftChanges: boolean;
|
|
85
|
-
changedFiles: LocalAppChangedFile[];
|
|
86
|
-
changedFileCount: number;
|
|
87
|
-
permissions: string[];
|
|
88
|
-
permissionDelta: {
|
|
89
|
-
added: string[];
|
|
90
|
-
removed: string[];
|
|
91
|
-
};
|
|
92
|
-
acceptanceScenarioCount: number;
|
|
93
|
-
acceptanceScenarios: LocalAppAcceptanceScenarioSummary[];
|
|
94
|
-
issues: LocalAppValidationIssue[];
|
|
95
|
-
}
|
|
96
13
|
export interface CreateLocalAppInput {
|
|
97
14
|
name: string;
|
|
98
15
|
idea: string;
|
|
@@ -7,9 +7,9 @@ import { parseNoteMarkdown } from "./note-markdown.js";
|
|
|
7
7
|
import { listNoteProjectSummaries } from "../storage/sqlite/notes-repository.js";
|
|
8
8
|
import { changedFieldsFromPatch, emitActivity, previewText, systemActivityActor, systemActivitySource } from "../activity/emitter.js";
|
|
9
9
|
import { getDefaultModelSync, init_providers, resolveModel } from "../providers/index.js";
|
|
10
|
-
import { completeWithResolvedCredentials } from "../providers/model-call.js";
|
|
11
10
|
import { DomainOutboxDispatcher } from "../infra/domain-outbox-dispatcher.js";
|
|
12
11
|
import { publishAutomationProductEvent } from "../automations/product-events.js";
|
|
12
|
+
import { completeWithResolvedCredentials } from "../providers/model-call.js";
|
|
13
13
|
import { partitionAttachmentsByReference } from "./note-attachment-sync.js";
|
|
14
14
|
import { buildNoteAgentContextArtifact, getCachedNoteAgentContextArtifact } from "./agent-context.js";
|
|
15
15
|
import { revokeNoteShareRecords } from "../share/note-share-revocation.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getApiKeyFromEnv, init_env_keys } from "../env-keys.js";
|
|
2
1
|
import { init_sync_provider_auth, resolveProviderApiKeyForAgentSync } from "../../auth/sync-provider-auth.js";
|
|
2
|
+
import { getApiKeyFromEnv, init_env_keys } from "../env-keys.js";
|
|
3
3
|
import { getDefaultAuthProfileStore } from "./auth-profile-store.js";
|
|
4
4
|
//#region src/providers/auth-runtime/resolve-auth.ts
|
|
5
5
|
init_env_keys();
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { __esmMin, __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
|
|
3
|
+
import { getModelOAuthProviderIds, init_registry } from "../auth/oauth/registry.js";
|
|
4
|
+
import { hasProviderAuthOnDiskSync, init_sync_provider_auth } from "../auth/sync-provider-auth.js";
|
|
3
5
|
import { PROVIDER_ENV_MAP, getApiKeyFromEnv, init_env_keys } from "./env-keys.js";
|
|
4
6
|
import { init_model_ref, splitProviderModelRef } from "./model-ref.js";
|
|
5
7
|
import { ModelRegistry, getModelRegistry, init_model_registry, prewarmModelRegistry, resetModelRegistry } from "./model-registry.js";
|
|
6
|
-
import { getModelOAuthProviderIds, init_registry } from "../auth/oauth/registry.js";
|
|
7
8
|
import { CredentialResolver, hasCredentials, init_credentials } from "../auth/credentials.js";
|
|
8
|
-
import { hasProviderAuthOnDiskSync, init_sync_provider_auth } from "../auth/sync-provider-auth.js";
|
|
9
9
|
import { EXTENSION_PROVIDER_BASE_URL, init_constants } from "./constants.js";
|
|
10
10
|
import { applyOfficialModelMetadataCorrections, getSupplementalModels, init_model_supplements } from "./model-supplements.js";
|
|
11
11
|
import { getProviderRegistry, init_plugin_registry } from "./plugin-registry.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { init_paths_state, resolveXopcCloudCatalogCachePath } from "../config/paths-state.js";
|
|
3
|
-
import { ComputerProfileSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
|
|
4
3
|
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
4
|
+
import { ComputerProfileSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
|
|
5
5
|
import { voiceManifestSchema } from "../../packages/realtime-protocol/src/voice-catalog.js";
|
|
6
6
|
import { init_voice } from "../../packages/realtime-protocol/src/voice.js";
|
|
7
7
|
import { readFileSync, rmSync } from "node:fs";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { createLogger } from "../utils/logger/index.js";
|
|
3
3
|
import { init_logger } from "../utils/logger.js";
|
|
4
|
-
import { init_resolve_config_value, resolveConfigValue, resolveHeaders } from "../config/resolve-config-value.js";
|
|
5
4
|
import { resolveModelsJsonPath } from "../config/paths.js";
|
|
5
|
+
import { init_resolve_config_value, resolveConfigValue, resolveHeaders } from "../config/resolve-config-value.js";
|
|
6
6
|
import { getDefaultModelValues, init_models_json, validateModelsConfig } from "../config/models-json.js";
|
|
7
7
|
import { getApiKeyFromEnv, init_env_keys } from "./env-keys.js";
|
|
8
8
|
import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-store.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-store.js";
|
|
3
2
|
import { getOAuthProviderDefinition, init_registry } from "../auth/oauth/registry.js";
|
|
3
|
+
import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-store.js";
|
|
4
4
|
import { XOPC_CLOUD_PROVIDER_ID, init_xopc_cloud_config, resolveXopcModelRouterUrl } from "./xopc-cloud-config.js";
|
|
5
5
|
//#region src/providers/register-runtime-providers.ts
|
|
6
6
|
function registerRuntimeProvider(modelRuntime, source) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type TurnOutcome } from '@xopcai/gateway-contract';
|
|
1
|
+
import { type TurnOutcome, type UserTurnDocument } from '@xopcai/gateway-contract';
|
|
2
2
|
import type { Message } from './types.js';
|
|
3
3
|
import type { TranscriptStoredRow } from './session-context-for-llm.js';
|
|
4
4
|
/** Transcript row for TUI and HTTP clients (flattened from persisted session messages). */
|
|
@@ -15,6 +15,7 @@ export interface ClientHistoryMessage {
|
|
|
15
15
|
/** Whitelisted display metadata; never includes source snapshot text. */
|
|
16
16
|
metadata?: {
|
|
17
17
|
sourceContexts?: Array<{
|
|
18
|
+
refId?: string;
|
|
18
19
|
kind: 'note' | 'task' | 'file' | 'session' | 'browser_tab' | 'browser_page' | 'mcp_resource';
|
|
19
20
|
sourceId: string;
|
|
20
21
|
version: string;
|
|
@@ -26,6 +27,7 @@ export interface ClientHistoryMessage {
|
|
|
26
27
|
documentId?: string;
|
|
27
28
|
fileKind?: 'file' | 'directory';
|
|
28
29
|
}>;
|
|
30
|
+
userTurnDocument?: UserTurnDocument;
|
|
29
31
|
turnOutcome?: TurnOutcome;
|
|
30
32
|
};
|
|
31
33
|
kind?: 'message' | 'compaction' | 'context' | 'bash' | 'custom' | 'branch';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { parseTurnOutcome } from "../../packages/gateway-contract/src/turn-outcome.js";
|
|
2
|
+
import { isUserTurnDocument } from "../../packages/gateway-contract/src/user-turn-document.js";
|
|
2
3
|
import { init_src } from "../../packages/gateway-contract/src/index.js";
|
|
3
4
|
import { stripRuntimeContextFromUserMessage } from "./user-message-display.js";
|
|
4
5
|
import { buildTranscriptOutline } from "./transcript-outline.js";
|
|
@@ -6,13 +7,16 @@ import { buildTranscriptOutline } from "./transcript-outline.js";
|
|
|
6
7
|
init_src();
|
|
7
8
|
function sourceContextDisplayMetadata(metadata) {
|
|
8
9
|
if (!metadata || typeof metadata !== "object" || Array.isArray(metadata)) return void 0;
|
|
9
|
-
const
|
|
10
|
-
|
|
10
|
+
const record = metadata;
|
|
11
|
+
const rows = record.sourceContexts;
|
|
12
|
+
const userTurnDocument = isUserTurnDocument(record.userTurnDocument) ? record.userTurnDocument : void 0;
|
|
13
|
+
if (!Array.isArray(rows)) return userTurnDocument ? { userTurnDocument } : void 0;
|
|
11
14
|
const sourceContexts = rows.flatMap((value) => {
|
|
12
15
|
if (!value || typeof value !== "object" || Array.isArray(value)) return [];
|
|
13
16
|
const row = value;
|
|
14
17
|
if (row.kind !== "note" && row.kind !== "task" && row.kind !== "file" && row.kind !== "session" && row.kind !== "browser_tab" && row.kind !== "browser_page" && row.kind !== "mcp_resource" || typeof row.sourceId !== "string" || typeof row.version !== "string" || typeof row.title !== "string") return [];
|
|
15
18
|
return [{
|
|
19
|
+
...typeof row.refId === "string" ? { refId: row.refId } : {},
|
|
16
20
|
kind: row.kind,
|
|
17
21
|
sourceId: row.sourceId,
|
|
18
22
|
version: row.version,
|
|
@@ -25,7 +29,10 @@ function sourceContextDisplayMetadata(metadata) {
|
|
|
25
29
|
...row.kind === "file" && (row.fileKind === "file" || row.fileKind === "directory") ? { fileKind: row.fileKind } : {}
|
|
26
30
|
}];
|
|
27
31
|
});
|
|
28
|
-
return sourceContexts.length ? {
|
|
32
|
+
return sourceContexts.length || userTurnDocument ? {
|
|
33
|
+
...sourceContexts.length ? { sourceContexts } : {},
|
|
34
|
+
...userTurnDocument ? { userTurnDocument } : {}
|
|
35
|
+
} : void 0;
|
|
29
36
|
}
|
|
30
37
|
function flattenMessageContent(content) {
|
|
31
38
|
if (typeof content === "string") return content;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { SessionIndex, type SessionIndexConfig } from './manager.js';
|
|
2
2
|
export { onSessionTranscriptUpdate, emitSessionTranscriptUpdate, type SessionTranscriptUpdate, } from './transcript-events.js';
|
|
3
3
|
export { SessionStore } from './store.js';
|
|
4
|
-
export type { SessionStoreOptions, ForkSessionAtTurnOptions, ForkSessionResult, } from './store.js';
|
|
4
|
+
export type { SessionStoreOptions, ForkSessionAtTurnOptions, ForkSessionResult, CreateSessionFromRowsOptions, } from './store.js';
|
|
5
5
|
export { SessionConfigStore, resolveThinkingLevel, resolveReasoningLevel, resolveVerboseLevel } from './config-store.js';
|
|
6
6
|
export { DEFAULT_ACTIVITY_DETAIL_LEVEL, resolveConfiguredActivityDetailDefault, resolveEffectiveThinkingLevel, resolveEffectiveReasoningLevel, } from './thinking-resolve.js';
|
|
7
7
|
export type { SessionAgentConfig } from './config-types.js';
|
|
@@ -83,6 +83,10 @@ export declare class SessionIndex extends EventEmitter {
|
|
|
83
83
|
conversationId: string;
|
|
84
84
|
rowCount: number;
|
|
85
85
|
}>;
|
|
86
|
+
createSessionFromRows(options: import('./store.js').CreateSessionFromRowsOptions): Promise<{
|
|
87
|
+
conversationId: string;
|
|
88
|
+
rowCount: number;
|
|
89
|
+
}>;
|
|
86
90
|
forkSessionRows(sourceKey: string, targetKey: string, options?: {
|
|
87
91
|
throughRow?: number;
|
|
88
92
|
}): Promise<{
|
|
@@ -165,6 +165,12 @@ var SessionIndex = class extends EventEmitter$1 {
|
|
|
165
165
|
if (metadata) this.emit("sessionCreated", metadata);
|
|
166
166
|
return result;
|
|
167
167
|
}
|
|
168
|
+
async createSessionFromRows(options) {
|
|
169
|
+
const result = await this.store.createSessionFromRows(options);
|
|
170
|
+
const metadata = await this.store.getMetadata(result.conversationId);
|
|
171
|
+
if (metadata) this.emit("sessionCreated", metadata);
|
|
172
|
+
return result;
|
|
173
|
+
}
|
|
168
174
|
async forkSessionRows(sourceKey, targetKey, options = {}) {
|
|
169
175
|
const result = await this.store.forkSessionRows(sourceKey, targetKey, options);
|
|
170
176
|
const metadata = await this.store.getMetadata(result.conversationId);
|
|
@@ -17,6 +17,16 @@ export interface XopcTranscriptContextEntry {
|
|
|
17
17
|
data?: Record<string, unknown>;
|
|
18
18
|
createdAt?: string;
|
|
19
19
|
}
|
|
20
|
+
/** Immutable hidden context captured when an ephemeral side chat becomes a session. */
|
|
21
|
+
export interface XopcTranscriptSideChatOriginEntry {
|
|
22
|
+
type: 'side_chat_origin';
|
|
23
|
+
version: 1;
|
|
24
|
+
parentConversationId: string;
|
|
25
|
+
parentTranscriptId: string;
|
|
26
|
+
createdAt: string;
|
|
27
|
+
contentHash: string;
|
|
28
|
+
contextMessages: AgentMessage[];
|
|
29
|
+
}
|
|
20
30
|
/** Persisted-only row for replaying local shell executions in clients. */
|
|
21
31
|
export interface XopcTranscriptBashExecutionEntry {
|
|
22
32
|
role: 'bashExecution';
|
|
@@ -119,8 +129,9 @@ export interface XopcTranscriptSessionInfoEntry {
|
|
|
119
129
|
name?: string;
|
|
120
130
|
timestamp?: string | number;
|
|
121
131
|
}
|
|
122
|
-
export type TranscriptStoredRow = AgentMessage | XopcTranscriptContextEntry | XopcTranscriptBashExecutionEntry | XopcTranscriptCustomMessageEntry | XopcTranscriptCustomMessageFileEntry | XopcTranscriptCustomStateEntry | XopcTranscriptBranchSummaryEntry | XopcTranscriptCompactionSummaryEntry | XopcTranscriptCompactionEntry | XopcTranscriptLabelEntry | XopcTranscriptThinkingLevelChangeEntry | XopcTranscriptModelChangeEntry | XopcTranscriptSessionInfoEntry;
|
|
132
|
+
export type TranscriptStoredRow = AgentMessage | XopcTranscriptContextEntry | XopcTranscriptSideChatOriginEntry | XopcTranscriptBashExecutionEntry | XopcTranscriptCustomMessageEntry | XopcTranscriptCustomMessageFileEntry | XopcTranscriptCustomStateEntry | XopcTranscriptBranchSummaryEntry | XopcTranscriptCompactionSummaryEntry | XopcTranscriptCompactionEntry | XopcTranscriptLabelEntry | XopcTranscriptThinkingLevelChangeEntry | XopcTranscriptModelChangeEntry | XopcTranscriptSessionInfoEntry;
|
|
123
133
|
export declare function isTranscriptContextEntry(x: unknown): x is XopcTranscriptContextEntry;
|
|
134
|
+
export declare function isTranscriptSideChatOriginEntry(x: unknown): x is XopcTranscriptSideChatOriginEntry;
|
|
124
135
|
export declare function isTranscriptBashExecutionEntry(x: unknown): x is XopcTranscriptBashExecutionEntry;
|
|
125
136
|
export declare function isTranscriptCustomMessageEntry(x: unknown): x is XopcTranscriptCustomMessageEntry | XopcTranscriptCustomMessageFileEntry;
|
|
126
137
|
export declare function isTranscriptCustomStateEntry(x: unknown): x is XopcTranscriptCustomStateEntry;
|
|
@@ -6,6 +6,11 @@ function isTranscriptContextEntry(x) {
|
|
|
6
6
|
if (!x || typeof x !== "object") return false;
|
|
7
7
|
return x.kind === "context";
|
|
8
8
|
}
|
|
9
|
+
function isTranscriptSideChatOriginEntry(x) {
|
|
10
|
+
if (!x || typeof x !== "object") return false;
|
|
11
|
+
const row = x;
|
|
12
|
+
return row.type === "side_chat_origin" && row.version === 1 && typeof row.parentConversationId === "string" && typeof row.parentTranscriptId === "string" && typeof row.createdAt === "string" && typeof row.contentHash === "string" && Array.isArray(row.contextMessages) && row.contextMessages.every(isLikelyAgentMessage);
|
|
13
|
+
}
|
|
9
14
|
function isTranscriptBashExecutionEntry(x) {
|
|
10
15
|
if (!x || typeof x !== "object") return false;
|
|
11
16
|
return x.role === "bashExecution";
|
|
@@ -228,6 +233,10 @@ function sanitizeToolPairs(messages) {
|
|
|
228
233
|
function transcriptRowsFromJsonArray(arr) {
|
|
229
234
|
const out = [];
|
|
230
235
|
for (const x of arr) {
|
|
236
|
+
if (isTranscriptSideChatOriginEntry(x)) {
|
|
237
|
+
out.push(x);
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
231
240
|
if (isTranscriptContextEntry(x)) {
|
|
232
241
|
out.push(x);
|
|
233
242
|
continue;
|
|
@@ -268,6 +277,11 @@ function transcriptRowsFromJsonArray(arr) {
|
|
|
268
277
|
function buildSessionContextForLlm(rows) {
|
|
269
278
|
const out = [];
|
|
270
279
|
for (const r of rows) {
|
|
280
|
+
if (isTranscriptSideChatOriginEntry(r)) {
|
|
281
|
+
out.length = 0;
|
|
282
|
+
out.push(...r.contextMessages);
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
271
285
|
if (isTranscriptCompactionEntry(r)) {
|
|
272
286
|
out.length = 0;
|
|
273
287
|
out.push(...r.messages);
|
|
@@ -315,7 +329,7 @@ function buildSessionDisplayMessages(rows) {
|
|
|
315
329
|
function mergeLlmMessagesPreservingContextRows(prevRows, llmMessages) {
|
|
316
330
|
let i = 0;
|
|
317
331
|
const out = [];
|
|
318
|
-
for (const r of prevRows) if (isTranscriptContextEntry(r) || isTranscriptBashExecutionEntry(r) || isTranscriptCustomMessageEntry(r) || isTranscriptCustomStateEntry(r) || isTranscriptSummaryMessageEntry(r) || isTranscriptLabelEntry(r) || isTranscriptMetadataEntry(r)) out.push(r);
|
|
332
|
+
for (const r of prevRows) if (isTranscriptContextEntry(r) || isTranscriptSideChatOriginEntry(r) || isTranscriptBashExecutionEntry(r) || isTranscriptCustomMessageEntry(r) || isTranscriptCustomStateEntry(r) || isTranscriptSummaryMessageEntry(r) || isTranscriptLabelEntry(r) || isTranscriptMetadataEntry(r)) out.push(r);
|
|
319
333
|
else if (i < llmMessages.length) {
|
|
320
334
|
out.push(llmMessages[i]);
|
|
321
335
|
i += 1;
|
|
@@ -340,4 +354,4 @@ var init_session_context_for_llm = __esmMin((() => {
|
|
|
340
354
|
}));
|
|
341
355
|
//#endregion
|
|
342
356
|
init_session_context_for_llm();
|
|
343
|
-
export { buildSessionContextForLlm, buildSessionDisplayMessages, init_session_context_for_llm, isRuntimeOnlyTranscriptMessage, isTranscriptBashExecutionEntry, isTranscriptCompactionEntry, isTranscriptContextEntry, isTranscriptCustomMessageEntry, isTranscriptCustomStateEntry, isTranscriptLabelEntry, isTranscriptMetadataEntry, isTranscriptSummaryMessageEntry, mergeLlmMessagesPreservingContextRows, transcriptRowsFromJsonArray };
|
|
357
|
+
export { buildSessionContextForLlm, buildSessionDisplayMessages, init_session_context_for_llm, isRuntimeOnlyTranscriptMessage, isTranscriptBashExecutionEntry, isTranscriptCompactionEntry, isTranscriptContextEntry, isTranscriptCustomMessageEntry, isTranscriptCustomStateEntry, isTranscriptLabelEntry, isTranscriptMetadataEntry, isTranscriptSideChatOriginEntry, isTranscriptSummaryMessageEntry, mergeLlmMessagesPreservingContextRows, transcriptRowsFromJsonArray };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AgentMessage } from '@earendil-works/pi-agent-core';
|
|
2
2
|
import type { Api, Model } from '@earendil-works/pi-ai/compat';
|
|
3
3
|
import type { Config } from '../config/schema.js';
|
|
4
|
+
import type { SessionAgentConfig } from './config-types.js';
|
|
4
5
|
import { type CompactionConfig, type CompactionExecutionOptions, type CompactionResult } from '../agent/memory/compaction.js';
|
|
5
6
|
import { type WindowConfig } from '../agent/memory/window.js';
|
|
6
7
|
import { type SessionMetadataSeed } from '../storage/sqlite/index.js';
|
|
@@ -38,6 +39,15 @@ export interface ForkSessionResult {
|
|
|
38
39
|
rowCount: number;
|
|
39
40
|
lastTurnId?: string;
|
|
40
41
|
}
|
|
42
|
+
export interface CreateSessionFromRowsOptions {
|
|
43
|
+
targetKey: string;
|
|
44
|
+
cwd: string;
|
|
45
|
+
metadata: SessionMetadataSeed & {
|
|
46
|
+
agentId: string;
|
|
47
|
+
};
|
|
48
|
+
rows: TranscriptStoredRow[];
|
|
49
|
+
config?: SessionAgentConfig;
|
|
50
|
+
}
|
|
41
51
|
export declare class SessionStore {
|
|
42
52
|
private options;
|
|
43
53
|
private window;
|
|
@@ -193,6 +203,10 @@ export declare class SessionStore {
|
|
|
193
203
|
conversationId: string;
|
|
194
204
|
rowCount: number;
|
|
195
205
|
}>;
|
|
206
|
+
createSessionFromRows(options: CreateSessionFromRowsOptions): Promise<{
|
|
207
|
+
conversationId: string;
|
|
208
|
+
rowCount: number;
|
|
209
|
+
}>;
|
|
196
210
|
forkSessionRows(sourceKey: string, targetKey: string, options?: {
|
|
197
211
|
throughRow?: number;
|
|
198
212
|
}): Promise<{
|
|
@@ -701,6 +701,23 @@ var SessionStore = class {
|
|
|
701
701
|
async forkSession(sourceKey, targetKey) {
|
|
702
702
|
return this.forkSessionRows(sourceKey, targetKey);
|
|
703
703
|
}
|
|
704
|
+
async createSessionFromRows(options) {
|
|
705
|
+
return this.runStoreMutation(async () => {
|
|
706
|
+
requireXopcDatabase();
|
|
707
|
+
if (!options.targetKey.trim()) throw new Error("Target session key is required");
|
|
708
|
+
if (options.rows.length === 0) throw new Error("Session transcript cannot be empty");
|
|
709
|
+
return runSqliteWriteTransaction(() => {
|
|
710
|
+
if (getSessionMetadata(options.targetKey)) throw new Error(`Target session already exists: ${options.targetKey}`);
|
|
711
|
+
ensureSessionRecord(options.targetKey, options.cwd, options.metadata);
|
|
712
|
+
replaceTranscriptRows(options.targetKey, options.rows);
|
|
713
|
+
if (options.config) setSessionConfig(options.targetKey, options.config, options.cwd);
|
|
714
|
+
return {
|
|
715
|
+
conversationId: options.targetKey,
|
|
716
|
+
rowCount: options.rows.length
|
|
717
|
+
};
|
|
718
|
+
});
|
|
719
|
+
});
|
|
720
|
+
}
|
|
704
721
|
async forkSessionRows(sourceKey, targetKey, options = {}) {
|
|
705
722
|
return this.runStoreMutation(async () => {
|
|
706
723
|
requireXopcDatabase();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { init_voice_transcript, voiceTranscriptMessage } from "./voice-transcript.js";
|
|
2
|
-
import { init_session_context_for_llm, isTranscriptContextEntry, isTranscriptCustomMessageEntry, isTranscriptCustomStateEntry } from "./session-context-for-llm.js";
|
|
2
|
+
import { init_session_context_for_llm, isTranscriptContextEntry, isTranscriptCustomMessageEntry, isTranscriptCustomStateEntry, isTranscriptSideChatOriginEntry } from "./session-context-for-llm.js";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { CURRENT_SESSION_VERSION } from "@earendil-works/pi-coding-agent";
|
|
5
5
|
//#region src/session/stored-rows-to-file-entries.ts
|
|
@@ -88,6 +88,15 @@ function storedRowsToFileEntries(params) {
|
|
|
88
88
|
}];
|
|
89
89
|
let parentId = null;
|
|
90
90
|
for (const row of params.rows) {
|
|
91
|
+
if (isTranscriptSideChatOriginEntry(row)) {
|
|
92
|
+
for (const message of row.contextMessages) {
|
|
93
|
+
const entry = agentMessageToEntry(message, parentId, byId);
|
|
94
|
+
byId.add(entry.id);
|
|
95
|
+
entries.push(entry);
|
|
96
|
+
parentId = entry.id;
|
|
97
|
+
}
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
91
100
|
if (isTranscriptContextEntry(row)) {
|
|
92
101
|
const entry = contextRowToCustomEntry(row, parentId, byId);
|
|
93
102
|
byId.add(entry.id);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { init_session_context_for_llm, isTranscriptBashExecutionEntry, isTranscriptContextEntry, isTranscriptCustomMessageEntry, isTranscriptLabelEntry, isTranscriptMetadataEntry, isTranscriptSummaryMessageEntry } from "./session-context-for-llm.js";
|
|
1
|
+
import { init_session_context_for_llm, isTranscriptBashExecutionEntry, isTranscriptContextEntry, isTranscriptCustomMessageEntry, isTranscriptLabelEntry, isTranscriptMetadataEntry, isTranscriptSideChatOriginEntry, isTranscriptSummaryMessageEntry } from "./session-context-for-llm.js";
|
|
2
2
|
import { stripRuntimeContextFromUserMessage } from "./user-message-display.js";
|
|
3
3
|
//#region src/session/transcript-outline.ts
|
|
4
4
|
init_session_context_for_llm();
|
|
@@ -152,6 +152,7 @@ function messageLabel(row) {
|
|
|
152
152
|
return role;
|
|
153
153
|
}
|
|
154
154
|
function rowPreview(row) {
|
|
155
|
+
if (isTranscriptSideChatOriginEntry(row)) return "Side chat parent context";
|
|
155
156
|
if (isTranscriptContextEntry(row)) return truncateText(row.text ?? JSON.stringify(row.data ?? {}));
|
|
156
157
|
if (isTranscriptLabelEntry(row)) return truncateText(row.label ? `label: ${row.label}` : "label cleared");
|
|
157
158
|
if (isTranscriptMetadataEntry(row)) {
|
|
@@ -182,6 +183,7 @@ function rowPreview(row) {
|
|
|
182
183
|
return preview;
|
|
183
184
|
}
|
|
184
185
|
function rowContentText(row) {
|
|
186
|
+
if (isTranscriptSideChatOriginEntry(row)) return "Side chat parent context";
|
|
185
187
|
if (isTranscriptContextEntry(row)) return row.text;
|
|
186
188
|
if (isTranscriptLabelEntry(row)) return row.label;
|
|
187
189
|
if (isTranscriptMetadataEntry(row)) {
|
|
@@ -223,6 +225,7 @@ function titleForEntry(params) {
|
|
|
223
225
|
return params.label;
|
|
224
226
|
}
|
|
225
227
|
function isDisplayMessageRow(row) {
|
|
228
|
+
if (isTranscriptSideChatOriginEntry(row)) return false;
|
|
226
229
|
if (isTranscriptContextEntry(row)) return false;
|
|
227
230
|
if (isTranscriptLabelEntry(row)) return false;
|
|
228
231
|
if (isTranscriptMetadataEntry(row)) return false;
|
|
@@ -260,7 +263,7 @@ function displayIndexForRow(params) {
|
|
|
260
263
|
function classifyRow(params) {
|
|
261
264
|
const { row, label, role, toolCall } = params;
|
|
262
265
|
const record = asRecord(row);
|
|
263
|
-
if (isTranscriptContextEntry(row) || isTranscriptLabelEntry(row) || isTranscriptMetadataEntry(row)) return {
|
|
266
|
+
if (isTranscriptSideChatOriginEntry(row) || isTranscriptContextEntry(row) || isTranscriptLabelEntry(row) || isTranscriptMetadataEntry(row)) return {
|
|
264
267
|
kind: "context",
|
|
265
268
|
files: []
|
|
266
269
|
};
|
|
@@ -310,7 +313,11 @@ function buildTranscriptOutline(rows) {
|
|
|
310
313
|
let role;
|
|
311
314
|
let toolCallPreview;
|
|
312
315
|
let toolCall;
|
|
313
|
-
if (
|
|
316
|
+
if (isTranscriptSideChatOriginEntry(row)) {
|
|
317
|
+
label = "side-chat-origin";
|
|
318
|
+
parentId = currentTurnId;
|
|
319
|
+
depth = currentTurnId ? 1 : 0;
|
|
320
|
+
} else if (isTranscriptContextEntry(row)) {
|
|
314
321
|
label = "context";
|
|
315
322
|
parentId = currentTurnId;
|
|
316
323
|
depth = currentTurnId ? 1 : 0;
|
|
@@ -247,7 +247,10 @@ function connectionBindings(conversationId) {
|
|
|
247
247
|
const account = getConnectorAccount(id);
|
|
248
248
|
return [{
|
|
249
249
|
key: `${connectorId}:${id}`,
|
|
250
|
-
|
|
250
|
+
target: {
|
|
251
|
+
type: "connector",
|
|
252
|
+
connectorId
|
|
253
|
+
},
|
|
251
254
|
accountId: id,
|
|
252
255
|
connectionId: account?.currentConnectionId,
|
|
253
256
|
label: account?.label ?? connectorId,
|
|
@@ -262,7 +265,10 @@ function connectionBindings(conversationId) {
|
|
|
262
265
|
WHERE conversation_id = ? AND transcript_id = ? AND objective_id = ?`).all(conversationId, readCurrentTranscriptId(getSqliteDatabase(), conversationId) ?? "", wait?.objectiveId ?? input.id);
|
|
263
266
|
return (wait?.needs ?? stored.map((row) => ({
|
|
264
267
|
key: `${row.connector_id}:${row.account_id}`,
|
|
265
|
-
|
|
268
|
+
target: {
|
|
269
|
+
type: "connector",
|
|
270
|
+
connectorId: row.connector_id
|
|
271
|
+
},
|
|
266
272
|
accountId: row.account_id,
|
|
267
273
|
label: getConnectorAccount(row.account_id)?.label ?? row.connector_id,
|
|
268
274
|
capabilities: []
|
|
@@ -299,7 +305,7 @@ function bindObjectiveAccount(conversationId, connectorId, accountId) {
|
|
|
299
305
|
(conversation_id, transcript_id, objective_id, connector_id, account_id) VALUES (?, ?, ?, ?, ?)`).run(conversationId, readCurrentTranscriptId(db, conversationId) ?? "", wait?.objectiveId ?? input.id, connectorId, accountId);
|
|
300
306
|
}
|
|
301
307
|
function connectionBinding(conversationId, connectorId) {
|
|
302
|
-
const matches = connectionBindings(conversationId).filter((need) => need.connectorId === connectorId);
|
|
308
|
+
const matches = connectionBindings(conversationId).filter((need) => need.target.type === "connector" && need.target.connectorId === connectorId);
|
|
303
309
|
return matches.length === 1 ? matches[0].connectionId : void 0;
|
|
304
310
|
}
|
|
305
311
|
/** New input wins over an outstanding auto-resume intent, including an already queued resume. */
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
CREATE TABLE chat_previews (
|
|
2
|
+
preview_id TEXT PRIMARY KEY,
|
|
3
|
+
conversation_id TEXT NOT NULL REFERENCES sessions(conversation_id) ON DELETE CASCADE,
|
|
4
|
+
title TEXT NOT NULL,
|
|
5
|
+
preferred_height INTEGER NOT NULL CHECK (preferred_height BETWEEN 240 AND 720),
|
|
6
|
+
latest_revision TEXT NOT NULL CHECK (length(latest_revision) = 64),
|
|
7
|
+
created_at INTEGER NOT NULL,
|
|
8
|
+
updated_at INTEGER NOT NULL
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
CREATE INDEX idx_chat_previews_conversation_updated
|
|
12
|
+
ON chat_previews(conversation_id, updated_at DESC);
|
|
13
|
+
|
|
14
|
+
CREATE TABLE chat_preview_revisions (
|
|
15
|
+
preview_id TEXT NOT NULL REFERENCES chat_previews(preview_id) ON DELETE CASCADE,
|
|
16
|
+
source_hash TEXT NOT NULL CHECK (length(source_hash) = 64),
|
|
17
|
+
markup TEXT NOT NULL,
|
|
18
|
+
styles TEXT NOT NULL,
|
|
19
|
+
script TEXT NOT NULL,
|
|
20
|
+
promoted_app_id TEXT UNIQUE REFERENCES local_apps(app_id) ON DELETE SET NULL,
|
|
21
|
+
created_at INTEGER NOT NULL,
|
|
22
|
+
PRIMARY KEY (preview_id, source_hash)
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
CREATE INDEX idx_chat_preview_revisions_created
|
|
26
|
+
ON chat_preview_revisions(preview_id, created_at DESC);
|
|
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
|
|
|
3
3
|
/** Baseline schema version applied from schema.sql on first open. */
|
|
4
4
|
export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 165;
|
|
5
5
|
/** Latest schema version this release supports (increment when adding migrations). */
|
|
6
|
-
export declare const XOPC_DB_SCHEMA_VERSION =
|
|
6
|
+
export declare const XOPC_DB_SCHEMA_VERSION = 202;
|
|
7
7
|
export declare function resolveMigrationsDir(override?: string): string;
|
|
8
8
|
/**
|
|
9
9
|
* Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
|
|
@@ -57,7 +57,7 @@ function applySingleMigration(db, migration, discardOldScenes = false) {
|
|
|
57
57
|
*/
|
|
58
58
|
function applyPendingMigrations(db, options = {}) {
|
|
59
59
|
db.function("xopc_operation_id", () => currentOperationId() ?? null);
|
|
60
|
-
const targetVersion = options.targetVersion ??
|
|
60
|
+
const targetVersion = options.targetVersion ?? 202;
|
|
61
61
|
let currentVersion = readSchemaVersion(db);
|
|
62
62
|
if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
|
|
63
63
|
if (!options.migrationsDir && currentVersion < 165) throw new DatabaseSchemaTooOldError(currentVersion, 165);
|
|
@@ -95,7 +95,7 @@ function applyPendingMigrations(db, options = {}) {
|
|
|
95
95
|
}
|
|
96
96
|
/** Inspect schema version without mutating the database. */
|
|
97
97
|
function inspectSchemaMigrationStatus(db, options = {}) {
|
|
98
|
-
const appVersion = options.targetVersion ??
|
|
98
|
+
const appVersion = options.targetVersion ?? 202;
|
|
99
99
|
const dbVersion = readSchemaVersion(db);
|
|
100
100
|
if (dbVersion > appVersion) return {
|
|
101
101
|
dbVersion,
|
|
@@ -137,7 +137,7 @@ var init_runner = __esmMin((() => {
|
|
|
137
137
|
init_errors();
|
|
138
138
|
log = createLogger("Sqlite:Migrations");
|
|
139
139
|
XOPC_DB_BASELINE_SCHEMA_VERSION = 165;
|
|
140
|
-
XOPC_DB_SCHEMA_VERSION =
|
|
140
|
+
XOPC_DB_SCHEMA_VERSION = 202;
|
|
141
141
|
}));
|
|
142
142
|
//#endregion
|
|
143
143
|
init_runner();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __esmMin } from "../../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { init_session_context_for_llm, isTranscriptContextEntry } from "../../session/session-context-for-llm.js";
|
|
2
|
+
import { init_session_context_for_llm, isTranscriptContextEntry, isTranscriptSideChatOriginEntry } from "../../session/session-context-for-llm.js";
|
|
3
3
|
import "../../session/types.js";
|
|
4
4
|
import { buildDefaultSessionMetadata, init_session_metadata } from "./session-metadata.js";
|
|
5
5
|
//#region src/storage/sqlite/row-mappers.ts
|
|
@@ -121,6 +121,10 @@ function classifyStoredRow(row) {
|
|
|
121
121
|
entryKind: "context",
|
|
122
122
|
role: null
|
|
123
123
|
};
|
|
124
|
+
if (isTranscriptSideChatOriginEntry(row)) return {
|
|
125
|
+
entryKind: "context",
|
|
126
|
+
role: null
|
|
127
|
+
};
|
|
124
128
|
const record = row;
|
|
125
129
|
if (record.type === "compaction" || row.kind === "compaction") return {
|
|
126
130
|
entryKind: "compaction",
|
|
@@ -136,6 +140,7 @@ function extractFtsContent(row) {
|
|
|
136
140
|
const ctx = row;
|
|
137
141
|
return [ctx.text, ctx.id].filter(Boolean).join(" ");
|
|
138
142
|
}
|
|
143
|
+
if (isTranscriptSideChatOriginEntry(row)) return "";
|
|
139
144
|
return extractTextFromMessageContent(row.content);
|
|
140
145
|
}
|
|
141
146
|
function extractTextFromMessageContent(content) {
|
|
@@ -6,9 +6,9 @@ import { getSessionMetadata } from "../../storage/sqlite/session-read-repository
|
|
|
6
6
|
import "../../storage/sqlite/index.js";
|
|
7
7
|
import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
|
|
8
8
|
import { init_agent_scope, listAgentEntries, normalizeAgentId } from "../../agent/agent-scope.js";
|
|
9
|
-
import { loadConfig, saveConfig } from "../../config/loader.js";
|
|
10
9
|
import { createConversation, init_conversation_repository } from "../../storage/sqlite/conversation-repository.js";
|
|
11
10
|
import { init_agent_session_key, resolveAgentIdFromConversationId } from "../../routing/agent-session-key.js";
|
|
11
|
+
import { loadConfig, saveConfig } from "../../config/loader.js";
|
|
12
12
|
import { effectiveWorkspacePathForSession } from "../../session/session-workspace.js";
|
|
13
13
|
import { ProjectService } from "../../projects/project-service.js";
|
|
14
14
|
import { inferSuggestedProjectDefaultAgentId } from "../../projects/project-agent-suggestion.js";
|
|
@@ -2,9 +2,9 @@ import { closeXopcDatabase, isXopcDatabaseOpen, openXopcDatabase } from "../stor
|
|
|
2
2
|
import { TaskRepository } from "../tasks/task-repository.js";
|
|
3
3
|
import { getSessionMetadata } from "../storage/sqlite/session-read-repository.js";
|
|
4
4
|
import "../storage/sqlite/index.js";
|
|
5
|
+
import { init_agent_session_key, isValidAgentId, normalizeAgentId } from "../routing/agent-session-key.js";
|
|
5
6
|
import { resolveConfigPath } from "../config/paths.js";
|
|
6
7
|
import { loadConfig } from "../config/loader.js";
|
|
7
|
-
import { init_agent_session_key, isValidAgentId, normalizeAgentId } from "../routing/agent-session-key.js";
|
|
8
8
|
import { init_providers, providerSupportsOAuth } from "../providers/index.js";
|
|
9
9
|
import { ProjectService } from "../projects/project-service.js";
|
|
10
10
|
import { isValidProjectAgentId, normalizeProjectAgentId } from "../projects/project-agent.js";
|