@xopcai/xopc 0.0.6 → 0.0.11
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/extensions/weixin/src/api/api.js +1 -1
- package/dist/extensions/weixin/src/cdn/upload.js +1 -1
- package/dist/extensions/weixin/src/media/data-url.js +1 -1
- package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
- package/dist/gateway/static/root/assets/{agents-B6s2BvpH.js → agents-BdC4Y-HX.js} +2 -2
- package/dist/gateway/static/root/assets/agents-BdC4Y-HX.js.map +1 -0
- package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js → apps-page-C-oaSHkm.js} +2 -2
- package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js.map → apps-page-C-oaSHkm.js.map} +1 -1
- package/dist/gateway/static/root/assets/attachment-load-BDDlItdE.js +1 -0
- package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js → channels-settings-BqEUppPO.js} +2 -2
- package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js.map → channels-settings-BqEUppPO.js.map} +1 -1
- package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js → chat-agents-api-BhqjQ7iL.js} +2 -2
- package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js.map → chat-agents-api-BhqjQ7iL.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js → cron-page-Cli49RKR.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js.map → cron-page-Cli49RKR.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js → cron-utils-Dkj-Ldpf.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js.map → cron-utils-Dkj-Ldpf.js.map} +1 -1
- package/dist/gateway/static/root/assets/electron-env-BDtJw9AY.js +2 -0
- package/dist/gateway/static/root/assets/electron-env-BDtJw9AY.js.map +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js → extension-debug-page-BMcZlaxF.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js.map → extension-debug-page-BMcZlaxF.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js → extension-iframe-host-D5HEF0KR.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js.map → extension-iframe-host-D5HEF0KR.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js → extension-page-CXdCSSPl.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js.map → extension-page-CXdCSSPl.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js → extension-provider-DZCZgQE2.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js.map → extension-provider-DZCZgQE2.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js → extension-settings-page-CX6STpx3.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js.map → extension-settings-page-CX6STpx3.js.map} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js → gateway-config-swr-Cph02QZn.js} +2 -2
- package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js.map → gateway-config-swr-Cph02QZn.js.map} +1 -1
- package/dist/gateway/static/root/assets/index-Bty3m0mS.css +2 -0
- package/dist/gateway/static/root/assets/index-iTUyfzNr.js +16 -0
- package/dist/gateway/static/root/assets/index-iTUyfzNr.js.map +1 -0
- package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js → logs-page-B9O5l3I8.js} +2 -2
- package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js.map → logs-page-B9O5l3I8.js.map} +1 -1
- package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js → model-selector-BLiY_O25.js} +2 -2
- package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js.map → model-selector-BLiY_O25.js.map} +1 -1
- package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js +2 -0
- package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js.map +1 -0
- package/dist/gateway/static/root/assets/page-header-store-BFpnFTed.js +2 -0
- package/dist/gateway/static/root/assets/{page-header-store-HcRZK5CZ.js.map → page-header-store-BFpnFTed.js.map} +1 -1
- package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js → session-api-DEhQXWJg.js} +2 -2
- package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js.map → session-api-DEhQXWJg.js.map} +1 -1
- package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js → session-working-directory-control-DKOtWs3-.js} +3 -3
- package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js.map → session-working-directory-control-DKOtWs3-.js.map} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js → sessions-page-BYlWP1ep.js} +2 -2
- package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js.map → sessions-page-BYlWP1ep.js.map} +1 -1
- package/dist/gateway/static/root/assets/settings-page-oCnIavdg.js +2 -0
- package/dist/gateway/static/root/assets/settings-page-oCnIavdg.js.map +1 -0
- package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js → skill-api-DWrn8Az0.js} +2 -2
- package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js.map → skill-api-DWrn8Az0.js.map} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js → skills-page-C59WQpM1.js} +2 -2
- package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js.map → skills-page-C59WQpM1.js.map} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js → theme-store-CywXkKml.js} +2 -2
- package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js.map → theme-store-CywXkKml.js.map} +1 -1
- package/dist/gateway/static/root/assets/url-D7yWllI8.js +2 -0
- package/dist/gateway/static/root/assets/url-D7yWllI8.js.map +1 -0
- package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js → useTranslation-CACj0DBJ.js} +2 -2
- package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js.map → useTranslation-CACj0DBJ.js.map} +1 -1
- package/dist/gateway/static/root/index.html +16 -16
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +1 -0
- package/dist/src/agent/agent-manager.js +17 -9
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/background-review/run-background-review.js +2 -0
- package/dist/src/agent/background-review/run-background-review.js.map +1 -1
- package/dist/src/agent/child-agent-factory.js +2 -0
- package/dist/src/agent/child-agent-factory.js.map +1 -1
- package/dist/src/agent/context/expand-at-file-mentions.d.ts +4 -0
- package/dist/src/agent/context/expand-at-file-mentions.js +69 -0
- package/dist/src/agent/context/expand-at-file-mentions.js.map +1 -0
- package/dist/src/agent/context/workspace-seed.js +1 -1
- package/dist/src/agent/image/index.d.ts +0 -1
- package/dist/src/agent/image/index.js +1 -2
- package/dist/src/agent/image/understanding/pi-ai-provider.js.map +1 -1
- package/dist/src/agent/ipc/inbox.js +1 -1
- package/dist/src/agent/ipc/socket.js +1 -1
- package/dist/src/agent/memory/compaction.d.ts +1 -1
- package/dist/src/agent/memory/compaction.js +38 -11
- package/dist/src/agent/memory/compaction.js.map +1 -1
- package/dist/src/agent/memory/plugin-discovery.js +1 -1
- package/dist/src/agent/messaging/command-handler.d.ts +13 -0
- package/dist/src/agent/messaging/command-handler.js +14 -2
- package/dist/src/agent/messaging/command-handler.js.map +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js +6 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
- package/dist/src/agent/service.d.ts +16 -1
- package/dist/src/agent/service.js +175 -17
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/skills/format-skills-prompt.js.map +1 -1
- package/dist/src/agent/skills/hub-hash.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +1 -1
- package/dist/src/agent/skills/scanner.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js.map +1 -1
- package/dist/src/agent/tools/browser/tools.js +2 -2
- package/dist/src/agent/tools/browser/tools.js.map +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +1 -1
- package/dist/src/agent/tools/image-tool.js +2 -2
- package/dist/src/agent/tools/image-tool.js.map +1 -1
- package/dist/src/agent/tools/index.d.ts +1 -1
- package/dist/src/agent/tools/index.js +2 -2
- package/dist/src/agent/tools/read.d.ts +0 -2
- package/dist/src/agent/tools/read.js +1 -3
- package/dist/src/agent/tools/read.js.map +1 -1
- package/dist/src/agent/tools/skill-manage-tool.js +1 -1
- package/dist/src/agent/tools/write.js +1 -1
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/channels/attachments/inbound-persist.js +1 -1
- package/dist/src/channels/attachments/outbound-tts-persist.js +1 -1
- package/dist/src/channels/index.d.ts +1 -1
- package/dist/src/channels/index.js +2 -2
- package/dist/src/channels/pipeline.d.ts +8 -1
- package/dist/src/channels/pipeline.js +49 -4
- package/dist/src/channels/pipeline.js.map +1 -1
- package/dist/src/channels/plugin-types.d.ts +14 -0
- package/dist/src/chat-commands/builtins/config.d.ts +4 -0
- package/dist/src/chat-commands/builtins/config.js +197 -0
- package/dist/src/chat-commands/builtins/config.js.map +1 -0
- package/dist/src/chat-commands/builtins/context.d.ts +4 -0
- package/dist/src/chat-commands/builtins/context.js +44 -0
- package/dist/src/chat-commands/builtins/context.js.map +1 -0
- package/dist/src/chat-commands/builtins/session.js +111 -0
- package/dist/src/chat-commands/builtins/session.js.map +1 -1
- package/dist/src/chat-commands/builtins/thinking.js +49 -21
- package/dist/src/chat-commands/builtins/thinking.js.map +1 -1
- package/dist/src/chat-commands/config-paths.d.ts +10 -0
- package/dist/src/chat-commands/config-paths.js +45 -0
- package/dist/src/chat-commands/config-paths.js.map +1 -0
- package/dist/src/chat-commands/config-value.d.ts +12 -0
- package/dist/src/chat-commands/config-value.js +53 -0
- package/dist/src/chat-commands/config-value.js.map +1 -0
- package/dist/src/chat-commands/context.d.ts +24 -1
- package/dist/src/chat-commands/context.js +41 -0
- package/dist/src/chat-commands/context.js.map +1 -1
- package/dist/src/chat-commands/index.d.ts +2 -0
- package/dist/src/chat-commands/index.js +5 -1
- package/dist/src/chat-commands/index.js.map +1 -1
- package/dist/src/chat-commands/types.d.ts +33 -1
- package/dist/src/cli/commands/agent/interactive.js +1 -1
- package/dist/src/cli/commands/agent/interactive.js.map +1 -1
- package/dist/src/cli/commands/agent.js +21 -9
- package/dist/src/cli/commands/agent.js.map +1 -1
- package/dist/src/cli/commands/auth.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/channel-config.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/channel-config.js +113 -0
- package/dist/src/cli/commands/doctor/checks/channel-config.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/channel-plugins.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js +47 -0
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/config-health.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/config-health.js +82 -0
- package/dist/src/cli/commands/doctor/checks/config-health.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/cron-health.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/cron-health.js +116 -0
- package/dist/src/cli/commands/doctor/checks/cron-health.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/gateway-health.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/gateway-health.js +64 -0
- package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/gateway-service.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/gateway-service.js +64 -0
- package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/node-version.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/node-version.js +33 -0
- package/dist/src/cli/commands/doctor/checks/node-version.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/provider-auth.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +91 -0
- package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/security-audit.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/security-audit.js +85 -0
- package/dist/src/cli/commands/doctor/checks/security-audit.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/session-integrity.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +118 -0
- package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/state-integrity.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/state-integrity.js +99 -0
- package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/version-check.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/version-check.js +71 -0
- package/dist/src/cli/commands/doctor/checks/version-check.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/workspace-status.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/workspace-status.js +73 -0
- package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +1 -0
- package/dist/src/cli/commands/doctor/flow.d.ts +9 -0
- package/dist/src/cli/commands/doctor/flow.js +51 -0
- package/dist/src/cli/commands/doctor/flow.js.map +1 -0
- package/dist/src/cli/commands/doctor/format.d.ts +6 -0
- package/dist/src/cli/commands/doctor/format.js +61 -0
- package/dist/src/cli/commands/doctor/format.js.map +1 -0
- package/dist/src/cli/commands/doctor/index.js +44 -0
- package/dist/src/cli/commands/doctor/index.js.map +1 -0
- package/dist/src/cli/commands/doctor/types.d.ts +20 -0
- package/dist/src/cli/commands/doctor/types.js +1 -0
- package/dist/src/cli/commands/extension.js +10 -0
- package/dist/src/cli/commands/extension.js.map +1 -1
- package/dist/src/cli/commands/init.js +1 -2
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/session/utils.js.map +1 -1
- package/dist/src/cli/commands/update.d.ts +1 -0
- package/dist/src/cli/commands/update.js +171 -0
- package/dist/src/cli/commands/update.js.map +1 -0
- package/dist/src/cli/index.d.ts +2 -2
- package/dist/src/cli/index.js +4 -2
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/utils/init-workspace.js +1 -1
- package/dist/src/config/index.d.ts +1 -0
- package/dist/src/config/index.js +4 -3
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.d.ts +15 -15
- package/dist/src/config/paths.js.map +1 -1
- package/dist/src/config/profile.js +1 -1
- package/dist/src/config/runtime-overrides.d.ts +8 -0
- package/dist/src/config/runtime-overrides.js +40 -0
- package/dist/src/config/runtime-overrides.js.map +1 -0
- package/dist/src/config/schema.d.ts +34 -104
- package/dist/src/config/schema.js +18 -39
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/cron/persistence.js +1 -1
- package/dist/src/cron/run-log-store.js +1 -1
- package/dist/src/daemon/launchd.js +2 -2
- package/dist/src/daemon/launchd.js.map +1 -1
- package/dist/src/daemon/systemd.js +2 -2
- package/dist/src/daemon/systemd.js.map +1 -1
- package/dist/src/extensions/health.js +1 -1
- package/dist/src/extensions/loader.d.ts +1 -1
- package/dist/src/extensions/loader.js +5 -8
- package/dist/src/extensions/loader.js.map +1 -1
- package/dist/src/extensions/lockfile.js +1 -1
- package/dist/src/extensions/sdk/index.js +6 -1
- package/dist/src/extensions/sdk/index.js.map +1 -0
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/hono/lib/static-ui.js +1 -1
- package/dist/src/gateway/hono/oauth.js +1 -1
- package/dist/src/gateway/hono/routes/config.js +1 -1
- package/dist/src/gateway/hono/routes/doctor.d.ts +3 -0
- package/dist/src/gateway/hono/routes/doctor.js +35 -0
- package/dist/src/gateway/hono/routes/doctor.js.map +1 -0
- package/dist/src/gateway/hono/routes/index.js +4 -0
- package/dist/src/gateway/hono/routes/index.js.map +1 -1
- package/dist/src/gateway/hono/routes/models.js +64 -11
- package/dist/src/gateway/hono/routes/models.js.map +1 -1
- package/dist/src/gateway/hono/routes/public-gateway.js +10 -0
- package/dist/src/gateway/hono/routes/public-gateway.js.map +1 -1
- package/dist/src/gateway/hono/routes/update.d.ts +3 -0
- package/dist/src/gateway/hono/routes/update.js +141 -0
- package/dist/src/gateway/hono/routes/update.js.map +1 -0
- package/dist/src/gateway/hono/routes/workspace.js +82 -2
- package/dist/src/gateway/hono/routes/workspace.js.map +1 -1
- package/dist/src/gateway/lock.js +1 -1
- package/dist/src/gateway/ports.js +98 -3
- package/dist/src/gateway/ports.js.map +1 -1
- package/dist/src/gateway/service.d.ts +1 -4
- package/dist/src/gateway/service.js +13 -20
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/workspace-fs-file-list.d.ts +5 -0
- package/dist/src/gateway/workspace-fs-file-list.js +56 -0
- package/dist/src/gateway/workspace-fs-file-list.js.map +1 -0
- package/dist/src/gateway/workspace-heartbeat-path.js +1 -1
- package/dist/src/gateway/workspace-ripgrep.d.ts +5 -0
- package/dist/src/gateway/workspace-ripgrep.js +88 -4
- package/dist/src/gateway/workspace-ripgrep.js.map +1 -1
- package/dist/src/infra/update-channels.d.ts +14 -0
- package/dist/src/infra/update-channels.js +30 -0
- package/dist/src/infra/update-channels.js.map +1 -0
- package/dist/src/infra/update-check.d.ts +53 -0
- package/dist/src/infra/update-check.js +155 -0
- package/dist/src/infra/update-check.js.map +1 -0
- package/dist/src/infra/update-runner.d.ts +18 -0
- package/dist/src/infra/update-runner.js +112 -0
- package/dist/src/infra/update-runner.js.map +1 -0
- package/dist/src/infra/update-startup.d.ts +20 -0
- package/dist/src/infra/update-startup.js +246 -0
- package/dist/src/infra/update-startup.js.map +1 -0
- package/dist/src/providers/extension-stream-bridge.d.ts +3 -0
- package/dist/src/providers/extension-stream-bridge.js +239 -0
- package/dist/src/providers/extension-stream-bridge.js.map +1 -0
- package/dist/src/providers/index.d.ts +7 -2
- package/dist/src/providers/index.js +77 -14
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/providers/plugin-registry.js +92 -87
- package/dist/src/providers/plugin-registry.js.map +1 -1
- package/dist/src/routing/bindings.js +1 -1
- package/dist/src/routing/index.d.ts +1 -1
- package/dist/src/routing/index.js +2 -2
- package/dist/src/routing/index.js.map +1 -1
- package/dist/src/routing/resolve-route.js +1 -1
- package/dist/src/routing/session-key.d.ts +0 -5
- package/dist/src/routing/session-key.js +1 -27
- package/dist/src/routing/session-key.js.map +1 -1
- package/dist/src/session/chat-export.d.ts +5 -0
- package/dist/src/session/chat-export.js +35 -0
- package/dist/src/session/chat-export.js.map +1 -0
- package/dist/src/session/config-store.js +1 -1
- package/dist/src/session/manager.d.ts +1 -1
- package/dist/src/session/manager.js +2 -2
- package/dist/src/session/manager.js.map +1 -1
- package/dist/src/session/store.d.ts +1 -1
- package/dist/src/session/store.js +3 -7
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/session/types.d.ts +0 -10
- package/dist/src/session/types.js.map +1 -1
- package/dist/src/utils/logger/audit.js +1 -1
- package/dist/src/utils/logger/log-store.js +1 -1
- package/dist/src/utils/logger/rotation.js +1 -1
- package/dist/src/voice/tts/audio.js +1 -1
- package/package.json +2 -2
- package/dist/gateway/static/root/assets/agents-B6s2BvpH.js.map +0 -1
- package/dist/gateway/static/root/assets/attachment-load-6pRlDPZ8.js +0 -1
- package/dist/gateway/static/root/assets/index-DBZ5eXW5.js +0 -16
- package/dist/gateway/static/root/assets/index-DBZ5eXW5.js.map +0 -1
- package/dist/gateway/static/root/assets/index-KsVMH-Jo.css +0 -2
- package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js +0 -2
- package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js.map +0 -1
- package/dist/gateway/static/root/assets/page-header-store-HcRZK5CZ.js +0 -2
- package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js +0 -2
- package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js.map +0 -1
- package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js +0 -2
- package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js.map +0 -1
- package/dist/gateway/static/root/assets/url-QmwQTJ-j.js +0 -2
- package/dist/gateway/static/root/assets/url-QmwQTJ-j.js.map +0 -1
- package/dist/src/acp/commands.d.ts +0 -11
- package/dist/src/acp/commands.js +0 -17
- package/dist/src/acp/commands.js.map +0 -1
- package/dist/src/acp/control-plane/identity-reconcile.d.ts +0 -36
- package/dist/src/acp/control-plane/identity-reconcile.js +0 -124
- package/dist/src/acp/control-plane/identity-reconcile.js.map +0 -1
- package/dist/src/acp/control-plane/index.d.ts +0 -10
- package/dist/src/acp/control-plane/index.js +0 -6
- package/dist/src/acp/control-plane/manager.d.ts +0 -86
- package/dist/src/acp/control-plane/manager.js +0 -502
- package/dist/src/acp/control-plane/manager.js.map +0 -1
- package/dist/src/acp/control-plane/manager.types.d.ts +0 -125
- package/dist/src/acp/control-plane/manager.types.js +0 -14
- package/dist/src/acp/control-plane/manager.types.js.map +0 -1
- package/dist/src/acp/control-plane/manager.utils.d.ts +0 -29
- package/dist/src/acp/control-plane/manager.utils.js +0 -46
- package/dist/src/acp/control-plane/manager.utils.js.map +0 -1
- package/dist/src/acp/control-plane/runtime-cache-manager.d.ts +0 -49
- package/dist/src/acp/control-plane/runtime-cache-manager.js +0 -155
- package/dist/src/acp/control-plane/runtime-cache-manager.js.map +0 -1
- package/dist/src/acp/control-plane/runtime-cache.d.ts +0 -45
- package/dist/src/acp/control-plane/runtime-cache.js +0 -58
- package/dist/src/acp/control-plane/runtime-cache.js.map +0 -1
- package/dist/src/acp/control-plane/runtime-options.d.ts +0 -30
- package/dist/src/acp/control-plane/runtime-options.js +0 -92
- package/dist/src/acp/control-plane/runtime-options.js.map +0 -1
- package/dist/src/acp/control-plane/session-actor-queue.d.ts +0 -22
- package/dist/src/acp/control-plane/session-actor-queue.js +0 -70
- package/dist/src/acp/control-plane/session-actor-queue.js.map +0 -1
- package/dist/src/acp/control-plane/session-lifecycle-manager.d.ts +0 -59
- package/dist/src/acp/control-plane/session-lifecycle-manager.js +0 -209
- package/dist/src/acp/control-plane/session-lifecycle-manager.js.map +0 -1
- package/dist/src/acp/control-plane/session-store.d.ts +0 -39
- package/dist/src/acp/control-plane/session-store.js +0 -149
- package/dist/src/acp/control-plane/session-store.js.map +0 -1
- package/dist/src/acp/control-plane/turn-manager.d.ts +0 -40
- package/dist/src/acp/control-plane/turn-manager.js +0 -134
- package/dist/src/acp/control-plane/turn-manager.js.map +0 -1
- package/dist/src/acp/event-mapper.d.ts +0 -48
- package/dist/src/acp/event-mapper.js +0 -94
- package/dist/src/acp/event-mapper.js.map +0 -1
- package/dist/src/acp/index.d.ts +0 -10
- package/dist/src/acp/index.js +0 -5
- package/dist/src/acp/meta.d.ts +0 -15
- package/dist/src/acp/meta.js +0 -36
- package/dist/src/acp/meta.js.map +0 -1
- package/dist/src/acp/routing-integration.d.ts +0 -37
- package/dist/src/acp/routing-integration.js +0 -58
- package/dist/src/acp/routing-integration.js.map +0 -1
- package/dist/src/acp/runtime/backends/index.d.ts +0 -4
- package/dist/src/acp/runtime/backends/index.js +0 -2
- package/dist/src/acp/runtime/backends/local.d.ts +0 -136
- package/dist/src/acp/runtime/backends/local.js +0 -603
- package/dist/src/acp/runtime/backends/local.js.map +0 -1
- package/dist/src/acp/runtime/error-text.d.ts +0 -16
- package/dist/src/acp/runtime/error-text.js +0 -40
- package/dist/src/acp/runtime/error-text.js.map +0 -1
- package/dist/src/acp/runtime/errors.d.ts +0 -31
- package/dist/src/acp/runtime/errors.js +0 -47
- package/dist/src/acp/runtime/errors.js.map +0 -1
- package/dist/src/acp/runtime/index.d.ts +0 -7
- package/dist/src/acp/runtime/index.js +0 -4
- package/dist/src/acp/runtime/registry.d.ts +0 -35
- package/dist/src/acp/runtime/registry.js +0 -85
- package/dist/src/acp/runtime/registry.js.map +0 -1
- package/dist/src/acp/runtime/session-identity.d.ts +0 -35
- package/dist/src/acp/runtime/session-identity.js +0 -134
- package/dist/src/acp/runtime/session-identity.js.map +0 -1
- package/dist/src/acp/runtime/types.d.ts +0 -214
- package/dist/src/acp/secret-file.d.ts +0 -7
- package/dist/src/acp/secret-file.js +0 -19
- package/dist/src/acp/secret-file.js.map +0 -1
- package/dist/src/acp/server.d.ts +0 -48
- package/dist/src/acp/server.js +0 -300
- package/dist/src/acp/server.js.map +0 -1
- package/dist/src/acp/session.d.ts +0 -29
- package/dist/src/acp/session.js +0 -30
- package/dist/src/acp/session.js.map +0 -1
- package/dist/src/acp/types.d.ts +0 -39
- package/dist/src/acp/types.js +0 -13
- package/dist/src/acp/types.js.map +0 -1
- package/dist/src/agent/image/describe-images.d.ts +0 -18
- package/dist/src/agent/image/describe-images.js +0 -19
- package/dist/src/agent/image/describe-images.js.map +0 -1
- package/dist/src/cli/commands/acp.d.ts +0 -4
- package/dist/src/cli/commands/acp.js +0 -200
- package/dist/src/cli/commands/acp.js.map +0 -1
- /package/dist/src/{acp/runtime/types.js → cli/commands/doctor/index.d.ts} +0 -0
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ACP Runtime Error Text Localization
|
|
3
|
-
*
|
|
4
|
-
* Provides user-friendly error messages with actionable next steps.
|
|
5
|
-
*/
|
|
6
|
-
import { AcpRuntimeError, type AcpRuntimeErrorCode } from "../runtime/errors.js";
|
|
7
|
-
/** Format error for display with next step suggestion */
|
|
8
|
-
export declare function formatAcpErrorText(error: AcpRuntimeError): string;
|
|
9
|
-
/** Convert unknown error to formatted text */
|
|
10
|
-
export declare function toAcpErrorText(params: {
|
|
11
|
-
error: unknown;
|
|
12
|
-
fallbackCode: AcpRuntimeErrorCode;
|
|
13
|
-
fallbackMessage: string;
|
|
14
|
-
}): string;
|
|
15
|
-
/** Format error for logging (without user suggestions) */
|
|
16
|
-
export declare function formatAcpErrorLog(error: AcpRuntimeError): string;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { toAcpRuntimeError } from "./errors.js";
|
|
2
|
-
//#region src/acp/runtime/error-text.ts
|
|
3
|
-
/**
|
|
4
|
-
* ACP Runtime Error Text Localization
|
|
5
|
-
*
|
|
6
|
-
* Provides user-friendly error messages with actionable next steps.
|
|
7
|
-
*/
|
|
8
|
-
/** Get next step suggestion for an error */
|
|
9
|
-
function resolveErrorNextStep(error) {
|
|
10
|
-
switch (error.code) {
|
|
11
|
-
case "ACP_BACKEND_MISSING":
|
|
12
|
-
case "ACP_BACKEND_UNAVAILABLE": return "Run `acp doctor` to check backend status, install/enable the backend plugin, then retry.";
|
|
13
|
-
case "ACP_SESSION_INIT_FAILED": return "If this session is stale, recreate it with a new session key.";
|
|
14
|
-
case "ACP_BACKEND_UNSUPPORTED_CONTROL": return "This backend does not support that control; use a supported command or switch backend.";
|
|
15
|
-
case "ACP_TURN_FAILED": return "Retry the request, or cancel current turn and try again.";
|
|
16
|
-
default: return;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
/** Format error for display with next step suggestion */
|
|
20
|
-
function formatAcpErrorText(error) {
|
|
21
|
-
const next = resolveErrorNextStep(error);
|
|
22
|
-
if (!next) return `ACP error (${error.code}): ${error.message}`;
|
|
23
|
-
return `ACP error (${error.code}): ${error.message}\n💡 ${next}`;
|
|
24
|
-
}
|
|
25
|
-
/** Convert unknown error to formatted text */
|
|
26
|
-
function toAcpErrorText(params) {
|
|
27
|
-
return formatAcpErrorText(toAcpRuntimeError({
|
|
28
|
-
error: params.error,
|
|
29
|
-
fallbackCode: params.fallbackCode,
|
|
30
|
-
fallbackMessage: params.fallbackMessage
|
|
31
|
-
}));
|
|
32
|
-
}
|
|
33
|
-
/** Format error for logging (without user suggestions) */
|
|
34
|
-
function formatAcpErrorLog(error) {
|
|
35
|
-
return `[${error.code}] ${error.message}`;
|
|
36
|
-
}
|
|
37
|
-
//#endregion
|
|
38
|
-
export { formatAcpErrorLog, formatAcpErrorText, toAcpErrorText };
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=error-text.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-text.js","names":[],"sources":["../../../../src/acp/runtime/error-text.ts"],"sourcesContent":["/**\n * ACP Runtime Error Text Localization\n *\n * Provides user-friendly error messages with actionable next steps.\n */\n\nimport { AcpRuntimeError, type AcpRuntimeErrorCode, toAcpRuntimeError } from \"../runtime/errors.js\";\n\n/** Get next step suggestion for an error */\nfunction resolveErrorNextStep(error: AcpRuntimeError): string | undefined {\n switch (error.code) {\n case \"ACP_BACKEND_MISSING\":\n case \"ACP_BACKEND_UNAVAILABLE\":\n return \"Run `acp doctor` to check backend status, install/enable the backend plugin, then retry.\";\n \n case \"ACP_SESSION_INIT_FAILED\":\n return \"If this session is stale, recreate it with a new session key.\";\n \n case \"ACP_BACKEND_UNSUPPORTED_CONTROL\":\n return \"This backend does not support that control; use a supported command or switch backend.\";\n \n case \"ACP_TURN_FAILED\":\n return \"Retry the request, or cancel current turn and try again.\";\n \n default:\n return undefined;\n }\n}\n\n/** Format error for display with next step suggestion */\nexport function formatAcpErrorText(error: AcpRuntimeError): string {\n const next = resolveErrorNextStep(error);\n if (!next) {\n return `ACP error (${error.code}): ${error.message}`;\n }\n return `ACP error (${error.code}): ${error.message}\\n💡 ${next}`;\n}\n\n/** Convert unknown error to formatted text */\nexport function toAcpErrorText(params: {\n error: unknown;\n fallbackCode: AcpRuntimeErrorCode;\n fallbackMessage: string;\n}): string {\n const error = toAcpRuntimeError({\n error: params.error,\n fallbackCode: params.fallbackCode,\n fallbackMessage: params.fallbackMessage,\n });\n return formatAcpErrorText(error);\n}\n\n/** Format error for logging (without user suggestions) */\nexport function formatAcpErrorLog(error: AcpRuntimeError): string {\n return `[${error.code}] ${error.message}`;\n}\n"],"mappings":";;;;;;;;AASA,SAAS,qBAAqB,OAA4C;AACxE,SAAQ,MAAM,MAAd;EACE,KAAK;EACL,KAAK,0BACH,QAAO;EAET,KAAK,0BACH,QAAO;EAET,KAAK,kCACH,QAAO;EAET,KAAK,kBACH,QAAO;EAET,QACE;;;;AAKN,SAAgB,mBAAmB,OAAgC;CACjE,MAAM,OAAO,qBAAqB,MAAM;AACxC,KAAI,CAAC,KACH,QAAO,cAAc,MAAM,KAAK,KAAK,MAAM;AAE7C,QAAO,cAAc,MAAM,KAAK,KAAK,MAAM,QAAQ,OAAO;;;AAI5D,SAAgB,eAAe,QAIpB;AAMT,QAAO,mBALO,kBAAkB;EAC9B,OAAO,OAAO;EACd,cAAc,OAAO;EACrB,iBAAiB,OAAO;EACzB,CAAC,CAC8B;;;AAIlC,SAAgB,kBAAkB,OAAgC;AAChE,QAAO,IAAI,MAAM,KAAK,IAAI,MAAM"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ACP Runtime Errors
|
|
3
|
-
*
|
|
4
|
-
* Error types for ACP runtime operations.
|
|
5
|
-
*/
|
|
6
|
-
/** ACP runtime error code */
|
|
7
|
-
export type AcpRuntimeErrorCode = "ACP_SESSION_INIT_FAILED" | "ACP_SESSION_RESET_FAILED" | "ACP_TURN_FAILED" | "ACP_BACKEND_MISSING" | "ACP_BACKEND_UNAVAILABLE" | "ACP_BACKEND_UNSUPPORTED_CONTROL";
|
|
8
|
-
/** ACP runtime error */
|
|
9
|
-
export declare class AcpRuntimeError extends Error {
|
|
10
|
-
readonly code: AcpRuntimeErrorCode;
|
|
11
|
-
constructor(code: AcpRuntimeErrorCode, message: string, options?: ErrorOptions);
|
|
12
|
-
}
|
|
13
|
-
/** Normalize string to a known ACP error code */
|
|
14
|
-
export declare function normalizeAcpErrorCode(code: string | undefined): AcpRuntimeErrorCode;
|
|
15
|
-
/** Wrap unknown errors as `AcpRuntimeError` */
|
|
16
|
-
export declare function toAcpRuntimeError(params: {
|
|
17
|
-
error: unknown;
|
|
18
|
-
fallbackCode: AcpRuntimeErrorCode;
|
|
19
|
-
fallbackMessage: string;
|
|
20
|
-
}): AcpRuntimeError;
|
|
21
|
-
/** Run async work and map failures to `AcpRuntimeError` */
|
|
22
|
-
export declare function withAcpRuntimeErrorBoundary<T>(params: {
|
|
23
|
-
run: () => Promise<T>;
|
|
24
|
-
fallbackCode: AcpRuntimeErrorCode;
|
|
25
|
-
fallbackMessage: string;
|
|
26
|
-
}): Promise<T>;
|
|
27
|
-
/** Build unsupported-control error */
|
|
28
|
-
export declare function createUnsupportedControlError(params: {
|
|
29
|
-
backend: string;
|
|
30
|
-
control: string;
|
|
31
|
-
}): AcpRuntimeError;
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
//#region src/acp/runtime/errors.ts
|
|
2
|
-
/** ACP runtime error */
|
|
3
|
-
var AcpRuntimeError = class extends Error {
|
|
4
|
-
constructor(code, message, options) {
|
|
5
|
-
super(message, options);
|
|
6
|
-
this.code = code;
|
|
7
|
-
this.name = "AcpRuntimeError";
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
/** Normalize string to a known ACP error code */
|
|
11
|
-
function normalizeAcpErrorCode(code) {
|
|
12
|
-
if (code && [
|
|
13
|
-
"ACP_SESSION_INIT_FAILED",
|
|
14
|
-
"ACP_SESSION_RESET_FAILED",
|
|
15
|
-
"ACP_TURN_FAILED",
|
|
16
|
-
"ACP_BACKEND_MISSING",
|
|
17
|
-
"ACP_BACKEND_UNAVAILABLE",
|
|
18
|
-
"ACP_BACKEND_UNSUPPORTED_CONTROL"
|
|
19
|
-
].includes(code)) return code;
|
|
20
|
-
return "ACP_TURN_FAILED";
|
|
21
|
-
}
|
|
22
|
-
/** Wrap unknown errors as `AcpRuntimeError` */
|
|
23
|
-
function toAcpRuntimeError(params) {
|
|
24
|
-
const { error, fallbackCode, fallbackMessage } = params;
|
|
25
|
-
if (error instanceof AcpRuntimeError) return error;
|
|
26
|
-
return new AcpRuntimeError(fallbackCode, error instanceof Error ? error.message : fallbackMessage, { cause: error instanceof Error ? error : void 0 });
|
|
27
|
-
}
|
|
28
|
-
/** Run async work and map failures to `AcpRuntimeError` */
|
|
29
|
-
async function withAcpRuntimeErrorBoundary(params) {
|
|
30
|
-
try {
|
|
31
|
-
return await params.run();
|
|
32
|
-
} catch (error) {
|
|
33
|
-
throw toAcpRuntimeError({
|
|
34
|
-
error,
|
|
35
|
-
fallbackCode: params.fallbackCode,
|
|
36
|
-
fallbackMessage: params.fallbackMessage
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/** Build unsupported-control error */
|
|
41
|
-
function createUnsupportedControlError(params) {
|
|
42
|
-
return new AcpRuntimeError("ACP_BACKEND_UNSUPPORTED_CONTROL", `ACP backend "${params.backend}" does not support control "${params.control}".`);
|
|
43
|
-
}
|
|
44
|
-
//#endregion
|
|
45
|
-
export { AcpRuntimeError, createUnsupportedControlError, normalizeAcpErrorCode, toAcpRuntimeError, withAcpRuntimeErrorBoundary };
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","names":[],"sources":["../../../../src/acp/runtime/errors.ts"],"sourcesContent":["/**\n * ACP Runtime Errors\n * \n * Error types for ACP runtime operations.\n */\n\n/** ACP runtime error code */\nexport type AcpRuntimeErrorCode =\n | \"ACP_SESSION_INIT_FAILED\"\n | \"ACP_SESSION_RESET_FAILED\"\n | \"ACP_TURN_FAILED\"\n | \"ACP_BACKEND_MISSING\"\n | \"ACP_BACKEND_UNAVAILABLE\"\n | \"ACP_BACKEND_UNSUPPORTED_CONTROL\";\n\n/** ACP runtime error */\nexport class AcpRuntimeError extends Error {\n constructor(\n public readonly code: AcpRuntimeErrorCode,\n message: string,\n options?: ErrorOptions,\n ) {\n super(message, options);\n this.name = \"AcpRuntimeError\";\n }\n}\n\n/** Normalize string to a known ACP error code */\nexport function normalizeAcpErrorCode(code: string | undefined): AcpRuntimeErrorCode {\n const validCodes: AcpRuntimeErrorCode[] = [\n \"ACP_SESSION_INIT_FAILED\",\n \"ACP_SESSION_RESET_FAILED\",\n \"ACP_TURN_FAILED\",\n \"ACP_BACKEND_MISSING\",\n \"ACP_BACKEND_UNAVAILABLE\",\n \"ACP_BACKEND_UNSUPPORTED_CONTROL\",\n ];\n \n if (code && validCodes.includes(code as AcpRuntimeErrorCode)) {\n return code as AcpRuntimeErrorCode;\n }\n return \"ACP_TURN_FAILED\";\n}\n\n/** Wrap unknown errors as `AcpRuntimeError` */\nexport function toAcpRuntimeError(params: {\n error: unknown;\n fallbackCode: AcpRuntimeErrorCode;\n fallbackMessage: string;\n}): AcpRuntimeError {\n const { error, fallbackCode, fallbackMessage } = params;\n \n if (error instanceof AcpRuntimeError) {\n return error;\n }\n \n const message = error instanceof Error ? error.message : fallbackMessage;\n return new AcpRuntimeError(fallbackCode, message, {\n cause: error instanceof Error ? error : undefined,\n });\n}\n\n/** Run async work and map failures to `AcpRuntimeError` */\nexport async function withAcpRuntimeErrorBoundary<T>(params: {\n run: () => Promise<T>;\n fallbackCode: AcpRuntimeErrorCode;\n fallbackMessage: string;\n}): Promise<T> {\n try {\n return await params.run();\n } catch (error) {\n throw toAcpRuntimeError({\n error,\n fallbackCode: params.fallbackCode,\n fallbackMessage: params.fallbackMessage,\n });\n }\n}\n\n/** Build unsupported-control error */\nexport function createUnsupportedControlError(params: {\n backend: string;\n control: string;\n}): AcpRuntimeError {\n return new AcpRuntimeError(\n \"ACP_BACKEND_UNSUPPORTED_CONTROL\",\n `ACP backend \"${params.backend}\" does not support control \"${params.control}\".`,\n );\n}"],"mappings":";;AAgBA,IAAa,kBAAb,cAAqC,MAAM;CACzC,YACE,MACA,SACA,SACA;AACA,QAAM,SAAS,QAAQ;AAJP,OAAA,OAAA;AAKhB,OAAK,OAAO;;;;AAKhB,SAAgB,sBAAsB,MAA+C;AAUnF,KAAI,QATsC;EACxC;EACA;EACA;EACA;EACA;EACA;EACD,CAEsB,SAAS,KAA4B,CAC1D,QAAO;AAET,QAAO;;;AAIT,SAAgB,kBAAkB,QAId;CAClB,MAAM,EAAE,OAAO,cAAc,oBAAoB;AAEjD,KAAI,iBAAiB,gBACnB,QAAO;AAIT,QAAO,IAAI,gBAAgB,cADX,iBAAiB,QAAQ,MAAM,UAAU,iBACP,EAChD,OAAO,iBAAiB,QAAQ,QAAQ,KAAA,GACzC,CAAC;;;AAIJ,eAAsB,4BAA+B,QAItC;AACb,KAAI;AACF,SAAO,MAAM,OAAO,KAAK;UAClB,OAAO;AACd,QAAM,kBAAkB;GACtB;GACA,cAAc,OAAO;GACrB,iBAAiB,OAAO;GACzB,CAAC;;;;AAKN,SAAgB,8BAA8B,QAG1B;AAClB,QAAO,IAAI,gBACT,mCACA,gBAAgB,OAAO,QAAQ,8BAA8B,OAAO,QAAQ,IAC7E"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { AcpRuntimeError, createUnsupportedControlError, normalizeAcpErrorCode, toAcpRuntimeError, withAcpRuntimeErrorBoundary } from "./errors.js";
|
|
2
|
-
import { __testing, getAcpRuntimeBackend, hasAcpRuntimeBackend, listAcpRuntimeBackends, registerAcpRuntimeBackend, requireAcpRuntimeBackend, unregisterAcpRuntimeBackend } from "./registry.js";
|
|
3
|
-
import { createIdentityFromEnsure, createIdentityFromStatus, identityEquals, identityHasStableSessionId, isSessionIdentityPending, mergeSessionIdentity, resolveRuntimeHandleIdentifiersFromIdentity, resolveSessionIdentityFromMeta } from "./session-identity.js";
|
|
4
|
-
export { AcpRuntimeError, __testing, createIdentityFromEnsure, createIdentityFromStatus, createUnsupportedControlError, getAcpRuntimeBackend, hasAcpRuntimeBackend, identityEquals, identityHasStableSessionId, isSessionIdentityPending, listAcpRuntimeBackends, mergeSessionIdentity, normalizeAcpErrorCode, registerAcpRuntimeBackend, requireAcpRuntimeBackend, resolveRuntimeHandleIdentifiersFromIdentity, resolveSessionIdentityFromMeta, toAcpRuntimeError, unregisterAcpRuntimeBackend, withAcpRuntimeErrorBoundary };
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ACP Runtime Registry
|
|
3
|
-
*
|
|
4
|
-
* Global registry for ACP runtime backends.
|
|
5
|
-
* Provides plugin-based runtime backend registration and discovery.
|
|
6
|
-
*/
|
|
7
|
-
import type { AcpRuntime } from "./types.js";
|
|
8
|
-
/** ACP Runtime Backend */
|
|
9
|
-
export type AcpRuntimeBackend = {
|
|
10
|
-
id: string;
|
|
11
|
-
runtime: AcpRuntime;
|
|
12
|
-
healthy?: () => boolean;
|
|
13
|
-
};
|
|
14
|
-
/** Global registry singleton state */
|
|
15
|
-
type AcpRuntimeRegistryGlobalState = {
|
|
16
|
-
backendsById: Map<string, AcpRuntimeBackend>;
|
|
17
|
-
};
|
|
18
|
-
/** Register an ACP runtime backend */
|
|
19
|
-
export declare function registerAcpRuntimeBackend(backend: AcpRuntimeBackend): void;
|
|
20
|
-
/** Unregister a backend by id */
|
|
21
|
-
export declare function unregisterAcpRuntimeBackend(id: string): void;
|
|
22
|
-
/** Get backend by id, or first healthy backend if id omitted */
|
|
23
|
-
export declare function getAcpRuntimeBackend(id?: string): AcpRuntimeBackend | null;
|
|
24
|
-
/** Require a registered healthy backend */
|
|
25
|
-
export declare function requireAcpRuntimeBackend(id?: string): AcpRuntimeBackend;
|
|
26
|
-
/** List registered backends */
|
|
27
|
-
export declare function listAcpRuntimeBackends(): AcpRuntimeBackend[];
|
|
28
|
-
/** Whether any backend is registered */
|
|
29
|
-
export declare function hasAcpRuntimeBackend(): boolean;
|
|
30
|
-
/** Test-only helpers */
|
|
31
|
-
export declare const __testing: {
|
|
32
|
-
resetAcpRuntimeBackendsForTests(): void;
|
|
33
|
-
getAcpRuntimeRegistryGlobalStateForTests(): AcpRuntimeRegistryGlobalState;
|
|
34
|
-
};
|
|
35
|
-
export {};
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { AcpRuntimeError } from "./errors.js";
|
|
2
|
-
//#region src/acp/runtime/registry.ts
|
|
3
|
-
/**
|
|
4
|
-
* ACP Runtime Registry
|
|
5
|
-
*
|
|
6
|
-
* Global registry for ACP runtime backends.
|
|
7
|
-
* Provides plugin-based runtime backend registration and discovery.
|
|
8
|
-
*/
|
|
9
|
-
const ACP_RUNTIME_REGISTRY_STATE_KEY = Symbol.for("xopc.acpRuntimeRegistryState");
|
|
10
|
-
function createAcpRuntimeRegistryGlobalState() {
|
|
11
|
-
return { backendsById: /* @__PURE__ */ new Map() };
|
|
12
|
-
}
|
|
13
|
-
function resolveAcpRuntimeRegistryGlobalState() {
|
|
14
|
-
const runtimeGlobal = globalThis;
|
|
15
|
-
if (!runtimeGlobal[ACP_RUNTIME_REGISTRY_STATE_KEY]) runtimeGlobal[ACP_RUNTIME_REGISTRY_STATE_KEY] = createAcpRuntimeRegistryGlobalState();
|
|
16
|
-
return runtimeGlobal[ACP_RUNTIME_REGISTRY_STATE_KEY];
|
|
17
|
-
}
|
|
18
|
-
const ACP_BACKENDS_BY_ID = resolveAcpRuntimeRegistryGlobalState().backendsById;
|
|
19
|
-
/** Normalize backend id */
|
|
20
|
-
function normalizeBackendId(id) {
|
|
21
|
-
return id?.trim().toLowerCase() || "";
|
|
22
|
-
}
|
|
23
|
-
/** Whether backend passes optional health check */
|
|
24
|
-
function isBackendHealthy(backend) {
|
|
25
|
-
if (!backend.healthy) return true;
|
|
26
|
-
try {
|
|
27
|
-
return backend.healthy();
|
|
28
|
-
} catch {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/** Register an ACP runtime backend */
|
|
33
|
-
function registerAcpRuntimeBackend(backend) {
|
|
34
|
-
const id = normalizeBackendId(backend.id);
|
|
35
|
-
if (!id) throw new Error("ACP runtime backend id is required");
|
|
36
|
-
if (!backend.runtime) throw new Error(`ACP runtime backend "${id}" is missing runtime implementation`);
|
|
37
|
-
ACP_BACKENDS_BY_ID.set(id, {
|
|
38
|
-
...backend,
|
|
39
|
-
id
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
/** Unregister a backend by id */
|
|
43
|
-
function unregisterAcpRuntimeBackend(id) {
|
|
44
|
-
const normalized = normalizeBackendId(id);
|
|
45
|
-
if (!normalized) return;
|
|
46
|
-
ACP_BACKENDS_BY_ID.delete(normalized);
|
|
47
|
-
}
|
|
48
|
-
/** Get backend by id, or first healthy backend if id omitted */
|
|
49
|
-
function getAcpRuntimeBackend(id) {
|
|
50
|
-
const normalized = normalizeBackendId(id);
|
|
51
|
-
if (normalized) return ACP_BACKENDS_BY_ID.get(normalized) ?? null;
|
|
52
|
-
if (ACP_BACKENDS_BY_ID.size === 0) return null;
|
|
53
|
-
for (const backend of ACP_BACKENDS_BY_ID.values()) if (isBackendHealthy(backend)) return backend;
|
|
54
|
-
return ACP_BACKENDS_BY_ID.values().next().value ?? null;
|
|
55
|
-
}
|
|
56
|
-
/** Require a registered healthy backend */
|
|
57
|
-
function requireAcpRuntimeBackend(id) {
|
|
58
|
-
const normalized = normalizeBackendId(id);
|
|
59
|
-
const backend = getAcpRuntimeBackend(normalized || void 0);
|
|
60
|
-
if (!backend) throw new AcpRuntimeError("ACP_BACKEND_MISSING", "ACP runtime backend is not configured. Install and enable an ACP runtime plugin.");
|
|
61
|
-
if (!isBackendHealthy(backend)) throw new AcpRuntimeError("ACP_BACKEND_UNAVAILABLE", "ACP runtime backend is currently unavailable. Try again in a moment.");
|
|
62
|
-
if (normalized && backend.id !== normalized) throw new AcpRuntimeError("ACP_BACKEND_MISSING", `ACP runtime backend "${normalized}" is not registered.`);
|
|
63
|
-
return backend;
|
|
64
|
-
}
|
|
65
|
-
/** List registered backends */
|
|
66
|
-
function listAcpRuntimeBackends() {
|
|
67
|
-
return Array.from(ACP_BACKENDS_BY_ID.values());
|
|
68
|
-
}
|
|
69
|
-
/** Whether any backend is registered */
|
|
70
|
-
function hasAcpRuntimeBackend() {
|
|
71
|
-
return ACP_BACKENDS_BY_ID.size > 0;
|
|
72
|
-
}
|
|
73
|
-
/** Test-only helpers */
|
|
74
|
-
const __testing = {
|
|
75
|
-
resetAcpRuntimeBackendsForTests() {
|
|
76
|
-
ACP_BACKENDS_BY_ID.clear();
|
|
77
|
-
},
|
|
78
|
-
getAcpRuntimeRegistryGlobalStateForTests() {
|
|
79
|
-
return resolveAcpRuntimeRegistryGlobalState();
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
//#endregion
|
|
83
|
-
export { __testing, getAcpRuntimeBackend, hasAcpRuntimeBackend, listAcpRuntimeBackends, registerAcpRuntimeBackend, requireAcpRuntimeBackend, unregisterAcpRuntimeBackend };
|
|
84
|
-
|
|
85
|
-
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","names":[],"sources":["../../../../src/acp/runtime/registry.ts"],"sourcesContent":["/**\n * ACP Runtime Registry\n * \n * Global registry for ACP runtime backends.\n * Provides plugin-based runtime backend registration and discovery.\n */\n\nimport { AcpRuntimeError } from \"./errors.js\";\nimport type { AcpRuntime } from \"./types.js\";\n\n/** ACP Runtime Backend */\nexport type AcpRuntimeBackend = {\n id: string;\n runtime: AcpRuntime;\n healthy?: () => boolean;\n};\n\n/** Global registry singleton state */\ntype AcpRuntimeRegistryGlobalState = {\n backendsById: Map<string, AcpRuntimeBackend>;\n};\n\nconst ACP_RUNTIME_REGISTRY_STATE_KEY = Symbol.for(\"xopc.acpRuntimeRegistryState\");\n\nfunction createAcpRuntimeRegistryGlobalState(): AcpRuntimeRegistryGlobalState {\n return {\n backendsById: new Map<string, AcpRuntimeBackend>(),\n };\n}\n\nfunction resolveAcpRuntimeRegistryGlobalState(): AcpRuntimeRegistryGlobalState {\n const runtimeGlobal = globalThis as typeof globalThis & {\n [ACP_RUNTIME_REGISTRY_STATE_KEY]?: AcpRuntimeRegistryGlobalState;\n };\n if (!runtimeGlobal[ACP_RUNTIME_REGISTRY_STATE_KEY]) {\n runtimeGlobal[ACP_RUNTIME_REGISTRY_STATE_KEY] = createAcpRuntimeRegistryGlobalState();\n }\n return runtimeGlobal[ACP_RUNTIME_REGISTRY_STATE_KEY];\n}\n\nconst ACP_BACKENDS_BY_ID = resolveAcpRuntimeRegistryGlobalState().backendsById;\n\n/** Normalize backend id */\nfunction normalizeBackendId(id: string | undefined): string {\n return id?.trim().toLowerCase() || \"\";\n}\n\n/** Whether backend passes optional health check */\nfunction isBackendHealthy(backend: AcpRuntimeBackend): boolean {\n if (!backend.healthy) {\n return true;\n }\n try {\n return backend.healthy();\n } catch {\n return false;\n }\n}\n\n/** Register an ACP runtime backend */\nexport function registerAcpRuntimeBackend(backend: AcpRuntimeBackend): void {\n const id = normalizeBackendId(backend.id);\n if (!id) {\n throw new Error(\"ACP runtime backend id is required\");\n }\n if (!backend.runtime) {\n throw new Error(`ACP runtime backend \"${id}\" is missing runtime implementation`);\n }\n ACP_BACKENDS_BY_ID.set(id, {\n ...backend,\n id,\n });\n}\n\n/** Unregister a backend by id */\nexport function unregisterAcpRuntimeBackend(id: string): void {\n const normalized = normalizeBackendId(id);\n if (!normalized) {\n return;\n }\n ACP_BACKENDS_BY_ID.delete(normalized);\n}\n\n/** Get backend by id, or first healthy backend if id omitted */\nexport function getAcpRuntimeBackend(id?: string): AcpRuntimeBackend | null {\n const normalized = normalizeBackendId(id);\n if (normalized) {\n return ACP_BACKENDS_BY_ID.get(normalized) ?? null;\n }\n if (ACP_BACKENDS_BY_ID.size === 0) {\n return null;\n }\n for (const backend of ACP_BACKENDS_BY_ID.values()) {\n if (isBackendHealthy(backend)) {\n return backend;\n }\n }\n return ACP_BACKENDS_BY_ID.values().next().value ?? null;\n}\n\n/** Require a registered healthy backend */\nexport function requireAcpRuntimeBackend(id?: string): AcpRuntimeBackend {\n const normalized = normalizeBackendId(id);\n const backend = getAcpRuntimeBackend(normalized || undefined);\n if (!backend) {\n throw new AcpRuntimeError(\n \"ACP_BACKEND_MISSING\",\n \"ACP runtime backend is not configured. Install and enable an ACP runtime plugin.\",\n );\n }\n if (!isBackendHealthy(backend)) {\n throw new AcpRuntimeError(\n \"ACP_BACKEND_UNAVAILABLE\",\n \"ACP runtime backend is currently unavailable. Try again in a moment.\",\n );\n }\n if (normalized && backend.id !== normalized) {\n throw new AcpRuntimeError(\n \"ACP_BACKEND_MISSING\",\n `ACP runtime backend \"${normalized}\" is not registered.`,\n );\n }\n return backend;\n}\n\n/** List registered backends */\nexport function listAcpRuntimeBackends(): AcpRuntimeBackend[] {\n return Array.from(ACP_BACKENDS_BY_ID.values());\n}\n\n/** Whether any backend is registered */\nexport function hasAcpRuntimeBackend(): boolean {\n return ACP_BACKENDS_BY_ID.size > 0;\n}\n\n/** Test-only helpers */\nexport const __testing = {\n resetAcpRuntimeBackendsForTests(): void {\n ACP_BACKENDS_BY_ID.clear();\n },\n getAcpRuntimeRegistryGlobalStateForTests(): AcpRuntimeRegistryGlobalState {\n return resolveAcpRuntimeRegistryGlobalState();\n },\n};"],"mappings":";;;;;;;;AAsBA,MAAM,iCAAiC,OAAO,IAAI,+BAA+B;AAEjF,SAAS,sCAAqE;AAC5E,QAAO,EACL,8BAAc,IAAI,KAAgC,EACnD;;AAGH,SAAS,uCAAsE;CAC7E,MAAM,gBAAgB;AAGtB,KAAI,CAAC,cAAc,gCACjB,eAAc,kCAAkC,qCAAqC;AAEvF,QAAO,cAAc;;AAGvB,MAAM,qBAAqB,sCAAsC,CAAC;;AAGlE,SAAS,mBAAmB,IAAgC;AAC1D,QAAO,IAAI,MAAM,CAAC,aAAa,IAAI;;;AAIrC,SAAS,iBAAiB,SAAqC;AAC7D,KAAI,CAAC,QAAQ,QACX,QAAO;AAET,KAAI;AACF,SAAO,QAAQ,SAAS;SAClB;AACN,SAAO;;;;AAKX,SAAgB,0BAA0B,SAAkC;CAC1E,MAAM,KAAK,mBAAmB,QAAQ,GAAG;AACzC,KAAI,CAAC,GACH,OAAM,IAAI,MAAM,qCAAqC;AAEvD,KAAI,CAAC,QAAQ,QACX,OAAM,IAAI,MAAM,wBAAwB,GAAG,qCAAqC;AAElF,oBAAmB,IAAI,IAAI;EACzB,GAAG;EACH;EACD,CAAC;;;AAIJ,SAAgB,4BAA4B,IAAkB;CAC5D,MAAM,aAAa,mBAAmB,GAAG;AACzC,KAAI,CAAC,WACH;AAEF,oBAAmB,OAAO,WAAW;;;AAIvC,SAAgB,qBAAqB,IAAuC;CAC1E,MAAM,aAAa,mBAAmB,GAAG;AACzC,KAAI,WACF,QAAO,mBAAmB,IAAI,WAAW,IAAI;AAE/C,KAAI,mBAAmB,SAAS,EAC9B,QAAO;AAET,MAAK,MAAM,WAAW,mBAAmB,QAAQ,CAC/C,KAAI,iBAAiB,QAAQ,CAC3B,QAAO;AAGX,QAAO,mBAAmB,QAAQ,CAAC,MAAM,CAAC,SAAS;;;AAIrD,SAAgB,yBAAyB,IAAgC;CACvE,MAAM,aAAa,mBAAmB,GAAG;CACzC,MAAM,UAAU,qBAAqB,cAAc,KAAA,EAAU;AAC7D,KAAI,CAAC,QACH,OAAM,IAAI,gBACR,uBACA,mFACD;AAEH,KAAI,CAAC,iBAAiB,QAAQ,CAC5B,OAAM,IAAI,gBACR,2BACA,uEACD;AAEH,KAAI,cAAc,QAAQ,OAAO,WAC/B,OAAM,IAAI,gBACR,uBACA,wBAAwB,WAAW,sBACpC;AAEH,QAAO;;;AAIT,SAAgB,yBAA8C;AAC5D,QAAO,MAAM,KAAK,mBAAmB,QAAQ,CAAC;;;AAIhD,SAAgB,uBAAgC;AAC9C,QAAO,mBAAmB,OAAO;;;AAInC,MAAa,YAAY;CACvB,kCAAwC;AACtC,qBAAmB,OAAO;;CAE5B,2CAA0E;AACxE,SAAO,sCAAsC;;CAEhD"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ACP Session Identity
|
|
3
|
-
*
|
|
4
|
-
* Session identity management for ACP runtime.
|
|
5
|
-
*/
|
|
6
|
-
import type { AcpRuntimeHandle, AcpRuntimeStatus, SessionIdentity, SessionAcpMeta } from "./types.js";
|
|
7
|
-
/** Build identity from ensure handle */
|
|
8
|
-
export declare function createIdentityFromEnsure(params: {
|
|
9
|
-
handle: AcpRuntimeHandle;
|
|
10
|
-
now: number;
|
|
11
|
-
}): SessionIdentity | undefined;
|
|
12
|
-
/** Build identity from runtime status */
|
|
13
|
-
export declare function createIdentityFromStatus(params: {
|
|
14
|
-
status: AcpRuntimeStatus | undefined;
|
|
15
|
-
now: number;
|
|
16
|
-
}): SessionIdentity | undefined;
|
|
17
|
-
/** Merge two identity snapshots */
|
|
18
|
-
export declare function mergeSessionIdentity(params: {
|
|
19
|
-
current: SessionIdentity | undefined;
|
|
20
|
-
incoming: SessionIdentity | undefined;
|
|
21
|
-
now: number;
|
|
22
|
-
}): SessionIdentity | undefined;
|
|
23
|
-
/** Whether identity has a stable session id */
|
|
24
|
-
export declare function identityHasStableSessionId(identity: SessionIdentity | undefined): boolean;
|
|
25
|
-
/** Equality for normalized identities */
|
|
26
|
-
export declare function identityEquals(a: SessionIdentity | undefined, b: SessionIdentity | undefined): boolean;
|
|
27
|
-
/** Whether identity is missing or pending */
|
|
28
|
-
export declare function isSessionIdentityPending(identity: SessionIdentity | undefined): boolean;
|
|
29
|
-
/** Read identity from session meta */
|
|
30
|
-
export declare function resolveSessionIdentityFromMeta(meta: SessionAcpMeta | undefined): SessionIdentity | undefined;
|
|
31
|
-
/** Map identity to backend/agent session ids for handles */
|
|
32
|
-
export declare function resolveRuntimeHandleIdentifiersFromIdentity(identity: SessionIdentity | undefined): {
|
|
33
|
-
backendSessionId?: string;
|
|
34
|
-
agentSessionId?: string;
|
|
35
|
-
};
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
//#region src/acp/runtime/session-identity.ts
|
|
2
|
-
/** Normalize string text */
|
|
3
|
-
function normalizeText(value) {
|
|
4
|
-
if (typeof value !== "string") return;
|
|
5
|
-
return value.trim() || void 0;
|
|
6
|
-
}
|
|
7
|
-
/** Normalize identity source */
|
|
8
|
-
function normalizeIdentitySource(value) {
|
|
9
|
-
if (value !== "ensure" && value !== "status" && value !== "event") return;
|
|
10
|
-
return value;
|
|
11
|
-
}
|
|
12
|
-
/** Normalize identity state */
|
|
13
|
-
function normalizeIdentityState(value) {
|
|
14
|
-
if (value !== "resolved" && value !== "pending") return;
|
|
15
|
-
return value;
|
|
16
|
-
}
|
|
17
|
-
/** Normalize identity object */
|
|
18
|
-
function normalizeIdentity(identity) {
|
|
19
|
-
if (!identity) return;
|
|
20
|
-
const state = normalizeIdentityState(identity.state);
|
|
21
|
-
const source = normalizeIdentitySource(identity.source);
|
|
22
|
-
const acpxRecordId = normalizeText(identity.acpxRecordId);
|
|
23
|
-
const acpxSessionId = normalizeText(identity.acpxSessionId);
|
|
24
|
-
const agentSessionId = normalizeText(identity.agentSessionId);
|
|
25
|
-
const lastUpdatedAt = typeof identity.lastUpdatedAt === "number" && Number.isFinite(identity.lastUpdatedAt) ? identity.lastUpdatedAt : void 0;
|
|
26
|
-
if (!state && !source && !Boolean(acpxRecordId || acpxSessionId || agentSessionId) && lastUpdatedAt === void 0) return;
|
|
27
|
-
return {
|
|
28
|
-
state: state ?? (Boolean(acpxSessionId || agentSessionId) ? "resolved" : "pending"),
|
|
29
|
-
...acpxRecordId ? { acpxRecordId } : {},
|
|
30
|
-
...acpxSessionId ? { acpxSessionId } : {},
|
|
31
|
-
...agentSessionId ? { agentSessionId } : {},
|
|
32
|
-
source: source ?? "status",
|
|
33
|
-
lastUpdatedAt: lastUpdatedAt ?? Date.now()
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
/** Build identity from ensure handle */
|
|
37
|
-
function createIdentityFromEnsure(params) {
|
|
38
|
-
const { handle, now } = params;
|
|
39
|
-
const acpxRecordId = normalizeText(handle.acpxRecordId);
|
|
40
|
-
const acpxSessionId = normalizeText(handle.backendSessionId);
|
|
41
|
-
const agentSessionId = normalizeText(handle.agentSessionId);
|
|
42
|
-
if (!acpxRecordId && !acpxSessionId && !agentSessionId) return;
|
|
43
|
-
return {
|
|
44
|
-
state: Boolean(acpxSessionId || agentSessionId) ? "resolved" : "pending",
|
|
45
|
-
...acpxRecordId ? { acpxRecordId } : {},
|
|
46
|
-
...acpxSessionId ? { acpxSessionId } : {},
|
|
47
|
-
...agentSessionId ? { agentSessionId } : {},
|
|
48
|
-
source: "ensure",
|
|
49
|
-
lastUpdatedAt: now
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
/** Build identity from runtime status */
|
|
53
|
-
function createIdentityFromStatus(params) {
|
|
54
|
-
if (!params.status) return;
|
|
55
|
-
const details = params.status.details;
|
|
56
|
-
const acpxRecordId = normalizeText(params.status.acpxRecordId) ?? normalizeText(details?.acpxRecordId);
|
|
57
|
-
const acpxSessionId = normalizeText(params.status.backendSessionId) ?? normalizeText(details?.backendSessionId) ?? normalizeText(details?.acpxSessionId);
|
|
58
|
-
const agentSessionId = normalizeText(params.status.agentSessionId) ?? normalizeText(details?.agentSessionId);
|
|
59
|
-
if (!acpxRecordId && !acpxSessionId && !agentSessionId) return;
|
|
60
|
-
return {
|
|
61
|
-
state: Boolean(acpxSessionId || agentSessionId) ? "resolved" : "pending",
|
|
62
|
-
...acpxRecordId ? { acpxRecordId } : {},
|
|
63
|
-
...acpxSessionId ? { acpxSessionId } : {},
|
|
64
|
-
...agentSessionId ? { agentSessionId } : {},
|
|
65
|
-
source: "status",
|
|
66
|
-
lastUpdatedAt: params.now
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
/** Merge two identity snapshots */
|
|
70
|
-
function mergeSessionIdentity(params) {
|
|
71
|
-
const current = normalizeIdentity(params.current);
|
|
72
|
-
const incoming = normalizeIdentity(params.incoming);
|
|
73
|
-
if (!current) {
|
|
74
|
-
if (!incoming) return;
|
|
75
|
-
return {
|
|
76
|
-
...incoming,
|
|
77
|
-
lastUpdatedAt: params.now
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
if (!incoming) return current;
|
|
81
|
-
const currentResolved = current.state === "resolved";
|
|
82
|
-
const incomingResolved = incoming.state === "resolved";
|
|
83
|
-
const allowIncomingValue = !currentResolved || incomingResolved;
|
|
84
|
-
const nextAcpxRecordId = allowIncomingValue && incoming.acpxRecordId ? incoming.acpxRecordId : current.acpxRecordId;
|
|
85
|
-
const nextAcpxSessionId = allowIncomingValue && incoming.acpxSessionId ? incoming.acpxSessionId : current.acpxSessionId;
|
|
86
|
-
const nextAgentSessionId = allowIncomingValue && incoming.agentSessionId ? incoming.agentSessionId : current.agentSessionId;
|
|
87
|
-
const nextState = Boolean(nextAcpxSessionId || nextAgentSessionId) ? "resolved" : currentResolved ? "resolved" : incoming.state;
|
|
88
|
-
const nextSource = allowIncomingValue ? incoming.source : current.source;
|
|
89
|
-
return {
|
|
90
|
-
state: nextState,
|
|
91
|
-
...nextAcpxRecordId ? { acpxRecordId: nextAcpxRecordId } : {},
|
|
92
|
-
...nextAcpxSessionId ? { acpxSessionId: nextAcpxSessionId } : {},
|
|
93
|
-
...nextAgentSessionId ? { agentSessionId: nextAgentSessionId } : {},
|
|
94
|
-
source: nextSource,
|
|
95
|
-
lastUpdatedAt: params.now
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
/** Whether identity has a stable session id */
|
|
99
|
-
function identityHasStableSessionId(identity) {
|
|
100
|
-
const normalized = normalizeIdentity(identity);
|
|
101
|
-
return Boolean(normalized?.acpxSessionId || normalized?.agentSessionId);
|
|
102
|
-
}
|
|
103
|
-
/** Equality for normalized identities */
|
|
104
|
-
function identityEquals(a, b) {
|
|
105
|
-
const normalizedA = normalizeIdentity(a);
|
|
106
|
-
const normalizedB = normalizeIdentity(b);
|
|
107
|
-
if (!normalizedA && !normalizedB) return true;
|
|
108
|
-
if (!normalizedA || !normalizedB) return false;
|
|
109
|
-
return normalizedA.state === normalizedB.state && normalizedA.acpxRecordId === normalizedB.acpxRecordId && normalizedA.acpxSessionId === normalizedB.acpxSessionId && normalizedA.agentSessionId === normalizedB.agentSessionId && normalizedA.source === normalizedB.source;
|
|
110
|
-
}
|
|
111
|
-
/** Whether identity is missing or pending */
|
|
112
|
-
function isSessionIdentityPending(identity) {
|
|
113
|
-
const normalized = normalizeIdentity(identity);
|
|
114
|
-
if (!normalized) return true;
|
|
115
|
-
return normalized.state === "pending";
|
|
116
|
-
}
|
|
117
|
-
/** Read identity from session meta */
|
|
118
|
-
function resolveSessionIdentityFromMeta(meta) {
|
|
119
|
-
if (!meta) return;
|
|
120
|
-
return normalizeIdentity(meta.identity);
|
|
121
|
-
}
|
|
122
|
-
/** Map identity to backend/agent session ids for handles */
|
|
123
|
-
function resolveRuntimeHandleIdentifiersFromIdentity(identity) {
|
|
124
|
-
const normalized = normalizeIdentity(identity);
|
|
125
|
-
if (!normalized) return {};
|
|
126
|
-
return {
|
|
127
|
-
...normalized.acpxSessionId ? { backendSessionId: normalized.acpxSessionId } : {},
|
|
128
|
-
...normalized.agentSessionId ? { agentSessionId: normalized.agentSessionId } : {}
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
//#endregion
|
|
132
|
-
export { createIdentityFromEnsure, createIdentityFromStatus, identityEquals, identityHasStableSessionId, isSessionIdentityPending, mergeSessionIdentity, resolveRuntimeHandleIdentifiersFromIdentity, resolveSessionIdentityFromMeta };
|
|
133
|
-
|
|
134
|
-
//# sourceMappingURL=session-identity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-identity.js","names":[],"sources":["../../../../src/acp/runtime/session-identity.ts"],"sourcesContent":["/**\n * ACP Session Identity\n * \n * Session identity management for ACP runtime.\n */\n\nimport type {\n AcpRuntimeHandle,\n AcpRuntimeStatus,\n SessionIdentity,\n SessionIdentitySource,\n SessionAcpMeta,\n} from \"./types.js\";\n\n/** Normalize string text */\nfunction normalizeText(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\n/** Normalize identity source */\nfunction normalizeIdentitySource(value: unknown): SessionIdentitySource | undefined {\n if (value !== \"ensure\" && value !== \"status\" && value !== \"event\") {\n return undefined;\n }\n return value;\n}\n\n/** Normalize identity state */\nfunction normalizeIdentityState(value: unknown): \"resolved\" | \"pending\" | undefined {\n if (value !== \"resolved\" && value !== \"pending\") {\n return undefined;\n }\n return value;\n}\n\n/** Normalize identity object */\nfunction normalizeIdentity(identity: SessionIdentity | undefined): SessionIdentity | undefined {\n if (!identity) {\n return undefined;\n }\n\n const state = normalizeIdentityState(identity.state);\n const source = normalizeIdentitySource(identity.source);\n const acpxRecordId = normalizeText(identity.acpxRecordId);\n const acpxSessionId = normalizeText(identity.acpxSessionId);\n const agentSessionId = normalizeText(identity.agentSessionId);\n const lastUpdatedAt =\n typeof identity.lastUpdatedAt === \"number\" && Number.isFinite(identity.lastUpdatedAt)\n ? identity.lastUpdatedAt\n : undefined;\n\n const hasAnyId = Boolean(acpxRecordId || acpxSessionId || agentSessionId);\n if (!state && !source && !hasAnyId && lastUpdatedAt === undefined) {\n return undefined;\n }\n\n const resolved = Boolean(acpxSessionId || agentSessionId);\n const normalizedState = state ?? (resolved ? \"resolved\" : \"pending\");\n\n return {\n state: normalizedState,\n ...(acpxRecordId ? { acpxRecordId } : {}),\n ...(acpxSessionId ? { acpxSessionId } : {}),\n ...(agentSessionId ? { agentSessionId } : {}),\n source: source ?? \"status\",\n lastUpdatedAt: lastUpdatedAt ?? Date.now(),\n };\n}\n\n/** Build identity from ensure handle */\nexport function createIdentityFromEnsure(params: {\n handle: AcpRuntimeHandle;\n now: number;\n}): SessionIdentity | undefined {\n const { handle, now } = params;\n \n const acpxRecordId = normalizeText(handle.acpxRecordId);\n const acpxSessionId = normalizeText(handle.backendSessionId);\n const agentSessionId = normalizeText(handle.agentSessionId);\n\n if (!acpxRecordId && !acpxSessionId && !agentSessionId) {\n return undefined;\n }\n\n const resolved = Boolean(acpxSessionId || agentSessionId);\n\n return {\n state: resolved ? \"resolved\" : \"pending\",\n ...(acpxRecordId ? { acpxRecordId } : {}),\n ...(acpxSessionId ? { acpxSessionId } : {}),\n ...(agentSessionId ? { agentSessionId } : {}),\n source: \"ensure\",\n lastUpdatedAt: now,\n };\n}\n\n/** Build identity from runtime status */\nexport function createIdentityFromStatus(params: {\n status: AcpRuntimeStatus | undefined;\n now: number;\n}): SessionIdentity | undefined {\n if (!params.status) {\n return undefined;\n }\n\n const details = params.status.details;\n \n const acpxRecordId =\n normalizeText(params.status.acpxRecordId) ??\n normalizeText(details?.acpxRecordId);\n const acpxSessionId =\n normalizeText(params.status.backendSessionId) ??\n normalizeText(details?.backendSessionId) ??\n normalizeText(details?.acpxSessionId);\n const agentSessionId =\n normalizeText(params.status.agentSessionId) ??\n normalizeText(details?.agentSessionId);\n\n if (!acpxRecordId && !acpxSessionId && !agentSessionId) {\n return undefined;\n }\n\n const resolved = Boolean(acpxSessionId || agentSessionId);\n\n return {\n state: resolved ? \"resolved\" : \"pending\",\n ...(acpxRecordId ? { acpxRecordId } : {}),\n ...(acpxSessionId ? { acpxSessionId } : {}),\n ...(agentSessionId ? { agentSessionId } : {}),\n source: \"status\",\n lastUpdatedAt: params.now,\n };\n}\n\n/** Merge two identity snapshots */\nexport function mergeSessionIdentity(params: {\n current: SessionIdentity | undefined;\n incoming: SessionIdentity | undefined;\n now: number;\n}): SessionIdentity | undefined {\n const current = normalizeIdentity(params.current);\n const incoming = normalizeIdentity(params.incoming);\n\n if (!current) {\n if (!incoming) {\n return undefined;\n }\n return { ...incoming, lastUpdatedAt: params.now };\n }\n\n if (!incoming) {\n return current;\n }\n\n const currentResolved = current.state === \"resolved\";\n const incomingResolved = incoming.state === \"resolved\";\n \n const allowIncomingValue = !currentResolved || incomingResolved;\n \n const nextAcpxRecordId =\n allowIncomingValue && incoming.acpxRecordId ? incoming.acpxRecordId : current.acpxRecordId;\n const nextAcpxSessionId =\n allowIncomingValue && incoming.acpxSessionId ? incoming.acpxSessionId : current.acpxSessionId;\n const nextAgentSessionId =\n allowIncomingValue && incoming.agentSessionId ? incoming.agentSessionId : current.agentSessionId;\n\n const nextResolved = Boolean(nextAcpxSessionId || nextAgentSessionId);\n const nextState: SessionIdentity[\"state\"] = nextResolved\n ? \"resolved\"\n : currentResolved\n ? \"resolved\"\n : incoming.state;\n \n const nextSource = allowIncomingValue ? incoming.source : current.source;\n\n const next: SessionIdentity = {\n state: nextState,\n ...(nextAcpxRecordId ? { acpxRecordId: nextAcpxRecordId } : {}),\n ...(nextAcpxSessionId ? { acpxSessionId: nextAcpxSessionId } : {}),\n ...(nextAgentSessionId ? { agentSessionId: nextAgentSessionId } : {}),\n source: nextSource,\n lastUpdatedAt: params.now,\n };\n\n return next;\n}\n\n/** Whether identity has a stable session id */\nexport function identityHasStableSessionId(identity: SessionIdentity | undefined): boolean {\n const normalized = normalizeIdentity(identity);\n return Boolean(normalized?.acpxSessionId || normalized?.agentSessionId);\n}\n\n/** Equality for normalized identities */\nexport function identityEquals(\n a: SessionIdentity | undefined,\n b: SessionIdentity | undefined,\n): boolean {\n const normalizedA = normalizeIdentity(a);\n const normalizedB = normalizeIdentity(b);\n\n if (!normalizedA && !normalizedB) {\n return true;\n }\n if (!normalizedA || !normalizedB) {\n return false;\n }\n\n return (\n normalizedA.state === normalizedB.state &&\n normalizedA.acpxRecordId === normalizedB.acpxRecordId &&\n normalizedA.acpxSessionId === normalizedB.acpxSessionId &&\n normalizedA.agentSessionId === normalizedB.agentSessionId &&\n normalizedA.source === normalizedB.source\n );\n}\n\n/** Whether identity is missing or pending */\nexport function isSessionIdentityPending(identity: SessionIdentity | undefined): boolean {\n const normalized = normalizeIdentity(identity);\n if (!normalized) {\n return true;\n }\n return normalized.state === \"pending\";\n}\n\n/** Read identity from session meta */\nexport function resolveSessionIdentityFromMeta(meta: SessionAcpMeta | undefined): SessionIdentity | undefined {\n if (!meta) {\n return undefined;\n }\n return normalizeIdentity(meta.identity);\n}\n\n/** Map identity to backend/agent session ids for handles */\nexport function resolveRuntimeHandleIdentifiersFromIdentity(identity: SessionIdentity | undefined): {\n backendSessionId?: string;\n agentSessionId?: string;\n} {\n const normalized = normalizeIdentity(identity);\n if (!normalized) {\n return {};\n }\n return {\n ...(normalized.acpxSessionId ? { backendSessionId: normalized.acpxSessionId } : {}),\n ...(normalized.agentSessionId ? { agentSessionId: normalized.agentSessionId } : {}),\n };\n}\n"],"mappings":"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"}
|