opensip-cli 0.1.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/LICENSE +202 -0
- package/NOTICE +8 -0
- package/README.md +51 -0
- package/dist/api.d.ts +17 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +16 -0
- package/dist/api.js.map +1 -0
- package/dist/bootstrap/admit-tool-package.d.ts +117 -0
- package/dist/bootstrap/admit-tool-package.d.ts.map +1 -0
- package/dist/bootstrap/admit-tool-package.js +170 -0
- package/dist/bootstrap/admit-tool-package.js.map +1 -0
- package/dist/bootstrap/baseline-seams.d.ts +30 -0
- package/dist/bootstrap/baseline-seams.d.ts.map +1 -0
- package/dist/bootstrap/baseline-seams.js +156 -0
- package/dist/bootstrap/baseline-seams.js.map +1 -0
- package/dist/bootstrap/bootstrap-error.d.ts +41 -0
- package/dist/bootstrap/bootstrap-error.d.ts.map +1 -0
- package/dist/bootstrap/bootstrap-error.js +33 -0
- package/dist/bootstrap/bootstrap-error.js.map +1 -0
- package/dist/bootstrap/build-command-registration-input.d.ts +34 -0
- package/dist/bootstrap/build-command-registration-input.d.ts.map +1 -0
- package/dist/bootstrap/build-command-registration-input.js +73 -0
- package/dist/bootstrap/build-command-registration-input.js.map +1 -0
- package/dist/bootstrap/build-per-run-scope.d.ts +62 -0
- package/dist/bootstrap/build-per-run-scope.d.ts.map +1 -0
- package/dist/bootstrap/build-per-run-scope.js +152 -0
- package/dist/bootstrap/build-per-run-scope.js.map +1 -0
- package/dist/bootstrap/build-targets.d.ts +42 -0
- package/dist/bootstrap/build-targets.d.ts.map +1 -0
- package/dist/bootstrap/build-targets.js +117 -0
- package/dist/bootstrap/build-targets.js.map +1 -0
- package/dist/bootstrap/cli-defaults.d.ts +35 -0
- package/dist/bootstrap/cli-defaults.d.ts.map +1 -0
- package/dist/bootstrap/cli-defaults.js +65 -0
- package/dist/bootstrap/cli-defaults.js.map +1 -0
- package/dist/bootstrap/config-and-capabilities.d.ts +74 -0
- package/dist/bootstrap/config-and-capabilities.d.ts.map +1 -0
- package/dist/bootstrap/config-and-capabilities.js +224 -0
- package/dist/bootstrap/config-and-capabilities.js.map +1 -0
- package/dist/bootstrap/deliver-envelope.d.ts +80 -0
- package/dist/bootstrap/deliver-envelope.d.ts.map +1 -0
- package/dist/bootstrap/deliver-envelope.js +195 -0
- package/dist/bootstrap/deliver-envelope.js.map +1 -0
- package/dist/bootstrap/egress-plane.d.ts +22 -0
- package/dist/bootstrap/egress-plane.d.ts.map +1 -0
- package/dist/bootstrap/egress-plane.js +37 -0
- package/dist/bootstrap/egress-plane.js.map +1 -0
- package/dist/bootstrap/host-planes.d.ts +28 -0
- package/dist/bootstrap/host-planes.d.ts.map +1 -0
- package/dist/bootstrap/host-planes.js +152 -0
- package/dist/bootstrap/host-planes.js.map +1 -0
- package/dist/bootstrap/index.d.ts +76 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +109 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/bootstrap/live-plane.d.ts +51 -0
- package/dist/bootstrap/live-plane.d.ts.map +1 -0
- package/dist/bootstrap/live-plane.js +72 -0
- package/dist/bootstrap/live-plane.js.map +1 -0
- package/dist/bootstrap/load-tool-capabilities.d.ts +42 -0
- package/dist/bootstrap/load-tool-capabilities.d.ts.map +1 -0
- package/dist/bootstrap/load-tool-capabilities.js +76 -0
- package/dist/bootstrap/load-tool-capabilities.js.map +1 -0
- package/dist/bootstrap/output-plane.d.ts +37 -0
- package/dist/bootstrap/output-plane.d.ts.map +1 -0
- package/dist/bootstrap/output-plane.js +114 -0
- package/dist/bootstrap/output-plane.js.map +1 -0
- package/dist/bootstrap/owning-tool-init.d.ts +32 -0
- package/dist/bootstrap/owning-tool-init.d.ts.map +1 -0
- package/dist/bootstrap/owning-tool-init.js +69 -0
- package/dist/bootstrap/owning-tool-init.js.map +1 -0
- package/dist/bootstrap/pre-action-guards.d.ts +44 -0
- package/dist/bootstrap/pre-action-guards.d.ts.map +1 -0
- package/dist/bootstrap/pre-action-guards.js +136 -0
- package/dist/bootstrap/pre-action-guards.js.map +1 -0
- package/dist/bootstrap/pre-action-hook.d.ts +68 -0
- package/dist/bootstrap/pre-action-hook.d.ts.map +1 -0
- package/dist/bootstrap/pre-action-hook.js +289 -0
- package/dist/bootstrap/pre-action-hook.js.map +1 -0
- package/dist/bootstrap/pre-action-messages.d.ts +32 -0
- package/dist/bootstrap/pre-action-messages.d.ts.map +1 -0
- package/dist/bootstrap/pre-action-messages.js +49 -0
- package/dist/bootstrap/pre-action-messages.js.map +1 -0
- package/dist/bootstrap/process-idempotency.d.ts +17 -0
- package/dist/bootstrap/process-idempotency.d.ts.map +1 -0
- package/dist/bootstrap/process-idempotency.js +20 -0
- package/dist/bootstrap/process-idempotency.js.map +1 -0
- package/dist/bootstrap/register-language-adapters.d.ts +23 -0
- package/dist/bootstrap/register-language-adapters.d.ts.map +1 -0
- package/dist/bootstrap/register-language-adapters.js +35 -0
- package/dist/bootstrap/register-language-adapters.js.map +1 -0
- package/dist/bootstrap/register-tools.d.ts +228 -0
- package/dist/bootstrap/register-tools.d.ts.map +1 -0
- package/dist/bootstrap/register-tools.js +696 -0
- package/dist/bootstrap/register-tools.js.map +1 -0
- package/dist/bootstrap/render.d.ts +27 -0
- package/dist/bootstrap/render.d.ts.map +1 -0
- package/dist/bootstrap/render.js +53 -0
- package/dist/bootstrap/render.js.map +1 -0
- package/dist/bootstrap/report.d.ts +34 -0
- package/dist/bootstrap/report.d.ts.map +1 -0
- package/dist/bootstrap/report.js +47 -0
- package/dist/bootstrap/report.js.map +1 -0
- package/dist/bootstrap/run-plane.d.ts +105 -0
- package/dist/bootstrap/run-plane.d.ts.map +1 -0
- package/dist/bootstrap/run-plane.js +190 -0
- package/dist/bootstrap/run-plane.js.map +1 -0
- package/dist/bootstrap/scope-access.d.ts +68 -0
- package/dist/bootstrap/scope-access.d.ts.map +1 -0
- package/dist/bootstrap/scope-access.js +115 -0
- package/dist/bootstrap/scope-access.js.map +1 -0
- package/dist/bootstrap/state-seams.d.ts +14 -0
- package/dist/bootstrap/state-seams.d.ts.map +1 -0
- package/dist/bootstrap/state-seams.js +26 -0
- package/dist/bootstrap/state-seams.js.map +1 -0
- package/dist/bootstrap/tool-lifecycle.d.ts +102 -0
- package/dist/bootstrap/tool-lifecycle.d.ts.map +1 -0
- package/dist/bootstrap/tool-lifecycle.js +103 -0
- package/dist/bootstrap/tool-lifecycle.js.map +1 -0
- package/dist/bootstrap/tool-trust.d.ts +49 -0
- package/dist/bootstrap/tool-trust.d.ts.map +1 -0
- package/dist/bootstrap/tool-trust.js +65 -0
- package/dist/bootstrap/tool-trust.js.map +1 -0
- package/dist/bootstrap/validate-tool.d.ts +22 -0
- package/dist/bootstrap/validate-tool.d.ts.map +1 -0
- package/dist/bootstrap/validate-tool.js +38 -0
- package/dist/bootstrap/validate-tool.js.map +1 -0
- package/dist/cli-context.d.ts +38 -0
- package/dist/cli-context.d.ts.map +1 -0
- package/dist/cli-context.js +134 -0
- package/dist/cli-context.js.map +1 -0
- package/dist/commands/agent-catalog.d.ts +45 -0
- package/dist/commands/agent-catalog.d.ts.map +1 -0
- package/dist/commands/agent-catalog.js +115 -0
- package/dist/commands/agent-catalog.js.map +1 -0
- package/dist/commands/assemble-outcome.d.ts +69 -0
- package/dist/commands/assemble-outcome.d.ts.map +1 -0
- package/dist/commands/assemble-outcome.js +121 -0
- package/dist/commands/assemble-outcome.js.map +1 -0
- package/dist/commands/clear.d.ts +32 -0
- package/dist/commands/clear.d.ts.map +1 -0
- package/dist/commands/clear.js +73 -0
- package/dist/commands/clear.js.map +1 -0
- package/dist/commands/completion.d.ts +90 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +233 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/configure.d.ts +32 -0
- package/dist/commands/configure.d.ts.map +1 -0
- package/dist/commands/configure.js +94 -0
- package/dist/commands/configure.js.map +1 -0
- package/dist/commands/history.d.ts +18 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +48 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/host-command-specs.d.ts +49 -0
- package/dist/commands/host-command-specs.d.ts.map +1 -0
- package/dist/commands/host-command-specs.js +331 -0
- package/dist/commands/host-command-specs.js.map +1 -0
- package/dist/commands/host-subcommand-groups.d.ts +69 -0
- package/dist/commands/host-subcommand-groups.d.ts.map +1 -0
- package/dist/commands/host-subcommand-groups.js +374 -0
- package/dist/commands/host-subcommand-groups.js.map +1 -0
- package/dist/commands/index.d.ts +36 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +36 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init/config-templates.d.ts +16 -0
- package/dist/commands/init/config-templates.d.ts.map +1 -0
- package/dist/commands/init/config-templates.js +108 -0
- package/dist/commands/init/config-templates.js.map +1 -0
- package/dist/commands/init/file-classifier.d.ts +40 -0
- package/dist/commands/init/file-classifier.d.ts.map +1 -0
- package/dist/commands/init/file-classifier.js +155 -0
- package/dist/commands/init/file-classifier.js.map +1 -0
- package/dist/commands/init/language-detection.d.ts +44 -0
- package/dist/commands/init/language-detection.d.ts.map +1 -0
- package/dist/commands/init/language-detection.js +124 -0
- package/dist/commands/init/language-detection.js.map +1 -0
- package/dist/commands/init/scaffold-writer.d.ts +26 -0
- package/dist/commands/init/scaffold-writer.d.ts.map +1 -0
- package/dist/commands/init/scaffold-writer.js +102 -0
- package/dist/commands/init/scaffold-writer.js.map +1 -0
- package/dist/commands/init/state-machine.d.ts +32 -0
- package/dist/commands/init/state-machine.d.ts.map +1 -0
- package/dist/commands/init/state-machine.js +105 -0
- package/dist/commands/init/state-machine.js.map +1 -0
- package/dist/commands/init.d.ts +95 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +209 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mount-command-spec.d.ts +106 -0
- package/dist/commands/mount-command-spec.d.ts.map +1 -0
- package/dist/commands/mount-command-spec.js +313 -0
- package/dist/commands/mount-command-spec.js.map +1 -0
- package/dist/commands/mount-result-command.d.ts +71 -0
- package/dist/commands/mount-result-command.d.ts.map +1 -0
- package/dist/commands/mount-result-command.js +76 -0
- package/dist/commands/mount-result-command.js.map +1 -0
- package/dist/commands/plugin/config-edit.d.ts +20 -0
- package/dist/commands/plugin/config-edit.d.ts.map +1 -0
- package/dist/commands/plugin/config-edit.js +102 -0
- package/dist/commands/plugin/config-edit.js.map +1 -0
- package/dist/commands/plugin/domain-resolution.d.ts +38 -0
- package/dist/commands/plugin/domain-resolution.d.ts.map +1 -0
- package/dist/commands/plugin/domain-resolution.js +98 -0
- package/dist/commands/plugin/domain-resolution.js.map +1 -0
- package/dist/commands/plugin/host-dir.d.ts +42 -0
- package/dist/commands/plugin/host-dir.d.ts.map +1 -0
- package/dist/commands/plugin/host-dir.js +168 -0
- package/dist/commands/plugin/host-dir.js.map +1 -0
- package/dist/commands/plugin-host-ops.d.ts +41 -0
- package/dist/commands/plugin-host-ops.d.ts.map +1 -0
- package/dist/commands/plugin-host-ops.js +114 -0
- package/dist/commands/plugin-host-ops.js.map +1 -0
- package/dist/commands/plugin.d.ts +81 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +287 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/render-outcome.d.ts +52 -0
- package/dist/commands/render-outcome.d.ts.map +1 -0
- package/dist/commands/render-outcome.js +55 -0
- package/dist/commands/render-outcome.js.map +1 -0
- package/dist/commands/session-show.d.ts +27 -0
- package/dist/commands/session-show.d.ts.map +1 -0
- package/dist/commands/session-show.js +166 -0
- package/dist/commands/session-show.js.map +1 -0
- package/dist/commands/shared.d.ts +107 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +13 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/tools/data-purge.d.ts +20 -0
- package/dist/commands/tools/data-purge.d.ts.map +1 -0
- package/dist/commands/tools/data-purge.js +59 -0
- package/dist/commands/tools/data-purge.js.map +1 -0
- package/dist/commands/tools/index.d.ts +16 -0
- package/dist/commands/tools/index.d.ts.map +1 -0
- package/dist/commands/tools/index.js +213 -0
- package/dist/commands/tools/index.js.map +1 -0
- package/dist/commands/tools/install.d.ts +24 -0
- package/dist/commands/tools/install.d.ts.map +1 -0
- package/dist/commands/tools/install.js +83 -0
- package/dist/commands/tools/install.js.map +1 -0
- package/dist/commands/tools/list.d.ts +41 -0
- package/dist/commands/tools/list.d.ts.map +1 -0
- package/dist/commands/tools/list.js +103 -0
- package/dist/commands/tools/list.js.map +1 -0
- package/dist/commands/tools/runtime-probe-entry.d.ts +14 -0
- package/dist/commands/tools/runtime-probe-entry.d.ts.map +1 -0
- package/dist/commands/tools/runtime-probe-entry.js +36 -0
- package/dist/commands/tools/runtime-probe-entry.js.map +1 -0
- package/dist/commands/tools/runtime-probe.d.ts +29 -0
- package/dist/commands/tools/runtime-probe.d.ts.map +1 -0
- package/dist/commands/tools/runtime-probe.js +66 -0
- package/dist/commands/tools/runtime-probe.js.map +1 -0
- package/dist/commands/tools/storage-contract-checks.d.ts +37 -0
- package/dist/commands/tools/storage-contract-checks.d.ts.map +1 -0
- package/dist/commands/tools/storage-contract-checks.js +91 -0
- package/dist/commands/tools/storage-contract-checks.js.map +1 -0
- package/dist/commands/tools/uninstall.d.ts +29 -0
- package/dist/commands/tools/uninstall.d.ts.map +1 -0
- package/dist/commands/tools/uninstall.js +77 -0
- package/dist/commands/tools/uninstall.js.map +1 -0
- package/dist/commands/tools/validate.d.ts +44 -0
- package/dist/commands/tools/validate.d.ts.map +1 -0
- package/dist/commands/tools/validate.js +202 -0
- package/dist/commands/tools/validate.js.map +1 -0
- package/dist/commands/uninstall/targets.d.ts +53 -0
- package/dist/commands/uninstall/targets.d.ts.map +1 -0
- package/dist/commands/uninstall/targets.js +205 -0
- package/dist/commands/uninstall/targets.js.map +1 -0
- package/dist/commands/uninstall.d.ts +88 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +184 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/env/host-env-specs.d.ts +52 -0
- package/dist/env/host-env-specs.d.ts.map +1 -0
- package/dist/env/host-env-specs.js +129 -0
- package/dist/env/host-env-specs.js.map +1 -0
- package/dist/error-handler.d.ts +64 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +180 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +154 -0
- package/dist/index.js.map +1 -0
- package/dist/open-report.d.ts +40 -0
- package/dist/open-report.d.ts.map +1 -0
- package/dist/open-report.js +54 -0
- package/dist/open-report.js.map +1 -0
- package/dist/report-compose.d.ts +35 -0
- package/dist/report-compose.d.ts.map +1 -0
- package/dist/report-compose.js +103 -0
- package/dist/report-compose.js.map +1 -0
- package/dist/session-replay-registry.d.ts +20 -0
- package/dist/session-replay-registry.d.ts.map +1 -0
- package/dist/session-replay-registry.js +38 -0
- package/dist/session-replay-registry.js.map +1 -0
- package/dist/telemetry/profiling.d.ts +42 -0
- package/dist/telemetry/profiling.d.ts.map +1 -0
- package/dist/telemetry/profiling.js +160 -0
- package/dist/telemetry/profiling.js.map +1 -0
- package/dist/telemetry/sdk-init.d.ts +87 -0
- package/dist/telemetry/sdk-init.d.ts.map +1 -0
- package/dist/telemetry/sdk-init.js +235 -0
- package/dist/telemetry/sdk-init.js.map +1 -0
- package/dist/ui/App.d.ts +32 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +35 -0
- package/dist/ui/App.js.map +1 -0
- package/dist/ui/render.d.ts +15 -0
- package/dist/ui/render.d.ts.map +1 -0
- package/dist/ui/render.js +21 -0
- package/dist/ui/render.js.map +1 -0
- package/dist/ui/result-to-view.d.ts +40 -0
- package/dist/ui/result-to-view.d.ts.map +1 -0
- package/dist/ui/result-to-view.js +389 -0
- package/dist/ui/result-to-view.js.map +1 -0
- package/dist/ui/views/init-view.d.ts +9 -0
- package/dist/ui/views/init-view.d.ts.map +1 -0
- package/dist/ui/views/init-view.js +119 -0
- package/dist/ui/views/init-view.js.map +1 -0
- package/dist/ui/views/misc-views.d.ts +18 -0
- package/dist/ui/views/misc-views.d.ts.map +1 -0
- package/dist/ui/views/misc-views.js +244 -0
- package/dist/ui/views/misc-views.js.map +1 -0
- package/dist/ui/views/plugin-view.d.ts +8 -0
- package/dist/ui/views/plugin-view.d.ts.map +1 -0
- package/dist/ui/views/plugin-view.js +135 -0
- package/dist/ui/views/plugin-view.js.map +1 -0
- package/dist/ui/views/tools-views.d.ts +12 -0
- package/dist/ui/views/tools-views.d.ts.map +1 -0
- package/dist/ui/views/tools-views.js +152 -0
- package/dist/ui/views/tools-views.js.map +1 -0
- package/dist/update-notifier.d.ts +108 -0
- package/dist/update-notifier.d.ts.map +1 -0
- package/dist/update-notifier.js +188 -0
- package/dist/update-notifier.js.map +1 -0
- package/dist/update-state.d.ts +40 -0
- package/dist/update-state.d.ts.map +1 -0
- package/dist/update-state.js +81 -0
- package/dist/update-state.js.map +1 -0
- package/dist/welcome.d.ts +53 -0
- package/dist/welcome.d.ts.map +1 -0
- package/dist/welcome.js +89 -0
- package/dist/welcome.js.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-tools.js","sourceRoot":"","sources":["../../src/bootstrap/register-tools.ts"],"names":[],"mappings":"AAAA,2LAA2L;AAC3L,sYAAsY;AACtY;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,4BAA4B,EAC5B,+BAA+B,EAC/B,gBAAgB,EAChB,MAAM,EACN,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GAQjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAGlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,2EAA2E;AAC3E,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAEzC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,sBAAsB;IACtB,yBAAyB;IACzB,oBAAoB;CACrB,CAAC;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,qDAAqD;AAErD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAsB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAE1F,uFAAuF;AACvF,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEvD;;;;;;;;;;;;;;GAcG;AACH,SAAS,wBAAwB,CAAC,WAAmB;IACnD,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wEAAwE;QACxE,sEAAsE;QACtE,yEAAyE;QACzE,MAAM,CAAC,KAAK,CAAC;YACX,GAAG,EAAE,6BAA6B;YAClC,MAAM,EAAE,gBAAgB;YACxB,WAAW;YACX,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC1C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAEpD,CAAC;gBACF,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;oBAAE,OAAO,GAAG,CAAC;YAC5C,CAAC;YAAC,MAAM,CAAC;gBACP,sEAAsE;YACxE,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAS,gCAAgC,CAAC,WAAmB;IAC3D,MAAM,GAAG,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAClD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAClC,MAAM,IAAI,uBAAuB,CAC/B,iBAAiB,WAAW,6DAA6D,EACzF,EAAE,UAAU,EAAE,kCAAkC,EAAE,CACnD,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,eAAe;AAEf;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAsB,EACtB,aAA+B,EAAE,EACjC,YAAkC,EAAE,EACpC,WAA8B,qBAAqB;IAEnD,KAAK,MAAM,WAAW,IAAI,QAAQ,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,gCAAgC,CAAC,WAAW,CAAC,CAAC;QAE1D,0EAA0E;QAC1E,sEAAsE;QACtE,mEAAmE;QACnE,wCAAwC;QACxC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;YACpC,GAAG;YACH,MAAM,EAAE,SAAS;YACjB,WAAW;YACX,sEAAsE;YACtE,kEAAkE;YAClE,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,oJAAoJ;YACpJ,4BAA4B,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QACD,iHAAiH;QACjH,IACE,MAAM,CAAC,IAAI,KAAK,SAAS;YACzB,MAAM,CAAC,UAAU,KAAK,SAAS;YAC/B,MAAM,CAAC,QAAQ,KAAK,SAAS,EAC7B,CAAC;YACD,MAAM,IAAI,uBAAuB,CAC/B,iBAAiB,WAAW,2CAA2C,EACvE,EAAE,UAAU,EAAE,6BAA6B,EAAE,CAC9C,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnC,sEAAsE;QACtE,mEAAmE;QACnE,kBAAkB;QAClB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,4BAA4B,CAAC,WAAmB,EAAE,MAAuB;IAChF,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,CAAC;IAEtC,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,uBAAuB,CAC/B,iBAAiB,WAAW,wDAAwD,EACpF,EAAE,UAAU,EAAE,+BAA+B,EAAE,CAChD,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,WAAW,CAAC;IAC9C,IAAI,aAAa,KAAK,eAAe,EAAE,CAAC;QACtC,IAAI,MAAM,CAAC,qBAAqB,KAAK,aAAa,EAAE,CAAC;YACnD,MAAM,IAAI,uBAAuB,CAC/B,iBAAiB,EAAE,sBAAsB,MAAM,EAAE,UAAU,IAAI,gCAAgC,EAAE,EACjG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CACnC,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,qBAAqB,KAAK,MAAM,EAAE,CAAC;YAC5C,qEAAqE;YACrE,2CAA2C;YAC3C,MAAM,IAAI,uBAAuB,CAC/B,iBAAiB,EAAE,4CAA4C,MAAM,EAAE,UAAU,IAAI,gBAAgB,EAAE,EACvG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CACnC,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,uBAAuB,CAC/B,iBAAiB,EAAE,yCAAyC,EAC5D,EAAE,UAAU,EAAE,4BAA4B,EAAE,CAC7C,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,KAAK,cAAc,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,IAAI,eAAe,CAAC;QAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,uBAAuB,CAC/B,iBAAiB,EAAE,yCAAyC,MAAM,GAAG,YAAY,GAAG,EACpF,EAAE,UAAU,EAAE,qCAAqC,MAAM,EAAE,EAAE,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,KAAK,4BAA4B,IAAI,MAAM,CAAC,cAAc,YAAY,KAAK,EAAE,CAAC;QAC7F,oEAAoE;QACpE,iEAAiE;QACjE,mEAAmE;QACnE,MAAM,MAAM,CAAC,cAAc,CAAC;IAC9B,CAAC;IACD,oFAAoF;IACpF,MAAM,IAAI,uBAAuB,CAC/B,iBAAiB,WAAW,0CAA0C,EACtE,EAAE,UAAU,EAAE,2BAA2B,EAAE,CAC5C,CAAC;AACJ,CAAC;AAYD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAAW,EACX,aAAqB;IAErB,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;gBAChE,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;QACtE,qEAAqE;QACrE,mEAAmE;IACrE,CAAC;IACD,OAAO,CAAC,IAAI,CACV,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAC5B,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAC/D,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CACvC,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,kBAAkB,CACzB,GAA2D,EAC3D,UAA+B;IAE/B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,8EAA8E;QAC9E,yEAAyE;QACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yBAAyB,GAAG,CAAC,IAAI,oEAAoE,CACtG,CAAC;QACF,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,EAAE,2BAA2B;YAChC,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,mDAAmD;IAEtG,MAAM,MAAM,GAAG,SAAS,CAAC;QACvB,QAAQ;QACR,MAAM,EAAE,WAAW;QACnB,GAAG,EAAE,GAAG,CAAC,UAAU;QACnB,WAAW,EAAE,GAAG,CAAC,IAAI;QACrB,wEAAwE;QACxE,wEAAwE;QACxE,mBAAmB,EAAE,KAAK;KAC3B,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAClD,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH;;;;;GAKG;AACH,SAAS,wBAAwB,CAC/B,IAAY,EACZ,IAA6C;IAE7C,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yBAAyB,IAAI,6CAA6C,CAC3E,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yBAAyB,IAAI,gDAAgD,CAC9E,CAAC;QACF,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,EAAE,wBAAwB;YAC7B,MAAM,EAAE,gBAAgB;YACxB,IAAI;SACL,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,eAAe,IAAI,CAAC,CAAC;IAClG,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,sBAAsB;QAC3B,MAAM,EAAE,gBAAgB;QACxB,IAAI;QACJ,KAAK,EAAE,IAAI,CAAC,MAAM;KACnB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,QAAsB,EACtB,IAAsB,EACtB,UAA+B,EAC/B,aAA+B,EAAE,EACjC,YAAkC,EAAE;IAEpC,uFAAuF;IACvF,yFAAyF;IACzF,gFAAgF;IAChF,oCAAoC;IACpC,MAAM,UAAU,GAAG,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEjE,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,mEAAmE;YACnE,uEAAuE;YACvE,sBAAsB;YACtB,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACtD,IAAI,SAAS,KAAK,SAAS;gBAAE,SAAS;YAEtC,yEAAyE;YACzE,qEAAqE;YACrE,qEAAqE;YACrE,wEAAwE;YACxE,yEAAyE;YACzE,wDAAwD;YACxD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,wBAAwB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzC,SAAS;YACX,CAAC;YACD,0FAA0F;YAC1F,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE,SAAS;YAE/E,yEAAyE;YACzE,sEAAsE;YACtE,4EAA4E;YAC5E,yBAAyB,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,+DAA+D;YAC/D,sEAAsE;YACtE,qEAAqE;YACrE,gEAAgE;YAChE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACtC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,EAAE,sBAAsB;gBAC3B,MAAM,EAAE,gBAAgB;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAgBD;;;;;;;;;GASG;AACH,SAAS,iBAAiB,CACxB,MAAkB,EAClB,GAAW,EACX,iBAAuD;IAEvD,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,uEAAuE;IACvE,sEAAsE;IACtE,MAAM,WAAW,GAAG,iBAAiB,IAAI,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,uBAAuB,CAC/B,GAAG,MAAM,aAAa,GAAG,uBAAuB,2BAA2B,UAAU,EACrF,EAAE,UAAU,EAAE,+BAA+B,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC;QACvB,QAAQ,EAAE,WAAW;QACrB,MAAM;QACN,GAAG;QACH,2EAA2E;QAC3E,wEAAwE;QACxE,iCAAiC;QACjC,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,MAAM,IAAI,uBAAuB,CAC/B,GAAG,MAAM,UAAU,WAAW,CAAC,EAAE,sBAAsB,MAAM,CAAC,UAAU,IAAI,gCAAgC,EAAE,EAC9G,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAClC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAGrC;IACC,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,uBAAuB,CAC/B,0BAA0B,IAAI,CAAC,GAAG,uBAAuB,2BAA2B,UAAU,EAC9F,EAAE,UAAU,EAAE,+BAA+B,EAAE,CAChD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,uBAAuB,CAC/B,uBAAuB,QAAQ,CAAC,EAAE,8CAA8C;YAC9E,qDAAqD,QAAQ,CAAC,EAAE,gBAAgB,EAClF,EAAE,UAAU,EAAE,sDAAsD,EAAE,CACvE,CAAC;IACJ,CAAC;IACD,yEAAyE;IACzE,qEAAqE;IACrE,oDAAoD;IACpD,OAAO,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA8B;IAChE,mEAAmE;IACnE,OAAO,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,QAAsB,EACtB,IAIC,EACD,UAA+B,EAC/B,aAA+B,EAAE,EACjC,YAAkC,EAAE;IAEpC,qEAAqE;IACrE,KAAK,MAAM,SAAS,IAAI,4BAA4B,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC7E,MAAM,wBAAwB,CAAC;YAC7B,QAAQ;YACR,SAAS,EAAE,mBAAmB,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC;YACtD,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,UAAU;YACV,UAAU;YACV,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC1C,KAAK,MAAM,SAAS,IAAI,4BAA4B,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC9E,iEAAiE;YACjE,oEAAoE;YACpE,MAAM,wBAAwB,CAAC;gBAC7B,QAAQ;gBACR,SAAS,EAAE,qBAAqB,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvE,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,UAAU;gBACV,UAAU;gBACV,SAAS;aACV,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAiBD;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,wBAAwB,CAAC,IAA0B;IAChE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC7E,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IACjD,6EAA6E;IAC7E,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO;IAEpC,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,uBAAuB,CAC/B,GAAG,IAAI,CAAC,MAAM,UAAU,IAAI,CAAC,EAAE,yCAAyC,IAAI,CAAC,MAAM,GAAG,YAAY,GAAG,EACrG,EAAE,UAAU,EAAE,sCAAsC,IAAI,CAAC,MAAM,EAAE,EAAE,CACpE,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,gEAAgE;IAChE,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAsB,EACtB,OAAmB,EACnB,GAAmB;IAEnB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,KAAK,qBAAqB,GAAG,IAAI,CAAC,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,EAAE,0BAA0B;gBAC/B,MAAM,EAAE,gBAAgB;gBACxB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc;gBACxC,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,yEAAyE;IACzE,0EAA0E;IAC1E,qEAAqE;IACrE,4BAA4B,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,OAAmB,EAAE,IAAU,EAAE,GAAmB;IACxE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,yEAAyE;YACzE,2EAA2E;YAC3E,sEAAsE;YACtE,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,OAAO;IACT,CAAC;IACD,gFAAgF;IAChF,oDAAoD;IACpD,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,6BAA6B;QAClC,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS;QACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;QAChD,MAAM,EAAE,oDAAoD;KAC7D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,gBAAgB,GAAG,6CAA6C,CAAC;AAEvE;;;;GAIG;AACH,SAAS,4BAA4B,CAAC,OAAmB;IACvD,MAAM,SAAS,GAAG,CAAC,GAAe,EAAQ,EAAE;QAC1C,GAAG,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ;YAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC,CAAC;IACF,SAAS,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* render — static-render entry. Tool-agnostic; every tool that emits a
|
|
3
|
+
* `CommandResult` reaches the user's terminal through this single seam.
|
|
4
|
+
*
|
|
5
|
+
* This is the one place that chooses the output medium: when stdout is a
|
|
6
|
+
* TTY the result renders through Ink (themed; colorless under NO_COLOR via
|
|
7
|
+
* the ThemeProvider); when stdout is piped/redirected/CI it renders as
|
|
8
|
+
* plain text with no banner. Tools never make this choice — they return a
|
|
9
|
+
* `CommandResult` and this seam picks Ink vs. text. `resultToView` is total
|
|
10
|
+
* over the `CommandResult` union, so both media consume the same view-model.
|
|
11
|
+
*
|
|
12
|
+
* Every Ink/cli-ui import here is dynamic so this module loads no
|
|
13
|
+
* React/Ink at startup — the hot `opensip fit --json` path (which
|
|
14
|
+
* uses `emitJson`, never this seam) stays React-free.
|
|
15
|
+
*/
|
|
16
|
+
import type { CommandResult } from '@opensip-cli/contracts';
|
|
17
|
+
/**
|
|
18
|
+
* Render a `CommandResult` to the terminal, choosing Ink (TTY) or plain
|
|
19
|
+
* text (non-TTY) at this single seam.
|
|
20
|
+
*
|
|
21
|
+
* Reads the project location from the entered `RunScope` for the Ink
|
|
22
|
+
* shell's `ℹ Project:` line. Project-agnostic commands and scopeless
|
|
23
|
+
* error/parse paths pass `undefined` → no project line. The plain-text
|
|
24
|
+
* path emits no banner or project line by design (clean pipes/CI logs).
|
|
25
|
+
*/
|
|
26
|
+
export declare function renderResult(result: CommandResult): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/bootstrap/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BvE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* render — static-render entry. Tool-agnostic; every tool that emits a
|
|
3
|
+
* `CommandResult` reaches the user's terminal through this single seam.
|
|
4
|
+
*
|
|
5
|
+
* This is the one place that chooses the output medium: when stdout is a
|
|
6
|
+
* TTY the result renders through Ink (themed; colorless under NO_COLOR via
|
|
7
|
+
* the ThemeProvider); when stdout is piped/redirected/CI it renders as
|
|
8
|
+
* plain text with no banner. Tools never make this choice — they return a
|
|
9
|
+
* `CommandResult` and this seam picks Ink vs. text. `resultToView` is total
|
|
10
|
+
* over the `CommandResult` union, so both media consume the same view-model.
|
|
11
|
+
*
|
|
12
|
+
* Every Ink/cli-ui import here is dynamic so this module loads no
|
|
13
|
+
* React/Ink at startup — the hot `opensip fit --json` path (which
|
|
14
|
+
* uses `emitJson`, never this seam) stays React-free.
|
|
15
|
+
*/
|
|
16
|
+
import { currentScope } from '@opensip-cli/core';
|
|
17
|
+
/**
|
|
18
|
+
* Render a `CommandResult` to the terminal, choosing Ink (TTY) or plain
|
|
19
|
+
* text (non-TTY) at this single seam.
|
|
20
|
+
*
|
|
21
|
+
* Reads the project location from the entered `RunScope` for the Ink
|
|
22
|
+
* shell's `ℹ Project:` line. Project-agnostic commands and scopeless
|
|
23
|
+
* error/parse paths pass `undefined` → no project line. The plain-text
|
|
24
|
+
* path emits no banner or project line by design (clean pipes/CI logs).
|
|
25
|
+
*/
|
|
26
|
+
export async function renderResult(result) {
|
|
27
|
+
const scope = currentScope();
|
|
28
|
+
const project = scope?.projectContext;
|
|
29
|
+
const projectHeader = project?.scope === 'project'
|
|
30
|
+
? { root: project.projectRoot, walkedUp: project.walkedUp }
|
|
31
|
+
: undefined;
|
|
32
|
+
const ui = scope?.ui;
|
|
33
|
+
// Non-TTY (pipe / redirect / CI): render as plain text with zero ANSI
|
|
34
|
+
// from the same view-model the Ink path uses. The ASCII banner is
|
|
35
|
+
// suppressed (clean logs), but the `ℹ Project:` discovery line is kept
|
|
36
|
+
// — CI output should still record which root was analyzed and how it was
|
|
37
|
+
// found. `error` stays terse (no project line), matching the TTY shell.
|
|
38
|
+
if (!process.stdout.isTTY) {
|
|
39
|
+
const [{ resultToView }, { renderToText, viewProjectHeader, group }] = await Promise.all([
|
|
40
|
+
import('../ui/result-to-view.js'),
|
|
41
|
+
import('@opensip-cli/cli-ui'),
|
|
42
|
+
]);
|
|
43
|
+
const body = resultToView(result);
|
|
44
|
+
const node = projectHeader !== undefined && result.type !== 'error'
|
|
45
|
+
? group([viewProjectHeader(projectHeader), { kind: 'spacer' }, body])
|
|
46
|
+
: body;
|
|
47
|
+
process.stdout.write(`${renderToText(node)}\n`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const { renderApp } = await import('../ui/render.js');
|
|
51
|
+
await renderApp(result, projectHeader, ui);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/bootstrap/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAqB;IACtD,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,KAAK,EAAE,cAAc,CAAC;IACtC,MAAM,aAAa,GACjB,OAAO,EAAE,KAAK,KAAK,SAAS;QAC1B,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC3D,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC;IAErB,sEAAsE;IACtE,kEAAkE;IAClE,uEAAuE;IACvE,yEAAyE;IACzE,wEAAwE;IACxE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvF,MAAM,CAAC,yBAAyB,CAAC;YACjC,MAAM,CAAC,qBAAqB,CAAC;SAC9B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,IAAI,GACR,aAAa,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YACpD,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;YACrE,CAAC,CAAC,IAAI,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACtD,MAAM,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* report — TTY/CI guarded auto-open of the HTML report after a
|
|
3
|
+
* tool run.
|
|
4
|
+
*
|
|
5
|
+
* Tools call this through `ctx.maybeOpenReport`. Lives in `bootstrap/`
|
|
6
|
+
* because the launch policy (TTY, JSON-mode, CI vars, `--open`) is
|
|
7
|
+
* tool-agnostic.
|
|
8
|
+
*
|
|
9
|
+
* Audit 2026-05-29 (L2): the auto-open path now goes through the CLI's
|
|
10
|
+
* own cross-tool composition (`composeAndWriteReport`) instead of
|
|
11
|
+
* dynamically importing fitness's old report opener. The CLI is the
|
|
12
|
+
* report composition root — it walks every registered tool's
|
|
13
|
+
* `collectReportData` contribution and merges them. This removes the
|
|
14
|
+
* last `cli → @opensip-cli/fitness` dynamic import from this path and
|
|
15
|
+
* keeps fitness decoupled from graph.
|
|
16
|
+
*
|
|
17
|
+
* Extracted from the prior `render-helpers.ts` so the pure renderer
|
|
18
|
+
* (`render.ts`) and this report auto-open helper can each evolve
|
|
19
|
+
* without dragging the other along. Audit 2026-05-23 M4. The first-
|
|
20
|
+
* party live-view map (`live-views.ts`) was deleted in Layer 5 Phase 3
|
|
21
|
+
* (audit 2026-05-22 F3) — tool packages now own their own renderers.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Open the HTML report in the user's browser when the run conditions
|
|
25
|
+
* allow it (TTY, not JSON-mode, not CI, opt-in via --open). Tools call
|
|
26
|
+
* this through `ctx.maybeOpenReport` after a run. Project root and the
|
|
27
|
+
* per-tool report contributions both come from the entered RunScope
|
|
28
|
+
* (read inside `composeAndWriteReport`) — single source of truth.
|
|
29
|
+
*/
|
|
30
|
+
export declare function maybeOpenReport(opts: {
|
|
31
|
+
openRequested: boolean;
|
|
32
|
+
jsonOutput: boolean;
|
|
33
|
+
}): Promise<void>;
|
|
34
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/bootstrap/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* report — TTY/CI guarded auto-open of the HTML report after a
|
|
3
|
+
* tool run.
|
|
4
|
+
*
|
|
5
|
+
* Tools call this through `ctx.maybeOpenReport`. Lives in `bootstrap/`
|
|
6
|
+
* because the launch policy (TTY, JSON-mode, CI vars, `--open`) is
|
|
7
|
+
* tool-agnostic.
|
|
8
|
+
*
|
|
9
|
+
* Audit 2026-05-29 (L2): the auto-open path now goes through the CLI's
|
|
10
|
+
* own cross-tool composition (`composeAndWriteReport`) instead of
|
|
11
|
+
* dynamically importing fitness's old report opener. The CLI is the
|
|
12
|
+
* report composition root — it walks every registered tool's
|
|
13
|
+
* `collectReportData` contribution and merges them. This removes the
|
|
14
|
+
* last `cli → @opensip-cli/fitness` dynamic import from this path and
|
|
15
|
+
* keeps fitness decoupled from graph.
|
|
16
|
+
*
|
|
17
|
+
* Extracted from the prior `render-helpers.ts` so the pure renderer
|
|
18
|
+
* (`render.ts`) and this report auto-open helper can each evolve
|
|
19
|
+
* without dragging the other along. Audit 2026-05-23 M4. The first-
|
|
20
|
+
* party live-view map (`live-views.ts`) was deleted in Layer 5 Phase 3
|
|
21
|
+
* (audit 2026-05-22 F3) — tool packages now own their own renderers.
|
|
22
|
+
*/
|
|
23
|
+
import { decideReportOpen } from '../open-report.js';
|
|
24
|
+
import { composeAndWriteReport } from '../report-compose.js';
|
|
25
|
+
/**
|
|
26
|
+
* Open the HTML report in the user's browser when the run conditions
|
|
27
|
+
* allow it (TTY, not JSON-mode, not CI, opt-in via --open). Tools call
|
|
28
|
+
* this through `ctx.maybeOpenReport` after a run. Project root and the
|
|
29
|
+
* per-tool report contributions both come from the entered RunScope
|
|
30
|
+
* (read inside `composeAndWriteReport`) — single source of truth.
|
|
31
|
+
*/
|
|
32
|
+
export async function maybeOpenReport(opts) {
|
|
33
|
+
const decision = decideReportOpen({
|
|
34
|
+
openRequested: opts.openRequested,
|
|
35
|
+
jsonOutput: opts.jsonOutput,
|
|
36
|
+
stdoutIsTTY: Boolean(process.stdout.isTTY),
|
|
37
|
+
env: process.env,
|
|
38
|
+
});
|
|
39
|
+
if (!decision.shouldOpen)
|
|
40
|
+
return;
|
|
41
|
+
// Compose the cross-tool report and launch the browser. The CLI
|
|
42
|
+
// owns composition; `composeAndWriteReport` reads `currentScope()`
|
|
43
|
+
// for the tool registry + datastore and walks each tool's
|
|
44
|
+
// `collectReportData`. No `@opensip-cli/fitness` import here.
|
|
45
|
+
await composeAndWriteReport({ open: true });
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/bootstrap/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAGrC;IACC,MAAM,QAAQ,GAAG,gBAAgB,CAAC;QAChC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,UAAU;QAAE,OAAO;IACjC,gEAAgE;IAChE,mEAAmE;IACnE,0DAA0D;IAC1D,8DAA8D;IAC9D,MAAM,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* run-plane — the host-owned run lifecycle plane (host-owned-run-timing §6, §8).
|
|
3
|
+
*
|
|
4
|
+
* The single place that:
|
|
5
|
+
* - creates the per-invocation {@link RunLifecycle} (inside the command action,
|
|
6
|
+
* after `RunScope` entry, before tool work — NOT at context construction);
|
|
7
|
+
* - turns a tool-returned {@link ToolSessionContribution} into a persisted
|
|
8
|
+
* generic `StoredSession` row (host stamps `startedAt` / `completedAt` /
|
|
9
|
+
* `durationMs` from the lifecycle; the tool supplies only verdict/payload);
|
|
10
|
+
* - records host-side overhead (persistMs now; render/egress/ttyBusy/total in
|
|
11
|
+
* later phases) in the sibling host-metrics record keyed by session id.
|
|
12
|
+
*
|
|
13
|
+
* `buildToolCliContext` constructs only the FACTORY (stable deps). The command
|
|
14
|
+
* action begins the invocation lifecycle and, after the handler / live renderer
|
|
15
|
+
* returns its completion, asks the plane to complete + persist.
|
|
16
|
+
*
|
|
17
|
+
* Best-effort contract: persistence never throws, never affects the primary
|
|
18
|
+
* result or exit code. When no datastore is in scope (non-project commands,
|
|
19
|
+
* tests) the plane writes nothing and returns `undefined`.
|
|
20
|
+
*/
|
|
21
|
+
import { type Logger, type RecordedToolRunSession, type RunLifecycle, type ToolRunCompletion, type ToolRunSessions, type ToolSessionContribution } from '@opensip-cli/core';
|
|
22
|
+
import type { StoredSessionHostMetrics } from '@opensip-cli/contracts';
|
|
23
|
+
import type { DataStore } from '@opensip-cli/datastore';
|
|
24
|
+
/** Stable dependencies the run-plane factory captures (no per-invocation state). */
|
|
25
|
+
export interface RunPlaneDeps {
|
|
26
|
+
/** Resolve the project datastore, or undefined when none is in scope. Must not throw. */
|
|
27
|
+
readonly getDatastore: () => DataStore | undefined;
|
|
28
|
+
readonly logger?: Logger;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The per-invocation run lifecycle handle. Created once per command action by
|
|
32
|
+
* {@link RunPlaneFactory.beginRun} (or lazily by {@link RunPlaneFactory.current}).
|
|
33
|
+
*/
|
|
34
|
+
export interface RunPlaneInvocation {
|
|
35
|
+
/** The lifecycle for this invocation (display elapsed; host completion source). */
|
|
36
|
+
readonly lifecycle: RunLifecycle;
|
|
37
|
+
/**
|
|
38
|
+
* The launch path: freeze the lifecycle (`complete()`) and persist the
|
|
39
|
+
* contribution with the frozen `startedAt` / `completedAt` / `durationMs`.
|
|
40
|
+
* Idempotent on the lifecycle; best-effort on persistence.
|
|
41
|
+
*/
|
|
42
|
+
completeAndPersist(contribution: ToolSessionContribution): RecordedToolRunSession | undefined;
|
|
43
|
+
/** Best-effort upsert of host-side overhead metrics for the persisted session. */
|
|
44
|
+
recordHostMetrics(metrics: StoredSessionHostMetrics): void;
|
|
45
|
+
/**
|
|
46
|
+
* Run a live render and own its completion: time the TTY occupancy, then —
|
|
47
|
+
* if the renderer returned a `session` contribution — freeze the lifecycle,
|
|
48
|
+
* persist it, and record `ttyBusyMs`. Returns the renderer's completion
|
|
49
|
+
* unchanged so the caller can still read `.envelope` for egress.
|
|
50
|
+
*
|
|
51
|
+
* This is the live-path analogue of `completeAndPersist`: the renderer no
|
|
52
|
+
* longer calls a session writer inside the Ink tree; the host persists here
|
|
53
|
+
* after `await render()`.
|
|
54
|
+
*/
|
|
55
|
+
completeLiveRender(render: () => Promise<ToolRunCompletion | void>): Promise<ToolRunCompletion | void>;
|
|
56
|
+
/** The persisted session id, once a row has been written (else undefined). */
|
|
57
|
+
sessionId(): string | undefined;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Internal run-lifecycle hooks the host attaches to the command context so the
|
|
61
|
+
* mount dispatch can mark the lifecycle boundaries. NOT part of the public
|
|
62
|
+
* `ToolCliContext` — read via cast at the dispatch site (like `runSession`).
|
|
63
|
+
*/
|
|
64
|
+
export interface RunActionHooks {
|
|
65
|
+
/** Begin the invocation lifecycle — called by the command action before the handler runs. */
|
|
66
|
+
readonly beginRun?: () => void;
|
|
67
|
+
/**
|
|
68
|
+
* Called after the handler returns. If the result carries a
|
|
69
|
+
* {@link ToolSessionContribution} (a `ToolRunCompletion`), the host freezes
|
|
70
|
+
* the lifecycle and persists it. A plain `CommandResult` (no `session`) is a
|
|
71
|
+
* no-op — every first-party tool now returns a contribution (Phase 3); there
|
|
72
|
+
* is no transitional generic-session writer left on the launch surface.
|
|
73
|
+
*/
|
|
74
|
+
readonly completeRun?: (result: unknown) => void;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The factory `buildToolCliContext` creates. Holds only stable deps; the
|
|
78
|
+
* lifecycle is created per command action.
|
|
79
|
+
*/
|
|
80
|
+
export interface RunPlaneFactory {
|
|
81
|
+
/** Begin (or return the already-begun) invocation lifecycle for this command action. */
|
|
82
|
+
beginRun(): RunPlaneInvocation;
|
|
83
|
+
/** The current invocation — lazily begun if the command action has not yet called beginRun. */
|
|
84
|
+
current(): RunPlaneInvocation;
|
|
85
|
+
}
|
|
86
|
+
export declare function createRunPlaneFactory(deps: RunPlaneDeps): RunPlaneFactory;
|
|
87
|
+
/**
|
|
88
|
+
* The public run seam (host-owned-run-timing §6.5): `timing` exposes the current
|
|
89
|
+
* invocation lifecycle for display-only elapsed. There is NO public
|
|
90
|
+
* generic-session writer — tools return a {@link ToolSessionContribution} (inside
|
|
91
|
+
* a {@link ToolRunCompletion}) and the host run plane persists it via the action
|
|
92
|
+
* hooks below. The getter lazily begins the lifecycle so a tool that reads
|
|
93
|
+
* `timing` before the action hook fires still observes a live timer.
|
|
94
|
+
*/
|
|
95
|
+
export declare function createRunSessionSeam(factory: RunPlaneFactory): ToolRunSessions;
|
|
96
|
+
/**
|
|
97
|
+
* The internal run-lifecycle hooks the command-mount dispatch reads (via cast,
|
|
98
|
+
* like `runSession`) to mark the lifecycle boundaries. `beginRun` starts the
|
|
99
|
+
* lifecycle at the command-action boundary (after RunScope entry, before the
|
|
100
|
+
* handler); `completeRun` freezes + persists when the handler returned a
|
|
101
|
+
* {@link ToolRunCompletion} carrying a session contribution. A plain
|
|
102
|
+
* `CommandResult` (no `session`) is a no-op.
|
|
103
|
+
*/
|
|
104
|
+
export declare function createRunActionHooks(factory: RunPlaneFactory): RunActionHooks;
|
|
105
|
+
//# sourceMappingURL=run-plane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-plane.d.ts","sourceRoot":"","sources":["../../src/bootstrap/run-plane.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EAEjB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC7B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAIxD,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,YAAY,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,uBAAuB,GAAG,sBAAsB,GAAG,SAAS,CAAC;IAC9F,kFAAkF;IAClF,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC3D;;;;;;;;;OASG;IACH,kBAAkB,CAChB,MAAM,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAC9C,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACrC,8EAA8E;IAC9E,SAAS,IAAI,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,wFAAwF;IACxF,QAAQ,IAAI,kBAAkB,CAAC;IAC/B,+FAA+F;IAC/F,OAAO,IAAI,kBAAkB,CAAC;CAC/B;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,CAwIzE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAM9E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAa7E"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* run-plane — the host-owned run lifecycle plane (host-owned-run-timing §6, §8).
|
|
3
|
+
*
|
|
4
|
+
* The single place that:
|
|
5
|
+
* - creates the per-invocation {@link RunLifecycle} (inside the command action,
|
|
6
|
+
* after `RunScope` entry, before tool work — NOT at context construction);
|
|
7
|
+
* - turns a tool-returned {@link ToolSessionContribution} into a persisted
|
|
8
|
+
* generic `StoredSession` row (host stamps `startedAt` / `completedAt` /
|
|
9
|
+
* `durationMs` from the lifecycle; the tool supplies only verdict/payload);
|
|
10
|
+
* - records host-side overhead (persistMs now; render/egress/ttyBusy/total in
|
|
11
|
+
* later phases) in the sibling host-metrics record keyed by session id.
|
|
12
|
+
*
|
|
13
|
+
* `buildToolCliContext` constructs only the FACTORY (stable deps). The command
|
|
14
|
+
* action begins the invocation lifecycle and, after the handler / live renderer
|
|
15
|
+
* returns its completion, asks the plane to complete + persist.
|
|
16
|
+
*
|
|
17
|
+
* Best-effort contract: persistence never throws, never affects the primary
|
|
18
|
+
* result or exit code. When no datastore is in scope (non-project commands,
|
|
19
|
+
* tests) the plane writes nothing and returns `undefined`.
|
|
20
|
+
*/
|
|
21
|
+
import { createRunLifecycle, generatePrefixedId, logger as defaultLogger, } from '@opensip-cli/core';
|
|
22
|
+
import { SessionRepo } from '@opensip-cli/session-store';
|
|
23
|
+
const MODULE_TAG = 'cli:run-plane';
|
|
24
|
+
export function createRunPlaneFactory(deps) {
|
|
25
|
+
const log = deps.logger ?? defaultLogger;
|
|
26
|
+
// One command per CLI invocation: a single mutable invocation slot is correct.
|
|
27
|
+
let invocation;
|
|
28
|
+
function safeDatastore() {
|
|
29
|
+
try {
|
|
30
|
+
return deps.getDatastore();
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
// @swallow-ok absence of a datastore is a NORMAL control-flow signal
|
|
34
|
+
// (non-project commands / tests) — the resolver throwing means the same.
|
|
35
|
+
// Debug-log for diagnosability and degrade to "no datastore".
|
|
36
|
+
log.debug?.({
|
|
37
|
+
evt: 'cli.run-plane.datastore_unavailable',
|
|
38
|
+
module: MODULE_TAG,
|
|
39
|
+
error: error instanceof Error ? error.message : String(error),
|
|
40
|
+
});
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function makeInvocation() {
|
|
45
|
+
const lifecycle = createRunLifecycle();
|
|
46
|
+
let sessionId;
|
|
47
|
+
function persist(contribution, snapshot) {
|
|
48
|
+
const datastore = safeDatastore();
|
|
49
|
+
if (!datastore)
|
|
50
|
+
return;
|
|
51
|
+
const id = generatePrefixedId(contribution.tool);
|
|
52
|
+
const persistStart = performance.now();
|
|
53
|
+
try {
|
|
54
|
+
const repo = new SessionRepo(datastore);
|
|
55
|
+
repo.save({
|
|
56
|
+
id,
|
|
57
|
+
tool: contribution.tool,
|
|
58
|
+
startedAt: snapshot.startedAt,
|
|
59
|
+
completedAt: snapshot.completedAt,
|
|
60
|
+
cwd: contribution.cwd,
|
|
61
|
+
recipe: contribution.recipe,
|
|
62
|
+
score: contribution.score,
|
|
63
|
+
passed: contribution.passed,
|
|
64
|
+
durationMs: snapshot.durationMs,
|
|
65
|
+
payload: contribution.payload,
|
|
66
|
+
});
|
|
67
|
+
sessionId = id;
|
|
68
|
+
// persistMs: host-side write cost, recorded on the sibling metrics row
|
|
69
|
+
// (separate clock from canonical durationMs).
|
|
70
|
+
repo.upsertHostMetrics(id, { persistMs: Math.max(0, performance.now() - persistStart) });
|
|
71
|
+
log.info?.({
|
|
72
|
+
evt: 'cli.run-session.recorded',
|
|
73
|
+
module: MODULE_TAG,
|
|
74
|
+
tool: contribution.tool,
|
|
75
|
+
sessionId: id,
|
|
76
|
+
durationMs: snapshot.durationMs,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
// @swallow-ok best-effort session persistence already warned; degrade to undefined
|
|
81
|
+
log.warn?.({
|
|
82
|
+
evt: 'cli.run-session.record_failed',
|
|
83
|
+
module: MODULE_TAG,
|
|
84
|
+
tool: contribution.tool,
|
|
85
|
+
error: error instanceof Error ? error.message : String(error),
|
|
86
|
+
});
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
id,
|
|
91
|
+
tool: contribution.tool,
|
|
92
|
+
startedAt: snapshot.startedAt,
|
|
93
|
+
completedAt: snapshot.completedAt,
|
|
94
|
+
durationMs: snapshot.durationMs,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function recordHostMetrics(metrics) {
|
|
98
|
+
if (sessionId === undefined)
|
|
99
|
+
return;
|
|
100
|
+
const datastore = safeDatastore();
|
|
101
|
+
if (!datastore)
|
|
102
|
+
return;
|
|
103
|
+
try {
|
|
104
|
+
new SessionRepo(datastore).upsertHostMetrics(sessionId, metrics);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
log.warn?.({
|
|
108
|
+
evt: 'cli.run-session.host_metrics_failed',
|
|
109
|
+
module: MODULE_TAG,
|
|
110
|
+
sessionId,
|
|
111
|
+
error: error instanceof Error ? error.message : String(error),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function completeAndPersist(contribution) {
|
|
116
|
+
return persist(contribution, lifecycle.complete());
|
|
117
|
+
}
|
|
118
|
+
async function completeLiveRender(render) {
|
|
119
|
+
const ttyStart = performance.now();
|
|
120
|
+
const completion = await render();
|
|
121
|
+
const ttyBusyMs = Math.max(0, performance.now() - ttyStart);
|
|
122
|
+
if (completion?.session) {
|
|
123
|
+
// Both calls are SYNCHRONOUS best-effort writes (they return a value /
|
|
124
|
+
// void, not a promise); the detached-promise heuristic flags un-awaited
|
|
125
|
+
// calls inside this async fn by name. Nothing to await.
|
|
126
|
+
// @fitness-ignore-next-line detached-promises -- completeAndPersist is synchronous (returns RecordedToolRunSession | undefined)
|
|
127
|
+
completeAndPersist(completion.session);
|
|
128
|
+
// @fitness-ignore-next-line detached-promises -- recordHostMetrics is synchronous (returns void)
|
|
129
|
+
recordHostMetrics({ ttyBusyMs });
|
|
130
|
+
}
|
|
131
|
+
return completion;
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
lifecycle,
|
|
135
|
+
completeAndPersist,
|
|
136
|
+
recordHostMetrics,
|
|
137
|
+
completeLiveRender,
|
|
138
|
+
sessionId: () => sessionId,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
beginRun() {
|
|
143
|
+
invocation ??= makeInvocation();
|
|
144
|
+
return invocation;
|
|
145
|
+
},
|
|
146
|
+
current() {
|
|
147
|
+
invocation ??= makeInvocation();
|
|
148
|
+
return invocation;
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* The public run seam (host-owned-run-timing §6.5): `timing` exposes the current
|
|
154
|
+
* invocation lifecycle for display-only elapsed. There is NO public
|
|
155
|
+
* generic-session writer — tools return a {@link ToolSessionContribution} (inside
|
|
156
|
+
* a {@link ToolRunCompletion}) and the host run plane persists it via the action
|
|
157
|
+
* hooks below. The getter lazily begins the lifecycle so a tool that reads
|
|
158
|
+
* `timing` before the action hook fires still observes a live timer.
|
|
159
|
+
*/
|
|
160
|
+
export function createRunSessionSeam(factory) {
|
|
161
|
+
return {
|
|
162
|
+
get timing() {
|
|
163
|
+
return factory.current().lifecycle;
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* The internal run-lifecycle hooks the command-mount dispatch reads (via cast,
|
|
169
|
+
* like `runSession`) to mark the lifecycle boundaries. `beginRun` starts the
|
|
170
|
+
* lifecycle at the command-action boundary (after RunScope entry, before the
|
|
171
|
+
* handler); `completeRun` freezes + persists when the handler returned a
|
|
172
|
+
* {@link ToolRunCompletion} carrying a session contribution. A plain
|
|
173
|
+
* `CommandResult` (no `session`) is a no-op.
|
|
174
|
+
*/
|
|
175
|
+
export function createRunActionHooks(factory) {
|
|
176
|
+
return {
|
|
177
|
+
beginRun: () => {
|
|
178
|
+
factory.beginRun();
|
|
179
|
+
},
|
|
180
|
+
completeRun: (result) => {
|
|
181
|
+
const completion = result;
|
|
182
|
+
const session = completion?.session;
|
|
183
|
+
// host-owned-run-timing Phase 3: the host freezes the lifecycle and
|
|
184
|
+
// persists the returned session contribution. Best-effort.
|
|
185
|
+
if (session)
|
|
186
|
+
factory.current().completeAndPersist(session);
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=run-plane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-plane.js","sourceRoot":"","sources":["../../src/bootstrap/run-plane.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,IAAI,aAAa,GAQxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAKzD,MAAM,UAAU,GAAG,eAAe,CAAC;AAsEnC,MAAM,UAAU,qBAAqB,CAAC,IAAkB;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC;IACzC,+EAA+E;IAC/E,IAAI,UAA0C,CAAC;IAE/C,SAAS,aAAa;QACpB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qEAAqE;YACrE,yEAAyE;YACzE,8DAA8D;YAC9D,GAAG,CAAC,KAAK,EAAE,CAAC;gBACV,GAAG,EAAE,qCAAqC;gBAC1C,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;YACH,OAAO;QACT,CAAC;IACH,CAAC;IAED,SAAS,cAAc;QACrB,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;QACvC,IAAI,SAA6B,CAAC;QAElC,SAAS,OAAO,CACd,YAAqC,EACrC,QAA2B;YAE3B,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS;gBAAE,OAAO;YACvB,MAAM,EAAE,GAAG,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC;oBACR,EAAE;oBACF,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,GAAG,EAAE,YAAY,CAAC,GAAG;oBACrB,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,KAAK,EAAE,YAAY,CAAC,KAAK;oBACzB,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,OAAO,EAAE,YAAY,CAAC,OAAO;iBAC9B,CAAC,CAAC;gBACH,SAAS,GAAG,EAAE,CAAC;gBACf,uEAAuE;gBACvE,8CAA8C;gBAC9C,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;gBACzF,GAAG,CAAC,IAAI,EAAE,CAAC;oBACT,GAAG,EAAE,0BAA0B;oBAC/B,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,SAAS,EAAE,EAAE;oBACb,UAAU,EAAE,QAAQ,CAAC,UAAU;iBAChC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mFAAmF;gBACnF,GAAG,CAAC,IAAI,EAAE,CAAC;oBACT,GAAG,EAAE,+BAA+B;oBACpC,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,OAAO;gBACL,EAAE;gBACF,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;aAChC,CAAC;QACJ,CAAC;QAED,SAAS,iBAAiB,CAAC,OAAiC;YAC1D,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO;YACpC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS;gBAAE,OAAO;YACvB,IAAI,CAAC;gBACH,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,IAAI,EAAE,CAAC;oBACT,GAAG,EAAE,qCAAqC;oBAC1C,MAAM,EAAE,UAAU;oBAClB,SAAS;oBACT,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,SAAS,kBAAkB,CACzB,YAAqC;YAErC,OAAO,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,KAAK,UAAU,kBAAkB,CAC/B,MAA+C;YAE/C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,MAAM,MAAM,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;YAC5D,IAAI,UAAU,EAAE,OAAO,EAAE,CAAC;gBACxB,uEAAuE;gBACvE,wEAAwE;gBACxE,wDAAwD;gBACxD,gIAAgI;gBAChI,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACvC,iGAAiG;gBACjG,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO;YACL,SAAS;YACT,kBAAkB;YAClB,iBAAiB;YACjB,kBAAkB;YAClB,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;YACN,UAAU,KAAK,cAAc,EAAE,CAAC;YAChC,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO;YACL,UAAU,KAAK,cAAc,EAAE,CAAC;YAChC,OAAO,UAAU,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;IAC3D,OAAO;QACL,IAAI,MAAM;YACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC;QACrC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;IAC3D,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC;QACD,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;YACtB,MAAM,UAAU,GAAG,MAAuC,CAAC;YAC3D,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,CAAC;YACpC,oEAAoE;YACpE,2DAA2D;YAC3D,IAAI,OAAO;gBAAE,OAAO,CAAC,OAAO,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scope-access — per-run scope + datastore readers.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `cli-context.ts` so that module stays focused on context
|
|
5
|
+
* ASSEMBLY (live-view registry + `buildToolCliContext`). This module owns the
|
|
6
|
+
* complementary concern: reading the entered `RunScope` and opening the
|
|
7
|
+
* project-local SQLite datastore lazily.
|
|
8
|
+
*
|
|
9
|
+
* After Phase 3 hygiene the ONLY way to obtain the per-run scope is
|
|
10
|
+
* `currentScope()` (entered by the pre-action-hook, or explicit `runWithScope`
|
|
11
|
+
* in tests). There are no holder fallbacks. Non-action paths (report, errors)
|
|
12
|
+
* that need scope must ensure entry or restructure to run inside an entered
|
|
13
|
+
* action.
|
|
14
|
+
*/
|
|
15
|
+
import { type Logger, type ProjectContext, type RunScope } from '@opensip-cli/core';
|
|
16
|
+
import { type DataStore } from '@opensip-cli/datastore';
|
|
17
|
+
/**
|
|
18
|
+
* Strict reader: the only way to obtain the per-run scope is `currentScope()`
|
|
19
|
+
* (entered by pre-action-hook or explicit runWithScope in tests). All previous
|
|
20
|
+
* holder fallbacks were removed.
|
|
21
|
+
*
|
|
22
|
+
* @throws {SystemError} (`SYSTEM.SCOPE.NOT_ENTERED`) When accessed before the
|
|
23
|
+
* pre-action-hook constructed and entered the scope.
|
|
24
|
+
*/
|
|
25
|
+
export declare function readScope(): RunScope;
|
|
26
|
+
/**
|
|
27
|
+
* Read the current project root. Convenience for non-tool bootstrap
|
|
28
|
+
* helpers (e.g. `maybeOpenReport`) that need the project root but
|
|
29
|
+
* don't carry a ToolCliContext.
|
|
30
|
+
*
|
|
31
|
+
* @throws {SystemError} (`SYSTEM.BOOTSTRAP.PROJECT_UNSET`) When accessed before
|
|
32
|
+
* the pre-action-hook resolved the context.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getCurrentProjectRoot(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Build a closure-based datastore thunk for the given project.
|
|
37
|
+
* Caches the open DataStore on first access. The pre-action-hook
|
|
38
|
+
* wires the result into `RunScope.datastore` so tools and CLI
|
|
39
|
+
* commands reach the same instance.
|
|
40
|
+
*
|
|
41
|
+
* @throws {SystemError} (`SYSTEM.BOOTSTRAP.DATASTORE_OUTSIDE_PROJECT`) When the
|
|
42
|
+
* returned thunk is invoked outside a project scope — callers must check
|
|
43
|
+
* `project.scope === 'project'` first or handle the throw as a "no project
|
|
44
|
+
* found" error.
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildDatastoreThunk(project: ProjectContext, log?: Logger): () => DataStore;
|
|
47
|
+
/**
|
|
48
|
+
* Open (or return cached) project-local SQLite DataStore via the
|
|
49
|
+
* scope's datastore thunk. Shared between tool action bodies and
|
|
50
|
+
* the host commands (e.g. `sessions`, in `host-subcommand-groups.ts`) so
|
|
51
|
+
* both paths are equally lazy.
|
|
52
|
+
*
|
|
53
|
+
* @throws {SystemError} When called outside a project scope — see
|
|
54
|
+
* `buildDatastoreThunk`'s contract.
|
|
55
|
+
*/
|
|
56
|
+
export declare function getOrOpenDatastore(_log?: Logger): DataStore;
|
|
57
|
+
/**
|
|
58
|
+
* Project-scoped datastore accessor for the host-owned planes (baseline,
|
|
59
|
+
* toolState, hostPlanes). Converts the internal DATASTORE_OUTSIDE_PROJECT
|
|
60
|
+
* SystemError into a clear ConfigurationError so callers of the documented
|
|
61
|
+
* ToolCliContext seams get a user-actionable error (exit 2) instead of an
|
|
62
|
+
* internal SYSTEM.* code.
|
|
63
|
+
*
|
|
64
|
+
* @throws {ConfigurationError} When called outside a project scope (no open
|
|
65
|
+
* datastore); other datastore-open failures propagate unchanged.
|
|
66
|
+
*/
|
|
67
|
+
export declare function getProjectDatastore(): DataStore;
|
|
68
|
+
//# sourceMappingURL=scope-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-access.d.ts","sourceRoot":"","sources":["../../src/bootstrap/scope-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,QAAQ,EAKd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,QAAQ,CAWpC;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,GAAG,GAAE,MAAsB,GAC1B,MAAM,SAAS,CAoBjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAsB,GAAG,SAAS,CAG1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,CAgB/C"}
|