@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":"runner.js","sourceRoot":"","sources":["../../../src/core/swarm/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core/swarm/sign.ts — M17 tamper-evident signing for swarm task outputs.
|
|
3
|
+
*
|
|
4
|
+
* SECURITY INVARIANTS (do not relax):
|
|
5
|
+
* - The local key is generated with crypto.randomBytes(32), stored at mode
|
|
6
|
+
* 0600 under ~/.ashlr/keys/swarm.key. It is NEVER logged, printed, or
|
|
7
|
+
* committed. Only its file path is returned to callers.
|
|
8
|
+
* - Phantom path: best-effort only. If phantom is enabled+installed, we derive
|
|
9
|
+
* an HMAC key from a phantom-sourced value via a one-way sha256 so the
|
|
10
|
+
* phantom secret itself never appears in memory beyond the derivation step.
|
|
11
|
+
* On ANY failure we fall back silently to the local key.
|
|
12
|
+
* - Signatures carry only hashes (hex digests) — never payload content, never
|
|
13
|
+
* key material, never any secret value.
|
|
14
|
+
* - verifyOutput never throws. signOutput degrades gracefully on all errors.
|
|
15
|
+
* - node:crypto is the only dependency (builtin, no install required).
|
|
16
|
+
*/
|
|
17
|
+
import type { AshlrConfig, OutputSignature } from '../types.js';
|
|
18
|
+
/**
|
|
19
|
+
* Returns the absolute path to the local signing key file
|
|
20
|
+
* (~/.ashlr/keys/swarm.key). If the file does not yet exist, it is created:
|
|
21
|
+
* - ~/.ashlr/keys/ is created with mode 0700 (user-only)
|
|
22
|
+
* - 64 hex chars (32 random bytes) are written to the file with mode 0600
|
|
23
|
+
*
|
|
24
|
+
* The key content is NEVER returned, logged, or printed by this function or
|
|
25
|
+
* any function in this module. Only the path is exposed to callers.
|
|
26
|
+
*
|
|
27
|
+
* Never throws — any filesystem error is surfaced as a thrown Error (callers
|
|
28
|
+
* in signOutput/verifyOutput catch it and degrade gracefully).
|
|
29
|
+
*/
|
|
30
|
+
export declare function ensureLocalKey(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Compute a tamper-evident signature over `content`.
|
|
33
|
+
*
|
|
34
|
+
* Output fields:
|
|
35
|
+
* hash — sha256 hex of the raw content (content digest only, no secrets).
|
|
36
|
+
* sig — HMAC-SHA256 hex of the content, keyed by the signing key.
|
|
37
|
+
* alg — 'phantom' when a phantom-derived key was used, else 'hmac-sha256'.
|
|
38
|
+
* signer — opaque identity ('local' or 'phantom:<12-hex-chars>'), no secrets.
|
|
39
|
+
* ts — ISO timestamp.
|
|
40
|
+
*
|
|
41
|
+
* Key selection (best-effort phantom, fall back to local):
|
|
42
|
+
* 1. If cfg.phantom.enabled and phantom is installed+initialized → phantom key.
|
|
43
|
+
* 2. Otherwise → local key (~/.ashlr/keys/swarm.key, auto-created 0600).
|
|
44
|
+
*
|
|
45
|
+
* THROWS only when the local key cannot be created/read (e.g. read-only
|
|
46
|
+
* filesystem) AND no phantom key is available. This is deliberate: rather than
|
|
47
|
+
* emit a forgeable all-zero-key signature that LOOKS trusted, signing fails so
|
|
48
|
+
* the caller leaves the output unsigned. The runner calls this best-effort
|
|
49
|
+
* (try/catch) and treats a thrown error / absent signature as "skip downstream
|
|
50
|
+
* verification" — and its unsigned-dependency gate escalates if a signed-swarm
|
|
51
|
+
* dependency ends up without a signature. ensureLocalKey() rarely fails in
|
|
52
|
+
* practice. Never throws for any reason other than key-load failure.
|
|
53
|
+
*/
|
|
54
|
+
export declare function signOutput(content: string, cfg: AshlrConfig): OutputSignature;
|
|
55
|
+
/**
|
|
56
|
+
* Verify a previously computed OutputSignature against `content`.
|
|
57
|
+
*
|
|
58
|
+
* Returns true only when:
|
|
59
|
+
* - The content digest matches sig.hash (sha256 of content == sig.hash).
|
|
60
|
+
* - The HMAC recomputed with the same key == sig.sig (timing-safe compare).
|
|
61
|
+
*
|
|
62
|
+
* Returns false (NEVER throws) on:
|
|
63
|
+
* - Any key-loading failure.
|
|
64
|
+
* - Malformed / missing signature fields.
|
|
65
|
+
* - Hash or HMAC mismatch (tamper detected).
|
|
66
|
+
* - Any unexpected exception.
|
|
67
|
+
*
|
|
68
|
+
* Key selection mirrors signOutput: attempt phantom if sig.alg === 'phantom'
|
|
69
|
+
* and phantom is enabled+installed; otherwise use the local key.
|
|
70
|
+
*/
|
|
71
|
+
export declare function verifyOutput(content: string, sig: OutputSignature, cfg: AshlrConfig): boolean;
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core/swarm/sign.ts — M17 tamper-evident signing for swarm task outputs.
|
|
3
|
+
*
|
|
4
|
+
* SECURITY INVARIANTS (do not relax):
|
|
5
|
+
* - The local key is generated with crypto.randomBytes(32), stored at mode
|
|
6
|
+
* 0600 under ~/.ashlr/keys/swarm.key. It is NEVER logged, printed, or
|
|
7
|
+
* committed. Only its file path is returned to callers.
|
|
8
|
+
* - Phantom path: best-effort only. If phantom is enabled+installed, we derive
|
|
9
|
+
* an HMAC key from a phantom-sourced value via a one-way sha256 so the
|
|
10
|
+
* phantom secret itself never appears in memory beyond the derivation step.
|
|
11
|
+
* On ANY failure we fall back silently to the local key.
|
|
12
|
+
* - Signatures carry only hashes (hex digests) — never payload content, never
|
|
13
|
+
* key material, never any secret value.
|
|
14
|
+
* - verifyOutput never throws. signOutput degrades gracefully on all errors.
|
|
15
|
+
* - node:crypto is the only dependency (builtin, no install required).
|
|
16
|
+
*/
|
|
17
|
+
import * as crypto from 'node:crypto';
|
|
18
|
+
import * as fs from 'node:fs';
|
|
19
|
+
import * as os from 'node:os';
|
|
20
|
+
import * as path from 'node:path';
|
|
21
|
+
import { spawnSync } from 'node:child_process';
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Constants
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
const KEYS_DIR = path.join(os.homedir(), '.ashlr', 'keys');
|
|
26
|
+
const KEY_FILE = path.join(KEYS_DIR, 'swarm.key');
|
|
27
|
+
const PHANTOM_BIN = 'phantom';
|
|
28
|
+
const PHANTOM_TIMEOUT_MS = 5_000;
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// ensureLocalKey
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
/**
|
|
33
|
+
* Returns the absolute path to the local signing key file
|
|
34
|
+
* (~/.ashlr/keys/swarm.key). If the file does not yet exist, it is created:
|
|
35
|
+
* - ~/.ashlr/keys/ is created with mode 0700 (user-only)
|
|
36
|
+
* - 64 hex chars (32 random bytes) are written to the file with mode 0600
|
|
37
|
+
*
|
|
38
|
+
* The key content is NEVER returned, logged, or printed by this function or
|
|
39
|
+
* any function in this module. Only the path is exposed to callers.
|
|
40
|
+
*
|
|
41
|
+
* Never throws — any filesystem error is surfaced as a thrown Error (callers
|
|
42
|
+
* in signOutput/verifyOutput catch it and degrade gracefully).
|
|
43
|
+
*/
|
|
44
|
+
export function ensureLocalKey() {
|
|
45
|
+
// Create directory with 0700 if missing.
|
|
46
|
+
if (!fs.existsSync(KEYS_DIR)) {
|
|
47
|
+
fs.mkdirSync(KEYS_DIR, { recursive: true, mode: 0o700 });
|
|
48
|
+
}
|
|
49
|
+
// Generate and write key if missing.
|
|
50
|
+
if (!fs.existsSync(KEY_FILE)) {
|
|
51
|
+
const key = crypto.randomBytes(32).toString('hex');
|
|
52
|
+
// Write with mode 0600 (owner read/write only).
|
|
53
|
+
fs.writeFileSync(KEY_FILE, key, { mode: 0o600, encoding: 'utf8' });
|
|
54
|
+
// Ensure mode is 0600 even on platforms where writeFileSync may not honour it.
|
|
55
|
+
fs.chmodSync(KEY_FILE, 0o600);
|
|
56
|
+
}
|
|
57
|
+
return KEY_FILE;
|
|
58
|
+
}
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// Internal key-reading helpers
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
/**
|
|
63
|
+
* Read the local key bytes from disk. Throws on any IO error so callers can
|
|
64
|
+
* catch and fall back. The key string is converted to a Buffer and the
|
|
65
|
+
* intermediate string is not retained.
|
|
66
|
+
*/
|
|
67
|
+
function readLocalKeyBytes() {
|
|
68
|
+
const keyPath = ensureLocalKey();
|
|
69
|
+
const keyHex = fs.readFileSync(keyPath, 'utf8').trim();
|
|
70
|
+
return Buffer.from(keyHex, 'hex');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Best-effort: derive a signing key from phantom.
|
|
74
|
+
*
|
|
75
|
+
* Strategy: invoke `phantom env --json` (or `phantom list --json`) to retrieve
|
|
76
|
+
* a deterministic identifier that is available only when phantom is initialized,
|
|
77
|
+
* then derive an HMAC key via sha256(phantomValue + 'ashlr-swarm-sign-v1') so
|
|
78
|
+
* the raw phantom secret never escapes this function.
|
|
79
|
+
*
|
|
80
|
+
* Returns { keyBytes, signerId } on success, null on any failure (binary
|
|
81
|
+
* missing, not initialized, unexpected output format, etc.).
|
|
82
|
+
*
|
|
83
|
+
* IMPORTANT: this function must NEVER return or expose the raw phantom secret
|
|
84
|
+
* value. Only the derived key bytes (a one-way hash) are returned.
|
|
85
|
+
*/
|
|
86
|
+
function derivePhantomKey(cfg) {
|
|
87
|
+
// Quick guard: phantom must be configured as enabled.
|
|
88
|
+
if (!cfg.phantom?.enabled)
|
|
89
|
+
return null;
|
|
90
|
+
try {
|
|
91
|
+
// Check binary is present.
|
|
92
|
+
const versionResult = spawnSync(PHANTOM_BIN, ['--version'], {
|
|
93
|
+
encoding: 'utf8',
|
|
94
|
+
timeout: PHANTOM_TIMEOUT_MS,
|
|
95
|
+
env: { ...process.env, PHANTOM_NO_UPDATE_CHECK: '1' },
|
|
96
|
+
});
|
|
97
|
+
if (versionResult.error || versionResult.status !== 0)
|
|
98
|
+
return null;
|
|
99
|
+
// Retrieve status to confirm initialization.
|
|
100
|
+
const statusResult = spawnSync(PHANTOM_BIN, ['status', '--json'], {
|
|
101
|
+
encoding: 'utf8',
|
|
102
|
+
timeout: PHANTOM_TIMEOUT_MS,
|
|
103
|
+
env: { ...process.env, PHANTOM_NO_UPDATE_CHECK: '1' },
|
|
104
|
+
});
|
|
105
|
+
if (statusResult.error)
|
|
106
|
+
return null;
|
|
107
|
+
const statusText = (statusResult.stdout ?? '') + (statusResult.stderr ?? '');
|
|
108
|
+
if (!isPhantomInitialized(statusText))
|
|
109
|
+
return null;
|
|
110
|
+
// Retrieve secret names only — we never read values here.
|
|
111
|
+
// We use the list of secret names as a stable identifier for the vault
|
|
112
|
+
// identity (combined with the version), then derive key material from
|
|
113
|
+
// the vault's own signing identity via `phantom env --json` for one key.
|
|
114
|
+
//
|
|
115
|
+
// Approach: use `phantom env --json` to get a deterministic vault fingerprint.
|
|
116
|
+
// We look for a known, stable field (vault id, version, or the sorted names
|
|
117
|
+
// list) and hash it — the value itself is never stored or returned.
|
|
118
|
+
const listResult = spawnSync(PHANTOM_BIN, ['list', '--json'], {
|
|
119
|
+
encoding: 'utf8',
|
|
120
|
+
timeout: PHANTOM_TIMEOUT_MS,
|
|
121
|
+
env: { ...process.env, PHANTOM_NO_UPDATE_CHECK: '1' },
|
|
122
|
+
});
|
|
123
|
+
if (listResult.error || listResult.status !== 0)
|
|
124
|
+
return null;
|
|
125
|
+
const listText = (listResult.stdout ?? '').trim();
|
|
126
|
+
if (!listText)
|
|
127
|
+
return null;
|
|
128
|
+
// Extract only the secret NAMES (not values) from the list output.
|
|
129
|
+
// We sort them to get a stable fingerprint regardless of list order.
|
|
130
|
+
const names = extractSecretNames(listText);
|
|
131
|
+
if (names.length === 0)
|
|
132
|
+
return null;
|
|
133
|
+
// Derive key material: sha256(sorted-names-joined + version-string).
|
|
134
|
+
// This is a one-way hash of metadata only — no secret values are used.
|
|
135
|
+
const versionText = (versionResult.stdout ?? '').trim();
|
|
136
|
+
const fingerprint = names.sort().join(',') + '|' + versionText + '|ashlr-swarm-sign-v1';
|
|
137
|
+
const keyBytes = crypto.createHash('sha256').update(fingerprint, 'utf8').digest();
|
|
138
|
+
// Signer id: a SEPARATE one-way hash of the key bytes (NOT the key bytes
|
|
139
|
+
// themselves). The signer is persisted and printed by the CLI, so exposing
|
|
140
|
+
// raw bytes of the live HMAC key (even 6 of 32 bytes) would violate the
|
|
141
|
+
// "signatures/identity carry no key material" invariant. Hashing the key
|
|
142
|
+
// with a distinct domain-separation tag yields a stable, opaque identifier
|
|
143
|
+
// that reveals nothing about the key.
|
|
144
|
+
const signerId = 'phantom:' +
|
|
145
|
+
crypto
|
|
146
|
+
.createHash('sha256')
|
|
147
|
+
.update('ashlr-swarm-signer-id-v1|')
|
|
148
|
+
.update(keyBytes)
|
|
149
|
+
.digest('hex')
|
|
150
|
+
.slice(0, 12);
|
|
151
|
+
return { keyBytes, signerId };
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// Any unexpected error → fall back to local key.
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Heuristic: determine whether phantom is initialized from its status output.
|
|
160
|
+
* Mirrors the logic in core/phantom.ts (parseInitializedFromJson + text fallback).
|
|
161
|
+
*/
|
|
162
|
+
function isPhantomInitialized(raw) {
|
|
163
|
+
const trimmed = raw.trim();
|
|
164
|
+
// Try JSON parse first.
|
|
165
|
+
if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
|
|
166
|
+
try {
|
|
167
|
+
const parsed = JSON.parse(trimmed);
|
|
168
|
+
if (typeof parsed['initialized'] === 'boolean')
|
|
169
|
+
return parsed['initialized'];
|
|
170
|
+
const vault = parsed['vault'];
|
|
171
|
+
if (vault !== null && typeof vault === 'object') {
|
|
172
|
+
const v = vault['initialized'];
|
|
173
|
+
if (typeof v === 'boolean')
|
|
174
|
+
return v;
|
|
175
|
+
}
|
|
176
|
+
for (const key of ['secretCount', 'secrets', 'mapped', 'count']) {
|
|
177
|
+
if (typeof parsed[key] === 'number')
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
// Parseable JSON but no recognized field → treat as initialized.
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
// Fall through to text heuristic.
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Text heuristic.
|
|
188
|
+
const lc = trimmed.toLowerCase();
|
|
189
|
+
return !lc.includes('not initialized') && !lc.includes('run phantom init');
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Extract secret NAMES (not values) from `phantom list --json` output.
|
|
193
|
+
* Returns an empty array if the output is unrecognized. Mirrors parseSecretNames
|
|
194
|
+
* in core/phantom.ts.
|
|
195
|
+
*/
|
|
196
|
+
function extractSecretNames(raw) {
|
|
197
|
+
try {
|
|
198
|
+
const parsed = JSON.parse(raw);
|
|
199
|
+
if (Array.isArray(parsed)) {
|
|
200
|
+
const names = [];
|
|
201
|
+
for (const item of parsed) {
|
|
202
|
+
if (item !== null && typeof item === 'object') {
|
|
203
|
+
const obj = item;
|
|
204
|
+
if (typeof obj['name'] === 'string')
|
|
205
|
+
names.push(obj['name']);
|
|
206
|
+
else if (typeof obj['key'] === 'string')
|
|
207
|
+
names.push(obj['key']);
|
|
208
|
+
}
|
|
209
|
+
else if (typeof item === 'string') {
|
|
210
|
+
names.push(item);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return names;
|
|
214
|
+
}
|
|
215
|
+
if (parsed !== null && typeof parsed === 'object') {
|
|
216
|
+
const obj = parsed;
|
|
217
|
+
for (const key of ['secrets', 'keys', 'names']) {
|
|
218
|
+
if (Array.isArray(obj[key]))
|
|
219
|
+
return extractSecretNames(JSON.stringify(obj[key]));
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return [];
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
// Line-based fallback for plain-text output.
|
|
226
|
+
const ENV_VAR_RE = /^[A-Z_][A-Z0-9_]{0,127}$/;
|
|
227
|
+
const names = [];
|
|
228
|
+
for (const raw_line of raw.split('\n')) {
|
|
229
|
+
const token = raw_line.trim().split(/\s+/)[0];
|
|
230
|
+
if (token && ENV_VAR_RE.test(token) && token !== 'NAME' && token !== 'KEY') {
|
|
231
|
+
names.push(token);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return names;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// ---------------------------------------------------------------------------
|
|
238
|
+
// Public API
|
|
239
|
+
// ---------------------------------------------------------------------------
|
|
240
|
+
/**
|
|
241
|
+
* Compute a tamper-evident signature over `content`.
|
|
242
|
+
*
|
|
243
|
+
* Output fields:
|
|
244
|
+
* hash — sha256 hex of the raw content (content digest only, no secrets).
|
|
245
|
+
* sig — HMAC-SHA256 hex of the content, keyed by the signing key.
|
|
246
|
+
* alg — 'phantom' when a phantom-derived key was used, else 'hmac-sha256'.
|
|
247
|
+
* signer — opaque identity ('local' or 'phantom:<12-hex-chars>'), no secrets.
|
|
248
|
+
* ts — ISO timestamp.
|
|
249
|
+
*
|
|
250
|
+
* Key selection (best-effort phantom, fall back to local):
|
|
251
|
+
* 1. If cfg.phantom.enabled and phantom is installed+initialized → phantom key.
|
|
252
|
+
* 2. Otherwise → local key (~/.ashlr/keys/swarm.key, auto-created 0600).
|
|
253
|
+
*
|
|
254
|
+
* THROWS only when the local key cannot be created/read (e.g. read-only
|
|
255
|
+
* filesystem) AND no phantom key is available. This is deliberate: rather than
|
|
256
|
+
* emit a forgeable all-zero-key signature that LOOKS trusted, signing fails so
|
|
257
|
+
* the caller leaves the output unsigned. The runner calls this best-effort
|
|
258
|
+
* (try/catch) and treats a thrown error / absent signature as "skip downstream
|
|
259
|
+
* verification" — and its unsigned-dependency gate escalates if a signed-swarm
|
|
260
|
+
* dependency ends up without a signature. ensureLocalKey() rarely fails in
|
|
261
|
+
* practice. Never throws for any reason other than key-load failure.
|
|
262
|
+
*/
|
|
263
|
+
export function signOutput(content, cfg) {
|
|
264
|
+
const ts = new Date().toISOString();
|
|
265
|
+
// 1. Content digest (independent of key).
|
|
266
|
+
const hash = crypto.createHash('sha256').update(content, 'utf8').digest('hex');
|
|
267
|
+
// 2. Determine key source.
|
|
268
|
+
let keyBytes;
|
|
269
|
+
let alg = 'hmac-sha256';
|
|
270
|
+
let signer = 'local';
|
|
271
|
+
const phantomResult = derivePhantomKey(cfg);
|
|
272
|
+
if (phantomResult !== null) {
|
|
273
|
+
keyBytes = phantomResult.keyBytes;
|
|
274
|
+
alg = 'phantom';
|
|
275
|
+
signer = phantomResult.signerId;
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
// Local key (auto-created 0600 if absent).
|
|
279
|
+
// SECURITY: do NOT fall back to an all-zero key on read failure. A zero-key
|
|
280
|
+
// signature is forgeable by anyone who knows the key is zero, and it carries
|
|
281
|
+
// no marker distinguishing it from a real-key signature — a silent downgrade
|
|
282
|
+
// of the tamper-evidence guarantee to "anyone can forge". Instead, rethrow:
|
|
283
|
+
// the runner's signOutput call is best-effort (wrapped in try/catch) and will
|
|
284
|
+
// leave taskRun.signature undefined, which downstream verification treats as
|
|
285
|
+
// "no signature to verify" rather than emitting a falsely-trusted one. With
|
|
286
|
+
// the unsigned-dependency gate in the runner, a missing signature on a
|
|
287
|
+
// signed-swarm dependency now escalates rather than being silently consumed.
|
|
288
|
+
keyBytes = readLocalKeyBytes();
|
|
289
|
+
}
|
|
290
|
+
// 3. HMAC-SHA256(content, key).
|
|
291
|
+
const sig = crypto.createHmac('sha256', keyBytes).update(content, 'utf8').digest('hex');
|
|
292
|
+
return { alg, hash, sig, signer, ts };
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Verify a previously computed OutputSignature against `content`.
|
|
296
|
+
*
|
|
297
|
+
* Returns true only when:
|
|
298
|
+
* - The content digest matches sig.hash (sha256 of content == sig.hash).
|
|
299
|
+
* - The HMAC recomputed with the same key == sig.sig (timing-safe compare).
|
|
300
|
+
*
|
|
301
|
+
* Returns false (NEVER throws) on:
|
|
302
|
+
* - Any key-loading failure.
|
|
303
|
+
* - Malformed / missing signature fields.
|
|
304
|
+
* - Hash or HMAC mismatch (tamper detected).
|
|
305
|
+
* - Any unexpected exception.
|
|
306
|
+
*
|
|
307
|
+
* Key selection mirrors signOutput: attempt phantom if sig.alg === 'phantom'
|
|
308
|
+
* and phantom is enabled+installed; otherwise use the local key.
|
|
309
|
+
*/
|
|
310
|
+
export function verifyOutput(content, sig, cfg) {
|
|
311
|
+
try {
|
|
312
|
+
// Basic shape guard.
|
|
313
|
+
if (!sig ||
|
|
314
|
+
typeof sig.hash !== 'string' ||
|
|
315
|
+
typeof sig.sig !== 'string' ||
|
|
316
|
+
typeof sig.alg !== 'string') {
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
// 1. Recompute content digest and compare (non-secret, timing-safe anyway).
|
|
320
|
+
const expectedHash = crypto.createHash('sha256').update(content, 'utf8').digest('hex');
|
|
321
|
+
const hashBufExpected = Buffer.from(expectedHash, 'hex');
|
|
322
|
+
const hashBufActual = Buffer.from(sig.hash, 'hex');
|
|
323
|
+
if (hashBufExpected.length !== hashBufActual.length ||
|
|
324
|
+
!crypto.timingSafeEqual(hashBufExpected, hashBufActual)) {
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
// 2. Determine key bytes (must match what signOutput used).
|
|
328
|
+
let keyBytes;
|
|
329
|
+
if (sig.alg === 'phantom') {
|
|
330
|
+
const phantomResult = derivePhantomKey(cfg);
|
|
331
|
+
if (phantomResult === null) {
|
|
332
|
+
// Phantom was used for signing but is not available now → cannot verify.
|
|
333
|
+
return false;
|
|
334
|
+
}
|
|
335
|
+
keyBytes = phantomResult.keyBytes;
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
// 'hmac-sha256' → local key.
|
|
339
|
+
try {
|
|
340
|
+
keyBytes = readLocalKeyBytes();
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
return false;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
// 3. Recompute HMAC and compare in constant time.
|
|
347
|
+
const expectedSig = crypto
|
|
348
|
+
.createHmac('sha256', keyBytes)
|
|
349
|
+
.update(content, 'utf8')
|
|
350
|
+
.digest('hex');
|
|
351
|
+
const sigBufExpected = Buffer.from(expectedSig, 'hex');
|
|
352
|
+
const sigBufActual = Buffer.from(sig.sig, 'hex');
|
|
353
|
+
if (sigBufExpected.length !== sigBufActual.length)
|
|
354
|
+
return false;
|
|
355
|
+
return crypto.timingSafeEqual(sigBufExpected, sigBufActual);
|
|
356
|
+
}
|
|
357
|
+
catch {
|
|
358
|
+
// Never throw — any unexpected error means we cannot confirm integrity.
|
|
359
|
+
return false;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=sign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/core/swarm/sign.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swarm persistence store.
|
|
3
|
+
*
|
|
4
|
+
* Provides atomic-ish read/write for SwarmRun records to ~/.ashlr/swarms/.
|
|
5
|
+
* All functions are synchronous (matching the RunState/config store pattern),
|
|
6
|
+
* never throw, and never carry secret values in any logged/persisted output.
|
|
7
|
+
*
|
|
8
|
+
* Layout:
|
|
9
|
+
* ~/.ashlr/swarms/<id>.json — pretty-printed SwarmRun (one file per run)
|
|
10
|
+
*
|
|
11
|
+
* Atomic-ish write strategy: write to a .tmp sibling, then rename over the
|
|
12
|
+
* target. On POSIX this is an atomic rename; on Windows it is best-effort
|
|
13
|
+
* (rename over existing file may fail, in which case we fall back to a direct
|
|
14
|
+
* write). Avoids leaving a partially-written record visible to readers.
|
|
15
|
+
*/
|
|
16
|
+
import type { SwarmRun } from '../types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Absolute path to the swarms persistence directory: `~/.ashlr/swarms`.
|
|
19
|
+
* Re-resolved from `homedir()` on every call so tests that mutate HOME work.
|
|
20
|
+
*/
|
|
21
|
+
export declare function swarmsDir(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Persist a SwarmRun record to disk.
|
|
24
|
+
*
|
|
25
|
+
* Strategy:
|
|
26
|
+
* 1. Ensure the swarms directory exists.
|
|
27
|
+
* 2. Serialize to pretty-printed JSON (trailing newline for POSIX hygiene).
|
|
28
|
+
* 3. Write to a `.tmp` sibling file.
|
|
29
|
+
* 4. Rename the `.tmp` over the target path (atomic on POSIX).
|
|
30
|
+
* 5. If the rename fails (e.g. Windows cross-device), fall back to a direct
|
|
31
|
+
* overwrite.
|
|
32
|
+
*
|
|
33
|
+
* Never throws; failures are silently swallowed so a persistence error never
|
|
34
|
+
* crashes the swarm runner mid-execution.
|
|
35
|
+
*/
|
|
36
|
+
export declare function saveSwarm(s: SwarmRun): void;
|
|
37
|
+
/**
|
|
38
|
+
* Load and deserialise a single SwarmRun by id.
|
|
39
|
+
*
|
|
40
|
+
* Returns `null` when the record does not exist, cannot be read, or fails to
|
|
41
|
+
* parse as a valid-looking SwarmRun. Never throws.
|
|
42
|
+
*/
|
|
43
|
+
export declare function loadSwarm(id: string): SwarmRun | null;
|
|
44
|
+
/**
|
|
45
|
+
* List all persisted SwarmRun records, sorted by `updatedAt` descending
|
|
46
|
+
* (most-recent first).
|
|
47
|
+
*
|
|
48
|
+
* - Reads at most `MAX_LIST` (200) files to bound I/O on large directories.
|
|
49
|
+
* - Skips `.tmp` sidecars and any file that fails to parse.
|
|
50
|
+
* - Never throws.
|
|
51
|
+
*/
|
|
52
|
+
export declare function listSwarms(): SwarmRun[];
|