@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,324 @@
|
|
|
1
|
+
import { buildPluginCatalogV1, comparePluginVersionsV1 } from "./catalog.js";
|
|
2
|
+
import { createPluginDistributionV1 } from "./distribution.js";
|
|
3
|
+
import { pluginManifestDigestV1 } from "./updates.js";
|
|
4
|
+
/** Maximum manifest JSON bytes accepted by the registry boundary. */
|
|
5
|
+
export const MAX_PLUGIN_REGISTRY_MANIFEST_BYTES_V1 = 64 * 1024;
|
|
6
|
+
/** Maximum number of manifests returned by one source query. */
|
|
7
|
+
export const MAX_PLUGIN_REGISTRY_MANIFESTS_V1 = 256;
|
|
8
|
+
/** Maximum aggregate manifest metadata returned by one source query. */
|
|
9
|
+
export const MAX_PLUGIN_REGISTRY_PAYLOAD_BYTES_V1 = 4 * 1024 * 1024;
|
|
10
|
+
/** Maximum source URI length; sources are identifiers, never package paths. */
|
|
11
|
+
export const MAX_PLUGIN_REGISTRY_SOURCE_CHARS_V1 = 2048;
|
|
12
|
+
/** Maximum digest/signature text length accepted from a source. */
|
|
13
|
+
export const MAX_PLUGIN_REGISTRY_PROOF_CHARS_V1 = 512;
|
|
14
|
+
export class PluginRegistryErrorV1 extends Error {
|
|
15
|
+
code;
|
|
16
|
+
cause;
|
|
17
|
+
constructor(code, message, cause) {
|
|
18
|
+
super(message, cause === undefined ? undefined : { cause });
|
|
19
|
+
this.name = "PluginRegistryErrorV1";
|
|
20
|
+
this.code = code;
|
|
21
|
+
this.cause = cause;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function isAbortLike(error, signal) {
|
|
25
|
+
return (signal?.aborted === true ||
|
|
26
|
+
(error instanceof Error && (error.name === "AbortError" || error.name === "AbortSignalError")));
|
|
27
|
+
}
|
|
28
|
+
function boundedString(value, label, max, code = "invalid_source") {
|
|
29
|
+
if (typeof value !== "string" || value.trim() === "" || value.length > max || /[\u0000-\u001f]/u.test(value)) {
|
|
30
|
+
throw new PluginRegistryErrorV1(code, `${label} must be a non-empty bounded string`);
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
function assertAllowedKeys(value, allowed, label) {
|
|
35
|
+
const expected = new Set(allowed);
|
|
36
|
+
if (Object.keys(value).some((key) => !expected.has(key)))
|
|
37
|
+
throw new PluginRegistryErrorV1("invalid_manifest", `${label} contains an unsupported field`);
|
|
38
|
+
}
|
|
39
|
+
function validateSource(source) {
|
|
40
|
+
const value = boundedString(source, "source", MAX_PLUGIN_REGISTRY_SOURCE_CHARS_V1);
|
|
41
|
+
if (/^(?:file:|[a-zA-Z]:[\\/]|[\\/]{1,2}|\\\\)/iu.test(value) || /\s/u.test(value)) {
|
|
42
|
+
throw new PluginRegistryErrorV1("invalid_source", "Plugin registry source must be an opaque URI, not a local path");
|
|
43
|
+
}
|
|
44
|
+
if (/^https?:\/\//iu.test(value)) {
|
|
45
|
+
try {
|
|
46
|
+
const parsed = new URL(value);
|
|
47
|
+
const pathname = parsed.pathname.length > 512 ? `${parsed.pathname.slice(0, 511)}…` : parsed.pathname;
|
|
48
|
+
return `${parsed.origin}${pathname || "/"}`;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
throw new PluginRegistryErrorV1("invalid_source", "Plugin registry source URL is invalid", error);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
function validateManifest(manifest) {
|
|
57
|
+
if (typeof manifest !== "object" || manifest === null || Array.isArray(manifest)) {
|
|
58
|
+
throw new PluginRegistryErrorV1("invalid_manifest", "Registry manifest must be an object");
|
|
59
|
+
}
|
|
60
|
+
const value = manifest;
|
|
61
|
+
assertAllowedKeys(value, [
|
|
62
|
+
"id",
|
|
63
|
+
"pluginVersion",
|
|
64
|
+
"apiVersion",
|
|
65
|
+
"minHostVersion",
|
|
66
|
+
"maxHostVersion",
|
|
67
|
+
"capabilityRefs",
|
|
68
|
+
"requires",
|
|
69
|
+
"platform",
|
|
70
|
+
"testOnly",
|
|
71
|
+
], "Registry manifest");
|
|
72
|
+
if (typeof value.id !== "string" || value.id.trim() === "" || value.id.length > 256)
|
|
73
|
+
throw new PluginRegistryErrorV1("invalid_manifest", "Registry manifest id is invalid");
|
|
74
|
+
if (typeof value.pluginVersion !== "string" || value.pluginVersion.trim() === "" || value.pluginVersion.length > 256)
|
|
75
|
+
throw new PluginRegistryErrorV1("invalid_manifest", "Registry manifest pluginVersion is invalid");
|
|
76
|
+
if (typeof value.apiVersion !== "string" || value.apiVersion.trim() === "" || value.apiVersion.length > 256)
|
|
77
|
+
throw new PluginRegistryErrorV1("invalid_manifest", "Registry manifest apiVersion is invalid");
|
|
78
|
+
if (value.minHostVersion === undefined && value.maxHostVersion === undefined)
|
|
79
|
+
throw new PluginRegistryErrorV1("invalid_manifest", "Published plugins must declare host version compatibility range: set minHostVersion and/or maxHostVersion");
|
|
80
|
+
let bytes;
|
|
81
|
+
try {
|
|
82
|
+
bytes = new TextEncoder().encode(JSON.stringify(manifest)).byteLength;
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
throw new PluginRegistryErrorV1("invalid_manifest", "Registry manifest cannot be serialized", error);
|
|
86
|
+
}
|
|
87
|
+
if (bytes > MAX_PLUGIN_REGISTRY_MANIFEST_BYTES_V1)
|
|
88
|
+
throw new PluginRegistryErrorV1("payload_too_large", "Registry manifest exceeds the size limit");
|
|
89
|
+
return Object.freeze({ ...value });
|
|
90
|
+
}
|
|
91
|
+
function validateEnvelope(value) {
|
|
92
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
93
|
+
throw new PluginRegistryErrorV1("invalid_manifest", "Registry response entry must be an object");
|
|
94
|
+
const entry = value;
|
|
95
|
+
assertAllowedKeys(entry, ["manifest", "source", "manifestDigest", "signature", "distribution"], "Registry response entry");
|
|
96
|
+
const manifest = validateManifest(entry.manifest);
|
|
97
|
+
const source = validateSource(entry.source);
|
|
98
|
+
const manifestDigest = boundedString(entry.manifestDigest, "manifestDigest", MAX_PLUGIN_REGISTRY_PROOF_CHARS_V1);
|
|
99
|
+
if (entry.signature !== undefined)
|
|
100
|
+
boundedString(entry.signature, "signature", MAX_PLUGIN_REGISTRY_PROOF_CHARS_V1);
|
|
101
|
+
let distribution;
|
|
102
|
+
if (entry.distribution !== undefined) {
|
|
103
|
+
try {
|
|
104
|
+
distribution = createPluginDistributionV1().validateDescriptor(entry.distribution);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
throw new PluginRegistryErrorV1("invalid_manifest", "Registry distribution descriptor is invalid", error);
|
|
108
|
+
}
|
|
109
|
+
if (distribution.pluginId !== manifest.id ||
|
|
110
|
+
distribution.pluginVersion !== manifest.pluginVersion ||
|
|
111
|
+
distribution.manifestDigest !== manifestDigest)
|
|
112
|
+
throw new PluginRegistryErrorV1("invalid_manifest", "Registry distribution descriptor does not match the manifest identity");
|
|
113
|
+
}
|
|
114
|
+
return Object.freeze({
|
|
115
|
+
manifest,
|
|
116
|
+
source,
|
|
117
|
+
manifestDigest,
|
|
118
|
+
...(entry.signature === undefined ? {} : { signature: entry.signature }),
|
|
119
|
+
...(distribution === undefined ? {} : { distribution }),
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function validateMax(value) {
|
|
123
|
+
const max = value ?? MAX_PLUGIN_REGISTRY_MANIFESTS_V1;
|
|
124
|
+
if (!Number.isSafeInteger(max) || max < 1 || max > MAX_PLUGIN_REGISTRY_MANIFESTS_V1)
|
|
125
|
+
throw new PluginRegistryErrorV1("invalid_limit", `maxManifests must be an integer between 1 and ${MAX_PLUGIN_REGISTRY_MANIFESTS_V1}`);
|
|
126
|
+
return max;
|
|
127
|
+
}
|
|
128
|
+
async function validateSourceProof(entry, verifier, sourceVerifier) {
|
|
129
|
+
const actualDigest = pluginManifestDigestV1(entry.manifest);
|
|
130
|
+
if (entry.manifestDigest !== actualDigest)
|
|
131
|
+
throw new PluginRegistryErrorV1("invalid_digest", `Manifest digest mismatch for ${entry.manifest.id}@${entry.manifest.pluginVersion}`);
|
|
132
|
+
try {
|
|
133
|
+
const result = await verifier.verify({
|
|
134
|
+
manifest: entry.manifest,
|
|
135
|
+
source: entry.source,
|
|
136
|
+
manifestDigest: actualDigest,
|
|
137
|
+
expectedDigest: entry.manifestDigest,
|
|
138
|
+
signature: entry.signature,
|
|
139
|
+
});
|
|
140
|
+
if (result.status !== "accepted")
|
|
141
|
+
throw new PluginRegistryErrorV1("source_rejected", result.reason ?? "Registry source proof was rejected");
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
if (error instanceof PluginRegistryErrorV1)
|
|
145
|
+
throw error;
|
|
146
|
+
throw new PluginRegistryErrorV1("source_rejected", "Registry source proof was rejected", error);
|
|
147
|
+
}
|
|
148
|
+
let result;
|
|
149
|
+
try {
|
|
150
|
+
result = sourceVerifier({
|
|
151
|
+
pluginId: entry.manifest.id,
|
|
152
|
+
pluginVersion: entry.manifest.pluginVersion,
|
|
153
|
+
source: entry.source,
|
|
154
|
+
manifestDigest: actualDigest,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
throw new PluginRegistryErrorV1("source_rejected", "Plugin source verifier failed", error);
|
|
159
|
+
}
|
|
160
|
+
if (result.status !== "accepted")
|
|
161
|
+
throw new PluginRegistryErrorV1("source_rejected", result.reason ?? "Plugin source was rejected");
|
|
162
|
+
}
|
|
163
|
+
function sourceIdentity(entries) {
|
|
164
|
+
const sources = [...new Set(entries.map((entry) => entry.source))].sort((left, right) => left.localeCompare(right));
|
|
165
|
+
return sources.join(",");
|
|
166
|
+
}
|
|
167
|
+
/** Create a deterministic, host-injected registry client. */
|
|
168
|
+
export function createPluginRegistryV1(options) {
|
|
169
|
+
const maxManifests = validateMax(options.maxManifests);
|
|
170
|
+
if (options.source === undefined || typeof options.source.list !== "function")
|
|
171
|
+
throw new PluginRegistryErrorV1("invalid_source", "Registry source must provide list()");
|
|
172
|
+
if (options.source.source !== undefined)
|
|
173
|
+
validateSource(options.source.source);
|
|
174
|
+
if (options.verify === undefined || typeof options.verify.verify !== "function")
|
|
175
|
+
throw new PluginRegistryErrorV1("source_rejected", "Registry source/digest verifier is required");
|
|
176
|
+
if (options.sourceVerifier === undefined || typeof options.sourceVerifier !== "function")
|
|
177
|
+
throw new PluginRegistryErrorV1("source_rejected", "Registry source verifier is required");
|
|
178
|
+
const load = async (input = {}) => {
|
|
179
|
+
if (input.signal?.aborted)
|
|
180
|
+
throw new PluginRegistryErrorV1("cancelled", "Plugin registry operation was cancelled");
|
|
181
|
+
let raw;
|
|
182
|
+
try {
|
|
183
|
+
raw = await options.source.list({ signal: input.signal });
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
if (isAbortLike(error, input.signal))
|
|
187
|
+
throw new PluginRegistryErrorV1("cancelled", "Plugin registry operation was cancelled", error);
|
|
188
|
+
throw new PluginRegistryErrorV1("source_rejected", "Plugin registry source failed", error);
|
|
189
|
+
}
|
|
190
|
+
if (input.signal?.aborted)
|
|
191
|
+
throw new PluginRegistryErrorV1("cancelled", "Plugin registry operation was cancelled");
|
|
192
|
+
if (!Array.isArray(raw))
|
|
193
|
+
throw new PluginRegistryErrorV1("invalid_manifest", "Registry source must return an array");
|
|
194
|
+
if (raw.length > maxManifests)
|
|
195
|
+
throw new PluginRegistryErrorV1("too_many_manifests", "Registry response contains too many manifests");
|
|
196
|
+
const entries = raw.map(validateEnvelope);
|
|
197
|
+
const payloadBytes = entries.reduce((total, entry) => {
|
|
198
|
+
const manifestBytes = new TextEncoder().encode(JSON.stringify(entry.manifest)).byteLength;
|
|
199
|
+
const distributionBytes = entry.distribution === undefined
|
|
200
|
+
? 0
|
|
201
|
+
: new TextEncoder().encode(JSON.stringify(entry.distribution)).byteLength;
|
|
202
|
+
return (total +
|
|
203
|
+
manifestBytes +
|
|
204
|
+
distributionBytes +
|
|
205
|
+
new TextEncoder().encode(entry.source).byteLength +
|
|
206
|
+
new TextEncoder().encode(entry.manifestDigest).byteLength +
|
|
207
|
+
(entry.signature === undefined ? 0 : new TextEncoder().encode(entry.signature).byteLength));
|
|
208
|
+
}, 0);
|
|
209
|
+
if (payloadBytes > MAX_PLUGIN_REGISTRY_PAYLOAD_BYTES_V1)
|
|
210
|
+
throw new PluginRegistryErrorV1("payload_too_large", "Registry response exceeds the aggregate size limit");
|
|
211
|
+
const seen = new Set();
|
|
212
|
+
const accepted = [];
|
|
213
|
+
const rejected = [];
|
|
214
|
+
for (const entry of entries) {
|
|
215
|
+
const identity = `${entry.manifest.id}@${entry.manifest.pluginVersion}`;
|
|
216
|
+
if (seen.has(identity))
|
|
217
|
+
throw new PluginRegistryErrorV1("invalid_manifest", `Duplicate registry manifest: ${identity}`);
|
|
218
|
+
seen.add(identity);
|
|
219
|
+
try {
|
|
220
|
+
await validateSourceProof(entry, options.verify, options.sourceVerifier);
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
if (!(error instanceof PluginRegistryErrorV1))
|
|
224
|
+
throw error;
|
|
225
|
+
if (error.cause !== undefined)
|
|
226
|
+
throw error;
|
|
227
|
+
if (error.code !== "source_rejected" && error.code !== "invalid_digest")
|
|
228
|
+
throw error;
|
|
229
|
+
rejected.push({
|
|
230
|
+
pluginId: entry.manifest.id,
|
|
231
|
+
pluginVersion: entry.manifest.pluginVersion,
|
|
232
|
+
code: error.code === "invalid_digest" ? "digest_rejected" : "source_rejected",
|
|
233
|
+
reason: error.code === "invalid_digest" ? "Manifest digest mismatch" : "Registry source proof was rejected",
|
|
234
|
+
});
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
if (input.signal?.aborted)
|
|
238
|
+
throw new PluginRegistryErrorV1("cancelled", "Plugin registry operation was cancelled");
|
|
239
|
+
accepted.push(entry);
|
|
240
|
+
}
|
|
241
|
+
const manifests = accepted.map((entry) => entry.manifest);
|
|
242
|
+
const catalog = buildPluginCatalogV1({
|
|
243
|
+
manifests,
|
|
244
|
+
host: options.host,
|
|
245
|
+
availableCapabilities: options.availableCapabilities,
|
|
246
|
+
maxEntries: maxManifests,
|
|
247
|
+
});
|
|
248
|
+
const publicEntries = Object.freeze([...accepted]
|
|
249
|
+
.sort((left, right) => {
|
|
250
|
+
const idOrder = left.manifest.id.localeCompare(right.manifest.id);
|
|
251
|
+
return idOrder === 0
|
|
252
|
+
? comparePluginVersionsV1(right.manifest.pluginVersion, left.manifest.pluginVersion)
|
|
253
|
+
: idOrder;
|
|
254
|
+
})
|
|
255
|
+
.map((entry) => Object.freeze({
|
|
256
|
+
pluginId: entry.manifest.id,
|
|
257
|
+
pluginVersion: entry.manifest.pluginVersion,
|
|
258
|
+
source: entry.source,
|
|
259
|
+
manifestDigest: entry.manifestDigest,
|
|
260
|
+
signed: entry.signature !== undefined,
|
|
261
|
+
})));
|
|
262
|
+
const catalogByIdentity = new Map(catalog.entries.map((entry) => [`${entry.pluginId}@${entry.pluginVersion}`, entry]));
|
|
263
|
+
const verified = Object.freeze(publicEntries.flatMap((entry) => {
|
|
264
|
+
const catalogEntry = catalogByIdentity.get(`${entry.pluginId}@${entry.pluginVersion}`);
|
|
265
|
+
if (catalogEntry?.resolution.status === "installed-ready")
|
|
266
|
+
return [{ ...entry, resolutionStatus: "installed-ready" }];
|
|
267
|
+
const reason = catalogEntry?.resolution.diagnostics[0]?.message ?? "Plugin is incompatible with this host";
|
|
268
|
+
rejected.push({
|
|
269
|
+
pluginId: entry.pluginId,
|
|
270
|
+
pluginVersion: entry.pluginVersion,
|
|
271
|
+
code: "incompatible",
|
|
272
|
+
reason,
|
|
273
|
+
});
|
|
274
|
+
return [];
|
|
275
|
+
}));
|
|
276
|
+
return {
|
|
277
|
+
accepted: Object.freeze(accepted),
|
|
278
|
+
snapshot: Object.freeze({
|
|
279
|
+
version: 1,
|
|
280
|
+
source: options.source.source === undefined ? sourceIdentity(accepted) : validateSource(options.source.source),
|
|
281
|
+
entries: publicEntries,
|
|
282
|
+
catalog,
|
|
283
|
+
verified,
|
|
284
|
+
rejected: Object.freeze(rejected),
|
|
285
|
+
}),
|
|
286
|
+
};
|
|
287
|
+
};
|
|
288
|
+
const listManifests = async (input = {}) => {
|
|
289
|
+
const loaded = await load(input);
|
|
290
|
+
return Object.freeze(loaded.snapshot.catalog.entries.flatMap((catalogEntry) => loaded.accepted
|
|
291
|
+
.filter((entry) => entry.manifest.id === catalogEntry.pluginId &&
|
|
292
|
+
entry.manifest.pluginVersion === catalogEntry.pluginVersion)
|
|
293
|
+
.map((entry) => entry.manifest)));
|
|
294
|
+
};
|
|
295
|
+
return {
|
|
296
|
+
list: async (input = {}) => (await load(input)).snapshot,
|
|
297
|
+
listManifests,
|
|
298
|
+
resolve: async (input) => {
|
|
299
|
+
const loaded = await load({ signal: input.signal });
|
|
300
|
+
const verified = new Set(loaded.snapshot.verified.map((entry) => `${entry.pluginId}@${entry.pluginVersion}`));
|
|
301
|
+
const identity = input.pluginVersion === undefined
|
|
302
|
+
? loaded.snapshot.catalog.entries.find((candidate) => candidate.pluginId === input.pluginId &&
|
|
303
|
+
candidate.resolution.status === "installed-ready" &&
|
|
304
|
+
verified.has(`${candidate.pluginId}@${candidate.pluginVersion}`))
|
|
305
|
+
: loaded.snapshot.catalog.entries.find((candidate) => candidate.pluginId === input.pluginId &&
|
|
306
|
+
candidate.pluginVersion === input.pluginVersion &&
|
|
307
|
+
candidate.resolution.status === "installed-ready" &&
|
|
308
|
+
verified.has(`${candidate.pluginId}@${candidate.pluginVersion}`));
|
|
309
|
+
const entry = identity === undefined
|
|
310
|
+
? undefined
|
|
311
|
+
: loaded.accepted.find((candidate) => candidate.manifest.id === identity.pluginId &&
|
|
312
|
+
candidate.manifest.pluginVersion === identity.pluginVersion);
|
|
313
|
+
if (entry === undefined)
|
|
314
|
+
return undefined;
|
|
315
|
+
return Object.freeze({
|
|
316
|
+
manifest: entry.manifest,
|
|
317
|
+
source: entry.source,
|
|
318
|
+
expectedDigest: entry.manifestDigest,
|
|
319
|
+
...(entry.distribution === undefined ? {} : { distribution: entry.distribution }),
|
|
320
|
+
});
|
|
321
|
+
},
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/plugins/ecosystem/registry.ts"],"names":[],"mappings":"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","sourcesContent":["import { buildPluginCatalogV1, comparePluginVersionsV1, type PluginCatalogSnapshotV1 } from \"./catalog.ts\";\nimport type { PluginDistributionDescriptorV1 } from \"./distribution.ts\";\nimport { createPluginDistributionV1 } from \"./distribution.ts\";\nimport type { CapabilityRefV1, HostFactsV1, PluginManifestV1, PluginSourceVerifierV1 } from \"./types.ts\";\nimport { pluginManifestDigestV1 } from \"./updates.ts\";\n\n/** Maximum manifest JSON bytes accepted by the registry boundary. */\nexport const MAX_PLUGIN_REGISTRY_MANIFEST_BYTES_V1 = 64 * 1024;\n/** Maximum number of manifests returned by one source query. */\nexport const MAX_PLUGIN_REGISTRY_MANIFESTS_V1 = 256;\n/** Maximum aggregate manifest metadata returned by one source query. */\nexport const MAX_PLUGIN_REGISTRY_PAYLOAD_BYTES_V1 = 4 * 1024 * 1024;\n/** Maximum source URI length; sources are identifiers, never package paths. */\nexport const MAX_PLUGIN_REGISTRY_SOURCE_CHARS_V1 = 2048;\n/** Maximum digest/signature text length accepted from a source. */\nexport const MAX_PLUGIN_REGISTRY_PROOF_CHARS_V1 = 512;\n\nexport interface PluginRegistryManifestEnvelopeV1 {\n\treadonly manifest: PluginManifestV1;\n\treadonly source: string;\n\treadonly manifestDigest: string;\n\t/** Optional host- or registry-supplied signature. The verifier owns semantics. */\n\treadonly signature?: string;\n\t/** Optional signed artifact descriptor bound to this exact manifest identity. */\n\treadonly distribution?: PluginDistributionDescriptorV1;\n}\n\n/**\n * A transport-neutral registry source. Hosts inject HTTP, filesystem, or\n * package-manager implementations. The registry never receives package bytes\n * and never exposes source response bodies to the model context.\n */\nexport interface PluginRegistrySourceV1 {\n\t/** Optional stable source identity shown in diagnostics; never a local path. */\n\treadonly source?: string;\n\treadonly list: (input: { readonly signal?: AbortSignal }) => Promise<readonly PluginRegistryManifestEnvelopeV1[]>;\n}\n\nexport interface PluginRegistryDigestVerifierV1 {\n\treadonly verify: (input: {\n\t\treadonly manifest: PluginManifestV1;\n\t\treadonly source: string;\n\t\treadonly manifestDigest: string;\n\t\treadonly expectedDigest?: string;\n\t\treadonly signature?: string;\n\t}) =>\n\t\t| { readonly status: \"accepted\" }\n\t\t| { readonly status: \"rejected\"; readonly reason?: string }\n\t\t| Promise<{ readonly status: \"accepted\" } | { readonly status: \"rejected\"; readonly reason?: string }>;\n}\n\nexport interface PluginRegistryOptionsV1 {\n\treadonly source: PluginRegistrySourceV1;\n\treadonly host: HostFactsV1;\n\t/** Required digest/signature verifier. No implicit trust fallback. */\n\treadonly verify: PluginRegistryDigestVerifierV1;\n\t/** Existing source verifier contract is mandatory at the registry boundary. */\n\treadonly sourceVerifier: PluginSourceVerifierV1;\n\treadonly availableCapabilities?: readonly CapabilityRefV1[];\n\treadonly maxManifests?: number;\n}\n\nexport type PluginRegistryErrorCodeV1 =\n\t| \"cancelled\"\n\t| \"invalid_limit\"\n\t| \"source_rejected\"\n\t| \"invalid_manifest\"\n\t| \"invalid_source\"\n\t| \"invalid_digest\"\n\t| \"payload_too_large\"\n\t| \"too_many_manifests\"\n\t| \"incompatible\";\n\nexport class PluginRegistryErrorV1 extends Error {\n\treadonly code: PluginRegistryErrorCodeV1;\n\treadonly cause?: unknown;\n\n\tconstructor(code: PluginRegistryErrorCodeV1, message: string, cause?: unknown) {\n\t\tsuper(message, cause === undefined ? undefined : { cause });\n\t\tthis.name = \"PluginRegistryErrorV1\";\n\t\tthis.code = code;\n\t\tthis.cause = cause;\n\t}\n}\n\nexport interface PluginRegistryEntryV1 {\n\treadonly pluginId: string;\n\treadonly pluginVersion: string;\n\treadonly source: string;\n\treadonly manifestDigest: string;\n\treadonly signed: boolean;\n}\n\nexport type PluginRegistryRejectionCodeV1 = \"source_rejected\" | \"digest_rejected\" | \"incompatible\";\n\nexport interface PluginRegistryRejectionV1 {\n\treadonly pluginId: string;\n\treadonly pluginVersion: string;\n\treadonly code: PluginRegistryRejectionCodeV1;\n\treadonly reason: string;\n}\n\nexport interface PluginRegistryVerifiedEntryV1 extends PluginRegistryEntryV1 {\n\treadonly resolutionStatus: \"installed-ready\";\n}\n\nexport interface PluginRegistrySnapshotV1 {\n\treadonly version: 1;\n\treadonly source: string;\n\treadonly entries: readonly PluginRegistryEntryV1[];\n\treadonly catalog: PluginCatalogSnapshotV1;\n\t/** Only entries that passed proof validation and host compatibility. */\n\treadonly verified: readonly PluginRegistryVerifiedEntryV1[];\n\t/** Platform/API/test-only entries remain visible in catalog but are not verified. */\n\treadonly rejected: readonly PluginRegistryRejectionV1[];\n}\n\n/** Host-side package projection; package bytes never cross this boundary. */\nexport interface PluginRegistryResolvedPackageV1 {\n\treadonly manifest: PluginManifestV1;\n\treadonly source: string;\n\treadonly expectedDigest: string;\n\treadonly distribution?: PluginDistributionDescriptorV1;\n}\n\nexport interface PluginRegistryV1 {\n\treadonly list: (input?: { readonly signal?: AbortSignal }) => Promise<PluginRegistrySnapshotV1>;\n\t/** Optional host-side resolver. Older custom registry implementations may omit it. */\n\treadonly resolve?: (input: {\n\t\treadonly pluginId: string;\n\t\treadonly pluginVersion?: string;\n\t\treadonly signal?: AbortSignal;\n\t}) => Promise<PluginRegistryResolvedPackageV1 | undefined>;\n\t/** Optional host-side manifest projection used by the CLI catalog command. */\n\treadonly listManifests?: (input?: { readonly signal?: AbortSignal }) => Promise<readonly PluginManifestV1[]>;\n}\n\nfunction isAbortLike(error: unknown, signal: AbortSignal | undefined): boolean {\n\treturn (\n\t\tsignal?.aborted === true ||\n\t\t(error instanceof Error && (error.name === \"AbortError\" || error.name === \"AbortSignalError\"))\n\t);\n}\n\nfunction boundedString(\n\tvalue: unknown,\n\tlabel: string,\n\tmax: number,\n\tcode: PluginRegistryErrorCodeV1 = \"invalid_source\",\n): string {\n\tif (typeof value !== \"string\" || value.trim() === \"\" || value.length > max || /[\\u0000-\\u001f]/u.test(value)) {\n\t\tthrow new PluginRegistryErrorV1(code, `${label} must be a non-empty bounded string`);\n\t}\n\treturn value;\n}\n\nfunction assertAllowedKeys(value: Record<string, unknown>, allowed: readonly string[], label: string): void {\n\tconst expected = new Set(allowed);\n\tif (Object.keys(value).some((key) => !expected.has(key)))\n\t\tthrow new PluginRegistryErrorV1(\"invalid_manifest\", `${label} contains an unsupported field`);\n}\n\nfunction validateSource(source: unknown): string {\n\tconst value = boundedString(source, \"source\", MAX_PLUGIN_REGISTRY_SOURCE_CHARS_V1);\n\tif (/^(?:file:|[a-zA-Z]:[\\\\/]|[\\\\/]{1,2}|\\\\\\\\)/iu.test(value) || /\\s/u.test(value)) {\n\t\tthrow new PluginRegistryErrorV1(\n\t\t\t\"invalid_source\",\n\t\t\t\"Plugin registry source must be an opaque URI, not a local path\",\n\t\t);\n\t}\n\tif (/^https?:\\/\\//iu.test(value)) {\n\t\ttry {\n\t\t\tconst parsed = new URL(value);\n\t\t\tconst pathname = parsed.pathname.length > 512 ? `${parsed.pathname.slice(0, 511)}…` : parsed.pathname;\n\t\t\treturn `${parsed.origin}${pathname || \"/\"}`;\n\t\t} catch (error) {\n\t\t\tthrow new PluginRegistryErrorV1(\"invalid_source\", \"Plugin registry source URL is invalid\", error);\n\t\t}\n\t}\n\treturn value;\n}\n\nfunction validateManifest(manifest: unknown): PluginManifestV1 {\n\tif (typeof manifest !== \"object\" || manifest === null || Array.isArray(manifest)) {\n\t\tthrow new PluginRegistryErrorV1(\"invalid_manifest\", \"Registry manifest must be an object\");\n\t}\n\tconst value = manifest as Record<string, unknown>;\n\tassertAllowedKeys(\n\t\tvalue,\n\t\t[\n\t\t\t\"id\",\n\t\t\t\"pluginVersion\",\n\t\t\t\"apiVersion\",\n\t\t\t\"minHostVersion\",\n\t\t\t\"maxHostVersion\",\n\t\t\t\"capabilityRefs\",\n\t\t\t\"requires\",\n\t\t\t\"platform\",\n\t\t\t\"testOnly\",\n\t\t],\n\t\t\"Registry manifest\",\n\t);\n\tif (typeof value.id !== \"string\" || value.id.trim() === \"\" || value.id.length > 256)\n\t\tthrow new PluginRegistryErrorV1(\"invalid_manifest\", \"Registry manifest id is invalid\");\n\tif (typeof value.pluginVersion !== \"string\" || value.pluginVersion.trim() === \"\" || value.pluginVersion.length > 256)\n\t\tthrow new PluginRegistryErrorV1(\"invalid_manifest\", \"Registry manifest pluginVersion is invalid\");\n\tif (typeof value.apiVersion !== \"string\" || value.apiVersion.trim() === \"\" || value.apiVersion.length > 256)\n\t\tthrow new PluginRegistryErrorV1(\"invalid_manifest\", \"Registry manifest apiVersion is invalid\");\n\tif (value.minHostVersion === undefined && value.maxHostVersion === undefined)\n\t\tthrow new PluginRegistryErrorV1(\n\t\t\t\"invalid_manifest\",\n\t\t\t\"Published plugins must declare host version compatibility range: set minHostVersion and/or maxHostVersion\",\n\t\t);\n\tlet bytes: number;\n\ttry {\n\t\tbytes = new TextEncoder().encode(JSON.stringify(manifest)).byteLength;\n\t} catch (error) {\n\t\tthrow new PluginRegistryErrorV1(\"invalid_manifest\", \"Registry manifest cannot be serialized\", error);\n\t}\n\tif (bytes > MAX_PLUGIN_REGISTRY_MANIFEST_BYTES_V1)\n\t\tthrow new PluginRegistryErrorV1(\"payload_too_large\", \"Registry manifest exceeds the size limit\");\n\treturn Object.freeze({ ...value } as unknown as PluginManifestV1);\n}\n\nfunction validateEnvelope(value: unknown): PluginRegistryManifestEnvelopeV1 {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value))\n\t\tthrow new PluginRegistryErrorV1(\"invalid_manifest\", \"Registry response entry must be an object\");\n\tconst entry = value as Record<string, unknown>;\n\tassertAllowedKeys(\n\t\tentry,\n\t\t[\"manifest\", \"source\", \"manifestDigest\", \"signature\", \"distribution\"],\n\t\t\"Registry response entry\",\n\t);\n\tconst manifest = validateManifest(entry.manifest);\n\tconst source = validateSource(entry.source);\n\tconst manifestDigest = boundedString(entry.manifestDigest, \"manifestDigest\", MAX_PLUGIN_REGISTRY_PROOF_CHARS_V1);\n\tif (entry.signature !== undefined) boundedString(entry.signature, \"signature\", MAX_PLUGIN_REGISTRY_PROOF_CHARS_V1);\n\tlet distribution: PluginDistributionDescriptorV1 | undefined;\n\tif (entry.distribution !== undefined) {\n\t\ttry {\n\t\t\tdistribution = createPluginDistributionV1().validateDescriptor(entry.distribution);\n\t\t} catch (error) {\n\t\t\tthrow new PluginRegistryErrorV1(\"invalid_manifest\", \"Registry distribution descriptor is invalid\", error);\n\t\t}\n\t\tif (\n\t\t\tdistribution.pluginId !== manifest.id ||\n\t\t\tdistribution.pluginVersion !== manifest.pluginVersion ||\n\t\t\tdistribution.manifestDigest !== manifestDigest\n\t\t)\n\t\t\tthrow new PluginRegistryErrorV1(\n\t\t\t\t\"invalid_manifest\",\n\t\t\t\t\"Registry distribution descriptor does not match the manifest identity\",\n\t\t\t);\n\t}\n\treturn Object.freeze({\n\t\tmanifest,\n\t\tsource,\n\t\tmanifestDigest,\n\t\t...(entry.signature === undefined ? {} : { signature: entry.signature as string }),\n\t\t...(distribution === undefined ? {} : { distribution }),\n\t});\n}\n\nfunction validateMax(value: number | undefined): number {\n\tconst max = value ?? MAX_PLUGIN_REGISTRY_MANIFESTS_V1;\n\tif (!Number.isSafeInteger(max) || max < 1 || max > MAX_PLUGIN_REGISTRY_MANIFESTS_V1)\n\t\tthrow new PluginRegistryErrorV1(\n\t\t\t\"invalid_limit\",\n\t\t\t`maxManifests must be an integer between 1 and ${MAX_PLUGIN_REGISTRY_MANIFESTS_V1}`,\n\t\t);\n\treturn max;\n}\n\nasync function validateSourceProof(\n\tentry: PluginRegistryManifestEnvelopeV1,\n\tverifier: PluginRegistryDigestVerifierV1,\n\tsourceVerifier: PluginSourceVerifierV1,\n): Promise<void> {\n\tconst actualDigest = pluginManifestDigestV1(entry.manifest);\n\tif (entry.manifestDigest !== actualDigest)\n\t\tthrow new PluginRegistryErrorV1(\n\t\t\t\"invalid_digest\",\n\t\t\t`Manifest digest mismatch for ${entry.manifest.id}@${entry.manifest.pluginVersion}`,\n\t\t);\n\ttry {\n\t\tconst result = await verifier.verify({\n\t\t\tmanifest: entry.manifest,\n\t\t\tsource: entry.source,\n\t\t\tmanifestDigest: actualDigest,\n\t\t\texpectedDigest: entry.manifestDigest,\n\t\t\tsignature: entry.signature,\n\t\t});\n\t\tif (result.status !== \"accepted\")\n\t\t\tthrow new PluginRegistryErrorV1(\"source_rejected\", result.reason ?? \"Registry source proof was rejected\");\n\t} catch (error) {\n\t\tif (error instanceof PluginRegistryErrorV1) throw error;\n\t\tthrow new PluginRegistryErrorV1(\"source_rejected\", \"Registry source proof was rejected\", error);\n\t}\n\tlet result: ReturnType<PluginSourceVerifierV1>;\n\ttry {\n\t\tresult = sourceVerifier({\n\t\t\tpluginId: entry.manifest.id,\n\t\t\tpluginVersion: entry.manifest.pluginVersion,\n\t\t\tsource: entry.source,\n\t\t\tmanifestDigest: actualDigest,\n\t\t});\n\t} catch (error) {\n\t\tthrow new PluginRegistryErrorV1(\"source_rejected\", \"Plugin source verifier failed\", error);\n\t}\n\tif (result.status !== \"accepted\")\n\t\tthrow new PluginRegistryErrorV1(\"source_rejected\", result.reason ?? \"Plugin source was rejected\");\n}\n\nfunction sourceIdentity(entries: readonly PluginRegistryManifestEnvelopeV1[]): string {\n\tconst sources = [...new Set(entries.map((entry) => entry.source))].sort((left, right) => left.localeCompare(right));\n\treturn sources.join(\",\");\n}\n\ninterface RegistryLoadV1 {\n\treadonly accepted: readonly PluginRegistryManifestEnvelopeV1[];\n\treadonly snapshot: PluginRegistrySnapshotV1;\n}\n\n/** Create a deterministic, host-injected registry client. */\nexport function createPluginRegistryV1(options: PluginRegistryOptionsV1): PluginRegistryV1 {\n\tconst maxManifests = validateMax(options.maxManifests);\n\tif (options.source === undefined || typeof options.source.list !== \"function\")\n\t\tthrow new PluginRegistryErrorV1(\"invalid_source\", \"Registry source must provide list()\");\n\tif (options.source.source !== undefined) validateSource(options.source.source);\n\tif (options.verify === undefined || typeof options.verify.verify !== \"function\")\n\t\tthrow new PluginRegistryErrorV1(\"source_rejected\", \"Registry source/digest verifier is required\");\n\tif (options.sourceVerifier === undefined || typeof options.sourceVerifier !== \"function\")\n\t\tthrow new PluginRegistryErrorV1(\"source_rejected\", \"Registry source verifier is required\");\n\n\tconst load = async (input: { readonly signal?: AbortSignal } = {}): Promise<RegistryLoadV1> => {\n\t\tif (input.signal?.aborted)\n\t\t\tthrow new PluginRegistryErrorV1(\"cancelled\", \"Plugin registry operation was cancelled\");\n\t\tlet raw: readonly PluginRegistryManifestEnvelopeV1[];\n\t\ttry {\n\t\t\traw = await options.source.list({ signal: input.signal });\n\t\t} catch (error) {\n\t\t\tif (isAbortLike(error, input.signal))\n\t\t\t\tthrow new PluginRegistryErrorV1(\"cancelled\", \"Plugin registry operation was cancelled\", error);\n\t\t\tthrow new PluginRegistryErrorV1(\"source_rejected\", \"Plugin registry source failed\", error);\n\t\t}\n\t\tif (input.signal?.aborted)\n\t\t\tthrow new PluginRegistryErrorV1(\"cancelled\", \"Plugin registry operation was cancelled\");\n\t\tif (!Array.isArray(raw))\n\t\t\tthrow new PluginRegistryErrorV1(\"invalid_manifest\", \"Registry source must return an array\");\n\t\tif (raw.length > maxManifests)\n\t\t\tthrow new PluginRegistryErrorV1(\"too_many_manifests\", \"Registry response contains too many manifests\");\n\t\tconst entries = raw.map(validateEnvelope);\n\t\tconst payloadBytes = entries.reduce((total, entry) => {\n\t\t\tconst manifestBytes = new TextEncoder().encode(JSON.stringify(entry.manifest)).byteLength;\n\t\t\tconst distributionBytes =\n\t\t\t\tentry.distribution === undefined\n\t\t\t\t\t? 0\n\t\t\t\t\t: new TextEncoder().encode(JSON.stringify(entry.distribution)).byteLength;\n\t\t\treturn (\n\t\t\t\ttotal +\n\t\t\t\tmanifestBytes +\n\t\t\t\tdistributionBytes +\n\t\t\t\tnew TextEncoder().encode(entry.source).byteLength +\n\t\t\t\tnew TextEncoder().encode(entry.manifestDigest).byteLength +\n\t\t\t\t(entry.signature === undefined ? 0 : new TextEncoder().encode(entry.signature).byteLength)\n\t\t\t);\n\t\t}, 0);\n\t\tif (payloadBytes > MAX_PLUGIN_REGISTRY_PAYLOAD_BYTES_V1)\n\t\t\tthrow new PluginRegistryErrorV1(\"payload_too_large\", \"Registry response exceeds the aggregate size limit\");\n\t\tconst seen = new Set<string>();\n\t\tconst accepted: PluginRegistryManifestEnvelopeV1[] = [];\n\t\tconst rejected: PluginRegistryRejectionV1[] = [];\n\t\tfor (const entry of entries) {\n\t\t\tconst identity = `${entry.manifest.id}@${entry.manifest.pluginVersion}`;\n\t\t\tif (seen.has(identity))\n\t\t\t\tthrow new PluginRegistryErrorV1(\"invalid_manifest\", `Duplicate registry manifest: ${identity}`);\n\t\t\tseen.add(identity);\n\t\t\ttry {\n\t\t\t\tawait validateSourceProof(entry, options.verify, options.sourceVerifier);\n\t\t\t} catch (error) {\n\t\t\t\tif (!(error instanceof PluginRegistryErrorV1)) throw error;\n\t\t\t\tif (error.cause !== undefined) throw error;\n\t\t\t\tif (error.code !== \"source_rejected\" && error.code !== \"invalid_digest\") throw error;\n\t\t\t\trejected.push({\n\t\t\t\t\tpluginId: entry.manifest.id,\n\t\t\t\t\tpluginVersion: entry.manifest.pluginVersion,\n\t\t\t\t\tcode: error.code === \"invalid_digest\" ? \"digest_rejected\" : \"source_rejected\",\n\t\t\t\t\treason:\n\t\t\t\t\t\terror.code === \"invalid_digest\" ? \"Manifest digest mismatch\" : \"Registry source proof was rejected\",\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (input.signal?.aborted)\n\t\t\t\tthrow new PluginRegistryErrorV1(\"cancelled\", \"Plugin registry operation was cancelled\");\n\t\t\taccepted.push(entry);\n\t\t}\n\t\tconst manifests = accepted.map((entry) => entry.manifest);\n\t\tconst catalog = buildPluginCatalogV1({\n\t\t\tmanifests,\n\t\t\thost: options.host,\n\t\t\tavailableCapabilities: options.availableCapabilities,\n\t\t\tmaxEntries: maxManifests,\n\t\t});\n\t\tconst publicEntries = Object.freeze(\n\t\t\t[...accepted]\n\t\t\t\t.sort((left, right) => {\n\t\t\t\t\tconst idOrder = left.manifest.id.localeCompare(right.manifest.id);\n\t\t\t\t\treturn idOrder === 0\n\t\t\t\t\t\t? comparePluginVersionsV1(right.manifest.pluginVersion, left.manifest.pluginVersion)\n\t\t\t\t\t\t: idOrder;\n\t\t\t\t})\n\t\t\t\t.map((entry) =>\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\tpluginId: entry.manifest.id,\n\t\t\t\t\t\tpluginVersion: entry.manifest.pluginVersion,\n\t\t\t\t\t\tsource: entry.source,\n\t\t\t\t\t\tmanifestDigest: entry.manifestDigest,\n\t\t\t\t\t\tsigned: entry.signature !== undefined,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t);\n\t\tconst catalogByIdentity = new Map(\n\t\t\tcatalog.entries.map((entry) => [`${entry.pluginId}@${entry.pluginVersion}`, entry] as const),\n\t\t);\n\t\tconst verified = Object.freeze(\n\t\t\tpublicEntries.flatMap((entry) => {\n\t\t\t\tconst catalogEntry = catalogByIdentity.get(`${entry.pluginId}@${entry.pluginVersion}`);\n\t\t\t\tif (catalogEntry?.resolution.status === \"installed-ready\")\n\t\t\t\t\treturn [{ ...entry, resolutionStatus: \"installed-ready\" as const }];\n\t\t\t\tconst reason = catalogEntry?.resolution.diagnostics[0]?.message ?? \"Plugin is incompatible with this host\";\n\t\t\t\trejected.push({\n\t\t\t\t\tpluginId: entry.pluginId,\n\t\t\t\t\tpluginVersion: entry.pluginVersion,\n\t\t\t\t\tcode: \"incompatible\",\n\t\t\t\t\treason,\n\t\t\t\t});\n\t\t\t\treturn [];\n\t\t\t}),\n\t\t);\n\t\treturn {\n\t\t\taccepted: Object.freeze(accepted),\n\t\t\tsnapshot: Object.freeze({\n\t\t\t\tversion: 1,\n\t\t\t\tsource:\n\t\t\t\t\toptions.source.source === undefined ? sourceIdentity(accepted) : validateSource(options.source.source),\n\t\t\t\tentries: publicEntries,\n\t\t\t\tcatalog,\n\t\t\t\tverified,\n\t\t\t\trejected: Object.freeze(rejected),\n\t\t\t}),\n\t\t};\n\t};\n\tconst listManifests = async (\n\t\tinput: { readonly signal?: AbortSignal } = {},\n\t): Promise<readonly PluginManifestV1[]> => {\n\t\tconst loaded = await load(input);\n\t\treturn Object.freeze(\n\t\t\tloaded.snapshot.catalog.entries.flatMap((catalogEntry) =>\n\t\t\t\tloaded.accepted\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t(entry) =>\n\t\t\t\t\t\t\tentry.manifest.id === catalogEntry.pluginId &&\n\t\t\t\t\t\t\tentry.manifest.pluginVersion === catalogEntry.pluginVersion,\n\t\t\t\t\t)\n\t\t\t\t\t.map((entry) => entry.manifest),\n\t\t\t),\n\t\t);\n\t};\n\treturn {\n\t\tlist: async (input = {}) => (await load(input)).snapshot,\n\t\tlistManifests,\n\t\tresolve: async (input) => {\n\t\t\tconst loaded = await load({ signal: input.signal });\n\t\t\tconst verified = new Set(loaded.snapshot.verified.map((entry) => `${entry.pluginId}@${entry.pluginVersion}`));\n\t\t\tconst identity =\n\t\t\t\tinput.pluginVersion === undefined\n\t\t\t\t\t? loaded.snapshot.catalog.entries.find(\n\t\t\t\t\t\t\t(candidate) =>\n\t\t\t\t\t\t\t\tcandidate.pluginId === input.pluginId &&\n\t\t\t\t\t\t\t\tcandidate.resolution.status === \"installed-ready\" &&\n\t\t\t\t\t\t\t\tverified.has(`${candidate.pluginId}@${candidate.pluginVersion}`),\n\t\t\t\t\t\t)\n\t\t\t\t\t: loaded.snapshot.catalog.entries.find(\n\t\t\t\t\t\t\t(candidate) =>\n\t\t\t\t\t\t\t\tcandidate.pluginId === input.pluginId &&\n\t\t\t\t\t\t\t\tcandidate.pluginVersion === input.pluginVersion &&\n\t\t\t\t\t\t\t\tcandidate.resolution.status === \"installed-ready\" &&\n\t\t\t\t\t\t\t\tverified.has(`${candidate.pluginId}@${candidate.pluginVersion}`),\n\t\t\t\t\t\t);\n\t\t\tconst entry =\n\t\t\t\tidentity === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: loaded.accepted.find(\n\t\t\t\t\t\t\t(candidate) =>\n\t\t\t\t\t\t\t\tcandidate.manifest.id === identity.pluginId &&\n\t\t\t\t\t\t\t\tcandidate.manifest.pluginVersion === identity.pluginVersion,\n\t\t\t\t\t\t);\n\t\t\tif (entry === undefined) return undefined;\n\t\t\treturn Object.freeze({\n\t\t\t\tmanifest: entry.manifest,\n\t\t\t\tsource: entry.source,\n\t\t\t\texpectedDigest: entry.manifestDigest,\n\t\t\t\t...(entry.distribution === undefined ? {} : { distribution: entry.distribution }),\n\t\t\t});\n\t\t},\n\t};\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CapabilityRefV1, HostFactsV1, PluginManifestV1, PluginResolutionV1, ProfileResolutionV1, ResolvedManifestV1, ResolvedPluginV1 } from "./types.ts";
|
|
2
|
+
/** Resolve one installed plugin against concrete host facts. */
|
|
3
|
+
export declare function resolvePluginCompatibilityV1(input: {
|
|
4
|
+
readonly manifest: PluginManifestV1;
|
|
5
|
+
readonly host: HostFactsV1;
|
|
6
|
+
readonly required?: boolean;
|
|
7
|
+
readonly disabled?: boolean;
|
|
8
|
+
readonly availableCapabilities?: readonly CapabilityRefV1[];
|
|
9
|
+
/** Host's own version; when omitted, the manifest min/maxHostVersion range is not checked. */
|
|
10
|
+
readonly hostVersion?: string;
|
|
11
|
+
}): PluginResolutionV1;
|
|
12
|
+
/** Build an order-independent identity including adapter and capability refs. */
|
|
13
|
+
export declare function buildResolvedManifestV1(input: {
|
|
14
|
+
readonly profileId: string;
|
|
15
|
+
readonly profileVersion: string;
|
|
16
|
+
readonly plugins: readonly ResolvedPluginV1[];
|
|
17
|
+
}): ResolvedManifestV1;
|
|
18
|
+
/** Resolve all plugins in a Profile; optional unavailable plugins do not block startup. */
|
|
19
|
+
export declare function resolvePluginProfileV1(input: {
|
|
20
|
+
readonly profileId: string;
|
|
21
|
+
readonly profileVersion: string;
|
|
22
|
+
readonly plugins: readonly {
|
|
23
|
+
readonly manifest: PluginManifestV1;
|
|
24
|
+
readonly required?: boolean;
|
|
25
|
+
readonly disabled?: boolean;
|
|
26
|
+
}[];
|
|
27
|
+
readonly host: HostFactsV1;
|
|
28
|
+
readonly availableCapabilities?: readonly CapabilityRefV1[];
|
|
29
|
+
/** Host's own version, forwarded to each plugin's min/maxHostVersion range check. */
|
|
30
|
+
readonly hostVersion?: string;
|
|
31
|
+
}): ProfileResolutionV1;
|
|
32
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/plugins/ecosystem/resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,eAAe,EAEf,WAAW,EAGX,gBAAgB,EAEhB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAEhB,MAAM,YAAY,CAAC;AA2KpB,gEAAgE;AAChE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IACnD,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5D,8FAA8F;IAC9F,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC9B,GAAG,kBAAkB,CAiJrB;AAYD,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC9C,GAAG,kBAAkB,CA2BrB;AAED,2FAA2F;AAC3F,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS;QAC1B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;KAC5B,EAAE,CAAC;IACJ,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5D,qFAAqF;IACrF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC9B,GAAG,mBAAmB,CAgCtB","sourcesContent":["import { stableJsonDigest } from \"../../profile/identity.ts\";\nimport { comparePluginVersionsV1 } from \"./catalog.ts\";\nimport type {\n\tCapabilityRefV1,\n\tHostAdapterFactV1,\n\tHostFactsV1,\n\tPluginAdapterManifestV1,\n\tPluginDiagnosticV1,\n\tPluginManifestV1,\n\tPluginResolutionStatusV1,\n\tPluginResolutionV1,\n\tProfileResolutionV1,\n\tResolvedManifestV1,\n\tResolvedPluginV1,\n\tSelectedAdapterV1,\n} from \"./types.ts\";\n\nfunction assertNonEmpty(value: string, label: string): void {\n\tif (typeof value !== \"string\" || value.trim().length === 0) throw new Error(`${label} must be a non-empty string`);\n}\n\nfunction matchesList<T extends string>(value: string, allowed: readonly T[] | undefined): boolean {\n\treturn (\n\t\tallowed === undefined || (allowed.length > 0 && (allowed.includes(value as T) || allowed.includes(\"any\" as T)))\n\t);\n}\n\nfunction hasAllFeatures(hostFeatures: readonly string[], required: readonly string[] | undefined): string | undefined {\n\tif (required === undefined) return undefined;\n\tconst available = new Set(hostFeatures);\n\treturn required.find((feature) => !available.has(feature));\n}\n\nfunction runtimeVersion(host: HostFactsV1, name: string): string | undefined {\n\treturn host.runtime.find((runtime) => runtime.name === name)?.version;\n}\n\nfunction diagnostic(\n\tcode: PluginDiagnosticV1[\"code\"],\n\tmessage: string,\n\tdetails?: Readonly<Record<string, string>>,\n): PluginDiagnosticV1 {\n\treturn details === undefined ? { code, message } : { code, message, details };\n}\n\nfunction adapterMatches(adapter: PluginAdapterManifestV1, host: HostFactsV1): boolean {\n\treturn (\n\t\tmatchesList(host.os, adapter.os) &&\n\t\tmatchesList(host.arch, adapter.arch) &&\n\t\thasAllFeatures(host.hostFeatures, adapter.hostFeatures) === undefined\n\t);\n}\n\nfunction hostAdapterMatches(\n\tadapter: PluginAdapterManifestV1,\n\thostAdapter: HostAdapterFactV1,\n\thost: HostFactsV1,\n): boolean {\n\treturn (\n\t\thostAdapter.id === adapter.id &&\n\t\thostAdapter.version === adapter.version &&\n\t\tadapterMatches(adapter, host) &&\n\t\t(hostAdapter.os === undefined || hostAdapter.os === host.os || hostAdapter.os === \"any\") &&\n\t\t(hostAdapter.arch === undefined || hostAdapter.arch === host.arch || hostAdapter.arch === \"any\") &&\n\t\thasAllFeatures(hostAdapter.hostFeatures ?? [], adapter.hostFeatures) === undefined\n\t);\n}\n\nfunction selectAdapter(\n\tmanifest: PluginManifestV1,\n\thost: HostFactsV1,\n): { readonly selected?: SelectedAdapterV1; readonly diagnostic?: PluginDiagnosticV1 } | undefined {\n\tconst adapters = manifest.platform?.adapters;\n\tif (adapters === undefined || adapters.length === 0) return undefined;\n\tconst installed = host.adapters ?? [];\n\tconst candidates = adapters\n\t\t.filter((adapter) => adapterMatches(adapter, host))\n\t\t.filter((adapter) => installed.some((hostAdapter) => hostAdapterMatches(adapter, hostAdapter, host)))\n\t\t.sort((left, right) => {\n\t\t\tconst idOrder = left.id.localeCompare(right.id);\n\t\t\treturn idOrder === 0 ? comparePluginVersionsV1(right.version, left.version) : idOrder;\n\t\t});\n\tconst selected = candidates[0];\n\treturn selected === undefined\n\t\t? {\n\t\t\t\tdiagnostic: diagnostic(\n\t\t\t\t\t\"adapter-unavailable\",\n\t\t\t\t\t`No installed adapter satisfies plugin ${manifest.id} on ${host.os}/${host.arch}`,\n\t\t\t\t),\n\t\t\t}\n\t\t: { selected: { id: selected.id, version: selected.version } };\n}\n\nfunction normalizeRefs(refs: readonly CapabilityRefV1[] | undefined): readonly CapabilityRefV1[] {\n\tconst normalized = [...(refs ?? [])].map((ref) => {\n\t\tassertNonEmpty(ref.id, \"capability id\");\n\t\tif (!Number.isSafeInteger(ref.version) || ref.version < 1) {\n\t\t\tthrow new Error(`capability ${ref.id} version must be a positive safe integer`);\n\t\t}\n\t\treturn { id: ref.id, version: ref.version };\n\t});\n\tnormalized.sort((left, right) =>\n\t\tleft.id === right.id ? left.version - right.version : left.id.localeCompare(right.id),\n\t);\n\treturn normalized;\n}\n\nfunction hasCapability(ref: CapabilityRefV1, available: readonly CapabilityRefV1[]): boolean {\n\treturn available.some((candidate) => candidate.id === ref.id && candidate.version === ref.version);\n}\n\nfunction resolvePlatform(\n\tmanifest: PluginManifestV1,\n\thost: HostFactsV1,\n): {\n\treadonly status?: PluginResolutionStatusV1;\n\treadonly diagnostics: readonly PluginDiagnosticV1[];\n\treadonly selectedAdapter?: SelectedAdapterV1;\n} {\n\tconst platform = manifest.platform;\n\tif (platform === undefined) return { diagnostics: [] };\n\tif (!matchesList(host.os, platform.os)) {\n\t\treturn {\n\t\t\tstatus: \"installed-unavailable\",\n\t\t\tdiagnostics: [diagnostic(\"unsupported-platform\", `Plugin ${manifest.id} does not support host OS ${host.os}`)],\n\t\t};\n\t}\n\tif (!matchesList(host.arch, platform.arch)) {\n\t\treturn {\n\t\t\tstatus: \"installed-unavailable\",\n\t\t\tdiagnostics: [\n\t\t\t\tdiagnostic(\n\t\t\t\t\t\"unsupported-architecture\",\n\t\t\t\t\t`Plugin ${manifest.id} does not support host architecture ${host.arch}`,\n\t\t\t\t),\n\t\t\t],\n\t\t};\n\t}\n\tconst missingFeature = hasAllFeatures(host.hostFeatures, platform.hostFeatures);\n\tif (missingFeature !== undefined) {\n\t\treturn {\n\t\t\tstatus: \"installed-unavailable\",\n\t\t\tdiagnostics: [\n\t\t\t\tdiagnostic(\"missing-host-feature\", `Host feature is missing: ${missingFeature}`, {\n\t\t\t\t\tfeature: missingFeature,\n\t\t\t\t}),\n\t\t\t],\n\t\t};\n\t}\n\tfor (const constraint of platform.runtime ?? []) {\n\t\tconst actual = runtimeVersion(host, constraint.name);\n\t\tif (actual === undefined) {\n\t\t\treturn {\n\t\t\t\tstatus: \"version-incompatible\",\n\t\t\t\tdiagnostics: [\n\t\t\t\t\tdiagnostic(\"missing-runtime\", `Required runtime is missing: ${constraint.name}`, {\n\t\t\t\t\t\truntime: constraint.name,\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\t\tif (\n\t\t\t(constraint.minVersion !== undefined && comparePluginVersionsV1(actual, constraint.minVersion) < 0) ||\n\t\t\t(constraint.maxVersion !== undefined && comparePluginVersionsV1(actual, constraint.maxVersion) > 0)\n\t\t) {\n\t\t\treturn {\n\t\t\t\tstatus: \"version-incompatible\",\n\t\t\t\tdiagnostics: [\n\t\t\t\t\tdiagnostic(\n\t\t\t\t\t\t\"runtime-version-incompatible\",\n\t\t\t\t\t\t`Runtime ${constraint.name}@${actual} is outside the supported range`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\truntime: constraint.name,\n\t\t\t\t\t\t\tactual,\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\t}\n\tconst selected = selectAdapter(manifest, host);\n\tif (selected?.diagnostic !== undefined)\n\t\treturn { status: \"dependency-unavailable\", diagnostics: [selected.diagnostic] };\n\treturn { diagnostics: [], selectedAdapter: selected?.selected };\n}\n\n/** Resolve one installed plugin against concrete host facts. */\nexport function resolvePluginCompatibilityV1(input: {\n\treadonly manifest: PluginManifestV1;\n\treadonly host: HostFactsV1;\n\treadonly required?: boolean;\n\treadonly disabled?: boolean;\n\treadonly availableCapabilities?: readonly CapabilityRefV1[];\n\t/** Host's own version; when omitted, the manifest min/maxHostVersion range is not checked. */\n\treadonly hostVersion?: string;\n}): PluginResolutionV1 {\n\tconst { manifest, host } = input;\n\tassertNonEmpty(manifest.id, \"plugin id\");\n\tassertNonEmpty(manifest.pluginVersion, \"pluginVersion\");\n\tassertNonEmpty(manifest.apiVersion, \"apiVersion\");\n\tconst required = input.required ?? true;\n\tif (input.disabled === true) {\n\t\treturn {\n\t\t\tpluginId: manifest.id,\n\t\t\tpluginVersion: manifest.pluginVersion,\n\t\t\trequired,\n\t\t\tstatus: \"disabled\",\n\t\t\tdiagnostics: [diagnostic(\"plugin-disabled\", `Plugin ${manifest.id} is disabled`)],\n\t\t};\n\t}\n\tif (manifest.testOnly === true) {\n\t\treturn {\n\t\t\tpluginId: manifest.id,\n\t\t\tpluginVersion: manifest.pluginVersion,\n\t\t\trequired,\n\t\t\tstatus: \"installed-unavailable\",\n\t\t\tdiagnostics: [\n\t\t\t\tdiagnostic(\"test-only-plugin\", `Plugin ${manifest.id} is test-only and cannot be selected for production`),\n\t\t\t],\n\t\t};\n\t}\n\tif (![\"windows\", \"macos\", \"linux\"].includes(host.os)) {\n\t\treturn {\n\t\t\tpluginId: manifest.id,\n\t\t\tpluginVersion: manifest.pluginVersion,\n\t\t\trequired,\n\t\t\tstatus: \"installed-unavailable\",\n\t\t\tdiagnostics: [diagnostic(\"unsupported-platform\", `Host OS is unknown: ${host.os}`)],\n\t\t};\n\t}\n\tif (![\"x64\", \"arm64\"].includes(host.arch)) {\n\t\treturn {\n\t\t\tpluginId: manifest.id,\n\t\t\tpluginVersion: manifest.pluginVersion,\n\t\t\trequired,\n\t\t\tstatus: \"installed-unavailable\",\n\t\t\tdiagnostics: [diagnostic(\"unsupported-architecture\", `Host architecture is unknown: ${host.arch}`)],\n\t\t};\n\t}\n\tif (manifest.minHostVersion !== undefined || manifest.maxHostVersion !== undefined) {\n\t\tif (manifest.minHostVersion !== undefined) assertNonEmpty(manifest.minHostVersion, \"minHostVersion\");\n\t\tif (manifest.maxHostVersion !== undefined) assertNonEmpty(manifest.maxHostVersion, \"maxHostVersion\");\n\t\tif (input.hostVersion !== undefined) {\n\t\t\tconst belowFloor =\n\t\t\t\tmanifest.minHostVersion !== undefined &&\n\t\t\t\tcomparePluginVersionsV1(input.hostVersion, manifest.minHostVersion) < 0;\n\t\t\tconst aboveCeiling =\n\t\t\t\tmanifest.maxHostVersion !== undefined &&\n\t\t\t\tcomparePluginVersionsV1(input.hostVersion, manifest.maxHostVersion) > 0;\n\t\t\tif (belowFloor || aboveCeiling) {\n\t\t\t\t// The declared compatibility range, rendered human-readably\n\t\t\t\t// (e.g. \">= 1.0.0 and <= 2.0.0\"); a single bound keeps the\n\t\t\t\t// floor-only shape the diagnostics contract pins.\n\t\t\t\tconst requiredRange = [\n\t\t\t\t\tmanifest.minHostVersion !== undefined ? `>= ${manifest.minHostVersion}` : undefined,\n\t\t\t\t\tmanifest.maxHostVersion !== undefined ? `<= ${manifest.maxHostVersion}` : undefined,\n\t\t\t\t]\n\t\t\t\t\t.filter((bound) => bound !== undefined)\n\t\t\t\t\t.join(\" and \");\n\t\t\t\tconst guidance = belowFloor\n\t\t\t\t\t? `Upgrade the host to at least ${manifest.minHostVersion} to load this plugin.`\n\t\t\t\t\t: `Install a plugin version whose declared host range includes ${input.hostVersion}.`;\n\t\t\t\treturn {\n\t\t\t\t\tpluginId: manifest.id,\n\t\t\t\t\tpluginVersion: manifest.pluginVersion,\n\t\t\t\t\trequired,\n\t\t\t\t\tstatus: \"version-incompatible\",\n\t\t\t\t\tdiagnostics: [\n\t\t\t\t\t\tdiagnostic(\n\t\t\t\t\t\t\t\"host-version-incompatible\",\n\t\t\t\t\t\t\t`Plugin ${manifest.id} requires host version ${requiredRange}, but the host is ${input.hostVersion}. ${guidance}`,\n\t\t\t\t\t\t\t{ required: requiredRange, actual: input.hostVersion },\n\t\t\t\t\t\t),\n\t\t\t\t\t],\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\tif (manifest.apiVersion !== host.apiVersion) {\n\t\treturn {\n\t\t\tpluginId: manifest.id,\n\t\t\tpluginVersion: manifest.pluginVersion,\n\t\t\trequired,\n\t\t\tstatus: \"version-incompatible\",\n\t\t\tdiagnostics: [\n\t\t\t\tdiagnostic(\n\t\t\t\t\t\"api-version-incompatible\",\n\t\t\t\t\t`Plugin requires API ${manifest.apiVersion}, host provides ${host.apiVersion}`,\n\t\t\t\t),\n\t\t\t],\n\t\t};\n\t}\n\tconst platform = resolvePlatform(manifest, host);\n\tif (platform.status !== undefined) {\n\t\treturn {\n\t\t\tpluginId: manifest.id,\n\t\t\tpluginVersion: manifest.pluginVersion,\n\t\t\trequired,\n\t\t\tstatus: platform.status,\n\t\t\tdiagnostics: platform.diagnostics,\n\t\t};\n\t}\n\tconst available = input.availableCapabilities ?? [];\n\tconst dependencyDiagnostics: PluginDiagnosticV1[] = [];\n\tfor (const requirement of manifest.requires ?? []) {\n\t\tif (hasCapability(requirement, available)) continue;\n\t\tdependencyDiagnostics.push(\n\t\t\tdiagnostic(\n\t\t\t\trequirement.optional === true ? \"optional-capability-unavailable\" : \"missing-capability\",\n\t\t\t\t`Capability ${requirement.id}@${requirement.version} is unavailable`,\n\t\t\t\t{ capability: requirement.id, version: String(requirement.version) },\n\t\t\t),\n\t\t);\n\t}\n\tconst hasRequiredMissing = dependencyDiagnostics.some((item) => item.code === \"missing-capability\");\n\tif (hasRequiredMissing) {\n\t\treturn {\n\t\t\tpluginId: manifest.id,\n\t\t\tpluginVersion: manifest.pluginVersion,\n\t\t\trequired,\n\t\t\tstatus: \"dependency-unavailable\",\n\t\t\tdiagnostics: dependencyDiagnostics,\n\t\t};\n\t}\n\tconst capabilityRefs = normalizeRefs(manifest.capabilityRefs);\n\tconst resolved: ResolvedPluginV1 = {\n\t\tpluginId: manifest.id,\n\t\tpluginVersion: manifest.pluginVersion,\n\t\tcapabilityRefs,\n\t\t...(platform.selectedAdapter === undefined ? {} : { selectedAdapter: platform.selectedAdapter }),\n\t};\n\treturn {\n\t\tpluginId: manifest.id,\n\t\tpluginVersion: manifest.pluginVersion,\n\t\trequired,\n\t\tstatus: \"installed-ready\",\n\t\tdiagnostics: dependencyDiagnostics,\n\t\tresolved,\n\t\t...(platform.selectedAdapter === undefined ? {} : { selectedAdapter: platform.selectedAdapter }),\n\t};\n}\n\nfunction compareResolvedPlugins(left: ResolvedPluginV1, right: ResolvedPluginV1): number {\n\treturn left.pluginId === right.pluginId\n\t\t? comparePluginVersionsV1(left.pluginVersion, right.pluginVersion)\n\t\t: left.pluginId.localeCompare(right.pluginId);\n}\n\nfunction compareRefs(left: CapabilityRefV1, right: CapabilityRefV1): number {\n\treturn left.id === right.id ? left.version - right.version : left.id.localeCompare(right.id);\n}\n\n/** Build an order-independent identity including adapter and capability refs. */\nexport function buildResolvedManifestV1(input: {\n\treadonly profileId: string;\n\treadonly profileVersion: string;\n\treadonly plugins: readonly ResolvedPluginV1[];\n}): ResolvedManifestV1 {\n\tassertNonEmpty(input.profileId, \"profileId\");\n\tassertNonEmpty(input.profileVersion, \"profileVersion\");\n\tconst plugins = [...input.plugins]\n\t\t.map((plugin) => ({\n\t\t\tpluginId: plugin.pluginId,\n\t\t\tpluginVersion: plugin.pluginVersion,\n\t\t\tcapabilityRefs: normalizeRefs(plugin.capabilityRefs),\n\t\t\t...(plugin.selectedAdapter === undefined ? {} : { selectedAdapter: { ...plugin.selectedAdapter } }),\n\t\t}))\n\t\t.sort(compareResolvedPlugins);\n\tconst capabilityRefs = plugins\n\t\t.flatMap((plugin) => plugin.capabilityRefs)\n\t\t.sort(compareRefs)\n\t\t.filter(\n\t\t\t(ref, index, all) => index === 0 || all[index - 1]!.id !== ref.id || all[index - 1]!.version !== ref.version,\n\t\t);\n\tconst digestInput = { profileId: input.profileId, profileVersion: input.profileVersion, plugins, capabilityRefs };\n\treturn Object.freeze({\n\t\tprofileId: input.profileId,\n\t\tprofileVersion: input.profileVersion,\n\t\tplugins: Object.freeze(\n\t\t\tplugins.map((plugin) => Object.freeze({ ...plugin, capabilityRefs: Object.freeze(plugin.capabilityRefs) })),\n\t\t),\n\t\tcapabilityRefs: Object.freeze(capabilityRefs),\n\t\tmanifestDigest: stableJsonDigest(digestInput as unknown as Parameters<typeof stableJsonDigest>[0]),\n\t});\n}\n\n/** Resolve all plugins in a Profile; optional unavailable plugins do not block startup. */\nexport function resolvePluginProfileV1(input: {\n\treadonly profileId: string;\n\treadonly profileVersion: string;\n\treadonly plugins: readonly {\n\t\treadonly manifest: PluginManifestV1;\n\t\treadonly required?: boolean;\n\t\treadonly disabled?: boolean;\n\t}[];\n\treadonly host: HostFactsV1;\n\treadonly availableCapabilities?: readonly CapabilityRefV1[];\n\t/** Host's own version, forwarded to each plugin's min/maxHostVersion range check. */\n\treadonly hostVersion?: string;\n}): ProfileResolutionV1 {\n\tconst plugins = input.plugins\n\t\t.map((candidate) =>\n\t\t\tresolvePluginCompatibilityV1({\n\t\t\t\tmanifest: candidate.manifest,\n\t\t\t\thost: input.host,\n\t\t\t\trequired: candidate.required,\n\t\t\t\tdisabled: candidate.disabled,\n\t\t\t\tavailableCapabilities: input.availableCapabilities,\n\t\t\t\thostVersion: input.hostVersion,\n\t\t\t}),\n\t\t)\n\t\t.sort((left, right) =>\n\t\t\tleft.pluginId === right.pluginId\n\t\t\t\t? comparePluginVersionsV1(left.pluginVersion, right.pluginVersion)\n\t\t\t\t: left.pluginId.localeCompare(right.pluginId),\n\t\t);\n\tconst diagnostics = plugins.flatMap((plugin) => plugin.diagnostics);\n\tconst blocked = plugins.some((plugin) => plugin.required && plugin.status !== \"installed-ready\");\n\tconst resolvedPlugins = plugins.flatMap((plugin) => (plugin.resolved === undefined ? [] : [plugin.resolved]));\n\treturn Object.freeze({\n\t\tprofileId: input.profileId,\n\t\tprofileVersion: input.profileVersion,\n\t\tstatus: blocked ? \"blocked\" : \"ready\",\n\t\tplugins: Object.freeze(plugins),\n\t\tdiagnostics: Object.freeze(diagnostics),\n\t\tresolvedManifest: buildResolvedManifestV1({\n\t\t\tprofileId: input.profileId,\n\t\t\tprofileVersion: input.profileVersion,\n\t\t\tplugins: resolvedPlugins,\n\t\t}),\n\t});\n}\n"]}
|