@ai-agent-forge/agent-forge 0.85.0
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/CHANGELOG.md +5969 -0
- package/README.md +629 -0
- package/dist/artifacts/artifact-store.d.ts +51 -0
- package/dist/artifacts/artifact-store.d.ts.map +1 -0
- package/dist/artifacts/artifact-store.js +87 -0
- package/dist/artifacts/artifact-store.js.map +1 -0
- package/dist/artifacts/paged-read.d.ts +51 -0
- package/dist/artifacts/paged-read.d.ts.map +1 -0
- package/dist/artifacts/paged-read.js +55 -0
- package/dist/artifacts/paged-read.js.map +1 -0
- package/dist/bun/cli.d.ts +3 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +11 -0
- package/dist/bun/cli.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -0
- package/dist/bun/register-bedrock.js +4 -0
- package/dist/bun/register-bedrock.js.map +1 -0
- package/dist/bun/restore-sandbox-env.d.ts +17 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +36 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/bundle/.build-manifest.json +3566 -0
- package/dist/bundle/chunks/anthropic-messages-RJYU4TCY.js +6 -0
- package/dist/bundle/chunks/anthropic.js +75 -0
- package/dist/bundle/chunks/azure-openai-responses-LESTCUL7.js +2 -0
- package/dist/bundle/chunks/bedrock-converse-stream.js +78 -0
- package/dist/bundle/chunks/chunk-3QKHSPQL.js +8 -0
- package/dist/bundle/chunks/chunk-4L3WN2XY.js +2 -0
- package/dist/bundle/chunks/chunk-4NKZMFSZ.js +1579 -0
- package/dist/bundle/chunks/chunk-6CYCI3EJ.js +12 -0
- package/dist/bundle/chunks/chunk-6R7UI4IY.js +2 -0
- package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
- package/dist/bundle/chunks/chunk-7ZY7IXZD.js +4 -0
- package/dist/bundle/chunks/chunk-DRQDKNXA.js +2 -0
- package/dist/bundle/chunks/chunk-DTD7JQ7Y.js +42 -0
- package/dist/bundle/chunks/chunk-EWXX34QG.js +2 -0
- package/dist/bundle/chunks/chunk-GMWCTUPB.js +2 -0
- package/dist/bundle/chunks/chunk-JUUC5AZY.js +2 -0
- package/dist/bundle/chunks/chunk-KQEGUM34.js +2 -0
- package/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
- package/dist/bundle/chunks/chunk-MDOTREMR.js +11 -0
- package/dist/bundle/chunks/chunk-NUHFSC37.js +25 -0
- package/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
- package/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
- package/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
- package/dist/bundle/chunks/chunk-SER2HCLE.js +38 -0
- package/dist/bundle/chunks/chunk-TEPMHNKQ.js +2 -0
- package/dist/bundle/chunks/chunk-V46XUTK3.js +2 -0
- package/dist/bundle/chunks/chunk-WGLBM2BP.js +2 -0
- package/dist/bundle/chunks/chunk-WW3LMV3F.js +2 -0
- package/dist/bundle/chunks/chunk-XDUWOHPL.js +6 -0
- package/dist/bundle/chunks/github-copilot.js +2 -0
- package/dist/bundle/chunks/google-generative-ai-NZ66X6K7.js +2 -0
- package/dist/bundle/chunks/google-vertex-2ZZOFBNQ.js +2 -0
- package/dist/bundle/chunks/https-proxy-agent-UDEHOBGS.js +13 -0
- package/dist/bundle/chunks/image-resize-worker.js +2 -0
- package/dist/bundle/chunks/kimi-coding.js +2 -0
- package/dist/bundle/chunks/lib-HGQMNYVT.js +9 -0
- package/dist/bundle/chunks/mistral-conversations-B6DZRMEK.js +5 -0
- package/dist/bundle/chunks/multipart-parser-SQ6GDJL7.js +3 -0
- package/dist/bundle/chunks/node-O3RIBJRH.js +16 -0
- package/dist/bundle/chunks/node-TWVVAGPO.js +2 -0
- package/dist/bundle/chunks/openai-codex-responses-UFH6O5K6.js +10 -0
- package/dist/bundle/chunks/openai-codex.js +75 -0
- package/dist/bundle/chunks/openai-completions-A55GHA4O.js +7 -0
- package/dist/bundle/chunks/openai-responses-TJLXRAXR.js +2 -0
- package/dist/bundle/chunks/openrouter-images-G3GT5BVT.js +2 -0
- package/dist/bundle/chunks/openrouter.js +75 -0
- package/dist/bundle/chunks/pi-messages-SLF355GF.js +8 -0
- package/dist/bundle/chunks/radius.js +75 -0
- package/dist/bundle/chunks/src-UK77SYZE.js +4 -0
- package/dist/bundle/chunks/xai.js +2 -0
- package/dist/bundle/cli.js +3 -0
- package/dist/bundle/client.js +2 -0
- package/dist/bundle/index.js +8 -0
- package/dist/bundle/rpc-entry.js +3 -0
- package/dist/capabilities/builtin.d.ts +46 -0
- package/dist/capabilities/builtin.d.ts.map +1 -0
- package/dist/capabilities/builtin.js +68 -0
- package/dist/capabilities/builtin.js.map +1 -0
- package/dist/cli/args.d.ts +102 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +712 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/auth-check.d.ts +19 -0
- package/dist/cli/auth-check.d.ts.map +1 -0
- package/dist/cli/auth-check.js +50 -0
- package/dist/cli/auth-check.js.map +1 -0
- package/dist/cli/auth-command.d.ts +24 -0
- package/dist/cli/auth-command.d.ts.map +1 -0
- package/dist/cli/auth-command.js +102 -0
- package/dist/cli/auth-command.js.map +1 -0
- package/dist/cli/config-selector.d.ts +23 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +51 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/credential-print.d.ts +13 -0
- package/dist/cli/credential-print.d.ts.map +1 -0
- package/dist/cli/credential-print.js +76 -0
- package/dist/cli/credential-print.js.map +1 -0
- package/dist/cli/experimental/auth.d.ts +16 -0
- package/dist/cli/experimental/auth.d.ts.map +1 -0
- package/dist/cli/experimental/auth.js +13 -0
- package/dist/cli/experimental/auth.js.map +1 -0
- package/dist/cli/experimental/cli.d.ts +6 -0
- package/dist/cli/experimental/cli.d.ts.map +1 -0
- package/dist/cli/experimental/cli.js +5 -0
- package/dist/cli/experimental/cli.js.map +1 -0
- package/dist/cli/experimental/command-options.d.ts +17 -0
- package/dist/cli/experimental/command-options.d.ts.map +1 -0
- package/dist/cli/experimental/command-options.js +35 -0
- package/dist/cli/experimental/command-options.js.map +1 -0
- package/dist/cli/experimental/command.d.ts +63 -0
- package/dist/cli/experimental/command.d.ts.map +1 -0
- package/dist/cli/experimental/command.js +130 -0
- package/dist/cli/experimental/command.js.map +1 -0
- package/dist/cli/experimental/commands/client.d.ts +13 -0
- package/dist/cli/experimental/commands/client.d.ts.map +1 -0
- package/dist/cli/experimental/commands/client.js +25 -0
- package/dist/cli/experimental/commands/client.js.map +1 -0
- package/dist/cli/experimental/commands/pi.d.ts +15 -0
- package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
- package/dist/cli/experimental/commands/pi.js +26 -0
- package/dist/cli/experimental/commands/pi.js.map +1 -0
- package/dist/cli/experimental/commands/server.d.ts +13 -0
- package/dist/cli/experimental/commands/server.d.ts.map +1 -0
- package/dist/cli/experimental/commands/server.js +25 -0
- package/dist/cli/experimental/commands/server.js.map +1 -0
- package/dist/cli/experimental/transport-address.d.ts +10 -0
- package/dist/cli/experimental/transport-address.d.ts.map +1 -0
- package/dist/cli/experimental/transport-address.js +38 -0
- package/dist/cli/experimental/transport-address.js.map +1 -0
- package/dist/cli/file-processor.d.ts +15 -0
- package/dist/cli/file-processor.d.ts.map +1 -0
- package/dist/cli/file-processor.js +71 -0
- package/dist/cli/file-processor.js.map +1 -0
- package/dist/cli/initial-message.d.ts +18 -0
- package/dist/cli/initial-message.d.ts.map +1 -0
- package/dist/cli/initial-message.js +22 -0
- package/dist/cli/initial-message.js.map +1 -0
- package/dist/cli/list-models.d.ts +9 -0
- package/dist/cli/list-models.d.ts.map +1 -0
- package/dist/cli/list-models.js +98 -0
- package/dist/cli/list-models.js.map +1 -0
- package/dist/cli/plugin-command.d.ts +50 -0
- package/dist/cli/plugin-command.d.ts.map +1 -0
- package/dist/cli/plugin-command.js +85 -0
- package/dist/cli/plugin-command.js.map +1 -0
- package/dist/cli/plugin-manager-controller.d.ts +59 -0
- package/dist/cli/plugin-manager-controller.d.ts.map +1 -0
- package/dist/cli/plugin-manager-controller.js +183 -0
- package/dist/cli/plugin-manager-controller.js.map +1 -0
- package/dist/cli/plugin-selection-controller.d.ts +57 -0
- package/dist/cli/plugin-selection-controller.d.ts.map +1 -0
- package/dist/cli/plugin-selection-controller.js +159 -0
- package/dist/cli/plugin-selection-controller.js.map +1 -0
- package/dist/cli/serve.d.ts +39 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +124 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/session-picker.d.ts +30 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +62 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli/startup-ui.d.ts +20 -0
- package/dist/cli/startup-ui.d.ts.map +1 -0
- package/dist/cli/startup-ui.js +185 -0
- package/dist/cli/startup-ui.js.map +1 -0
- package/dist/cli/trace-view.d.ts +86 -0
- package/dist/cli/trace-view.d.ts.map +1 -0
- package/dist/cli/trace-view.js +263 -0
- package/dist/cli/trace-view.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +19 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/remote-session.d.ts +53 -0
- package/dist/client/remote-session.d.ts.map +1 -0
- package/dist/client/remote-session.js +340 -0
- package/dist/client/remote-session.js.map +1 -0
- package/dist/client/transcript.d.ts +12 -0
- package/dist/client/transcript.d.ts.map +1 -0
- package/dist/client/transcript.js +98 -0
- package/dist/client/transcript.js.map +1 -0
- package/dist/config.d.ts +95 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +459 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-capability-contract.d.ts +322 -0
- package/dist/core/agent-capability-contract.d.ts.map +1 -0
- package/dist/core/agent-capability-contract.js +1154 -0
- package/dist/core/agent-capability-contract.js.map +1 -0
- package/dist/core/agent-session-bash.d.ts +51 -0
- package/dist/core/agent-session-bash.d.ts.map +1 -0
- package/dist/core/agent-session-bash.js +138 -0
- package/dist/core/agent-session-bash.js.map +1 -0
- package/dist/core/agent-session-compaction.d.ts +188 -0
- package/dist/core/agent-session-compaction.d.ts.map +1 -0
- package/dist/core/agent-session-compaction.js +1071 -0
- package/dist/core/agent-session-compaction.js.map +1 -0
- package/dist/core/agent-session-context.d.ts +43 -0
- package/dist/core/agent-session-context.d.ts.map +1 -0
- package/dist/core/agent-session-context.js +170 -0
- package/dist/core/agent-session-context.js.map +1 -0
- package/dist/core/agent-session-extensions.d.ts +30 -0
- package/dist/core/agent-session-extensions.d.ts.map +1 -0
- package/dist/core/agent-session-extensions.js +74 -0
- package/dist/core/agent-session-extensions.js.map +1 -0
- package/dist/core/agent-session-internal.d.ts +290 -0
- package/dist/core/agent-session-internal.d.ts.map +1 -0
- package/dist/core/agent-session-internal.js +40 -0
- package/dist/core/agent-session-internal.js.map +1 -0
- package/dist/core/agent-session-lifecycle.d.ts +242 -0
- package/dist/core/agent-session-lifecycle.d.ts.map +1 -0
- package/dist/core/agent-session-lifecycle.js +699 -0
- package/dist/core/agent-session-lifecycle.js.map +1 -0
- package/dist/core/agent-session-loop-runner.d.ts +52 -0
- package/dist/core/agent-session-loop-runner.d.ts.map +1 -0
- package/dist/core/agent-session-loop-runner.js +168 -0
- package/dist/core/agent-session-loop-runner.js.map +1 -0
- package/dist/core/agent-session-loop.d.ts +39 -0
- package/dist/core/agent-session-loop.d.ts.map +1 -0
- package/dist/core/agent-session-loop.js +155 -0
- package/dist/core/agent-session-loop.js.map +1 -0
- package/dist/core/agent-session-model.d.ts +49 -0
- package/dist/core/agent-session-model.d.ts.map +1 -0
- package/dist/core/agent-session-model.js +155 -0
- package/dist/core/agent-session-model.js.map +1 -0
- package/dist/core/agent-session-paths.d.ts +3 -0
- package/dist/core/agent-session-paths.d.ts.map +1 -0
- package/dist/core/agent-session-paths.js +14 -0
- package/dist/core/agent-session-paths.js.map +1 -0
- package/dist/core/agent-session-projection.d.ts +53 -0
- package/dist/core/agent-session-projection.d.ts.map +1 -0
- package/dist/core/agent-session-projection.js +195 -0
- package/dist/core/agent-session-projection.js.map +1 -0
- package/dist/core/agent-session-retry.d.ts +28 -0
- package/dist/core/agent-session-retry.d.ts.map +1 -0
- package/dist/core/agent-session-retry.js +141 -0
- package/dist/core/agent-session-retry.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +181 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +297 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +281 -0
- package/dist/core/agent-session-services.d.ts.map +1 -0
- package/dist/core/agent-session-services.js +680 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session-store.d.ts +47 -0
- package/dist/core/agent-session-store.d.ts.map +1 -0
- package/dist/core/agent-session-store.js +155 -0
- package/dist/core/agent-session-store.js.map +1 -0
- package/dist/core/agent-session-tools.d.ts +36 -0
- package/dist/core/agent-session-tools.d.ts.map +1 -0
- package/dist/core/agent-session-tools.js +305 -0
- package/dist/core/agent-session-tools.js.map +1 -0
- package/dist/core/agent-session.d.ts +1156 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +2550 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/auth-guidance.d.ts +5 -0
- package/dist/core/auth-guidance.d.ts.map +1 -0
- package/dist/core/auth-guidance.js +21 -0
- package/dist/core/auth-guidance.js.map +1 -0
- package/dist/core/auth-storage.d.ts +72 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +426 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +32 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +111 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/cache-stats.d.ts +49 -0
- package/dist/core/cache-stats.d.ts.map +1 -0
- package/dist/core/cache-stats.js +101 -0
- package/dist/core/cache-stats.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +88 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +220 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +178 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -0
- package/dist/core/compaction/compaction.js +608 -0
- package/dist/core/compaction/compaction.js.map +1 -0
- package/dist/core/compaction/index.d.ts +7 -0
- package/dist/core/compaction/index.d.ts.map +1 -0
- package/dist/core/compaction/index.js +7 -0
- package/dist/core/compaction/index.js.map +1 -0
- package/dist/core/compaction/utils.d.ts +49 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +170 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +4 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +11 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +15 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +2 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/embedded-sdk.d.ts +96 -0
- package/dist/core/embedded-sdk.d.ts.map +1 -0
- package/dist/core/embedded-sdk.js +395 -0
- package/dist/core/embedded-sdk.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/exec.d.ts +29 -0
- package/dist/core/exec.d.ts.map +1 -0
- package/dist/core/exec.js +75 -0
- package/dist/core/exec.js.map +1 -0
- package/dist/core/experimental.d.ts +2 -0
- package/dist/core/experimental.d.ts.map +1 -0
- package/dist/core/experimental.js +6 -0
- package/dist/core/experimental.js.map +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
- package/dist/core/export-html/ansi-to-html.js +249 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -0
- package/dist/core/export-html/index.d.ts +37 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +226 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/template.css +1066 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1864 -0
- package/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +108 -0
- package/dist/core/export-html/tool-renderer.js.map +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +1213 -0
- package/dist/core/export-html/vendor/marked.min.js +78 -0
- package/dist/core/extensions/agent-composition.d.ts +67 -0
- package/dist/core/extensions/agent-composition.d.ts.map +1 -0
- package/dist/core/extensions/agent-composition.js +785 -0
- package/dist/core/extensions/agent-composition.js.map +1 -0
- package/dist/core/extensions/bootstrap-agent-loop.d.ts +203 -0
- package/dist/core/extensions/bootstrap-agent-loop.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-agent-loop.js +565 -0
- package/dist/core/extensions/bootstrap-agent-loop.js.map +1 -0
- package/dist/core/extensions/bootstrap-branch-summary-policy.d.ts +7 -0
- package/dist/core/extensions/bootstrap-branch-summary-policy.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-branch-summary-policy.js +28 -0
- package/dist/core/extensions/bootstrap-branch-summary-policy.js.map +1 -0
- package/dist/core/extensions/bootstrap-compaction-policy.d.ts +7 -0
- package/dist/core/extensions/bootstrap-compaction-policy.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-compaction-policy.js +81 -0
- package/dist/core/extensions/bootstrap-compaction-policy.js.map +1 -0
- package/dist/core/extensions/bootstrap-lifecycle.d.ts +26 -0
- package/dist/core/extensions/bootstrap-lifecycle.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-lifecycle.js +181 -0
- package/dist/core/extensions/bootstrap-lifecycle.js.map +1 -0
- package/dist/core/extensions/bootstrap-overflow-policy.d.ts +7 -0
- package/dist/core/extensions/bootstrap-overflow-policy.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-overflow-policy.js +29 -0
- package/dist/core/extensions/bootstrap-overflow-policy.js.map +1 -0
- package/dist/core/extensions/bootstrap-retry-policy.d.ts +7 -0
- package/dist/core/extensions/bootstrap-retry-policy.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-retry-policy.js +28 -0
- package/dist/core/extensions/bootstrap-retry-policy.js.map +1 -0
- package/dist/core/extensions/bootstrap-skills.d.ts +16 -0
- package/dist/core/extensions/bootstrap-skills.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-skills.js +119 -0
- package/dist/core/extensions/bootstrap-skills.js.map +1 -0
- package/dist/core/extensions/bootstrap-tools.d.ts +20 -0
- package/dist/core/extensions/bootstrap-tools.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-tools.js +35 -0
- package/dist/core/extensions/bootstrap-tools.js.map +1 -0
- package/dist/core/extensions/capability-exports.d.ts +5 -0
- package/dist/core/extensions/capability-exports.d.ts.map +1 -0
- package/dist/core/extensions/capability-exports.js +4 -0
- package/dist/core/extensions/capability-exports.js.map +1 -0
- package/dist/core/extensions/capability-plugin.d.ts +69 -0
- package/dist/core/extensions/capability-plugin.d.ts.map +1 -0
- package/dist/core/extensions/capability-plugin.js +485 -0
- package/dist/core/extensions/capability-plugin.js.map +1 -0
- package/dist/core/extensions/capability-runtime-events.d.ts +22 -0
- package/dist/core/extensions/capability-runtime-events.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-events.js +381 -0
- package/dist/core/extensions/capability-runtime-events.js.map +1 -0
- package/dist/core/extensions/capability-runtime-guards.d.ts +93 -0
- package/dist/core/extensions/capability-runtime-guards.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-guards.js +800 -0
- package/dist/core/extensions/capability-runtime-guards.js.map +1 -0
- package/dist/core/extensions/capability-runtime-inspect.d.ts +12 -0
- package/dist/core/extensions/capability-runtime-inspect.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-inspect.js +106 -0
- package/dist/core/extensions/capability-runtime-inspect.js.map +1 -0
- package/dist/core/extensions/capability-runtime-manifest.d.ts +19 -0
- package/dist/core/extensions/capability-runtime-manifest.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-manifest.js +218 -0
- package/dist/core/extensions/capability-runtime-manifest.js.map +1 -0
- package/dist/core/extensions/capability-runtime-operation.d.ts +26 -0
- package/dist/core/extensions/capability-runtime-operation.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-operation.js +88 -0
- package/dist/core/extensions/capability-runtime-operation.js.map +1 -0
- package/dist/core/extensions/capability-runtime-snapshot.d.ts +11 -0
- package/dist/core/extensions/capability-runtime-snapshot.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-snapshot.js +81 -0
- package/dist/core/extensions/capability-runtime-snapshot.js.map +1 -0
- package/dist/core/extensions/capability-runtime-store.d.ts +34 -0
- package/dist/core/extensions/capability-runtime-store.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-store.js +153 -0
- package/dist/core/extensions/capability-runtime-store.js.map +1 -0
- package/dist/core/extensions/capability-runtime-tool.d.ts +10 -0
- package/dist/core/extensions/capability-runtime-tool.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-tool.js +10 -0
- package/dist/core/extensions/capability-runtime-tool.js.map +1 -0
- package/dist/core/extensions/capability-runtime-types.d.ts +303 -0
- package/dist/core/extensions/capability-runtime-types.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-types.js +2 -0
- package/dist/core/extensions/capability-runtime-types.js.map +1 -0
- package/dist/core/extensions/capability-runtime-validation.d.ts +35 -0
- package/dist/core/extensions/capability-runtime-validation.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-validation.js +380 -0
- package/dist/core/extensions/capability-runtime-validation.js.map +1 -0
- package/dist/core/extensions/capability-runtime.d.ts +7 -0
- package/dist/core/extensions/capability-runtime.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime.js +2170 -0
- package/dist/core/extensions/capability-runtime.js.map +1 -0
- package/dist/core/extensions/compaction-memory-failure-mode.d.ts +43 -0
- package/dist/core/extensions/compaction-memory-failure-mode.d.ts.map +1 -0
- package/dist/core/extensions/compaction-memory-failure-mode.js +31 -0
- package/dist/core/extensions/compaction-memory-failure-mode.js.map +1 -0
- package/dist/core/extensions/context-strategy-binding.d.ts +12 -0
- package/dist/core/extensions/context-strategy-binding.d.ts.map +1 -0
- package/dist/core/extensions/context-strategy-binding.js +54 -0
- package/dist/core/extensions/context-strategy-binding.js.map +1 -0
- package/dist/core/extensions/index.d.ts +19 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/index.js +18 -0
- package/dist/core/extensions/index.js.map +1 -0
- package/dist/core/extensions/lifecycle-catalog.d.ts +584 -0
- package/dist/core/extensions/lifecycle-catalog.d.ts.map +1 -0
- package/dist/core/extensions/lifecycle-catalog.js +1903 -0
- package/dist/core/extensions/lifecycle-catalog.js.map +1 -0
- package/dist/core/extensions/lifecycle-delivery-queue.d.ts +48 -0
- package/dist/core/extensions/lifecycle-delivery-queue.d.ts.map +1 -0
- package/dist/core/extensions/lifecycle-delivery-queue.js +164 -0
- package/dist/core/extensions/lifecycle-delivery-queue.js.map +1 -0
- package/dist/core/extensions/microcompact.d.ts +71 -0
- package/dist/core/extensions/microcompact.d.ts.map +1 -0
- package/dist/core/extensions/microcompact.js +123 -0
- package/dist/core/extensions/microcompact.js.map +1 -0
- package/dist/core/extensions/public-api.d.ts +10 -0
- package/dist/core/extensions/public-api.d.ts.map +1 -0
- package/dist/core/extensions/public-api.js +9 -0
- package/dist/core/extensions/public-api.js.map +1 -0
- package/dist/core/facade/coding-agent-facade.d.ts +338 -0
- package/dist/core/facade/coding-agent-facade.d.ts.map +1 -0
- package/dist/core/facade/coding-agent-facade.js +115 -0
- package/dist/core/facade/coding-agent-facade.js.map +1 -0
- package/dist/core/facade/coding-agent-runtime-facade.d.ts +115 -0
- package/dist/core/facade/coding-agent-runtime-facade.d.ts.map +1 -0
- package/dist/core/facade/coding-agent-runtime-facade.js +63 -0
- package/dist/core/facade/coding-agent-runtime-facade.js.map +1 -0
- package/dist/core/facade/index.d.ts +6 -0
- package/dist/core/facade/index.d.ts.map +1 -0
- package/dist/core/facade/index.js +3 -0
- package/dist/core/facade/index.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +57 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +323 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/http-dispatcher.d.ts +22 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -0
- package/dist/core/http-dispatcher.js +98 -0
- package/dist/core/http-dispatcher.js.map +1 -0
- package/dist/core/index.d.ts +19 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/input-source.d.ts +9 -0
- package/dist/core/input-source.d.ts.map +1 -0
- package/dist/core/input-source.js +2 -0
- package/dist/core/input-source.js.map +1 -0
- package/dist/core/keybindings.d.ts +442 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +329 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/logger.d.ts +107 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +246 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/messages.d.ts +85 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +146 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-config.d.ts +586 -0
- package/dist/core/model-config.d.ts.map +1 -0
- package/dist/core/model-config.js +258 -0
- package/dist/core/model-config.js.map +1 -0
- package/dist/core/model-registry.d.ts +49 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +115 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +124 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +590 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/model-runtime.d.ts +100 -0
- package/dist/core/model-runtime.d.ts.map +1 -0
- package/dist/core/model-runtime.js +598 -0
- package/dist/core/model-runtime.js.map +1 -0
- package/dist/core/models-store.d.ts +22 -0
- package/dist/core/models-store.d.ts.map +1 -0
- package/dist/core/models-store.js +115 -0
- package/dist/core/models-store.js.map +1 -0
- package/dist/core/output-guard.d.ts +7 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +90 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-install-host.d.ts +23 -0
- package/dist/core/package-install-host.d.ts.map +1 -0
- package/dist/core/package-install-host.js +202 -0
- package/dist/core/package-install-host.js.map +1 -0
- package/dist/core/package-manager.d.ts +93 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +947 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/package-process-runner.d.ts +4 -0
- package/dist/core/package-process-runner.d.ts.map +1 -0
- package/dist/core/package-process-runner.js +47 -0
- package/dist/core/package-process-runner.js.map +1 -0
- package/dist/core/package-resource-collection.d.ts +16 -0
- package/dist/core/package-resource-collection.d.ts.map +1 -0
- package/dist/core/package-resource-collection.js +300 -0
- package/dist/core/package-resource-collection.js.map +1 -0
- package/dist/core/package-resource-discovery.d.ts +33 -0
- package/dist/core/package-resource-discovery.d.ts.map +1 -0
- package/dist/core/package-resource-discovery.js +449 -0
- package/dist/core/package-resource-discovery.js.map +1 -0
- package/dist/core/package-source.d.ts +157 -0
- package/dist/core/package-source.d.ts.map +1 -0
- package/dist/core/package-source.js +179 -0
- package/dist/core/package-source.js.map +1 -0
- package/dist/core/pi-manifest.d.ts +7 -0
- package/dist/core/pi-manifest.d.ts.map +1 -0
- package/dist/core/pi-manifest.js +26 -0
- package/dist/core/pi-manifest.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +54 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +236 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/provider-composer.d.ts +58 -0
- package/dist/core/provider-composer.d.ts.map +1 -0
- package/dist/core/provider-composer.js +403 -0
- package/dist/core/provider-composer.js.map +1 -0
- package/dist/core/radius.d.ts +2 -0
- package/dist/core/radius.d.ts.map +1 -0
- package/dist/core/radius.js +2 -0
- package/dist/core/radius.js.map +1 -0
- package/dist/core/remote-catalog-provider.d.ts +5 -0
- package/dist/core/remote-catalog-provider.d.ts.map +1 -0
- package/dist/core/remote-catalog-provider.js +121 -0
- package/dist/core/remote-catalog-provider.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +30 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +247 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +211 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +687 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/runtime-credentials.d.ts +15 -0
- package/dist/core/runtime-credentials.d.ts.map +1 -0
- package/dist/core/runtime-credentials.js +39 -0
- package/dist/core/runtime-credentials.js.map +1 -0
- package/dist/core/sdk.d.ts +395 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +1112 -0
- package/dist/core/sdk.js.map +1 -0
- package/dist/core/session-cwd.d.ts +19 -0
- package/dist/core/session-cwd.d.ts.map +1 -0
- package/dist/core/session-cwd.js +38 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/session-export.d.ts +7 -0
- package/dist/core/session-export.d.ts.map +1 -0
- package/dist/core/session-export.js +48 -0
- package/dist/core/session-export.js.map +1 -0
- package/dist/core/session-manager.d.ts +463 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1583 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/session-start.d.ts +12 -0
- package/dist/core/session-start.d.ts.map +1 -0
- package/dist/core/session-start.js +2 -0
- package/dist/core/session-start.js.map +1 -0
- package/dist/core/session-storage.d.ts +130 -0
- package/dist/core/session-storage.d.ts.map +1 -0
- package/dist/core/session-storage.js +386 -0
- package/dist/core/session-storage.js.map +1 -0
- package/dist/core/settings-diagnostics.d.ts +9 -0
- package/dist/core/settings-diagnostics.d.ts.map +1 -0
- package/dist/core/settings-diagnostics.js +21 -0
- package/dist/core/settings-diagnostics.js.map +1 -0
- package/dist/core/settings-manager.d.ts +352 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +987 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +382 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +15 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +33 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/source-info.d.ts +18 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +19 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts +8 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +137 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/timings.d.ts +11 -0
- package/dist/core/timings.d.ts.map +1 -0
- package/dist/core/timings.js +46 -0
- package/dist/core/timings.js.map +1 -0
- package/dist/core/tools/bash.d.ts +87 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +409 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +110 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +425 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +55 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +305 -0
- package/dist/core/tools/edit.js.map +1 -0
- package/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/core/tools/file-mutation-queue.js +52 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +42 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +303 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +41 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +309 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +44 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +129 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +41 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +173 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +52 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +184 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +10 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +99 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/powershell.d.ts +16 -0
- package/dist/core/tools/powershell.d.ts.map +1 -0
- package/dist/core/tools/powershell.js +39 -0
- package/dist/core/tools/powershell.js.map +1 -0
- package/dist/core/tools/read.d.ts +39 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +282 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +24 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +65 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +15 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +36 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/tool-definition.d.ts +123 -0
- package/dist/core/tools/tool-definition.d.ts.map +1 -0
- package/dist/core/tools/tool-definition.js +20 -0
- package/dist/core/tools/tool-definition.js.map +1 -0
- package/dist/core/tools/tool-search.d.ts +30 -0
- package/dist/core/tools/tool-search.d.ts.map +1 -0
- package/dist/core/tools/tool-search.js +99 -0
- package/dist/core/tools/tool-search.js.map +1 -0
- package/dist/core/tools/truncate.d.ts +70 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +215 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/write.d.ts +30 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +202 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/core/trace-retention.d.ts +19 -0
- package/dist/core/trace-retention.d.ts.map +1 -0
- package/dist/core/trace-retention.js +91 -0
- package/dist/core/trace-retention.js.map +1 -0
- package/dist/core/usage-totals.d.ts +21 -0
- package/dist/core/usage-totals.d.ts.map +1 -0
- package/dist/core/usage-totals.js +53 -0
- package/dist/core/usage-totals.js.map +1 -0
- package/dist/durable/durable-service.d.ts +136 -0
- package/dist/durable/durable-service.d.ts.map +1 -0
- package/dist/durable/durable-service.js +710 -0
- package/dist/durable/durable-service.js.map +1 -0
- package/dist/e2e/stdio-launcher.d.ts +25 -0
- package/dist/e2e/stdio-launcher.d.ts.map +1 -0
- package/dist/e2e/stdio-launcher.js +244 -0
- package/dist/e2e/stdio-launcher.js.map +1 -0
- package/dist/host/agent-retry-scheduler.d.ts +65 -0
- package/dist/host/agent-retry-scheduler.d.ts.map +1 -0
- package/dist/host/agent-retry-scheduler.js +52 -0
- package/dist/host/agent-retry-scheduler.js.map +1 -0
- package/dist/host/auto-compaction.d.ts +56 -0
- package/dist/host/auto-compaction.d.ts.map +1 -0
- package/dist/host/auto-compaction.js +62 -0
- package/dist/host/auto-compaction.js.map +1 -0
- package/dist/host/branch-reload.d.ts +56 -0
- package/dist/host/branch-reload.d.ts.map +1 -0
- package/dist/host/branch-reload.js +39 -0
- package/dist/host/branch-reload.js.map +1 -0
- package/dist/host/channel-adapter.d.ts +25 -0
- package/dist/host/channel-adapter.d.ts.map +1 -0
- package/dist/host/channel-adapter.js +45 -0
- package/dist/host/channel-adapter.js.map +1 -0
- package/dist/host/checkpoint-commit.d.ts +74 -0
- package/dist/host/checkpoint-commit.d.ts.map +1 -0
- package/dist/host/checkpoint-commit.js +76 -0
- package/dist/host/checkpoint-commit.js.map +1 -0
- package/dist/host/manual-compaction.d.ts +43 -0
- package/dist/host/manual-compaction.d.ts.map +1 -0
- package/dist/host/manual-compaction.js +63 -0
- package/dist/host/manual-compaction.js.map +1 -0
- package/dist/host/output-projection.d.ts +61 -0
- package/dist/host/output-projection.d.ts.map +1 -0
- package/dist/host/output-projection.js +74 -0
- package/dist/host/output-projection.js.map +1 -0
- package/dist/host/output-reducer.d.ts +43 -0
- package/dist/host/output-reducer.d.ts.map +1 -0
- package/dist/host/output-reducer.js +77 -0
- package/dist/host/output-reducer.js.map +1 -0
- package/dist/host/output-serializer.d.ts +31 -0
- package/dist/host/output-serializer.d.ts.map +1 -0
- package/dist/host/output-serializer.js +120 -0
- package/dist/host/output-serializer.js.map +1 -0
- package/dist/host/overflow-recovery.d.ts +55 -0
- package/dist/host/overflow-recovery.d.ts.map +1 -0
- package/dist/host/overflow-recovery.js +89 -0
- package/dist/host/overflow-recovery.js.map +1 -0
- package/dist/host/retry-common.d.ts +29 -0
- package/dist/host/retry-common.d.ts.map +1 -0
- package/dist/host/retry-common.js +12 -0
- package/dist/host/retry-common.js.map +1 -0
- package/dist/host/session-event-translation.d.ts +26 -0
- package/dist/host/session-event-translation.d.ts.map +1 -0
- package/dist/host/session-event-translation.js +61 -0
- package/dist/host/session-event-translation.js.map +1 -0
- package/dist/host/summary-retry.d.ts +54 -0
- package/dist/host/summary-retry.d.ts.map +1 -0
- package/dist/host/summary-retry.js +66 -0
- package/dist/host/summary-retry.js.map +1 -0
- package/dist/index.d.ts +105 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +176 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +36 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +1630 -0
- package/dist/main.js.map +1 -0
- package/dist/migration/migration-tool.d.ts +56 -0
- package/dist/migration/migration-tool.d.ts.map +1 -0
- package/dist/migration/migration-tool.js +72 -0
- package/dist/migration/migration-tool.js.map +1 -0
- package/dist/migrations.d.ts +33 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +272 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/index.d.ts +10 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +8 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/interactive/assets/clankolas.png +0 -0
- package/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +336 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +25 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +151 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +176 -0
- package/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.js +56 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.js +44 -0
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +113 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +857 -0
- package/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.js +33 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +19 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +71 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-entry.js +52 -0
- package/dist/modes/interactive/components/custom-entry.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +22 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +87 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
- package/dist/modes/interactive/components/daxnuts.js +141 -0
- package/dist/modes/interactive/components/daxnuts.js.map +1 -0
- package/dist/modes/interactive/components/dialog-editor.d.ts +21 -0
- package/dist/modes/interactive/components/dialog-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/dialog-editor.js +98 -0
- package/dist/modes/interactive/components/dialog-editor.js.map +1 -0
- package/dist/modes/interactive/components/dialog-input.d.ts +23 -0
- package/dist/modes/interactive/components/dialog-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/dialog-input.js +61 -0
- package/dist/modes/interactive/components/dialog-input.js.map +1 -0
- package/dist/modes/interactive/components/dialog-selector.d.ts +26 -0
- package/dist/modes/interactive/components/dialog-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/dialog-selector.js +83 -0
- package/dist/modes/interactive/components/dialog-selector.js.map +1 -0
- package/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/dist/modes/interactive/components/diff.js +133 -0
- package/dist/modes/interactive/components/diff.js.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.js +21 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.js +103 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +33 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +248 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +34 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +35 -0
- package/dist/modes/interactive/components/index.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +36 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +52 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +188 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.js +19 -0
- package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
- package/dist/modes/interactive/components/mermaid.d.ts +11 -0
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
- package/dist/modes/interactive/components/mermaid.js +75 -0
- package/dist/modes/interactive/components/mermaid.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +67 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +381 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +165 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/plugin-manager-entry.d.ts +62 -0
- package/dist/modes/interactive/components/plugin-manager-entry.d.ts.map +1 -0
- package/dist/modes/interactive/components/plugin-manager-entry.js +294 -0
- package/dist/modes/interactive/components/plugin-manager-entry.js.map +1 -0
- package/dist/modes/interactive/components/plugin-selection-entry.d.ts +82 -0
- package/dist/modes/interactive/components/plugin-selection-entry.d.ts.map +1 -0
- package/dist/modes/interactive/components/plugin-selection-entry.js +228 -0
- package/dist/modes/interactive/components/plugin-selection-entry.js.map +1 -0
- package/dist/modes/interactive/components/render-types.d.ts +26 -0
- package/dist/modes/interactive/components/render-types.d.ts.map +1 -0
- package/dist/modes/interactive/components/render-types.js +7 -0
- package/dist/modes/interactive/components/render-types.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +46 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +328 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +158 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +143 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +1053 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +88 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +677 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.js +165 -0
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.js +39 -0
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/dist/modes/interactive/components/status-indicator.d.ts +34 -0
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
- package/dist/modes/interactive/components/status-indicator.js +60 -0
- package/dist/modes/interactive/components/status-indicator.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/theme-selector.js +50 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +23 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.js +109 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +59 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +335 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-list.d.ts +67 -0
- package/dist/modes/interactive/components/tree-list.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-list.js +710 -0
- package/dist/modes/interactive/components/tree-list.js.map +1 -0
- package/dist/modes/interactive/components/tree-render.d.ts +17 -0
- package/dist/modes/interactive/components/tree-render.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-render.js +316 -0
- package/dist/modes/interactive/components/tree-render.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +25 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +235 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/dist/modes/interactive/components/tree-types.d.ts +35 -0
- package/dist/modes/interactive/components/tree-types.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-types.js +2 -0
- package/dist/modes/interactive/components/tree-types.js.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.js +114 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +16 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +49 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.js +33 -0
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
- package/dist/modes/interactive/external-editor.d.ts +12 -0
- package/dist/modes/interactive/external-editor.d.ts.map +1 -0
- package/dist/modes/interactive/external-editor.js +38 -0
- package/dist/modes/interactive/external-editor.js.map +1 -0
- package/dist/modes/interactive/interactive-auth.d.ts +90 -0
- package/dist/modes/interactive/interactive-auth.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-auth.js +492 -0
- package/dist/modes/interactive/interactive-auth.js.map +1 -0
- package/dist/modes/interactive/interactive-commands.d.ts +68 -0
- package/dist/modes/interactive/interactive-commands.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-commands.js +157 -0
- package/dist/modes/interactive/interactive-commands.js.map +1 -0
- package/dist/modes/interactive/interactive-dialog-ui.d.ts +73 -0
- package/dist/modes/interactive/interactive-dialog-ui.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-dialog-ui.js +189 -0
- package/dist/modes/interactive/interactive-dialog-ui.js.map +1 -0
- package/dist/modes/interactive/interactive-format.d.ts +65 -0
- package/dist/modes/interactive/interactive-format.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-format.js +268 -0
- package/dist/modes/interactive/interactive-format.js.map +1 -0
- package/dist/modes/interactive/interactive-helpers.d.ts +25 -0
- package/dist/modes/interactive/interactive-helpers.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-helpers.js +73 -0
- package/dist/modes/interactive/interactive-helpers.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +640 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +4107 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/interactive-selectors.d.ts +95 -0
- package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-selectors.js +356 -0
- package/dist/modes/interactive/interactive-selectors.js.map +1 -0
- package/dist/modes/interactive/model-catalog-refresh.d.ts +11 -0
- package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
- package/dist/modes/interactive/model-catalog-refresh.js +35 -0
- package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
- package/dist/modes/interactive/model-search.d.ts +12 -0
- package/dist/modes/interactive/model-search.d.ts.map +1 -0
- package/dist/modes/interactive/model-search.js +15 -0
- package/dist/modes/interactive/model-search.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +90 -0
- package/dist/modes/interactive/theme/light.json +89 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts +40 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-controller.js +126 -0
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
- package/dist/modes/interactive/theme/theme-schema.json +352 -0
- package/dist/modes/interactive/theme/theme.d.ts +122 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +1093 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/json-event.d.ts +34 -0
- package/dist/modes/json-event.d.ts.map +1 -0
- package/dist/modes/json-event.js +29 -0
- package/dist/modes/json-event.js.map +1 -0
- package/dist/modes/print-mode.d.ts +32 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +205 -0
- package/dist/modes/print-mode.js.map +1 -0
- package/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/modes/rpc/jsonl.d.ts.map +1 -0
- package/dist/modes/rpc/jsonl.js +49 -0
- package/dist/modes/rpc/jsonl.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +254 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +496 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts +53 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-mode.js +540 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +486 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-types.js +8 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -0
- package/dist/package-manager-cli.d.ts +18 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +944 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/plugins/ecosystem/active-bindings.d.ts +92 -0
- package/dist/plugins/ecosystem/active-bindings.d.ts.map +1 -0
- package/dist/plugins/ecosystem/active-bindings.js +198 -0
- package/dist/plugins/ecosystem/active-bindings.js.map +1 -0
- package/dist/plugins/ecosystem/bootstrap-factory-manifest.d.ts +32 -0
- package/dist/plugins/ecosystem/bootstrap-factory-manifest.d.ts.map +1 -0
- package/dist/plugins/ecosystem/bootstrap-factory-manifest.js +32 -0
- package/dist/plugins/ecosystem/bootstrap-factory-manifest.js.map +1 -0
- package/dist/plugins/ecosystem/catalog.d.ts +38 -0
- package/dist/plugins/ecosystem/catalog.d.ts.map +1 -0
- package/dist/plugins/ecosystem/catalog.js +90 -0
- package/dist/plugins/ecosystem/catalog.js.map +1 -0
- package/dist/plugins/ecosystem/cli.d.ts +102 -0
- package/dist/plugins/ecosystem/cli.d.ts.map +1 -0
- package/dist/plugins/ecosystem/cli.js +970 -0
- package/dist/plugins/ecosystem/cli.js.map +1 -0
- package/dist/plugins/ecosystem/default-active-bindings.d.ts +33 -0
- package/dist/plugins/ecosystem/default-active-bindings.d.ts.map +1 -0
- package/dist/plugins/ecosystem/default-active-bindings.js +105 -0
- package/dist/plugins/ecosystem/default-active-bindings.js.map +1 -0
- package/dist/plugins/ecosystem/default-plugin-market.d.ts +68 -0
- package/dist/plugins/ecosystem/default-plugin-market.d.ts.map +1 -0
- package/dist/plugins/ecosystem/default-plugin-market.js +146 -0
- package/dist/plugins/ecosystem/default-plugin-market.js.map +1 -0
- package/dist/plugins/ecosystem/distribution.d.ts +113 -0
- package/dist/plugins/ecosystem/distribution.d.ts.map +1 -0
- package/dist/plugins/ecosystem/distribution.js +371 -0
- package/dist/plugins/ecosystem/distribution.js.map +1 -0
- package/dist/plugins/ecosystem/index.d.ts +56 -0
- package/dist/plugins/ecosystem/index.d.ts.map +1 -0
- package/dist/plugins/ecosystem/index.js +31 -0
- package/dist/plugins/ecosystem/index.js.map +1 -0
- package/dist/plugins/ecosystem/installer.d.ts +130 -0
- package/dist/plugins/ecosystem/installer.d.ts.map +1 -0
- package/dist/plugins/ecosystem/installer.js +316 -0
- package/dist/plugins/ecosystem/installer.js.map +1 -0
- package/dist/plugins/ecosystem/node-disk-registry-source.d.ts +47 -0
- package/dist/plugins/ecosystem/node-disk-registry-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-disk-registry-source.js +208 -0
- package/dist/plugins/ecosystem/node-disk-registry-source.js.map +1 -0
- package/dist/plugins/ecosystem/node-distribution-host.d.ts +55 -0
- package/dist/plugins/ecosystem/node-distribution-host.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-distribution-host.js +423 -0
- package/dist/plugins/ecosystem/node-distribution-host.js.map +1 -0
- package/dist/plugins/ecosystem/node-local-package-source.d.ts +10 -0
- package/dist/plugins/ecosystem/node-local-package-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-local-package-source.js +97 -0
- package/dist/plugins/ecosystem/node-local-package-source.js.map +1 -0
- package/dist/plugins/ecosystem/node-npm-registry-source.d.ts +58 -0
- package/dist/plugins/ecosystem/node-npm-registry-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-npm-registry-source.js +326 -0
- package/dist/plugins/ecosystem/node-npm-registry-source.js.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-host.d.ts +91 -0
- package/dist/plugins/ecosystem/node-package-install-host.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-host.js +857 -0
- package/dist/plugins/ecosystem/node-package-install-host.js.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-persistence.d.ts +34 -0
- package/dist/plugins/ecosystem/node-package-install-persistence.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-persistence.js +221 -0
- package/dist/plugins/ecosystem/node-package-install-persistence.js.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-stack.d.ts +28 -0
- package/dist/plugins/ecosystem/node-package-install-stack.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-stack.js +65 -0
- package/dist/plugins/ecosystem/node-package-install-stack.js.map +1 -0
- package/dist/plugins/ecosystem/node-package-media.d.ts +14 -0
- package/dist/plugins/ecosystem/node-package-media.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-package-media.js +36 -0
- package/dist/plugins/ecosystem/node-package-media.js.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-acquisition-host.d.ts +83 -0
- package/dist/plugins/ecosystem/node-plugin-acquisition-host.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-acquisition-host.js +423 -0
- package/dist/plugins/ecosystem/node-plugin-acquisition-host.js.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts +48 -0
- package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js +191 -0
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts +26 -0
- package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-trust-root.js +120 -0
- package/dist/plugins/ecosystem/node-plugin-trust-root.js.map +1 -0
- package/dist/plugins/ecosystem/node-registry-source.d.ts +35 -0
- package/dist/plugins/ecosystem/node-registry-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-registry-source.js +286 -0
- package/dist/plugins/ecosystem/node-registry-source.js.map +1 -0
- package/dist/plugins/ecosystem/node-release-package-source.d.ts +47 -0
- package/dist/plugins/ecosystem/node-release-package-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-release-package-source.js +336 -0
- package/dist/plugins/ecosystem/node-release-package-source.js.map +1 -0
- package/dist/plugins/ecosystem/node-tar-package.d.ts +11 -0
- package/dist/plugins/ecosystem/node-tar-package.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-tar-package.js +294 -0
- package/dist/plugins/ecosystem/node-tar-package.js.map +1 -0
- package/dist/plugins/ecosystem/node-tar-writer.d.ts +16 -0
- package/dist/plugins/ecosystem/node-tar-writer.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-tar-writer.js +134 -0
- package/dist/plugins/ecosystem/node-tar-writer.js.map +1 -0
- package/dist/plugins/ecosystem/node-url-package-source.d.ts +31 -0
- package/dist/plugins/ecosystem/node-url-package-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-url-package-source.js +159 -0
- package/dist/plugins/ecosystem/node-url-package-source.js.map +1 -0
- package/dist/plugins/ecosystem/plugin-acquisition.d.ts +88 -0
- package/dist/plugins/ecosystem/plugin-acquisition.d.ts.map +1 -0
- package/dist/plugins/ecosystem/plugin-acquisition.js +197 -0
- package/dist/plugins/ecosystem/plugin-acquisition.js.map +1 -0
- package/dist/plugins/ecosystem/plugin-bootstrap.d.ts +87 -0
- package/dist/plugins/ecosystem/plugin-bootstrap.d.ts.map +1 -0
- package/dist/plugins/ecosystem/plugin-bootstrap.js +134 -0
- package/dist/plugins/ecosystem/plugin-bootstrap.js.map +1 -0
- package/dist/plugins/ecosystem/registry-cli-adapter.d.ts +8 -0
- package/dist/plugins/ecosystem/registry-cli-adapter.d.ts.map +1 -0
- package/dist/plugins/ecosystem/registry-cli-adapter.js +16 -0
- package/dist/plugins/ecosystem/registry-cli-adapter.js.map +1 -0
- package/dist/plugins/ecosystem/registry.d.ts +121 -0
- package/dist/plugins/ecosystem/registry.d.ts.map +1 -0
- package/dist/plugins/ecosystem/registry.js +324 -0
- package/dist/plugins/ecosystem/registry.js.map +1 -0
- package/dist/plugins/ecosystem/resolver.d.ts +32 -0
- package/dist/plugins/ecosystem/resolver.d.ts.map +1 -0
- package/dist/plugins/ecosystem/resolver.js +325 -0
- package/dist/plugins/ecosystem/resolver.js.map +1 -0
- package/dist/plugins/ecosystem/selection-store.d.ts +66 -0
- package/dist/plugins/ecosystem/selection-store.d.ts.map +1 -0
- package/dist/plugins/ecosystem/selection-store.js +241 -0
- package/dist/plugins/ecosystem/selection-store.js.map +1 -0
- package/dist/plugins/ecosystem/selection.d.ts +54 -0
- package/dist/plugins/ecosystem/selection.d.ts.map +1 -0
- package/dist/plugins/ecosystem/selection.js +116 -0
- package/dist/plugins/ecosystem/selection.js.map +1 -0
- package/dist/plugins/ecosystem/state.d.ts +96 -0
- package/dist/plugins/ecosystem/state.d.ts.map +1 -0
- package/dist/plugins/ecosystem/state.js +346 -0
- package/dist/plugins/ecosystem/state.js.map +1 -0
- package/dist/plugins/ecosystem/types.d.ts +90 -0
- package/dist/plugins/ecosystem/types.d.ts.map +1 -0
- package/dist/plugins/ecosystem/types.js +8 -0
- package/dist/plugins/ecosystem/types.js.map +1 -0
- package/dist/plugins/ecosystem/updates.d.ts +30 -0
- package/dist/plugins/ecosystem/updates.d.ts.map +1 -0
- package/dist/plugins/ecosystem/updates.js +148 -0
- package/dist/plugins/ecosystem/updates.js.map +1 -0
- package/dist/plugins/integrity-adapter.d.ts +58 -0
- package/dist/plugins/integrity-adapter.d.ts.map +1 -0
- package/dist/plugins/integrity-adapter.js +70 -0
- package/dist/plugins/integrity-adapter.js.map +1 -0
- package/dist/plugins/mcp-http.d.ts +78 -0
- package/dist/plugins/mcp-http.d.ts.map +1 -0
- package/dist/plugins/mcp-http.js +176 -0
- package/dist/plugins/mcp-http.js.map +1 -0
- package/dist/plugins/observability-types.d.ts +9 -0
- package/dist/plugins/observability-types.d.ts.map +1 -0
- package/dist/plugins/observability-types.js +9 -0
- package/dist/plugins/observability-types.js.map +1 -0
- package/dist/plugins/plugin-host.d.ts +46 -0
- package/dist/plugins/plugin-host.d.ts.map +1 -0
- package/dist/plugins/plugin-host.js +80 -0
- package/dist/plugins/plugin-host.js.map +1 -0
- package/dist/plugins/plugin-supervisor.d.ts +77 -0
- package/dist/plugins/plugin-supervisor.d.ts.map +1 -0
- package/dist/plugins/plugin-supervisor.js +82 -0
- package/dist/plugins/plugin-supervisor.js.map +1 -0
- package/dist/plugins/subagent-task/runner-entry.d.ts +35 -0
- package/dist/plugins/subagent-task/runner-entry.d.ts.map +1 -0
- package/dist/plugins/subagent-task/runner-entry.js +39 -0
- package/dist/plugins/subagent-task/runner-entry.js.map +1 -0
- package/dist/plugins/subagent-task/session-factory.d.ts +57 -0
- package/dist/plugins/subagent-task/session-factory.d.ts.map +1 -0
- package/dist/plugins/subagent-task/session-factory.js +51 -0
- package/dist/plugins/subagent-task/session-factory.js.map +1 -0
- package/dist/profile/child-facade.d.ts +44 -0
- package/dist/profile/child-facade.d.ts.map +1 -0
- package/dist/profile/child-facade.js +56 -0
- package/dist/profile/child-facade.js.map +1 -0
- package/dist/profile/dependency-wiring.d.ts +48 -0
- package/dist/profile/dependency-wiring.d.ts.map +1 -0
- package/dist/profile/dependency-wiring.js +56 -0
- package/dist/profile/dependency-wiring.js.map +1 -0
- package/dist/profile/domain-recovery.d.ts +60 -0
- package/dist/profile/domain-recovery.d.ts.map +1 -0
- package/dist/profile/domain-recovery.js +94 -0
- package/dist/profile/domain-recovery.js.map +1 -0
- package/dist/profile/first-roles.d.ts +30 -0
- package/dist/profile/first-roles.d.ts.map +1 -0
- package/dist/profile/first-roles.js +74 -0
- package/dist/profile/first-roles.js.map +1 -0
- package/dist/profile/goal-plugin.d.ts +38 -0
- package/dist/profile/goal-plugin.d.ts.map +1 -0
- package/dist/profile/goal-plugin.js +113 -0
- package/dist/profile/goal-plugin.js.map +1 -0
- package/dist/profile/identity.d.ts +58 -0
- package/dist/profile/identity.d.ts.map +1 -0
- package/dist/profile/identity.js +100 -0
- package/dist/profile/identity.js.map +1 -0
- package/dist/profile/lock.d.ts +59 -0
- package/dist/profile/lock.d.ts.map +1 -0
- package/dist/profile/lock.js +59 -0
- package/dist/profile/lock.js.map +1 -0
- package/dist/profile/plan-plugin.d.ts +44 -0
- package/dist/profile/plan-plugin.d.ts.map +1 -0
- package/dist/profile/plan-plugin.js +144 -0
- package/dist/profile/plan-plugin.js.map +1 -0
- package/dist/profile/plugin-profiles.d.ts +56 -0
- package/dist/profile/plugin-profiles.d.ts.map +1 -0
- package/dist/profile/plugin-profiles.js +192 -0
- package/dist/profile/plugin-profiles.js.map +1 -0
- package/dist/profile/policy-manifest.d.ts +53 -0
- package/dist/profile/policy-manifest.d.ts.map +1 -0
- package/dist/profile/policy-manifest.js +52 -0
- package/dist/profile/policy-manifest.js.map +1 -0
- package/dist/profile/profile-assembly.d.ts +74 -0
- package/dist/profile/profile-assembly.d.ts.map +1 -0
- package/dist/profile/profile-assembly.js +90 -0
- package/dist/profile/profile-assembly.js.map +1 -0
- package/dist/profile/profile-migration.d.ts +56 -0
- package/dist/profile/profile-migration.d.ts.map +1 -0
- package/dist/profile/profile-migration.js +60 -0
- package/dist/profile/profile-migration.js.map +1 -0
- package/dist/profile/profile-registry.d.ts +58 -0
- package/dist/profile/profile-registry.d.ts.map +1 -0
- package/dist/profile/profile-registry.js +74 -0
- package/dist/profile/profile-registry.js.map +1 -0
- package/dist/profile/role-assembly.d.ts +47 -0
- package/dist/profile/role-assembly.d.ts.map +1 -0
- package/dist/profile/role-assembly.js +31 -0
- package/dist/profile/role-assembly.js.map +1 -0
- package/dist/profile/role-catalog.d.ts +44 -0
- package/dist/profile/role-catalog.d.ts.map +1 -0
- package/dist/profile/role-catalog.js +130 -0
- package/dist/profile/role-catalog.js.map +1 -0
- package/dist/profile/role-orchestrator.d.ts +123 -0
- package/dist/profile/role-orchestrator.d.ts.map +1 -0
- package/dist/profile/role-orchestrator.js +194 -0
- package/dist/profile/role-orchestrator.js.map +1 -0
- package/dist/profile/role-runner.d.ts +99 -0
- package/dist/profile/role-runner.d.ts.map +1 -0
- package/dist/profile/role-runner.js +78 -0
- package/dist/profile/role-runner.js.map +1 -0
- package/dist/profile/root-facade.d.ts +36 -0
- package/dist/profile/root-facade.d.ts.map +1 -0
- package/dist/profile/root-facade.js +48 -0
- package/dist/profile/root-facade.js.map +1 -0
- package/dist/profile/skill-discovery-wiring.d.ts +58 -0
- package/dist/profile/skill-discovery-wiring.d.ts.map +1 -0
- package/dist/profile/skill-discovery-wiring.js +75 -0
- package/dist/profile/skill-discovery-wiring.js.map +1 -0
- package/dist/profile/state-store.d.ts +62 -0
- package/dist/profile/state-store.d.ts.map +1 -0
- package/dist/profile/state-store.js +140 -0
- package/dist/profile/state-store.js.map +1 -0
- package/dist/profile/todo-plugin.d.ts +37 -0
- package/dist/profile/todo-plugin.d.ts.map +1 -0
- package/dist/profile/todo-plugin.js +132 -0
- package/dist/profile/todo-plugin.js.map +1 -0
- package/dist/profiles/builtin-suites.d.ts +142 -0
- package/dist/profiles/builtin-suites.d.ts.map +1 -0
- package/dist/profiles/builtin-suites.js +395 -0
- package/dist/profiles/builtin-suites.js.map +1 -0
- package/dist/profiles/resolved-agent-profile.d.ts +83 -0
- package/dist/profiles/resolved-agent-profile.d.ts.map +1 -0
- package/dist/profiles/resolved-agent-profile.js +75 -0
- package/dist/profiles/resolved-agent-profile.js.map +1 -0
- package/dist/profiles/suite-lifecycle.d.ts +158 -0
- package/dist/profiles/suite-lifecycle.d.ts.map +1 -0
- package/dist/profiles/suite-lifecycle.js +447 -0
- package/dist/profiles/suite-lifecycle.js.map +1 -0
- package/dist/profiles/suite-loader.d.ts +410 -0
- package/dist/profiles/suite-loader.d.ts.map +1 -0
- package/dist/profiles/suite-loader.js +823 -0
- package/dist/profiles/suite-loader.js.map +1 -0
- package/dist/remote/server-assembly.d.ts +230 -0
- package/dist/remote/server-assembly.d.ts.map +1 -0
- package/dist/remote/server-assembly.js +1189 -0
- package/dist/remote/server-assembly.js.map +1 -0
- package/dist/remote/server-entry.d.ts +112 -0
- package/dist/remote/server-entry.d.ts.map +1 -0
- package/dist/remote/server-entry.js +239 -0
- package/dist/remote/server-entry.js.map +1 -0
- package/dist/remote/session-source.d.ts +101 -0
- package/dist/remote/session-source.d.ts.map +1 -0
- package/dist/remote/session-source.js +173 -0
- package/dist/remote/session-source.js.map +1 -0
- package/dist/rpc-entry.d.ts +3 -0
- package/dist/rpc-entry.d.ts.map +1 -0
- package/dist/rpc-entry.js +11 -0
- package/dist/rpc-entry.js.map +1 -0
- package/dist/server/create-harness.d.ts +26 -0
- package/dist/server/create-harness.d.ts.map +1 -0
- package/dist/server/create-harness.js +106 -0
- package/dist/server/create-harness.js.map +1 -0
- package/dist/share/session-share.d.ts +98 -0
- package/dist/share/session-share.d.ts.map +1 -0
- package/dist/share/session-share.js +89 -0
- package/dist/share/session-share.js.map +1 -0
- package/dist/share/share-viewer.d.ts +43 -0
- package/dist/share/share-viewer.d.ts.map +1 -0
- package/dist/share/share-viewer.js +103 -0
- package/dist/share/share-viewer.js.map +1 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +6 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-ai-server.d.ts +77 -0
- package/dist/testing/mock-ai-server.d.ts.map +1 -0
- package/dist/testing/mock-ai-server.js +69 -0
- package/dist/testing/mock-ai-server.js.map +1 -0
- package/dist/testing/plugin-testkit.d.ts +148 -0
- package/dist/testing/plugin-testkit.d.ts.map +1 -0
- package/dist/testing/plugin-testkit.js +493 -0
- package/dist/testing/plugin-testkit.js.map +1 -0
- package/dist/testing/runtime-delivery-queue.d.ts +47 -0
- package/dist/testing/runtime-delivery-queue.d.ts.map +1 -0
- package/dist/testing/runtime-delivery-queue.js +158 -0
- package/dist/testing/runtime-delivery-queue.js.map +1 -0
- package/dist/testing/session-plugin-testkit.d.ts +144 -0
- package/dist/testing/session-plugin-testkit.d.ts.map +1 -0
- package/dist/testing/session-plugin-testkit.js +444 -0
- package/dist/testing/session-plugin-testkit.js.map +1 -0
- package/dist/utils/abort.d.ts +5 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +53 -0
- package/dist/utils/abort.js.map +1 -0
- package/dist/utils/agent-forge-user-agent.d.ts +2 -0
- package/dist/utils/agent-forge-user-agent.d.ts.map +1 -0
- package/dist/utils/agent-forge-user-agent.js +5 -0
- package/dist/utils/agent-forge-user-agent.js.map +1 -0
- package/dist/utils/ansi.d.ts +2 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +53 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/changelog.d.ts +22 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +165 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +18 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +107 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +246 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +11 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -0
- package/dist/utils/clipboard-native.js +22 -0
- package/dist/utils/clipboard-native.js.map +1 -0
- package/dist/utils/clipboard.d.ts +4 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +161 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/deprecation.d.ts +4 -0
- package/dist/utils/deprecation.d.ts.map +1 -0
- package/dist/utils/deprecation.js +13 -0
- package/dist/utils/deprecation.js.map +1 -0
- package/dist/utils/exif-orientation.d.ts +5 -0
- package/dist/utils/exif-orientation.d.ts.map +1 -0
- package/dist/utils/exif-orientation.js +158 -0
- package/dist/utils/exif-orientation.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +8 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +27 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/fs-watch.d.ts +5 -0
- package/dist/utils/fs-watch.d.ts.map +1 -0
- package/dist/utils/fs-watch.js +25 -0
- package/dist/utils/fs-watch.js.map +1 -0
- package/dist/utils/git.d.ts +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +201 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/html.d.ts +7 -0
- package/dist/utils/html.d.ts.map +1 -0
- package/dist/utils/html.js +40 -0
- package/dist/utils/html.js.map +1 -0
- package/dist/utils/image-convert.d.ts +10 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +45 -0
- package/dist/utils/image-convert.js.map +1 -0
- package/dist/utils/image-process.d.ts +18 -0
- package/dist/utils/image-process.d.ts.map +1 -0
- package/dist/utils/image-process.js +84 -0
- package/dist/utils/image-process.js.map +1 -0
- package/dist/utils/image-resize-core.d.ts +30 -0
- package/dist/utils/image-resize-core.d.ts.map +1 -0
- package/dist/utils/image-resize-core.js +125 -0
- package/dist/utils/image-resize-core.js.map +1 -0
- package/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/utils/image-resize-worker.d.ts.map +1 -0
- package/dist/utils/image-resize-worker.js +31 -0
- package/dist/utils/image-resize-worker.js.map +1 -0
- package/dist/utils/image-resize.d.ts +16 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +100 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/json.d.ts +3 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +8 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/management-http.d.ts +25 -0
- package/dist/utils/management-http.d.ts.map +1 -0
- package/dist/utils/management-http.js +54 -0
- package/dist/utils/management-http.js.map +1 -0
- package/dist/utils/mime.d.ts +3 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +115 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/open-browser.d.ts +9 -0
- package/dist/utils/open-browser.d.ts.map +1 -0
- package/dist/utils/open-browser.js +22 -0
- package/dist/utils/open-browser.js.map +1 -0
- package/dist/utils/paths.d.ts +34 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +114 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/photon.d.ts +21 -0
- package/dist/utils/photon.d.ts.map +1 -0
- package/dist/utils/photon.js +124 -0
- package/dist/utils/photon.js.map +1 -0
- package/dist/utils/shell.d.ts +34 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +216 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sleep.d.ts +5 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +17 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/sync-sleep.d.ts +2 -0
- package/dist/utils/sync-sleep.d.ts.map +1 -0
- package/dist/utils/sync-sleep.js +11 -0
- package/dist/utils/sync-sleep.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts +13 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -0
- package/dist/utils/syntax-highlight.js +177 -0
- package/dist/utils/syntax-highlight.js.map +1 -0
- package/dist/utils/text.d.ts +8 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/tool-result-images.d.ts +19 -0
- package/dist/utils/tool-result-images.d.ts.map +1 -0
- package/dist/utils/tool-result-images.js +45 -0
- package/dist/utils/tool-result-images.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +24 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +437 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +21 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +86 -0
- package/dist/utils/version-check.js.map +1 -0
- package/dist/utils/windows-self-update.d.ts +3 -0
- package/dist/utils/windows-self-update.d.ts.map +1 -0
- package/dist/utils/windows-self-update.js +77 -0
- package/dist/utils/windows-self-update.js.map +1 -0
- package/docs/compaction.md +348 -0
- package/docs/containerization.md +114 -0
- package/docs/development.md +71 -0
- package/docs/docs.json +148 -0
- package/docs/environment-variables.md +96 -0
- package/docs/images/exy.png +0 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/index.md +76 -0
- package/docs/json.md +98 -0
- package/docs/keybindings.md +245 -0
- package/docs/llama-cpp.md +101 -0
- package/docs/models.md +576 -0
- package/docs/packages.md +205 -0
- package/docs/prompt-templates.md +96 -0
- package/docs/providers.md +317 -0
- package/docs/quickstart.md +167 -0
- package/docs/rpc.md +1487 -0
- package/docs/sdk.md +1146 -0
- package/docs/security.md +24 -0
- package/docs/session-format.md +438 -0
- package/docs/sessions.md +145 -0
- package/docs/settings.md +355 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +231 -0
- package/docs/terminal-setup.md +192 -0
- package/docs/termux.md +127 -0
- package/docs/themes.md +320 -0
- package/docs/tmux.md +63 -0
- package/docs/tui.md +478 -0
- package/docs/usage.md +291 -0
- package/docs/windows.md +39 -0
- package/examples/README.md +21 -0
- package/examples/extensions/README.md +163 -0
- package/examples/extensions/bash-spawn-hook/index.ts +37 -0
- package/examples/extensions/bash-spawn-hook/plugin.json +10 -0
- package/examples/extensions/bookmark/index.ts +67 -0
- package/examples/extensions/bookmark/plugin.json +11 -0
- package/examples/extensions/built-in-tool-renderer/index.ts +262 -0
- package/examples/extensions/built-in-tool-renderer/plugin.json +10 -0
- package/examples/extensions/claude-rules/index.ts +119 -0
- package/examples/extensions/claude-rules/plugin.json +8 -0
- package/examples/extensions/cli-bridge/README.md +27 -0
- package/examples/extensions/cli-bridge/index.ts +320 -0
- package/examples/extensions/cli-bridge/plugin.json +10 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +53 -0
- package/examples/extensions/dynamic-resources/plugin.json +8 -0
- package/examples/extensions/dynamic-tools/index.ts +102 -0
- package/examples/extensions/dynamic-tools/plugin.json +14 -0
- package/examples/extensions/event-bus/index.ts +75 -0
- package/examples/extensions/event-bus/plugin.json +13 -0
- package/examples/extensions/file-trigger/index.ts +65 -0
- package/examples/extensions/file-trigger/plugin.json +13 -0
- package/examples/extensions/goal/README.md +16 -0
- package/examples/extensions/goal/index.ts +134 -0
- package/examples/extensions/goal/plugin.json +12 -0
- package/examples/extensions/hello/index.ts +29 -0
- package/examples/extensions/hello/plugin.json +10 -0
- package/examples/extensions/kimi-deferred-tools/index.ts +93 -0
- package/examples/extensions/kimi-deferred-tools/plugin.json +11 -0
- package/examples/extensions/mcp-stdio/README.md +19 -0
- package/examples/extensions/mcp-stdio/index.d.ts +64 -0
- package/examples/extensions/mcp-stdio/index.d.ts.map +1 -0
- package/examples/extensions/mcp-stdio/index.js +292 -0
- package/examples/extensions/mcp-stdio/index.js.map +1 -0
- package/examples/extensions/mcp-stdio/index.ts +381 -0
- package/examples/extensions/mcp-stdio/plugin.json +10 -0
- package/examples/extensions/memory-backend/index.ts +120 -0
- package/examples/extensions/memory-backend/plugin.json +10 -0
- package/examples/extensions/minimal-mode/index.ts +447 -0
- package/examples/extensions/minimal-mode/plugin.json +10 -0
- package/examples/extensions/multi-agent/README.md +7 -0
- package/examples/extensions/multi-agent/index.ts +592 -0
- package/examples/extensions/multi-agent/plugin.json +13 -0
- package/examples/extensions/notify/index.ts +70 -0
- package/examples/extensions/notify/plugin.json +8 -0
- package/examples/extensions/permission-gate/index.ts +55 -0
- package/examples/extensions/permission-gate/plugin.json +11 -0
- package/examples/extensions/pirate/index.ts +75 -0
- package/examples/extensions/pirate/plugin.json +8 -0
- package/examples/extensions/plan/README.md +16 -0
- package/examples/extensions/plan/index.ts +136 -0
- package/examples/extensions/plan/plugin.json +12 -0
- package/examples/extensions/prompt-customizer/index.ts +117 -0
- package/examples/extensions/prompt-customizer/plugin.json +8 -0
- package/examples/extensions/protected-paths/index.ts +44 -0
- package/examples/extensions/protected-paths/plugin.json +11 -0
- package/examples/extensions/provider-attribution/README.md +12 -0
- package/examples/extensions/provider-attribution/index.ts +86 -0
- package/examples/extensions/provider-attribution/plugin.json +10 -0
- package/examples/extensions/send-user-message/index.ts +118 -0
- package/examples/extensions/send-user-message/plugin.json +11 -0
- package/examples/extensions/session-name/index.ts +31 -0
- package/examples/extensions/session-name/plugin.json +11 -0
- package/examples/extensions/session-share/README.md +15 -0
- package/examples/extensions/session-share/index.ts +170 -0
- package/examples/extensions/session-share/plugin.json +15 -0
- package/examples/extensions/structured-output/index.ts +68 -0
- package/examples/extensions/structured-output/plugin.json +10 -0
- package/examples/extensions/subagent/README.md +177 -0
- package/examples/extensions/subagent/agents/planner.md +37 -0
- package/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/examples/extensions/subagent/agents/scout.md +50 -0
- package/examples/extensions/subagent/agents/worker.md +24 -0
- package/examples/extensions/subagent/agents.ts +157 -0
- package/examples/extensions/subagent/index.ts +1057 -0
- package/examples/extensions/subagent/plugin.json +13 -0
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/examples/extensions/subagent/prompts/implement.md +10 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/examples/extensions/suite-manager/README.md +45 -0
- package/examples/extensions/suite-manager/index.ts +182 -0
- package/examples/extensions/suite-manager/plugin.json +13 -0
- package/examples/extensions/timed-confirm/index.ts +93 -0
- package/examples/extensions/timed-confirm/plugin.json +13 -0
- package/examples/extensions/todo-set/README.md +18 -0
- package/examples/extensions/todo-set/index.ts +133 -0
- package/examples/extensions/todo-set/plugin.json +12 -0
- package/examples/extensions/tool-override/index.ts +159 -0
- package/examples/extensions/tool-override/plugin.json +11 -0
- package/examples/extensions/trigger-compact/index.ts +76 -0
- package/examples/extensions/trigger-compact/plugin.json +14 -0
- package/examples/extensions/truncated-tool/index.ts +204 -0
- package/examples/extensions/truncated-tool/plugin.json +10 -0
- package/examples/extensions/with-deps/index.ts +42 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +22 -0
- package/examples/extensions/with-deps/plugin.json +10 -0
- package/examples/remote-client.ts +66 -0
- package/examples/rpc-extension-ui.ts +641 -0
- package/examples/sdk/01-minimal.ts +26 -0
- package/examples/sdk/02-custom-model.ts +49 -0
- package/examples/sdk/03-custom-prompt.ts +70 -0
- package/examples/sdk/04-skills.ts +55 -0
- package/examples/sdk/05-tools.ts +48 -0
- package/examples/sdk/07-context-files.ts +42 -0
- package/examples/sdk/08-prompt-templates.ts +51 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +34 -0
- package/examples/sdk/10-settings.ts +53 -0
- package/examples/sdk/11-sessions.ts +52 -0
- package/examples/sdk/12-full-control.ts +72 -0
- package/examples/sdk/13-session-runtime.ts +71 -0
- package/examples/sdk/14-custom-session-storage.ts +132 -0
- package/examples/sdk/README.md +139 -0
- package/package.json +111 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-manager-controller.d.ts","sourceRoot":"","sources":["../../src/cli/plugin-manager-controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgC,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,KAAK,EAA4B,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACnG,OAAO,KAAK,EAEX,mBAAmB,EAEnB,kBAAkB,EAClB,MAAM,+BAA+B,CAAC;AAMvC,MAAM,MAAM,0BAA0B,GAAG,WAAW,GAAG,WAAW,GAAG,kBAAkB,GAAG,aAAa,CAAC;AAExG,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC;IAC/D,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,kCAAkC,GAC3C,WAAW,GACX,sBAAsB,GACtB,eAAe,GACf,mBAAmB,GACnB,0BAA0B,GAC1B,+BAA+B,GAC/B,6BAA6B,GAC7B,uBAAuB,CAAC;AAE3B,MAAM,MAAM,6BAA6B,GACtC;IAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAA;CAAE,GACrE;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,kCAAkC,CAAA;CAAE,CAAC;AAEnF,MAAM,MAAM,6BAA6B,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,oBAAoB,CAAC;AAExH,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,kCAAkC,CAAC;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;CAC5C;AAED,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC5G,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAClG,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACjG,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,OAAO,CAAC,6BAA6B,CAAC,CAAC;CACjG;AAED,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC9B;AAqHD;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACxD,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC;CACnC,GAAG,yBAAyB,CAkF5B","sourcesContent":["import { comparePluginVersionsV1 } from \"../plugins/ecosystem/catalog.ts\";\nimport type { PluginEcosystemCliResponseV1, PluginEcosystemCliV1 } from \"../plugins/ecosystem/cli.ts\";\nimport type { PluginRegistrySnapshotV1, PluginRegistryV1 } from \"../plugins/ecosystem/registry.ts\";\nimport type {\n\tPluginStateReadResultV1,\n\tPluginStateRecordV1,\n\tPluginStateSnapshotV1,\n\tPluginStateStoreV1,\n} from \"../plugins/ecosystem/state.ts\";\n\nconst MAX_MANAGER_ENTRIES_V1 = 128;\nconst MAX_MANAGER_DIAGNOSTICS_V1 = 8;\nconst MAX_MANAGER_ID_CHARS_V1 = 256;\n\nexport type PluginManagerEntryStatusV1 = \"available\" | \"installed\" | \"update-available\" | \"unavailable\";\n\nexport interface PluginManagerEntryV1 {\n\treadonly pluginId: string;\n\treadonly pluginVersion: string;\n\treadonly status: PluginManagerEntryStatusV1;\n\treadonly signed: boolean;\n\treadonly installedVersion?: string;\n\treadonly lifecycle?: PluginStateRecordV1[\"state\"][\"lifecycle\"];\n\treadonly diagnosticCodes: readonly string[];\n}\n\nexport interface PluginManagerSnapshotV1 {\n\treadonly version: 1;\n\treadonly registrySource: string;\n\treadonly stateStatus: \"ok\" | \"missing\";\n\treadonly entries: readonly PluginManagerEntryV1[];\n\treadonly truncated: boolean;\n}\n\nexport type PluginManagerControllerErrorCodeV1 =\n\t| \"cancelled\"\n\t| \"registry-unavailable\"\n\t| \"state-invalid\"\n\t| \"state-unavailable\"\n\t| \"manager-operation-failed\"\n\t| \"manager-operation-unsupported\"\n\t| \"manager-operation-cancelled\"\n\t| \"confirmation-required\";\n\nexport type PluginManagerSnapshotResultV1 =\n\t| { readonly status: \"ok\"; readonly snapshot: PluginManagerSnapshotV1 }\n\t| { readonly status: \"error\"; readonly code: PluginManagerControllerErrorCodeV1 };\n\nexport type PluginManagerMutationStatusV1 = \"succeeded\" | \"failed\" | \"unsupported\" | \"cancelled\" | \"needs_confirmation\";\n\nexport interface PluginManagerMutationResultV1 {\n\treadonly status: PluginManagerMutationStatusV1;\n\treadonly code?: PluginManagerControllerErrorCodeV1;\n\treadonly snapshot?: PluginManagerSnapshotV1;\n}\n\nexport interface PluginManagerControllerV1 {\n\treadonly getSnapshot: (input?: { readonly signal?: AbortSignal }) => Promise<PluginManagerSnapshotResultV1>;\n\treadonly install: (input: PluginManagerMutationInputV1) => Promise<PluginManagerMutationResultV1>;\n\treadonly update: (input: PluginManagerMutationInputV1) => Promise<PluginManagerMutationResultV1>;\n\treadonly remove: (input: PluginManagerMutationInputV1) => Promise<PluginManagerMutationResultV1>;\n}\n\nexport interface PluginManagerMutationInputV1 {\n\treadonly pluginId: string;\n\treadonly pluginVersion?: string;\n\treadonly confirmed: boolean;\n\treadonly signal?: AbortSignal;\n}\n\nfunction boundedId(value: string, label: string): string {\n\tif (\n\t\ttypeof value !== \"string\" ||\n\t\tvalue.trim() === \"\" ||\n\t\tvalue.length > MAX_MANAGER_ID_CHARS_V1 ||\n\t\t/[\\u0000-\\u001f\\s]/u.test(value)\n\t)\n\t\tthrow new Error(`${label} is invalid`);\n\treturn value;\n}\n\nfunction signalAborted(signal: AbortSignal | undefined): boolean {\n\treturn signal?.aborted === true;\n}\n\nfunction rejectionCodes(\n\tregistry: PluginRegistrySnapshotV1,\n\tpluginId: string,\n\tpluginVersion: string,\n): readonly string[] {\n\treturn Object.freeze(\n\t\tregistry.rejected\n\t\t\t.filter((entry) => entry.pluginId === pluginId && entry.pluginVersion === pluginVersion)\n\t\t\t.slice(0, MAX_MANAGER_DIAGNOSTICS_V1)\n\t\t\t.map((entry) => entry.code),\n\t);\n}\n\nfunction activeRecord(state: PluginStateSnapshotV1, pluginId: string): PluginStateRecordV1 | undefined {\n\treturn state.records\n\t\t.filter((record) => record.pluginId === pluginId && record.state.lifecycle === \"active\")\n\t\t.sort((left, right) => comparePluginVersionsV1(right.pluginVersion, left.pluginVersion))[0];\n}\n\nfunction makeSnapshot(\n\tregistry: PluginRegistrySnapshotV1,\n\tstateStatus: \"ok\" | \"missing\",\n\tstate: PluginStateSnapshotV1,\n): PluginManagerSnapshotV1 {\n\tconst identities = new Map<\n\t\tstring,\n\t\t{ readonly pluginId: string; readonly pluginVersion: string; readonly signed: boolean }\n\t>();\n\tfor (const entry of registry.entries) {\n\t\tidentities.set(`${entry.pluginId}@${entry.pluginVersion}`, entry);\n\t}\n\t// Source/digest/platform-rejected manifests are intentionally visible as\n\t// unavailable so the host UI can explain why an installed catalog item\n\t// cannot be enabled. Their source, reason and package bytes stay host-only.\n\tfor (const rejection of registry.rejected) {\n\t\tconst identity = `${rejection.pluginId}@${rejection.pluginVersion}`;\n\t\tif (!identities.has(identity)) {\n\t\t\tidentities.set(identity, {\n\t\t\t\tpluginId: rejection.pluginId,\n\t\t\t\tpluginVersion: rejection.pluginVersion,\n\t\t\t\tsigned: false,\n\t\t\t});\n\t\t}\n\t}\n\tconst entries = [...identities.values()]\n\t\t.map((entry) => {\n\t\t\tconst installed = activeRecord(state, entry.pluginId);\n\t\t\tconst diagnostics = rejectionCodes(registry, entry.pluginId, entry.pluginVersion);\n\t\t\tconst unavailable =\n\t\t\t\tdiagnostics.length > 0 ||\n\t\t\t\t!registry.verified.some(\n\t\t\t\t\t(candidate) => candidate.pluginId === entry.pluginId && candidate.pluginVersion === entry.pluginVersion,\n\t\t\t\t);\n\t\t\tconst isInstalled = installed?.pluginVersion === entry.pluginVersion;\n\t\t\treturn Object.freeze({\n\t\t\t\tpluginId: entry.pluginId,\n\t\t\t\tpluginVersion: entry.pluginVersion,\n\t\t\t\tstatus: unavailable\n\t\t\t\t\t? (\"unavailable\" as const)\n\t\t\t\t\t: isInstalled\n\t\t\t\t\t\t? (\"installed\" as const)\n\t\t\t\t\t\t: installed === undefined\n\t\t\t\t\t\t\t? (\"available\" as const)\n\t\t\t\t\t\t\t: (\"update-available\" as const),\n\t\t\t\tsigned: entry.signed,\n\t\t\t\t...(installed === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: { installedVersion: installed.pluginVersion, lifecycle: installed.state.lifecycle }),\n\t\t\t\tdiagnosticCodes: diagnostics,\n\t\t\t});\n\t\t})\n\t\t.sort((left, right) => {\n\t\t\tconst idOrder = left.pluginId.localeCompare(right.pluginId);\n\t\t\treturn idOrder === 0 ? comparePluginVersionsV1(right.pluginVersion, left.pluginVersion) : idOrder;\n\t\t});\n\tconst boundedEntries = Object.freeze(entries.slice(0, MAX_MANAGER_ENTRIES_V1));\n\treturn Object.freeze({\n\t\tversion: 1,\n\t\tregistrySource: registry.source,\n\t\tstateStatus,\n\t\tentries: boundedEntries,\n\t\ttruncated: entries.length > boundedEntries.length,\n\t});\n}\n\nfunction stateResult(\n\tresult: PluginStateReadResultV1,\n): { readonly status: \"ok\" | \"missing\"; readonly snapshot: PluginStateSnapshotV1 } | undefined {\n\tif (result.status === \"ok\" || result.status === \"missing\") {\n\t\treturn { status: result.status, snapshot: result.snapshot };\n\t}\n\treturn undefined;\n}\n\nfunction responseCode(response: PluginEcosystemCliResponseV1): PluginManagerControllerErrorCodeV1 {\n\tif (response.status === \"unsupported\") return \"manager-operation-unsupported\";\n\tif (response.status === \"cancelled\") return \"manager-operation-cancelled\";\n\treturn \"manager-operation-failed\";\n}\n\n/**\n * Host-owned installation/update surface. The UI sees only bounded entries\n * and stable operation status; registry sources, installers, paths, package\n * bytes, signatures and credentials never cross this boundary.\n */\nexport function createPluginManagerControllerV1(options: {\n\treadonly registry: PluginRegistryV1;\n\treadonly stateStore: PluginStateStoreV1;\n\treadonly cli: PluginEcosystemCliV1;\n}): PluginManagerControllerV1 {\n\tconst getSnapshot = async (\n\t\tinput: { readonly signal?: AbortSignal } = {},\n\t): Promise<PluginManagerSnapshotResultV1> => {\n\t\tif (signalAborted(input.signal)) return { status: \"error\", code: \"cancelled\" };\n\t\tlet registry: PluginRegistrySnapshotV1;\n\t\ttry {\n\t\t\tregistry = await options.registry.list({ signal: input.signal });\n\t\t} catch {\n\t\t\tif (signalAborted(input.signal)) return { status: \"error\", code: \"cancelled\" };\n\t\t\treturn { status: \"error\", code: \"registry-unavailable\" };\n\t\t}\n\t\tif (signalAborted(input.signal)) return { status: \"error\", code: \"cancelled\" };\n\t\tlet state: PluginStateReadResultV1;\n\t\ttry {\n\t\t\tstate = await options.stateStore.read({ signal: input.signal });\n\t\t} catch {\n\t\t\tif (signalAborted(input.signal)) return { status: \"error\", code: \"cancelled\" };\n\t\t\treturn { status: \"error\", code: \"state-unavailable\" };\n\t\t}\n\t\tif (signalAborted(input.signal)) return { status: \"error\", code: \"cancelled\" };\n\t\tconst checkedState = stateResult(state);\n\t\tif (checkedState === undefined)\n\t\t\treturn {\n\t\t\t\tstatus: \"error\",\n\t\t\t\tcode: state.status === \"cancelled\" ? \"cancelled\" : \"state-invalid\",\n\t\t\t};\n\t\treturn {\n\t\t\tstatus: \"ok\",\n\t\t\tsnapshot: makeSnapshot(registry, checkedState.status, checkedState.snapshot),\n\t\t};\n\t};\n\n\tconst run = async (input: {\n\t\treadonly command: \"install\" | \"update\" | \"remove\";\n\t\treadonly pluginId: string;\n\t\treadonly pluginVersion?: string;\n\t\treadonly confirmed: boolean;\n\t\treadonly signal?: AbortSignal;\n\t}): Promise<PluginManagerMutationResultV1> => {\n\t\ttry {\n\t\t\tboundedId(input.pluginId, \"plugin ID\");\n\t\t\tif (input.pluginVersion !== undefined) boundedId(input.pluginVersion, \"plugin version\");\n\t\t} catch {\n\t\t\treturn { status: \"failed\", code: \"manager-operation-failed\" };\n\t\t}\n\t\tif (!input.confirmed) return { status: \"needs_confirmation\", code: \"confirmation-required\" };\n\t\tif (signalAborted(input.signal)) return { status: \"cancelled\", code: \"cancelled\" };\n\t\tlet response: PluginEcosystemCliResponseV1;\n\t\ttry {\n\t\t\tconst identity =\n\t\t\t\tinput.pluginVersion === undefined ? input.pluginId : `${input.pluginId}@${input.pluginVersion}`;\n\t\t\tresponse = await options.cli.execute({\n\t\t\t\targv: [input.command, identity, \"--json\"],\n\t\t\t\tsignal: input.signal,\n\t\t\t});\n\t\t} catch {\n\t\t\treturn { status: \"failed\", code: \"manager-operation-failed\" };\n\t\t}\n\t\tif (response.status !== \"succeeded\") {\n\t\t\treturn {\n\t\t\t\tstatus:\n\t\t\t\t\tresponse.status === \"unsupported\"\n\t\t\t\t\t\t? \"unsupported\"\n\t\t\t\t\t\t: response.status === \"cancelled\"\n\t\t\t\t\t\t\t? \"cancelled\"\n\t\t\t\t\t\t\t: \"failed\",\n\t\t\t\tcode: responseCode(response),\n\t\t\t};\n\t\t}\n\t\tconst refreshed = await getSnapshot({ signal: input.signal });\n\t\treturn refreshed.status === \"ok\"\n\t\t\t? { status: \"succeeded\", snapshot: refreshed.snapshot }\n\t\t\t: { status: \"succeeded\" };\n\t};\n\n\treturn Object.freeze({\n\t\tgetSnapshot,\n\t\tinstall: (input: PluginManagerMutationInputV1) => run({ ...input, command: \"install\" }),\n\t\tupdate: (input: PluginManagerMutationInputV1) => run({ ...input, command: \"update\" }),\n\t\tremove: (input: PluginManagerMutationInputV1) => run({ ...input, command: \"remove\" }),\n\t});\n}\n"]}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { comparePluginVersionsV1 } from "../plugins/ecosystem/catalog.js";
|
|
2
|
+
const MAX_MANAGER_ENTRIES_V1 = 128;
|
|
3
|
+
const MAX_MANAGER_DIAGNOSTICS_V1 = 8;
|
|
4
|
+
const MAX_MANAGER_ID_CHARS_V1 = 256;
|
|
5
|
+
function boundedId(value, label) {
|
|
6
|
+
if (typeof value !== "string" ||
|
|
7
|
+
value.trim() === "" ||
|
|
8
|
+
value.length > MAX_MANAGER_ID_CHARS_V1 ||
|
|
9
|
+
/[\u0000-\u001f\s]/u.test(value))
|
|
10
|
+
throw new Error(`${label} is invalid`);
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
function signalAborted(signal) {
|
|
14
|
+
return signal?.aborted === true;
|
|
15
|
+
}
|
|
16
|
+
function rejectionCodes(registry, pluginId, pluginVersion) {
|
|
17
|
+
return Object.freeze(registry.rejected
|
|
18
|
+
.filter((entry) => entry.pluginId === pluginId && entry.pluginVersion === pluginVersion)
|
|
19
|
+
.slice(0, MAX_MANAGER_DIAGNOSTICS_V1)
|
|
20
|
+
.map((entry) => entry.code));
|
|
21
|
+
}
|
|
22
|
+
function activeRecord(state, pluginId) {
|
|
23
|
+
return state.records
|
|
24
|
+
.filter((record) => record.pluginId === pluginId && record.state.lifecycle === "active")
|
|
25
|
+
.sort((left, right) => comparePluginVersionsV1(right.pluginVersion, left.pluginVersion))[0];
|
|
26
|
+
}
|
|
27
|
+
function makeSnapshot(registry, stateStatus, state) {
|
|
28
|
+
const identities = new Map();
|
|
29
|
+
for (const entry of registry.entries) {
|
|
30
|
+
identities.set(`${entry.pluginId}@${entry.pluginVersion}`, entry);
|
|
31
|
+
}
|
|
32
|
+
// Source/digest/platform-rejected manifests are intentionally visible as
|
|
33
|
+
// unavailable so the host UI can explain why an installed catalog item
|
|
34
|
+
// cannot be enabled. Their source, reason and package bytes stay host-only.
|
|
35
|
+
for (const rejection of registry.rejected) {
|
|
36
|
+
const identity = `${rejection.pluginId}@${rejection.pluginVersion}`;
|
|
37
|
+
if (!identities.has(identity)) {
|
|
38
|
+
identities.set(identity, {
|
|
39
|
+
pluginId: rejection.pluginId,
|
|
40
|
+
pluginVersion: rejection.pluginVersion,
|
|
41
|
+
signed: false,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const entries = [...identities.values()]
|
|
46
|
+
.map((entry) => {
|
|
47
|
+
const installed = activeRecord(state, entry.pluginId);
|
|
48
|
+
const diagnostics = rejectionCodes(registry, entry.pluginId, entry.pluginVersion);
|
|
49
|
+
const unavailable = diagnostics.length > 0 ||
|
|
50
|
+
!registry.verified.some((candidate) => candidate.pluginId === entry.pluginId && candidate.pluginVersion === entry.pluginVersion);
|
|
51
|
+
const isInstalled = installed?.pluginVersion === entry.pluginVersion;
|
|
52
|
+
return Object.freeze({
|
|
53
|
+
pluginId: entry.pluginId,
|
|
54
|
+
pluginVersion: entry.pluginVersion,
|
|
55
|
+
status: unavailable
|
|
56
|
+
? "unavailable"
|
|
57
|
+
: isInstalled
|
|
58
|
+
? "installed"
|
|
59
|
+
: installed === undefined
|
|
60
|
+
? "available"
|
|
61
|
+
: "update-available",
|
|
62
|
+
signed: entry.signed,
|
|
63
|
+
...(installed === undefined
|
|
64
|
+
? {}
|
|
65
|
+
: { installedVersion: installed.pluginVersion, lifecycle: installed.state.lifecycle }),
|
|
66
|
+
diagnosticCodes: diagnostics,
|
|
67
|
+
});
|
|
68
|
+
})
|
|
69
|
+
.sort((left, right) => {
|
|
70
|
+
const idOrder = left.pluginId.localeCompare(right.pluginId);
|
|
71
|
+
return idOrder === 0 ? comparePluginVersionsV1(right.pluginVersion, left.pluginVersion) : idOrder;
|
|
72
|
+
});
|
|
73
|
+
const boundedEntries = Object.freeze(entries.slice(0, MAX_MANAGER_ENTRIES_V1));
|
|
74
|
+
return Object.freeze({
|
|
75
|
+
version: 1,
|
|
76
|
+
registrySource: registry.source,
|
|
77
|
+
stateStatus,
|
|
78
|
+
entries: boundedEntries,
|
|
79
|
+
truncated: entries.length > boundedEntries.length,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function stateResult(result) {
|
|
83
|
+
if (result.status === "ok" || result.status === "missing") {
|
|
84
|
+
return { status: result.status, snapshot: result.snapshot };
|
|
85
|
+
}
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
function responseCode(response) {
|
|
89
|
+
if (response.status === "unsupported")
|
|
90
|
+
return "manager-operation-unsupported";
|
|
91
|
+
if (response.status === "cancelled")
|
|
92
|
+
return "manager-operation-cancelled";
|
|
93
|
+
return "manager-operation-failed";
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Host-owned installation/update surface. The UI sees only bounded entries
|
|
97
|
+
* and stable operation status; registry sources, installers, paths, package
|
|
98
|
+
* bytes, signatures and credentials never cross this boundary.
|
|
99
|
+
*/
|
|
100
|
+
export function createPluginManagerControllerV1(options) {
|
|
101
|
+
const getSnapshot = async (input = {}) => {
|
|
102
|
+
if (signalAborted(input.signal))
|
|
103
|
+
return { status: "error", code: "cancelled" };
|
|
104
|
+
let registry;
|
|
105
|
+
try {
|
|
106
|
+
registry = await options.registry.list({ signal: input.signal });
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
if (signalAborted(input.signal))
|
|
110
|
+
return { status: "error", code: "cancelled" };
|
|
111
|
+
return { status: "error", code: "registry-unavailable" };
|
|
112
|
+
}
|
|
113
|
+
if (signalAborted(input.signal))
|
|
114
|
+
return { status: "error", code: "cancelled" };
|
|
115
|
+
let state;
|
|
116
|
+
try {
|
|
117
|
+
state = await options.stateStore.read({ signal: input.signal });
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
if (signalAborted(input.signal))
|
|
121
|
+
return { status: "error", code: "cancelled" };
|
|
122
|
+
return { status: "error", code: "state-unavailable" };
|
|
123
|
+
}
|
|
124
|
+
if (signalAborted(input.signal))
|
|
125
|
+
return { status: "error", code: "cancelled" };
|
|
126
|
+
const checkedState = stateResult(state);
|
|
127
|
+
if (checkedState === undefined)
|
|
128
|
+
return {
|
|
129
|
+
status: "error",
|
|
130
|
+
code: state.status === "cancelled" ? "cancelled" : "state-invalid",
|
|
131
|
+
};
|
|
132
|
+
return {
|
|
133
|
+
status: "ok",
|
|
134
|
+
snapshot: makeSnapshot(registry, checkedState.status, checkedState.snapshot),
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
const run = async (input) => {
|
|
138
|
+
try {
|
|
139
|
+
boundedId(input.pluginId, "plugin ID");
|
|
140
|
+
if (input.pluginVersion !== undefined)
|
|
141
|
+
boundedId(input.pluginVersion, "plugin version");
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return { status: "failed", code: "manager-operation-failed" };
|
|
145
|
+
}
|
|
146
|
+
if (!input.confirmed)
|
|
147
|
+
return { status: "needs_confirmation", code: "confirmation-required" };
|
|
148
|
+
if (signalAborted(input.signal))
|
|
149
|
+
return { status: "cancelled", code: "cancelled" };
|
|
150
|
+
let response;
|
|
151
|
+
try {
|
|
152
|
+
const identity = input.pluginVersion === undefined ? input.pluginId : `${input.pluginId}@${input.pluginVersion}`;
|
|
153
|
+
response = await options.cli.execute({
|
|
154
|
+
argv: [input.command, identity, "--json"],
|
|
155
|
+
signal: input.signal,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return { status: "failed", code: "manager-operation-failed" };
|
|
160
|
+
}
|
|
161
|
+
if (response.status !== "succeeded") {
|
|
162
|
+
return {
|
|
163
|
+
status: response.status === "unsupported"
|
|
164
|
+
? "unsupported"
|
|
165
|
+
: response.status === "cancelled"
|
|
166
|
+
? "cancelled"
|
|
167
|
+
: "failed",
|
|
168
|
+
code: responseCode(response),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
const refreshed = await getSnapshot({ signal: input.signal });
|
|
172
|
+
return refreshed.status === "ok"
|
|
173
|
+
? { status: "succeeded", snapshot: refreshed.snapshot }
|
|
174
|
+
: { status: "succeeded" };
|
|
175
|
+
};
|
|
176
|
+
return Object.freeze({
|
|
177
|
+
getSnapshot,
|
|
178
|
+
install: (input) => run({ ...input, command: "install" }),
|
|
179
|
+
update: (input) => run({ ...input, command: "update" }),
|
|
180
|
+
remove: (input) => run({ ...input, command: "remove" }),
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=plugin-manager-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-manager-controller.js","sourceRoot":"","sources":["../../src/cli/plugin-manager-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { comparePluginVersionsV1 } from \"../plugins/ecosystem/catalog.ts\";\nimport type { PluginEcosystemCliResponseV1, PluginEcosystemCliV1 } from \"../plugins/ecosystem/cli.ts\";\nimport type { PluginRegistrySnapshotV1, PluginRegistryV1 } from \"../plugins/ecosystem/registry.ts\";\nimport type {\n\tPluginStateReadResultV1,\n\tPluginStateRecordV1,\n\tPluginStateSnapshotV1,\n\tPluginStateStoreV1,\n} from \"../plugins/ecosystem/state.ts\";\n\nconst MAX_MANAGER_ENTRIES_V1 = 128;\nconst MAX_MANAGER_DIAGNOSTICS_V1 = 8;\nconst MAX_MANAGER_ID_CHARS_V1 = 256;\n\nexport type PluginManagerEntryStatusV1 = \"available\" | \"installed\" | \"update-available\" | \"unavailable\";\n\nexport interface PluginManagerEntryV1 {\n\treadonly pluginId: string;\n\treadonly pluginVersion: string;\n\treadonly status: PluginManagerEntryStatusV1;\n\treadonly signed: boolean;\n\treadonly installedVersion?: string;\n\treadonly lifecycle?: PluginStateRecordV1[\"state\"][\"lifecycle\"];\n\treadonly diagnosticCodes: readonly string[];\n}\n\nexport interface PluginManagerSnapshotV1 {\n\treadonly version: 1;\n\treadonly registrySource: string;\n\treadonly stateStatus: \"ok\" | \"missing\";\n\treadonly entries: readonly PluginManagerEntryV1[];\n\treadonly truncated: boolean;\n}\n\nexport type PluginManagerControllerErrorCodeV1 =\n\t| \"cancelled\"\n\t| \"registry-unavailable\"\n\t| \"state-invalid\"\n\t| \"state-unavailable\"\n\t| \"manager-operation-failed\"\n\t| \"manager-operation-unsupported\"\n\t| \"manager-operation-cancelled\"\n\t| \"confirmation-required\";\n\nexport type PluginManagerSnapshotResultV1 =\n\t| { readonly status: \"ok\"; readonly snapshot: PluginManagerSnapshotV1 }\n\t| { readonly status: \"error\"; readonly code: PluginManagerControllerErrorCodeV1 };\n\nexport type PluginManagerMutationStatusV1 = \"succeeded\" | \"failed\" | \"unsupported\" | \"cancelled\" | \"needs_confirmation\";\n\nexport interface PluginManagerMutationResultV1 {\n\treadonly status: PluginManagerMutationStatusV1;\n\treadonly code?: PluginManagerControllerErrorCodeV1;\n\treadonly snapshot?: PluginManagerSnapshotV1;\n}\n\nexport interface PluginManagerControllerV1 {\n\treadonly getSnapshot: (input?: { readonly signal?: AbortSignal }) => Promise<PluginManagerSnapshotResultV1>;\n\treadonly install: (input: PluginManagerMutationInputV1) => Promise<PluginManagerMutationResultV1>;\n\treadonly update: (input: PluginManagerMutationInputV1) => Promise<PluginManagerMutationResultV1>;\n\treadonly remove: (input: PluginManagerMutationInputV1) => Promise<PluginManagerMutationResultV1>;\n}\n\nexport interface PluginManagerMutationInputV1 {\n\treadonly pluginId: string;\n\treadonly pluginVersion?: string;\n\treadonly confirmed: boolean;\n\treadonly signal?: AbortSignal;\n}\n\nfunction boundedId(value: string, label: string): string {\n\tif (\n\t\ttypeof value !== \"string\" ||\n\t\tvalue.trim() === \"\" ||\n\t\tvalue.length > MAX_MANAGER_ID_CHARS_V1 ||\n\t\t/[\\u0000-\\u001f\\s]/u.test(value)\n\t)\n\t\tthrow new Error(`${label} is invalid`);\n\treturn value;\n}\n\nfunction signalAborted(signal: AbortSignal | undefined): boolean {\n\treturn signal?.aborted === true;\n}\n\nfunction rejectionCodes(\n\tregistry: PluginRegistrySnapshotV1,\n\tpluginId: string,\n\tpluginVersion: string,\n): readonly string[] {\n\treturn Object.freeze(\n\t\tregistry.rejected\n\t\t\t.filter((entry) => entry.pluginId === pluginId && entry.pluginVersion === pluginVersion)\n\t\t\t.slice(0, MAX_MANAGER_DIAGNOSTICS_V1)\n\t\t\t.map((entry) => entry.code),\n\t);\n}\n\nfunction activeRecord(state: PluginStateSnapshotV1, pluginId: string): PluginStateRecordV1 | undefined {\n\treturn state.records\n\t\t.filter((record) => record.pluginId === pluginId && record.state.lifecycle === \"active\")\n\t\t.sort((left, right) => comparePluginVersionsV1(right.pluginVersion, left.pluginVersion))[0];\n}\n\nfunction makeSnapshot(\n\tregistry: PluginRegistrySnapshotV1,\n\tstateStatus: \"ok\" | \"missing\",\n\tstate: PluginStateSnapshotV1,\n): PluginManagerSnapshotV1 {\n\tconst identities = new Map<\n\t\tstring,\n\t\t{ readonly pluginId: string; readonly pluginVersion: string; readonly signed: boolean }\n\t>();\n\tfor (const entry of registry.entries) {\n\t\tidentities.set(`${entry.pluginId}@${entry.pluginVersion}`, entry);\n\t}\n\t// Source/digest/platform-rejected manifests are intentionally visible as\n\t// unavailable so the host UI can explain why an installed catalog item\n\t// cannot be enabled. Their source, reason and package bytes stay host-only.\n\tfor (const rejection of registry.rejected) {\n\t\tconst identity = `${rejection.pluginId}@${rejection.pluginVersion}`;\n\t\tif (!identities.has(identity)) {\n\t\t\tidentities.set(identity, {\n\t\t\t\tpluginId: rejection.pluginId,\n\t\t\t\tpluginVersion: rejection.pluginVersion,\n\t\t\t\tsigned: false,\n\t\t\t});\n\t\t}\n\t}\n\tconst entries = [...identities.values()]\n\t\t.map((entry) => {\n\t\t\tconst installed = activeRecord(state, entry.pluginId);\n\t\t\tconst diagnostics = rejectionCodes(registry, entry.pluginId, entry.pluginVersion);\n\t\t\tconst unavailable =\n\t\t\t\tdiagnostics.length > 0 ||\n\t\t\t\t!registry.verified.some(\n\t\t\t\t\t(candidate) => candidate.pluginId === entry.pluginId && candidate.pluginVersion === entry.pluginVersion,\n\t\t\t\t);\n\t\t\tconst isInstalled = installed?.pluginVersion === entry.pluginVersion;\n\t\t\treturn Object.freeze({\n\t\t\t\tpluginId: entry.pluginId,\n\t\t\t\tpluginVersion: entry.pluginVersion,\n\t\t\t\tstatus: unavailable\n\t\t\t\t\t? (\"unavailable\" as const)\n\t\t\t\t\t: isInstalled\n\t\t\t\t\t\t? (\"installed\" as const)\n\t\t\t\t\t\t: installed === undefined\n\t\t\t\t\t\t\t? (\"available\" as const)\n\t\t\t\t\t\t\t: (\"update-available\" as const),\n\t\t\t\tsigned: entry.signed,\n\t\t\t\t...(installed === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: { installedVersion: installed.pluginVersion, lifecycle: installed.state.lifecycle }),\n\t\t\t\tdiagnosticCodes: diagnostics,\n\t\t\t});\n\t\t})\n\t\t.sort((left, right) => {\n\t\t\tconst idOrder = left.pluginId.localeCompare(right.pluginId);\n\t\t\treturn idOrder === 0 ? comparePluginVersionsV1(right.pluginVersion, left.pluginVersion) : idOrder;\n\t\t});\n\tconst boundedEntries = Object.freeze(entries.slice(0, MAX_MANAGER_ENTRIES_V1));\n\treturn Object.freeze({\n\t\tversion: 1,\n\t\tregistrySource: registry.source,\n\t\tstateStatus,\n\t\tentries: boundedEntries,\n\t\ttruncated: entries.length > boundedEntries.length,\n\t});\n}\n\nfunction stateResult(\n\tresult: PluginStateReadResultV1,\n): { readonly status: \"ok\" | \"missing\"; readonly snapshot: PluginStateSnapshotV1 } | undefined {\n\tif (result.status === \"ok\" || result.status === \"missing\") {\n\t\treturn { status: result.status, snapshot: result.snapshot };\n\t}\n\treturn undefined;\n}\n\nfunction responseCode(response: PluginEcosystemCliResponseV1): PluginManagerControllerErrorCodeV1 {\n\tif (response.status === \"unsupported\") return \"manager-operation-unsupported\";\n\tif (response.status === \"cancelled\") return \"manager-operation-cancelled\";\n\treturn \"manager-operation-failed\";\n}\n\n/**\n * Host-owned installation/update surface. The UI sees only bounded entries\n * and stable operation status; registry sources, installers, paths, package\n * bytes, signatures and credentials never cross this boundary.\n */\nexport function createPluginManagerControllerV1(options: {\n\treadonly registry: PluginRegistryV1;\n\treadonly stateStore: PluginStateStoreV1;\n\treadonly cli: PluginEcosystemCliV1;\n}): PluginManagerControllerV1 {\n\tconst getSnapshot = async (\n\t\tinput: { readonly signal?: AbortSignal } = {},\n\t): Promise<PluginManagerSnapshotResultV1> => {\n\t\tif (signalAborted(input.signal)) return { status: \"error\", code: \"cancelled\" };\n\t\tlet registry: PluginRegistrySnapshotV1;\n\t\ttry {\n\t\t\tregistry = await options.registry.list({ signal: input.signal });\n\t\t} catch {\n\t\t\tif (signalAborted(input.signal)) return { status: \"error\", code: \"cancelled\" };\n\t\t\treturn { status: \"error\", code: \"registry-unavailable\" };\n\t\t}\n\t\tif (signalAborted(input.signal)) return { status: \"error\", code: \"cancelled\" };\n\t\tlet state: PluginStateReadResultV1;\n\t\ttry {\n\t\t\tstate = await options.stateStore.read({ signal: input.signal });\n\t\t} catch {\n\t\t\tif (signalAborted(input.signal)) return { status: \"error\", code: \"cancelled\" };\n\t\t\treturn { status: \"error\", code: \"state-unavailable\" };\n\t\t}\n\t\tif (signalAborted(input.signal)) return { status: \"error\", code: \"cancelled\" };\n\t\tconst checkedState = stateResult(state);\n\t\tif (checkedState === undefined)\n\t\t\treturn {\n\t\t\t\tstatus: \"error\",\n\t\t\t\tcode: state.status === \"cancelled\" ? \"cancelled\" : \"state-invalid\",\n\t\t\t};\n\t\treturn {\n\t\t\tstatus: \"ok\",\n\t\t\tsnapshot: makeSnapshot(registry, checkedState.status, checkedState.snapshot),\n\t\t};\n\t};\n\n\tconst run = async (input: {\n\t\treadonly command: \"install\" | \"update\" | \"remove\";\n\t\treadonly pluginId: string;\n\t\treadonly pluginVersion?: string;\n\t\treadonly confirmed: boolean;\n\t\treadonly signal?: AbortSignal;\n\t}): Promise<PluginManagerMutationResultV1> => {\n\t\ttry {\n\t\t\tboundedId(input.pluginId, \"plugin ID\");\n\t\t\tif (input.pluginVersion !== undefined) boundedId(input.pluginVersion, \"plugin version\");\n\t\t} catch {\n\t\t\treturn { status: \"failed\", code: \"manager-operation-failed\" };\n\t\t}\n\t\tif (!input.confirmed) return { status: \"needs_confirmation\", code: \"confirmation-required\" };\n\t\tif (signalAborted(input.signal)) return { status: \"cancelled\", code: \"cancelled\" };\n\t\tlet response: PluginEcosystemCliResponseV1;\n\t\ttry {\n\t\t\tconst identity =\n\t\t\t\tinput.pluginVersion === undefined ? input.pluginId : `${input.pluginId}@${input.pluginVersion}`;\n\t\t\tresponse = await options.cli.execute({\n\t\t\t\targv: [input.command, identity, \"--json\"],\n\t\t\t\tsignal: input.signal,\n\t\t\t});\n\t\t} catch {\n\t\t\treturn { status: \"failed\", code: \"manager-operation-failed\" };\n\t\t}\n\t\tif (response.status !== \"succeeded\") {\n\t\t\treturn {\n\t\t\t\tstatus:\n\t\t\t\t\tresponse.status === \"unsupported\"\n\t\t\t\t\t\t? \"unsupported\"\n\t\t\t\t\t\t: response.status === \"cancelled\"\n\t\t\t\t\t\t\t? \"cancelled\"\n\t\t\t\t\t\t\t: \"failed\",\n\t\t\t\tcode: responseCode(response),\n\t\t\t};\n\t\t}\n\t\tconst refreshed = await getSnapshot({ signal: input.signal });\n\t\treturn refreshed.status === \"ok\"\n\t\t\t? { status: \"succeeded\", snapshot: refreshed.snapshot }\n\t\t\t: { status: \"succeeded\" };\n\t};\n\n\treturn Object.freeze({\n\t\tgetSnapshot,\n\t\tinstall: (input: PluginManagerMutationInputV1) => run({ ...input, command: \"install\" }),\n\t\tupdate: (input: PluginManagerMutationInputV1) => run({ ...input, command: \"update\" }),\n\t\tremove: (input: PluginManagerMutationInputV1) => run({ ...input, command: \"remove\" }),\n\t});\n}\n"]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { PluginSelectionStoreV1 } from "../plugins/ecosystem/selection-store.ts";
|
|
2
|
+
import type { HostFactsV1, PluginDiagnosticCodeV1 } from "../plugins/ecosystem/types.ts";
|
|
3
|
+
import type { BuiltinPluginManifestOverridesV1 } from "../profile/plugin-profiles.ts";
|
|
4
|
+
import type { VerifiedToolPluginV1 } from "../profile/profile-assembly.ts";
|
|
5
|
+
export type PluginSelectionUiStateV1 = "selected" | "disabled" | "available";
|
|
6
|
+
export type PluginSelectionControllerErrorCodeV1 = "store-invalid" | "store-cancelled" | "store-error" | "write-invalid" | "write-cancelled" | "write-error" | "unknown-profile" | "unknown-plugin" | "unavailable-plugin";
|
|
7
|
+
export interface PluginSelectionUiPluginV1 {
|
|
8
|
+
readonly pluginId: string;
|
|
9
|
+
readonly state: PluginSelectionUiStateV1;
|
|
10
|
+
readonly availability: "ready" | "unavailable";
|
|
11
|
+
readonly diagnosticCodes: readonly PluginDiagnosticCodeV1[];
|
|
12
|
+
}
|
|
13
|
+
export interface PluginSelectionUiProfileV1 {
|
|
14
|
+
readonly profileId: string;
|
|
15
|
+
readonly version: string;
|
|
16
|
+
readonly plugins: readonly PluginSelectionUiPluginV1[];
|
|
17
|
+
}
|
|
18
|
+
export interface PluginSelectionUiSnapshotV1 {
|
|
19
|
+
readonly version: 1;
|
|
20
|
+
readonly scope: "global" | "project";
|
|
21
|
+
readonly storeStatus: "ok" | "missing";
|
|
22
|
+
readonly profiles: readonly PluginSelectionUiProfileV1[];
|
|
23
|
+
}
|
|
24
|
+
export type PluginSelectionControllerResultV1 = {
|
|
25
|
+
readonly status: "ok";
|
|
26
|
+
readonly snapshot: PluginSelectionUiSnapshotV1;
|
|
27
|
+
} | {
|
|
28
|
+
readonly status: "error";
|
|
29
|
+
readonly code: PluginSelectionControllerErrorCodeV1;
|
|
30
|
+
readonly snapshot?: PluginSelectionUiSnapshotV1;
|
|
31
|
+
};
|
|
32
|
+
export interface PluginSelectionControllerV1 {
|
|
33
|
+
readonly getSnapshot: (input?: {
|
|
34
|
+
readonly signal?: AbortSignal;
|
|
35
|
+
}) => Promise<PluginSelectionControllerResultV1>;
|
|
36
|
+
readonly setState: (input: {
|
|
37
|
+
readonly profileId: string;
|
|
38
|
+
readonly pluginId: string;
|
|
39
|
+
readonly state: Exclude<PluginSelectionUiStateV1, "available">;
|
|
40
|
+
readonly signal?: AbortSignal;
|
|
41
|
+
}) => Promise<PluginSelectionControllerResultV1>;
|
|
42
|
+
readonly toggle: (input: {
|
|
43
|
+
readonly profileId: string;
|
|
44
|
+
readonly pluginId: string;
|
|
45
|
+
readonly signal?: AbortSignal;
|
|
46
|
+
}) => Promise<PluginSelectionControllerResultV1>;
|
|
47
|
+
}
|
|
48
|
+
export declare function createPluginSelectionControllerV1(options: {
|
|
49
|
+
readonly store: PluginSelectionStoreV1;
|
|
50
|
+
readonly host: HostFactsV1;
|
|
51
|
+
readonly scope?: "global" | "project";
|
|
52
|
+
/** Optional host-owned verified plugin set used to project runtime readiness. */
|
|
53
|
+
readonly verifiedPlugins?: readonly VerifiedToolPluginV1[];
|
|
54
|
+
/** Optional host-selected active manifests for installed verified versions. */
|
|
55
|
+
readonly manifestOverrides?: BuiltinPluginManifestOverridesV1;
|
|
56
|
+
}): PluginSelectionControllerV1;
|
|
57
|
+
//# sourceMappingURL=plugin-selection-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-selection-controller.d.ts","sourceRoot":"","sources":["../../src/cli/plugin-selection-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { createPluginSelectionV1, type PluginSelectionV1 } from \"../plugins/ecosystem/selection.ts\";\nimport type {\n\tPluginSelectionStoreMutationResultV1,\n\tPluginSelectionStoreReadResultV1,\n\tPluginSelectionStoreV1,\n} from \"../plugins/ecosystem/selection-store.ts\";\nimport type { HostFactsV1, PluginDiagnosticCodeV1 } from \"../plugins/ecosystem/types.ts\";\nimport type { BuiltinPluginManifestOverridesV1 } from \"../profile/plugin-profiles.ts\";\nimport {\n\ttype BuiltinPluginProfileV1,\n\tlistBuiltinPluginManifestsV1,\n\tlistBuiltinPluginProfilesV1,\n\tresolveBuiltinPluginProfileV1,\n} from \"../profile/plugin-profiles.ts\";\nimport type { VerifiedToolPluginV1 } from \"../profile/profile-assembly.ts\";\n\nconst MAX_PROFILES = 32;\nconst MAX_PLUGINS_PER_PROFILE = 128;\nconst MAX_DIAGNOSTIC_CODES = 8;\n\nexport type PluginSelectionUiStateV1 = \"selected\" | \"disabled\" | \"available\";\nexport type PluginSelectionControllerErrorCodeV1 =\n\t| \"store-invalid\"\n\t| \"store-cancelled\"\n\t| \"store-error\"\n\t| \"write-invalid\"\n\t| \"write-cancelled\"\n\t| \"write-error\"\n\t| \"unknown-profile\"\n\t| \"unknown-plugin\"\n\t| \"unavailable-plugin\";\n\nexport interface PluginSelectionUiPluginV1 {\n\treadonly pluginId: string;\n\treadonly state: PluginSelectionUiStateV1;\n\treadonly availability: \"ready\" | \"unavailable\";\n\treadonly diagnosticCodes: readonly PluginDiagnosticCodeV1[];\n}\n\nexport interface PluginSelectionUiProfileV1 {\n\treadonly profileId: string;\n\treadonly version: string;\n\treadonly plugins: readonly PluginSelectionUiPluginV1[];\n}\n\nexport interface PluginSelectionUiSnapshotV1 {\n\treadonly version: 1;\n\treadonly scope: \"global\" | \"project\";\n\treadonly storeStatus: \"ok\" | \"missing\";\n\treadonly profiles: readonly PluginSelectionUiProfileV1[];\n}\n\nexport type PluginSelectionControllerResultV1 =\n\t| { readonly status: \"ok\"; readonly snapshot: PluginSelectionUiSnapshotV1 }\n\t| {\n\t\t\treadonly status: \"error\";\n\t\t\treadonly code: PluginSelectionControllerErrorCodeV1;\n\t\t\treadonly snapshot?: PluginSelectionUiSnapshotV1;\n\t };\n\nexport interface PluginSelectionControllerV1 {\n\treadonly getSnapshot: (input?: { readonly signal?: AbortSignal }) => Promise<PluginSelectionControllerResultV1>;\n\treadonly setState: (input: {\n\t\treadonly profileId: string;\n\t\treadonly pluginId: string;\n\t\treadonly state: Exclude<PluginSelectionUiStateV1, \"available\">;\n\t\treadonly signal?: AbortSignal;\n\t}) => Promise<PluginSelectionControllerResultV1>;\n\treadonly toggle: (input: {\n\t\treadonly profileId: string;\n\t\treadonly pluginId: string;\n\t\treadonly signal?: AbortSignal;\n\t}) => Promise<PluginSelectionControllerResultV1>;\n}\n\nfunction diagnosticCodes(\n\tresolution: ReturnType<typeof resolveBuiltinPluginProfileV1>,\n\tpluginId: string,\n): readonly PluginDiagnosticCodeV1[] {\n\tif (resolution.status !== \"resolved\") return Object.freeze([]);\n\tconst plugin = resolution.resolution.plugins.find((candidate) => candidate.pluginId === pluginId);\n\treturn Object.freeze((plugin?.diagnostics ?? []).slice(0, MAX_DIAGNOSTIC_CODES).map((item) => item.code));\n}\n\nfunction profileById(profileId: string): BuiltinPluginProfileV1 | undefined {\n\treturn listBuiltinPluginProfilesV1().find((profile) => profile.id === profileId);\n}\n\nfunction selectionForProfile(\n\tsnapshot: Extract<PluginSelectionStoreReadResultV1, { readonly status: \"ok\" | \"missing\" }>[\"snapshot\"],\n\tprofileId: string,\n): PluginSelectionV1 | undefined {\n\treturn snapshot.selections.find((selection) => selection.profileId === profileId);\n}\n\nfunction pluginState(pluginId: string, selection: PluginSelectionV1 | undefined): PluginSelectionUiStateV1 {\n\tif (selection?.disabledPluginIds.includes(pluginId) === true) return \"disabled\";\n\tif (selection === undefined || selection.selectedPluginIds.includes(pluginId)) return \"selected\";\n\treturn \"available\";\n}\n\nfunction makeSnapshot(\n\tstoreStatus: \"ok\" | \"missing\",\n\tstoreSnapshot: Extract<PluginSelectionStoreReadResultV1, { readonly status: \"ok\" | \"missing\" }>[\"snapshot\"],\n\thost: HostFactsV1,\n\tscope: \"global\" | \"project\",\n\tverifiedPlugins: readonly VerifiedToolPluginV1[] | undefined,\n\tmanifestOverrides?: BuiltinPluginManifestOverridesV1,\n): PluginSelectionUiSnapshotV1 {\n\tconst manifests = new Set(listBuiltinPluginManifestsV1().map((manifest) => manifest.id));\n\tconst profiles = listBuiltinPluginProfilesV1()\n\t\t.slice(0, MAX_PROFILES)\n\t\t.map((profile) => {\n\t\t\tconst selection = selectionForProfile(storeSnapshot, profile.id);\n\t\t\tlet resolution: ReturnType<typeof resolveBuiltinPluginProfileV1>;\n\t\t\ttry {\n\t\t\t\tresolution = resolveBuiltinPluginProfileV1({\n\t\t\t\t\tprofileId: profile.id,\n\t\t\t\t\thost,\n\t\t\t\t\tverifiedPlugins,\n\t\t\t\t\tmanifestOverrides,\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\tresolution = { status: \"host_facts_required\", profileId: profile.id };\n\t\t\t}\n\t\t\tconst plugins = profile.pluginIds.slice(0, MAX_PLUGINS_PER_PROFILE).map((pluginId) => {\n\t\t\t\t// D-075 S3: embedded manifests are gone; a plugin is known when the\n\t\t\t\t// host selected an installed active manifest for it (overrides).\n\t\t\t\tconst known = manifests.has(pluginId) || manifestOverrides?.[pluginId] !== undefined;\n\t\t\t\tconst ready =\n\t\t\t\t\tknown &&\n\t\t\t\t\tresolution.status === \"resolved\" &&\n\t\t\t\t\tresolution.resolution.plugins.some(\n\t\t\t\t\t\t(candidate) => candidate.pluginId === pluginId && candidate.status === \"installed-ready\",\n\t\t\t\t\t);\n\t\t\t\treturn Object.freeze({\n\t\t\t\t\tpluginId,\n\t\t\t\t\tstate: pluginState(pluginId, selection),\n\t\t\t\t\tavailability: ready ? (\"ready\" as const) : (\"unavailable\" as const),\n\t\t\t\t\tdiagnosticCodes: known ? diagnosticCodes(resolution, pluginId) : Object.freeze([]),\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn Object.freeze({ profileId: profile.id, version: profile.version, plugins: Object.freeze(plugins) });\n\t\t});\n\treturn Object.freeze({ version: 1, scope, storeStatus, profiles: Object.freeze(profiles) });\n}\n\nfunction resultFromRead(\n\tresult: PluginSelectionStoreReadResultV1,\n\thost: HostFactsV1,\n\tscope: \"global\" | \"project\",\n\tverifiedPlugins: readonly VerifiedToolPluginV1[] | undefined,\n\tmanifestOverrides?: BuiltinPluginManifestOverridesV1,\n): PluginSelectionControllerResultV1 {\n\tif (result.status === \"ok\" || result.status === \"missing\") {\n\t\treturn {\n\t\t\tstatus: \"ok\",\n\t\t\tsnapshot: makeSnapshot(result.status, result.snapshot, host, scope, verifiedPlugins, manifestOverrides),\n\t\t};\n\t}\n\treturn { status: \"error\", code: result.status === \"cancelled\" ? \"store-cancelled\" : \"store-invalid\" };\n}\n\nexport function createPluginSelectionControllerV1(options: {\n\treadonly store: PluginSelectionStoreV1;\n\treadonly host: HostFactsV1;\n\treadonly scope?: \"global\" | \"project\";\n\t/** Optional host-owned verified plugin set used to project runtime readiness. */\n\treadonly verifiedPlugins?: readonly VerifiedToolPluginV1[];\n\t/** Optional host-selected active manifests for installed verified versions. */\n\treadonly manifestOverrides?: BuiltinPluginManifestOverridesV1;\n}): PluginSelectionControllerV1 {\n\tconst scope = options.scope ?? \"global\";\n\tconst getSnapshot = async (\n\t\tinput: { readonly signal?: AbortSignal } = {},\n\t): Promise<PluginSelectionControllerResultV1> => {\n\t\ttry {\n\t\t\treturn resultFromRead(\n\t\t\t\tawait options.store.read(input),\n\t\t\t\toptions.host,\n\t\t\t\tscope,\n\t\t\t\toptions.verifiedPlugins,\n\t\t\t\toptions.manifestOverrides,\n\t\t\t);\n\t\t} catch {\n\t\t\treturn { status: \"error\", code: \"store-error\" };\n\t\t}\n\t};\n\n\tconst setState = async (input: {\n\t\treadonly profileId: string;\n\t\treadonly pluginId: string;\n\t\treadonly state: Exclude<PluginSelectionUiStateV1, \"available\">;\n\t\treadonly signal?: AbortSignal;\n\t}): Promise<PluginSelectionControllerResultV1> => {\n\t\tconst profile = profileById(input.profileId);\n\t\tif (profile === undefined) return { status: \"error\", code: \"unknown-profile\" };\n\t\tif (!profile.pluginIds.includes(input.pluginId)) return { status: \"error\", code: \"unknown-plugin\" };\n\t\tconst current = await getSnapshot({ signal: input.signal });\n\t\tif (current.status !== \"ok\") return current;\n\t\tconst currentSelectionResult = await options.store.read({ signal: input.signal });\n\t\tif (currentSelectionResult.status !== \"ok\" && currentSelectionResult.status !== \"missing\") {\n\t\t\treturn {\n\t\t\t\tstatus: \"error\",\n\t\t\t\tcode: currentSelectionResult.status === \"cancelled\" ? \"write-cancelled\" : \"store-invalid\",\n\t\t\t};\n\t\t}\n\t\tconst existing = selectionForProfile(currentSelectionResult.snapshot, profile.id);\n\t\tconst disabled = new Set(existing?.disabledPluginIds ?? []);\n\t\tconst selected = new Set(existing?.selectedPluginIds ?? profile.pluginIds);\n\t\tif (input.state === \"disabled\") {\n\t\t\tselected.delete(input.pluginId);\n\t\t\tdisabled.add(input.pluginId);\n\t\t} else {\n\t\t\tconst profileView = current.snapshot.profiles.find((candidate) => candidate.profileId === profile.id);\n\t\t\tconst pluginView = profileView?.plugins.find((candidate) => candidate.pluginId === input.pluginId);\n\t\t\tif (pluginView?.availability !== \"ready\") {\n\t\t\t\treturn { status: \"error\", code: \"unavailable-plugin\", snapshot: current.snapshot };\n\t\t\t}\n\t\t\tselected.add(input.pluginId);\n\t\t\tdisabled.delete(input.pluginId);\n\t\t}\n\t\tconst selection = createPluginSelectionV1({\n\t\t\tprofileId: profile.id,\n\t\t\tselectedPluginIds: [...selected],\n\t\t\tdisabledPluginIds: [...disabled],\n\t\t});\n\t\tlet mutation: PluginSelectionStoreMutationResultV1;\n\t\ttry {\n\t\t\tmutation = await options.store.set({ selection, signal: input.signal });\n\t\t} catch {\n\t\t\treturn { status: \"error\", code: \"write-error\", snapshot: current.snapshot };\n\t\t}\n\t\tif (mutation.status !== \"ok\") {\n\t\t\treturn {\n\t\t\t\tstatus: \"error\",\n\t\t\t\tcode: mutation.status === \"cancelled\" ? \"write-cancelled\" : \"write-invalid\",\n\t\t\t\tsnapshot: current.snapshot,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstatus: \"ok\",\n\t\t\tsnapshot: makeSnapshot(\n\t\t\t\t\"ok\",\n\t\t\t\tmutation.snapshot,\n\t\t\t\toptions.host,\n\t\t\t\tscope,\n\t\t\t\toptions.verifiedPlugins,\n\t\t\t\toptions.manifestOverrides,\n\t\t\t),\n\t\t};\n\t};\n\n\treturn Object.freeze({\n\t\tgetSnapshot,\n\t\tsetState,\n\t\ttoggle: async (input: {\n\t\t\treadonly profileId: string;\n\t\t\treadonly pluginId: string;\n\t\t\treadonly signal?: AbortSignal;\n\t\t}): Promise<PluginSelectionControllerResultV1> => {\n\t\t\tconst snapshot = await getSnapshot({ signal: input.signal });\n\t\t\tif (snapshot.status !== \"ok\") return snapshot;\n\t\t\tconst profile = snapshot.snapshot.profiles.find((candidate) => candidate.profileId === input.profileId);\n\t\t\tconst plugin = profile?.plugins.find((candidate) => candidate.pluginId === input.pluginId);\n\t\t\tif (profile === undefined) return { status: \"error\", code: \"unknown-profile\" };\n\t\t\tif (plugin === undefined) return { status: \"error\", code: \"unknown-plugin\" };\n\t\t\tif (plugin.state === \"disabled\" && plugin.availability !== \"ready\") {\n\t\t\t\treturn { status: \"error\", code: \"unavailable-plugin\", snapshot: snapshot.snapshot };\n\t\t\t}\n\t\t\treturn await setState({\n\t\t\t\t...input,\n\t\t\t\tstate: plugin.state === \"disabled\" ? \"selected\" : \"disabled\",\n\t\t\t});\n\t\t},\n\t});\n}\n"]}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { createPluginSelectionV1 } from "../plugins/ecosystem/selection.js";
|
|
2
|
+
import { listBuiltinPluginManifestsV1, listBuiltinPluginProfilesV1, resolveBuiltinPluginProfileV1, } from "../profile/plugin-profiles.js";
|
|
3
|
+
const MAX_PROFILES = 32;
|
|
4
|
+
const MAX_PLUGINS_PER_PROFILE = 128;
|
|
5
|
+
const MAX_DIAGNOSTIC_CODES = 8;
|
|
6
|
+
function diagnosticCodes(resolution, pluginId) {
|
|
7
|
+
if (resolution.status !== "resolved")
|
|
8
|
+
return Object.freeze([]);
|
|
9
|
+
const plugin = resolution.resolution.plugins.find((candidate) => candidate.pluginId === pluginId);
|
|
10
|
+
return Object.freeze((plugin?.diagnostics ?? []).slice(0, MAX_DIAGNOSTIC_CODES).map((item) => item.code));
|
|
11
|
+
}
|
|
12
|
+
function profileById(profileId) {
|
|
13
|
+
return listBuiltinPluginProfilesV1().find((profile) => profile.id === profileId);
|
|
14
|
+
}
|
|
15
|
+
function selectionForProfile(snapshot, profileId) {
|
|
16
|
+
return snapshot.selections.find((selection) => selection.profileId === profileId);
|
|
17
|
+
}
|
|
18
|
+
function pluginState(pluginId, selection) {
|
|
19
|
+
if (selection?.disabledPluginIds.includes(pluginId) === true)
|
|
20
|
+
return "disabled";
|
|
21
|
+
if (selection === undefined || selection.selectedPluginIds.includes(pluginId))
|
|
22
|
+
return "selected";
|
|
23
|
+
return "available";
|
|
24
|
+
}
|
|
25
|
+
function makeSnapshot(storeStatus, storeSnapshot, host, scope, verifiedPlugins, manifestOverrides) {
|
|
26
|
+
const manifests = new Set(listBuiltinPluginManifestsV1().map((manifest) => manifest.id));
|
|
27
|
+
const profiles = listBuiltinPluginProfilesV1()
|
|
28
|
+
.slice(0, MAX_PROFILES)
|
|
29
|
+
.map((profile) => {
|
|
30
|
+
const selection = selectionForProfile(storeSnapshot, profile.id);
|
|
31
|
+
let resolution;
|
|
32
|
+
try {
|
|
33
|
+
resolution = resolveBuiltinPluginProfileV1({
|
|
34
|
+
profileId: profile.id,
|
|
35
|
+
host,
|
|
36
|
+
verifiedPlugins,
|
|
37
|
+
manifestOverrides,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
resolution = { status: "host_facts_required", profileId: profile.id };
|
|
42
|
+
}
|
|
43
|
+
const plugins = profile.pluginIds.slice(0, MAX_PLUGINS_PER_PROFILE).map((pluginId) => {
|
|
44
|
+
// D-075 S3: embedded manifests are gone; a plugin is known when the
|
|
45
|
+
// host selected an installed active manifest for it (overrides).
|
|
46
|
+
const known = manifests.has(pluginId) || manifestOverrides?.[pluginId] !== undefined;
|
|
47
|
+
const ready = known &&
|
|
48
|
+
resolution.status === "resolved" &&
|
|
49
|
+
resolution.resolution.plugins.some((candidate) => candidate.pluginId === pluginId && candidate.status === "installed-ready");
|
|
50
|
+
return Object.freeze({
|
|
51
|
+
pluginId,
|
|
52
|
+
state: pluginState(pluginId, selection),
|
|
53
|
+
availability: ready ? "ready" : "unavailable",
|
|
54
|
+
diagnosticCodes: known ? diagnosticCodes(resolution, pluginId) : Object.freeze([]),
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
return Object.freeze({ profileId: profile.id, version: profile.version, plugins: Object.freeze(plugins) });
|
|
58
|
+
});
|
|
59
|
+
return Object.freeze({ version: 1, scope, storeStatus, profiles: Object.freeze(profiles) });
|
|
60
|
+
}
|
|
61
|
+
function resultFromRead(result, host, scope, verifiedPlugins, manifestOverrides) {
|
|
62
|
+
if (result.status === "ok" || result.status === "missing") {
|
|
63
|
+
return {
|
|
64
|
+
status: "ok",
|
|
65
|
+
snapshot: makeSnapshot(result.status, result.snapshot, host, scope, verifiedPlugins, manifestOverrides),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
return { status: "error", code: result.status === "cancelled" ? "store-cancelled" : "store-invalid" };
|
|
69
|
+
}
|
|
70
|
+
export function createPluginSelectionControllerV1(options) {
|
|
71
|
+
const scope = options.scope ?? "global";
|
|
72
|
+
const getSnapshot = async (input = {}) => {
|
|
73
|
+
try {
|
|
74
|
+
return resultFromRead(await options.store.read(input), options.host, scope, options.verifiedPlugins, options.manifestOverrides);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return { status: "error", code: "store-error" };
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
const setState = async (input) => {
|
|
81
|
+
const profile = profileById(input.profileId);
|
|
82
|
+
if (profile === undefined)
|
|
83
|
+
return { status: "error", code: "unknown-profile" };
|
|
84
|
+
if (!profile.pluginIds.includes(input.pluginId))
|
|
85
|
+
return { status: "error", code: "unknown-plugin" };
|
|
86
|
+
const current = await getSnapshot({ signal: input.signal });
|
|
87
|
+
if (current.status !== "ok")
|
|
88
|
+
return current;
|
|
89
|
+
const currentSelectionResult = await options.store.read({ signal: input.signal });
|
|
90
|
+
if (currentSelectionResult.status !== "ok" && currentSelectionResult.status !== "missing") {
|
|
91
|
+
return {
|
|
92
|
+
status: "error",
|
|
93
|
+
code: currentSelectionResult.status === "cancelled" ? "write-cancelled" : "store-invalid",
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
const existing = selectionForProfile(currentSelectionResult.snapshot, profile.id);
|
|
97
|
+
const disabled = new Set(existing?.disabledPluginIds ?? []);
|
|
98
|
+
const selected = new Set(existing?.selectedPluginIds ?? profile.pluginIds);
|
|
99
|
+
if (input.state === "disabled") {
|
|
100
|
+
selected.delete(input.pluginId);
|
|
101
|
+
disabled.add(input.pluginId);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
const profileView = current.snapshot.profiles.find((candidate) => candidate.profileId === profile.id);
|
|
105
|
+
const pluginView = profileView?.plugins.find((candidate) => candidate.pluginId === input.pluginId);
|
|
106
|
+
if (pluginView?.availability !== "ready") {
|
|
107
|
+
return { status: "error", code: "unavailable-plugin", snapshot: current.snapshot };
|
|
108
|
+
}
|
|
109
|
+
selected.add(input.pluginId);
|
|
110
|
+
disabled.delete(input.pluginId);
|
|
111
|
+
}
|
|
112
|
+
const selection = createPluginSelectionV1({
|
|
113
|
+
profileId: profile.id,
|
|
114
|
+
selectedPluginIds: [...selected],
|
|
115
|
+
disabledPluginIds: [...disabled],
|
|
116
|
+
});
|
|
117
|
+
let mutation;
|
|
118
|
+
try {
|
|
119
|
+
mutation = await options.store.set({ selection, signal: input.signal });
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return { status: "error", code: "write-error", snapshot: current.snapshot };
|
|
123
|
+
}
|
|
124
|
+
if (mutation.status !== "ok") {
|
|
125
|
+
return {
|
|
126
|
+
status: "error",
|
|
127
|
+
code: mutation.status === "cancelled" ? "write-cancelled" : "write-invalid",
|
|
128
|
+
snapshot: current.snapshot,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
status: "ok",
|
|
133
|
+
snapshot: makeSnapshot("ok", mutation.snapshot, options.host, scope, options.verifiedPlugins, options.manifestOverrides),
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
return Object.freeze({
|
|
137
|
+
getSnapshot,
|
|
138
|
+
setState,
|
|
139
|
+
toggle: async (input) => {
|
|
140
|
+
const snapshot = await getSnapshot({ signal: input.signal });
|
|
141
|
+
if (snapshot.status !== "ok")
|
|
142
|
+
return snapshot;
|
|
143
|
+
const profile = snapshot.snapshot.profiles.find((candidate) => candidate.profileId === input.profileId);
|
|
144
|
+
const plugin = profile?.plugins.find((candidate) => candidate.pluginId === input.pluginId);
|
|
145
|
+
if (profile === undefined)
|
|
146
|
+
return { status: "error", code: "unknown-profile" };
|
|
147
|
+
if (plugin === undefined)
|
|
148
|
+
return { status: "error", code: "unknown-plugin" };
|
|
149
|
+
if (plugin.state === "disabled" && plugin.availability !== "ready") {
|
|
150
|
+
return { status: "error", code: "unavailable-plugin", snapshot: snapshot.snapshot };
|
|
151
|
+
}
|
|
152
|
+
return await setState({
|
|
153
|
+
...input,
|
|
154
|
+
state: plugin.state === "disabled" ? "selected" : "disabled",
|
|
155
|
+
});
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=plugin-selection-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-selection-controller.js","sourceRoot":"","sources":["../../src/cli/plugin-selection-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAA0B,MAAM,mCAAmC,CAAC;AAQpG,OAAO,EAEN,4BAA4B,EAC5B,2BAA2B,EAC3B,6BAA6B,GAC7B,MAAM,+BAA+B,CAAC;AAGvC,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAyD/B,SAAS,eAAe,CACvB,UAA4D,EAC5D,QAAgB,EACoB;IACpC,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAClG,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,CAC1G;AAED,SAAS,WAAW,CAAC,SAAiB,EAAsC;IAC3E,OAAO,2BAA2B,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;AAAA,CACjF;AAED,SAAS,mBAAmB,CAC3B,QAAsG,EACtG,SAAiB,EACe;IAChC,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AAAA,CAClF;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,SAAwC,EAA4B;IAC1G,IAAI,SAAS,EAAE,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI;QAAE,OAAO,UAAU,CAAC;IAChF,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,UAAU,CAAC;IACjG,OAAO,WAAW,CAAC;AAAA,CACnB;AAED,SAAS,YAAY,CACpB,WAA6B,EAC7B,aAA2G,EAC3G,IAAiB,EACjB,KAA2B,EAC3B,eAA4D,EAC5D,iBAAoD,EACtB;IAC9B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,4BAA4B,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,MAAM,QAAQ,GAAG,2BAA2B,EAAE;SAC5C,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;SACtB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,UAA4D,CAAC;QACjE,IAAI,CAAC;YACJ,UAAU,GAAG,6BAA6B,CAAC;gBAC1C,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,IAAI;gBACJ,eAAe;gBACf,iBAAiB;aACjB,CAAC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACR,UAAU,GAAG,EAAE,MAAM,EAAE,qBAAqB,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;QACvE,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrF,oEAAoE;YACpE,iEAAiE;YACjE,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC;YACrF,MAAM,KAAK,GACV,KAAK;gBACL,UAAU,CAAC,MAAM,KAAK,UAAU;gBAChC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CACjC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,iBAAiB,CACxF,CAAC;YACH,OAAO,MAAM,CAAC,MAAM,CAAC;gBACpB,QAAQ;gBACR,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACvC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAE,OAAiB,CAAC,CAAC,CAAE,aAAuB;gBACnE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aAClF,CAAC,CAAC;QAAA,CACH,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAAA,CAC3G,CAAC,CAAC;IACJ,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAAA,CAC5F;AAED,SAAS,cAAc,CACtB,MAAwC,EACxC,IAAiB,EACjB,KAA2B,EAC3B,eAA4D,EAC5D,iBAAoD,EAChB;IACpC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC3D,OAAO;YACN,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,iBAAiB,CAAC;SACvG,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;AAAA,CACtG;AAED,MAAM,UAAU,iCAAiC,CAAC,OAQjD,EAA+B;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;IACxC,MAAM,WAAW,GAAG,KAAK,EACxB,KAAK,GAAsC,EAAE,EACA,EAAE,CAAC;QAChD,IAAI,CAAC;YACJ,OAAO,cAAc,CACpB,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAC/B,OAAO,CAAC,IAAI,EACZ,KAAK,EACL,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,iBAAiB,CACzB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACjD,CAAC;IAAA,CACD,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,KAKvB,EAA8C,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAC/E,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;QACpG,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC;QAC5C,MAAM,sBAAsB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAClF,IAAI,sBAAsB,CAAC,MAAM,KAAK,IAAI,IAAI,sBAAsB,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3F,OAAO;gBACN,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,sBAAsB,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe;aACzF,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3E,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACP,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YACtG,MAAM,UAAU,GAAG,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnG,IAAI,UAAU,EAAE,YAAY,KAAK,OAAO,EAAE,CAAC;gBAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;YACpF,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,SAAS,GAAG,uBAAuB,CAAC;YACzC,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,iBAAiB,EAAE,CAAC,GAAG,QAAQ,CAAC;YAChC,iBAAiB,EAAE,CAAC,GAAG,QAAQ,CAAC;SAChC,CAAC,CAAC;QACH,IAAI,QAA8C,CAAC;QACnD,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7E,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO;gBACN,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe;gBAC3E,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC1B,CAAC;QACH,CAAC;QACD,OAAO;YACN,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,YAAY,CACrB,IAAI,EACJ,QAAQ,CAAC,QAAQ,EACjB,OAAO,CAAC,IAAI,EACZ,KAAK,EACL,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,iBAAiB,CACzB;SACD,CAAC;IAAA,CACF,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC;QACpB,WAAW;QACX,QAAQ;QACR,MAAM,EAAE,KAAK,EAAE,KAId,EAA8C,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI;gBAAE,OAAO,QAAQ,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;YACxG,MAAM,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC3F,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;YAC/E,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;YAC7E,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,IAAI,MAAM,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;gBACpE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACrF,CAAC;YACD,OAAO,MAAM,QAAQ,CAAC;gBACrB,GAAG,KAAK;gBACR,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;aAC5D,CAAC,CAAC;QAAA,CACH;KACD,CAAC,CAAC;AAAA,CACH","sourcesContent":["import { createPluginSelectionV1, type PluginSelectionV1 } from \"../plugins/ecosystem/selection.ts\";\nimport type {\n\tPluginSelectionStoreMutationResultV1,\n\tPluginSelectionStoreReadResultV1,\n\tPluginSelectionStoreV1,\n} from \"../plugins/ecosystem/selection-store.ts\";\nimport type { HostFactsV1, PluginDiagnosticCodeV1 } from \"../plugins/ecosystem/types.ts\";\nimport type { BuiltinPluginManifestOverridesV1 } from \"../profile/plugin-profiles.ts\";\nimport {\n\ttype BuiltinPluginProfileV1,\n\tlistBuiltinPluginManifestsV1,\n\tlistBuiltinPluginProfilesV1,\n\tresolveBuiltinPluginProfileV1,\n} from \"../profile/plugin-profiles.ts\";\nimport type { VerifiedToolPluginV1 } from \"../profile/profile-assembly.ts\";\n\nconst MAX_PROFILES = 32;\nconst MAX_PLUGINS_PER_PROFILE = 128;\nconst MAX_DIAGNOSTIC_CODES = 8;\n\nexport type PluginSelectionUiStateV1 = \"selected\" | \"disabled\" | \"available\";\nexport type PluginSelectionControllerErrorCodeV1 =\n\t| \"store-invalid\"\n\t| \"store-cancelled\"\n\t| \"store-error\"\n\t| \"write-invalid\"\n\t| \"write-cancelled\"\n\t| \"write-error\"\n\t| \"unknown-profile\"\n\t| \"unknown-plugin\"\n\t| \"unavailable-plugin\";\n\nexport interface PluginSelectionUiPluginV1 {\n\treadonly pluginId: string;\n\treadonly state: PluginSelectionUiStateV1;\n\treadonly availability: \"ready\" | \"unavailable\";\n\treadonly diagnosticCodes: readonly PluginDiagnosticCodeV1[];\n}\n\nexport interface PluginSelectionUiProfileV1 {\n\treadonly profileId: string;\n\treadonly version: string;\n\treadonly plugins: readonly PluginSelectionUiPluginV1[];\n}\n\nexport interface PluginSelectionUiSnapshotV1 {\n\treadonly version: 1;\n\treadonly scope: \"global\" | \"project\";\n\treadonly storeStatus: \"ok\" | \"missing\";\n\treadonly profiles: readonly PluginSelectionUiProfileV1[];\n}\n\nexport type PluginSelectionControllerResultV1 =\n\t| { readonly status: \"ok\"; readonly snapshot: PluginSelectionUiSnapshotV1 }\n\t| {\n\t\t\treadonly status: \"error\";\n\t\t\treadonly code: PluginSelectionControllerErrorCodeV1;\n\t\t\treadonly snapshot?: PluginSelectionUiSnapshotV1;\n\t };\n\nexport interface PluginSelectionControllerV1 {\n\treadonly getSnapshot: (input?: { readonly signal?: AbortSignal }) => Promise<PluginSelectionControllerResultV1>;\n\treadonly setState: (input: {\n\t\treadonly profileId: string;\n\t\treadonly pluginId: string;\n\t\treadonly state: Exclude<PluginSelectionUiStateV1, \"available\">;\n\t\treadonly signal?: AbortSignal;\n\t}) => Promise<PluginSelectionControllerResultV1>;\n\treadonly toggle: (input: {\n\t\treadonly profileId: string;\n\t\treadonly pluginId: string;\n\t\treadonly signal?: AbortSignal;\n\t}) => Promise<PluginSelectionControllerResultV1>;\n}\n\nfunction diagnosticCodes(\n\tresolution: ReturnType<typeof resolveBuiltinPluginProfileV1>,\n\tpluginId: string,\n): readonly PluginDiagnosticCodeV1[] {\n\tif (resolution.status !== \"resolved\") return Object.freeze([]);\n\tconst plugin = resolution.resolution.plugins.find((candidate) => candidate.pluginId === pluginId);\n\treturn Object.freeze((plugin?.diagnostics ?? []).slice(0, MAX_DIAGNOSTIC_CODES).map((item) => item.code));\n}\n\nfunction profileById(profileId: string): BuiltinPluginProfileV1 | undefined {\n\treturn listBuiltinPluginProfilesV1().find((profile) => profile.id === profileId);\n}\n\nfunction selectionForProfile(\n\tsnapshot: Extract<PluginSelectionStoreReadResultV1, { readonly status: \"ok\" | \"missing\" }>[\"snapshot\"],\n\tprofileId: string,\n): PluginSelectionV1 | undefined {\n\treturn snapshot.selections.find((selection) => selection.profileId === profileId);\n}\n\nfunction pluginState(pluginId: string, selection: PluginSelectionV1 | undefined): PluginSelectionUiStateV1 {\n\tif (selection?.disabledPluginIds.includes(pluginId) === true) return \"disabled\";\n\tif (selection === undefined || selection.selectedPluginIds.includes(pluginId)) return \"selected\";\n\treturn \"available\";\n}\n\nfunction makeSnapshot(\n\tstoreStatus: \"ok\" | \"missing\",\n\tstoreSnapshot: Extract<PluginSelectionStoreReadResultV1, { readonly status: \"ok\" | \"missing\" }>[\"snapshot\"],\n\thost: HostFactsV1,\n\tscope: \"global\" | \"project\",\n\tverifiedPlugins: readonly VerifiedToolPluginV1[] | undefined,\n\tmanifestOverrides?: BuiltinPluginManifestOverridesV1,\n): PluginSelectionUiSnapshotV1 {\n\tconst manifests = new Set(listBuiltinPluginManifestsV1().map((manifest) => manifest.id));\n\tconst profiles = listBuiltinPluginProfilesV1()\n\t\t.slice(0, MAX_PROFILES)\n\t\t.map((profile) => {\n\t\t\tconst selection = selectionForProfile(storeSnapshot, profile.id);\n\t\t\tlet resolution: ReturnType<typeof resolveBuiltinPluginProfileV1>;\n\t\t\ttry {\n\t\t\t\tresolution = resolveBuiltinPluginProfileV1({\n\t\t\t\t\tprofileId: profile.id,\n\t\t\t\t\thost,\n\t\t\t\t\tverifiedPlugins,\n\t\t\t\t\tmanifestOverrides,\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\tresolution = { status: \"host_facts_required\", profileId: profile.id };\n\t\t\t}\n\t\t\tconst plugins = profile.pluginIds.slice(0, MAX_PLUGINS_PER_PROFILE).map((pluginId) => {\n\t\t\t\t// D-075 S3: embedded manifests are gone; a plugin is known when the\n\t\t\t\t// host selected an installed active manifest for it (overrides).\n\t\t\t\tconst known = manifests.has(pluginId) || manifestOverrides?.[pluginId] !== undefined;\n\t\t\t\tconst ready =\n\t\t\t\t\tknown &&\n\t\t\t\t\tresolution.status === \"resolved\" &&\n\t\t\t\t\tresolution.resolution.plugins.some(\n\t\t\t\t\t\t(candidate) => candidate.pluginId === pluginId && candidate.status === \"installed-ready\",\n\t\t\t\t\t);\n\t\t\t\treturn Object.freeze({\n\t\t\t\t\tpluginId,\n\t\t\t\t\tstate: pluginState(pluginId, selection),\n\t\t\t\t\tavailability: ready ? (\"ready\" as const) : (\"unavailable\" as const),\n\t\t\t\t\tdiagnosticCodes: known ? diagnosticCodes(resolution, pluginId) : Object.freeze([]),\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn Object.freeze({ profileId: profile.id, version: profile.version, plugins: Object.freeze(plugins) });\n\t\t});\n\treturn Object.freeze({ version: 1, scope, storeStatus, profiles: Object.freeze(profiles) });\n}\n\nfunction resultFromRead(\n\tresult: PluginSelectionStoreReadResultV1,\n\thost: HostFactsV1,\n\tscope: \"global\" | \"project\",\n\tverifiedPlugins: readonly VerifiedToolPluginV1[] | undefined,\n\tmanifestOverrides?: BuiltinPluginManifestOverridesV1,\n): PluginSelectionControllerResultV1 {\n\tif (result.status === \"ok\" || result.status === \"missing\") {\n\t\treturn {\n\t\t\tstatus: \"ok\",\n\t\t\tsnapshot: makeSnapshot(result.status, result.snapshot, host, scope, verifiedPlugins, manifestOverrides),\n\t\t};\n\t}\n\treturn { status: \"error\", code: result.status === \"cancelled\" ? \"store-cancelled\" : \"store-invalid\" };\n}\n\nexport function createPluginSelectionControllerV1(options: {\n\treadonly store: PluginSelectionStoreV1;\n\treadonly host: HostFactsV1;\n\treadonly scope?: \"global\" | \"project\";\n\t/** Optional host-owned verified plugin set used to project runtime readiness. */\n\treadonly verifiedPlugins?: readonly VerifiedToolPluginV1[];\n\t/** Optional host-selected active manifests for installed verified versions. */\n\treadonly manifestOverrides?: BuiltinPluginManifestOverridesV1;\n}): PluginSelectionControllerV1 {\n\tconst scope = options.scope ?? \"global\";\n\tconst getSnapshot = async (\n\t\tinput: { readonly signal?: AbortSignal } = {},\n\t): Promise<PluginSelectionControllerResultV1> => {\n\t\ttry {\n\t\t\treturn resultFromRead(\n\t\t\t\tawait options.store.read(input),\n\t\t\t\toptions.host,\n\t\t\t\tscope,\n\t\t\t\toptions.verifiedPlugins,\n\t\t\t\toptions.manifestOverrides,\n\t\t\t);\n\t\t} catch {\n\t\t\treturn { status: \"error\", code: \"store-error\" };\n\t\t}\n\t};\n\n\tconst setState = async (input: {\n\t\treadonly profileId: string;\n\t\treadonly pluginId: string;\n\t\treadonly state: Exclude<PluginSelectionUiStateV1, \"available\">;\n\t\treadonly signal?: AbortSignal;\n\t}): Promise<PluginSelectionControllerResultV1> => {\n\t\tconst profile = profileById(input.profileId);\n\t\tif (profile === undefined) return { status: \"error\", code: \"unknown-profile\" };\n\t\tif (!profile.pluginIds.includes(input.pluginId)) return { status: \"error\", code: \"unknown-plugin\" };\n\t\tconst current = await getSnapshot({ signal: input.signal });\n\t\tif (current.status !== \"ok\") return current;\n\t\tconst currentSelectionResult = await options.store.read({ signal: input.signal });\n\t\tif (currentSelectionResult.status !== \"ok\" && currentSelectionResult.status !== \"missing\") {\n\t\t\treturn {\n\t\t\t\tstatus: \"error\",\n\t\t\t\tcode: currentSelectionResult.status === \"cancelled\" ? \"write-cancelled\" : \"store-invalid\",\n\t\t\t};\n\t\t}\n\t\tconst existing = selectionForProfile(currentSelectionResult.snapshot, profile.id);\n\t\tconst disabled = new Set(existing?.disabledPluginIds ?? []);\n\t\tconst selected = new Set(existing?.selectedPluginIds ?? profile.pluginIds);\n\t\tif (input.state === \"disabled\") {\n\t\t\tselected.delete(input.pluginId);\n\t\t\tdisabled.add(input.pluginId);\n\t\t} else {\n\t\t\tconst profileView = current.snapshot.profiles.find((candidate) => candidate.profileId === profile.id);\n\t\t\tconst pluginView = profileView?.plugins.find((candidate) => candidate.pluginId === input.pluginId);\n\t\t\tif (pluginView?.availability !== \"ready\") {\n\t\t\t\treturn { status: \"error\", code: \"unavailable-plugin\", snapshot: current.snapshot };\n\t\t\t}\n\t\t\tselected.add(input.pluginId);\n\t\t\tdisabled.delete(input.pluginId);\n\t\t}\n\t\tconst selection = createPluginSelectionV1({\n\t\t\tprofileId: profile.id,\n\t\t\tselectedPluginIds: [...selected],\n\t\t\tdisabledPluginIds: [...disabled],\n\t\t});\n\t\tlet mutation: PluginSelectionStoreMutationResultV1;\n\t\ttry {\n\t\t\tmutation = await options.store.set({ selection, signal: input.signal });\n\t\t} catch {\n\t\t\treturn { status: \"error\", code: \"write-error\", snapshot: current.snapshot };\n\t\t}\n\t\tif (mutation.status !== \"ok\") {\n\t\t\treturn {\n\t\t\t\tstatus: \"error\",\n\t\t\t\tcode: mutation.status === \"cancelled\" ? \"write-cancelled\" : \"write-invalid\",\n\t\t\t\tsnapshot: current.snapshot,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstatus: \"ok\",\n\t\t\tsnapshot: makeSnapshot(\n\t\t\t\t\"ok\",\n\t\t\t\tmutation.snapshot,\n\t\t\t\toptions.host,\n\t\t\t\tscope,\n\t\t\t\toptions.verifiedPlugins,\n\t\t\t\toptions.manifestOverrides,\n\t\t\t),\n\t\t};\n\t};\n\n\treturn Object.freeze({\n\t\tgetSnapshot,\n\t\tsetState,\n\t\ttoggle: async (input: {\n\t\t\treadonly profileId: string;\n\t\t\treadonly pluginId: string;\n\t\t\treadonly signal?: AbortSignal;\n\t\t}): Promise<PluginSelectionControllerResultV1> => {\n\t\t\tconst snapshot = await getSnapshot({ signal: input.signal });\n\t\t\tif (snapshot.status !== \"ok\") return snapshot;\n\t\t\tconst profile = snapshot.snapshot.profiles.find((candidate) => candidate.profileId === input.profileId);\n\t\t\tconst plugin = profile?.plugins.find((candidate) => candidate.pluginId === input.pluginId);\n\t\t\tif (profile === undefined) return { status: \"error\", code: \"unknown-profile\" };\n\t\t\tif (plugin === undefined) return { status: \"error\", code: \"unknown-plugin\" };\n\t\t\tif (plugin.state === \"disabled\" && plugin.availability !== \"ready\") {\n\t\t\t\treturn { status: \"error\", code: \"unavailable-plugin\", snapshot: snapshot.snapshot };\n\t\t\t}\n\t\t\treturn await setState({\n\t\t\t\t...input,\n\t\t\t\tstate: plugin.state === \"disabled\" ? \"selected\" : \"disabled\",\n\t\t\t});\n\t\t},\n\t});\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type PiServerListener } from "@agent-forge/server";
|
|
2
|
+
import type { HostLogger } from "../core/logger.ts";
|
|
3
|
+
import type { CodingAgentServerAssemblyOptions } from "../remote/server-assembly.ts";
|
|
4
|
+
import { type CodingAgentRemoteServerHandle, type StartCodingAgentRemoteServerOptions } from "../remote/server-entry.ts";
|
|
5
|
+
/** Overridable collaborators for `runServeMode`, injected in tests. */
|
|
6
|
+
export interface RunServeModeOptions {
|
|
7
|
+
/** Defaults to a loopback ws gateway listener on `port` with the artifact HTTP read routes. */
|
|
8
|
+
readonly createListener?: () => PiServerListener;
|
|
9
|
+
/** Defaults to `startCodingAgentRemoteServer`. */
|
|
10
|
+
readonly startServer?: (options: StartCodingAgentRemoteServerOptions) => Promise<CodingAgentRemoteServerHandle>;
|
|
11
|
+
/**
|
|
12
|
+
* Opt-in workspace boundary forwarded to the session source: remote creates
|
|
13
|
+
* are then restricted to cwds inside one of these roots. Omitted (or empty)
|
|
14
|
+
* keeps the unrestricted local-trust behavior.
|
|
15
|
+
*/
|
|
16
|
+
readonly workspaceRoots?: readonly string[];
|
|
17
|
+
/**
|
|
18
|
+
* Explicit session directory forwarded to the session source. Serve mode
|
|
19
|
+
* never reads the settings/env sessionDir chain, so only an explicit CLI
|
|
20
|
+
* `--session-dir` value arrives here; without it `getSessionsDir()` is used.
|
|
21
|
+
*/
|
|
22
|
+
readonly sessionDir?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Explicit durable service override. Omitted (undefined) constructs a default
|
|
25
|
+
* file-backed durable service under the agent dir, so serve mode persists
|
|
26
|
+
* operations and artifacts across restarts. Hosts that need a custom backend
|
|
27
|
+
* or a shared service pass it here.
|
|
28
|
+
*/
|
|
29
|
+
readonly durable?: CodingAgentServerAssemblyOptions["durable"];
|
|
30
|
+
/**
|
|
31
|
+
* Host-process logger forwarded into every session the server builds
|
|
32
|
+
* (D-067 phase 1 seam). The CLI passes the process file logger; omitted
|
|
33
|
+
* keeps the SDK's explicit no-op contract.
|
|
34
|
+
*/
|
|
35
|
+
readonly hostLogger?: HostLogger;
|
|
36
|
+
}
|
|
37
|
+
/** Starts the remote server on the given port and keeps the process alive until SIGINT/SIGTERM. */
|
|
38
|
+
export declare function runServeMode(port: number, options?: RunServeModeOptions): Promise<void>;
|
|
39
|
+
//# sourceMappingURL=serve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EACN,KAAK,6BAA6B,EAElC,KAAK,mCAAmC,EAExC,MAAM,2BAA2B,CAAC;AAUnC,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IACnC,+FAA+F;IAC/F,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,gBAAgB,CAAC;IACjD,kDAAkD;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,mCAAmC,KAAK,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAChH;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAC/D;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CACjC;AAOD,mGAAmG;AACnG,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2F7F","sourcesContent":["/**\n * CLI remote server entry (E3 tail): serves the coding-agent session runtime\n * behind the programmatic `startCodingAgentRemoteServer` entry.\n *\n * The default listener is the ws gateway: it negotiates WebSocket protocol\n * connections and serves the gateway HTTP surface (healthz plus the\n * token-protected artifact stat/read routes from B-H2b). Read tokens are\n * issued through the protocol path (`artifact_token_issue`) against the same\n * attach/lease gate as `artifact_read`; the direct HTTP face has no\n * `authorize` hook — the token is a single-use, short-lived projection of that\n * access.\n *\n * Experimental, single-user local trust only: the default listener binds\n * loopback, there is no authentication, and the session source accepts\n * whatever cwd clients submit, so any local process can drive the agent in an\n * arbitrary directory. An opt-in workspace boundary is available via\n * `--serve-workspace-root` (forwarded here as `workspaceRoots`).\n */\nimport { join } from \"node:path\";\nimport { createWsServerListener, type PiServerListener } from \"@agent-forge/server\";\nimport { getAgentDir, getSessionsDir } from \"../config.ts\";\nimport type { HostLogger } from \"../core/logger.ts\";\nimport { createDurableService, createFileDurableStoreBackend } from \"../durable/durable-service.ts\";\nimport type { CodingAgentServerAssemblyOptions } from \"../remote/server-assembly.ts\";\nimport {\n\ttype CodingAgentRemoteServerHandle,\n\treadOrCreateWriterId,\n\ttype StartCodingAgentRemoteServerOptions,\n\tstartCodingAgentRemoteServer,\n} from \"../remote/server-entry.ts\";\n\n/**\n * Server-level ops log relative to the agent dir. Parallels the default\n * session journal (`<agentDir>/remote-server-journal.jsonl`): one shared\n * server domain, never the process cwd. The backend's lock acquisition\n * creates parent directories, so no mkdir is needed before the first persist.\n */\nconst DEFAULT_DURABLE_LOG_RELATIVE_PATH = join(\"durable\", \"remote-server-ops.jsonl\");\n\n/** Overridable collaborators for `runServeMode`, injected in tests. */\nexport interface RunServeModeOptions {\n\t/** Defaults to a loopback ws gateway listener on `port` with the artifact HTTP read routes. */\n\treadonly createListener?: () => PiServerListener;\n\t/** Defaults to `startCodingAgentRemoteServer`. */\n\treadonly startServer?: (options: StartCodingAgentRemoteServerOptions) => Promise<CodingAgentRemoteServerHandle>;\n\t/**\n\t * Opt-in workspace boundary forwarded to the session source: remote creates\n\t * are then restricted to cwds inside one of these roots. Omitted (or empty)\n\t * keeps the unrestricted local-trust behavior.\n\t */\n\treadonly workspaceRoots?: readonly string[];\n\t/**\n\t * Explicit session directory forwarded to the session source. Serve mode\n\t * never reads the settings/env sessionDir chain, so only an explicit CLI\n\t * `--session-dir` value arrives here; without it `getSessionsDir()` is used.\n\t */\n\treadonly sessionDir?: string;\n\t/**\n\t * Explicit durable service override. Omitted (undefined) constructs a default\n\t * file-backed durable service under the agent dir, so serve mode persists\n\t * operations and artifacts across restarts. Hosts that need a custom backend\n\t * or a shared service pass it here.\n\t */\n\treadonly durable?: CodingAgentServerAssemblyOptions[\"durable\"];\n\t/**\n\t * Host-process logger forwarded into every session the server builds\n\t * (D-067 phase 1 seam). The CLI passes the process file logger; omitted\n\t * keeps the SDK's explicit no-op contract.\n\t */\n\treadonly hostLogger?: HostLogger;\n}\n\n/** Detects the transport-level \"address already in use\" failure. */\nfunction isAddrInUse(error: unknown): boolean {\n\treturn typeof error === \"object\" && error !== null && (error as { readonly code?: unknown }).code === \"EADDRINUSE\";\n}\n\n/** Starts the remote server on the given port and keeps the process alive until SIGINT/SIGTERM. */\nexport async function runServeMode(port: number, options?: RunServeModeOptions): Promise<void> {\n\t// Assigned once `startServer` resolves; until then the HTTP handler falls\n\t// through to the listener's default paths (no requests arrive before the\n\t// address is announced).\n\tlet handle: CodingAgentRemoteServerHandle | undefined;\n\tconst createListener =\n\t\toptions?.createListener ??\n\t\t((): PiServerListener =>\n\t\t\tcreateWsServerListener({\n\t\t\t\tport,\n\t\t\t\t// Token-protected artifact stat/read over the gateway HTTP surface\n\t\t\t\t// (B-H2b): routes live behind the server boundary so the token store\n\t\t\t\t// and the artifact data plane stay single-source.\n\t\t\t\thttpRequestHandler: (request, response) =>\n\t\t\t\t\thandle?.server.handleArtifactHttpRequest(request, response) ?? false,\n\t\t\t\t// Listener-lifetime socket errors (post-startup) otherwise disappear:\n\t\t\t\t// route them to the same one-line stderr sink as server errors.\n\t\t\t\tonError: (error: Error): void => {\n\t\t\t\t\tconsole.error(`remote-server error: ${error.message}`);\n\t\t\t\t},\n\t\t\t}));\n\tconst startServer = options?.startServer ?? startCodingAgentRemoteServer;\n\tconst workspaceRoots = options?.workspaceRoots;\n\tconst sessionDir = options?.sessionDir;\n\t// Default durable service persists operations and artifacts across\n\t// restarts; without it those surfaces answer durable_unavailable.\n\tconst durable =\n\t\toptions?.durable ??\n\t\tcreateDurableService({\n\t\t\tbackend: createFileDurableStoreBackend({\n\t\t\t\tpath: join(getAgentDir(), DEFAULT_DURABLE_LOG_RELATIVE_PATH),\n\t\t\t}),\n\t\t});\n\t// Host-level writer identity: one writer serves the whole process — the\n\t// server assembly claims the lease with it (claim/recover unchanged), and\n\t// sessions persist their agent task terminal records with it\n\t// (agent-result-replay-v1). A host-supplied durable rides the same writer.\n\t// The id is stable across restarts (see readOrCreateWriterId).\n\tconst writerId = readOrCreateWriterId(getAgentDir());\n\ttry {\n\t\thandle = await startServer({\n\t\t\tsessionSourceOptions: {\n\t\t\t\tsessionsDir: sessionDir ?? getSessionsDir(),\n\t\t\t\tcwd: process.cwd(),\n\t\t\t\tagentDir: getAgentDir(),\n\t\t\t\t...(workspaceRoots === undefined || workspaceRoots.length === 0 ? {} : { workspaceRoots }),\n\t\t\t\tagentTaskResults: { store: durable, writerId },\n\t\t\t\t// 承载退役切片 2:serve 会话经自动池化获得委派载体(与交互模式同纪律)。\n\t\t\t\tsubagentPoolFromSelfInvocation: true,\n\t\t\t\t// D-067 第一期 S3:serve 会话进程日志接缝——补上此前 no-op 的缺口。\n\t\t\t\t...(options?.hostLogger === undefined ? {} : { hostLogger: options.hostLogger }),\n\t\t\t},\n\t\t\tlisteners: [createListener()],\n\t\t\t// Without this sink the server swallows every internal error; keep\n\t\t\t// the output one-line so console noise stays greppable.\n\t\t\tonError: (error: Error): void => {\n\t\t\t\tconsole.error(`remote-server error: ${error.message}`);\n\t\t\t},\n\t\t\tdurable,\n\t\t\twriterId,\n\t\t});\n\t} catch (error) {\n\t\t// Startup failures otherwise bubble to top level as a raw stack trace;\n\t\t// the dominant day-to-day case (port already taken) deserves one line.\n\t\tif (isAddrInUse(error)) {\n\t\t\tconsole.error(`Port ${port} is already in use`);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tthrow error;\n\t}\n\n\tlet closing = false;\n\tconst shutdown = (): void => {\n\t\tif (closing) return;\n\t\tclosing = true;\n\t\tvoid handle\n\t\t\t.close()\n\t\t\t.then(() => {\n\t\t\t\t// Explicit exit so listener or signal handles cannot keep the\n\t\t\t\t// process alive after a successful shutdown.\n\t\t\t\tprocess.exit(0);\n\t\t\t})\n\t\t\t.catch((error: unknown) => {\n\t\t\t\tconsole.error(`Remote server shutdown failed: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t\tprocess.exit(1);\n\t\t\t});\n\t};\n\tprocess.on(\"SIGINT\", shutdown);\n\tprocess.on(\"SIGTERM\", shutdown);\n\n\tconsole.log(`Remote server listening on ${handle.addresses.join(\", \")}`);\n}\n"]}
|