@ashlr/hub 2.2.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 +1158 -0
- package/LICENSE +21 -0
- package/README.md +833 -0
- package/bin/ashlr +8 -0
- package/dist/api/core.d.ts +28 -0
- package/dist/api/core.js +42 -0
- package/dist/api/core.js.map +1 -0
- package/dist/api/index.d.ts +9 -0
- package/dist/api/index.js +9 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/plugin.d.ts +12 -0
- package/dist/api/plugin.js +13 -0
- package/dist/api/plugin.js.map +1 -0
- package/dist/api/types.d.ts +9 -0
- package/dist/api/types.js +9 -0
- package/dist/api/types.js.map +1 -0
- package/dist/cli/args.d.ts +20 -0
- package/dist/cli/args.js +23 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/ask.d.ts +22 -0
- package/dist/cli/ask.js +240 -0
- package/dist/cli/ask.js.map +1 -0
- package/dist/cli/audit.d.ts +26 -0
- package/dist/cli/audit.js +199 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/backlog.d.ts +26 -0
- package/dist/cli/backlog.js +322 -0
- package/dist/cli/backlog.js.map +1 -0
- package/dist/cli/completions.d.ts +18 -0
- package/dist/cli/completions.js +156 -0
- package/dist/cli/completions.js.map +1 -0
- package/dist/cli/daemon.d.ts +31 -0
- package/dist/cli/daemon.js +334 -0
- package/dist/cli/daemon.js.map +1 -0
- package/dist/cli/demo-sandbox.d.ts +78 -0
- package/dist/cli/demo-sandbox.js +227 -0
- package/dist/cli/demo-sandbox.js.map +1 -0
- package/dist/cli/demo.d.ts +76 -0
- package/dist/cli/demo.js +285 -0
- package/dist/cli/demo.js.map +1 -0
- package/dist/cli/digest.d.ts +46 -0
- package/dist/cli/digest.js +352 -0
- package/dist/cli/digest.js.map +1 -0
- package/dist/cli/doctor-init.d.ts +28 -0
- package/dist/cli/doctor-init.js +335 -0
- package/dist/cli/doctor-init.js.map +1 -0
- package/dist/cli/genome.d.ts +62 -0
- package/dist/cli/genome.js +1061 -0
- package/dist/cli/genome.js.map +1 -0
- package/dist/cli/gh.d.ts +27 -0
- package/dist/cli/gh.js +322 -0
- package/dist/cli/gh.js.map +1 -0
- package/dist/cli/goals.d.ts +55 -0
- package/dist/cli/goals.js +667 -0
- package/dist/cli/goals.js.map +1 -0
- package/dist/cli/health.d.ts +56 -0
- package/dist/cli/health.js +407 -0
- package/dist/cli/health.js.map +1 -0
- package/dist/cli/help.d.ts +51 -0
- package/dist/cli/help.js +436 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/inbox.d.ts +28 -0
- package/dist/cli/inbox.js +589 -0
- package/dist/cli/inbox.js.map +1 -0
- package/dist/cli/index.d.ts +41 -0
- package/dist/cli/index.js +1208 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/knowledge.d.ts +33 -0
- package/dist/cli/knowledge.js +575 -0
- package/dist/cli/knowledge.js.map +1 -0
- package/dist/cli/mcp.d.ts +26 -0
- package/dist/cli/mcp.js +487 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/cli/models.d.ts +26 -0
- package/dist/cli/models.js +435 -0
- package/dist/cli/models.js.map +1 -0
- package/dist/cli/new.d.ts +32 -0
- package/dist/cli/new.js +565 -0
- package/dist/cli/new.js.map +1 -0
- package/dist/cli/notify.d.ts +20 -0
- package/dist/cli/notify.js +188 -0
- package/dist/cli/notify.js.map +1 -0
- package/dist/cli/onboard.d.ts +85 -0
- package/dist/cli/onboard.js +305 -0
- package/dist/cli/onboard.js.map +1 -0
- package/dist/cli/open.d.ts +38 -0
- package/dist/cli/open.js +86 -0
- package/dist/cli/open.js.map +1 -0
- package/dist/cli/orient.d.ts +14 -0
- package/dist/cli/orient.js +110 -0
- package/dist/cli/orient.js.map +1 -0
- package/dist/cli/picker.d.ts +21 -0
- package/dist/cli/picker.js +177 -0
- package/dist/cli/picker.js.map +1 -0
- package/dist/cli/plugins.d.ts +21 -0
- package/dist/cli/plugins.js +394 -0
- package/dist/cli/plugins.js.map +1 -0
- package/dist/cli/preflight.d.ts +29 -0
- package/dist/cli/preflight.js +131 -0
- package/dist/cli/preflight.js.map +1 -0
- package/dist/cli/pulse.d.ts +26 -0
- package/dist/cli/pulse.js +482 -0
- package/dist/cli/pulse.js.map +1 -0
- package/dist/cli/reflect.d.ts +42 -0
- package/dist/cli/reflect.js +381 -0
- package/dist/cli/reflect.js.map +1 -0
- package/dist/cli/run.d.ts +29 -0
- package/dist/cli/run.js +687 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/sandbox.d.ts +20 -0
- package/dist/cli/sandbox.js +345 -0
- package/dist/cli/sandbox.js.map +1 -0
- package/dist/cli/seams.d.ts +41 -0
- package/dist/cli/seams.js +167 -0
- package/dist/cli/seams.js.map +1 -0
- package/dist/cli/serve.d.ts +25 -0
- package/dist/cli/serve.js +249 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/ship.d.ts +33 -0
- package/dist/cli/ship.js +433 -0
- package/dist/cli/ship.js.map +1 -0
- package/dist/cli/spec.d.ts +19 -0
- package/dist/cli/spec.js +478 -0
- package/dist/cli/spec.js.map +1 -0
- package/dist/cli/swarm.d.ts +42 -0
- package/dist/cli/swarm.js +1365 -0
- package/dist/cli/swarm.js.map +1 -0
- package/dist/cli/telemetry.d.ts +26 -0
- package/dist/cli/telemetry.js +364 -0
- package/dist/cli/telemetry.js.map +1 -0
- package/dist/cli/tui.d.ts +17 -0
- package/dist/cli/tui.js +52 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/cli/ui.d.ts +53 -0
- package/dist/cli/ui.js +66 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/cli/update.d.ts +38 -0
- package/dist/cli/update.js +682 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/cli/vercel.d.ts +20 -0
- package/dist/cli/vercel.js +193 -0
- package/dist/cli/vercel.js.map +1 -0
- package/dist/cli/verify-safety.d.ts +96 -0
- package/dist/cli/verify-safety.js +509 -0
- package/dist/cli/verify-safety.js.map +1 -0
- package/dist/cli/wire.d.ts +22 -0
- package/dist/cli/wire.js +205 -0
- package/dist/cli/wire.js.map +1 -0
- package/dist/core/classify.d.ts +51 -0
- package/dist/core/classify.js +450 -0
- package/dist/core/classify.js.map +1 -0
- package/dist/core/config.d.ts +63 -0
- package/dist/core/config.js +474 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/daemon/loop.d.ts +74 -0
- package/dist/core/daemon/loop.js +618 -0
- package/dist/core/daemon/loop.js.map +1 -0
- package/dist/core/daemon/state.d.ts +66 -0
- package/dist/core/daemon/state.js +197 -0
- package/dist/core/daemon/state.js.map +1 -0
- package/dist/core/dashboard.d.ts +40 -0
- package/dist/core/dashboard.js +463 -0
- package/dist/core/dashboard.js.map +1 -0
- package/dist/core/digest/build.d.ts +51 -0
- package/dist/core/digest/build.js +230 -0
- package/dist/core/digest/build.js.map +1 -0
- package/dist/core/digest/deliver.d.ts +47 -0
- package/dist/core/digest/deliver.js +230 -0
- package/dist/core/digest/deliver.js.map +1 -0
- package/dist/core/digest/store.d.ts +57 -0
- package/dist/core/digest/store.js +223 -0
- package/dist/core/digest/store.js.map +1 -0
- package/dist/core/doctor-fix.d.ts +21 -0
- package/dist/core/doctor-fix.js +440 -0
- package/dist/core/doctor-fix.js.map +1 -0
- package/dist/core/doctor.d.ts +18 -0
- package/dist/core/doctor.js +806 -0
- package/dist/core/doctor.js.map +1 -0
- package/dist/core/env-bridge.d.ts +64 -0
- package/dist/core/env-bridge.js +103 -0
- package/dist/core/env-bridge.js.map +1 -0
- package/dist/core/genome/capture.d.ts +49 -0
- package/dist/core/genome/capture.js +352 -0
- package/dist/core/genome/capture.js.map +1 -0
- package/dist/core/genome/consolidate.d.ts +38 -0
- package/dist/core/genome/consolidate.js +426 -0
- package/dist/core/genome/consolidate.js.map +1 -0
- package/dist/core/genome/export.d.ts +29 -0
- package/dist/core/genome/export.js +102 -0
- package/dist/core/genome/export.js.map +1 -0
- package/dist/core/genome/playbook.d.ts +33 -0
- package/dist/core/genome/playbook.js +320 -0
- package/dist/core/genome/playbook.js.map +1 -0
- package/dist/core/genome/recall.d.ts +45 -0
- package/dist/core/genome/recall.js +293 -0
- package/dist/core/genome/recall.js.map +1 -0
- package/dist/core/genome/store.d.ts +62 -0
- package/dist/core/genome/store.js +711 -0
- package/dist/core/genome/store.js.map +1 -0
- package/dist/core/git.d.ts +34 -0
- package/dist/core/git.js +115 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/goals/advance.d.ts +82 -0
- package/dist/core/goals/advance.js +263 -0
- package/dist/core/goals/advance.js.map +1 -0
- package/dist/core/goals/planner.d.ts +58 -0
- package/dist/core/goals/planner.js +233 -0
- package/dist/core/goals/planner.js.map +1 -0
- package/dist/core/goals/store.d.ts +128 -0
- package/dist/core/goals/store.js +442 -0
- package/dist/core/goals/store.js.map +1 -0
- package/dist/core/inbox/apply.d.ts +36 -0
- package/dist/core/inbox/apply.js +407 -0
- package/dist/core/inbox/apply.js.map +1 -0
- package/dist/core/inbox/notify-proposal.d.ts +13 -0
- package/dist/core/inbox/notify-proposal.js +21 -0
- package/dist/core/inbox/notify-proposal.js.map +1 -0
- package/dist/core/inbox/store.d.ts +67 -0
- package/dist/core/inbox/store.js +258 -0
- package/dist/core/inbox/store.js.map +1 -0
- package/dist/core/index-engine.d.ts +62 -0
- package/dist/core/index-engine.js +486 -0
- package/dist/core/index-engine.js.map +1 -0
- package/dist/core/integrations/desktop-notify.d.ts +18 -0
- package/dist/core/integrations/desktop-notify.js +42 -0
- package/dist/core/integrations/desktop-notify.js.map +1 -0
- package/dist/core/integrations/editors.d.ts +50 -0
- package/dist/core/integrations/editors.js +216 -0
- package/dist/core/integrations/editors.js.map +1 -0
- package/dist/core/integrations/github.d.ts +66 -0
- package/dist/core/integrations/github.js +332 -0
- package/dist/core/integrations/github.js.map +1 -0
- package/dist/core/integrations/identity.d.ts +29 -0
- package/dist/core/integrations/identity.js +359 -0
- package/dist/core/integrations/identity.js.map +1 -0
- package/dist/core/integrations/notify.d.ts +23 -0
- package/dist/core/integrations/notify.js +96 -0
- package/dist/core/integrations/notify.js.map +1 -0
- package/dist/core/integrations/vercel.d.ts +37 -0
- package/dist/core/integrations/vercel.js +192 -0
- package/dist/core/integrations/vercel.js.map +1 -0
- package/dist/core/knowledge/ask.d.ts +34 -0
- package/dist/core/knowledge/ask.js +325 -0
- package/dist/core/knowledge/ask.js.map +1 -0
- package/dist/core/knowledge/graph.d.ts +51 -0
- package/dist/core/knowledge/graph.js +564 -0
- package/dist/core/knowledge/graph.js.map +1 -0
- package/dist/core/knowledge/index.d.ts +74 -0
- package/dist/core/knowledge/index.js +586 -0
- package/dist/core/knowledge/index.js.map +1 -0
- package/dist/core/learn/playbooks.d.ts +84 -0
- package/dist/core/learn/playbooks.js +241 -0
- package/dist/core/learn/playbooks.js.map +1 -0
- package/dist/core/learn/reflect.d.ts +87 -0
- package/dist/core/learn/reflect.js +435 -0
- package/dist/core/learn/reflect.js.map +1 -0
- package/dist/core/learn/store.d.ts +51 -0
- package/dist/core/learn/store.js +165 -0
- package/dist/core/learn/store.js.map +1 -0
- package/dist/core/learn/tuning.d.ts +48 -0
- package/dist/core/learn/tuning.js +201 -0
- package/dist/core/learn/tuning.js.map +1 -0
- package/dist/core/lifecycle/scaffold.d.ts +43 -0
- package/dist/core/lifecycle/scaffold.js +260 -0
- package/dist/core/lifecycle/scaffold.js.map +1 -0
- package/dist/core/lifecycle/ship.d.ts +48 -0
- package/dist/core/lifecycle/ship.js +513 -0
- package/dist/core/lifecycle/ship.js.map +1 -0
- package/dist/core/lifecycle/templates.d.ts +20 -0
- package/dist/core/lifecycle/templates.js +605 -0
- package/dist/core/lifecycle/templates.js.map +1 -0
- package/dist/core/mcp-gateway.d.ts +59 -0
- package/dist/core/mcp-gateway.js +385 -0
- package/dist/core/mcp-gateway.js.map +1 -0
- package/dist/core/mcp-native.d.ts +53 -0
- package/dist/core/mcp-native.js +507 -0
- package/dist/core/mcp-native.js.map +1 -0
- package/dist/core/mcp-registry.d.ts +36 -0
- package/dist/core/mcp-registry.js +180 -0
- package/dist/core/mcp-registry.js.map +1 -0
- package/dist/core/observability/budget-alert.d.ts +18 -0
- package/dist/core/observability/budget-alert.js +90 -0
- package/dist/core/observability/budget-alert.js.map +1 -0
- package/dist/core/observability/estimate.d.ts +27 -0
- package/dist/core/observability/estimate.js +188 -0
- package/dist/core/observability/estimate.js.map +1 -0
- package/dist/core/observability/forecast.d.ts +19 -0
- package/dist/core/observability/forecast.js +101 -0
- package/dist/core/observability/forecast.js.map +1 -0
- package/dist/core/observability/governance.d.ts +28 -0
- package/dist/core/observability/governance.js +101 -0
- package/dist/core/observability/governance.js.map +1 -0
- package/dist/core/observability/otlp.d.ts +88 -0
- package/dist/core/observability/otlp.js +217 -0
- package/dist/core/observability/otlp.js.map +1 -0
- package/dist/core/observability/rollup.d.ts +35 -0
- package/dist/core/observability/rollup.js +311 -0
- package/dist/core/observability/rollup.js.map +1 -0
- package/dist/core/observability/telemetry-sink.d.ts +63 -0
- package/dist/core/observability/telemetry-sink.js +350 -0
- package/dist/core/observability/telemetry-sink.js.map +1 -0
- package/dist/core/observability/usage-source.d.ts +60 -0
- package/dist/core/observability/usage-source.js +347 -0
- package/dist/core/observability/usage-source.js.map +1 -0
- package/dist/core/onboard.d.ts +27 -0
- package/dist/core/onboard.js +288 -0
- package/dist/core/onboard.js.map +1 -0
- package/dist/core/orient.d.ts +23 -0
- package/dist/core/orient.js +135 -0
- package/dist/core/orient.js.map +1 -0
- package/dist/core/phantom.d.ts +23 -0
- package/dist/core/phantom.js +279 -0
- package/dist/core/phantom.js.map +1 -0
- package/dist/core/plugins/host-api.d.ts +29 -0
- package/dist/core/plugins/host-api.js +113 -0
- package/dist/core/plugins/host-api.js.map +1 -0
- package/dist/core/plugins/integrity.d.ts +36 -0
- package/dist/core/plugins/integrity.js +73 -0
- package/dist/core/plugins/integrity.js.map +1 -0
- package/dist/core/plugins/manifest.d.ts +31 -0
- package/dist/core/plugins/manifest.js +316 -0
- package/dist/core/plugins/manifest.js.map +1 -0
- package/dist/core/plugins/registry.d.ts +87 -0
- package/dist/core/plugins/registry.js +415 -0
- package/dist/core/plugins/registry.js.map +1 -0
- package/dist/core/plugins/types.d.ts +182 -0
- package/dist/core/plugins/types.js +40 -0
- package/dist/core/plugins/types.js.map +1 -0
- package/dist/core/plugins/wrappers.d.ts +40 -0
- package/dist/core/plugins/wrappers.js +229 -0
- package/dist/core/plugins/wrappers.js.map +1 -0
- package/dist/core/portfolio/backlog.d.ts +40 -0
- package/dist/core/portfolio/backlog.js +177 -0
- package/dist/core/portfolio/backlog.js.map +1 -0
- package/dist/core/portfolio/scanners.d.ts +21 -0
- package/dist/core/portfolio/scanners.js +600 -0
- package/dist/core/portfolio/scanners.js.map +1 -0
- package/dist/core/providers.d.ts +34 -0
- package/dist/core/providers.js +250 -0
- package/dist/core/providers.js.map +1 -0
- package/dist/core/quality/conventions.d.ts +35 -0
- package/dist/core/quality/conventions.js +267 -0
- package/dist/core/quality/conventions.js.map +1 -0
- package/dist/core/quality/fixes.d.ts +56 -0
- package/dist/core/quality/fixes.js +209 -0
- package/dist/core/quality/fixes.js.map +1 -0
- package/dist/core/quality/health.d.ts +69 -0
- package/dist/core/quality/health.js +350 -0
- package/dist/core/quality/health.js.map +1 -0
- package/dist/core/quality/store.d.ts +56 -0
- package/dist/core/quality/store.js +195 -0
- package/dist/core/quality/store.js.map +1 -0
- package/dist/core/readiness.d.ts +112 -0
- package/dist/core/readiness.js +431 -0
- package/dist/core/readiness.js.map +1 -0
- package/dist/core/run/agent-loop.d.ts +40 -0
- package/dist/core/run/agent-loop.js +291 -0
- package/dist/core/run/agent-loop.js.map +1 -0
- package/dist/core/run/budget.d.ts +47 -0
- package/dist/core/run/budget.js +113 -0
- package/dist/core/run/budget.js.map +1 -0
- package/dist/core/run/engines.d.ts +75 -0
- package/dist/core/run/engines.js +199 -0
- package/dist/core/run/engines.js.map +1 -0
- package/dist/core/run/model-manager.d.ts +64 -0
- package/dist/core/run/model-manager.js +339 -0
- package/dist/core/run/model-manager.js.map +1 -0
- package/dist/core/run/orchestrator.d.ts +100 -0
- package/dist/core/run/orchestrator.js +1515 -0
- package/dist/core/run/orchestrator.js.map +1 -0
- package/dist/core/run/provider-client.d.ts +46 -0
- package/dist/core/run/provider-client.js +796 -0
- package/dist/core/run/provider-client.js.map +1 -0
- package/dist/core/run/retry.d.ts +19 -0
- package/dist/core/run/retry.js +68 -0
- package/dist/core/run/retry.js.map +1 -0
- package/dist/core/run/router.d.ts +50 -0
- package/dist/core/run/router.js +257 -0
- package/dist/core/run/router.js.map +1 -0
- package/dist/core/run/self-heal.d.ts +52 -0
- package/dist/core/run/self-heal.js +181 -0
- package/dist/core/run/self-heal.js.map +1 -0
- package/dist/core/run/streaming.d.ts +31 -0
- package/dist/core/run/streaming.js +122 -0
- package/dist/core/run/streaming.js.map +1 -0
- package/dist/core/run/verify.d.ts +30 -0
- package/dist/core/run/verify.js +204 -0
- package/dist/core/run/verify.js.map +1 -0
- package/dist/core/sandbox/audit.d.ts +31 -0
- package/dist/core/sandbox/audit.js +169 -0
- package/dist/core/sandbox/audit.js.map +1 -0
- package/dist/core/sandbox/policy.d.ts +61 -0
- package/dist/core/sandbox/policy.js +211 -0
- package/dist/core/sandbox/policy.js.map +1 -0
- package/dist/core/sandbox/worktree.d.ts +175 -0
- package/dist/core/sandbox/worktree.js +673 -0
- package/dist/core/sandbox/worktree.js.map +1 -0
- package/dist/core/seams/backlog.d.ts +47 -0
- package/dist/core/seams/backlog.js +47 -0
- package/dist/core/seams/backlog.js.map +1 -0
- package/dist/core/seams/daemon-coordinator.d.ts +72 -0
- package/dist/core/seams/daemon-coordinator.js +76 -0
- package/dist/core/seams/daemon-coordinator.js.map +1 -0
- package/dist/core/seams/genome.d.ts +45 -0
- package/dist/core/seams/genome.js +53 -0
- package/dist/core/seams/genome.js.map +1 -0
- package/dist/core/seams/identity.d.ts +40 -0
- package/dist/core/seams/identity.js +44 -0
- package/dist/core/seams/identity.js.map +1 -0
- package/dist/core/seams/inbox.d.ts +60 -0
- package/dist/core/seams/inbox.js +66 -0
- package/dist/core/seams/inbox.js.map +1 -0
- package/dist/core/seams/index.d.ts +20 -0
- package/dist/core/seams/index.js +21 -0
- package/dist/core/seams/index.js.map +1 -0
- package/dist/core/seams/portfolio.d.ts +50 -0
- package/dist/core/seams/portfolio.js +61 -0
- package/dist/core/seams/portfolio.js.map +1 -0
- package/dist/core/seams/registry.d.ts +42 -0
- package/dist/core/seams/registry.js +128 -0
- package/dist/core/seams/registry.js.map +1 -0
- package/dist/core/seams/run-swarm.d.ts +66 -0
- package/dist/core/seams/run-swarm.js +74 -0
- package/dist/core/seams/run-swarm.js.map +1 -0
- package/dist/core/seams/types.d.ts +123 -0
- package/dist/core/seams/types.js +35 -0
- package/dist/core/seams/types.js.map +1 -0
- package/dist/core/spec/spec-store.d.ts +62 -0
- package/dist/core/spec/spec-store.js +359 -0
- package/dist/core/spec/spec-store.js.map +1 -0
- package/dist/core/swarm/gate.d.ts +45 -0
- package/dist/core/swarm/gate.js +114 -0
- package/dist/core/swarm/gate.js.map +1 -0
- package/dist/core/swarm/planner.d.ts +32 -0
- package/dist/core/swarm/planner.js +293 -0
- package/dist/core/swarm/planner.js.map +1 -0
- package/dist/core/swarm/rollback.d.ts +56 -0
- package/dist/core/swarm/rollback.js +266 -0
- package/dist/core/swarm/rollback.js.map +1 -0
- package/dist/core/swarm/runner.d.ts +62 -0
- package/dist/core/swarm/runner.js +1263 -0
- package/dist/core/swarm/runner.js.map +1 -0
- package/dist/core/swarm/sign.d.ts +71 -0
- package/dist/core/swarm/sign.js +362 -0
- package/dist/core/swarm/sign.js.map +1 -0
- package/dist/core/swarm/store.d.ts +52 -0
- package/dist/core/swarm/store.js +195 -0
- package/dist/core/swarm/store.js.map +1 -0
- package/dist/core/tidy.d.ts +32 -0
- package/dist/core/tidy.js +354 -0
- package/dist/core/tidy.js.map +1 -0
- package/dist/core/tools-registry.d.ts +16 -0
- package/dist/core/tools-registry.js +308 -0
- package/dist/core/tools-registry.js.map +1 -0
- package/dist/core/types.d.ts +2545 -0
- package/dist/core/types.js +9 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/web/api.d.ts +53 -0
- package/dist/core/web/api.js +698 -0
- package/dist/core/web/api.js.map +1 -0
- package/dist/core/web/public/app.js +1906 -0
- package/dist/core/web/public/index.html +721 -0
- package/dist/core/web/public/styles.css +2007 -0
- package/dist/core/web/server.d.ts +18 -0
- package/dist/core/web/server.js +122 -0
- package/dist/core/web/server.js.map +1 -0
- package/dist/core/web/static.d.ts +18 -0
- package/dist/core/web/static.js +122 -0
- package/dist/core/web/static.js.map +1 -0
- package/dist/tui/app.d.ts +33 -0
- package/dist/tui/app.js +350 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/render.d.ts +20 -0
- package/dist/tui/render.js +558 -0
- package/dist/tui/render.js.map +1 -0
- package/package.json +80 -0
- package/schema/config.schema.json +223 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goals.js","sourceRoot":"","sources":["../../src/cli/goals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAyE7C,IAAI,KAAK,GAAiC,SAAS,CAAC;AAEpD,KAAK,UAAU,UAAU;IACvB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAClE,MAAM,CAAC,wBAAwB,CAAC;gBAChC,MAAM,CAAC,0BAA0B,CAAC;gBAClC,MAAM,CAAC,0BAA0B,CAAC;gBAClC,MAAM,CAAC,2BAA2B,CAAC;gBACnC,MAAM,CAAC,mBAAmB,CAAC;aAC5B,CAAC,CAAC;YACH,KAAK,GAAG;gBACN,UAAU,EAAE,KAAK,CAAC,UAA0B;gBAC5C,QAAQ,EAAE,KAAK,CAAC,QAAsB;gBACtC,SAAS,EAAE,KAAK,CAAC,SAAwB;gBACzC,YAAY,EAAE,KAAK,CAAC,YAA8B;gBAClD,qBAAqB,EAAE,KAAK,CAAC,qBAAgD;gBAC7E,cAAc,EAAE,KAAK,CAAC,cAAkC;gBACxD,eAAe,EAAE,KAAK,CAAC,eAAoC;gBAC3D,aAAa,EAAE,KAAK,CAAC,aAAgC;gBACrD,iBAAiB,EAAE,KAAK,CAAC,iBAAwC;gBACjE,eAAe,EAAE,KAAK,CAAC,eAAoC;gBAC3D,UAAU,EAAE,KAAK,CAAC,UAA0B;gBAC5C,aAAa,EAAE,OAAO,CAAC,aAAgC;gBACvD,iBAAiB,EAAE,OAAO,CAAC,iBAAwC;gBACnE,WAAW,EAAE,OAAO,CAAC,WAA4B;gBACjD,UAAU,EAAE,OAAO,CAAC,UAA0B;gBAC9C,UAAU,EAAE,MAAM,CAAC,UAA0B;gBAC7C,UAAU,EAAE,MAAM,CAAC,UAA+B;aACnD,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAiBD,MAAM,IAAI,GAAwB;IAChC,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;CACA,CAAC;AAsBX,SAAS,cAAc,CAAC,IAAc;IACpC,MAAM,MAAM,GAAoB;QAC9B,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,SAAS;KACjB,CAAC;IAEF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAErC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,KAAK,eAAe,EAAE,CAAC;YACjC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,GAAG,gCAAgC,CAAC;gBAChD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;QACvB,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;gBACvB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5D,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;gBACvB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAC1C,MAAM,CAAC,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC;YACpC,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,sCAAsC;YACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAa,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,KAAK,GAAG,uBAAuB,CAAC,EAAE,CAAC;gBAC1C,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,CAAC,GAAG,GAAG,CAAa,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AAEjF,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;IACpB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAQ,EAAE;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;IACrF,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,OAAO,IAAI,CAAC,+BAA+B,CAAC,8BAA8B,CAAC,CAAC;IAChF,GAAG,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAChD,GAAG,CAAC,OAAO,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACrD,GAAG,CAAC,OAAO,IAAI,CAAC,uBAAuB,CAAC,0CAA0C,CAAC,CAAC;IACpF,GAAG,CAAC,OAAO,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,OAAO,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAClD,GAAG,CAAC,OAAO,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IACzD,GAAG,CAAC,OAAO,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;IAC1D,GAAG,CAAC,OAAO,IAAI,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;IACxD,GAAG,CAAC,OAAO,IAAI,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;IAC7D,GAAG,CAAC,OAAO,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC9C,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACvB,MAAM,IAAI,GAAuB;QAC/B,CAAC,kBAAkB,EAAE,wDAAwD,CAAC;QAC9E,CAAC,WAAW,EAAE,uEAAuE,CAAC;QACtF,CAAC,eAAe,EAAE,oFAAoF,CAAC;QACvG,CAAC,WAAW,EAAE,2EAA2E,CAAC;QAC1F,CAAC,QAAQ,EAAE,2DAA2D,CAAC;QACvE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;KAC9B,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAChC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC,CAAC;IAC1F,GAAG,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC,CAAC;IAC3F,GAAG,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC,CAAC;IACxF,GAAG,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;IACzD,GAAG,CAAC,EAAE,CAAC,CAAC;AACV,CAAC;AAED,kFAAkF;AAElF,SAAS,WAAW,CAAC,CAAkB;IACrC,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,UAAU;YACb,OAAO,GAAG,CAAC;QACb,KAAK,aAAa;YAChB,OAAO,GAAG,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,GAAG,CAAC;QACb;YACE,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc;IAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;IACpB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAQ,EAAE;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,SAAS,CAAC,GAAG,2DAA2D,CAC7E,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAE9B,8EAA8E;IAC9E,8EAA8E;IAC9E,gCAAgC;IAChC,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;QAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,MAAM,CAAC,WAAW,CAAC;YACjB,kFAAkF;YAClF,oEAAoE;YACpE,qFAAqF;YACrF,kEAAkE,CACrE,CAAC;IACJ,CAAC;IAED,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;QACnB,wEAAwE;QACxE,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,qCAAqC,CAAC,CAAC;gBAC7E,OAAO,CAAC,CAAC;YACX,CAAC;YAED,4EAA4E;YAC5E,6DAA6D;YAC7D,IAAI,OAAO,GAAkB,IAAI,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,SAAS,CAAC;wBACZ,0CAA0C,GAAG,IAAI;wBACjD,wFAAwF,CAC3F,CAAC;oBACF,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,OAAO,GAAG,GAAG,CAAC;YAChB,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5D,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzD,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBACtC,GAAG,CAAC,gBAAgB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;gBACtF,GAAG,CAAC,EAAE,CAAC,CAAC;gBACR,GAAG,CAAC,GAAG,CAAC,4BAA4B,GAAG,IAAI,CAAC,EAAE,GAAG,iCAAiC,CAAC,CAAC,CAAC;YACvF,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,aAAa;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,CAAC;YACX,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;gBAChD,GAAG,CACD,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG;oBAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,UAAU,GAAG,IAAI,CAAC,CACpD,CAAC;gBACF,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,aAAa;YACb,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,4BAA4B,CAAC,CAAC;gBACpE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,mBAAmB,EAAE,IAAI,CAAC,CAAC;gBACjE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACjC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/D,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,IAAI,CAAC,6CAA6C,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChC,GAAG,CACD,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAC5F,CAAC;oBACF,MAAM,KAAK,GAAa,EAAE,CAAC;oBAC3B,IAAI,CAAC,CAAC,MAAM;wBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC7C,IAAI,CAAC,CAAC,OAAO;wBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAChD,IAAI,CAAC,CAAC,UAAU;wBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;oBACzD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;wBAAE,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,4BAA4B,CAAC,CAAC;gBACpE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,mBAAmB,EAAE,IAAI,CAAC,CAAC;gBACjE,OAAO,CAAC,CAAC;YACX,CAAC;YAED,2EAA2E;YAC3E,0EAA0E;YAC1E,2EAA2E;YAC3E,0EAA0E;YAC1E,2EAA2E;YAC3E,yDAAyD;YACzD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,SAAS,CAAC;oBACZ,yBAAyB,IAAI,CAAC,UAAU,CAAC,MAAM,mBAAmB;oBAClE,6DAA6D;oBAC7D,6BAA6B;oBAC7B,kCAAkC,CACrC,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjD,uEAAuE;gBACvE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;YAED,uEAAuE;YACvE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC/D,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,aAAa,EAAE,MAAM,CAAC,GAAG;aAC1B,CAAC,CAAC;YAEH,uEAAuE;YACvE,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;YAC7C,MAAM,QAAQ,GAAsD,EAAE,CAAC;YACvE,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBACpF,IAAI,CAAC,OAAO;oBAAE,SAAS;gBACvB,OAAO,GAAG,OAAO,CAAC;gBAClB,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;gBAClE,IAAI,MAAM,GAAkB,IAAI,CAAC;gBACjC,IAAI,CAAC;oBACH,sEAAsE;oBACtE,mEAAmE;oBACnE,sEAAsE;oBACtE,8DAA8D;oBAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;wBAC9D,UAAU,EAAE,MAAM,CAAC,UAAU;qBAC9B,CAAC,CAAC;oBACH,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;oBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE;wBAC1E,MAAM;qBACP,CAAC,CAAC;oBACH,IAAI,MAAM;wBAAE,OAAO,GAAG,MAAM,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,uEAAuE;oBACvE,MAAM,GAAG,IAAI,CAAC;gBAChB,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;gBACrF,IAAI,CAAC,QAAQ,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,GAAG,CACD,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;oBAC/D,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CACtE,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,GAAG,CAAC,GAAG,CAAC,+BAA+B,GAAG,OAAO,CAAC,EAAE,GAAG,6BAA6B,CAAC,CAAC,CAAC;YACvF,GAAG,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,+BAA+B,CAAC,CAAC;gBACvE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,mBAAmB,EAAE,IAAI,CAAC,CAAC;gBACjE,OAAO,CAAC,CAAC;YACX,CAAC;YAED,2EAA2E;YAC3E,+DAA+D;YAC/D,wCAAwC;YACxC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,SAAS,CAAC,GAAG,iDAAiD;oBAChE,uEAAuE,CAC1E,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,SAAS,CAAC,GAAG,0CAA0C,IAAI,IAAI,CACpE,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YAED,IAAI,GAAa,CAAC;YAClB,IAAI,CAAC;gBACH,6EAA6E;gBAC7E,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;gBAClD,OAAO,CAAC,CAAC;YACX,CAAC;YAED,8DAA8D;YAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACrE,MAAM,UAAU,GAAG,QAAQ,EAAE,UAAU,IAAI,IAAI,CAAC;YAEhD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,GAAG,CACD,IAAI,CAAC,SAAS,CACZ,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,EAC/D,IAAI,EACJ,CAAC,CACF,CACF,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC5F,GAAG,CAAC,EAAE,CAAC,CAAC;gBACR,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,qDAAqD,CAAC,CAAC;gBACtF,GAAG,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACvC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACR,GAAG,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;gBACjE,GAAG,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,GAAG,CACD,MAAM,CAAC,IAAI,CAAC;oBACV,sBAAsB,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,MAAM,qCAAqC,CAC1F,CAAC;gBACF,GAAG,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC,CAAC;gBAC1F,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,gCAAgC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7E,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,GAAG,CACD,IAAI,CAAC,SAAS,CACZ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAC7B,IAAI,EACJ,CAAC,CACF,CACF,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,MAAM,EAAE,CAAC;gBACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;gBACpD,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9E,MAAM,IAAI,GAAa,EAAE,CAAC;gBAC1B,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxD,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,EAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChE,CAAC;gBACD,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACtD,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,6BAA6B,CAAC,CAAC;gBACrE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,SAAS,CAAC,GAAG,gCAAgC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CACjG,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,MAAM,CAAC,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;gBAClD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;YAChG,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,8BAA8B,CAAC,CAAC;gBACtE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,SAAS,CAAC,GAAG,gCAAgC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CACjG,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,MAAM,CAAC,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;gBAClD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;YAClG,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YACvB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,+CAA+C,CAAC,CAAC;gBACvF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,gCAAgC,EAAE,MAAM,WAAW,IAAI,CAAC,CAAC;gBAC/F,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,MAAM,CAAC,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;gBAClD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,WAAW,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,0EAA0E;YAC1E,0EAA0E;YAC1E,+BAA+B;YAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YACvB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,SAAS,CAAC,GAAG,6DAA6D,CAC/E,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,mBAAmB,EAAE,IAAI,CAAC,CAAC;gBACjE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,MAAM,CAAC,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;iBAClD,CAAC;gBACJ,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,4BAA4B,EAAE,EAAE,CAAC,CAAC;gBACpD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACnC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,uEAAuE;YACvE,wEAAwE;YACxE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,8BAA8B,CAAC,CAAC;gBACtE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,mBAAmB,EAAE,IAAI,CAAC,CAAC;gBACjE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpB,IAAI,MAAM,CAAC,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;gBAC1D,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,OAAO,CAAC,CAAC,CAAC;YACR,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI handler for `ashlr health` — M27 quality & standards enforcement.
|
|
3
|
+
*
|
|
4
|
+
* Continuous portfolio-wide quality review. For each ENROLLED repo it computes a
|
|
5
|
+
* per-repo HEALTH SCORE (weighted 0-100 + letter grade) across dimensions
|
|
6
|
+
* (tests, docs, deps, security, code-debt, issues/CI, conventions), tracks the
|
|
7
|
+
* score over time (trend snapshots under ~/.ashlr/quality/), and — on explicit
|
|
8
|
+
* `propose` — emits safe-fix PENDING proposals into the M23 Approval Inbox.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* ashlr health [--json] # score all enrolled repos, ranked worst-first
|
|
12
|
+
* ashlr health <repo> [--json] # one-repo detail w/ dimension breakdown
|
|
13
|
+
* ashlr health propose [<repo>] [--json] # emit safe-fix NOTE proposals into the inbox
|
|
14
|
+
*
|
|
15
|
+
* HARD SAFETY INVARIANTS (M27) enforced by this surface:
|
|
16
|
+
* - READ-ONLY: scores via the M22 read-only scanners + read-only convention
|
|
17
|
+
* probes; writes ONLY under ~/.ashlr/quality/ (snapshots) and — on `propose`
|
|
18
|
+
* — PENDING inbox proposals. NEVER mutates a user repo working tree.
|
|
19
|
+
* - ENROLLMENT-SCOPED: a positional <repo> is resolve()'d and filtered through
|
|
20
|
+
* isEnrolled() HERE (CLI layer) AND again in core/quality/health.ts (core
|
|
21
|
+
* layer); a non-enrolled path HARD-ERRORS. Default repo set is listEnrolled()
|
|
22
|
+
* (DEFAULT EMPTY => reports nothing, no disk scan). This is the exact gap the
|
|
23
|
+
* M25 review caught — enforced at BOTH layers.
|
|
24
|
+
* - PROPOSAL-ONLY: `propose` routes safe fixes to createProposal (status
|
|
25
|
+
* pending, kind 'note', origin 'manual'); nothing auto-applies. M27 does NOT
|
|
26
|
+
* apply patches and does NOT mutate working trees.
|
|
27
|
+
* - LOCAL-FIRST: scoring is fully deterministic and needs NO model. M27 ships
|
|
28
|
+
* no LLM narrative path, so this command makes ZERO non-localhost connections
|
|
29
|
+
* beyond what the M22 scanners already do.
|
|
30
|
+
* - BOUNDED: reuses the scanners' bounds; caps repos/work per run.
|
|
31
|
+
*
|
|
32
|
+
* NOTE (integration — owned by the Build/Integrate phase, NOT this scaffold):
|
|
33
|
+
* src/cli/index.ts must add a `loadHealthCmd = lazyCmd(() => import('./health.js'),
|
|
34
|
+
* (m) => m.cmdHealth as Cmd, 'health command requires src/cli/health.ts (M27 …)')`,
|
|
35
|
+
* a `case 'health':` in the dispatch switch, and cmdHelp entries.
|
|
36
|
+
*
|
|
37
|
+
* Exit codes: 0 success, 1 runtime error, 2 bad usage.
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* `ashlr health [--json]`
|
|
41
|
+
* `ashlr health <repo> [--json]`
|
|
42
|
+
* `ashlr health propose [<repo>] [--json]`
|
|
43
|
+
*
|
|
44
|
+
* Default path: deterministic, local-only, READ-ONLY portfolio report persisted
|
|
45
|
+
* under ~/.ashlr/quality/. A positional <repo> shows one repo's detail.
|
|
46
|
+
* `propose` emits PENDING safe-fix proposals into the inbox. Nothing
|
|
47
|
+
* auto-applies; no repo working tree is ever mutated.
|
|
48
|
+
*
|
|
49
|
+
* ENROLLMENT-SCOPING (M25 lesson): a positional <repo> is resolve()'d and
|
|
50
|
+
* checked via core.isEnrolled() HERE before any scan; a non-enrolled path
|
|
51
|
+
* HARD-ERRORS with exit code 1. The core (computeReport/computeHealth callers)
|
|
52
|
+
* enforces the same scoping again as defense-in-depth.
|
|
53
|
+
*
|
|
54
|
+
* Exit codes: 0 success, 1 runtime error, 2 bad usage.
|
|
55
|
+
*/
|
|
56
|
+
export declare function cmdHealth(args: string[]): Promise<number>;
|
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI handler for `ashlr health` — M27 quality & standards enforcement.
|
|
3
|
+
*
|
|
4
|
+
* Continuous portfolio-wide quality review. For each ENROLLED repo it computes a
|
|
5
|
+
* per-repo HEALTH SCORE (weighted 0-100 + letter grade) across dimensions
|
|
6
|
+
* (tests, docs, deps, security, code-debt, issues/CI, conventions), tracks the
|
|
7
|
+
* score over time (trend snapshots under ~/.ashlr/quality/), and — on explicit
|
|
8
|
+
* `propose` — emits safe-fix PENDING proposals into the M23 Approval Inbox.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* ashlr health [--json] # score all enrolled repos, ranked worst-first
|
|
12
|
+
* ashlr health <repo> [--json] # one-repo detail w/ dimension breakdown
|
|
13
|
+
* ashlr health propose [<repo>] [--json] # emit safe-fix NOTE proposals into the inbox
|
|
14
|
+
*
|
|
15
|
+
* HARD SAFETY INVARIANTS (M27) enforced by this surface:
|
|
16
|
+
* - READ-ONLY: scores via the M22 read-only scanners + read-only convention
|
|
17
|
+
* probes; writes ONLY under ~/.ashlr/quality/ (snapshots) and — on `propose`
|
|
18
|
+
* — PENDING inbox proposals. NEVER mutates a user repo working tree.
|
|
19
|
+
* - ENROLLMENT-SCOPED: a positional <repo> is resolve()'d and filtered through
|
|
20
|
+
* isEnrolled() HERE (CLI layer) AND again in core/quality/health.ts (core
|
|
21
|
+
* layer); a non-enrolled path HARD-ERRORS. Default repo set is listEnrolled()
|
|
22
|
+
* (DEFAULT EMPTY => reports nothing, no disk scan). This is the exact gap the
|
|
23
|
+
* M25 review caught — enforced at BOTH layers.
|
|
24
|
+
* - PROPOSAL-ONLY: `propose` routes safe fixes to createProposal (status
|
|
25
|
+
* pending, kind 'note', origin 'manual'); nothing auto-applies. M27 does NOT
|
|
26
|
+
* apply patches and does NOT mutate working trees.
|
|
27
|
+
* - LOCAL-FIRST: scoring is fully deterministic and needs NO model. M27 ships
|
|
28
|
+
* no LLM narrative path, so this command makes ZERO non-localhost connections
|
|
29
|
+
* beyond what the M22 scanners already do.
|
|
30
|
+
* - BOUNDED: reuses the scanners' bounds; caps repos/work per run.
|
|
31
|
+
*
|
|
32
|
+
* NOTE (integration — owned by the Build/Integrate phase, NOT this scaffold):
|
|
33
|
+
* src/cli/index.ts must add a `loadHealthCmd = lazyCmd(() => import('./health.js'),
|
|
34
|
+
* (m) => m.cmdHealth as Cmd, 'health command requires src/cli/health.ts (M27 …)')`,
|
|
35
|
+
* a `case 'health':` in the dispatch switch, and cmdHelp entries.
|
|
36
|
+
*
|
|
37
|
+
* Exit codes: 0 success, 1 runtime error, 2 bad usage.
|
|
38
|
+
*/
|
|
39
|
+
import { resolve } from 'node:path';
|
|
40
|
+
import { pad, makeColors, isTty } from './ui.js';
|
|
41
|
+
let _core = undefined;
|
|
42
|
+
async function importCore() {
|
|
43
|
+
if (_core === undefined) {
|
|
44
|
+
try {
|
|
45
|
+
const [health, store, fixes, policy] = await Promise.all([
|
|
46
|
+
import('../core/quality/health.js'),
|
|
47
|
+
import('../core/quality/store.js'),
|
|
48
|
+
import('../core/quality/fixes.js'),
|
|
49
|
+
import('../core/sandbox/policy.js'),
|
|
50
|
+
]);
|
|
51
|
+
_core = {
|
|
52
|
+
computeHealth: health.computeHealth,
|
|
53
|
+
computeReport: health.computeReport,
|
|
54
|
+
saveReport: store.saveReport,
|
|
55
|
+
loadPreviousReport: store.loadPreviousReport,
|
|
56
|
+
deriveSafeFixes: fixes.deriveSafeFixes,
|
|
57
|
+
emitFixProposals: fixes.emitFixProposals,
|
|
58
|
+
isEnrolled: policy.isEnrolled,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
_core = null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return _core ?? null;
|
|
66
|
+
}
|
|
67
|
+
function parseHealthArgs(args) {
|
|
68
|
+
let sub = 'report';
|
|
69
|
+
let repo = null;
|
|
70
|
+
let json = false;
|
|
71
|
+
let help = false;
|
|
72
|
+
let error;
|
|
73
|
+
let sawPropose = false;
|
|
74
|
+
for (let i = 0; i < args.length; i++) {
|
|
75
|
+
const a = args[i];
|
|
76
|
+
if (a === undefined)
|
|
77
|
+
continue;
|
|
78
|
+
if (a === '--help' || a === '-h') {
|
|
79
|
+
help = true;
|
|
80
|
+
}
|
|
81
|
+
else if (a === '--json') {
|
|
82
|
+
json = true;
|
|
83
|
+
}
|
|
84
|
+
else if (a === 'propose') {
|
|
85
|
+
sawPropose = true;
|
|
86
|
+
}
|
|
87
|
+
else if (a.startsWith('--')) {
|
|
88
|
+
error = `Unknown flag: ${a}`;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// First positional non-flag is treated as a repo path.
|
|
93
|
+
if (repo !== null) {
|
|
94
|
+
error = `Unexpected extra argument: ${a}`;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
repo = a;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Derive the subcommand: propose wins; else a positional repo => detail.
|
|
101
|
+
if (error === undefined) {
|
|
102
|
+
if (sawPropose)
|
|
103
|
+
sub = 'propose';
|
|
104
|
+
else if (repo !== null)
|
|
105
|
+
sub = 'detail';
|
|
106
|
+
else
|
|
107
|
+
sub = 'report';
|
|
108
|
+
}
|
|
109
|
+
return { sub, repo, json, help, error };
|
|
110
|
+
}
|
|
111
|
+
// ─── Help ─────────────────────────────────────────────────────────────────────
|
|
112
|
+
function printHelp() {
|
|
113
|
+
const tty = isTty();
|
|
114
|
+
const { bold, cyan, dim, gray } = makeColors(tty);
|
|
115
|
+
const out = (s = '') => process.stdout.write(s + '\n');
|
|
116
|
+
out('');
|
|
117
|
+
out(bold(' ashlr health') + dim(' — portfolio-wide quality review (read-only)'));
|
|
118
|
+
out('');
|
|
119
|
+
out(' ' + bold('Usage:'));
|
|
120
|
+
out(` ${cyan('ashlr health')} [--json]`);
|
|
121
|
+
out(` ${cyan('ashlr health <repo>')} [--json]`);
|
|
122
|
+
out(` ${cyan('ashlr health propose')} [<repo>] [--json]`);
|
|
123
|
+
out('');
|
|
124
|
+
out(' ' + bold('Options:'));
|
|
125
|
+
const opts = [
|
|
126
|
+
['--json', 'Emit the HealthReport / HealthScore as JSON instead of human-readable output.'],
|
|
127
|
+
['--help', 'Show this help.'],
|
|
128
|
+
];
|
|
129
|
+
const w = Math.max(...opts.map(([f]) => f.length));
|
|
130
|
+
for (const [flag, desc] of opts)
|
|
131
|
+
out(` ${cyan(pad(flag, w))} ${desc}`);
|
|
132
|
+
out('');
|
|
133
|
+
out(' ' + bold('Subcommands:'));
|
|
134
|
+
out(` ${cyan('<repo>')} Show a single ENROLLED repo's detail with the per-dimension breakdown.`);
|
|
135
|
+
out(` ${cyan('propose')} Emit deterministic safe-fix advisories as PENDING inbox proposals (never auto-applies).`);
|
|
136
|
+
out('');
|
|
137
|
+
out(' ' + gray('Scoring is deterministic, local-only, and READ-ONLY. Only ENROLLED repos are scored.'));
|
|
138
|
+
out(' ' + gray('Snapshots persist under ~/.ashlr/quality/ for trend; fixes are proposal-only.'));
|
|
139
|
+
out('');
|
|
140
|
+
}
|
|
141
|
+
// ─── Human-readable output ─────────────────────────────────────────────────────
|
|
142
|
+
/** Short basename-ish label for a repo path (last path segment). */
|
|
143
|
+
function repoLabel(repo) {
|
|
144
|
+
const parts = repo.split('/').filter(Boolean);
|
|
145
|
+
return parts.length > 0 ? parts[parts.length - 1] : repo;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Format a per-repo score delta vs the previous snapshot. Returns a signed
|
|
149
|
+
* arrow string ('▲ +5', '▼ -3', '· 0') or '—' when there is no prior snapshot
|
|
150
|
+
* (absent delta key).
|
|
151
|
+
*/
|
|
152
|
+
function formatDelta(delta) {
|
|
153
|
+
if (delta === undefined)
|
|
154
|
+
return '—';
|
|
155
|
+
const rounded = Math.round(delta);
|
|
156
|
+
if (rounded > 0)
|
|
157
|
+
return `▲ +${rounded}`;
|
|
158
|
+
if (rounded < 0)
|
|
159
|
+
return `▼ ${rounded}`;
|
|
160
|
+
return '· 0';
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Render a portfolio HealthReport (ranked worst-first), with a ranked table of
|
|
164
|
+
* repo -> score/grade + the score delta vs the previous snapshot, plus the
|
|
165
|
+
* portfolio average + grade.
|
|
166
|
+
*/
|
|
167
|
+
function printReportHuman(report) {
|
|
168
|
+
const tty = isTty();
|
|
169
|
+
const { bold, cyan, dim, gray } = makeColors(tty);
|
|
170
|
+
const out = (s = '') => process.stdout.write(s + '\n');
|
|
171
|
+
out('');
|
|
172
|
+
out(bold(' Health') + gray(` [${report.repos.length} enrolled repo(s)]`));
|
|
173
|
+
out('');
|
|
174
|
+
if (report.scores.length === 0) {
|
|
175
|
+
out(dim(' No enrolled repos to score. Enroll repos with `ashlr enroll` first.'));
|
|
176
|
+
out('');
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
// Ranked table (worst-first; report.scores is already sorted by the core).
|
|
180
|
+
const labels = report.scores.map((s) => repoLabel(s.repo));
|
|
181
|
+
const repoW = Math.max(4, ...labels.map((l) => l.length));
|
|
182
|
+
out(' ' +
|
|
183
|
+
gray(pad('REPO', repoW)) +
|
|
184
|
+
' ' + gray(pad('SCORE', 7, 'right')) +
|
|
185
|
+
' ' + gray('GR') +
|
|
186
|
+
' ' + gray(pad('Δ', 6, 'right')) +
|
|
187
|
+
' ' + gray('TOP ISSUES'));
|
|
188
|
+
for (let i = 0; i < report.scores.length; i++) {
|
|
189
|
+
const s = report.scores[i];
|
|
190
|
+
if (s === undefined)
|
|
191
|
+
continue;
|
|
192
|
+
const label = labels[i];
|
|
193
|
+
const top = s.worstOffenders.slice(0, 2).map((w) => w.title).join('; ');
|
|
194
|
+
out(' ' +
|
|
195
|
+
cyan(pad(label, repoW)) +
|
|
196
|
+
' ' + pad(`${s.score}/100`, 7, 'right') +
|
|
197
|
+
' ' + bold(s.grade) +
|
|
198
|
+
' ' + pad(formatDelta(report.delta[s.repo]), 6, 'right') +
|
|
199
|
+
' ' + dim(top || 'no findings'));
|
|
200
|
+
}
|
|
201
|
+
out('');
|
|
202
|
+
out(' ' + bold('Portfolio average') +
|
|
203
|
+
` ${report.averageScore}/100 (${report.averageGrade})`);
|
|
204
|
+
out('');
|
|
205
|
+
out(' ' + gray('Scores are deterministic + local-only. Snapshots persist under ~/.ashlr/quality/ for trend.'));
|
|
206
|
+
out('');
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Render a single repo's HealthScore detail: a per-dimension breakdown (score /
|
|
210
|
+
* weight / finding-count), the worst offenders dragging the grade down, and the
|
|
211
|
+
* failed convention probes.
|
|
212
|
+
*/
|
|
213
|
+
function printDetailHuman(score) {
|
|
214
|
+
const tty = isTty();
|
|
215
|
+
const { bold, cyan, dim, gray, yellow } = makeColors(tty);
|
|
216
|
+
const out = (s = '') => process.stdout.write(s + '\n');
|
|
217
|
+
out('');
|
|
218
|
+
out(bold(` Health · ${repoLabel(score.repo)}`) + gray(` — ${score.score}/100 (${score.grade})`));
|
|
219
|
+
out(gray(` ${score.repo}`));
|
|
220
|
+
out('');
|
|
221
|
+
// Per-dimension breakdown.
|
|
222
|
+
if (score.dimensions.length > 0) {
|
|
223
|
+
out(' ' + bold('Dimensions'));
|
|
224
|
+
const dimW = Math.max(...score.dimensions.map((d) => d.dimension.length), 9);
|
|
225
|
+
for (const d of score.dimensions) {
|
|
226
|
+
out(' ' +
|
|
227
|
+
cyan(pad(d.dimension, dimW)) +
|
|
228
|
+
' ' + pad(`${d.score}/100`, 7, 'right') +
|
|
229
|
+
' ' + gray(`w${d.weight}`) +
|
|
230
|
+
' ' + dim(d.summary));
|
|
231
|
+
}
|
|
232
|
+
out('');
|
|
233
|
+
}
|
|
234
|
+
// Worst offenders (top findings dragging the grade down).
|
|
235
|
+
if (score.worstOffenders.length > 0) {
|
|
236
|
+
out(' ' + bold('Worst offenders'));
|
|
237
|
+
for (const w of score.worstOffenders) {
|
|
238
|
+
out(` ${yellow('•')} ${w.title}` + (w.detail ? gray(` — ${w.detail}`) : ''));
|
|
239
|
+
}
|
|
240
|
+
out('');
|
|
241
|
+
}
|
|
242
|
+
// Failed convention probes (ok=false).
|
|
243
|
+
const failedConventions = score.conventions.filter((c) => !c.ok);
|
|
244
|
+
if (failedConventions.length > 0) {
|
|
245
|
+
out(' ' + bold('Convention gaps'));
|
|
246
|
+
for (const c of failedConventions) {
|
|
247
|
+
out(` ${yellow('✗')} ${c.label}` + gray(` — ${c.detail}`));
|
|
248
|
+
}
|
|
249
|
+
out('');
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// ─── Main export ─────────────────────────────────────────────────────────────
|
|
253
|
+
/**
|
|
254
|
+
* `ashlr health [--json]`
|
|
255
|
+
* `ashlr health <repo> [--json]`
|
|
256
|
+
* `ashlr health propose [<repo>] [--json]`
|
|
257
|
+
*
|
|
258
|
+
* Default path: deterministic, local-only, READ-ONLY portfolio report persisted
|
|
259
|
+
* under ~/.ashlr/quality/. A positional <repo> shows one repo's detail.
|
|
260
|
+
* `propose` emits PENDING safe-fix proposals into the inbox. Nothing
|
|
261
|
+
* auto-applies; no repo working tree is ever mutated.
|
|
262
|
+
*
|
|
263
|
+
* ENROLLMENT-SCOPING (M25 lesson): a positional <repo> is resolve()'d and
|
|
264
|
+
* checked via core.isEnrolled() HERE before any scan; a non-enrolled path
|
|
265
|
+
* HARD-ERRORS with exit code 1. The core (computeReport/computeHealth callers)
|
|
266
|
+
* enforces the same scoping again as defense-in-depth.
|
|
267
|
+
*
|
|
268
|
+
* Exit codes: 0 success, 1 runtime error, 2 bad usage.
|
|
269
|
+
*/
|
|
270
|
+
export async function cmdHealth(args) {
|
|
271
|
+
const parsed = parseHealthArgs(args);
|
|
272
|
+
if (parsed.help) {
|
|
273
|
+
printHelp();
|
|
274
|
+
return 0;
|
|
275
|
+
}
|
|
276
|
+
if (parsed.error) {
|
|
277
|
+
process.stderr.write('error: ' + parsed.error + '\n');
|
|
278
|
+
process.stderr.write('Run `ashlr health --help` for usage.\n');
|
|
279
|
+
return 2;
|
|
280
|
+
}
|
|
281
|
+
const tty = isTty();
|
|
282
|
+
const { red, yellow, bold, dim, cyan, gray } = makeColors(tty);
|
|
283
|
+
const core = await importCore();
|
|
284
|
+
if (!core) {
|
|
285
|
+
process.stderr.write(red('error: ') +
|
|
286
|
+
'health command requires src/core/quality/* (M27 modules not yet built).\n');
|
|
287
|
+
return 1;
|
|
288
|
+
}
|
|
289
|
+
// ENROLLMENT GATE (CLI layer) — a positional repo MUST be enrolled.
|
|
290
|
+
// resolve() first, then isEnrolled(); HARD-ERROR on a non-enrolled path.
|
|
291
|
+
if (parsed.repo !== null) {
|
|
292
|
+
const abs = resolve(parsed.repo);
|
|
293
|
+
if (!core.isEnrolled(abs)) {
|
|
294
|
+
process.stderr.write(red('error: ') + `repo not enrolled for health review: ${abs}\n` +
|
|
295
|
+
' Enroll it first with `ashlr enroll` (health only reads ENROLLED repos).\n');
|
|
296
|
+
return 1;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
// ── Subcommand: propose ───────────────────────────────────────────────────
|
|
300
|
+
if (parsed.sub === 'propose') {
|
|
301
|
+
// Compute the score(s) to derive fixes from: a single scoped repo (already
|
|
302
|
+
// enrollment-gated above) or every enrolled repo. The core re-enforces
|
|
303
|
+
// enrollment-scoping (defense-in-depth).
|
|
304
|
+
let scores;
|
|
305
|
+
try {
|
|
306
|
+
if (parsed.repo !== null) {
|
|
307
|
+
scores = [await core.computeHealth(resolve(parsed.repo))];
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
const report = await core.computeReport();
|
|
311
|
+
scores = report.scores;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
catch (err) {
|
|
315
|
+
process.stderr.write(red('error: ') + (err instanceof Error ? err.message : String(err)) + '\n');
|
|
316
|
+
return 1;
|
|
317
|
+
}
|
|
318
|
+
// Derive deterministic advisory fixes per repo and emit them as PENDING
|
|
319
|
+
// 'note' proposals (PROPOSAL-ONLY — nothing auto-applies, no diff written).
|
|
320
|
+
const fixes = [];
|
|
321
|
+
for (const score of scores) {
|
|
322
|
+
for (const fix of core.deriveSafeFixes(score))
|
|
323
|
+
fixes.push(fix);
|
|
324
|
+
}
|
|
325
|
+
const proposals = core.emitFixProposals(fixes);
|
|
326
|
+
if (parsed.json) {
|
|
327
|
+
process.stdout.write(JSON.stringify({ fixes, proposals }) + '\n');
|
|
328
|
+
return 0;
|
|
329
|
+
}
|
|
330
|
+
const out = (s = '') => process.stdout.write(s + '\n');
|
|
331
|
+
out('');
|
|
332
|
+
out(bold(' Safe-fix proposals') + dim(` — ${proposals.length} created (status: pending)`));
|
|
333
|
+
out('');
|
|
334
|
+
if (proposals.length === 0) {
|
|
335
|
+
out(dim(' No safe fixes to propose — the enrolled repos look healthy, or nothing is enrolled.'));
|
|
336
|
+
out('');
|
|
337
|
+
return 0;
|
|
338
|
+
}
|
|
339
|
+
for (const p of proposals) {
|
|
340
|
+
out(` ${yellow('•')} ${bold(p.title)}` + (p.repo ? gray(` (${repoLabel(p.repo)})`) : ''));
|
|
341
|
+
}
|
|
342
|
+
out('');
|
|
343
|
+
out(' ' + gray('These are PROPOSALS only — nothing was applied. Review them with ') + cyan('ashlr inbox') + gray('.'));
|
|
344
|
+
out('');
|
|
345
|
+
return 0;
|
|
346
|
+
}
|
|
347
|
+
// ── Subcommand: detail (single repo) ──────────────────────────────────────
|
|
348
|
+
if (parsed.sub === 'detail' && parsed.repo !== null) {
|
|
349
|
+
let score;
|
|
350
|
+
try {
|
|
351
|
+
score = await core.computeHealth(resolve(parsed.repo));
|
|
352
|
+
}
|
|
353
|
+
catch (err) {
|
|
354
|
+
process.stderr.write(red('error: ') + (err instanceof Error ? err.message : String(err)) + '\n');
|
|
355
|
+
return 1;
|
|
356
|
+
}
|
|
357
|
+
if (parsed.json) {
|
|
358
|
+
process.stdout.write(JSON.stringify(score) + '\n');
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
printDetailHuman(score);
|
|
362
|
+
}
|
|
363
|
+
return 0;
|
|
364
|
+
}
|
|
365
|
+
// ── Default: portfolio report ─────────────────────────────────────────────
|
|
366
|
+
let report;
|
|
367
|
+
try {
|
|
368
|
+
report = await core.computeReport();
|
|
369
|
+
}
|
|
370
|
+
catch (err) {
|
|
371
|
+
process.stderr.write(red('error: ') + (err instanceof Error ? err.message : String(err)) + '\n');
|
|
372
|
+
return 1;
|
|
373
|
+
}
|
|
374
|
+
// Fill per-repo deltas from the prior snapshot (the newest report strictly
|
|
375
|
+
// BEFORE this one, so we never diff a just-saved report against itself), then
|
|
376
|
+
// persist this one so the trend accumulates. Best-effort: a failed load/save
|
|
377
|
+
// never blocks the report.
|
|
378
|
+
try {
|
|
379
|
+
const previous = core.loadPreviousReport(report.generatedAt);
|
|
380
|
+
if (previous) {
|
|
381
|
+
const priorByRepo = new Map();
|
|
382
|
+
for (const s of previous.scores)
|
|
383
|
+
priorByRepo.set(s.repo, s.score);
|
|
384
|
+
for (const s of report.scores) {
|
|
385
|
+
const prior = priorByRepo.get(s.repo);
|
|
386
|
+
if (prior !== undefined)
|
|
387
|
+
report.delta[s.repo] = s.score - prior;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
catch {
|
|
392
|
+
// Delta is advisory; never let a comparison failure block the report.
|
|
393
|
+
}
|
|
394
|
+
// Only persist a snapshot when there is something to track — an empty
|
|
395
|
+
// enrollment (no scored repos) should not litter ~/.ashlr/quality with
|
|
396
|
+
// empty reports that would pollute the trend history.
|
|
397
|
+
if (report.scores.length > 0)
|
|
398
|
+
core.saveReport(report);
|
|
399
|
+
if (parsed.json) {
|
|
400
|
+
process.stdout.write(JSON.stringify(report) + '\n');
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
printReportHuman(report);
|
|
404
|
+
}
|
|
405
|
+
return 0;
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cli/help.ts — agent-facing docs surface (M31).
|
|
3
|
+
*
|
|
4
|
+
* `ashlr docs --agent [--json]` emits a compact, llms.txt-style cheat sheet of
|
|
5
|
+
* the agent-relevant commands: what each does, its safety class, the --json
|
|
6
|
+
* contract, and exit-code discipline. Generated from AGENT_COMMANDS so the
|
|
7
|
+
* docs can never drift from one source of truth.
|
|
8
|
+
*
|
|
9
|
+
* `claudeMdSnippet()` renders a ready-to-paste CLAUDE.md block teaching agents
|
|
10
|
+
* the CLI-first usage (consumed by `ashlr wire --claude-md`).
|
|
11
|
+
*
|
|
12
|
+
* Safety classes mirror CONTRACT-M31:
|
|
13
|
+
* read — read-only of local stores; always safe.
|
|
14
|
+
* append — append-only write under ~/.ashlr/ (genome hub).
|
|
15
|
+
* proposal — creates a PENDING inbox proposal; never applies anything.
|
|
16
|
+
* human-gate — listed for awareness only; agents must NOT run it.
|
|
17
|
+
*/
|
|
18
|
+
export type AgentSafety = 'read' | 'append' | 'proposal' | 'human-gate';
|
|
19
|
+
export interface AgentCommandDoc {
|
|
20
|
+
/** Invocation shape, e.g. `ashlr ask "<question>" --json`. */
|
|
21
|
+
usage: string;
|
|
22
|
+
/** One-line purpose. */
|
|
23
|
+
description: string;
|
|
24
|
+
/** Safety classification (CONTRACT-M31). */
|
|
25
|
+
safety: AgentSafety;
|
|
26
|
+
/** Name of the stable --json output shape (types.ts), or a short note. */
|
|
27
|
+
jsonShape: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The agent-relevant command registry — the CLI-first contract. Every entry's
|
|
31
|
+
* --json output is stable (typed in src/core/types.ts) and ANSI-free.
|
|
32
|
+
* Exit codes everywhere: 0 success, 1 runtime error, 2 bad usage.
|
|
33
|
+
*/
|
|
34
|
+
export declare const AGENT_COMMANDS: AgentCommandDoc[];
|
|
35
|
+
/** Render the cheat sheet as plain text (llms.txt-style; no ANSI). */
|
|
36
|
+
export declare function agentDocsText(): string;
|
|
37
|
+
/** Ready-to-paste CLAUDE.md block (for `ashlr wire --claude-md`). */
|
|
38
|
+
export declare function claudeMdSnippet(): string;
|
|
39
|
+
export declare function cmdDocs(args: string[]): Promise<number>;
|
|
40
|
+
/** Human-facing summary table for `ashlr docs` discoverability surfaces. */
|
|
41
|
+
export declare function renderAgentTable(): string;
|
|
42
|
+
export type HelpTopic = 'core' | 'run' | 'swarm' | 'memory' | 'knowledge' | 'autonomy' | 'observability' | 'integrations' | 'safety' | 'web' | 'scaffold';
|
|
43
|
+
export interface HelpEntry {
|
|
44
|
+
cmd: string;
|
|
45
|
+
desc: string;
|
|
46
|
+
topic: HelpTopic;
|
|
47
|
+
}
|
|
48
|
+
/** The full command table (the former inline cmdHelp list), topic-tagged. */
|
|
49
|
+
export declare const HELP_ENTRIES: HelpEntry[];
|
|
50
|
+
/** `ashlr help [<topic>] [--search <term>] [--all]` — exit 0 always (help never fails the shell). */
|
|
51
|
+
export declare function cmdHelp(args: string[]): Promise<number>;
|