@ai-agent-forge/agent-forge 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5969 -0
- package/README.md +629 -0
- package/dist/artifacts/artifact-store.d.ts +51 -0
- package/dist/artifacts/artifact-store.d.ts.map +1 -0
- package/dist/artifacts/artifact-store.js +87 -0
- package/dist/artifacts/artifact-store.js.map +1 -0
- package/dist/artifacts/paged-read.d.ts +51 -0
- package/dist/artifacts/paged-read.d.ts.map +1 -0
- package/dist/artifacts/paged-read.js +55 -0
- package/dist/artifacts/paged-read.js.map +1 -0
- package/dist/bun/cli.d.ts +3 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +11 -0
- package/dist/bun/cli.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -0
- package/dist/bun/register-bedrock.js +4 -0
- package/dist/bun/register-bedrock.js.map +1 -0
- package/dist/bun/restore-sandbox-env.d.ts +17 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +36 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/bundle/.build-manifest.json +3566 -0
- package/dist/bundle/chunks/anthropic-messages-RJYU4TCY.js +6 -0
- package/dist/bundle/chunks/anthropic.js +75 -0
- package/dist/bundle/chunks/azure-openai-responses-LESTCUL7.js +2 -0
- package/dist/bundle/chunks/bedrock-converse-stream.js +78 -0
- package/dist/bundle/chunks/chunk-3QKHSPQL.js +8 -0
- package/dist/bundle/chunks/chunk-4L3WN2XY.js +2 -0
- package/dist/bundle/chunks/chunk-4NKZMFSZ.js +1579 -0
- package/dist/bundle/chunks/chunk-6CYCI3EJ.js +12 -0
- package/dist/bundle/chunks/chunk-6R7UI4IY.js +2 -0
- package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
- package/dist/bundle/chunks/chunk-7ZY7IXZD.js +4 -0
- package/dist/bundle/chunks/chunk-DRQDKNXA.js +2 -0
- package/dist/bundle/chunks/chunk-DTD7JQ7Y.js +42 -0
- package/dist/bundle/chunks/chunk-EWXX34QG.js +2 -0
- package/dist/bundle/chunks/chunk-GMWCTUPB.js +2 -0
- package/dist/bundle/chunks/chunk-JUUC5AZY.js +2 -0
- package/dist/bundle/chunks/chunk-KQEGUM34.js +2 -0
- package/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
- package/dist/bundle/chunks/chunk-MDOTREMR.js +11 -0
- package/dist/bundle/chunks/chunk-NUHFSC37.js +25 -0
- package/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
- package/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
- package/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
- package/dist/bundle/chunks/chunk-SER2HCLE.js +38 -0
- package/dist/bundle/chunks/chunk-TEPMHNKQ.js +2 -0
- package/dist/bundle/chunks/chunk-V46XUTK3.js +2 -0
- package/dist/bundle/chunks/chunk-WGLBM2BP.js +2 -0
- package/dist/bundle/chunks/chunk-WW3LMV3F.js +2 -0
- package/dist/bundle/chunks/chunk-XDUWOHPL.js +6 -0
- package/dist/bundle/chunks/github-copilot.js +2 -0
- package/dist/bundle/chunks/google-generative-ai-NZ66X6K7.js +2 -0
- package/dist/bundle/chunks/google-vertex-2ZZOFBNQ.js +2 -0
- package/dist/bundle/chunks/https-proxy-agent-UDEHOBGS.js +13 -0
- package/dist/bundle/chunks/image-resize-worker.js +2 -0
- package/dist/bundle/chunks/kimi-coding.js +2 -0
- package/dist/bundle/chunks/lib-HGQMNYVT.js +9 -0
- package/dist/bundle/chunks/mistral-conversations-B6DZRMEK.js +5 -0
- package/dist/bundle/chunks/multipart-parser-SQ6GDJL7.js +3 -0
- package/dist/bundle/chunks/node-O3RIBJRH.js +16 -0
- package/dist/bundle/chunks/node-TWVVAGPO.js +2 -0
- package/dist/bundle/chunks/openai-codex-responses-UFH6O5K6.js +10 -0
- package/dist/bundle/chunks/openai-codex.js +75 -0
- package/dist/bundle/chunks/openai-completions-A55GHA4O.js +7 -0
- package/dist/bundle/chunks/openai-responses-TJLXRAXR.js +2 -0
- package/dist/bundle/chunks/openrouter-images-G3GT5BVT.js +2 -0
- package/dist/bundle/chunks/openrouter.js +75 -0
- package/dist/bundle/chunks/pi-messages-SLF355GF.js +8 -0
- package/dist/bundle/chunks/radius.js +75 -0
- package/dist/bundle/chunks/src-UK77SYZE.js +4 -0
- package/dist/bundle/chunks/xai.js +2 -0
- package/dist/bundle/cli.js +3 -0
- package/dist/bundle/client.js +2 -0
- package/dist/bundle/index.js +8 -0
- package/dist/bundle/rpc-entry.js +3 -0
- package/dist/capabilities/builtin.d.ts +46 -0
- package/dist/capabilities/builtin.d.ts.map +1 -0
- package/dist/capabilities/builtin.js +68 -0
- package/dist/capabilities/builtin.js.map +1 -0
- package/dist/cli/args.d.ts +102 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +712 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/auth-check.d.ts +19 -0
- package/dist/cli/auth-check.d.ts.map +1 -0
- package/dist/cli/auth-check.js +50 -0
- package/dist/cli/auth-check.js.map +1 -0
- package/dist/cli/auth-command.d.ts +24 -0
- package/dist/cli/auth-command.d.ts.map +1 -0
- package/dist/cli/auth-command.js +102 -0
- package/dist/cli/auth-command.js.map +1 -0
- package/dist/cli/config-selector.d.ts +23 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +51 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/credential-print.d.ts +13 -0
- package/dist/cli/credential-print.d.ts.map +1 -0
- package/dist/cli/credential-print.js +76 -0
- package/dist/cli/credential-print.js.map +1 -0
- package/dist/cli/experimental/auth.d.ts +16 -0
- package/dist/cli/experimental/auth.d.ts.map +1 -0
- package/dist/cli/experimental/auth.js +13 -0
- package/dist/cli/experimental/auth.js.map +1 -0
- package/dist/cli/experimental/cli.d.ts +6 -0
- package/dist/cli/experimental/cli.d.ts.map +1 -0
- package/dist/cli/experimental/cli.js +5 -0
- package/dist/cli/experimental/cli.js.map +1 -0
- package/dist/cli/experimental/command-options.d.ts +17 -0
- package/dist/cli/experimental/command-options.d.ts.map +1 -0
- package/dist/cli/experimental/command-options.js +35 -0
- package/dist/cli/experimental/command-options.js.map +1 -0
- package/dist/cli/experimental/command.d.ts +63 -0
- package/dist/cli/experimental/command.d.ts.map +1 -0
- package/dist/cli/experimental/command.js +130 -0
- package/dist/cli/experimental/command.js.map +1 -0
- package/dist/cli/experimental/commands/client.d.ts +13 -0
- package/dist/cli/experimental/commands/client.d.ts.map +1 -0
- package/dist/cli/experimental/commands/client.js +25 -0
- package/dist/cli/experimental/commands/client.js.map +1 -0
- package/dist/cli/experimental/commands/pi.d.ts +15 -0
- package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
- package/dist/cli/experimental/commands/pi.js +26 -0
- package/dist/cli/experimental/commands/pi.js.map +1 -0
- package/dist/cli/experimental/commands/server.d.ts +13 -0
- package/dist/cli/experimental/commands/server.d.ts.map +1 -0
- package/dist/cli/experimental/commands/server.js +25 -0
- package/dist/cli/experimental/commands/server.js.map +1 -0
- package/dist/cli/experimental/transport-address.d.ts +10 -0
- package/dist/cli/experimental/transport-address.d.ts.map +1 -0
- package/dist/cli/experimental/transport-address.js +38 -0
- package/dist/cli/experimental/transport-address.js.map +1 -0
- package/dist/cli/file-processor.d.ts +15 -0
- package/dist/cli/file-processor.d.ts.map +1 -0
- package/dist/cli/file-processor.js +71 -0
- package/dist/cli/file-processor.js.map +1 -0
- package/dist/cli/initial-message.d.ts +18 -0
- package/dist/cli/initial-message.d.ts.map +1 -0
- package/dist/cli/initial-message.js +22 -0
- package/dist/cli/initial-message.js.map +1 -0
- package/dist/cli/list-models.d.ts +9 -0
- package/dist/cli/list-models.d.ts.map +1 -0
- package/dist/cli/list-models.js +98 -0
- package/dist/cli/list-models.js.map +1 -0
- package/dist/cli/plugin-command.d.ts +50 -0
- package/dist/cli/plugin-command.d.ts.map +1 -0
- package/dist/cli/plugin-command.js +85 -0
- package/dist/cli/plugin-command.js.map +1 -0
- package/dist/cli/plugin-manager-controller.d.ts +59 -0
- package/dist/cli/plugin-manager-controller.d.ts.map +1 -0
- package/dist/cli/plugin-manager-controller.js +183 -0
- package/dist/cli/plugin-manager-controller.js.map +1 -0
- package/dist/cli/plugin-selection-controller.d.ts +57 -0
- package/dist/cli/plugin-selection-controller.d.ts.map +1 -0
- package/dist/cli/plugin-selection-controller.js +159 -0
- package/dist/cli/plugin-selection-controller.js.map +1 -0
- package/dist/cli/serve.d.ts +39 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +124 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/session-picker.d.ts +30 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +62 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli/startup-ui.d.ts +20 -0
- package/dist/cli/startup-ui.d.ts.map +1 -0
- package/dist/cli/startup-ui.js +185 -0
- package/dist/cli/startup-ui.js.map +1 -0
- package/dist/cli/trace-view.d.ts +86 -0
- package/dist/cli/trace-view.d.ts.map +1 -0
- package/dist/cli/trace-view.js +263 -0
- package/dist/cli/trace-view.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +19 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/remote-session.d.ts +53 -0
- package/dist/client/remote-session.d.ts.map +1 -0
- package/dist/client/remote-session.js +340 -0
- package/dist/client/remote-session.js.map +1 -0
- package/dist/client/transcript.d.ts +12 -0
- package/dist/client/transcript.d.ts.map +1 -0
- package/dist/client/transcript.js +98 -0
- package/dist/client/transcript.js.map +1 -0
- package/dist/config.d.ts +95 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +459 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-capability-contract.d.ts +322 -0
- package/dist/core/agent-capability-contract.d.ts.map +1 -0
- package/dist/core/agent-capability-contract.js +1154 -0
- package/dist/core/agent-capability-contract.js.map +1 -0
- package/dist/core/agent-session-bash.d.ts +51 -0
- package/dist/core/agent-session-bash.d.ts.map +1 -0
- package/dist/core/agent-session-bash.js +138 -0
- package/dist/core/agent-session-bash.js.map +1 -0
- package/dist/core/agent-session-compaction.d.ts +188 -0
- package/dist/core/agent-session-compaction.d.ts.map +1 -0
- package/dist/core/agent-session-compaction.js +1071 -0
- package/dist/core/agent-session-compaction.js.map +1 -0
- package/dist/core/agent-session-context.d.ts +43 -0
- package/dist/core/agent-session-context.d.ts.map +1 -0
- package/dist/core/agent-session-context.js +170 -0
- package/dist/core/agent-session-context.js.map +1 -0
- package/dist/core/agent-session-extensions.d.ts +30 -0
- package/dist/core/agent-session-extensions.d.ts.map +1 -0
- package/dist/core/agent-session-extensions.js +74 -0
- package/dist/core/agent-session-extensions.js.map +1 -0
- package/dist/core/agent-session-internal.d.ts +290 -0
- package/dist/core/agent-session-internal.d.ts.map +1 -0
- package/dist/core/agent-session-internal.js +40 -0
- package/dist/core/agent-session-internal.js.map +1 -0
- package/dist/core/agent-session-lifecycle.d.ts +242 -0
- package/dist/core/agent-session-lifecycle.d.ts.map +1 -0
- package/dist/core/agent-session-lifecycle.js +699 -0
- package/dist/core/agent-session-lifecycle.js.map +1 -0
- package/dist/core/agent-session-loop-runner.d.ts +52 -0
- package/dist/core/agent-session-loop-runner.d.ts.map +1 -0
- package/dist/core/agent-session-loop-runner.js +168 -0
- package/dist/core/agent-session-loop-runner.js.map +1 -0
- package/dist/core/agent-session-loop.d.ts +39 -0
- package/dist/core/agent-session-loop.d.ts.map +1 -0
- package/dist/core/agent-session-loop.js +155 -0
- package/dist/core/agent-session-loop.js.map +1 -0
- package/dist/core/agent-session-model.d.ts +49 -0
- package/dist/core/agent-session-model.d.ts.map +1 -0
- package/dist/core/agent-session-model.js +155 -0
- package/dist/core/agent-session-model.js.map +1 -0
- package/dist/core/agent-session-paths.d.ts +3 -0
- package/dist/core/agent-session-paths.d.ts.map +1 -0
- package/dist/core/agent-session-paths.js +14 -0
- package/dist/core/agent-session-paths.js.map +1 -0
- package/dist/core/agent-session-projection.d.ts +53 -0
- package/dist/core/agent-session-projection.d.ts.map +1 -0
- package/dist/core/agent-session-projection.js +195 -0
- package/dist/core/agent-session-projection.js.map +1 -0
- package/dist/core/agent-session-retry.d.ts +28 -0
- package/dist/core/agent-session-retry.d.ts.map +1 -0
- package/dist/core/agent-session-retry.js +141 -0
- package/dist/core/agent-session-retry.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +181 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +297 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +281 -0
- package/dist/core/agent-session-services.d.ts.map +1 -0
- package/dist/core/agent-session-services.js +680 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session-store.d.ts +47 -0
- package/dist/core/agent-session-store.d.ts.map +1 -0
- package/dist/core/agent-session-store.js +155 -0
- package/dist/core/agent-session-store.js.map +1 -0
- package/dist/core/agent-session-tools.d.ts +36 -0
- package/dist/core/agent-session-tools.d.ts.map +1 -0
- package/dist/core/agent-session-tools.js +305 -0
- package/dist/core/agent-session-tools.js.map +1 -0
- package/dist/core/agent-session.d.ts +1156 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +2550 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/auth-guidance.d.ts +5 -0
- package/dist/core/auth-guidance.d.ts.map +1 -0
- package/dist/core/auth-guidance.js +21 -0
- package/dist/core/auth-guidance.js.map +1 -0
- package/dist/core/auth-storage.d.ts +72 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +426 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +32 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +111 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/cache-stats.d.ts +49 -0
- package/dist/core/cache-stats.d.ts.map +1 -0
- package/dist/core/cache-stats.js +101 -0
- package/dist/core/cache-stats.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +88 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +220 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +178 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -0
- package/dist/core/compaction/compaction.js +608 -0
- package/dist/core/compaction/compaction.js.map +1 -0
- package/dist/core/compaction/index.d.ts +7 -0
- package/dist/core/compaction/index.d.ts.map +1 -0
- package/dist/core/compaction/index.js +7 -0
- package/dist/core/compaction/index.js.map +1 -0
- package/dist/core/compaction/utils.d.ts +49 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +170 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +4 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +11 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +15 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +2 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/embedded-sdk.d.ts +96 -0
- package/dist/core/embedded-sdk.d.ts.map +1 -0
- package/dist/core/embedded-sdk.js +395 -0
- package/dist/core/embedded-sdk.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/exec.d.ts +29 -0
- package/dist/core/exec.d.ts.map +1 -0
- package/dist/core/exec.js +75 -0
- package/dist/core/exec.js.map +1 -0
- package/dist/core/experimental.d.ts +2 -0
- package/dist/core/experimental.d.ts.map +1 -0
- package/dist/core/experimental.js +6 -0
- package/dist/core/experimental.js.map +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
- package/dist/core/export-html/ansi-to-html.js +249 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -0
- package/dist/core/export-html/index.d.ts +37 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +226 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/template.css +1066 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1864 -0
- package/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +108 -0
- package/dist/core/export-html/tool-renderer.js.map +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +1213 -0
- package/dist/core/export-html/vendor/marked.min.js +78 -0
- package/dist/core/extensions/agent-composition.d.ts +67 -0
- package/dist/core/extensions/agent-composition.d.ts.map +1 -0
- package/dist/core/extensions/agent-composition.js +785 -0
- package/dist/core/extensions/agent-composition.js.map +1 -0
- package/dist/core/extensions/bootstrap-agent-loop.d.ts +203 -0
- package/dist/core/extensions/bootstrap-agent-loop.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-agent-loop.js +565 -0
- package/dist/core/extensions/bootstrap-agent-loop.js.map +1 -0
- package/dist/core/extensions/bootstrap-branch-summary-policy.d.ts +7 -0
- package/dist/core/extensions/bootstrap-branch-summary-policy.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-branch-summary-policy.js +28 -0
- package/dist/core/extensions/bootstrap-branch-summary-policy.js.map +1 -0
- package/dist/core/extensions/bootstrap-compaction-policy.d.ts +7 -0
- package/dist/core/extensions/bootstrap-compaction-policy.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-compaction-policy.js +81 -0
- package/dist/core/extensions/bootstrap-compaction-policy.js.map +1 -0
- package/dist/core/extensions/bootstrap-lifecycle.d.ts +26 -0
- package/dist/core/extensions/bootstrap-lifecycle.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-lifecycle.js +181 -0
- package/dist/core/extensions/bootstrap-lifecycle.js.map +1 -0
- package/dist/core/extensions/bootstrap-overflow-policy.d.ts +7 -0
- package/dist/core/extensions/bootstrap-overflow-policy.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-overflow-policy.js +29 -0
- package/dist/core/extensions/bootstrap-overflow-policy.js.map +1 -0
- package/dist/core/extensions/bootstrap-retry-policy.d.ts +7 -0
- package/dist/core/extensions/bootstrap-retry-policy.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-retry-policy.js +28 -0
- package/dist/core/extensions/bootstrap-retry-policy.js.map +1 -0
- package/dist/core/extensions/bootstrap-skills.d.ts +16 -0
- package/dist/core/extensions/bootstrap-skills.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-skills.js +119 -0
- package/dist/core/extensions/bootstrap-skills.js.map +1 -0
- package/dist/core/extensions/bootstrap-tools.d.ts +20 -0
- package/dist/core/extensions/bootstrap-tools.d.ts.map +1 -0
- package/dist/core/extensions/bootstrap-tools.js +35 -0
- package/dist/core/extensions/bootstrap-tools.js.map +1 -0
- package/dist/core/extensions/capability-exports.d.ts +5 -0
- package/dist/core/extensions/capability-exports.d.ts.map +1 -0
- package/dist/core/extensions/capability-exports.js +4 -0
- package/dist/core/extensions/capability-exports.js.map +1 -0
- package/dist/core/extensions/capability-plugin.d.ts +69 -0
- package/dist/core/extensions/capability-plugin.d.ts.map +1 -0
- package/dist/core/extensions/capability-plugin.js +485 -0
- package/dist/core/extensions/capability-plugin.js.map +1 -0
- package/dist/core/extensions/capability-runtime-events.d.ts +22 -0
- package/dist/core/extensions/capability-runtime-events.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-events.js +381 -0
- package/dist/core/extensions/capability-runtime-events.js.map +1 -0
- package/dist/core/extensions/capability-runtime-guards.d.ts +93 -0
- package/dist/core/extensions/capability-runtime-guards.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-guards.js +800 -0
- package/dist/core/extensions/capability-runtime-guards.js.map +1 -0
- package/dist/core/extensions/capability-runtime-inspect.d.ts +12 -0
- package/dist/core/extensions/capability-runtime-inspect.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-inspect.js +106 -0
- package/dist/core/extensions/capability-runtime-inspect.js.map +1 -0
- package/dist/core/extensions/capability-runtime-manifest.d.ts +19 -0
- package/dist/core/extensions/capability-runtime-manifest.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-manifest.js +218 -0
- package/dist/core/extensions/capability-runtime-manifest.js.map +1 -0
- package/dist/core/extensions/capability-runtime-operation.d.ts +26 -0
- package/dist/core/extensions/capability-runtime-operation.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-operation.js +88 -0
- package/dist/core/extensions/capability-runtime-operation.js.map +1 -0
- package/dist/core/extensions/capability-runtime-snapshot.d.ts +11 -0
- package/dist/core/extensions/capability-runtime-snapshot.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-snapshot.js +81 -0
- package/dist/core/extensions/capability-runtime-snapshot.js.map +1 -0
- package/dist/core/extensions/capability-runtime-store.d.ts +34 -0
- package/dist/core/extensions/capability-runtime-store.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-store.js +153 -0
- package/dist/core/extensions/capability-runtime-store.js.map +1 -0
- package/dist/core/extensions/capability-runtime-tool.d.ts +10 -0
- package/dist/core/extensions/capability-runtime-tool.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-tool.js +10 -0
- package/dist/core/extensions/capability-runtime-tool.js.map +1 -0
- package/dist/core/extensions/capability-runtime-types.d.ts +303 -0
- package/dist/core/extensions/capability-runtime-types.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-types.js +2 -0
- package/dist/core/extensions/capability-runtime-types.js.map +1 -0
- package/dist/core/extensions/capability-runtime-validation.d.ts +35 -0
- package/dist/core/extensions/capability-runtime-validation.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime-validation.js +380 -0
- package/dist/core/extensions/capability-runtime-validation.js.map +1 -0
- package/dist/core/extensions/capability-runtime.d.ts +7 -0
- package/dist/core/extensions/capability-runtime.d.ts.map +1 -0
- package/dist/core/extensions/capability-runtime.js +2170 -0
- package/dist/core/extensions/capability-runtime.js.map +1 -0
- package/dist/core/extensions/compaction-memory-failure-mode.d.ts +43 -0
- package/dist/core/extensions/compaction-memory-failure-mode.d.ts.map +1 -0
- package/dist/core/extensions/compaction-memory-failure-mode.js +31 -0
- package/dist/core/extensions/compaction-memory-failure-mode.js.map +1 -0
- package/dist/core/extensions/context-strategy-binding.d.ts +12 -0
- package/dist/core/extensions/context-strategy-binding.d.ts.map +1 -0
- package/dist/core/extensions/context-strategy-binding.js +54 -0
- package/dist/core/extensions/context-strategy-binding.js.map +1 -0
- package/dist/core/extensions/index.d.ts +19 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/index.js +18 -0
- package/dist/core/extensions/index.js.map +1 -0
- package/dist/core/extensions/lifecycle-catalog.d.ts +584 -0
- package/dist/core/extensions/lifecycle-catalog.d.ts.map +1 -0
- package/dist/core/extensions/lifecycle-catalog.js +1903 -0
- package/dist/core/extensions/lifecycle-catalog.js.map +1 -0
- package/dist/core/extensions/lifecycle-delivery-queue.d.ts +48 -0
- package/dist/core/extensions/lifecycle-delivery-queue.d.ts.map +1 -0
- package/dist/core/extensions/lifecycle-delivery-queue.js +164 -0
- package/dist/core/extensions/lifecycle-delivery-queue.js.map +1 -0
- package/dist/core/extensions/microcompact.d.ts +71 -0
- package/dist/core/extensions/microcompact.d.ts.map +1 -0
- package/dist/core/extensions/microcompact.js +123 -0
- package/dist/core/extensions/microcompact.js.map +1 -0
- package/dist/core/extensions/public-api.d.ts +10 -0
- package/dist/core/extensions/public-api.d.ts.map +1 -0
- package/dist/core/extensions/public-api.js +9 -0
- package/dist/core/extensions/public-api.js.map +1 -0
- package/dist/core/facade/coding-agent-facade.d.ts +338 -0
- package/dist/core/facade/coding-agent-facade.d.ts.map +1 -0
- package/dist/core/facade/coding-agent-facade.js +115 -0
- package/dist/core/facade/coding-agent-facade.js.map +1 -0
- package/dist/core/facade/coding-agent-runtime-facade.d.ts +115 -0
- package/dist/core/facade/coding-agent-runtime-facade.d.ts.map +1 -0
- package/dist/core/facade/coding-agent-runtime-facade.js +63 -0
- package/dist/core/facade/coding-agent-runtime-facade.js.map +1 -0
- package/dist/core/facade/index.d.ts +6 -0
- package/dist/core/facade/index.d.ts.map +1 -0
- package/dist/core/facade/index.js +3 -0
- package/dist/core/facade/index.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +57 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +323 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/http-dispatcher.d.ts +22 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -0
- package/dist/core/http-dispatcher.js +98 -0
- package/dist/core/http-dispatcher.js.map +1 -0
- package/dist/core/index.d.ts +19 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/input-source.d.ts +9 -0
- package/dist/core/input-source.d.ts.map +1 -0
- package/dist/core/input-source.js +2 -0
- package/dist/core/input-source.js.map +1 -0
- package/dist/core/keybindings.d.ts +442 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +329 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/logger.d.ts +107 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +246 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/messages.d.ts +85 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +146 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-config.d.ts +586 -0
- package/dist/core/model-config.d.ts.map +1 -0
- package/dist/core/model-config.js +258 -0
- package/dist/core/model-config.js.map +1 -0
- package/dist/core/model-registry.d.ts +49 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +115 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +124 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +590 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/model-runtime.d.ts +100 -0
- package/dist/core/model-runtime.d.ts.map +1 -0
- package/dist/core/model-runtime.js +598 -0
- package/dist/core/model-runtime.js.map +1 -0
- package/dist/core/models-store.d.ts +22 -0
- package/dist/core/models-store.d.ts.map +1 -0
- package/dist/core/models-store.js +115 -0
- package/dist/core/models-store.js.map +1 -0
- package/dist/core/output-guard.d.ts +7 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +90 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-install-host.d.ts +23 -0
- package/dist/core/package-install-host.d.ts.map +1 -0
- package/dist/core/package-install-host.js +202 -0
- package/dist/core/package-install-host.js.map +1 -0
- package/dist/core/package-manager.d.ts +93 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +947 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/package-process-runner.d.ts +4 -0
- package/dist/core/package-process-runner.d.ts.map +1 -0
- package/dist/core/package-process-runner.js +47 -0
- package/dist/core/package-process-runner.js.map +1 -0
- package/dist/core/package-resource-collection.d.ts +16 -0
- package/dist/core/package-resource-collection.d.ts.map +1 -0
- package/dist/core/package-resource-collection.js +300 -0
- package/dist/core/package-resource-collection.js.map +1 -0
- package/dist/core/package-resource-discovery.d.ts +33 -0
- package/dist/core/package-resource-discovery.d.ts.map +1 -0
- package/dist/core/package-resource-discovery.js +449 -0
- package/dist/core/package-resource-discovery.js.map +1 -0
- package/dist/core/package-source.d.ts +157 -0
- package/dist/core/package-source.d.ts.map +1 -0
- package/dist/core/package-source.js +179 -0
- package/dist/core/package-source.js.map +1 -0
- package/dist/core/pi-manifest.d.ts +7 -0
- package/dist/core/pi-manifest.d.ts.map +1 -0
- package/dist/core/pi-manifest.js +26 -0
- package/dist/core/pi-manifest.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +54 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +236 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/provider-composer.d.ts +58 -0
- package/dist/core/provider-composer.d.ts.map +1 -0
- package/dist/core/provider-composer.js +403 -0
- package/dist/core/provider-composer.js.map +1 -0
- package/dist/core/radius.d.ts +2 -0
- package/dist/core/radius.d.ts.map +1 -0
- package/dist/core/radius.js +2 -0
- package/dist/core/radius.js.map +1 -0
- package/dist/core/remote-catalog-provider.d.ts +5 -0
- package/dist/core/remote-catalog-provider.d.ts.map +1 -0
- package/dist/core/remote-catalog-provider.js +121 -0
- package/dist/core/remote-catalog-provider.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +30 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +247 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +211 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +687 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/runtime-credentials.d.ts +15 -0
- package/dist/core/runtime-credentials.d.ts.map +1 -0
- package/dist/core/runtime-credentials.js +39 -0
- package/dist/core/runtime-credentials.js.map +1 -0
- package/dist/core/sdk.d.ts +395 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +1112 -0
- package/dist/core/sdk.js.map +1 -0
- package/dist/core/session-cwd.d.ts +19 -0
- package/dist/core/session-cwd.d.ts.map +1 -0
- package/dist/core/session-cwd.js +38 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/session-export.d.ts +7 -0
- package/dist/core/session-export.d.ts.map +1 -0
- package/dist/core/session-export.js +48 -0
- package/dist/core/session-export.js.map +1 -0
- package/dist/core/session-manager.d.ts +463 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1583 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/session-start.d.ts +12 -0
- package/dist/core/session-start.d.ts.map +1 -0
- package/dist/core/session-start.js +2 -0
- package/dist/core/session-start.js.map +1 -0
- package/dist/core/session-storage.d.ts +130 -0
- package/dist/core/session-storage.d.ts.map +1 -0
- package/dist/core/session-storage.js +386 -0
- package/dist/core/session-storage.js.map +1 -0
- package/dist/core/settings-diagnostics.d.ts +9 -0
- package/dist/core/settings-diagnostics.d.ts.map +1 -0
- package/dist/core/settings-diagnostics.js +21 -0
- package/dist/core/settings-diagnostics.js.map +1 -0
- package/dist/core/settings-manager.d.ts +352 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +987 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +382 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +15 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +33 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/source-info.d.ts +18 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +19 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts +8 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +137 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/timings.d.ts +11 -0
- package/dist/core/timings.d.ts.map +1 -0
- package/dist/core/timings.js +46 -0
- package/dist/core/timings.js.map +1 -0
- package/dist/core/tools/bash.d.ts +87 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +409 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +110 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +425 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +55 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +305 -0
- package/dist/core/tools/edit.js.map +1 -0
- package/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/core/tools/file-mutation-queue.js +52 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +42 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +303 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +41 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +309 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +44 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +129 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +41 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +173 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +52 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +184 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +10 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +99 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/powershell.d.ts +16 -0
- package/dist/core/tools/powershell.d.ts.map +1 -0
- package/dist/core/tools/powershell.js +39 -0
- package/dist/core/tools/powershell.js.map +1 -0
- package/dist/core/tools/read.d.ts +39 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +282 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +24 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +65 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +15 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +36 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/tool-definition.d.ts +123 -0
- package/dist/core/tools/tool-definition.d.ts.map +1 -0
- package/dist/core/tools/tool-definition.js +20 -0
- package/dist/core/tools/tool-definition.js.map +1 -0
- package/dist/core/tools/tool-search.d.ts +30 -0
- package/dist/core/tools/tool-search.d.ts.map +1 -0
- package/dist/core/tools/tool-search.js +99 -0
- package/dist/core/tools/tool-search.js.map +1 -0
- package/dist/core/tools/truncate.d.ts +70 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +215 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/write.d.ts +30 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +202 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/core/trace-retention.d.ts +19 -0
- package/dist/core/trace-retention.d.ts.map +1 -0
- package/dist/core/trace-retention.js +91 -0
- package/dist/core/trace-retention.js.map +1 -0
- package/dist/core/usage-totals.d.ts +21 -0
- package/dist/core/usage-totals.d.ts.map +1 -0
- package/dist/core/usage-totals.js +53 -0
- package/dist/core/usage-totals.js.map +1 -0
- package/dist/durable/durable-service.d.ts +136 -0
- package/dist/durable/durable-service.d.ts.map +1 -0
- package/dist/durable/durable-service.js +710 -0
- package/dist/durable/durable-service.js.map +1 -0
- package/dist/e2e/stdio-launcher.d.ts +25 -0
- package/dist/e2e/stdio-launcher.d.ts.map +1 -0
- package/dist/e2e/stdio-launcher.js +244 -0
- package/dist/e2e/stdio-launcher.js.map +1 -0
- package/dist/host/agent-retry-scheduler.d.ts +65 -0
- package/dist/host/agent-retry-scheduler.d.ts.map +1 -0
- package/dist/host/agent-retry-scheduler.js +52 -0
- package/dist/host/agent-retry-scheduler.js.map +1 -0
- package/dist/host/auto-compaction.d.ts +56 -0
- package/dist/host/auto-compaction.d.ts.map +1 -0
- package/dist/host/auto-compaction.js +62 -0
- package/dist/host/auto-compaction.js.map +1 -0
- package/dist/host/branch-reload.d.ts +56 -0
- package/dist/host/branch-reload.d.ts.map +1 -0
- package/dist/host/branch-reload.js +39 -0
- package/dist/host/branch-reload.js.map +1 -0
- package/dist/host/channel-adapter.d.ts +25 -0
- package/dist/host/channel-adapter.d.ts.map +1 -0
- package/dist/host/channel-adapter.js +45 -0
- package/dist/host/channel-adapter.js.map +1 -0
- package/dist/host/checkpoint-commit.d.ts +74 -0
- package/dist/host/checkpoint-commit.d.ts.map +1 -0
- package/dist/host/checkpoint-commit.js +76 -0
- package/dist/host/checkpoint-commit.js.map +1 -0
- package/dist/host/manual-compaction.d.ts +43 -0
- package/dist/host/manual-compaction.d.ts.map +1 -0
- package/dist/host/manual-compaction.js +63 -0
- package/dist/host/manual-compaction.js.map +1 -0
- package/dist/host/output-projection.d.ts +61 -0
- package/dist/host/output-projection.d.ts.map +1 -0
- package/dist/host/output-projection.js +74 -0
- package/dist/host/output-projection.js.map +1 -0
- package/dist/host/output-reducer.d.ts +43 -0
- package/dist/host/output-reducer.d.ts.map +1 -0
- package/dist/host/output-reducer.js +77 -0
- package/dist/host/output-reducer.js.map +1 -0
- package/dist/host/output-serializer.d.ts +31 -0
- package/dist/host/output-serializer.d.ts.map +1 -0
- package/dist/host/output-serializer.js +120 -0
- package/dist/host/output-serializer.js.map +1 -0
- package/dist/host/overflow-recovery.d.ts +55 -0
- package/dist/host/overflow-recovery.d.ts.map +1 -0
- package/dist/host/overflow-recovery.js +89 -0
- package/dist/host/overflow-recovery.js.map +1 -0
- package/dist/host/retry-common.d.ts +29 -0
- package/dist/host/retry-common.d.ts.map +1 -0
- package/dist/host/retry-common.js +12 -0
- package/dist/host/retry-common.js.map +1 -0
- package/dist/host/session-event-translation.d.ts +26 -0
- package/dist/host/session-event-translation.d.ts.map +1 -0
- package/dist/host/session-event-translation.js +61 -0
- package/dist/host/session-event-translation.js.map +1 -0
- package/dist/host/summary-retry.d.ts +54 -0
- package/dist/host/summary-retry.d.ts.map +1 -0
- package/dist/host/summary-retry.js +66 -0
- package/dist/host/summary-retry.js.map +1 -0
- package/dist/index.d.ts +105 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +176 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +36 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +1630 -0
- package/dist/main.js.map +1 -0
- package/dist/migration/migration-tool.d.ts +56 -0
- package/dist/migration/migration-tool.d.ts.map +1 -0
- package/dist/migration/migration-tool.js +72 -0
- package/dist/migration/migration-tool.js.map +1 -0
- package/dist/migrations.d.ts +33 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +272 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/index.d.ts +10 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +8 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/interactive/assets/clankolas.png +0 -0
- package/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +336 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +25 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +151 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +176 -0
- package/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.js +56 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.js +44 -0
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +113 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +857 -0
- package/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.js +33 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +19 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +71 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-entry.js +52 -0
- package/dist/modes/interactive/components/custom-entry.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +22 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +87 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
- package/dist/modes/interactive/components/daxnuts.js +141 -0
- package/dist/modes/interactive/components/daxnuts.js.map +1 -0
- package/dist/modes/interactive/components/dialog-editor.d.ts +21 -0
- package/dist/modes/interactive/components/dialog-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/dialog-editor.js +98 -0
- package/dist/modes/interactive/components/dialog-editor.js.map +1 -0
- package/dist/modes/interactive/components/dialog-input.d.ts +23 -0
- package/dist/modes/interactive/components/dialog-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/dialog-input.js +61 -0
- package/dist/modes/interactive/components/dialog-input.js.map +1 -0
- package/dist/modes/interactive/components/dialog-selector.d.ts +26 -0
- package/dist/modes/interactive/components/dialog-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/dialog-selector.js +83 -0
- package/dist/modes/interactive/components/dialog-selector.js.map +1 -0
- package/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/dist/modes/interactive/components/diff.js +133 -0
- package/dist/modes/interactive/components/diff.js.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.js +21 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.js +103 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +33 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +248 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +34 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +35 -0
- package/dist/modes/interactive/components/index.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +36 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +52 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +188 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.js +19 -0
- package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
- package/dist/modes/interactive/components/mermaid.d.ts +11 -0
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
- package/dist/modes/interactive/components/mermaid.js +75 -0
- package/dist/modes/interactive/components/mermaid.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +67 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +381 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +165 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/plugin-manager-entry.d.ts +62 -0
- package/dist/modes/interactive/components/plugin-manager-entry.d.ts.map +1 -0
- package/dist/modes/interactive/components/plugin-manager-entry.js +294 -0
- package/dist/modes/interactive/components/plugin-manager-entry.js.map +1 -0
- package/dist/modes/interactive/components/plugin-selection-entry.d.ts +82 -0
- package/dist/modes/interactive/components/plugin-selection-entry.d.ts.map +1 -0
- package/dist/modes/interactive/components/plugin-selection-entry.js +228 -0
- package/dist/modes/interactive/components/plugin-selection-entry.js.map +1 -0
- package/dist/modes/interactive/components/render-types.d.ts +26 -0
- package/dist/modes/interactive/components/render-types.d.ts.map +1 -0
- package/dist/modes/interactive/components/render-types.js +7 -0
- package/dist/modes/interactive/components/render-types.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +46 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +328 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +158 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +143 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +1053 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +88 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +677 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.js +165 -0
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.js +39 -0
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/dist/modes/interactive/components/status-indicator.d.ts +34 -0
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
- package/dist/modes/interactive/components/status-indicator.js +60 -0
- package/dist/modes/interactive/components/status-indicator.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/theme-selector.js +50 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +23 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.js +109 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +59 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +335 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-list.d.ts +67 -0
- package/dist/modes/interactive/components/tree-list.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-list.js +710 -0
- package/dist/modes/interactive/components/tree-list.js.map +1 -0
- package/dist/modes/interactive/components/tree-render.d.ts +17 -0
- package/dist/modes/interactive/components/tree-render.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-render.js +316 -0
- package/dist/modes/interactive/components/tree-render.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +25 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +235 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/dist/modes/interactive/components/tree-types.d.ts +35 -0
- package/dist/modes/interactive/components/tree-types.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-types.js +2 -0
- package/dist/modes/interactive/components/tree-types.js.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.js +114 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +16 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +49 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.js +33 -0
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
- package/dist/modes/interactive/external-editor.d.ts +12 -0
- package/dist/modes/interactive/external-editor.d.ts.map +1 -0
- package/dist/modes/interactive/external-editor.js +38 -0
- package/dist/modes/interactive/external-editor.js.map +1 -0
- package/dist/modes/interactive/interactive-auth.d.ts +90 -0
- package/dist/modes/interactive/interactive-auth.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-auth.js +492 -0
- package/dist/modes/interactive/interactive-auth.js.map +1 -0
- package/dist/modes/interactive/interactive-commands.d.ts +68 -0
- package/dist/modes/interactive/interactive-commands.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-commands.js +157 -0
- package/dist/modes/interactive/interactive-commands.js.map +1 -0
- package/dist/modes/interactive/interactive-dialog-ui.d.ts +73 -0
- package/dist/modes/interactive/interactive-dialog-ui.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-dialog-ui.js +189 -0
- package/dist/modes/interactive/interactive-dialog-ui.js.map +1 -0
- package/dist/modes/interactive/interactive-format.d.ts +65 -0
- package/dist/modes/interactive/interactive-format.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-format.js +268 -0
- package/dist/modes/interactive/interactive-format.js.map +1 -0
- package/dist/modes/interactive/interactive-helpers.d.ts +25 -0
- package/dist/modes/interactive/interactive-helpers.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-helpers.js +73 -0
- package/dist/modes/interactive/interactive-helpers.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +640 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +4107 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/interactive-selectors.d.ts +95 -0
- package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-selectors.js +356 -0
- package/dist/modes/interactive/interactive-selectors.js.map +1 -0
- package/dist/modes/interactive/model-catalog-refresh.d.ts +11 -0
- package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
- package/dist/modes/interactive/model-catalog-refresh.js +35 -0
- package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
- package/dist/modes/interactive/model-search.d.ts +12 -0
- package/dist/modes/interactive/model-search.d.ts.map +1 -0
- package/dist/modes/interactive/model-search.js +15 -0
- package/dist/modes/interactive/model-search.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +90 -0
- package/dist/modes/interactive/theme/light.json +89 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts +40 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-controller.js +126 -0
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
- package/dist/modes/interactive/theme/theme-schema.json +352 -0
- package/dist/modes/interactive/theme/theme.d.ts +122 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +1093 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/json-event.d.ts +34 -0
- package/dist/modes/json-event.d.ts.map +1 -0
- package/dist/modes/json-event.js +29 -0
- package/dist/modes/json-event.js.map +1 -0
- package/dist/modes/print-mode.d.ts +32 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +205 -0
- package/dist/modes/print-mode.js.map +1 -0
- package/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/modes/rpc/jsonl.d.ts.map +1 -0
- package/dist/modes/rpc/jsonl.js +49 -0
- package/dist/modes/rpc/jsonl.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +254 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +496 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts +53 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-mode.js +540 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +486 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-types.js +8 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -0
- package/dist/package-manager-cli.d.ts +18 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +944 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/plugins/ecosystem/active-bindings.d.ts +92 -0
- package/dist/plugins/ecosystem/active-bindings.d.ts.map +1 -0
- package/dist/plugins/ecosystem/active-bindings.js +198 -0
- package/dist/plugins/ecosystem/active-bindings.js.map +1 -0
- package/dist/plugins/ecosystem/bootstrap-factory-manifest.d.ts +32 -0
- package/dist/plugins/ecosystem/bootstrap-factory-manifest.d.ts.map +1 -0
- package/dist/plugins/ecosystem/bootstrap-factory-manifest.js +32 -0
- package/dist/plugins/ecosystem/bootstrap-factory-manifest.js.map +1 -0
- package/dist/plugins/ecosystem/catalog.d.ts +38 -0
- package/dist/plugins/ecosystem/catalog.d.ts.map +1 -0
- package/dist/plugins/ecosystem/catalog.js +90 -0
- package/dist/plugins/ecosystem/catalog.js.map +1 -0
- package/dist/plugins/ecosystem/cli.d.ts +102 -0
- package/dist/plugins/ecosystem/cli.d.ts.map +1 -0
- package/dist/plugins/ecosystem/cli.js +970 -0
- package/dist/plugins/ecosystem/cli.js.map +1 -0
- package/dist/plugins/ecosystem/default-active-bindings.d.ts +33 -0
- package/dist/plugins/ecosystem/default-active-bindings.d.ts.map +1 -0
- package/dist/plugins/ecosystem/default-active-bindings.js +105 -0
- package/dist/plugins/ecosystem/default-active-bindings.js.map +1 -0
- package/dist/plugins/ecosystem/default-plugin-market.d.ts +68 -0
- package/dist/plugins/ecosystem/default-plugin-market.d.ts.map +1 -0
- package/dist/plugins/ecosystem/default-plugin-market.js +146 -0
- package/dist/plugins/ecosystem/default-plugin-market.js.map +1 -0
- package/dist/plugins/ecosystem/distribution.d.ts +113 -0
- package/dist/plugins/ecosystem/distribution.d.ts.map +1 -0
- package/dist/plugins/ecosystem/distribution.js +371 -0
- package/dist/plugins/ecosystem/distribution.js.map +1 -0
- package/dist/plugins/ecosystem/index.d.ts +56 -0
- package/dist/plugins/ecosystem/index.d.ts.map +1 -0
- package/dist/plugins/ecosystem/index.js +31 -0
- package/dist/plugins/ecosystem/index.js.map +1 -0
- package/dist/plugins/ecosystem/installer.d.ts +130 -0
- package/dist/plugins/ecosystem/installer.d.ts.map +1 -0
- package/dist/plugins/ecosystem/installer.js +316 -0
- package/dist/plugins/ecosystem/installer.js.map +1 -0
- package/dist/plugins/ecosystem/node-disk-registry-source.d.ts +47 -0
- package/dist/plugins/ecosystem/node-disk-registry-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-disk-registry-source.js +208 -0
- package/dist/plugins/ecosystem/node-disk-registry-source.js.map +1 -0
- package/dist/plugins/ecosystem/node-distribution-host.d.ts +55 -0
- package/dist/plugins/ecosystem/node-distribution-host.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-distribution-host.js +423 -0
- package/dist/plugins/ecosystem/node-distribution-host.js.map +1 -0
- package/dist/plugins/ecosystem/node-local-package-source.d.ts +10 -0
- package/dist/plugins/ecosystem/node-local-package-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-local-package-source.js +97 -0
- package/dist/plugins/ecosystem/node-local-package-source.js.map +1 -0
- package/dist/plugins/ecosystem/node-npm-registry-source.d.ts +58 -0
- package/dist/plugins/ecosystem/node-npm-registry-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-npm-registry-source.js +326 -0
- package/dist/plugins/ecosystem/node-npm-registry-source.js.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-host.d.ts +91 -0
- package/dist/plugins/ecosystem/node-package-install-host.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-host.js +857 -0
- package/dist/plugins/ecosystem/node-package-install-host.js.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-persistence.d.ts +34 -0
- package/dist/plugins/ecosystem/node-package-install-persistence.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-persistence.js +221 -0
- package/dist/plugins/ecosystem/node-package-install-persistence.js.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-stack.d.ts +28 -0
- package/dist/plugins/ecosystem/node-package-install-stack.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-package-install-stack.js +65 -0
- package/dist/plugins/ecosystem/node-package-install-stack.js.map +1 -0
- package/dist/plugins/ecosystem/node-package-media.d.ts +14 -0
- package/dist/plugins/ecosystem/node-package-media.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-package-media.js +36 -0
- package/dist/plugins/ecosystem/node-package-media.js.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-acquisition-host.d.ts +83 -0
- package/dist/plugins/ecosystem/node-plugin-acquisition-host.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-acquisition-host.js +423 -0
- package/dist/plugins/ecosystem/node-plugin-acquisition-host.js.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts +48 -0
- package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js +191 -0
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts +26 -0
- package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-plugin-trust-root.js +120 -0
- package/dist/plugins/ecosystem/node-plugin-trust-root.js.map +1 -0
- package/dist/plugins/ecosystem/node-registry-source.d.ts +35 -0
- package/dist/plugins/ecosystem/node-registry-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-registry-source.js +286 -0
- package/dist/plugins/ecosystem/node-registry-source.js.map +1 -0
- package/dist/plugins/ecosystem/node-release-package-source.d.ts +47 -0
- package/dist/plugins/ecosystem/node-release-package-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-release-package-source.js +336 -0
- package/dist/plugins/ecosystem/node-release-package-source.js.map +1 -0
- package/dist/plugins/ecosystem/node-tar-package.d.ts +11 -0
- package/dist/plugins/ecosystem/node-tar-package.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-tar-package.js +294 -0
- package/dist/plugins/ecosystem/node-tar-package.js.map +1 -0
- package/dist/plugins/ecosystem/node-tar-writer.d.ts +16 -0
- package/dist/plugins/ecosystem/node-tar-writer.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-tar-writer.js +134 -0
- package/dist/plugins/ecosystem/node-tar-writer.js.map +1 -0
- package/dist/plugins/ecosystem/node-url-package-source.d.ts +31 -0
- package/dist/plugins/ecosystem/node-url-package-source.d.ts.map +1 -0
- package/dist/plugins/ecosystem/node-url-package-source.js +159 -0
- package/dist/plugins/ecosystem/node-url-package-source.js.map +1 -0
- package/dist/plugins/ecosystem/plugin-acquisition.d.ts +88 -0
- package/dist/plugins/ecosystem/plugin-acquisition.d.ts.map +1 -0
- package/dist/plugins/ecosystem/plugin-acquisition.js +197 -0
- package/dist/plugins/ecosystem/plugin-acquisition.js.map +1 -0
- package/dist/plugins/ecosystem/plugin-bootstrap.d.ts +87 -0
- package/dist/plugins/ecosystem/plugin-bootstrap.d.ts.map +1 -0
- package/dist/plugins/ecosystem/plugin-bootstrap.js +134 -0
- package/dist/plugins/ecosystem/plugin-bootstrap.js.map +1 -0
- package/dist/plugins/ecosystem/registry-cli-adapter.d.ts +8 -0
- package/dist/plugins/ecosystem/registry-cli-adapter.d.ts.map +1 -0
- package/dist/plugins/ecosystem/registry-cli-adapter.js +16 -0
- package/dist/plugins/ecosystem/registry-cli-adapter.js.map +1 -0
- package/dist/plugins/ecosystem/registry.d.ts +121 -0
- package/dist/plugins/ecosystem/registry.d.ts.map +1 -0
- package/dist/plugins/ecosystem/registry.js +324 -0
- package/dist/plugins/ecosystem/registry.js.map +1 -0
- package/dist/plugins/ecosystem/resolver.d.ts +32 -0
- package/dist/plugins/ecosystem/resolver.d.ts.map +1 -0
- package/dist/plugins/ecosystem/resolver.js +325 -0
- package/dist/plugins/ecosystem/resolver.js.map +1 -0
- package/dist/plugins/ecosystem/selection-store.d.ts +66 -0
- package/dist/plugins/ecosystem/selection-store.d.ts.map +1 -0
- package/dist/plugins/ecosystem/selection-store.js +241 -0
- package/dist/plugins/ecosystem/selection-store.js.map +1 -0
- package/dist/plugins/ecosystem/selection.d.ts +54 -0
- package/dist/plugins/ecosystem/selection.d.ts.map +1 -0
- package/dist/plugins/ecosystem/selection.js +116 -0
- package/dist/plugins/ecosystem/selection.js.map +1 -0
- package/dist/plugins/ecosystem/state.d.ts +96 -0
- package/dist/plugins/ecosystem/state.d.ts.map +1 -0
- package/dist/plugins/ecosystem/state.js +346 -0
- package/dist/plugins/ecosystem/state.js.map +1 -0
- package/dist/plugins/ecosystem/types.d.ts +90 -0
- package/dist/plugins/ecosystem/types.d.ts.map +1 -0
- package/dist/plugins/ecosystem/types.js +8 -0
- package/dist/plugins/ecosystem/types.js.map +1 -0
- package/dist/plugins/ecosystem/updates.d.ts +30 -0
- package/dist/plugins/ecosystem/updates.d.ts.map +1 -0
- package/dist/plugins/ecosystem/updates.js +148 -0
- package/dist/plugins/ecosystem/updates.js.map +1 -0
- package/dist/plugins/integrity-adapter.d.ts +58 -0
- package/dist/plugins/integrity-adapter.d.ts.map +1 -0
- package/dist/plugins/integrity-adapter.js +70 -0
- package/dist/plugins/integrity-adapter.js.map +1 -0
- package/dist/plugins/mcp-http.d.ts +78 -0
- package/dist/plugins/mcp-http.d.ts.map +1 -0
- package/dist/plugins/mcp-http.js +176 -0
- package/dist/plugins/mcp-http.js.map +1 -0
- package/dist/plugins/observability-types.d.ts +9 -0
- package/dist/plugins/observability-types.d.ts.map +1 -0
- package/dist/plugins/observability-types.js +9 -0
- package/dist/plugins/observability-types.js.map +1 -0
- package/dist/plugins/plugin-host.d.ts +46 -0
- package/dist/plugins/plugin-host.d.ts.map +1 -0
- package/dist/plugins/plugin-host.js +80 -0
- package/dist/plugins/plugin-host.js.map +1 -0
- package/dist/plugins/plugin-supervisor.d.ts +77 -0
- package/dist/plugins/plugin-supervisor.d.ts.map +1 -0
- package/dist/plugins/plugin-supervisor.js +82 -0
- package/dist/plugins/plugin-supervisor.js.map +1 -0
- package/dist/plugins/subagent-task/runner-entry.d.ts +35 -0
- package/dist/plugins/subagent-task/runner-entry.d.ts.map +1 -0
- package/dist/plugins/subagent-task/runner-entry.js +39 -0
- package/dist/plugins/subagent-task/runner-entry.js.map +1 -0
- package/dist/plugins/subagent-task/session-factory.d.ts +57 -0
- package/dist/plugins/subagent-task/session-factory.d.ts.map +1 -0
- package/dist/plugins/subagent-task/session-factory.js +51 -0
- package/dist/plugins/subagent-task/session-factory.js.map +1 -0
- package/dist/profile/child-facade.d.ts +44 -0
- package/dist/profile/child-facade.d.ts.map +1 -0
- package/dist/profile/child-facade.js +56 -0
- package/dist/profile/child-facade.js.map +1 -0
- package/dist/profile/dependency-wiring.d.ts +48 -0
- package/dist/profile/dependency-wiring.d.ts.map +1 -0
- package/dist/profile/dependency-wiring.js +56 -0
- package/dist/profile/dependency-wiring.js.map +1 -0
- package/dist/profile/domain-recovery.d.ts +60 -0
- package/dist/profile/domain-recovery.d.ts.map +1 -0
- package/dist/profile/domain-recovery.js +94 -0
- package/dist/profile/domain-recovery.js.map +1 -0
- package/dist/profile/first-roles.d.ts +30 -0
- package/dist/profile/first-roles.d.ts.map +1 -0
- package/dist/profile/first-roles.js +74 -0
- package/dist/profile/first-roles.js.map +1 -0
- package/dist/profile/goal-plugin.d.ts +38 -0
- package/dist/profile/goal-plugin.d.ts.map +1 -0
- package/dist/profile/goal-plugin.js +113 -0
- package/dist/profile/goal-plugin.js.map +1 -0
- package/dist/profile/identity.d.ts +58 -0
- package/dist/profile/identity.d.ts.map +1 -0
- package/dist/profile/identity.js +100 -0
- package/dist/profile/identity.js.map +1 -0
- package/dist/profile/lock.d.ts +59 -0
- package/dist/profile/lock.d.ts.map +1 -0
- package/dist/profile/lock.js +59 -0
- package/dist/profile/lock.js.map +1 -0
- package/dist/profile/plan-plugin.d.ts +44 -0
- package/dist/profile/plan-plugin.d.ts.map +1 -0
- package/dist/profile/plan-plugin.js +144 -0
- package/dist/profile/plan-plugin.js.map +1 -0
- package/dist/profile/plugin-profiles.d.ts +56 -0
- package/dist/profile/plugin-profiles.d.ts.map +1 -0
- package/dist/profile/plugin-profiles.js +192 -0
- package/dist/profile/plugin-profiles.js.map +1 -0
- package/dist/profile/policy-manifest.d.ts +53 -0
- package/dist/profile/policy-manifest.d.ts.map +1 -0
- package/dist/profile/policy-manifest.js +52 -0
- package/dist/profile/policy-manifest.js.map +1 -0
- package/dist/profile/profile-assembly.d.ts +74 -0
- package/dist/profile/profile-assembly.d.ts.map +1 -0
- package/dist/profile/profile-assembly.js +90 -0
- package/dist/profile/profile-assembly.js.map +1 -0
- package/dist/profile/profile-migration.d.ts +56 -0
- package/dist/profile/profile-migration.d.ts.map +1 -0
- package/dist/profile/profile-migration.js +60 -0
- package/dist/profile/profile-migration.js.map +1 -0
- package/dist/profile/profile-registry.d.ts +58 -0
- package/dist/profile/profile-registry.d.ts.map +1 -0
- package/dist/profile/profile-registry.js +74 -0
- package/dist/profile/profile-registry.js.map +1 -0
- package/dist/profile/role-assembly.d.ts +47 -0
- package/dist/profile/role-assembly.d.ts.map +1 -0
- package/dist/profile/role-assembly.js +31 -0
- package/dist/profile/role-assembly.js.map +1 -0
- package/dist/profile/role-catalog.d.ts +44 -0
- package/dist/profile/role-catalog.d.ts.map +1 -0
- package/dist/profile/role-catalog.js +130 -0
- package/dist/profile/role-catalog.js.map +1 -0
- package/dist/profile/role-orchestrator.d.ts +123 -0
- package/dist/profile/role-orchestrator.d.ts.map +1 -0
- package/dist/profile/role-orchestrator.js +194 -0
- package/dist/profile/role-orchestrator.js.map +1 -0
- package/dist/profile/role-runner.d.ts +99 -0
- package/dist/profile/role-runner.d.ts.map +1 -0
- package/dist/profile/role-runner.js +78 -0
- package/dist/profile/role-runner.js.map +1 -0
- package/dist/profile/root-facade.d.ts +36 -0
- package/dist/profile/root-facade.d.ts.map +1 -0
- package/dist/profile/root-facade.js +48 -0
- package/dist/profile/root-facade.js.map +1 -0
- package/dist/profile/skill-discovery-wiring.d.ts +58 -0
- package/dist/profile/skill-discovery-wiring.d.ts.map +1 -0
- package/dist/profile/skill-discovery-wiring.js +75 -0
- package/dist/profile/skill-discovery-wiring.js.map +1 -0
- package/dist/profile/state-store.d.ts +62 -0
- package/dist/profile/state-store.d.ts.map +1 -0
- package/dist/profile/state-store.js +140 -0
- package/dist/profile/state-store.js.map +1 -0
- package/dist/profile/todo-plugin.d.ts +37 -0
- package/dist/profile/todo-plugin.d.ts.map +1 -0
- package/dist/profile/todo-plugin.js +132 -0
- package/dist/profile/todo-plugin.js.map +1 -0
- package/dist/profiles/builtin-suites.d.ts +142 -0
- package/dist/profiles/builtin-suites.d.ts.map +1 -0
- package/dist/profiles/builtin-suites.js +395 -0
- package/dist/profiles/builtin-suites.js.map +1 -0
- package/dist/profiles/resolved-agent-profile.d.ts +83 -0
- package/dist/profiles/resolved-agent-profile.d.ts.map +1 -0
- package/dist/profiles/resolved-agent-profile.js +75 -0
- package/dist/profiles/resolved-agent-profile.js.map +1 -0
- package/dist/profiles/suite-lifecycle.d.ts +158 -0
- package/dist/profiles/suite-lifecycle.d.ts.map +1 -0
- package/dist/profiles/suite-lifecycle.js +447 -0
- package/dist/profiles/suite-lifecycle.js.map +1 -0
- package/dist/profiles/suite-loader.d.ts +410 -0
- package/dist/profiles/suite-loader.d.ts.map +1 -0
- package/dist/profiles/suite-loader.js +823 -0
- package/dist/profiles/suite-loader.js.map +1 -0
- package/dist/remote/server-assembly.d.ts +230 -0
- package/dist/remote/server-assembly.d.ts.map +1 -0
- package/dist/remote/server-assembly.js +1189 -0
- package/dist/remote/server-assembly.js.map +1 -0
- package/dist/remote/server-entry.d.ts +112 -0
- package/dist/remote/server-entry.d.ts.map +1 -0
- package/dist/remote/server-entry.js +239 -0
- package/dist/remote/server-entry.js.map +1 -0
- package/dist/remote/session-source.d.ts +101 -0
- package/dist/remote/session-source.d.ts.map +1 -0
- package/dist/remote/session-source.js +173 -0
- package/dist/remote/session-source.js.map +1 -0
- package/dist/rpc-entry.d.ts +3 -0
- package/dist/rpc-entry.d.ts.map +1 -0
- package/dist/rpc-entry.js +11 -0
- package/dist/rpc-entry.js.map +1 -0
- package/dist/server/create-harness.d.ts +26 -0
- package/dist/server/create-harness.d.ts.map +1 -0
- package/dist/server/create-harness.js +106 -0
- package/dist/server/create-harness.js.map +1 -0
- package/dist/share/session-share.d.ts +98 -0
- package/dist/share/session-share.d.ts.map +1 -0
- package/dist/share/session-share.js +89 -0
- package/dist/share/session-share.js.map +1 -0
- package/dist/share/share-viewer.d.ts +43 -0
- package/dist/share/share-viewer.d.ts.map +1 -0
- package/dist/share/share-viewer.js +103 -0
- package/dist/share/share-viewer.js.map +1 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +6 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-ai-server.d.ts +77 -0
- package/dist/testing/mock-ai-server.d.ts.map +1 -0
- package/dist/testing/mock-ai-server.js +69 -0
- package/dist/testing/mock-ai-server.js.map +1 -0
- package/dist/testing/plugin-testkit.d.ts +148 -0
- package/dist/testing/plugin-testkit.d.ts.map +1 -0
- package/dist/testing/plugin-testkit.js +493 -0
- package/dist/testing/plugin-testkit.js.map +1 -0
- package/dist/testing/runtime-delivery-queue.d.ts +47 -0
- package/dist/testing/runtime-delivery-queue.d.ts.map +1 -0
- package/dist/testing/runtime-delivery-queue.js +158 -0
- package/dist/testing/runtime-delivery-queue.js.map +1 -0
- package/dist/testing/session-plugin-testkit.d.ts +144 -0
- package/dist/testing/session-plugin-testkit.d.ts.map +1 -0
- package/dist/testing/session-plugin-testkit.js +444 -0
- package/dist/testing/session-plugin-testkit.js.map +1 -0
- package/dist/utils/abort.d.ts +5 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +53 -0
- package/dist/utils/abort.js.map +1 -0
- package/dist/utils/agent-forge-user-agent.d.ts +2 -0
- package/dist/utils/agent-forge-user-agent.d.ts.map +1 -0
- package/dist/utils/agent-forge-user-agent.js +5 -0
- package/dist/utils/agent-forge-user-agent.js.map +1 -0
- package/dist/utils/ansi.d.ts +2 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +53 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/changelog.d.ts +22 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +165 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +18 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +107 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +246 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +11 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -0
- package/dist/utils/clipboard-native.js +22 -0
- package/dist/utils/clipboard-native.js.map +1 -0
- package/dist/utils/clipboard.d.ts +4 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +161 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/deprecation.d.ts +4 -0
- package/dist/utils/deprecation.d.ts.map +1 -0
- package/dist/utils/deprecation.js +13 -0
- package/dist/utils/deprecation.js.map +1 -0
- package/dist/utils/exif-orientation.d.ts +5 -0
- package/dist/utils/exif-orientation.d.ts.map +1 -0
- package/dist/utils/exif-orientation.js +158 -0
- package/dist/utils/exif-orientation.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +8 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +27 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/fs-watch.d.ts +5 -0
- package/dist/utils/fs-watch.d.ts.map +1 -0
- package/dist/utils/fs-watch.js +25 -0
- package/dist/utils/fs-watch.js.map +1 -0
- package/dist/utils/git.d.ts +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +201 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/html.d.ts +7 -0
- package/dist/utils/html.d.ts.map +1 -0
- package/dist/utils/html.js +40 -0
- package/dist/utils/html.js.map +1 -0
- package/dist/utils/image-convert.d.ts +10 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +45 -0
- package/dist/utils/image-convert.js.map +1 -0
- package/dist/utils/image-process.d.ts +18 -0
- package/dist/utils/image-process.d.ts.map +1 -0
- package/dist/utils/image-process.js +84 -0
- package/dist/utils/image-process.js.map +1 -0
- package/dist/utils/image-resize-core.d.ts +30 -0
- package/dist/utils/image-resize-core.d.ts.map +1 -0
- package/dist/utils/image-resize-core.js +125 -0
- package/dist/utils/image-resize-core.js.map +1 -0
- package/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/utils/image-resize-worker.d.ts.map +1 -0
- package/dist/utils/image-resize-worker.js +31 -0
- package/dist/utils/image-resize-worker.js.map +1 -0
- package/dist/utils/image-resize.d.ts +16 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +100 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/json.d.ts +3 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +8 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/management-http.d.ts +25 -0
- package/dist/utils/management-http.d.ts.map +1 -0
- package/dist/utils/management-http.js +54 -0
- package/dist/utils/management-http.js.map +1 -0
- package/dist/utils/mime.d.ts +3 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +115 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/open-browser.d.ts +9 -0
- package/dist/utils/open-browser.d.ts.map +1 -0
- package/dist/utils/open-browser.js +22 -0
- package/dist/utils/open-browser.js.map +1 -0
- package/dist/utils/paths.d.ts +34 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +114 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/photon.d.ts +21 -0
- package/dist/utils/photon.d.ts.map +1 -0
- package/dist/utils/photon.js +124 -0
- package/dist/utils/photon.js.map +1 -0
- package/dist/utils/shell.d.ts +34 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +216 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sleep.d.ts +5 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +17 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/sync-sleep.d.ts +2 -0
- package/dist/utils/sync-sleep.d.ts.map +1 -0
- package/dist/utils/sync-sleep.js +11 -0
- package/dist/utils/sync-sleep.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts +13 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -0
- package/dist/utils/syntax-highlight.js +177 -0
- package/dist/utils/syntax-highlight.js.map +1 -0
- package/dist/utils/text.d.ts +8 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/tool-result-images.d.ts +19 -0
- package/dist/utils/tool-result-images.d.ts.map +1 -0
- package/dist/utils/tool-result-images.js +45 -0
- package/dist/utils/tool-result-images.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +24 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +437 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +21 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +86 -0
- package/dist/utils/version-check.js.map +1 -0
- package/dist/utils/windows-self-update.d.ts +3 -0
- package/dist/utils/windows-self-update.d.ts.map +1 -0
- package/dist/utils/windows-self-update.js +77 -0
- package/dist/utils/windows-self-update.js.map +1 -0
- package/docs/compaction.md +348 -0
- package/docs/containerization.md +114 -0
- package/docs/development.md +71 -0
- package/docs/docs.json +148 -0
- package/docs/environment-variables.md +96 -0
- package/docs/images/exy.png +0 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/index.md +76 -0
- package/docs/json.md +98 -0
- package/docs/keybindings.md +245 -0
- package/docs/llama-cpp.md +101 -0
- package/docs/models.md +576 -0
- package/docs/packages.md +205 -0
- package/docs/prompt-templates.md +96 -0
- package/docs/providers.md +317 -0
- package/docs/quickstart.md +167 -0
- package/docs/rpc.md +1487 -0
- package/docs/sdk.md +1146 -0
- package/docs/security.md +24 -0
- package/docs/session-format.md +438 -0
- package/docs/sessions.md +145 -0
- package/docs/settings.md +355 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +231 -0
- package/docs/terminal-setup.md +192 -0
- package/docs/termux.md +127 -0
- package/docs/themes.md +320 -0
- package/docs/tmux.md +63 -0
- package/docs/tui.md +478 -0
- package/docs/usage.md +291 -0
- package/docs/windows.md +39 -0
- package/examples/README.md +21 -0
- package/examples/extensions/README.md +163 -0
- package/examples/extensions/bash-spawn-hook/index.ts +37 -0
- package/examples/extensions/bash-spawn-hook/plugin.json +10 -0
- package/examples/extensions/bookmark/index.ts +67 -0
- package/examples/extensions/bookmark/plugin.json +11 -0
- package/examples/extensions/built-in-tool-renderer/index.ts +262 -0
- package/examples/extensions/built-in-tool-renderer/plugin.json +10 -0
- package/examples/extensions/claude-rules/index.ts +119 -0
- package/examples/extensions/claude-rules/plugin.json +8 -0
- package/examples/extensions/cli-bridge/README.md +27 -0
- package/examples/extensions/cli-bridge/index.ts +320 -0
- package/examples/extensions/cli-bridge/plugin.json +10 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +53 -0
- package/examples/extensions/dynamic-resources/plugin.json +8 -0
- package/examples/extensions/dynamic-tools/index.ts +102 -0
- package/examples/extensions/dynamic-tools/plugin.json +14 -0
- package/examples/extensions/event-bus/index.ts +75 -0
- package/examples/extensions/event-bus/plugin.json +13 -0
- package/examples/extensions/file-trigger/index.ts +65 -0
- package/examples/extensions/file-trigger/plugin.json +13 -0
- package/examples/extensions/goal/README.md +16 -0
- package/examples/extensions/goal/index.ts +134 -0
- package/examples/extensions/goal/plugin.json +12 -0
- package/examples/extensions/hello/index.ts +29 -0
- package/examples/extensions/hello/plugin.json +10 -0
- package/examples/extensions/kimi-deferred-tools/index.ts +93 -0
- package/examples/extensions/kimi-deferred-tools/plugin.json +11 -0
- package/examples/extensions/mcp-stdio/README.md +19 -0
- package/examples/extensions/mcp-stdio/index.d.ts +64 -0
- package/examples/extensions/mcp-stdio/index.d.ts.map +1 -0
- package/examples/extensions/mcp-stdio/index.js +292 -0
- package/examples/extensions/mcp-stdio/index.js.map +1 -0
- package/examples/extensions/mcp-stdio/index.ts +381 -0
- package/examples/extensions/mcp-stdio/plugin.json +10 -0
- package/examples/extensions/memory-backend/index.ts +120 -0
- package/examples/extensions/memory-backend/plugin.json +10 -0
- package/examples/extensions/minimal-mode/index.ts +447 -0
- package/examples/extensions/minimal-mode/plugin.json +10 -0
- package/examples/extensions/multi-agent/README.md +7 -0
- package/examples/extensions/multi-agent/index.ts +592 -0
- package/examples/extensions/multi-agent/plugin.json +13 -0
- package/examples/extensions/notify/index.ts +70 -0
- package/examples/extensions/notify/plugin.json +8 -0
- package/examples/extensions/permission-gate/index.ts +55 -0
- package/examples/extensions/permission-gate/plugin.json +11 -0
- package/examples/extensions/pirate/index.ts +75 -0
- package/examples/extensions/pirate/plugin.json +8 -0
- package/examples/extensions/plan/README.md +16 -0
- package/examples/extensions/plan/index.ts +136 -0
- package/examples/extensions/plan/plugin.json +12 -0
- package/examples/extensions/prompt-customizer/index.ts +117 -0
- package/examples/extensions/prompt-customizer/plugin.json +8 -0
- package/examples/extensions/protected-paths/index.ts +44 -0
- package/examples/extensions/protected-paths/plugin.json +11 -0
- package/examples/extensions/provider-attribution/README.md +12 -0
- package/examples/extensions/provider-attribution/index.ts +86 -0
- package/examples/extensions/provider-attribution/plugin.json +10 -0
- package/examples/extensions/send-user-message/index.ts +118 -0
- package/examples/extensions/send-user-message/plugin.json +11 -0
- package/examples/extensions/session-name/index.ts +31 -0
- package/examples/extensions/session-name/plugin.json +11 -0
- package/examples/extensions/session-share/README.md +15 -0
- package/examples/extensions/session-share/index.ts +170 -0
- package/examples/extensions/session-share/plugin.json +15 -0
- package/examples/extensions/structured-output/index.ts +68 -0
- package/examples/extensions/structured-output/plugin.json +10 -0
- package/examples/extensions/subagent/README.md +177 -0
- package/examples/extensions/subagent/agents/planner.md +37 -0
- package/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/examples/extensions/subagent/agents/scout.md +50 -0
- package/examples/extensions/subagent/agents/worker.md +24 -0
- package/examples/extensions/subagent/agents.ts +157 -0
- package/examples/extensions/subagent/index.ts +1057 -0
- package/examples/extensions/subagent/plugin.json +13 -0
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/examples/extensions/subagent/prompts/implement.md +10 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/examples/extensions/suite-manager/README.md +45 -0
- package/examples/extensions/suite-manager/index.ts +182 -0
- package/examples/extensions/suite-manager/plugin.json +13 -0
- package/examples/extensions/timed-confirm/index.ts +93 -0
- package/examples/extensions/timed-confirm/plugin.json +13 -0
- package/examples/extensions/todo-set/README.md +18 -0
- package/examples/extensions/todo-set/index.ts +133 -0
- package/examples/extensions/todo-set/plugin.json +12 -0
- package/examples/extensions/tool-override/index.ts +159 -0
- package/examples/extensions/tool-override/plugin.json +11 -0
- package/examples/extensions/trigger-compact/index.ts +76 -0
- package/examples/extensions/trigger-compact/plugin.json +14 -0
- package/examples/extensions/truncated-tool/index.ts +204 -0
- package/examples/extensions/truncated-tool/plugin.json +10 -0
- package/examples/extensions/with-deps/index.ts +42 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +22 -0
- package/examples/extensions/with-deps/plugin.json +10 -0
- package/examples/remote-client.ts +66 -0
- package/examples/rpc-extension-ui.ts +641 -0
- package/examples/sdk/01-minimal.ts +26 -0
- package/examples/sdk/02-custom-model.ts +49 -0
- package/examples/sdk/03-custom-prompt.ts +70 -0
- package/examples/sdk/04-skills.ts +55 -0
- package/examples/sdk/05-tools.ts +48 -0
- package/examples/sdk/07-context-files.ts +42 -0
- package/examples/sdk/08-prompt-templates.ts +51 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +34 -0
- package/examples/sdk/10-settings.ts +53 -0
- package/examples/sdk/11-sessions.ts +52 -0
- package/examples/sdk/12-full-control.ts +72 -0
- package/examples/sdk/13-session-runtime.ts +71 -0
- package/examples/sdk/14-custom-session-storage.ts +132 -0
- package/examples/sdk/README.md +139 -0
- package/package.json +111 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-assembly.js","sourceRoot":"","sources":["../../src/remote/server-assembly.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAgBzC,OAAO,EAGN,QAAQ,EACR,aAAa,GAQb,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,qBAAqB,EAAyB,MAAM,+BAA+B,CAAC;AAwE7F,SAAS,WAAW,CAAC,OAAqB,EAAE,MAAc,EAAQ;IACjE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,UAAU,MAAM,4BAA4B,CAAC,CAAC;IAC/E,CAAC;AAAA,CACD;AAED,SAAS,OAAO,CAAC,KAAc,EAAiB;IAC/C,IAAI,KAAK,YAAY,aAAa;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnF,IAAI,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1F,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnF,sEAAsE;IACtE,yEAAyE;IACzE,qEAAqE;IACrE,OAAO,IAAI,aAAa,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;AAAA,CACrD;AAED,SAAS,QAAQ,CAAC,KAAc,EAAW;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC3F,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACjG,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAAA,CAC5C;AA2BD,6FAA6F;AAC7F,SAAS,qBAAqB,CAAC,KAAc,EAAyC;IACrF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1F,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IACnH,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACtF,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC/D,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACrG,IAAI,KAAyC,CAAC;IAC9C,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/G,MAAM,KAAK,GAAG,MAAM,CAAC,KAAgC,CAAC;QACtD,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC1F,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAC3E,CAAC;IACD,OAAO;QACN,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,GAAG,CAAC,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAmB,EAAE,CAAC;QAC9E,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,GAAG,CAAC,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnF,CAAC;AAAA,CACF;AAED,4FAA4F;AAC5F,SAAS,oBAAoB,CAAC,KAAc,EAAwC;IACnF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1F,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACpF,MAAM,KAAK,GAAG,GAA8B,CAAC;IAC7C,IACC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QACpC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS;QACpC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAC/B,CAAC;QACF,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO;QACN,GAAG,EAAE;YACJ,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,GAAG,CAAC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC1B;QACD,KAAK,EAAE,MAAM,CAAC,KAAK;KACnB,CAAC;AAAA,CACF;AAED;;;;;;GAMG;AACH,SAAS,4BAA4B,CAAC,KAAc,EAAE,SAAiB,EAA+B;IACrG,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1F,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IACC,MAAM,CAAC,EAAE,KAAK,SAAS;QACvB,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;QAC9B,MAAM,CAAC,GAAG,KAAK,EAAE;QACjB,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;QACnC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClC,MAAM,CAAC,QAAQ,GAAG,CAAC;QACnB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAChC,CAAC;QACF,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,KAAwB,CAAC;AAAA,CAChC;AAED,iFAAiF;AACjF,SAAS,qBAAqB,CAAC,GAAsB,EAAe;IACnE,OAAO;QACN,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;QACpE,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;KACxB,CAAC;AAAA,CACF;AAaD,SAAS,YAAY,CAAC,KAAc,EAAqB;IACxD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClF,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,SAAS,GAAG,CAAC,GAAW,EAAsB,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACxG,CAAC;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACxG,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/E,MAAM,UAAU,GAAG,IAA+B,CAAC;IACnD,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAsB,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CAC/E,CAAC;IACF,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,IACC,SAAS,KAAK,SAAS;QACvB,UAAU,KAAK,SAAS;QACxB,aAAa,KAAK,SAAS;QAC3B,cAAc,KAAK,SAAS;QAC5B,SAAS,KAAK,SAAS,EACtB,CAAC;QACF,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACzC,OAAO;QACN,KAAK;QACL,MAAM;QACN,SAAS;QACT,UAAU;QACV,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QACjD,WAAW;QACX,IAAI,EAAE;YACL,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,aAAa;YACxB,UAAU,EAAE,cAAc;YAC1B,KAAK,EAAE,SAAS;SAChB;KACD,CAAC;AAAA,CACF;AAKD,SAAS,kBAAkB,CAAC,OAAoC,EAA+B;IAC9F,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAgC,EAAE,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS;QAChD,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/D,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9G,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjF,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CACjB;AAED,SAAS,wBAAwB,CAAC,OAA2B,EAA+B;IAC3F,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAAA,CACnC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAqB,EAAoB;IACjF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;IAChD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAC3C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;gBAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAsB,CAAC,CAAC;QACpF,CAAC;IACF,CAAC;IACD,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC;gBACV,EAAE;gBACF,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC5C,SAAS;aACT,CAAC,CAAC;YACH,SAAS;QACV,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,OAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;YACvF,MAAM,IAAI,GAAG;gBACZ,EAAE;gBACF,IAAI,EAAE,MAAe;gBACrB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBAC5D,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC;gBAClD,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;gBAC7C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;gBACzC,SAAS;aACT,CAAC;YACF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAmB,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACzE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,GAAmB,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAC7E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,SAAS;QACV,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;YAC/F,MAAM,IAAI,GAAG;gBACZ,EAAE;gBACF,IAAI,EAAE,MAAe;gBACrB,UAAU,EAAE,QAAQ,EAAE,EAAE;gBACxB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAsB;gBACvD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1D,OAAO,EAAE;oBACR,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;oBAClC,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;iBACR;gBACrB,SAAS;aACT,CAAC;YACF,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAmB,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACzE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,GAAmB,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAC7E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,SAAS;QACV,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC;gBACV,EAAE;gBACF,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS;aACT,CAAC,CAAC;YACH,SAAS;QACV,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC;gBACV,EAAE;gBACF,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC3D,SAAS;aACT,CAAC,CAAC;YACH,SAAS;QACV,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,GACT,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;gBAClC,CAAC,CAAC,OAAO,CAAC,OAAO;gBACjB,CAAC,CAAC,OAAO,CAAC,OAAO;qBACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;qBACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;qBACxB,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC;gBACV,EAAE;gBACF,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,IAAI;gBACJ,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,SAAS;aACT,CAAC,CAAC;YACH,SAAS;QACV,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,OAAO,GAIT,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACnE,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC9B,OAAO;oBACN,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACnE,CAAC;YACH,CAAC;YACD,OAAO;gBACN,IAAI,EAAE,UAAU;gBAChB,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,KAAK,EAAE,IAAI,CAAC,SAAsB;aAClC,CAAC;QAAA,CACF,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG;YACd,EAAE;YACF,IAAI,EAAE,WAAoB;YAC1B,OAAO;YACP,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,EAAqB;YAC3E,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACzC,SAAS;SACT,CAAC;QACF,IAAI,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACxF,MAAM,IAAI,GAAmB,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAmB;gBAC5B,GAAG,MAAM;gBACT,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,OAAO;gBACnB,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvE,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAmB;gBAC5B,GAAG,MAAM;gBACT,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,SAAS;gBACrB,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvE,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,GAAmB,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;YAC/F,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAED,SAAS,YAAY,CAAC,OAAqB,EAAgB;IAC1D,IAAI,OAAO,CAAC,YAAY;QAAE,OAAO,YAAY,CAAC;IAC9C,IAAI,OAAO,CAAC,WAAW;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,MAAM,CAAC;AAAA,CACd;AAED,2EAA2E;AAC3E,MAAM,OAAO,yBAAyB;IACpB,OAAO,CAAe;IACtB,UAAU,CAA+B;IACzC,MAAM,CAA0B;IAChC,SAAS,GAAG,IAAI,GAAG,EAA0C,CAAC;IAC9D,WAAW,CAAa;IACxB,UAAU,CAAc;IACjC,QAAQ,GAAG,KAAK,CAAC;IAEzB,YACC,OAAqB,EACrB,UAAwC,EACxC,OAAyF,EACxF;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI;YAChC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACpB,OAAO,EAAE,GAAG,EAAE,CAAC;gBACd,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,oCAAoC,CAAC,CAAC;YAAA,CACjF;SACD,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,KAAwB,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAAA,CAC/F;IAED,QAAQ,GAAoB;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9D,OAAO;YACN,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;YACtB,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvC,oEAAoE;YACpE,oEAAoE;YACpE,+DAA+D;YAC/D,oEAAoE;YACpE,gDAAgD;YAChD,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE;YAChE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;YACpC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;YACpC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;YACjC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE;YAC7B,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YACzC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC5F,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;YAC3G,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,mEAAmE;YACnE,yDAAyD;YACzD,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ;YAC7C,UAAU,EAAE,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC;YAClD,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC9C,EAAE,EAAE,SAAS,KAAK,EAAE;gBACpB,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;gBAC1C,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;aACpC,CAAC,CAAC;YACH,gBAAgB,EAAE,WAAW,CAAC,MAAM;SACpC,CAAC;IAAA,CACF;IAED,QAAQ,GAAiB;QACxB,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAAA,CAClC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgC,EAAiB;QAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC7C,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IAAA,CACD;IAED,KAAK,CAAC,KAAK,CAAC,KAAgC,EAAiB;QAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,oCAAoC,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IAAA,CACD;IAED,KAAK,CAAC,KAAK,GAAkB;QAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IAAA,CACD;IAED,KAAK,CAAC,QAAQ,CAAC,KAAe,EAAiB;QAC9C,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC9C,IAAI,QAAoB,CAAC;QACzB,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IAAA,CACD;IAED,KAAK,CAAC,WAAW,CAAC,aAA4B,EAAiB;QAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;QACvD,IAAI,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IAAA,CACD;IAED,SAAS,CAAC,QAAgD,EAAc;QACvE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAAA,CAC7C;IAED,KAAK,CAAC,OAAO,GAAkB;QAC9B,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QACrB,CAAC;IAAA,CACD;IAEO,YAAY,GAAS;QAC5B,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,CAAC;IAAA,CAC7F;IAEO,cAAc,CAAC,MAAyB,EAAQ;QACvD,yEAAyE;QACzE,yEAAyE;QACzE,sEAAsE;QACtE,iDAAiD;QACjD,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACJ,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACR,kDAAkD;YACnD,CAAC;QACF,CAAC;IAAA,CACD;IAEO,eAAe,GAAa;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,0EAA0E;QAC1E,2EAA2E;QAC3E,wEAAwE;QACxE,qCAAqC;QACrC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,CAAC;QACtF,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IAAA,CAClD;CACD;AAED,sEAAsE;AACtE,MAAM,OAAO,wBAAwB;IACnB,MAAM,CAAiC;IACvC,MAAM,CAA0B;IAChC,GAAG,CAAe;IAClB,QAAQ,GAAG,IAAI,GAAG,EAAqC,CAAC;IACxD,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5B,OAAO,CAA+B;IACtC,SAAS,GAAG,IAAI,GAAG,EAAwC,CAAC;IAC7E,8EAA8E;IAC7D,cAAc,CAAsC;IACrE,6EAA6E;IAC5D,aAAa,CAAqC;IACnE,oFAAoF;IACnE,qBAAqB,CAAoC;IACzD,QAAQ,CAAqB;IACtC,UAAU,GAAG,KAAK,CAAC;IAC3B,gEAAgE;IAC/C,gBAAgB,GAAG,IAAI,GAAG,EAA6B,CAAC;IACzE,qEAAqE;IACpD,kBAAkB,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC3E,yDAAyD;IACxC,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC/D,sEAAsE;IACrD,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAErD,YAAY,OAOX,EAAE;QACF,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,kBAAkB,IAAI,EAAE;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC9G,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC;YACjD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,UAAU;gBAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACvD,IAAI,CAAC,cAAc,GAAG;gBACrB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;aAC9C,CAAC;YACF,IAAI,CAAC,aAAa,GAAG;gBACpB,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC;gBACzE,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC;aACvG,CAAC;YACF,IAAI,CAAC,qBAAqB,GAAG;gBAC5B,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,CAAC;gBACnF,MAAM,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC;aAC3G,CAAC;QACH,CAAC;IAAA,CACD;IAED,sEAAsE;IACtE,IAAI,SAAS,GAAuC;QACnD,OAAO,IAAI,CAAC,aAAa,CAAC;IAAA,CAC1B;IAED,0EAA0E;IAC1E,IAAI,UAAU,GAAwC;QACrD,OAAO,IAAI,CAAC,cAAc,CAAC;IAAA,CAC3B;IAED,4FAA4F;IAC5F,IAAI,iBAAiB,GAAsC;QAC1D,OAAO,IAAI,CAAC,qBAAqB,CAAC;IAAA,CAClC;IAED,4EAA4E;IAC5E,kDAAkD;IAClD,4EAA4E;IAE5E;;;;OAIG;IACK,gBAAgB,GAAS;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,OAAO;QAClC,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;IAAA,CACzE;IAED;;;;;OAKG;IACH,kBAAkB,GAAS;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QACtD,IAAI,CAAC;YACJ,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACR,wEAAwE;QACzE,CAAC;IAAA,CACD;IAED,mGAAmG;IAC3F,gBAAgB,CAAC,WAAmB,EAAE,SAAiB,EAAE,OAAkC,EAAQ;QAC1G,IAAI,CAAC;YACJ,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;gBAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC7B,WAAW;gBACX,SAAS;gBACT,IAAI,EAAE,OAAO;aACb,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;gBAC5C,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;IAAA,CACD;IAEO,cAAc,GAAqB;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IAAA,CACpB;IAED;;;;;;OAMG;IACK,0BAA0B,GAAS;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,QAAQ,GACb,OAAO,CAAC,MAAM,KAAK,SAAS;gBAC3B,CAAC,CAAC;oBACA,GAAG,OAAO;oBACV,MAAM,EAAE,UAAU;oBAClB,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,sDAAsD,EAAE;oBAClG,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB;gBACF,CAAC,CAAC,OAAO,CAAC;YACZ,IAAI,QAAQ,KAAK,OAAO;gBAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACjG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC;IAAA,CACD;IAEO,eAAe,CAAC,WAAmB,EAAE,OAAkC,EAAQ;QACtF,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,cAAc,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QACxG,CAAC;IAAA,CACD;IAED,4EAA4E;IAC5E,mDAAmD;IACnD,4EAA4E;IAEpE,KAAK,CAAC,eAAe,CAAC,KAM7B,EAAkC;QAClC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,yEAAyE;QACzE,uEAAuE;QACvE,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;YAC1F,IAAI,QAAQ;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,wBAAwB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9F,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;YACrD,IAAI,QAAQ,KAAK,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBACzC,MAAM,IAAI,aAAa,CACtB,oBAAoB,EACpB,uBAAuB,QAAQ,0BAA0B,KAAK,CAAC,gBAAgB,EAAE,CACjF,CAAC;YACH,CAAC;QACF,CAAC;QACD,MAAM,WAAW,GAAG,UAAU,EAAE,CAAC;QACjC,MAAM,OAAO,GAA8B;YAC1C,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvF,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3C,wEAAwE;QACxE,yEAAyE;QACzE,oEAAoE;QACpE,wEAAwE;QACxE,kEAAkE;QAClE,wEAAwE;QACxE,wBAAwB;QACxB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC;YAClF,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;gBACjC,GAAG,OAAO;gBACV,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAClG,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;QAAA,CACH,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IAAA,CAC5C;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB,CAC7B,WAAmB,EACnB,OAAkC,EAClC,KAA4B,EACK;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;gBAC1C,GAAG,OAAO;gBACV,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE;oBACN,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,gDAAgD,OAAO,CAAC,aAAa,EAAE;iBAChF;gBACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC3C,IAAI,QAAmC,CAAC;QACxC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;gBACrC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW;gBACX,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;gBACzC,MAAM,EAAE,UAAU,CAAC,MAAM;aACzB,CAAC,CAAC;YACH,QAAQ,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,QAAQ,GAAG;gBACV,GAAG,OAAO;gBACV,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC;gBAC/C,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;QACH,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAClC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAAA,CACrD;IAEO,eAAe,CACtB,WAAmB,EACnB,KAAc,EAIb;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;QAC9F,CAAC;QACD,IAAI,KAAK,YAAY,aAAa;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACxF,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAAA,CAC5C;IAEO,iBAAiB,CAAC,WAAmB,EAAE,QAAmC,EAAyB;QAC1G,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAAA,CACtD;IAEO,eAAe,CAAC,KAAmE,EAAyB;QACnH,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChE,sEAAsE;QACtE,oEAAoE;QACpE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACjE,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,sBAAsB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvE,wEAAwE;QACxE,sEAAsE;QACtE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;QAC9C,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAAA,CAC9D;IAEO,eAAe,CAAC,KAAmE,EAAyB;QACnH,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChE,sEAAsE;QACtE,oEAAoE;QACpE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACjE,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,sBAAsB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAAA,CAC5B;IAEO,KAAK,CAAC,QAA2B,EAAyB;QACjE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO;gBACN,WAAW;gBACX,MAAM,EAAE,WAAW;gBACnB,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;aACnE,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO;gBACN,WAAW;gBACX,MAAM,EAAE,UAAU;gBAClB,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;oBAC9B,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAA0B,EAAE,CAAC;aACnG,CAAC;QACH,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAAA,CAC3C;IAED,4EAA4E;IAC5E,iEAAiE;IACjE,4EAA4E;IAE5E;;;;;OAKG;IACH,qBAAqB,CAAC,SAAiB,EAAE,GAAsB,EAAE,KAAiB,EAAe;QAChG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,kDAAkD,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,KAAK,EAAE;YAAE,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAC;QACvG,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;YACvE,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,kDAAkD,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC;YACJ,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC7B,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,SAAS;gBACT,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAqC;aAC9F,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;gBAC5C,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;QACD,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAAA,CAClC;IAEO,YAAY,CAAC,SAAiB,EAAE,UAAkB,EAAe;QACxE,OAAO,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;IAAA,CAClF;IAEO,YAAY,CACnB,SAAiB,EACjB,UAAkB,EAClB,OAA+D,EAM9D;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC;QACpC,OAAO;YACN,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC;YAC5C,IAAI;YACJ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;YACnC,GAAG;SACH,CAAC;IAAA,CACF;IAED;;OAEG;IACK,mBAAmB,CAAC,SAAiB,EAAE,UAAkB,EAA4B;QAC5F,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,qBAAqB,UAAU,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC9F,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,qCAAqC,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,OAAO,CAAC;IAAA,CACf;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,4EAA4E;IAE5E;;;OAGG;IACK,0BAA0B,CAAC,SAAiB,EAAE,WAAmB,EAAU;QAClF,OAAO,qBAAqB,SAAS,IAAI,WAAW,EAAE,CAAC;IAAA,CACvD;IAED;;;;;;OAMG;IACK,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,WAAmB,EAAwC;QAChH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YACnC,UAAU,EAAE,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC;SACnE,CAAC,CAAC;QACH,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC7E,MAAM,QAAQ,GAAG,4BAA4B,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtE,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAAA,CACtE;IAED;;;;;OAKG;IACK,KAAK,CAAC,sBAAsB,CACnC,SAAiB,EACjB,WAAmB,EACnB,QAAyB,EACT;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,IAAI,CAAC;YACJ,OAAO,CAAC,eAAe,CAAC;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC7B,UAAU,EAAE,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC;gBACnE,SAAS;gBACT,IAAI,EAAE,QAAQ;aACd,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;gBAC5C,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;IAAA,CACD;IAED,KAAK,CAAC,YAAY,GAA+B;QAChD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7C,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACvC,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;YAC1E,iEAAiE;YACjE,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;SAChE,CAAC,CAAC,CAAC;IAAA,CACJ;IAED,KAAK,CAAC,UAAU,GAA6B;QAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAAA,CACvC;IAED,KAAK,CAAC,aAAa,CAAC,OAA6B,EAA6B;QAC7E,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5D,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,gDAAgD,CAAC,CAAC;QAC9F,CAAC;QACD,uEAAuE;QACvE,qEAAqE;QACrE,qCAAqC;QACrC,IAAI,KAA6B,CAAC;QAClC,IAAI,CAAC;YACJ,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,UAAU,GAAiC;YAChD,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7D,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACzC,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;YACxF,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YAC5E,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3F,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;SACpB,CAAC;QACF,IAAI,OAAqB,CAAC;QAC1B,IAAI,CAAC;YACJ,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,yEAAyE;QACzE,2EAA2E;QAC3E,uEAAuE;QACvE,uEAAuE;QACvE,gEAAgE;QAChE,yEAAyE;QACzE,wEAAwE;QACxE,mEAAmE;QACnE,4BAA4B;QAC5B,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,oEAAoE;YACpE,4DAA4D;YAC5D,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC;gBACJ,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACvB,WAAW,GAAG,kCAAkC,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;YAChI,CAAC;YACD,MAAM,IAAI,aAAa,CACtB,iBAAiB,EACjB,mHAAmH,WAAW,EAAE,CAChI,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAAA,CAChD;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAA6B;QAC/D,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACvE,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,oBAAoB,SAAS,EAAE,CAAC,CAAC;QACvF,IAAI,OAAqB,CAAC;QAC1B,IAAI,CAAC;YACJ,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,2EAA2E;QAC3E,uEAAuE;QACvE,0EAA0E;QAC1E,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC;gBACJ,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACvB,WAAW,GAAG,kCAAkC,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;YAChI,CAAC;YACD,MAAM,IAAI,aAAa,CACtB,iBAAiB,EACjB,qBAAqB,SAAS,oFAAoF,WAAW,EAAE,CAC/H,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAAA,CAChD;IAED,wFAAwF;IAChF,KAAK,CAAC,eAAe,CAAC,EAAU,EAAE,IAAiC,EAAyB;QACnG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,aAAa,CAAC,gBAAgB,EAAE,4BAA4B,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,CAAC;YACJ,OAAO,MAAM,IAAI,EAAE,CAAC;QACrB,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;IAAA,CACD;IAEO,cAAc,CAAC,UAAwC,EAAE,OAAqB,EAA6B;QAClH,2EAA2E;QAC3E,yEAAyE;QACzE,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,MAAM,yBAAyB,GAC9B,IAAI,CAAC,OAAO,KAAK,SAAS;YACzB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;gBACnD,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAAA,CACtD,CAAC,CAAC;QACN,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,OAAO,EAAE,UAAU,EAAE;YAClE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,GAAG,EAAE,CAAC;gBACjB,yBAAyB,EAAE,EAAE,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAAA,CACpC;SACD,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IAAA,CACf;IAEO,iBAAiB,CAAC,EAAU,EAAQ;QAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,aAAa,CAAC,gBAAgB,EAAE,4BAA4B,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;IAAA,CACD;CACD;AAED,iGAAiG;AACjG,MAAM,UAAU,yBAAyB,CAAC,OAAyC,EAGjF;IACD,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC;QAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzE,GAAG,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC;KACvG,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;QACrF,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;QAC5E,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzE,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3F,GAAG,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACvG,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;KACtE,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAAA,CAC3B","sourcesContent":["/**\n * Minimal coding-agent runtime -> remote server assembly (1B.7h).\n *\n * Adapts first-party `AgentSession` instances to the public `@agent-forge/server`\n * session boundary so a preinstalled session adapter can run a deterministic\n * server end to end. The adapter only consumes the public `AgentSession` surface\n * and never reads private session objects.\n *\n * Snapshot transcripts use positional ids (`t-<index>`) that are stable within\n * one revision but not across history rewrites such as compaction; snapshots\n * stay authoritative and durable replay is journal-based, so replay does not\n * depend on these ids. Streaming is reported as snapshot-change notifications;\n * amortized delta progress belongs to a later slice.\n *\n * Durable operations and artifacts (E4-c): when a `DurableServiceV1` is\n * supplied, the service exposes the server `operations`/`artifacts` surfaces as\n * a thin adapter over the durable service — it never creates a second artifact\n * store. Artifact records project the protocol `ArtifactRef` 1:1 onto the SDK\n * `OutputArtifactRef` and carry base64 bytes so remote `artifact_stat` /\n * `artifact_read` survive restarts via the durable log replay; the runtime\n * in-memory artifact store remains the live write path (built in\n * capability-runtime). Keyed mutation commands (`operationId` on prompt/steer/\n * abort/set_model/set_thinking) persist their successful response snapshots as\n * deterministic `mutation-response:<sessionId>:<operationId>` artifact records\n * so a retry after a restart replays the recorded response; the server's\n * in-process LRU stays the live dedup path. Without a durable service the\n * surfaces stay undefined and the server answers `durable_unavailable` /\n * `not_implemented` explicitly.\n *\n * Deployment boundary: the durable writer lease is process-local memory. This\n * assembly is single-instance per durable store — the durable backend's file\n * writes are cross-process mutually exclusive (its `.lock`), while the writer\n * lease single-instance semantics remain process-local: who should claim the\n * lease still needs deployment-level coordination. On\n * startup the service claims the writer lease and, when the restored state\n * marks a dead writer (snapshot import), recovers it; a live foreign writer\n * keeps the service unavailable instead of fighting over the lease. Operations\n * left pending by a crashed process are swept to a rejected terminal so no\n * submitted operation can hang as `accepted` forever.\n */\nimport { Buffer } from \"node:buffer\";\nimport { randomUUID } from \"node:crypto\";\nimport type { Api, Model } from \"@agent-forge/ai/compat\";\nimport type {\n\tArtifactRef,\n\tJsonValue,\n\tModelMetadata,\n\tModelRef,\n\tProtocolError,\n\tProtocolErrorCode,\n\tSessionMetadata,\n\tSessionPhase,\n\tSessionSnapshot,\n\tThinkingLevel,\n\tTranscriptItem,\n\tUsage,\n} from \"@agent-forge/protocol\";\nimport {\n\ttype CreateSessionOptions,\n\ttype MutationResponseStore,\n\tPiServer,\n\tPiServerError,\n\ttype PiServerOptions,\n\ttype PiServerService,\n\ttype PiSessionArtifactStore,\n\ttype PiSessionOperationAck,\n\ttype PiSessionOperationStore,\n\ttype PiSessionRuntime,\n\ttype PiSessionRuntimeEvent,\n} from \"@agent-forge/server\";\nimport type { AgentSession, AgentSessionEvent } from \"../core/agent-session.ts\";\nimport type { OutputArtifactRef } from \"../core/extensions/public-api.ts\";\nimport { DurableServiceErrorV1, type DurableServiceV1 } from \"../durable/durable-service.ts\";\n\n/** Server-visible facts about one durable coding-agent session. */\nexport interface CodingAgentSessionDescriptor {\n\treadonly id: string;\n\treadonly name?: string;\n\t/** Working directory; omitted when unknown (legacy sessions record none). */\n\treadonly cwd?: string;\n\t/** Model instance to attach at creation; resolved from the protocol ref by the service. */\n\treadonly model?: Model<Api>;\n\t/** Thinking level for the created session. */\n\treadonly thinkingLevel?: ThinkingLevel;\n\t/**\n\t * Optional creation-time profile lock (protocol create `profileId`/\n\t * `profileVersion`) passed by the remote create command: stored unchanged\n\t * and echoed in snapshots, never interpreted by the runtime. Persisted in\n\t * the session header and echoed verbatim in snapshots across restarts;\n\t * absent when the create command did not carry it.\n\t */\n\treadonly profileId?: string;\n\treadonly profileVersion?: string;\n\treadonly createdAt: number;\n\treadonly updatedAt: number;\n}\n\n/**\n * Persistence boundary owned by the host. `create`/`open` hand over exclusive\n * ownership of one `AgentSession` to the server runtime until `dispose()`.\n */\nexport interface CodingAgentServerSessionSource {\n\tlist(): Promise<readonly CodingAgentSessionDescriptor[]>;\n\tcreate(descriptor: CodingAgentSessionDescriptor): Promise<AgentSession>;\n\topen(descriptor: CodingAgentSessionDescriptor): Promise<AgentSession>;\n}\n\n/** Model catalog projection used for `listModels` and `set_model` resolution. */\nexport interface CodingAgentServerModels {\n\tlist(): Promise<readonly ModelMetadata[]>;\n\tresolve(ref: ModelRef): Promise<Model<Api>>;\n}\n\nexport interface CodingAgentServerAssemblyOptions {\n\treadonly sessions: CodingAgentServerSessionSource;\n\treadonly models: CodingAgentServerModels;\n\treadonly listeners: PiServerOptions[\"listeners\"];\n\treadonly journal?: PiServerOptions[\"journal\"];\n\treadonly authenticate?: PiServerOptions[\"authenticate\"];\n\treadonly authorize?: PiServerOptions[\"authorize\"];\n\treadonly serverId?: string;\n\treadonly maxFrameLength?: number;\n\treadonly handshakeTimeoutMs?: number;\n\treadonly onError?: (error: Error) => void;\n\t/**\n\t * Durable service backing operation and artifact records. Single-instance\n\t * per store: the writer lease is process-local memory. Omission keeps the\n\t * server `operations` surface undefined (clients see `durable_unavailable`)\n\t * and the `artifacts` surface unconfigured (clients see `not_implemented`).\n\t */\n\treadonly durable?: DurableServiceV1;\n\t/**\n\t * Writer id claimed on the durable service. Hosts that also pass the same\n\t * store into their session source (`agentTaskResults.writerId`) supply it\n\t * here so one writer serves the whole process; omission generates a fresh\n\t * id (claim/recover behavior is unchanged).\n\t */\n\treadonly writerId?: string;\n\t/** Executors for submitted operation types; unknown types terminate as rejected. */\n\treadonly operationExecutors?: readonly CodingAgentOperationExecutor[];\n\t/** Clock for descriptor timestamps; defaults to the host clock. */\n\treadonly now?: () => number;\n}\n\nfunction requireIdle(session: AgentSession, action: string): void {\n\tif (!session.isIdle) {\n\t\tthrow new PiServerError(\"busy\", `Cannot ${action} while the session is busy`);\n\t}\n}\n\nfunction toError(error: unknown): PiServerError {\n\tif (error instanceof PiServerError) return error;\n\tconst message = error instanceof Error ? error.message : String(error);\n\tif (/reload in progress/i.test(message)) return new PiServerError(\"busy\", message);\n\tif (/compaction is in progress/i.test(message)) return new PiServerError(\"busy\", message);\n\tif (/already processing/i.test(message)) return new PiServerError(\"busy\", message);\n\t// Operational session failures (missing credentials, no active model,\n\t// extension rejections) must reach the remote client with their original\n\t// message instead of being folded into an unspecific internal error.\n\treturn new PiServerError(\"invalid_request\", message);\n}\n\nfunction jsonSafe(value: unknown): boolean {\n\tif (value === null || typeof value === \"string\" || typeof value === \"boolean\") return true;\n\tif (typeof value === \"number\") return Number.isFinite(value);\n\tif (Array.isArray(value)) return value.every(jsonSafe);\n\tif (typeof value !== \"object\" || Object.getPrototypeOf(value) !== Object.prototype) return false;\n\treturn Object.values(value).every(jsonSafe);\n}\n\n/** Payload stored in `DurableOperationRecordV1.data`. Adapter-owned shape. */\ninterface DurableOperationPayloadV1 {\n\treadonly status: \"pending\" | \"completed\" | \"rejected\";\n\treadonly sessionId: string;\n\treadonly operationType: string;\n\treadonly idempotencyKey?: string;\n\treadonly result?: JsonValue;\n\treadonly error?: { readonly code: ProtocolErrorCode; readonly message: string };\n\treadonly submittedAt: number;\n\treadonly terminalAt?: number;\n}\n\n/** Payload stored in `DurableArtifactRecordV1.data`. Adapter-owned shape. */\ninterface DurableArtifactPayloadV1 {\n\treadonly ref: OutputArtifactRef;\n\t/** Base64 artifact bytes so records survive the JSONL log replay. */\n\treadonly bytes: string;\n}\n\n/** An operation id paired with its latest recorded payload snapshot. */\ninterface RecordedOperation {\n\treadonly operationId: string;\n\treadonly payload: DurableOperationPayloadV1;\n}\n\n/** Parses an adapter-owned operation payload; undefined for foreign or malformed records. */\nfunction parseOperationPayload(value: unknown): DurableOperationPayloadV1 | undefined {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) return undefined;\n\tconst record = value as Record<string, unknown>;\n\tif (record.status !== \"pending\" && record.status !== \"completed\" && record.status !== \"rejected\") return undefined;\n\tif (typeof record.sessionId !== \"string\" || record.sessionId === \"\") return undefined;\n\tif (typeof record.operationType !== \"string\") return undefined;\n\tif (typeof record.submittedAt !== \"number\" || !Number.isFinite(record.submittedAt)) return undefined;\n\tlet error: DurableOperationPayloadV1[\"error\"];\n\tif (record.error !== undefined) {\n\t\tif (typeof record.error !== \"object\" || record.error === null || Array.isArray(record.error)) return undefined;\n\t\tconst entry = record.error as Record<string, unknown>;\n\t\tif (typeof entry.code !== \"string\" || typeof entry.message !== \"string\") return undefined;\n\t\terror = { code: entry.code as ProtocolErrorCode, message: entry.message };\n\t}\n\treturn {\n\t\tstatus: record.status,\n\t\tsessionId: record.sessionId,\n\t\toperationType: record.operationType,\n\t\t...(typeof record.idempotencyKey === \"string\" ? { idempotencyKey: record.idempotencyKey } : {}),\n\t\t...(record.result === undefined ? {} : { result: record.result as JsonValue }),\n\t\t...(error === undefined ? {} : { error }),\n\t\tsubmittedAt: record.submittedAt,\n\t\t...(typeof record.terminalAt === \"number\" ? { terminalAt: record.terminalAt } : {}),\n\t};\n}\n\n/** Parses an adapter-owned artifact payload; undefined for foreign or malformed records. */\nfunction parseArtifactPayload(value: unknown): DurableArtifactPayloadV1 | undefined {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) return undefined;\n\tconst record = value as Record<string, unknown>;\n\tconst ref = record.ref;\n\tif (typeof ref !== \"object\" || ref === null || Array.isArray(ref)) return undefined;\n\tconst entry = ref as Record<string, unknown>;\n\tif (\n\t\ttypeof entry.sessionId !== \"string\" ||\n\t\ttypeof entry.operationId !== \"string\" ||\n\t\ttypeof entry.artifactId !== \"string\" ||\n\t\ttypeof entry.kind !== \"string\" ||\n\t\ttypeof entry.mediaType !== \"string\" ||\n\t\ttypeof entry.truncated !== \"boolean\" ||\n\t\ttypeof entry.createdAt !== \"number\" ||\n\t\ttypeof record.bytes !== \"string\"\n\t) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tref: {\n\t\t\tsessionId: entry.sessionId,\n\t\t\toperationId: entry.operationId,\n\t\t\tartifactId: entry.artifactId,\n\t\t\tkind: entry.kind,\n\t\t\tmediaType: entry.mediaType,\n\t\t\t...(typeof entry.sizeBytes === \"number\" ? { sizeBytes: entry.sizeBytes } : {}),\n\t\t\ttruncated: entry.truncated,\n\t\t\tcreatedAt: entry.createdAt,\n\t\t},\n\t\tbytes: record.bytes,\n\t};\n}\n\n/**\n * Parses a stored mutation-response payload; undefined for foreign or\n * malformed records. The required-field assertion is deliberately minimal: the\n * full `SessionSnapshot` shape is already enforced by the wire codec when the\n * replayed snapshot is encoded into a response, so a damaged record only needs\n * to fail this check to fall back to a fresh execution.\n */\nfunction parseMutationResponsePayload(value: unknown, sessionId: string): SessionSnapshot | undefined {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) return undefined;\n\tconst record = value as Record<string, unknown>;\n\tif (\n\t\trecord.id !== sessionId ||\n\t\ttypeof record.cwd !== \"string\" ||\n\t\trecord.cwd === \"\" ||\n\t\ttypeof record.revision !== \"number\" ||\n\t\t!Number.isInteger(record.revision) ||\n\t\trecord.revision < 0 ||\n\t\t!Array.isArray(record.transcript)\n\t) {\n\t\treturn undefined;\n\t}\n\treturn value as SessionSnapshot;\n}\n\n/** Protocol `ArtifactRef` is a 1:1 projection of the SDK `OutputArtifactRef`. */\nfunction toProtocolArtifactRef(ref: OutputArtifactRef): ArtifactRef {\n\treturn {\n\t\tsessionId: ref.sessionId,\n\t\toperationId: ref.operationId,\n\t\tartifactId: ref.artifactId,\n\t\tkind: ref.kind,\n\t\tmediaType: ref.mediaType,\n\t\t...(ref.sizeBytes === undefined ? {} : { sizeBytes: ref.sizeBytes }),\n\t\ttruncated: ref.truncated,\n\t\tcreatedAt: ref.createdAt,\n\t};\n}\n\n/** Executes one submitted operation type; the abort signal fires on cancel requests. */\nexport interface CodingAgentOperationExecutor {\n\treadonly operationType: string;\n\texecute(input: {\n\t\treadonly sessionId: string;\n\t\treadonly operationId: string;\n\t\treadonly input?: JsonValue;\n\t\treadonly signal: AbortSignal;\n\t}): Promise<JsonValue>;\n}\n\nfunction projectUsage(usage: unknown): Usage | undefined {\n\tif (!usage || typeof usage !== \"object\" || Array.isArray(usage)) return undefined;\n\tconst record = usage as Record<string, unknown>;\n\tconst readCount = (key: string): number | undefined => {\n\t\tconst value = record[key];\n\t\treturn typeof value === \"number\" && Number.isFinite(value) ? Math.max(0, Math.trunc(value)) : undefined;\n\t};\n\tconst input = readCount(\"input\");\n\tconst output = readCount(\"output\");\n\tconst cacheRead = readCount(\"cacheRead\");\n\tconst cacheWrite = readCount(\"cacheWrite\");\n\tconst totalTokens = readCount(\"totalTokens\");\n\tif (input === undefined || output === undefined || cacheRead === undefined || cacheWrite === undefined) {\n\t\treturn undefined;\n\t}\n\tif (totalTokens === undefined) return undefined;\n\tconst cost = record.cost;\n\tif (!cost || typeof cost !== \"object\" || Array.isArray(cost)) return undefined;\n\tconst costRecord = cost as Record<string, unknown>;\n\tconst readCost = (key: string): number | undefined => {\n\t\tconst value = costRecord[key];\n\t\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n\t};\n\tconst costInput = readCost(\"input\");\n\tconst costOutput = readCost(\"output\");\n\tconst costCacheRead = readCost(\"cacheRead\");\n\tconst costCacheWrite = readCost(\"cacheWrite\");\n\tconst costTotal = readCost(\"total\");\n\tif (\n\t\tcostInput === undefined ||\n\t\tcostOutput === undefined ||\n\t\tcostCacheRead === undefined ||\n\t\tcostCacheWrite === undefined ||\n\t\tcostTotal === undefined\n\t) {\n\t\treturn undefined;\n\t}\n\tconst reasoning = readCount(\"reasoning\");\n\treturn {\n\t\tinput,\n\t\toutput,\n\t\tcacheRead,\n\t\tcacheWrite,\n\t\t...(reasoning === undefined ? {} : { reasoning }),\n\t\ttotalTokens,\n\t\tcost: {\n\t\t\tinput: costInput,\n\t\t\toutput: costOutput,\n\t\t\tcacheRead: costCacheRead,\n\t\t\tcacheWrite: costCacheWrite,\n\t\t\ttotal: costTotal,\n\t\t},\n\t};\n}\n\ntype ImagePart = { type: \"image\"; data: string; mimeType: string };\ntype TextPart = { type: \"text\"; text: string };\n\nfunction projectUserContent(content: string | readonly unknown[]): Array<TextPart | ImagePart> {\n\tif (typeof content === \"string\") return [{ type: \"text\", text: content }];\n\tconst projected: Array<TextPart | ImagePart> = [];\n\tfor (const part of content) {\n\t\tif (!part || typeof part !== \"object\") continue;\n\t\tconst record = part as Record<string, unknown>;\n\t\tif (record.type === \"text\" && typeof record.text === \"string\") {\n\t\t\tprojected.push({ type: \"text\", text: record.text });\n\t\t} else if (record.type === \"image\" && typeof record.data === \"string\" && typeof record.mimeType === \"string\") {\n\t\t\tprojected.push({ type: \"image\", data: record.data, mimeType: record.mimeType });\n\t\t}\n\t}\n\treturn projected;\n}\n\nfunction projectToolResultContent(content: readonly unknown[]): Array<TextPart | ImagePart> {\n\treturn projectUserContent(content);\n}\n\n/**\n * Projects the current `AgentSession` messages onto the protocol transcript.\n * Tool inputs are recovered from the matching assistant `toolCall` content;\n * `null` marks an unrecoverable input instead of fabricating one. `!`-command\n * bash executions project as `bash` tool items. Session-level summary and\n * extension messages (`branchSummary`, `compactionSummary`, `custom`) project\n * as snapshot-only `note` items; they never enter streaming progress. Note\n * items carry the text/summary face only — custom-message `details` and image\n * content parts are not projected. Item ids\n * stay positional (`t-<index>`): they are stable within one revision but not\n * across history rewrites such as compaction.\n */\nexport function projectSessionTranscript(session: AgentSession): TranscriptItem[] {\n\tconst messages = session.messages;\n\tconst toolInputs = new Map<string, JsonValue>();\n\tfor (const message of messages) {\n\t\tif (message.role !== \"assistant\") continue;\n\t\tfor (const part of message.content) {\n\t\t\tif (part.type === \"toolCall\") toolInputs.set(part.id, part.arguments as JsonValue);\n\t\t}\n\t}\n\tconst items: TranscriptItem[] = [];\n\tfor (const message of messages) {\n\t\tconst id = `t-${items.length}`;\n\t\tconst timestamp = Math.max(0, Math.trunc(message.timestamp));\n\t\tif (message.role === \"user\") {\n\t\t\titems.push({\n\t\t\t\tid,\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: projectUserContent(message.content),\n\t\t\t\ttimestamp,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role === \"toolResult\") {\n\t\t\tconst input = toolInputs.get(message.toolCallId);\n\t\t\tconst usage = projectUsage(message.usage);\n\t\t\tconst details = jsonSafe(message.details) ? (message.details as JsonValue) : undefined;\n\t\t\tconst base = {\n\t\t\t\tid,\n\t\t\t\trole: \"tool\" as const,\n\t\t\t\ttoolCallId: message.toolCallId,\n\t\t\t\ttoolName: message.toolName,\n\t\t\t\tinput: input !== undefined && jsonSafe(input) ? input : null,\n\t\t\t\tcontent: projectToolResultContent(message.content),\n\t\t\t\t...(details === undefined ? {} : { details }),\n\t\t\t\t...(usage === undefined ? {} : { usage }),\n\t\t\t\ttimestamp,\n\t\t\t};\n\t\t\tif (message.isError) {\n\t\t\t\tconst item: TranscriptItem = { ...base, status: \"error\", isError: true };\n\t\t\t\titems.push(item);\n\t\t\t} else {\n\t\t\t\tconst item: TranscriptItem = { ...base, status: \"complete\", isError: false };\n\t\t\t\titems.push(item);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role === \"bashExecution\") {\n\t\t\tconst failed = message.cancelled || (message.exitCode !== undefined && message.exitCode !== 0);\n\t\t\tconst base = {\n\t\t\t\tid,\n\t\t\t\trole: \"tool\" as const,\n\t\t\t\ttoolCallId: `bash-${id}`,\n\t\t\t\ttoolName: \"bash\",\n\t\t\t\tinput: { command: message.command } satisfies JsonValue,\n\t\t\t\tcontent: [{ type: \"text\" as const, text: message.output }],\n\t\t\t\tdetails: {\n\t\t\t\t\texitCode: message.exitCode ?? null,\n\t\t\t\t\tcancelled: message.cancelled,\n\t\t\t\t\ttruncated: message.truncated,\n\t\t\t\t} satisfies JsonValue,\n\t\t\t\ttimestamp,\n\t\t\t};\n\t\t\tif (failed) {\n\t\t\t\tconst item: TranscriptItem = { ...base, status: \"error\", isError: true };\n\t\t\t\titems.push(item);\n\t\t\t} else {\n\t\t\t\tconst item: TranscriptItem = { ...base, status: \"complete\", isError: false };\n\t\t\t\titems.push(item);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role === \"branchSummary\") {\n\t\t\titems.push({\n\t\t\t\tid,\n\t\t\t\trole: \"note\",\n\t\t\t\tkind: \"branchSummary\",\n\t\t\t\ttext: message.summary,\n\t\t\t\tfromId: message.fromId,\n\t\t\t\ttimestamp,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role === \"compactionSummary\") {\n\t\t\titems.push({\n\t\t\t\tid,\n\t\t\t\trole: \"note\",\n\t\t\t\tkind: \"compactionSummary\",\n\t\t\t\ttext: message.summary,\n\t\t\t\ttokensBefore: Math.max(0, Math.trunc(message.tokensBefore)),\n\t\t\t\ttimestamp,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role === \"custom\") {\n\t\t\tconst text =\n\t\t\t\ttypeof message.content === \"string\"\n\t\t\t\t\t? message.content\n\t\t\t\t\t: message.content\n\t\t\t\t\t\t\t.filter((part) => part.type === \"text\")\n\t\t\t\t\t\t\t.map((part) => part.text)\n\t\t\t\t\t\t\t.join(\"\\n\");\n\t\t\titems.push({\n\t\t\t\tid,\n\t\t\t\trole: \"note\",\n\t\t\t\tkind: \"custom\",\n\t\t\t\ttext,\n\t\t\t\tcustomType: message.customType,\n\t\t\t\tdisplay: message.display,\n\t\t\t\ttimestamp,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role !== \"assistant\") continue;\n\t\tconst streaming = session.isStreaming && message === messages.at(-1);\n\t\tconst content: Array<\n\t\t\t| { type: \"text\"; text: string }\n\t\t\t| { type: \"thinking\"; thinking: string; redacted?: boolean }\n\t\t\t| { type: \"toolCall\"; toolCallId: string; toolName: string; input: JsonValue }\n\t\t> = message.content.map((part) => {\n\t\t\tif (part.type === \"text\") return { type: \"text\", text: part.text };\n\t\t\tif (part.type === \"thinking\") {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\tthinking: part.thinking,\n\t\t\t\t\t...(part.redacted === undefined ? {} : { redacted: part.redacted }),\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"toolCall\",\n\t\t\t\ttoolCallId: part.id,\n\t\t\t\ttoolName: part.name,\n\t\t\t\tinput: part.arguments as JsonValue,\n\t\t\t};\n\t\t});\n\t\tconst usage = projectUsage(message.usage);\n\t\tconst common = {\n\t\t\tid,\n\t\t\trole: \"assistant\" as const,\n\t\t\tcontent,\n\t\t\tmodel: { provider: message.provider, id: message.model } satisfies ModelRef,\n\t\t\t...(message.responseModel ? { responseModel: message.responseModel } : {}),\n\t\t\t...(usage === undefined ? {} : { usage }),\n\t\t\ttimestamp,\n\t\t};\n\t\tif (streaming || message.stopReason === \"pending\" || message.stopReason === \"deferred\") {\n\t\t\tconst item: TranscriptItem = { ...common, status: \"streaming\" };\n\t\t\titems.push(item);\n\t\t} else if (message.stopReason === \"error\") {\n\t\t\tconst item: TranscriptItem = {\n\t\t\t\t...common,\n\t\t\t\tstatus: \"error\",\n\t\t\t\tstopReason: \"error\",\n\t\t\t\t...(message.errorMessage ? { errorMessage: message.errorMessage } : {}),\n\t\t\t};\n\t\t\titems.push(item);\n\t\t} else if (message.stopReason === \"aborted\") {\n\t\t\tconst item: TranscriptItem = {\n\t\t\t\t...common,\n\t\t\t\tstatus: \"aborted\",\n\t\t\t\tstopReason: \"aborted\",\n\t\t\t\t...(message.errorMessage ? { errorMessage: message.errorMessage } : {}),\n\t\t\t};\n\t\t\titems.push(item);\n\t\t} else {\n\t\t\tconst item: TranscriptItem = { ...common, status: \"complete\", stopReason: message.stopReason };\n\t\t\titems.push(item);\n\t\t}\n\t}\n\treturn items;\n}\n\nfunction sessionPhase(session: AgentSession): SessionPhase {\n\tif (session.isCompacting) return \"compaction\";\n\tif (session.isStreaming) return \"turn\";\n\treturn \"idle\";\n}\n\n/** Server-side runtime over one exclusively owned coding-agent session. */\nexport class CodingAgentSessionRuntime implements PiSessionRuntime {\n\tprivate readonly session: AgentSession;\n\tprivate readonly descriptor: CodingAgentSessionDescriptor;\n\tprivate readonly models: CodingAgentServerModels;\n\tprivate readonly listeners = new Set<(event: PiSessionRuntimeEvent) => void>();\n\tprivate readonly unsubscribe: () => void;\n\tprivate readonly onDisposed?: () => void;\n\tprivate disposed = false;\n\n\tconstructor(\n\t\tsession: AgentSession,\n\t\tdescriptor: CodingAgentSessionDescriptor,\n\t\toptions?: { readonly models?: CodingAgentServerModels; readonly onDisposed?: () => void },\n\t) {\n\t\tthis.session = session;\n\t\tthis.descriptor = descriptor;\n\t\tthis.models = options?.models ?? {\n\t\t\tlist: async () => [],\n\t\t\tresolve: () => {\n\t\t\t\tthrow new PiServerError(\"not_implemented\", \"Model resolution is not configured\");\n\t\t\t},\n\t\t};\n\t\tthis.onDisposed = options?.onDisposed;\n\t\tthis.unsubscribe = session.subscribe((event: AgentSessionEvent) => this.onSessionEvent(event));\n\t}\n\n\tsnapshot(): SessionSnapshot {\n\t\tconst queuedSteer = this.session.getSteeringMessages();\n\t\tconst name = this.session.sessionName ?? this.descriptor.name;\n\t\treturn {\n\t\t\tid: this.descriptor.id,\n\t\t\t...(name === undefined ? {} : { name }),\n\t\t\t// The protocol requires a non-empty snapshot cwd. This runtime only\n\t\t\t// describes acquired sessions: creates validate a non-empty cwd and\n\t\t\t// opens fall back to a non-empty cwd inside the source, so the\n\t\t\t// SessionManager cwd is the authoritative value when the descriptor\n\t\t\t// carries none (legacy sessions record no cwd).\n\t\t\tcwd: this.descriptor.cwd ?? this.session.sessionManager.getCwd(),\n\t\t\tcreatedAt: this.descriptor.createdAt,\n\t\t\tupdatedAt: this.descriptor.updatedAt,\n\t\t\tphase: sessionPhase(this.session),\n\t\t\tmodel: this.currentModelRef(),\n\t\t\tthinkingLevel: this.session.thinkingLevel,\n\t\t\t...(this.descriptor.profileId === undefined ? {} : { profileId: this.descriptor.profileId }),\n\t\t\t...(this.descriptor.profileVersion === undefined ? {} : { profileVersion: this.descriptor.profileVersion }),\n\t\t\tattached: false,\n\t\t\tlocked: false,\n\t\t\t// Durable revision: the SessionManager entry sequence. It survives\n\t\t\t// reopen and only advances when a persisted entry lands.\n\t\t\trevision: this.session.getRevision().sequence,\n\t\t\ttranscript: projectSessionTranscript(this.session),\n\t\t\tqueuedSteer: queuedSteer.map((text, index) => ({\n\t\t\t\tid: `steer-${index}`,\n\t\t\t\trole: \"user\" as const,\n\t\t\t\tcontent: [{ type: \"text\" as const, text }],\n\t\t\t\ttimestamp: this.descriptor.updatedAt,\n\t\t\t})),\n\t\t\tqueuedSteerCount: queuedSteer.length,\n\t\t};\n\t}\n\n\tgetPhase(): SessionPhase {\n\t\treturn sessionPhase(this.session);\n\t}\n\n\tasync prompt(input: { readonly text: string }): Promise<void> {\n\t\tthis.assertUsable();\n\t\trequireIdle(this.session, \"submit a prompt\");\n\t\ttry {\n\t\t\tawait this.session.prompt(input.text);\n\t\t} catch (error) {\n\t\t\tthrow toError(error);\n\t\t}\n\t}\n\n\tasync steer(input: { readonly text: string }): Promise<void> {\n\t\tthis.assertUsable();\n\t\tif (this.session.isIdle) {\n\t\t\tthrow new PiServerError(\"busy\", \"There is no active prompt to steer\");\n\t\t}\n\t\ttry {\n\t\t\tawait this.session.steer(input.text);\n\t\t} catch (error) {\n\t\t\tthrow toError(error);\n\t\t}\n\t}\n\n\tasync abort(): Promise<void> {\n\t\tthis.assertUsable();\n\t\ttry {\n\t\t\tawait this.session.abort();\n\t\t} catch (error) {\n\t\t\tthrow toError(error);\n\t\t}\n\t}\n\n\tasync setModel(model: ModelRef): Promise<void> {\n\t\tthis.assertUsable();\n\t\trequireIdle(this.session, \"change the model\");\n\t\tlet resolved: Model<Api>;\n\t\ttry {\n\t\t\tresolved = await this.models.resolve(model);\n\t\t\tawait this.session.setModel(resolved);\n\t\t} catch (error) {\n\t\t\tthrow toError(error);\n\t\t}\n\t}\n\n\tasync setThinking(thinkingLevel: ThinkingLevel): Promise<void> {\n\t\tthis.assertUsable();\n\t\trequireIdle(this.session, \"change the thinking level\");\n\t\ttry {\n\t\t\tthis.session.setThinkingLevel(thinkingLevel);\n\t\t} catch (error) {\n\t\t\tthrow toError(error);\n\t\t}\n\t}\n\n\tsubscribe(listener: (event: PiSessionRuntimeEvent) => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn () => this.listeners.delete(listener);\n\t}\n\n\tasync dispose(): Promise<void> {\n\t\tif (this.disposed) return;\n\t\tthis.disposed = true;\n\t\tthis.unsubscribe();\n\t\ttry {\n\t\t\tawait this.session.dispose();\n\t\t} finally {\n\t\t\tthis.onDisposed?.();\n\t\t}\n\t}\n\n\tprivate assertUsable(): void {\n\t\tif (this.disposed) throw new PiServerError(\"invalid_request\", \"Session runtime is disposed\");\n\t}\n\n\tprivate onSessionEvent(_event: AgentSessionEvent): void {\n\t\t// Every event still broadcasts a snapshot, but the revision value is the\n\t\t// durable SessionManager sequence: events that persist no entry keep the\n\t\t// same revision number. Clients accept equal-revision snapshots (only\n\t\t// regressions are dropped), so no state is lost.\n\t\tfor (const listener of [...this.listeners]) {\n\t\t\ttry {\n\t\t\t\tlistener({ type: \"snapshot\" });\n\t\t\t} catch {\n\t\t\t\t// Snapshot observers must not affect the session.\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate currentModelRef(): ModelRef {\n\t\tconst model = this.session.model;\n\t\t// Defensive layer: the create/open preflights reject model-less sessions,\n\t\t// so a live runtime always has a model. A residual model-less runtime must\n\t\t// still fail diagnosably instead of surfacing as an unspecific internal\n\t\t// error through snapshot projection.\n\t\tif (!model) throw new PiServerError(\"invalid_request\", \"Session has no active model\");\n\t\treturn { provider: model.provider, id: model.id };\n\t}\n}\n\n/** Exclusive `PiServerService` over a coding-agent session source. */\nexport class CodingAgentServerService implements PiServerService {\n\tprivate readonly source: CodingAgentServerSessionSource;\n\tprivate readonly models: CodingAgentServerModels;\n\tprivate readonly now: () => number;\n\tprivate readonly acquired = new Map<string, CodingAgentSessionRuntime>();\n\tprivate readonly opening = new Set<string>();\n\tprivate readonly durable: DurableServiceV1 | undefined;\n\tprivate readonly executors = new Map<string, CodingAgentOperationExecutor>();\n\t/** In-memory operation store surface; undefined without a durable service. */\n\tprivate readonly operationStore: PiSessionOperationStore | undefined;\n\t/** In-memory artifact store surface; undefined without a durable service. */\n\tprivate readonly artifactStore: PiSessionArtifactStore | undefined;\n\t/** Durable mutation-response store surface; undefined without a durable service. */\n\tprivate readonly mutationResponseStore: MutationResponseStore | undefined;\n\tprivate readonly writerId: string | undefined;\n\tprivate leaseReady = false;\n\t/** Idempotency key (`sessionId\\0key`) -> recorded operation. */\n\tprivate readonly idempotencyIndex = new Map<string, RecordedOperation>();\n\t/** Operation id -> recorded payload snapshot for idempotent acks. */\n\tprivate readonly recordedOperations = new Map<string, RecordedOperation>();\n\t/** Active executor abort controllers by operation id. */\n\tprivate readonly inFlight = new Map<string, AbortController>();\n\t/** Cancel requests observed while the executor was still draining. */\n\tprivate readonly cancelRequested = new Set<string>();\n\n\tconstructor(options: {\n\t\treadonly sessions: CodingAgentServerSessionSource;\n\t\treadonly models: CodingAgentServerModels;\n\t\treadonly durable?: DurableServiceV1;\n\t\treadonly writerId?: string;\n\t\treadonly operationExecutors?: readonly CodingAgentOperationExecutor[];\n\t\treadonly now?: () => number;\n\t}) {\n\t\tthis.source = options.sessions;\n\t\tthis.models = options.models;\n\t\tthis.now = options.now ?? (() => Date.now());\n\t\tfor (const executor of options.operationExecutors ?? []) this.executors.set(executor.operationType, executor);\n\t\tif (options.durable) {\n\t\t\tthis.durable = options.durable;\n\t\t\tthis.writerId = options.writerId ?? randomUUID();\n\t\t\tthis.claimWriterLease();\n\t\t\tif (this.leaseReady) this.sweepInterruptedOperations();\n\t\t\tthis.operationStore = {\n\t\t\t\tsubmit: (input) => this.submitOperation(input),\n\t\t\t\tcancel: (input) => this.cancelOperation(input),\n\t\t\t\tresult: (input) => this.resultOperation(input),\n\t\t\t};\n\t\t\tthis.artifactStore = {\n\t\t\t\tstat: (sessionId, artifactId) => this.statArtifact(sessionId, artifactId),\n\t\t\t\tread: (sessionId, artifactId, readerOptions) => this.readArtifact(sessionId, artifactId, readerOptions),\n\t\t\t};\n\t\t\tthis.mutationResponseStore = {\n\t\t\t\tload: (sessionId, operationId) => this.loadMutationResponse(sessionId, operationId),\n\t\t\t\trecord: (sessionId, operationId, snapshot) => this.recordMutationResponse(sessionId, operationId, snapshot),\n\t\t\t};\n\t\t}\n\t}\n\n\t/** Remote artifact access; unconfigured without a durable service. */\n\tget artifacts(): PiSessionArtifactStore | undefined {\n\t\treturn this.artifactStore;\n\t}\n\n\t/** Durable operation commands; unconfigured without a durable service. */\n\tget operations(): PiSessionOperationStore | undefined {\n\t\treturn this.operationStore;\n\t}\n\n\t/** Durable replay of mutation-command responses; unconfigured without a durable service. */\n\tget mutationResponses(): MutationResponseStore | undefined {\n\t\treturn this.mutationResponseStore;\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Durable writer lease (single-instance boundary)\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Claims the writer lease at startup. A holder found in restored state\n\t * belonged to a dead process (snapshot import), so it is recovered; a live\n\t * foreign writer keeps the lease and this service stays unavailable.\n\t */\n\tprivate claimWriterLease(): void {\n\t\tconst durable = this.durable;\n\t\tconst writerId = this.writerId;\n\t\tif (!durable || !writerId) return;\n\t\tif (durable.claimWriter(writerId).status === \"claimed\") {\n\t\t\tthis.leaseReady = true;\n\t\t\treturn;\n\t\t}\n\t\tthis.leaseReady = durable.recoverWriter(writerId).status === \"recovered\";\n\t}\n\n\t/**\n\t * Releases the store writer lease on graceful shutdown (D-067 phase 2 S2)\n\t * so a successor process can claim immediately. Best-effort: only a held\n\t * lease is released, and failures are swallowed — a crashed process leaves\n\t * the lease for the TTL recovery path instead.\n\t */\n\treleaseWriterLease(): void {\n\t\tconst durable = this.durable;\n\t\tconst writerId = this.writerId;\n\t\tif (!durable || !writerId || !this.leaseReady) return;\n\t\ttry {\n\t\t\tdurable.releaseWriter(writerId);\n\t\t\tthis.leaseReady = false;\n\t\t} catch {\n\t\t\t// Shutdown release is advisory; the TTL recovery path handles the rest.\n\t\t}\n\t}\n\n\t/** Persists one adapter-owned operation record; a lost lease degrades to `durable_unavailable`. */\n\tprivate persistOperation(operationId: string, sessionId: string, payload: DurableOperationPayloadV1): void {\n\t\ttry {\n\t\t\tthis.durable?.persistOperation({\n\t\t\t\twriterId: this.writerId ?? \"\",\n\t\t\t\toperationId,\n\t\t\t\tsessionId,\n\t\t\t\tdata: payload,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (error instanceof DurableServiceErrorV1) {\n\t\t\t\tthrow new PiServerError(\"durable_unavailable\", error.message);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate requireDurable(): DurableServiceV1 {\n\t\tif (!this.durable || !this.leaseReady) {\n\t\t\tthrow new PiServerError(\"durable_unavailable\", \"Durable operation store is not ready\");\n\t\t}\n\t\treturn this.durable;\n\t}\n\n\t/**\n\t * Rejects operations that were pending when the previous process stopped:\n\t * no executor survives a crash, so replayed `pending` records are swept to\n\t * a rejected terminal and their idempotency keys keep returning that\n\t/**\n\t * recorded terminal.\n\t */\n\tprivate sweepInterruptedOperations(): void {\n\t\tconst durable = this.durable;\n\t\tif (!durable) return;\n\t\tfor (const record of durable.exportState().operations) {\n\t\t\tconst payload = parseOperationPayload(record.data);\n\t\t\tif (!payload) continue;\n\t\t\tconst resolved: DurableOperationPayloadV1 =\n\t\t\t\tpayload.status === \"pending\"\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...payload,\n\t\t\t\t\t\t\tstatus: \"rejected\",\n\t\t\t\t\t\t\terror: { code: \"internal_error\", message: \"Operation did not complete before the server stopped\" },\n\t\t\t\t\t\t\tterminalAt: this.now(),\n\t\t\t\t\t\t}\n\t\t\t\t\t: payload;\n\t\t\tif (resolved !== payload) this.persistOperation(record.operationId, payload.sessionId, resolved);\n\t\t\tthis.recordOperation(record.operationId, resolved);\n\t\t}\n\t}\n\n\tprivate recordOperation(operationId: string, payload: DurableOperationPayloadV1): void {\n\t\tthis.recordedOperations.set(operationId, { operationId, payload });\n\t\tif (payload.idempotencyKey !== undefined) {\n\t\t\tthis.idempotencyIndex.set(`${payload.sessionId}\\0${payload.idempotencyKey}`, { operationId, payload });\n\t\t}\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Operation commands (server `operations` surface)\n\t// -------------------------------------------------------------------------\n\n\tprivate async submitOperation(input: {\n\t\treadonly sessionId: string;\n\t\treadonly operationType: string;\n\t\treadonly input?: JsonValue;\n\t\treadonly idempotencyKey?: string;\n\t\treadonly expectedRevision?: number;\n\t}): Promise<PiSessionOperationAck> {\n\t\tthis.requireDurable();\n\t\t// Idempotent replay precedes the live-session check: a recorded terminal\n\t\t// must stay answerable after a restart even though no runtime is open.\n\t\tif (input.idempotencyKey !== undefined) {\n\t\t\tconst recorded = this.idempotencyIndex.get(`${input.sessionId}\\0${input.idempotencyKey}`);\n\t\t\tif (recorded) return this.ackOf(recorded);\n\t\t}\n\t\tconst runtime = this.acquired.get(input.sessionId);\n\t\tif (!runtime) throw new PiServerError(\"not_found\", `Session is not open: ${input.sessionId}`);\n\t\tif (input.expectedRevision !== undefined) {\n\t\t\tconst revision = (await runtime.snapshot()).revision;\n\t\t\tif (revision !== input.expectedRevision) {\n\t\t\t\tthrow new PiServerError(\n\t\t\t\t\t\"operation_conflict\",\n\t\t\t\t\t`Session revision is ${revision}, expectedRevision was ${input.expectedRevision}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst operationId = randomUUID();\n\t\tconst payload: DurableOperationPayloadV1 = {\n\t\t\tstatus: \"pending\",\n\t\t\tsessionId: input.sessionId,\n\t\t\toperationType: input.operationType,\n\t\t\t...(input.idempotencyKey === undefined ? {} : { idempotencyKey: input.idempotencyKey }),\n\t\t\tsubmittedAt: this.now(),\n\t\t};\n\t\tthis.persistOperation(operationId, input.sessionId, payload);\n\t\tthis.recordOperation(operationId, payload);\n\t\t// Fire-and-forget execution: the ack must reach the client immediately,\n\t\t// otherwise a long operation hides its own operationId and cancel/result\n\t\t// stay unreachable. `executeOperation` records executor failures as\n\t\t// rejected terminals; only a terminal persist failure can still escape,\n\t\t// so pin the in-memory record to a rejected terminal carrying the\n\t\t// original error. The durable log keeps `pending` and the restart sweep\n\t\t// converges the record.\n\t\tthis.executeOperation(operationId, payload, input.input).catch((error: unknown) => {\n\t\t\tthis.recordOperation(operationId, {\n\t\t\t\t...payload,\n\t\t\t\tstatus: \"rejected\",\n\t\t\t\terror: { code: \"internal_error\", message: error instanceof Error ? error.message : String(error) },\n\t\t\t\tterminalAt: this.now(),\n\t\t\t});\n\t\t});\n\t\treturn this.ackOf({ operationId, payload });\n\t}\n\n\t/**\n\t * Runs the executor and persists the terminal state. Cancel is only a\n\t * request: the terminal record is written strictly after the executor\n\t * drains, so `cancel -> drain -> terminal` is the observable order.\n\t */\n\tprivate async executeOperation(\n\t\toperationId: string,\n\t\tpayload: DurableOperationPayloadV1,\n\t\tinput: JsonValue | undefined,\n\t): Promise<PiSessionOperationAck> {\n\t\tconst executor = this.executors.get(payload.operationType);\n\t\tif (!executor) {\n\t\t\treturn this.completeOperation(operationId, {\n\t\t\t\t...payload,\n\t\t\t\tstatus: \"rejected\",\n\t\t\t\terror: {\n\t\t\t\t\tcode: \"not_implemented\",\n\t\t\t\t\tmessage: `No executor is registered for operation type ${payload.operationType}`,\n\t\t\t\t},\n\t\t\t\tterminalAt: this.now(),\n\t\t\t});\n\t\t}\n\t\tconst controller = new AbortController();\n\t\tthis.inFlight.set(operationId, controller);\n\t\tlet terminal: DurableOperationPayloadV1;\n\t\ttry {\n\t\t\tconst result = await executor.execute({\n\t\t\t\tsessionId: payload.sessionId,\n\t\t\t\toperationId,\n\t\t\t\t...(input === undefined ? {} : { input }),\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\t\t\tterminal = { ...payload, status: \"completed\", result, terminalAt: this.now() };\n\t\t} catch (error) {\n\t\t\tterminal = {\n\t\t\t\t...payload,\n\t\t\t\tstatus: \"rejected\",\n\t\t\t\terror: this.toTerminalError(operationId, error),\n\t\t\t\tterminalAt: this.now(),\n\t\t\t};\n\t\t} finally {\n\t\t\tthis.inFlight.delete(operationId);\n\t\t\tthis.cancelRequested.delete(operationId);\n\t\t}\n\t\treturn this.completeOperation(operationId, terminal);\n\t}\n\n\tprivate toTerminalError(\n\t\toperationId: string,\n\t\terror: unknown,\n\t): {\n\t\treadonly code: ProtocolErrorCode;\n\t\treadonly message: string;\n\t} {\n\t\tif (this.cancelRequested.has(operationId)) {\n\t\t\treturn { code: \"operation_cancelled\", message: \"Operation was cancelled before completion\" };\n\t\t}\n\t\tif (error instanceof PiServerError) return { code: error.code, message: error.message };\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\treturn { code: \"invalid_request\", message };\n\t}\n\n\tprivate completeOperation(operationId: string, terminal: DurableOperationPayloadV1): PiSessionOperationAck {\n\t\tthis.persistOperation(operationId, terminal.sessionId, terminal);\n\t\tthis.recordOperation(operationId, terminal);\n\t\treturn this.ackOf({ operationId, payload: terminal });\n\t}\n\n\tprivate cancelOperation(input: { readonly sessionId: string; readonly operationId: string }): PiSessionOperationAck {\n\t\tthis.requireDurable();\n\t\tconst recorded = this.recordedOperations.get(input.operationId);\n\t\t// Session ownership is part of the lookup: a foreign session gets the\n\t\t// same not-found answer as a missing id, without leaking ownership.\n\t\tif (!recorded || recorded.payload.sessionId !== input.sessionId) {\n\t\t\tthrow new PiServerError(\"operation_not_found\", `Unknown operation: ${input.operationId}`);\n\t\t}\n\t\tif (recorded.payload.status !== \"pending\") return this.ackOf(recorded);\n\t\t// Record the cancel request and signal the executor. The terminal state\n\t\t// is only written once the executor drained (or nothing is draining).\n\t\tthis.cancelRequested.add(input.operationId);\n\t\tthis.inFlight.get(input.operationId)?.abort();\n\t\treturn { operationId: input.operationId, status: \"accepted\" };\n\t}\n\n\tprivate resultOperation(input: { readonly sessionId: string; readonly operationId: string }): PiSessionOperationAck {\n\t\tthis.requireDurable();\n\t\tconst recorded = this.recordedOperations.get(input.operationId);\n\t\t// Session ownership is part of the lookup: a foreign session gets the\n\t\t// same not-found answer as a missing id, without leaking ownership.\n\t\tif (!recorded || recorded.payload.sessionId !== input.sessionId) {\n\t\t\tthrow new PiServerError(\"operation_not_found\", `Unknown operation: ${input.operationId}`);\n\t\t}\n\t\treturn this.ackOf(recorded);\n\t}\n\n\tprivate ackOf(recorded: RecordedOperation): PiSessionOperationAck {\n\t\tconst { operationId, payload } = recorded;\n\t\tif (payload.status === \"completed\") {\n\t\t\treturn {\n\t\t\t\toperationId,\n\t\t\t\tstatus: \"completed\",\n\t\t\t\t...(payload.result === undefined ? {} : { result: payload.result }),\n\t\t\t};\n\t\t}\n\t\tif (payload.status === \"rejected\") {\n\t\t\treturn {\n\t\t\t\toperationId,\n\t\t\t\tstatus: \"rejected\",\n\t\t\t\t...(payload.error === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: { error: { code: payload.error.code, message: payload.error.message } satisfies ProtocolError }),\n\t\t\t};\n\t\t}\n\t\treturn { operationId, status: \"accepted\" };\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Artifact adapter (output-artifacts face + durable persistence)\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Mirrors one runtime output artifact into the durable store so remote\n\t * `artifact_stat`/`artifact_read` can serve it, including after a restart\n\t * via log replay. The runtime in-memory store (capability-runtime) stays\n\t * the live write path; this adds durable persistence, not a second store.\n\t */\n\tpersistOutputArtifact(sessionId: string, ref: OutputArtifactRef, bytes: Uint8Array): ArtifactRef {\n\t\tthis.requireDurable();\n\t\tif (ref.sessionId !== sessionId) {\n\t\t\tthrow new PiServerError(\"invalid_request\", \"Artifact sessionId must match the owning session\");\n\t\t}\n\t\tif (ref.artifactId === \"\") throw new PiServerError(\"invalid_request\", \"Artifact id must not be empty\");\n\t\tif (ref.sizeBytes !== undefined && ref.sizeBytes !== bytes.byteLength) {\n\t\t\tthrow new PiServerError(\"invalid_request\", \"Artifact sizeBytes must match the payload length\");\n\t\t}\n\t\ttry {\n\t\t\tthis.durable?.persistArtifact({\n\t\t\t\twriterId: this.writerId ?? \"\",\n\t\t\t\tartifactId: ref.artifactId,\n\t\t\t\tsessionId,\n\t\t\t\tdata: { ref, bytes: Buffer.from(bytes).toString(\"base64\") } satisfies DurableArtifactPayloadV1,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (error instanceof DurableServiceErrorV1) {\n\t\t\t\tthrow new PiServerError(\"durable_unavailable\", error.message);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\treturn toProtocolArtifactRef(ref);\n\t}\n\n\tprivate statArtifact(sessionId: string, artifactId: string): ArtifactRef {\n\t\treturn toProtocolArtifactRef(this.loadArtifactPayload(sessionId, artifactId).ref);\n\t}\n\n\tprivate readArtifact(\n\t\tsessionId: string,\n\t\tartifactId: string,\n\t\toptions: { readonly offset: number; readonly maxBytes: number },\n\t): {\n\t\treadonly artifact: ArtifactRef;\n\t\treadonly data: Uint8Array;\n\t\treadonly nextOffset?: number;\n\t\treadonly eof: boolean;\n\t} {\n\t\tconst payload = this.loadArtifactPayload(sessionId, artifactId);\n\t\tconst bytes = Buffer.from(payload.bytes, \"base64\");\n\t\tconst end = Math.min(options.offset + options.maxBytes, bytes.byteLength);\n\t\tconst data = new Uint8Array(bytes.subarray(options.offset, end));\n\t\tconst eof = end >= bytes.byteLength;\n\t\treturn {\n\t\t\tartifact: toProtocolArtifactRef(payload.ref),\n\t\t\tdata,\n\t\t\t...(eof ? {} : { nextOffset: end }),\n\t\t\teof,\n\t\t};\n\t}\n\n\t/**\n\t * Loads one artifact payload through the durable service.\n\t */\n\tprivate loadArtifactPayload(sessionId: string, artifactId: string): DurableArtifactPayloadV1 {\n\t\tconst durable = this.requireDurable();\n\t\tconst record = durable.loadArtifact({ artifactId });\n\t\tif (!record || record.sessionId !== sessionId) {\n\t\t\tthrow new PiServerError(\"not_found\", `Unknown artifact: ${artifactId}`);\n\t\t}\n\t\tconst payload = parseArtifactPayload(record.data);\n\t\tif (!payload || payload.ref.sessionId !== sessionId || payload.ref.artifactId !== artifactId) {\n\t\t\tthrow new PiServerError(\"durable_unavailable\", \"Stored artifact record is malformed\");\n\t\t}\n\t\treturn payload;\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Mutation-response store (idempotent replay of keyed mutation commands)\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Deterministic artifact id for one mutation-command response, following the\n\t * `agent-task:<taskId>` precedent for derived artifact ids.\n\t */\n\tprivate mutationResponseArtifactId(sessionId: string, operationId: string): string {\n\t\treturn `mutation-response:${sessionId}:${operationId}`;\n\t}\n\n\t/**\n\t * Loads a recorded response through the durable service. The durable log\n\t * was already replayed into memory at construction, so this read never\n\t * touches the disk. A missing or malformed record yields undefined so the\n\t * caller re-executes; unexpected durable failures propagate and are\n\t * reported (and treated as a miss) by the server's idempotency layer.\n\t */\n\tprivate async loadMutationResponse(sessionId: string, operationId: string): Promise<SessionSnapshot | undefined> {\n\t\tconst durable = this.requireDurable();\n\t\tconst record = durable.loadArtifact({\n\t\t\tartifactId: this.mutationResponseArtifactId(sessionId, operationId),\n\t\t});\n\t\tif (record === undefined || record.sessionId !== sessionId) return undefined;\n\t\tconst snapshot = parseMutationResponsePayload(record.data, sessionId);\n\t\treturn snapshot === undefined ? undefined : structuredClone(snapshot);\n\t}\n\n\t/**\n\t * Persists one successful response snapshot as a durable artifact record so\n\t * retries after a restart replay it. The payload is the `SessionSnapshot`\n\t * itself: every field is JSON-safe, so the JSONL durable log round-trips it\n\t * without an adapter-specific envelope.\n\t */\n\tprivate async recordMutationResponse(\n\t\tsessionId: string,\n\t\toperationId: string,\n\t\tsnapshot: SessionSnapshot,\n\t): Promise<void> {\n\t\tconst durable = this.requireDurable();\n\t\ttry {\n\t\t\tdurable.persistArtifact({\n\t\t\t\twriterId: this.writerId ?? \"\",\n\t\t\t\tartifactId: this.mutationResponseArtifactId(sessionId, operationId),\n\t\t\t\tsessionId,\n\t\t\t\tdata: snapshot,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (error instanceof DurableServiceErrorV1) {\n\t\t\t\tthrow new PiServerError(\"durable_unavailable\", error.message);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync listSessions(): Promise<SessionMetadata[]> {\n\t\tconst descriptors = await this.source.list();\n\t\treturn descriptors.map((descriptor) => ({\n\t\t\tid: descriptor.id,\n\t\t\tcreatedAt: descriptor.createdAt,\n\t\t\tupdatedAt: descriptor.updatedAt,\n\t\t\t...(descriptor.name === undefined ? {} : { sessionName: descriptor.name }),\n\t\t\t// Legacy sessions record no cwd; the protocol marks it optional.\n\t\t\t...(descriptor.cwd === undefined ? {} : { cwd: descriptor.cwd }),\n\t\t}));\n\t}\n\n\tasync listModels(): Promise<ModelMetadata[]> {\n\t\treturn [...(await this.models.list())];\n\t}\n\n\tasync createSession(options: CreateSessionOptions): Promise<PiSessionRuntime> {\n\t\tthis.assertNotAcquired(options.id);\n\t\tif (options.cwd === undefined || options.cwd.trim() === \"\") {\n\t\t\tthrow new PiServerError(\"invalid_request\", \"Creating a coding-agent session requires a cwd\");\n\t\t}\n\t\t// The protocol carries a model ref; resolve it to a Model instance the\n\t\t// same way runtime `set_model` does. An unknown ref fails the create\n\t\t// instead of being silently dropped.\n\t\tlet model: Model<Api> | undefined;\n\t\ttry {\n\t\t\tmodel = options.model === undefined ? undefined : await this.models.resolve(options.model);\n\t\t} catch (error) {\n\t\t\tthrow toError(error);\n\t\t}\n\t\tconst timestamp = Math.max(0, Math.trunc(this.now()));\n\t\tconst descriptor: CodingAgentSessionDescriptor = {\n\t\t\tid: options.id,\n\t\t\t...(options.name === undefined ? {} : { name: options.name }),\n\t\t\tcwd: options.cwd,\n\t\t\t...(model === undefined ? {} : { model }),\n\t\t\t...(options.thinkingLevel === undefined ? {} : { thinkingLevel: options.thinkingLevel }),\n\t\t\t...(options.profileId === undefined ? {} : { profileId: options.profileId }),\n\t\t\t...(options.profileVersion === undefined ? {} : { profileVersion: options.profileVersion }),\n\t\t\tcreatedAt: timestamp,\n\t\t\tupdatedAt: timestamp,\n\t\t};\n\t\tlet session: AgentSession;\n\t\ttry {\n\t\t\tsession = await this.openExclusively(descriptor.id, () => this.source.create(descriptor));\n\t\t} catch (error) {\n\t\t\tthrow toError(error);\n\t\t}\n\t\t// Lazy-model contract: createAgentSession does not fail when no model is\n\t\t// resolvable (no auth, empty catalog); it returns a session whose model is\n\t\t// undefined. A model-less live session cannot serve prompts and breaks\n\t\t// every client's list/server_snapshot, so the create fails explicitly.\n\t\t// Disposing rolls the session back before any registration; the\n\t\t// SessionManager has not flushed the JSONL yet (persistence defers until\n\t\t// the first assistant message), so nothing stays on disk, and a flushed\n\t\t// residue would still be harmless: reopening it runs into the same\n\t\t// preflight in openSession.\n\t\tif (session.model === undefined) {\n\t\t\t// Keep the structured rejection even if rollback fails; the cleanup\n\t\t\t// failure is appended to the message instead of masking it.\n\t\t\tlet cleanupNote = \"\";\n\t\t\ttry {\n\t\t\t\tawait session.dispose();\n\t\t\t} catch (disposeError) {\n\t\t\t\tcleanupNote = ` (session cleanup also failed: ${disposeError instanceof Error ? disposeError.message : String(disposeError)})`;\n\t\t\t}\n\t\t\tthrow new PiServerError(\n\t\t\t\t\"invalid_request\",\n\t\t\t\t`Creating a coding-agent session requires a resolvable model; none is available for this server's agent directory${cleanupNote}`,\n\t\t\t);\n\t\t}\n\t\treturn this.acquireRuntime(descriptor, session);\n\t}\n\n\tasync openSession(sessionId: string): Promise<PiSessionRuntime> {\n\t\tthis.assertNotAcquired(sessionId);\n\t\tconst descriptors = await this.source.list();\n\t\tconst descriptor = descriptors.find((entry) => entry.id === sessionId);\n\t\tif (!descriptor) throw new PiServerError(\"not_found\", `Unknown session: ${sessionId}`);\n\t\tlet session: AgentSession;\n\t\ttry {\n\t\t\tsession = await this.openExclusively(descriptor.id, () => this.source.open(descriptor));\n\t\t} catch (error) {\n\t\t\tthrow toError(error);\n\t\t}\n\t\t// Same preflight as create: a history session whose stored model no longer\n\t\t// resolves (model removed, auth missing) must fail the open instead of\n\t\t// going live model-less and breaking every client's list/server_snapshot.\n\t\tif (session.model === undefined) {\n\t\t\tlet cleanupNote = \"\";\n\t\t\ttry {\n\t\t\t\tawait session.dispose();\n\t\t\t} catch (disposeError) {\n\t\t\t\tcleanupNote = ` (session cleanup also failed: ${disposeError instanceof Error ? disposeError.message : String(disposeError)})`;\n\t\t\t}\n\t\t\tthrow new PiServerError(\n\t\t\t\t\"invalid_request\",\n\t\t\t\t`Reopening session ${sessionId} requires a resolvable model; none is available for this server's agent directory${cleanupNote}`,\n\t\t\t);\n\t\t}\n\t\treturn this.acquireRuntime(descriptor, session);\n\t}\n\n\t/** Serializes the acquired-check with the async source call to keep opens exclusive. */\n\tprivate async openExclusively(id: string, open: () => Promise<AgentSession>): Promise<AgentSession> {\n\t\tif (this.opening.has(id) || this.acquired.has(id)) {\n\t\t\tthrow new PiServerError(\"session_locked\", `Session is already open: ${id}`);\n\t\t}\n\t\tthis.opening.add(id);\n\t\ttry {\n\t\t\treturn await open();\n\t\t} finally {\n\t\t\tthis.opening.delete(id);\n\t\t}\n\t}\n\n\tprivate acquireRuntime(descriptor: CodingAgentSessionDescriptor, session: AgentSession): CodingAgentSessionRuntime {\n\t\t// Auto-mirror: with a durable service configured, every artifact committed\n\t\t// by the session's capability runtime is mirrored here, so the wire face\n\t\t// serves it without an explicit persist call. Without a durable service\n\t\t// nothing is registered (no behavior change). Mirror failures surface as\n\t\t// runtime commit-observer log records; they never fail the artifact put.\n\t\tconst unsubscribeArtifactMirror =\n\t\t\tthis.durable === undefined\n\t\t\t\t? undefined\n\t\t\t\t: session.onOutputArtifactCommit(({ ref, bytes }) => {\n\t\t\t\t\t\tthis.persistOutputArtifact(descriptor.id, ref, bytes);\n\t\t\t\t\t});\n\t\tconst runtime = new CodingAgentSessionRuntime(session, descriptor, {\n\t\t\tmodels: this.models,\n\t\t\tonDisposed: () => {\n\t\t\t\tunsubscribeArtifactMirror?.();\n\t\t\t\tthis.acquired.delete(descriptor.id);\n\t\t\t},\n\t\t});\n\t\tthis.acquired.set(descriptor.id, runtime);\n\t\treturn runtime;\n\t}\n\n\tprivate assertNotAcquired(id: string): void {\n\t\tif (this.acquired.has(id) || this.opening.has(id)) {\n\t\t\tthrow new PiServerError(\"session_locked\", `Session is already open: ${id}`);\n\t\t}\n\t}\n}\n\n/** Composes the coding-agent service with transport, journal, and auth hooks into one server. */\nexport function assembleCodingAgentServer(options: CodingAgentServerAssemblyOptions): {\n\treadonly server: PiServer;\n\treadonly service: CodingAgentServerService;\n} {\n\tconst service = new CodingAgentServerService({\n\t\tsessions: options.sessions,\n\t\tmodels: options.models,\n\t\tnow: options.now,\n\t\t...(options.durable === undefined ? {} : { durable: options.durable }),\n\t\t...(options.writerId === undefined ? {} : { writerId: options.writerId }),\n\t\t...(options.operationExecutors === undefined ? {} : { operationExecutors: options.operationExecutors }),\n\t});\n\tconst server = new PiServer(service, {\n\t\tlisteners: options.listeners,\n\t\t...(options.journal === undefined ? {} : { journal: options.journal }),\n\t\t...(options.authenticate === undefined ? {} : { authenticate: options.authenticate }),\n\t\t...(options.authorize === undefined ? {} : { authorize: options.authorize }),\n\t\t...(options.serverId === undefined ? {} : { serverId: options.serverId }),\n\t\t...(options.maxFrameLength === undefined ? {} : { maxFrameLength: options.maxFrameLength }),\n\t\t...(options.handshakeTimeoutMs === undefined ? {} : { handshakeTimeoutMs: options.handshakeTimeoutMs }),\n\t\t...(options.onError === undefined ? {} : { onError: options.onError }),\n\t});\n\treturn { server, service };\n}\n"]}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote entry assembly: one function that wires the coding-agent session
|
|
3
|
+
* source, the durable journal, and the server boundary into a started
|
|
4
|
+
* `PiServer` handle.
|
|
5
|
+
*
|
|
6
|
+
* The CLI remote entry (`--serve <port>`, src/cli/serve.ts) is a thin wrapper
|
|
7
|
+
* over this function: it supplies the loopback TCP listener, process signal
|
|
8
|
+
* handling, and default error logging, while this entry owns the session
|
|
9
|
+
* source, the durable journal, and the default model catalog. Hosts that need
|
|
10
|
+
* custom listeners or auth use `assembleCodingAgentServer` directly.
|
|
11
|
+
*
|
|
12
|
+
* Defaults: the durable journal lives in the agent config directory
|
|
13
|
+
* (`<agentDir>/remote-server-journal.jsonl`), never in the process cwd, so two
|
|
14
|
+
* servers started from different directories but sharing one agentDir
|
|
15
|
+
* journalize the same session timeline. The default model catalog is built
|
|
16
|
+
* from the real agent model runtime (same agentDir domain as the session
|
|
17
|
+
* source), so `list` reports models whose provider auth is configured and
|
|
18
|
+
* `resolve` applies the local CLI resolution semantics: the ref must exist in
|
|
19
|
+
* the catalog and its provider must have configured auth.
|
|
20
|
+
*
|
|
21
|
+
* Retry boundary: the gate advances only after a successful append so a failed
|
|
22
|
+
* write can be retried; advancing before the write would permanently drop that
|
|
23
|
+
* revision's boundary snapshot on the next same-revision broadcast.
|
|
24
|
+
*
|
|
25
|
+
* Journal boundary: the journal keeps snapshots at durable revision boundaries
|
|
26
|
+
* only. Streaming intermediate states persist no SessionManager entry, so
|
|
27
|
+
* their snapshots are not journaled (wire broadcasts are unaffected); after a
|
|
28
|
+
* restart, replay converges to the same state as a local session reopen.
|
|
29
|
+
*
|
|
30
|
+
* Trust boundary: the expected deployment is loopback listeners with no default
|
|
31
|
+
* authentication, and the session source accepts whatever `cwd` a client
|
|
32
|
+
* submits — a local process can drive the agent in any directory. This entry
|
|
33
|
+
* is therefore only safe in a single-user local trust environment; multi-tenant
|
|
34
|
+
* authentication and workspace path restrictions are later slices (the CLI
|
|
35
|
+
* offers an opt-in `--serve-workspace-root` boundary).
|
|
36
|
+
*/
|
|
37
|
+
import { FileDurableSessionEventJournal, type PiServer, type PiServerListener } from "@agent-forge/server";
|
|
38
|
+
import { type CodingAgentServerAssemblyOptions, type CodingAgentServerModels, type CodingAgentServerSessionSource } from "./server-assembly.ts";
|
|
39
|
+
import { type FileSessionSourceOptions } from "./session-source.ts";
|
|
40
|
+
/**
|
|
41
|
+
* Stable host-level writer identity for the default durable writer lease
|
|
42
|
+
* (D-067 phase 2 S2): persisted under the agent dir and reused across
|
|
43
|
+
* process restarts, so a restarted server re-claims its own still-live store
|
|
44
|
+
* lease instantly (same writer id = the lease's idempotent refresh) instead
|
|
45
|
+
* of waiting out a dead predecessor's TTL. Distinct nodes sharing one store
|
|
46
|
+
* must each pin their own id via `options.writerId`.
|
|
47
|
+
*/
|
|
48
|
+
export declare function readOrCreateWriterId(agentDir: string): string;
|
|
49
|
+
/** Options for the programmatic remote server entry. */
|
|
50
|
+
export interface StartCodingAgentRemoteServerOptions {
|
|
51
|
+
/** Session source; built from `sessionSourceOptions` when omitted. */
|
|
52
|
+
readonly sessions?: CodingAgentServerSessionSource;
|
|
53
|
+
/** Session source configuration, used when `sessions` is not supplied. */
|
|
54
|
+
readonly sessionSourceOptions?: FileSessionSourceOptions;
|
|
55
|
+
/**
|
|
56
|
+
* Path to the durable journal JSONL file. Defaults to
|
|
57
|
+
* `<agentDir>/remote-server-journal.jsonl`, derived from
|
|
58
|
+
* `sessionSourceOptions.agentDir` (or the default agent dir), so the
|
|
59
|
+
* journal never lands in the process cwd and servers sharing one agentDir
|
|
60
|
+
* share one session timeline.
|
|
61
|
+
*/
|
|
62
|
+
readonly journalPath?: string;
|
|
63
|
+
/** Pre-built journal; overrides `journalPath`. The revision gate still applies. */
|
|
64
|
+
readonly journal?: FileDurableSessionEventJournal;
|
|
65
|
+
/**
|
|
66
|
+
* Model catalog for `listModels` and `set_model` resolution. Defaults to
|
|
67
|
+
* the real agent model runtime for the same agentDir domain as the session
|
|
68
|
+
* source: `list` returns models whose provider auth is configured;
|
|
69
|
+
* `resolve` requires the ref to exist in the catalog and its provider to
|
|
70
|
+
* have configured auth (local CLI semantics).
|
|
71
|
+
*/
|
|
72
|
+
readonly models?: CodingAgentServerModels;
|
|
73
|
+
/** Transport listeners (loopback in tests; unix socket or TCP later). */
|
|
74
|
+
readonly listeners: readonly PiServerListener[];
|
|
75
|
+
/** Optional auth hook, passed through to `assembleCodingAgentServer`. */
|
|
76
|
+
readonly authenticate?: CodingAgentServerAssemblyOptions["authenticate"];
|
|
77
|
+
/** Optional authorization hook, passed through unchanged. */
|
|
78
|
+
readonly authorize?: CodingAgentServerAssemblyOptions["authorize"];
|
|
79
|
+
/** Optional server id. */
|
|
80
|
+
readonly serverId?: string;
|
|
81
|
+
/**
|
|
82
|
+
* Durable service backing the server `operations`/`artifacts` surfaces.
|
|
83
|
+
* Omission keeps those surfaces unconfigured: operations answer
|
|
84
|
+
* `durable_unavailable` and artifacts answer `not_implemented`.
|
|
85
|
+
*/
|
|
86
|
+
readonly durable?: CodingAgentServerAssemblyOptions["durable"];
|
|
87
|
+
/**
|
|
88
|
+
* Writer id claimed on the durable service. Hosts that also inject the same
|
|
89
|
+
* store into the session source (`sessionSourceOptions.agentTaskResults`)
|
|
90
|
+
* pass the same id here so the server and the sessions share one writer.
|
|
91
|
+
*/
|
|
92
|
+
readonly writerId?: CodingAgentServerAssemblyOptions["writerId"];
|
|
93
|
+
/** Executors for submitted operation types; unknown types terminate as rejected. */
|
|
94
|
+
readonly operationExecutors?: CodingAgentServerAssemblyOptions["operationExecutors"];
|
|
95
|
+
/** Optional internal-error sink, passed through to `assembleCodingAgentServer`. */
|
|
96
|
+
readonly onError?: CodingAgentServerAssemblyOptions["onError"];
|
|
97
|
+
}
|
|
98
|
+
/** A started remote server handle. */
|
|
99
|
+
export interface CodingAgentRemoteServerHandle {
|
|
100
|
+
/** The underlying `PiServer` for advanced control. */
|
|
101
|
+
readonly server: PiServer;
|
|
102
|
+
/** Human-readable listener addresses after startup. */
|
|
103
|
+
readonly addresses: readonly string[];
|
|
104
|
+
/** Stops the server, closes listeners, and flushes the journal. */
|
|
105
|
+
close(): Promise<void>;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Assembles and starts a coding-agent remote server: session source + durable
|
|
109
|
+
* journal + transport listeners behind the public server boundary.
|
|
110
|
+
*/
|
|
111
|
+
export declare function startCodingAgentRemoteServer(options: StartCodingAgentRemoteServerOptions): Promise<CodingAgentRemoteServerHandle>;
|
|
112
|
+
//# sourceMappingURL=server-entry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-entry.d.ts","sourceRoot":"","sources":["../../src/remote/server-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAMH,OAAO,EAEN,8BAA8B,EAC9B,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAErB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAEN,KAAK,gCAAgC,EACrC,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAA2B,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE7F;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY7D;AAED,wDAAwD;AACxD,MAAM,WAAW,mCAAmC;IACnD,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,8BAA8B,CAAC;IACnD,0EAA0E;IAC1E,QAAQ,CAAC,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;IACzD;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,mFAAmF;IACnF,QAAQ,CAAC,OAAO,CAAC,EAAE,8BAA8B,CAAC;IAClD;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAC1C,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,gCAAgC,CAAC,cAAc,CAAC,CAAC;IACzE,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,CAAC,EAAE,gCAAgC,CAAC,WAAW,CAAC,CAAC;IACnE,0BAA0B;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAC/D;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,gCAAgC,CAAC,UAAU,CAAC,CAAC;IACjE,oFAAoF;IACpF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,gCAAgC,CAAC,oBAAoB,CAAC,CAAC;IACrF,mFAAmF;IACnF,QAAQ,CAAC,OAAO,CAAC,EAAE,gCAAgC,CAAC,SAAS,CAAC,CAAC;CAC/D;AAED,sCAAsC;AACtC,MAAM,WAAW,6BAA6B;IAC7C,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,uDAAuD;IACvD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,mEAAmE;IACnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AA4HD;;;GAGG;AACH,wBAAsB,4BAA4B,CACjD,OAAO,EAAE,mCAAmC,GAC1C,OAAO,CAAC,6BAA6B,CAAC,CA0ExC","sourcesContent":["/**\n * Remote entry assembly: one function that wires the coding-agent session\n * source, the durable journal, and the server boundary into a started\n * `PiServer` handle.\n *\n * The CLI remote entry (`--serve <port>`, src/cli/serve.ts) is a thin wrapper\n * over this function: it supplies the loopback TCP listener, process signal\n * handling, and default error logging, while this entry owns the session\n * source, the durable journal, and the default model catalog. Hosts that need\n * custom listeners or auth use `assembleCodingAgentServer` directly.\n *\n * Defaults: the durable journal lives in the agent config directory\n * (`<agentDir>/remote-server-journal.jsonl`), never in the process cwd, so two\n * servers started from different directories but sharing one agentDir\n * journalize the same session timeline. The default model catalog is built\n * from the real agent model runtime (same agentDir domain as the session\n * source), so `list` reports models whose provider auth is configured and\n * `resolve` applies the local CLI resolution semantics: the ref must exist in\n * the catalog and its provider must have configured auth.\n *\n * Retry boundary: the gate advances only after a successful append so a failed\n * write can be retried; advancing before the write would permanently drop that\n * revision's boundary snapshot on the next same-revision broadcast.\n *\n * Journal boundary: the journal keeps snapshots at durable revision boundaries\n * only. Streaming intermediate states persist no SessionManager entry, so\n * their snapshots are not journaled (wire broadcasts are unaffected); after a\n * restart, replay converges to the same state as a local session reopen.\n *\n * Trust boundary: the expected deployment is loopback listeners with no default\n * authentication, and the session source accepts whatever `cwd` a client\n * submits — a local process can drive the agent in any directory. This entry\n * is therefore only safe in a single-user local trust environment; multi-tenant\n * authentication and workspace path restrictions are later slices (the CLI\n * offers an opt-in `--serve-workspace-root` boundary).\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { ModelMetadata, ModelRef, ServerEvent } from \"@agent-forge/protocol\";\nimport {\n\ttype DurableSessionEventJournal,\n\tFileDurableSessionEventJournal,\n\ttype PiServer,\n\ttype PiServerListener,\n\ttoProtocolModelMetadata,\n} from \"@agent-forge/server\";\nimport { getAgentDir } from \"../config.ts\";\nimport { ModelRuntime } from \"../core/model-runtime.ts\";\nimport {\n\tassembleCodingAgentServer,\n\ttype CodingAgentServerAssemblyOptions,\n\ttype CodingAgentServerModels,\n\ttype CodingAgentServerSessionSource,\n} from \"./server-assembly.ts\";\nimport { createFileSessionSource, type FileSessionSourceOptions } from \"./session-source.ts\";\n\n/**\n * Stable host-level writer identity for the default durable writer lease\n * (D-067 phase 2 S2): persisted under the agent dir and reused across\n * process restarts, so a restarted server re-claims its own still-live store\n * lease instantly (same writer id = the lease's idempotent refresh) instead\n * of waiting out a dead predecessor's TTL. Distinct nodes sharing one store\n * must each pin their own id via `options.writerId`.\n */\nexport function readOrCreateWriterId(agentDir: string): string {\n\tconst path = join(agentDir, \"durable\", \"writer-id\");\n\ttry {\n\t\tconst existing = readFileSync(path, \"utf8\").trim();\n\t\tif (existing !== \"\") return existing;\n\t} catch {\n\t\t// First start (or unreadable file): fall through and mint a fresh id.\n\t}\n\tconst id = randomUUID();\n\tmkdirSync(dirname(path), { recursive: true });\n\twriteFileSync(path, id);\n\treturn id;\n}\n\n/** Options for the programmatic remote server entry. */\nexport interface StartCodingAgentRemoteServerOptions {\n\t/** Session source; built from `sessionSourceOptions` when omitted. */\n\treadonly sessions?: CodingAgentServerSessionSource;\n\t/** Session source configuration, used when `sessions` is not supplied. */\n\treadonly sessionSourceOptions?: FileSessionSourceOptions;\n\t/**\n\t * Path to the durable journal JSONL file. Defaults to\n\t * `<agentDir>/remote-server-journal.jsonl`, derived from\n\t * `sessionSourceOptions.agentDir` (or the default agent dir), so the\n\t * journal never lands in the process cwd and servers sharing one agentDir\n\t * share one session timeline.\n\t */\n\treadonly journalPath?: string;\n\t/** Pre-built journal; overrides `journalPath`. The revision gate still applies. */\n\treadonly journal?: FileDurableSessionEventJournal;\n\t/**\n\t * Model catalog for `listModels` and `set_model` resolution. Defaults to\n\t * the real agent model runtime for the same agentDir domain as the session\n\t * source: `list` returns models whose provider auth is configured;\n\t * `resolve` requires the ref to exist in the catalog and its provider to\n\t * have configured auth (local CLI semantics).\n\t */\n\treadonly models?: CodingAgentServerModels;\n\t/** Transport listeners (loopback in tests; unix socket or TCP later). */\n\treadonly listeners: readonly PiServerListener[];\n\t/** Optional auth hook, passed through to `assembleCodingAgentServer`. */\n\treadonly authenticate?: CodingAgentServerAssemblyOptions[\"authenticate\"];\n\t/** Optional authorization hook, passed through unchanged. */\n\treadonly authorize?: CodingAgentServerAssemblyOptions[\"authorize\"];\n\t/** Optional server id. */\n\treadonly serverId?: string;\n\t/**\n\t * Durable service backing the server `operations`/`artifacts` surfaces.\n\t * Omission keeps those surfaces unconfigured: operations answer\n\t * `durable_unavailable` and artifacts answer `not_implemented`.\n\t */\n\treadonly durable?: CodingAgentServerAssemblyOptions[\"durable\"];\n\t/**\n\t * Writer id claimed on the durable service. Hosts that also inject the same\n\t * store into the session source (`sessionSourceOptions.agentTaskResults`)\n\t * pass the same id here so the server and the sessions share one writer.\n\t */\n\treadonly writerId?: CodingAgentServerAssemblyOptions[\"writerId\"];\n\t/** Executors for submitted operation types; unknown types terminate as rejected. */\n\treadonly operationExecutors?: CodingAgentServerAssemblyOptions[\"operationExecutors\"];\n\t/** Optional internal-error sink, passed through to `assembleCodingAgentServer`. */\n\treadonly onError?: CodingAgentServerAssemblyOptions[\"onError\"];\n}\n\n/** A started remote server handle. */\nexport interface CodingAgentRemoteServerHandle {\n\t/** The underlying `PiServer` for advanced control. */\n\treadonly server: PiServer;\n\t/** Human-readable listener addresses after startup. */\n\treadonly addresses: readonly string[];\n\t/** Stops the server, closes listeners, and flushes the journal. */\n\tclose(): Promise<void>;\n}\n\n/**\n * Journal decorator that journals snapshots only at durable revision\n * boundaries. The server appends a full snapshot for every runtime event, but\n * streaming intermediate states persist no SessionManager entry: their\n * snapshot revision does not advance. This gate drops `session_snapshot`\n * appends whose revision did not advance past the last journaled one for that\n * session, so per-chunk streaming updates no longer multiply journal entries\n * on disk. Wire broadcasts are unaffected (they flow through the server, not\n * the journal); `session_progress` and `session_removed` events pass through\n * unchanged. After a restart, replay converges to the same state as a local\n * session reopen: the latest snapshot at or before each persisted revision.\n *\n * Retry boundary: the gate advances only after a successful append so a failed\n * write can be retried. Because the server broadcasts snapshots\n * fire-and-forget, several same-revision appends can be in flight at once; a\n * synchronous in-flight claim (taken before the first await, like the old\n * pre-advance) keeps those duplicates dropped while the revision stays\n * retryable until one append actually lands.\n */\nclass RevisionGatedSessionJournal implements DurableSessionEventJournal {\n\t/** Last durably journaled revision per session id. */\n\tprivate readonly lastJournaledRevision = new Map<string, number>();\n\t/** Revisions whose append is currently in flight, keyed by `sessionId\\0revision`. */\n\tprivate readonly inFlightRevisions = new Set<string>();\n\tprivate readonly inner: DurableSessionEventJournal;\n\n\tconstructor(inner: DurableSessionEventJournal) {\n\t\tthis.inner = inner;\n\t}\n\n\tasync append(sessionId: string, event: ServerEvent): Promise<number> {\n\t\tif (event.type === \"session_snapshot\") {\n\t\t\tconst revision = event.snapshot.revision;\n\t\t\t// An empty map reads as -Infinity so the first snapshot is always\n\t\t\t// journaled, including the pre-first-entry revision 0. The first\n\t\t\t// snapshot after a revision advance is never missed: the gate only\n\t\t\t// drops revisions that are <= the last durably journaled one, plus\n\t\t\t// concurrent duplicates of a revision still being written.\n\t\t\tconst key = `${sessionId}\\0${revision}`;\n\t\t\tif (\n\t\t\t\trevision <= (this.lastJournaledRevision.get(sessionId) ?? Number.NEGATIVE_INFINITY) ||\n\t\t\t\tthis.inFlightRevisions.has(key)\n\t\t\t) {\n\t\t\t\t// No record was written; the server discards the snapshot append\n\t\t\t\t// cursor, so 0 (\"no record\") is safe to return here.\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\t// Synchronous claim before the first await: concurrent same-revision\n\t\t\t// appends are dropped without waiting on the write.\n\t\t\tthis.inFlightRevisions.add(key);\n\t\t\ttry {\n\t\t\t\tconst cursor = await this.inner.append(sessionId, event);\n\t\t\t\t// Advance only after a successful append so a failed write can be\n\t\t\t\t// retried; an earlier revision completing late must not regress\n\t\t\t\t// the high-water mark of a later committed one.\n\t\t\t\tif (revision > (this.lastJournaledRevision.get(sessionId) ?? Number.NEGATIVE_INFINITY)) {\n\t\t\t\t\tthis.lastJournaledRevision.set(sessionId, revision);\n\t\t\t\t}\n\t\t\t\treturn cursor;\n\t\t\t} finally {\n\t\t\t\t// Release the claim on success and failure alike: on failure the\n\t\t\t\t// next same-revision broadcast retries the append instead of it\n\t\t\t\t// being dropped as already journaled.\n\t\t\t\tthis.inFlightRevisions.delete(key);\n\t\t\t}\n\t\t}\n\t\treturn this.inner.append(sessionId, event);\n\t}\n\n\treplay(\n\t\tsessionId: string,\n\t\tafterCursor: number,\n\t\tlimit: number,\n\t): Promise<{\n\t\treadonly events: readonly { readonly cursor: number; readonly event: ServerEvent }[];\n\t\treadonly nextCursor: number;\n\t\treadonly complete: boolean;\n\t\treadonly gap: boolean;\n\t}> {\n\t\treturn this.inner.replay(sessionId, afterCursor, limit);\n\t}\n\n\tclose(): Promise<void> {\n\t\treturn this.inner.close();\n\t}\n}\n\n/**\n * Default model catalog built from the real agent model runtime, mirroring how\n * `createAgentSession` builds one from `agentDir`. `list` projects the models\n * whose provider auth is configured (the local CLI `--list-models` semantics).\n * `resolve` mirrors local model restoration: the ref must exist in the catalog\n * and its provider must have configured auth; anything else fails with a\n * plain `Error` that the server boundary maps to `invalid_request`.\n *\n * Boundary: the catalog is a startup-time snapshot. Provider auth added while\n * the server runs is not reflected in `list` results (new sessions can still\n * resolve such models, since `resolve` checks auth on demand); hosts needing a\n * fresh catalog rebuild the server.\n */\nfunction createDefaultServerModels(modelRuntime: ModelRuntime): CodingAgentServerModels {\n\treturn {\n\t\tlist: async (): Promise<readonly ModelMetadata[]> => {\n\t\t\tconst available = await modelRuntime.getAvailable();\n\t\t\treturn available.map((model) =>\n\t\t\t\ttoProtocolModelMetadata(model, modelRuntime.hasConfiguredAuth(model.provider)),\n\t\t\t);\n\t\t},\n\t\tresolve: async (ref: ModelRef) => {\n\t\t\tconst model = modelRuntime.getModel(ref.provider, ref.id);\n\t\t\t// checkAuth resolves the provider's configured auth on demand, so\n\t\t\t// resolution does not depend on whether an availability refresh\n\t\t\t// (getAvailable) already populated the auth snapshot.\n\t\t\tconst auth = model === undefined ? undefined : await modelRuntime.checkAuth(ref.provider);\n\t\t\tif (model === undefined || auth === undefined) {\n\t\t\t\tthrow new Error(`Unknown or unavailable model: ${ref.provider}/${ref.id}`);\n\t\t\t}\n\t\t\treturn model;\n\t\t},\n\t};\n}\n\n/**\n * Assembles and starts a coding-agent remote server: session source + durable\n * journal + transport listeners behind the public server boundary.\n */\nexport async function startCodingAgentRemoteServer(\n\toptions: StartCodingAgentRemoteServerOptions,\n): Promise<CodingAgentRemoteServerHandle> {\n\tconst sessionSourceOptions: FileSessionSourceOptions | undefined = options.sessionSourceOptions;\n\tconst sessions =\n\t\toptions.sessions ??\n\t\t(sessionSourceOptions === undefined ? undefined : createFileSessionSource(sessionSourceOptions));\n\tif (sessions === undefined) {\n\t\tthrow new Error(\"Remote server requires a session source or sessionSourceOptions\");\n\t}\n\n\t// Default journal domain: the agent config directory the session source\n\t// resolves against (explicit agentDir, else the default agent dir) — never\n\t// the process cwd. Two servers sharing one agentDir therefore share one\n\t// journal for the same sessions, independent of where they were started.\n\tconst agentDir = sessionSourceOptions?.agentDir ?? getAgentDir();\n\tconst journal = new RevisionGatedSessionJournal(\n\t\toptions.journal ??\n\t\t\tnew FileDurableSessionEventJournal(options.journalPath ?? join(agentDir, \"remote-server-journal.jsonl\")),\n\t);\n\t// Default writer identity (D-067 phase 2 S2): stable per agent-dir domain\n\t// (persisted beside the durable log), so a restarted server re-claims its\n\t// own still-live store lease instantly — same writer id = the lease's\n\t// idempotent refresh — instead of being locked out by its dead\n\t// predecessor's TTL. Distinct nodes sharing one store must each pin their\n\t// own writer id via `options.writerId`.\n\tconst writerId = options.writerId ?? readOrCreateWriterId(agentDir);\n\n\t// Default model catalog: build a real runtime from the same agentDir\n\t// domain, mirroring `createAgentSession`'s authPath/modelsPath resolution.\n\tconst models: CodingAgentServerModels =\n\t\toptions.models ??\n\t\tcreateDefaultServerModels(\n\t\t\tawait ModelRuntime.create(\n\t\t\t\tsessionSourceOptions?.agentDir === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tauthPath: join(sessionSourceOptions.agentDir, \"auth.json\"),\n\t\t\t\t\t\t\tmodelsPath: join(sessionSourceOptions.agentDir, \"models.json\"),\n\t\t\t\t\t\t},\n\t\t\t),\n\t\t);\n\n\tconst { server, service } = assembleCodingAgentServer({\n\t\tsessions,\n\t\tmodels,\n\t\tlisteners: options.listeners,\n\t\tjournal,\n\t\t...(options.authenticate === undefined ? {} : { authenticate: options.authenticate }),\n\t\t...(options.authorize === undefined ? {} : { authorize: options.authorize }),\n\t\t...(options.serverId === undefined ? {} : { serverId: options.serverId }),\n\t\t...(options.onError === undefined ? {} : { onError: options.onError }),\n\t\t...(options.durable === undefined ? {} : { durable: options.durable }),\n\t\t...(writerId === undefined ? {} : { writerId }),\n\t\t...(options.operationExecutors === undefined ? {} : { operationExecutors: options.operationExecutors }),\n\t});\n\n\tawait server.start();\n\n\treturn {\n\t\tserver,\n\t\taddresses: server.addresses,\n\t\tclose: async () => {\n\t\t\t// Graceful shutdown releases the store writer lease (D-067 phase 2\n\t\t\t// S2) so a successor process can claim immediately; crash recovery\n\t\t\t// stays the lease-TTL path. Best-effort: shutdown never fails on a\n\t\t\t// release error.\n\t\t\ttry {\n\t\t\t\tservice.releaseWriterLease();\n\t\t\t} catch {\n\t\t\t\t// Release failures surface nowhere at shutdown.\n\t\t\t}\n\t\t\tawait server.close();\n\t\t\tawait journal.close();\n\t\t},\n\t};\n}\n"]}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote entry assembly: one function that wires the coding-agent session
|
|
3
|
+
* source, the durable journal, and the server boundary into a started
|
|
4
|
+
* `PiServer` handle.
|
|
5
|
+
*
|
|
6
|
+
* The CLI remote entry (`--serve <port>`, src/cli/serve.ts) is a thin wrapper
|
|
7
|
+
* over this function: it supplies the loopback TCP listener, process signal
|
|
8
|
+
* handling, and default error logging, while this entry owns the session
|
|
9
|
+
* source, the durable journal, and the default model catalog. Hosts that need
|
|
10
|
+
* custom listeners or auth use `assembleCodingAgentServer` directly.
|
|
11
|
+
*
|
|
12
|
+
* Defaults: the durable journal lives in the agent config directory
|
|
13
|
+
* (`<agentDir>/remote-server-journal.jsonl`), never in the process cwd, so two
|
|
14
|
+
* servers started from different directories but sharing one agentDir
|
|
15
|
+
* journalize the same session timeline. The default model catalog is built
|
|
16
|
+
* from the real agent model runtime (same agentDir domain as the session
|
|
17
|
+
* source), so `list` reports models whose provider auth is configured and
|
|
18
|
+
* `resolve` applies the local CLI resolution semantics: the ref must exist in
|
|
19
|
+
* the catalog and its provider must have configured auth.
|
|
20
|
+
*
|
|
21
|
+
* Retry boundary: the gate advances only after a successful append so a failed
|
|
22
|
+
* write can be retried; advancing before the write would permanently drop that
|
|
23
|
+
* revision's boundary snapshot on the next same-revision broadcast.
|
|
24
|
+
*
|
|
25
|
+
* Journal boundary: the journal keeps snapshots at durable revision boundaries
|
|
26
|
+
* only. Streaming intermediate states persist no SessionManager entry, so
|
|
27
|
+
* their snapshots are not journaled (wire broadcasts are unaffected); after a
|
|
28
|
+
* restart, replay converges to the same state as a local session reopen.
|
|
29
|
+
*
|
|
30
|
+
* Trust boundary: the expected deployment is loopback listeners with no default
|
|
31
|
+
* authentication, and the session source accepts whatever `cwd` a client
|
|
32
|
+
* submits — a local process can drive the agent in any directory. This entry
|
|
33
|
+
* is therefore only safe in a single-user local trust environment; multi-tenant
|
|
34
|
+
* authentication and workspace path restrictions are later slices (the CLI
|
|
35
|
+
* offers an opt-in `--serve-workspace-root` boundary).
|
|
36
|
+
*/
|
|
37
|
+
import { randomUUID } from "node:crypto";
|
|
38
|
+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
39
|
+
import { dirname, join } from "node:path";
|
|
40
|
+
import { FileDurableSessionEventJournal, toProtocolModelMetadata, } from "@agent-forge/server";
|
|
41
|
+
import { getAgentDir } from "../config.js";
|
|
42
|
+
import { ModelRuntime } from "../core/model-runtime.js";
|
|
43
|
+
import { assembleCodingAgentServer, } from "./server-assembly.js";
|
|
44
|
+
import { createFileSessionSource } from "./session-source.js";
|
|
45
|
+
/**
|
|
46
|
+
* Stable host-level writer identity for the default durable writer lease
|
|
47
|
+
* (D-067 phase 2 S2): persisted under the agent dir and reused across
|
|
48
|
+
* process restarts, so a restarted server re-claims its own still-live store
|
|
49
|
+
* lease instantly (same writer id = the lease's idempotent refresh) instead
|
|
50
|
+
* of waiting out a dead predecessor's TTL. Distinct nodes sharing one store
|
|
51
|
+
* must each pin their own id via `options.writerId`.
|
|
52
|
+
*/
|
|
53
|
+
export function readOrCreateWriterId(agentDir) {
|
|
54
|
+
const path = join(agentDir, "durable", "writer-id");
|
|
55
|
+
try {
|
|
56
|
+
const existing = readFileSync(path, "utf8").trim();
|
|
57
|
+
if (existing !== "")
|
|
58
|
+
return existing;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// First start (or unreadable file): fall through and mint a fresh id.
|
|
62
|
+
}
|
|
63
|
+
const id = randomUUID();
|
|
64
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
65
|
+
writeFileSync(path, id);
|
|
66
|
+
return id;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Journal decorator that journals snapshots only at durable revision
|
|
70
|
+
* boundaries. The server appends a full snapshot for every runtime event, but
|
|
71
|
+
* streaming intermediate states persist no SessionManager entry: their
|
|
72
|
+
* snapshot revision does not advance. This gate drops `session_snapshot`
|
|
73
|
+
* appends whose revision did not advance past the last journaled one for that
|
|
74
|
+
* session, so per-chunk streaming updates no longer multiply journal entries
|
|
75
|
+
* on disk. Wire broadcasts are unaffected (they flow through the server, not
|
|
76
|
+
* the journal); `session_progress` and `session_removed` events pass through
|
|
77
|
+
* unchanged. After a restart, replay converges to the same state as a local
|
|
78
|
+
* session reopen: the latest snapshot at or before each persisted revision.
|
|
79
|
+
*
|
|
80
|
+
* Retry boundary: the gate advances only after a successful append so a failed
|
|
81
|
+
* write can be retried. Because the server broadcasts snapshots
|
|
82
|
+
* fire-and-forget, several same-revision appends can be in flight at once; a
|
|
83
|
+
* synchronous in-flight claim (taken before the first await, like the old
|
|
84
|
+
* pre-advance) keeps those duplicates dropped while the revision stays
|
|
85
|
+
* retryable until one append actually lands.
|
|
86
|
+
*/
|
|
87
|
+
class RevisionGatedSessionJournal {
|
|
88
|
+
/** Last durably journaled revision per session id. */
|
|
89
|
+
lastJournaledRevision = new Map();
|
|
90
|
+
/** Revisions whose append is currently in flight, keyed by `sessionId\0revision`. */
|
|
91
|
+
inFlightRevisions = new Set();
|
|
92
|
+
inner;
|
|
93
|
+
constructor(inner) {
|
|
94
|
+
this.inner = inner;
|
|
95
|
+
}
|
|
96
|
+
async append(sessionId, event) {
|
|
97
|
+
if (event.type === "session_snapshot") {
|
|
98
|
+
const revision = event.snapshot.revision;
|
|
99
|
+
// An empty map reads as -Infinity so the first snapshot is always
|
|
100
|
+
// journaled, including the pre-first-entry revision 0. The first
|
|
101
|
+
// snapshot after a revision advance is never missed: the gate only
|
|
102
|
+
// drops revisions that are <= the last durably journaled one, plus
|
|
103
|
+
// concurrent duplicates of a revision still being written.
|
|
104
|
+
const key = `${sessionId}\0${revision}`;
|
|
105
|
+
if (revision <= (this.lastJournaledRevision.get(sessionId) ?? Number.NEGATIVE_INFINITY) ||
|
|
106
|
+
this.inFlightRevisions.has(key)) {
|
|
107
|
+
// No record was written; the server discards the snapshot append
|
|
108
|
+
// cursor, so 0 ("no record") is safe to return here.
|
|
109
|
+
return 0;
|
|
110
|
+
}
|
|
111
|
+
// Synchronous claim before the first await: concurrent same-revision
|
|
112
|
+
// appends are dropped without waiting on the write.
|
|
113
|
+
this.inFlightRevisions.add(key);
|
|
114
|
+
try {
|
|
115
|
+
const cursor = await this.inner.append(sessionId, event);
|
|
116
|
+
// Advance only after a successful append so a failed write can be
|
|
117
|
+
// retried; an earlier revision completing late must not regress
|
|
118
|
+
// the high-water mark of a later committed one.
|
|
119
|
+
if (revision > (this.lastJournaledRevision.get(sessionId) ?? Number.NEGATIVE_INFINITY)) {
|
|
120
|
+
this.lastJournaledRevision.set(sessionId, revision);
|
|
121
|
+
}
|
|
122
|
+
return cursor;
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
// Release the claim on success and failure alike: on failure the
|
|
126
|
+
// next same-revision broadcast retries the append instead of it
|
|
127
|
+
// being dropped as already journaled.
|
|
128
|
+
this.inFlightRevisions.delete(key);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return this.inner.append(sessionId, event);
|
|
132
|
+
}
|
|
133
|
+
replay(sessionId, afterCursor, limit) {
|
|
134
|
+
return this.inner.replay(sessionId, afterCursor, limit);
|
|
135
|
+
}
|
|
136
|
+
close() {
|
|
137
|
+
return this.inner.close();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Default model catalog built from the real agent model runtime, mirroring how
|
|
142
|
+
* `createAgentSession` builds one from `agentDir`. `list` projects the models
|
|
143
|
+
* whose provider auth is configured (the local CLI `--list-models` semantics).
|
|
144
|
+
* `resolve` mirrors local model restoration: the ref must exist in the catalog
|
|
145
|
+
* and its provider must have configured auth; anything else fails with a
|
|
146
|
+
* plain `Error` that the server boundary maps to `invalid_request`.
|
|
147
|
+
*
|
|
148
|
+
* Boundary: the catalog is a startup-time snapshot. Provider auth added while
|
|
149
|
+
* the server runs is not reflected in `list` results (new sessions can still
|
|
150
|
+
* resolve such models, since `resolve` checks auth on demand); hosts needing a
|
|
151
|
+
* fresh catalog rebuild the server.
|
|
152
|
+
*/
|
|
153
|
+
function createDefaultServerModels(modelRuntime) {
|
|
154
|
+
return {
|
|
155
|
+
list: async () => {
|
|
156
|
+
const available = await modelRuntime.getAvailable();
|
|
157
|
+
return available.map((model) => toProtocolModelMetadata(model, modelRuntime.hasConfiguredAuth(model.provider)));
|
|
158
|
+
},
|
|
159
|
+
resolve: async (ref) => {
|
|
160
|
+
const model = modelRuntime.getModel(ref.provider, ref.id);
|
|
161
|
+
// checkAuth resolves the provider's configured auth on demand, so
|
|
162
|
+
// resolution does not depend on whether an availability refresh
|
|
163
|
+
// (getAvailable) already populated the auth snapshot.
|
|
164
|
+
const auth = model === undefined ? undefined : await modelRuntime.checkAuth(ref.provider);
|
|
165
|
+
if (model === undefined || auth === undefined) {
|
|
166
|
+
throw new Error(`Unknown or unavailable model: ${ref.provider}/${ref.id}`);
|
|
167
|
+
}
|
|
168
|
+
return model;
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Assembles and starts a coding-agent remote server: session source + durable
|
|
174
|
+
* journal + transport listeners behind the public server boundary.
|
|
175
|
+
*/
|
|
176
|
+
export async function startCodingAgentRemoteServer(options) {
|
|
177
|
+
const sessionSourceOptions = options.sessionSourceOptions;
|
|
178
|
+
const sessions = options.sessions ??
|
|
179
|
+
(sessionSourceOptions === undefined ? undefined : createFileSessionSource(sessionSourceOptions));
|
|
180
|
+
if (sessions === undefined) {
|
|
181
|
+
throw new Error("Remote server requires a session source or sessionSourceOptions");
|
|
182
|
+
}
|
|
183
|
+
// Default journal domain: the agent config directory the session source
|
|
184
|
+
// resolves against (explicit agentDir, else the default agent dir) — never
|
|
185
|
+
// the process cwd. Two servers sharing one agentDir therefore share one
|
|
186
|
+
// journal for the same sessions, independent of where they were started.
|
|
187
|
+
const agentDir = sessionSourceOptions?.agentDir ?? getAgentDir();
|
|
188
|
+
const journal = new RevisionGatedSessionJournal(options.journal ??
|
|
189
|
+
new FileDurableSessionEventJournal(options.journalPath ?? join(agentDir, "remote-server-journal.jsonl")));
|
|
190
|
+
// Default writer identity (D-067 phase 2 S2): stable per agent-dir domain
|
|
191
|
+
// (persisted beside the durable log), so a restarted server re-claims its
|
|
192
|
+
// own still-live store lease instantly — same writer id = the lease's
|
|
193
|
+
// idempotent refresh — instead of being locked out by its dead
|
|
194
|
+
// predecessor's TTL. Distinct nodes sharing one store must each pin their
|
|
195
|
+
// own writer id via `options.writerId`.
|
|
196
|
+
const writerId = options.writerId ?? readOrCreateWriterId(agentDir);
|
|
197
|
+
// Default model catalog: build a real runtime from the same agentDir
|
|
198
|
+
// domain, mirroring `createAgentSession`'s authPath/modelsPath resolution.
|
|
199
|
+
const models = options.models ??
|
|
200
|
+
createDefaultServerModels(await ModelRuntime.create(sessionSourceOptions?.agentDir === undefined
|
|
201
|
+
? {}
|
|
202
|
+
: {
|
|
203
|
+
authPath: join(sessionSourceOptions.agentDir, "auth.json"),
|
|
204
|
+
modelsPath: join(sessionSourceOptions.agentDir, "models.json"),
|
|
205
|
+
}));
|
|
206
|
+
const { server, service } = assembleCodingAgentServer({
|
|
207
|
+
sessions,
|
|
208
|
+
models,
|
|
209
|
+
listeners: options.listeners,
|
|
210
|
+
journal,
|
|
211
|
+
...(options.authenticate === undefined ? {} : { authenticate: options.authenticate }),
|
|
212
|
+
...(options.authorize === undefined ? {} : { authorize: options.authorize }),
|
|
213
|
+
...(options.serverId === undefined ? {} : { serverId: options.serverId }),
|
|
214
|
+
...(options.onError === undefined ? {} : { onError: options.onError }),
|
|
215
|
+
...(options.durable === undefined ? {} : { durable: options.durable }),
|
|
216
|
+
...(writerId === undefined ? {} : { writerId }),
|
|
217
|
+
...(options.operationExecutors === undefined ? {} : { operationExecutors: options.operationExecutors }),
|
|
218
|
+
});
|
|
219
|
+
await server.start();
|
|
220
|
+
return {
|
|
221
|
+
server,
|
|
222
|
+
addresses: server.addresses,
|
|
223
|
+
close: async () => {
|
|
224
|
+
// Graceful shutdown releases the store writer lease (D-067 phase 2
|
|
225
|
+
// S2) so a successor process can claim immediately; crash recovery
|
|
226
|
+
// stays the lease-TTL path. Best-effort: shutdown never fails on a
|
|
227
|
+
// release error.
|
|
228
|
+
try {
|
|
229
|
+
service.releaseWriterLease();
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// Release failures surface nowhere at shutdown.
|
|
233
|
+
}
|
|
234
|
+
await server.close();
|
|
235
|
+
await journal.close();
|
|
236
|
+
},
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=server-entry.js.map
|