@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,214 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ACP Runtime Types
|
|
3
|
-
*
|
|
4
|
-
* Core type definitions for Agent Control Protocol runtime abstraction.
|
|
5
|
-
*/
|
|
6
|
-
/** ACP prompt mode */
|
|
7
|
-
export type AcpRuntimePromptMode = "prompt" | "steer";
|
|
8
|
-
/** ACP session mode */
|
|
9
|
-
export type AcpRuntimeSessionMode = "persistent" | "oneshot";
|
|
10
|
-
/** ACP session update tag */
|
|
11
|
-
export type AcpSessionUpdateTag = "agent_message_chunk" | "agent_thought_chunk" | "tool_call" | "tool_call_update" | "usage_update" | "available_commands_update" | "current_mode_update" | "config_option_update" | "session_info_update" | "plan" | (string & {});
|
|
12
|
-
/** ACP runtime control capability */
|
|
13
|
-
export type AcpRuntimeControl = "session/set_mode" | "session/set_config_option" | "session/status" | "session/reset";
|
|
14
|
-
/** ACP runtime handle (session reference) */
|
|
15
|
-
export type AcpRuntimeHandle = {
|
|
16
|
-
sessionKey: string;
|
|
17
|
-
backend: string;
|
|
18
|
-
runtimeSessionName: string;
|
|
19
|
-
/** Effective working directory */
|
|
20
|
-
cwd?: string;
|
|
21
|
-
/** Local backend record id */
|
|
22
|
-
acpxRecordId?: string;
|
|
23
|
-
/** Backend-level ACP session id */
|
|
24
|
-
backendSessionId?: string;
|
|
25
|
-
/** Upstream harness session id */
|
|
26
|
-
agentSessionId?: string;
|
|
27
|
-
};
|
|
28
|
-
/** ACP session ensure / init input */
|
|
29
|
-
export type AcpRuntimeEnsureInput = {
|
|
30
|
-
sessionKey: string;
|
|
31
|
-
agent: string;
|
|
32
|
-
mode: AcpRuntimeSessionMode;
|
|
33
|
-
resumeSessionId?: string;
|
|
34
|
-
cwd?: string;
|
|
35
|
-
env?: Record<string, string>;
|
|
36
|
-
};
|
|
37
|
-
/** ACP turn attachment */
|
|
38
|
-
export type AcpRuntimeTurnAttachment = {
|
|
39
|
-
mediaType: string;
|
|
40
|
-
data: string;
|
|
41
|
-
};
|
|
42
|
-
/** ACP turn input */
|
|
43
|
-
export type AcpRuntimeTurnInput = {
|
|
44
|
-
handle: AcpRuntimeHandle;
|
|
45
|
-
text: string;
|
|
46
|
-
attachments?: AcpRuntimeTurnAttachment[];
|
|
47
|
-
mode: AcpRuntimePromptMode;
|
|
48
|
-
requestId: string;
|
|
49
|
-
signal?: AbortSignal;
|
|
50
|
-
};
|
|
51
|
-
/** ACP runtime capabilities */
|
|
52
|
-
export type AcpRuntimeCapabilities = {
|
|
53
|
-
controls: AcpRuntimeControl[];
|
|
54
|
-
/**
|
|
55
|
-
* Optional advertised config option keys.
|
|
56
|
-
* Empty/omitted means the backend accepts keys without a fixed list.
|
|
57
|
-
*/
|
|
58
|
-
configOptionKeys?: string[];
|
|
59
|
-
/** Optional tool names supported by the backend */
|
|
60
|
-
toolNames?: string[];
|
|
61
|
-
};
|
|
62
|
-
/** ACP runtime status snapshot */
|
|
63
|
-
export type AcpRuntimeStatus = {
|
|
64
|
-
summary?: string;
|
|
65
|
-
/** Local backend record id */
|
|
66
|
-
acpxRecordId?: string;
|
|
67
|
-
/** Backend-level ACP session id */
|
|
68
|
-
backendSessionId?: string;
|
|
69
|
-
/** Upstream harness session id */
|
|
70
|
-
agentSessionId?: string;
|
|
71
|
-
details?: Record<string, unknown>;
|
|
72
|
-
};
|
|
73
|
-
/** ACP doctor (health) report */
|
|
74
|
-
export type AcpRuntimeDoctorReport = {
|
|
75
|
-
ok: boolean;
|
|
76
|
-
code?: string;
|
|
77
|
-
message: string;
|
|
78
|
-
installCommand?: string;
|
|
79
|
-
details?: string[];
|
|
80
|
-
};
|
|
81
|
-
/** ACP runtime event */
|
|
82
|
-
export type AcpRuntimeEvent = {
|
|
83
|
-
type: "text_delta";
|
|
84
|
-
text: string;
|
|
85
|
-
stream?: "output" | "thought";
|
|
86
|
-
tag?: AcpSessionUpdateTag;
|
|
87
|
-
} | {
|
|
88
|
-
type: "status";
|
|
89
|
-
text: string;
|
|
90
|
-
tag?: AcpSessionUpdateTag;
|
|
91
|
-
used?: number;
|
|
92
|
-
size?: number;
|
|
93
|
-
} | {
|
|
94
|
-
type: "tool_call";
|
|
95
|
-
text: string;
|
|
96
|
-
tag?: AcpSessionUpdateTag;
|
|
97
|
-
toolCallId?: string;
|
|
98
|
-
status?: "start" | "progress" | "end" | "error";
|
|
99
|
-
title?: string;
|
|
100
|
-
input?: Record<string, unknown>;
|
|
101
|
-
output?: string;
|
|
102
|
-
error?: string;
|
|
103
|
-
} | {
|
|
104
|
-
type: "done";
|
|
105
|
-
stopReason?: string;
|
|
106
|
-
} | {
|
|
107
|
-
type: "error";
|
|
108
|
-
message: string;
|
|
109
|
-
code?: string;
|
|
110
|
-
retryable?: boolean;
|
|
111
|
-
};
|
|
112
|
-
/** ACP runtime implementation */
|
|
113
|
-
export interface AcpRuntime {
|
|
114
|
-
/** Ensure a session exists (create or resume) */
|
|
115
|
-
ensureSession(input: AcpRuntimeEnsureInput): Promise<AcpRuntimeHandle>;
|
|
116
|
-
/** Run one turn */
|
|
117
|
-
runTurn(input: AcpRuntimeTurnInput): AsyncIterable<AcpRuntimeEvent>;
|
|
118
|
-
/** Advertised capabilities */
|
|
119
|
-
getCapabilities?(input: {
|
|
120
|
-
handle?: AcpRuntimeHandle;
|
|
121
|
-
}): Promise<AcpRuntimeCapabilities> | AcpRuntimeCapabilities;
|
|
122
|
-
/** Current status */
|
|
123
|
-
getStatus?(input: {
|
|
124
|
-
handle: AcpRuntimeHandle;
|
|
125
|
-
signal?: AbortSignal;
|
|
126
|
-
}): Promise<AcpRuntimeStatus>;
|
|
127
|
-
/** Set session mode */
|
|
128
|
-
setMode?(input: {
|
|
129
|
-
handle: AcpRuntimeHandle;
|
|
130
|
-
mode: string;
|
|
131
|
-
}): Promise<void>;
|
|
132
|
-
/** Set a config option */
|
|
133
|
-
setConfigOption?(input: {
|
|
134
|
-
handle: AcpRuntimeHandle;
|
|
135
|
-
key: string;
|
|
136
|
-
value: string;
|
|
137
|
-
}): Promise<void>;
|
|
138
|
-
/** Reset session */
|
|
139
|
-
resetSession?(input: {
|
|
140
|
-
handle: AcpRuntimeHandle;
|
|
141
|
-
}): Promise<void>;
|
|
142
|
-
/** Health check */
|
|
143
|
-
doctor?(): Promise<AcpRuntimeDoctorReport>;
|
|
144
|
-
/** Cancel in-flight work */
|
|
145
|
-
cancel(input: {
|
|
146
|
-
handle: AcpRuntimeHandle;
|
|
147
|
-
reason?: string;
|
|
148
|
-
}): Promise<void>;
|
|
149
|
-
/** Close session */
|
|
150
|
-
close(input: {
|
|
151
|
-
handle: AcpRuntimeHandle;
|
|
152
|
-
reason: string;
|
|
153
|
-
}): Promise<void>;
|
|
154
|
-
}
|
|
155
|
-
/** ACP session metadata */
|
|
156
|
-
export type SessionAcpMeta = {
|
|
157
|
-
backend: string;
|
|
158
|
-
agent: string;
|
|
159
|
-
runtimeSessionName: string;
|
|
160
|
-
identity?: SessionIdentity;
|
|
161
|
-
mode: AcpRuntimeSessionMode;
|
|
162
|
-
runtimeOptions?: AcpSessionRuntimeOptions;
|
|
163
|
-
cwd?: string;
|
|
164
|
-
state: "idle" | "running" | "error";
|
|
165
|
-
lastActivityAt: number;
|
|
166
|
-
lastError?: string;
|
|
167
|
-
};
|
|
168
|
-
/** Session identity source */
|
|
169
|
-
export type SessionIdentitySource = "ensure" | "status" | "event";
|
|
170
|
-
/** Session identity */
|
|
171
|
-
export type SessionIdentity = {
|
|
172
|
-
state: "resolved" | "pending";
|
|
173
|
-
source: SessionIdentitySource;
|
|
174
|
-
/** Local backend record id (acpx record id) */
|
|
175
|
-
acpxRecordId?: string;
|
|
176
|
-
/** Backend-level ACP session id */
|
|
177
|
-
acpxSessionId?: string;
|
|
178
|
-
/** Upstream harness session id */
|
|
179
|
-
agentSessionId?: string;
|
|
180
|
-
lastUpdatedAt: number;
|
|
181
|
-
};
|
|
182
|
-
/** ACP session runtime options */
|
|
183
|
-
export type AcpSessionRuntimeOptions = {
|
|
184
|
-
cwd?: string;
|
|
185
|
-
runtimeMode?: string;
|
|
186
|
-
[key: string]: unknown;
|
|
187
|
-
};
|
|
188
|
-
/** ACP session status (control plane) */
|
|
189
|
-
export type AcpSessionStatus = {
|
|
190
|
-
sessionKey: string;
|
|
191
|
-
backend: string;
|
|
192
|
-
agent: string;
|
|
193
|
-
identity?: SessionIdentity;
|
|
194
|
-
state: "idle" | "running" | "error";
|
|
195
|
-
mode: AcpRuntimeSessionMode;
|
|
196
|
-
runtimeOptions?: AcpSessionRuntimeOptions;
|
|
197
|
-
capabilities?: AcpRuntimeCapabilities;
|
|
198
|
-
runtimeStatus?: AcpRuntimeStatus;
|
|
199
|
-
lastActivityAt: number;
|
|
200
|
-
lastError?: string;
|
|
201
|
-
};
|
|
202
|
-
/** ACP session resolution outcome */
|
|
203
|
-
export type AcpSessionResolution = {
|
|
204
|
-
kind: "ready";
|
|
205
|
-
sessionKey: string;
|
|
206
|
-
meta: SessionAcpMeta;
|
|
207
|
-
} | {
|
|
208
|
-
kind: "stale";
|
|
209
|
-
sessionKey: string;
|
|
210
|
-
error: Error;
|
|
211
|
-
} | {
|
|
212
|
-
kind: "none";
|
|
213
|
-
sessionKey: string;
|
|
214
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
//#region src/acp/secret-file.ts
|
|
3
|
-
/**
|
|
4
|
-
* ACP Secret File Reader
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Read secret from file
|
|
8
|
-
*/
|
|
9
|
-
function readSecretFromFile(path, name) {
|
|
10
|
-
try {
|
|
11
|
-
return readFileSync(path, { encoding: "utf-8" }).trim();
|
|
12
|
-
} catch (error) {
|
|
13
|
-
throw new Error(`Failed to read ${name} from file "${path}": ${error instanceof Error ? error.message : String(error)}`);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//#endregion
|
|
17
|
-
export { readSecretFromFile };
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=secret-file.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"secret-file.js","names":[],"sources":["../../../src/acp/secret-file.ts"],"sourcesContent":["/**\n * ACP Secret File Reader\n */\n\nimport { readFileSync } from \"node:fs\";\n\n/**\n * Read secret from file\n */\nexport function readSecretFromFile(path: string, name: string): string {\n try {\n const content = readFileSync(path, { encoding: \"utf-8\" });\n return content.trim();\n } catch (error) {\n throw new Error(`Failed to read ${name} from file \"${path}\": ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,mBAAmB,MAAc,MAAsB;AACrE,KAAI;AAEF,SADgB,aAAa,MAAM,EAAE,UAAU,SAAS,CAAC,CAC1C,MAAM;UACd,OAAO;AACd,QAAM,IAAI,MAAM,kBAAkB,KAAK,cAAc,KAAK,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GAAG"}
|
package/dist/src/acp/server.d.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ACP Gateway Server - Full Implementation
|
|
3
|
-
*
|
|
4
|
-
* CLI server that bridges ACP protocol to xopc's AgentService.
|
|
5
|
-
* Implements the Agent interface from @agentclientprotocol/sdk.
|
|
6
|
-
*/
|
|
7
|
-
import { AgentSideConnection } from "@agentclientprotocol/sdk";
|
|
8
|
-
import type { Agent } from "@agentclientprotocol/sdk";
|
|
9
|
-
import type { AcpServerOptions } from "./types.js";
|
|
10
|
-
/**
|
|
11
|
-
* ACP Server - implements Agent interface from @agentclientprotocol/sdk
|
|
12
|
-
*
|
|
13
|
-
* Note: Uses type casting to handle SDK type complexity
|
|
14
|
-
*/
|
|
15
|
-
declare class AcpServer implements Agent {
|
|
16
|
-
private readonly opts;
|
|
17
|
-
private readonly state;
|
|
18
|
-
private connection;
|
|
19
|
-
constructor(opts?: AcpServerOptions);
|
|
20
|
-
/**
|
|
21
|
-
* Set the connection (called by AgentSideConnection)
|
|
22
|
-
*/
|
|
23
|
-
setConnection(conn: AgentSideConnection): void;
|
|
24
|
-
/**
|
|
25
|
-
* Send session update notification to client
|
|
26
|
-
*/
|
|
27
|
-
private sendSessionUpdate;
|
|
28
|
-
initialize(params: any): Promise<any>;
|
|
29
|
-
authenticate(_params: any): Promise<any>;
|
|
30
|
-
newSession(params: any): Promise<any>;
|
|
31
|
-
loadSession(params: any): Promise<any>;
|
|
32
|
-
listSessions(_params: any): Promise<any>;
|
|
33
|
-
prompt(params: any): Promise<any>;
|
|
34
|
-
/**
|
|
35
|
-
* Handle turn event and send to client
|
|
36
|
-
*/
|
|
37
|
-
private handleTurnEvent;
|
|
38
|
-
cancel(params: any): Promise<void>;
|
|
39
|
-
/**
|
|
40
|
-
* Extract text content from prompt blocks
|
|
41
|
-
*/
|
|
42
|
-
private extractTextFromPrompt;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Main entry point
|
|
46
|
-
*/
|
|
47
|
-
export declare function main(): Promise<void>;
|
|
48
|
-
export { AcpServer };
|
package/dist/src/acp/server.js
DELETED
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
import { AcpRuntimeError, normalizeAcpErrorCode } from "./runtime/errors.js";
|
|
2
|
-
import { init_loader, loadConfig } from "../config/loader.js";
|
|
3
|
-
import { getAcpSessionManager } from "./control-plane/manager.js";
|
|
4
|
-
import { isMainModule } from "../infra/is-main.js";
|
|
5
|
-
import { randomUUID } from "node:crypto";
|
|
6
|
-
import { Readable, Writable } from "node:stream";
|
|
7
|
-
import { fileURLToPath } from "node:url";
|
|
8
|
-
import { AgentSideConnection, ndJsonStream } from "@agentclientprotocol/sdk";
|
|
9
|
-
//#region src/acp/server.ts
|
|
10
|
-
/**
|
|
11
|
-
* ACP Gateway Server - Full Implementation
|
|
12
|
-
*
|
|
13
|
-
* CLI server that bridges ACP protocol to xopc's AgentService.
|
|
14
|
-
* Implements the Agent interface from @agentclientprotocol/sdk.
|
|
15
|
-
*/
|
|
16
|
-
init_loader();
|
|
17
|
-
const MAX_PROMPT_BYTES = 2 * 1024 * 1024;
|
|
18
|
-
/**
|
|
19
|
-
* ACP Server - implements Agent interface from @agentclientprotocol/sdk
|
|
20
|
-
*
|
|
21
|
-
* Note: Uses type casting to handle SDK type complexity
|
|
22
|
-
*/
|
|
23
|
-
var AcpServer = class {
|
|
24
|
-
state = {
|
|
25
|
-
activeSessionKey: null,
|
|
26
|
-
sessions: /* @__PURE__ */ new Map()
|
|
27
|
-
};
|
|
28
|
-
connection = null;
|
|
29
|
-
constructor(opts = {}) {
|
|
30
|
-
this.opts = opts;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Set the connection (called by AgentSideConnection)
|
|
34
|
-
*/
|
|
35
|
-
setConnection(conn) {
|
|
36
|
-
this.connection = conn;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Send session update notification to client
|
|
40
|
-
*/
|
|
41
|
-
async sendSessionUpdate(sessionId, update) {
|
|
42
|
-
if (!this.connection) return;
|
|
43
|
-
await this.connection.sessionUpdate({
|
|
44
|
-
sessionId,
|
|
45
|
-
update
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
async initialize(params) {
|
|
49
|
-
return {
|
|
50
|
-
protocolVersion: params.protocolVersion || 1,
|
|
51
|
-
agentCapabilities: {
|
|
52
|
-
tools: true,
|
|
53
|
-
multiModal: true,
|
|
54
|
-
attachments: true,
|
|
55
|
-
idle: true,
|
|
56
|
-
commands: [{
|
|
57
|
-
name: "session.reset",
|
|
58
|
-
description: "Reset the session"
|
|
59
|
-
}, {
|
|
60
|
-
name: "session.status",
|
|
61
|
-
description: "Get session status"
|
|
62
|
-
}],
|
|
63
|
-
envVars: true
|
|
64
|
-
},
|
|
65
|
-
agentInfo: {
|
|
66
|
-
name: "xopc-acp",
|
|
67
|
-
version: "1.0.0"
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
async authenticate(_params) {
|
|
72
|
-
return { authenticated: true };
|
|
73
|
-
}
|
|
74
|
-
async newSession(params) {
|
|
75
|
-
const sessionKey = `acp:${randomUUID()}`;
|
|
76
|
-
const agent = "main";
|
|
77
|
-
const mode = "persistent";
|
|
78
|
-
const cfg = loadConfig();
|
|
79
|
-
try {
|
|
80
|
-
await getAcpSessionManager().initializeSession({
|
|
81
|
-
cfg,
|
|
82
|
-
sessionKey,
|
|
83
|
-
agent,
|
|
84
|
-
mode,
|
|
85
|
-
cwd: params.cwd
|
|
86
|
-
});
|
|
87
|
-
this.state.sessions.set(sessionKey, {
|
|
88
|
-
agent,
|
|
89
|
-
mode
|
|
90
|
-
});
|
|
91
|
-
this.state.activeSessionKey = sessionKey;
|
|
92
|
-
return {
|
|
93
|
-
sessionId: sessionKey,
|
|
94
|
-
configOptions: []
|
|
95
|
-
};
|
|
96
|
-
} catch (error) {
|
|
97
|
-
throw new AcpRuntimeError(normalizeAcpErrorCode("ACP_SESSION_INIT_FAILED"), error instanceof Error ? error.message : "Failed to create session");
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
async loadSession(params) {
|
|
101
|
-
const sessionKey = params.sessionId;
|
|
102
|
-
const cfg = loadConfig();
|
|
103
|
-
try {
|
|
104
|
-
if ((await getAcpSessionManager().resolveSession({
|
|
105
|
-
cfg,
|
|
106
|
-
sessionKey
|
|
107
|
-
})).kind !== "ready") throw new AcpRuntimeError(normalizeAcpErrorCode("ACP_SESSION_NOT_FOUND"), `Session ${sessionKey} not found`);
|
|
108
|
-
this.state.activeSessionKey = sessionKey;
|
|
109
|
-
return {
|
|
110
|
-
sessionId: sessionKey,
|
|
111
|
-
configOptions: []
|
|
112
|
-
};
|
|
113
|
-
} catch (error) {
|
|
114
|
-
throw new AcpRuntimeError(normalizeAcpErrorCode("ACP_SESSION_NOT_FOUND"), error instanceof Error ? error.message : "Failed to load session");
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
async listSessions(_params) {
|
|
118
|
-
return { sessions: Array.from(this.state.sessions.keys()).map((sessionId) => ({
|
|
119
|
-
sessionId,
|
|
120
|
-
cwd: "/tmp",
|
|
121
|
-
title: sessionId,
|
|
122
|
-
lastActiveAt: Date.now()
|
|
123
|
-
})) };
|
|
124
|
-
}
|
|
125
|
-
async prompt(params) {
|
|
126
|
-
const sessionKey = params.sessionId || this.state.activeSessionKey;
|
|
127
|
-
if (!sessionKey) throw new AcpRuntimeError(normalizeAcpErrorCode("ACP_TURN_FAILED"), "No active session");
|
|
128
|
-
const text = this.extractTextFromPrompt(params.prompt);
|
|
129
|
-
const promptBytes = Buffer.byteLength(text, "utf-8");
|
|
130
|
-
if (promptBytes > MAX_PROMPT_BYTES) throw new AcpRuntimeError(normalizeAcpErrorCode("ACP_PROMPT_TOO_LARGE"), `Prompt size ${promptBytes} exceeds maximum ${MAX_PROMPT_BYTES}`);
|
|
131
|
-
const cfg = loadConfig();
|
|
132
|
-
const manager = getAcpSessionManager();
|
|
133
|
-
if ((await manager.resolveSession({
|
|
134
|
-
cfg,
|
|
135
|
-
sessionKey
|
|
136
|
-
})).kind !== "ready") throw new AcpRuntimeError(normalizeAcpErrorCode("ACP_SESSION_NOT_FOUND"), `Session ${sessionKey} not found`);
|
|
137
|
-
const requestId = params.messageId || randomUUID();
|
|
138
|
-
let stopReason = "end_turn";
|
|
139
|
-
try {
|
|
140
|
-
await manager.runTurn({
|
|
141
|
-
cfg,
|
|
142
|
-
sessionKey,
|
|
143
|
-
text,
|
|
144
|
-
mode: "prompt",
|
|
145
|
-
requestId,
|
|
146
|
-
onEvent: async (event) => {
|
|
147
|
-
await this.handleTurnEvent(sessionKey, event);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
} catch (error) {
|
|
151
|
-
stopReason = "cancelled";
|
|
152
|
-
await this.sendSessionUpdate(sessionKey, { agentMessageChunk: { content: [{
|
|
153
|
-
type: "text",
|
|
154
|
-
text: `Error: ${error instanceof Error ? error.message : String(error)}`
|
|
155
|
-
}] } });
|
|
156
|
-
}
|
|
157
|
-
return {
|
|
158
|
-
stopReason,
|
|
159
|
-
usage: {
|
|
160
|
-
inputTokens: 0,
|
|
161
|
-
outputTokens: 0,
|
|
162
|
-
totalTokens: 0
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Handle turn event and send to client
|
|
168
|
-
*/
|
|
169
|
-
async handleTurnEvent(sessionKey, event) {
|
|
170
|
-
switch (event.type) {
|
|
171
|
-
case "text_delta":
|
|
172
|
-
if (event.stream === "thought") await this.sendSessionUpdate(sessionKey, { agentThoughtChunk: { content: [{
|
|
173
|
-
type: "text",
|
|
174
|
-
text: event.text
|
|
175
|
-
}] } });
|
|
176
|
-
else await this.sendSessionUpdate(sessionKey, { agentMessageChunk: { content: [{
|
|
177
|
-
type: "text",
|
|
178
|
-
text: event.text
|
|
179
|
-
}] } });
|
|
180
|
-
break;
|
|
181
|
-
case "status":
|
|
182
|
-
await this.sendSessionUpdate(sessionKey, { agentMessageChunk: { content: [{
|
|
183
|
-
type: "text",
|
|
184
|
-
text: event.text
|
|
185
|
-
}] } });
|
|
186
|
-
break;
|
|
187
|
-
case "tool_call": {
|
|
188
|
-
const toolCallUpdate = {
|
|
189
|
-
toolCallId: event.toolCallId || randomUUID(),
|
|
190
|
-
kind: "interactive",
|
|
191
|
-
name: event.title || "tool",
|
|
192
|
-
input: event.input || {}
|
|
193
|
-
};
|
|
194
|
-
if ((event.status === "end" || event.status === "error") && event.output) toolCallUpdate.output = event.output;
|
|
195
|
-
if (event.status === "error") toolCallUpdate.error = event.error || "Tool execution failed";
|
|
196
|
-
await this.sendSessionUpdate(sessionKey, { toolCall: toolCallUpdate });
|
|
197
|
-
break;
|
|
198
|
-
}
|
|
199
|
-
case "error":
|
|
200
|
-
await this.sendSessionUpdate(sessionKey, { agentMessageChunk: { content: [{
|
|
201
|
-
type: "text",
|
|
202
|
-
text: `Error: ${event.message}`
|
|
203
|
-
}] } });
|
|
204
|
-
break;
|
|
205
|
-
case "done": break;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
async cancel(params) {
|
|
209
|
-
const sessionKey = params.sessionId || this.state.activeSessionKey;
|
|
210
|
-
if (!sessionKey) return;
|
|
211
|
-
const cfg = loadConfig();
|
|
212
|
-
await getAcpSessionManager().cancelSession({
|
|
213
|
-
cfg,
|
|
214
|
-
sessionKey,
|
|
215
|
-
reason: "cancelled by client"
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Extract text content from prompt blocks
|
|
220
|
-
*/
|
|
221
|
-
extractTextFromPrompt(prompt) {
|
|
222
|
-
const texts = [];
|
|
223
|
-
for (const block of prompt) if (block.text && typeof block.text === "string") texts.push(block.text);
|
|
224
|
-
return texts.join("\n");
|
|
225
|
-
}
|
|
226
|
-
};
|
|
227
|
-
/**
|
|
228
|
-
* Parse command line arguments
|
|
229
|
-
*/
|
|
230
|
-
function parseArgs(args) {
|
|
231
|
-
const opts = {};
|
|
232
|
-
for (let i = 0; i < args.length; i += 1) {
|
|
233
|
-
const arg = args[i];
|
|
234
|
-
if (arg === "--session") {
|
|
235
|
-
opts.defaultSessionKey = args[i + 1];
|
|
236
|
-
i += 1;
|
|
237
|
-
continue;
|
|
238
|
-
}
|
|
239
|
-
if (arg === "--session-label") {
|
|
240
|
-
opts.defaultSessionLabel = args[i + 1];
|
|
241
|
-
i += 1;
|
|
242
|
-
continue;
|
|
243
|
-
}
|
|
244
|
-
if (arg === "--require-existing") {
|
|
245
|
-
opts.requireExistingSession = true;
|
|
246
|
-
continue;
|
|
247
|
-
}
|
|
248
|
-
if (arg === "--reset-session") {
|
|
249
|
-
opts.resetSession = true;
|
|
250
|
-
continue;
|
|
251
|
-
}
|
|
252
|
-
if (arg === "--verbose" || arg === "-v") {
|
|
253
|
-
opts.verbose = true;
|
|
254
|
-
continue;
|
|
255
|
-
}
|
|
256
|
-
if (arg === "--help" || arg === "-h") {
|
|
257
|
-
printHelp();
|
|
258
|
-
process.exit(0);
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
return opts;
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Print help message
|
|
265
|
-
*/
|
|
266
|
-
function printHelp() {
|
|
267
|
-
console.log(`Usage: xopc acp serve [options]
|
|
268
|
-
|
|
269
|
-
ACP server for IDE integration.
|
|
270
|
-
|
|
271
|
-
Options:
|
|
272
|
-
--session <key> Default session key (e.g. "agent:main:main")
|
|
273
|
-
--session-label <label> Default session label to resolve
|
|
274
|
-
--require-existing Fail if the session key/label does not exist
|
|
275
|
-
--reset-session Reset the session key before first use
|
|
276
|
-
--verbose, -v Verbose logging to stderr
|
|
277
|
-
--help, -h Show this help message
|
|
278
|
-
`);
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* Main entry point
|
|
282
|
-
*/
|
|
283
|
-
async function main() {
|
|
284
|
-
const opts = parseArgs(process.argv.slice(2));
|
|
285
|
-
const stream = ndJsonStream(Writable.toWeb(process.stdout), Readable.toWeb(process.stdin));
|
|
286
|
-
const server = new AcpServer(opts);
|
|
287
|
-
new AgentSideConnection((conn) => {
|
|
288
|
-
server.setConnection(conn);
|
|
289
|
-
return server;
|
|
290
|
-
}, stream);
|
|
291
|
-
await new Promise(() => {});
|
|
292
|
-
}
|
|
293
|
-
if (isMainModule({ currentFile: fileURLToPath(import.meta.url) })) main().catch((err) => {
|
|
294
|
-
console.error(String(err));
|
|
295
|
-
process.exit(1);
|
|
296
|
-
});
|
|
297
|
-
//#endregion
|
|
298
|
-
export { AcpServer, main };
|
|
299
|
-
|
|
300
|
-
//# sourceMappingURL=server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","names":[],"sources":["../../../src/acp/server.ts"],"sourcesContent":["/**\n * ACP Gateway Server - Full Implementation\n * \n * CLI server that bridges ACP protocol to xopc's AgentService.\n * Implements the Agent interface from @agentclientprotocol/sdk.\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport { Readable, Writable } from \"node:stream\";\nimport { fileURLToPath } from \"node:url\";\nimport { AgentSideConnection, ndJsonStream } from \"@agentclientprotocol/sdk\";\nimport type { Agent } from \"@agentclientprotocol/sdk\";\nimport { loadConfig } from \"../config/loader.js\";\nimport { isMainModule } from \"../infra/is-main.js\";\nimport { AcpRuntimeError, normalizeAcpErrorCode } from \"./runtime/errors.js\";\nimport { getAcpSessionManager } from \"./control-plane/manager.js\";\n// Re-export for Gateway integration\n// import { registerAcpRuntimeBackend } from \"./runtime/registry.js\";\n// import { createLocalAcpRuntimeBackend } from \"./runtime/backends/local.js\";\nimport type { AcpServerOptions } from \"./types.js\";\nimport type { AcpRuntimeEvent } from \"./runtime/types.js\";\n\n// Maximum allowed prompt size (2MB)\nconst MAX_PROMPT_BYTES = 2 * 1024 * 1024;\n\n/**\n * ACP Server State\n */\ninterface AcpServerState {\n activeSessionKey: string | null;\n sessions: Map<string, {\n agent: string;\n mode: \"persistent\" | \"oneshot\";\n }>;\n}\n\n/**\n * ACP Server - implements Agent interface from @agentclientprotocol/sdk\n * \n * Note: Uses type casting to handle SDK type complexity\n */\nclass AcpServer implements Agent {\n private readonly state: AcpServerState = {\n activeSessionKey: null,\n sessions: new Map(),\n };\n private connection: AgentSideConnection | null = null;\n\n constructor(private readonly opts: AcpServerOptions = {}) {}\n\n /**\n * Set the connection (called by AgentSideConnection)\n */\n setConnection(conn: AgentSideConnection): void {\n this.connection = conn;\n }\n\n /**\n * Send session update notification to client\n */\n private async sendSessionUpdate(sessionId: string, update: any): Promise<void> {\n if (!this.connection) {\n return;\n }\n await this.connection.sessionUpdate({\n sessionId,\n update,\n });\n }\n\n // ============== Agent Interface Implementation ==============\n\n async initialize(params: any): Promise<any> {\n return {\n protocolVersion: params.protocolVersion || 1,\n agentCapabilities: {\n tools: true,\n multiModal: true,\n attachments: true,\n idle: true,\n commands: [\n { name: \"session.reset\", description: \"Reset the session\" },\n { name: \"session.status\", description: \"Get session status\" },\n ],\n envVars: true,\n },\n agentInfo: {\n name: \"xopc-acp\",\n version: \"1.0.0\",\n },\n };\n }\n\n async authenticate(_params: any): Promise<any> {\n // xopc uses Gateway-level auth, ACP layer is always authenticated\n return { authenticated: true };\n }\n\n async newSession(params: any): Promise<any> {\n const sessionKey = `acp:${randomUUID()}`;\n const agent = \"main\";\n const mode = \"persistent\";\n const cfg = loadConfig();\n \n try {\n const manager = getAcpSessionManager();\n await manager.initializeSession({\n cfg,\n sessionKey,\n agent,\n mode,\n cwd: params.cwd,\n });\n\n this.state.sessions.set(sessionKey, { agent, mode });\n this.state.activeSessionKey = sessionKey;\n\n return { \n sessionId: sessionKey,\n configOptions: [],\n };\n } catch (error) {\n throw new AcpRuntimeError(\n normalizeAcpErrorCode(\"ACP_SESSION_INIT_FAILED\"),\n error instanceof Error ? error.message : \"Failed to create session\"\n );\n }\n }\n\n async loadSession(params: any): Promise<any> {\n const sessionKey = params.sessionId;\n const cfg = loadConfig();\n \n try {\n const manager = getAcpSessionManager();\n const resolution = await manager.resolveSession({ cfg, sessionKey });\n\n if (resolution.kind !== \"ready\") {\n throw new AcpRuntimeError(normalizeAcpErrorCode(\"ACP_SESSION_NOT_FOUND\"), `Session ${sessionKey} not found`);\n }\n\n this.state.activeSessionKey = sessionKey;\n return { \n sessionId: sessionKey,\n configOptions: [],\n };\n } catch (error) {\n throw new AcpRuntimeError(\n normalizeAcpErrorCode(\"ACP_SESSION_NOT_FOUND\"),\n error instanceof Error ? error.message : \"Failed to load session\"\n );\n }\n }\n\n async listSessions(_params: any): Promise<any> {\n return {\n sessions: Array.from(this.state.sessions.keys()).map((sessionId) => ({ \n sessionId,\n cwd: \"/tmp\",\n title: sessionId,\n lastActiveAt: Date.now(),\n })),\n };\n }\n\n async prompt(params: any): Promise<any> {\n const sessionKey = params.sessionId || this.state.activeSessionKey;\n if (!sessionKey) {\n throw new AcpRuntimeError(normalizeAcpErrorCode(\"ACP_TURN_FAILED\"), \"No active session\");\n }\n\n // Extract text from prompt blocks\n const text = this.extractTextFromPrompt(params.prompt);\n \n // Validate prompt size\n const promptBytes = Buffer.byteLength(text, \"utf-8\");\n if (promptBytes > MAX_PROMPT_BYTES) {\n throw new AcpRuntimeError(normalizeAcpErrorCode(\"ACP_PROMPT_TOO_LARGE\"), `Prompt size ${promptBytes} exceeds maximum ${MAX_PROMPT_BYTES}`);\n }\n\n const cfg = loadConfig();\n const manager = getAcpSessionManager();\n\n // Get session status first\n const resolution = await manager.resolveSession({ cfg, sessionKey });\n if (resolution.kind !== \"ready\") {\n throw new AcpRuntimeError(normalizeAcpErrorCode(\"ACP_SESSION_NOT_FOUND\"), `Session ${sessionKey} not found`);\n }\n\n // Run the turn with event callback for streaming updates\n const requestId = params.messageId || randomUUID();\n let stopReason = \"end_turn\";\n\n try {\n // Execute turn with onEvent callback for streaming\n await manager.runTurn({\n cfg,\n sessionKey,\n text,\n mode: \"prompt\",\n requestId,\n onEvent: async (event: AcpRuntimeEvent) => {\n await this.handleTurnEvent(sessionKey, event);\n },\n });\n } catch (error) {\n stopReason = \"cancelled\";\n await this.sendSessionUpdate(sessionKey, {\n agentMessageChunk: { content: [{ type: \"text\", text: `Error: ${error instanceof Error ? error.message : String(error)}` }] },\n });\n }\n\n return {\n stopReason,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n },\n };\n }\n\n /**\n * Handle turn event and send to client\n */\n private async handleTurnEvent(sessionKey: string, event: AcpRuntimeEvent): Promise<void> {\n switch (event.type) {\n case \"text_delta\": {\n const isThought = event.stream === \"thought\";\n if (isThought) {\n await this.sendSessionUpdate(sessionKey, {\n agentThoughtChunk: { content: [{ type: \"text\", text: event.text }] },\n });\n } else {\n await this.sendSessionUpdate(sessionKey, {\n agentMessageChunk: { content: [{ type: \"text\", text: event.text }] },\n });\n }\n break;\n }\n case \"status\": {\n await this.sendSessionUpdate(sessionKey, {\n agentMessageChunk: { content: [{ type: \"text\", text: event.text }] },\n });\n break;\n }\n case \"tool_call\": {\n const toolCallId = event.toolCallId || randomUUID();\n \n // Build tool call update based on status\n const toolCallUpdate: any = {\n toolCallId,\n kind: \"interactive\",\n name: event.title || \"tool\",\n input: event.input || {},\n };\n\n // Add output if available (for end/error status)\n if ((event.status === \"end\" || event.status === \"error\") && event.output) {\n toolCallUpdate.output = event.output;\n }\n\n // Add error info if status is error\n if (event.status === \"error\") {\n toolCallUpdate.error = event.error || \"Tool execution failed\";\n }\n\n await this.sendSessionUpdate(sessionKey, {\n toolCall: toolCallUpdate,\n });\n break;\n }\n case \"error\": {\n await this.sendSessionUpdate(sessionKey, {\n agentMessageChunk: { content: [{ type: \"text\", text: `Error: ${event.message}` }] },\n });\n break;\n }\n case \"done\": {\n break;\n }\n }\n }\n\n async cancel(params: any): Promise<void> {\n const sessionKey = params.sessionId || this.state.activeSessionKey;\n if (!sessionKey) {\n return;\n }\n\n const cfg = loadConfig();\n const manager = getAcpSessionManager();\n \n await manager.cancelSession({\n cfg,\n sessionKey,\n reason: \"cancelled by client\",\n });\n }\n\n // ============== Helpers ==============\n\n /**\n * Extract text content from prompt blocks\n */\n private extractTextFromPrompt(prompt: any[]): string {\n const texts: string[] = [];\n \n for (const block of prompt) {\n if (block.text && typeof block.text === \"string\") {\n texts.push(block.text);\n }\n }\n \n return texts.join(\"\\n\");\n }\n}\n\n/**\n * Parse command line arguments\n */\nfunction parseArgs(args: string[]): AcpServerOptions {\n const opts: AcpServerOptions = {};\n \n for (let i = 0; i < args.length; i += 1) {\n const arg = args[i];\n \n if (arg === \"--session\") {\n opts.defaultSessionKey = args[i + 1];\n i += 1;\n continue;\n }\n \n if (arg === \"--session-label\") {\n opts.defaultSessionLabel = args[i + 1];\n i += 1;\n continue;\n }\n \n if (arg === \"--require-existing\") {\n opts.requireExistingSession = true;\n continue;\n }\n \n if (arg === \"--reset-session\") {\n opts.resetSession = true;\n continue;\n }\n \n if (arg === \"--verbose\" || arg === \"-v\") {\n opts.verbose = true;\n continue;\n }\n \n if (arg === \"--help\" || arg === \"-h\") {\n printHelp();\n process.exit(0);\n }\n }\n \n return opts;\n}\n\n/**\n * Print help message\n */\nfunction printHelp(): void {\n console.log(`Usage: xopc acp serve [options]\n\nACP server for IDE integration.\n\nOptions:\n --session <key> Default session key (e.g. \"agent:main:main\")\n --session-label <label> Default session label to resolve\n --require-existing Fail if the session key/label does not exist\n --reset-session Reset the session key before first use\n --verbose, -v Verbose logging to stderr\n --help, -h Show this help message\n`);\n}\n\n/**\n * Main entry point\n */\nexport async function main(): Promise<void> {\n const argv = process.argv.slice(2);\n const opts = parseArgs(argv);\n\n // Set up stdio streams for ACP protocol\n const input = Writable.toWeb(process.stdout);\n const output = Readable.toWeb(process.stdin) as unknown as ReadableStream<Uint8Array>;\n const stream = ndJsonStream(input, output);\n\n // Create ACP server and pass it to AgentSideConnection\n const server = new AcpServer(opts);\n \n // Set up connection when created\n new AgentSideConnection((conn: AgentSideConnection) => {\n server.setConnection(conn);\n return server as any;\n }, stream);\n\n // Keep process alive\n await new Promise(() => {});\n}\n\n// Run main\nif (isMainModule({ currentFile: fileURLToPath(import.meta.url) })) {\n main().catch((err) => {\n console.error(String(err));\n process.exit(1);\n });\n}\n\nexport { AcpServer };\n"],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ACP Session Store
|
|
3
|
-
*
|
|
4
|
-
* Simple in-memory session store for ACP sessions.
|
|
5
|
-
*/
|
|
6
|
-
import type { SessionAcpMeta } from "./runtime/types.js";
|
|
7
|
-
export interface SessionEntry {
|
|
8
|
-
sessionKey: string;
|
|
9
|
-
acp?: SessionAcpMeta;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Default in-memory ACP session store
|
|
13
|
-
*/
|
|
14
|
-
export declare class DefaultAcpSessionStore {
|
|
15
|
-
private sessions;
|
|
16
|
-
get(sessionKey: string): Promise<SessionEntry | null>;
|
|
17
|
-
set(sessionKey: string, entry: SessionEntry): Promise<void>;
|
|
18
|
-
delete(sessionKey: string): Promise<void>;
|
|
19
|
-
list(): Promise<SessionEntry[]>;
|
|
20
|
-
clear(): Promise<void>;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Default session store instance
|
|
24
|
-
*/
|
|
25
|
-
export declare const defaultAcpSessionStore: DefaultAcpSessionStore;
|
|
26
|
-
/**
|
|
27
|
-
* AcpSessionStore interface
|
|
28
|
-
*/
|
|
29
|
-
export type AcpSessionStore = DefaultAcpSessionStore;
|
package/dist/src/acp/session.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
//#region src/acp/session.ts
|
|
2
|
-
/**
|
|
3
|
-
* Default in-memory ACP session store
|
|
4
|
-
*/
|
|
5
|
-
var DefaultAcpSessionStore = class {
|
|
6
|
-
sessions = /* @__PURE__ */ new Map();
|
|
7
|
-
async get(sessionKey) {
|
|
8
|
-
return this.sessions.get(sessionKey) || null;
|
|
9
|
-
}
|
|
10
|
-
async set(sessionKey, entry) {
|
|
11
|
-
this.sessions.set(sessionKey, entry);
|
|
12
|
-
}
|
|
13
|
-
async delete(sessionKey) {
|
|
14
|
-
this.sessions.delete(sessionKey);
|
|
15
|
-
}
|
|
16
|
-
async list() {
|
|
17
|
-
return Array.from(this.sessions.values());
|
|
18
|
-
}
|
|
19
|
-
async clear() {
|
|
20
|
-
this.sessions.clear();
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Default session store instance
|
|
25
|
-
*/
|
|
26
|
-
const defaultAcpSessionStore = new DefaultAcpSessionStore();
|
|
27
|
-
//#endregion
|
|
28
|
-
export { DefaultAcpSessionStore, defaultAcpSessionStore };
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=session.js.map
|