@zigrivers/scaffold 3.25.1 → 3.27.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/README.md +139 -7
- package/content/knowledge/web3/web3-access-control.md +189 -0
- package/content/knowledge/web3/web3-architecture.md +162 -0
- package/content/knowledge/web3/web3-audit-workflow.md +151 -0
- package/content/knowledge/web3/web3-common-vulnerabilities.md +171 -0
- package/content/knowledge/web3/web3-conventions.md +162 -0
- package/content/knowledge/web3/web3-deployment-and-verification.md +216 -0
- package/content/knowledge/web3/web3-dev-environment.md +150 -0
- package/content/knowledge/web3/web3-gas-optimization.md +165 -0
- package/content/knowledge/web3/web3-oracles-and-external-data.md +155 -0
- package/content/knowledge/web3/web3-project-structure.md +212 -0
- package/content/knowledge/web3/web3-requirements.md +152 -0
- package/content/knowledge/web3/web3-security.md +163 -0
- package/content/knowledge/web3/web3-testing.md +180 -0
- package/content/knowledge/web3/web3-upgradeability.md +189 -0
- package/content/methodology/web3-overlay.yml +40 -0
- package/dist/cli/commands/complete.d.ts.map +1 -1
- package/dist/cli/commands/complete.js +6 -13
- package/dist/cli/commands/complete.js.map +1 -1
- package/dist/cli/commands/complete.test.js +18 -0
- package/dist/cli/commands/complete.test.js.map +1 -1
- package/dist/cli/commands/knowledge.test.js +4 -4
- package/dist/cli/commands/knowledge.test.js.map +1 -1
- package/dist/cli/commands/observe.d.ts +58 -0
- package/dist/cli/commands/observe.d.ts.map +1 -0
- package/dist/cli/commands/observe.js +430 -0
- package/dist/cli/commands/observe.js.map +1 -0
- package/dist/cli/commands/observe.test.d.ts +2 -0
- package/dist/cli/commands/observe.test.d.ts.map +1 -0
- package/dist/cli/commands/observe.test.js +452 -0
- package/dist/cli/commands/observe.test.js.map +1 -0
- package/dist/cli/commands/run.js +3 -3
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/run.test.js +1 -1
- package/dist/cli/commands/run.test.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/schema.d.ts +672 -126
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +8 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/config/schema.test.js +2 -2
- package/dist/config/schema.test.js.map +1 -1
- package/dist/config/validators/index.d.ts.map +1 -1
- package/dist/config/validators/index.js +2 -0
- package/dist/config/validators/index.js.map +1 -1
- package/dist/config/validators/web3.d.ts +4 -0
- package/dist/config/validators/web3.d.ts.map +1 -0
- package/dist/config/validators/web3.js +15 -0
- package/dist/config/validators/web3.js.map +1 -0
- package/dist/e2e/project-type-overlays.test.js +76 -0
- package/dist/e2e/project-type-overlays.test.js.map +1 -1
- package/dist/observability/adapters/audit-history.d.ts +17 -0
- package/dist/observability/adapters/audit-history.d.ts.map +1 -0
- package/dist/observability/adapters/audit-history.js +113 -0
- package/dist/observability/adapters/audit-history.js.map +1 -0
- package/dist/observability/adapters/audit-history.test.d.ts +2 -0
- package/dist/observability/adapters/audit-history.test.d.ts.map +1 -0
- package/dist/observability/adapters/audit-history.test.js +137 -0
- package/dist/observability/adapters/audit-history.test.js.map +1 -0
- package/dist/observability/adapters/beads.d.ts +9 -0
- package/dist/observability/adapters/beads.d.ts.map +1 -0
- package/dist/observability/adapters/beads.js +40 -0
- package/dist/observability/adapters/beads.js.map +1 -0
- package/dist/observability/adapters/beads.test.d.ts +2 -0
- package/dist/observability/adapters/beads.test.d.ts.map +1 -0
- package/dist/observability/adapters/beads.test.js +25 -0
- package/dist/observability/adapters/beads.test.js.map +1 -0
- package/dist/observability/adapters/gh.d.ts +27 -0
- package/dist/observability/adapters/gh.d.ts.map +1 -0
- package/dist/observability/adapters/gh.js +118 -0
- package/dist/observability/adapters/gh.js.map +1 -0
- package/dist/observability/adapters/gh.test.d.ts +2 -0
- package/dist/observability/adapters/gh.test.d.ts.map +1 -0
- package/dist/observability/adapters/gh.test.js +79 -0
- package/dist/observability/adapters/gh.test.js.map +1 -0
- package/dist/observability/adapters/git.d.ts +24 -0
- package/dist/observability/adapters/git.d.ts.map +1 -0
- package/dist/observability/adapters/git.js +110 -0
- package/dist/observability/adapters/git.js.map +1 -0
- package/dist/observability/adapters/git.test.d.ts +2 -0
- package/dist/observability/adapters/git.test.d.ts.map +1 -0
- package/dist/observability/adapters/git.test.js +66 -0
- package/dist/observability/adapters/git.test.js.map +1 -0
- package/dist/observability/adapters/mmr.d.ts +15 -0
- package/dist/observability/adapters/mmr.d.ts.map +1 -0
- package/dist/observability/adapters/mmr.js +85 -0
- package/dist/observability/adapters/mmr.js.map +1 -0
- package/dist/observability/adapters/mmr.test.d.ts +2 -0
- package/dist/observability/adapters/mmr.test.d.ts.map +1 -0
- package/dist/observability/adapters/mmr.test.js +55 -0
- package/dist/observability/adapters/mmr.test.js.map +1 -0
- package/dist/observability/adapters/pipeline-docs.d.ts +8 -0
- package/dist/observability/adapters/pipeline-docs.d.ts.map +1 -0
- package/dist/observability/adapters/pipeline-docs.js +68 -0
- package/dist/observability/adapters/pipeline-docs.js.map +1 -0
- package/dist/observability/adapters/pipeline-docs.test.d.ts +2 -0
- package/dist/observability/adapters/pipeline-docs.test.d.ts.map +1 -0
- package/dist/observability/adapters/pipeline-docs.test.js +58 -0
- package/dist/observability/adapters/pipeline-docs.test.js.map +1 -0
- package/dist/observability/adapters/state.d.ts +21 -0
- package/dist/observability/adapters/state.d.ts.map +1 -0
- package/dist/observability/adapters/state.js +87 -0
- package/dist/observability/adapters/state.js.map +1 -0
- package/dist/observability/adapters/state.test.d.ts +2 -0
- package/dist/observability/adapters/state.test.d.ts.map +1 -0
- package/dist/observability/adapters/state.test.js +92 -0
- package/dist/observability/adapters/state.test.js.map +1 -0
- package/dist/observability/adapters/tests.d.ts +20 -0
- package/dist/observability/adapters/tests.d.ts.map +1 -0
- package/dist/observability/adapters/tests.js +52 -0
- package/dist/observability/adapters/tests.js.map +1 -0
- package/dist/observability/adapters/tests.test.d.ts +2 -0
- package/dist/observability/adapters/tests.test.d.ts.map +1 -0
- package/dist/observability/adapters/tests.test.js +66 -0
- package/dist/observability/adapters/tests.test.js.map +1 -0
- package/dist/observability/adapters/types.d.ts +7 -0
- package/dist/observability/adapters/types.d.ts.map +1 -0
- package/dist/observability/adapters/types.js +2 -0
- package/dist/observability/adapters/types.js.map +1 -0
- package/dist/observability/checks/lens-a-tdd.d.ts +3 -0
- package/dist/observability/checks/lens-a-tdd.d.ts.map +1 -0
- package/dist/observability/checks/lens-a-tdd.js +34 -0
- package/dist/observability/checks/lens-a-tdd.js.map +1 -0
- package/dist/observability/checks/lens-a-tdd.test.d.ts +2 -0
- package/dist/observability/checks/lens-a-tdd.test.d.ts.map +1 -0
- package/dist/observability/checks/lens-a-tdd.test.js +62 -0
- package/dist/observability/checks/lens-a-tdd.test.js.map +1 -0
- package/dist/observability/checks/lens-b-ac-coverage.d.ts +3 -0
- package/dist/observability/checks/lens-b-ac-coverage.d.ts.map +1 -0
- package/dist/observability/checks/lens-b-ac-coverage.js +63 -0
- package/dist/observability/checks/lens-b-ac-coverage.js.map +1 -0
- package/dist/observability/checks/lens-b-ac-coverage.test.d.ts +2 -0
- package/dist/observability/checks/lens-b-ac-coverage.test.d.ts.map +1 -0
- package/dist/observability/checks/lens-b-ac-coverage.test.js +59 -0
- package/dist/observability/checks/lens-b-ac-coverage.test.js.map +1 -0
- package/dist/observability/checks/lens-c-standards.d.ts +3 -0
- package/dist/observability/checks/lens-c-standards.d.ts.map +1 -0
- package/dist/observability/checks/lens-c-standards.js +104 -0
- package/dist/observability/checks/lens-c-standards.js.map +1 -0
- package/dist/observability/checks/lens-c-standards.test.d.ts +2 -0
- package/dist/observability/checks/lens-c-standards.test.d.ts.map +1 -0
- package/dist/observability/checks/lens-c-standards.test.js +79 -0
- package/dist/observability/checks/lens-c-standards.test.js.map +1 -0
- package/dist/observability/checks/lens-d-stack.d.ts +3 -0
- package/dist/observability/checks/lens-d-stack.d.ts.map +1 -0
- package/dist/observability/checks/lens-d-stack.js +108 -0
- package/dist/observability/checks/lens-d-stack.js.map +1 -0
- package/dist/observability/checks/lens-d-stack.test.d.ts +2 -0
- package/dist/observability/checks/lens-d-stack.test.d.ts.map +1 -0
- package/dist/observability/checks/lens-d-stack.test.js +60 -0
- package/dist/observability/checks/lens-d-stack.test.js.map +1 -0
- package/dist/observability/checks/lens-e-design.d.ts +3 -0
- package/dist/observability/checks/lens-e-design.d.ts.map +1 -0
- package/dist/observability/checks/lens-e-design.js +76 -0
- package/dist/observability/checks/lens-e-design.js.map +1 -0
- package/dist/observability/checks/lens-e-design.test.d.ts +2 -0
- package/dist/observability/checks/lens-e-design.test.d.ts.map +1 -0
- package/dist/observability/checks/lens-e-design.test.js +85 -0
- package/dist/observability/checks/lens-e-design.test.js.map +1 -0
- package/dist/observability/checks/lens-f-scope.d.ts +3 -0
- package/dist/observability/checks/lens-f-scope.d.ts.map +1 -0
- package/dist/observability/checks/lens-f-scope.js +92 -0
- package/dist/observability/checks/lens-f-scope.js.map +1 -0
- package/dist/observability/checks/lens-f-scope.test.d.ts +2 -0
- package/dist/observability/checks/lens-f-scope.test.d.ts.map +1 -0
- package/dist/observability/checks/lens-f-scope.test.js +63 -0
- package/dist/observability/checks/lens-f-scope.test.js.map +1 -0
- package/dist/observability/checks/lens-g-decisions.d.ts +3 -0
- package/dist/observability/checks/lens-g-decisions.d.ts.map +1 -0
- package/dist/observability/checks/lens-g-decisions.js +139 -0
- package/dist/observability/checks/lens-g-decisions.js.map +1 -0
- package/dist/observability/checks/lens-g-decisions.test.d.ts +2 -0
- package/dist/observability/checks/lens-g-decisions.test.d.ts.map +1 -0
- package/dist/observability/checks/lens-g-decisions.test.js +118 -0
- package/dist/observability/checks/lens-g-decisions.test.js.map +1 -0
- package/dist/observability/checks/lens-h-cross-doc.d.ts +3 -0
- package/dist/observability/checks/lens-h-cross-doc.d.ts.map +1 -0
- package/dist/observability/checks/lens-h-cross-doc.js +322 -0
- package/dist/observability/checks/lens-h-cross-doc.js.map +1 -0
- package/dist/observability/checks/lens-h-cross-doc.test.d.ts +2 -0
- package/dist/observability/checks/lens-h-cross-doc.test.d.ts.map +1 -0
- package/dist/observability/checks/lens-h-cross-doc.test.js +174 -0
- package/dist/observability/checks/lens-h-cross-doc.test.js.map +1 -0
- package/dist/observability/engine/abort-snapshot.d.ts +10 -0
- package/dist/observability/engine/abort-snapshot.d.ts.map +1 -0
- package/dist/observability/engine/abort-snapshot.js +36 -0
- package/dist/observability/engine/abort-snapshot.js.map +1 -0
- package/dist/observability/engine/abort-snapshot.test.d.ts +2 -0
- package/dist/observability/engine/abort-snapshot.test.d.ts.map +1 -0
- package/dist/observability/engine/abort-snapshot.test.js +66 -0
- package/dist/observability/engine/abort-snapshot.test.js.map +1 -0
- package/dist/observability/engine/api.d.ts +24 -0
- package/dist/observability/engine/api.d.ts.map +1 -0
- package/dist/observability/engine/api.js +203 -0
- package/dist/observability/engine/api.js.map +1 -0
- package/dist/observability/engine/api.test.d.ts +2 -0
- package/dist/observability/engine/api.test.d.ts.map +1 -0
- package/dist/observability/engine/api.test.js +174 -0
- package/dist/observability/engine/api.test.js.map +1 -0
- package/dist/observability/engine/checks/findings-aggregator.d.ts +6 -0
- package/dist/observability/engine/checks/findings-aggregator.d.ts.map +1 -0
- package/dist/observability/engine/checks/findings-aggregator.js +56 -0
- package/dist/observability/engine/checks/findings-aggregator.js.map +1 -0
- package/dist/observability/engine/checks/findings-aggregator.test.d.ts +2 -0
- package/dist/observability/engine/checks/findings-aggregator.test.d.ts.map +1 -0
- package/dist/observability/engine/checks/findings-aggregator.test.js +63 -0
- package/dist/observability/engine/checks/findings-aggregator.test.js.map +1 -0
- package/dist/observability/engine/checks/fix-threshold.d.ts +3 -0
- package/dist/observability/engine/checks/fix-threshold.d.ts.map +1 -0
- package/dist/observability/engine/checks/fix-threshold.js +24 -0
- package/dist/observability/engine/checks/fix-threshold.js.map +1 -0
- package/dist/observability/engine/checks/fix-threshold.test.d.ts +2 -0
- package/dist/observability/engine/checks/fix-threshold.test.d.ts.map +1 -0
- package/dist/observability/engine/checks/fix-threshold.test.js +29 -0
- package/dist/observability/engine/checks/fix-threshold.test.js.map +1 -0
- package/dist/observability/engine/checks/observability-config.d.ts +64 -0
- package/dist/observability/engine/checks/observability-config.d.ts.map +1 -0
- package/dist/observability/engine/checks/observability-config.js +56 -0
- package/dist/observability/engine/checks/observability-config.js.map +1 -0
- package/dist/observability/engine/checks/observability-config.test.d.ts +2 -0
- package/dist/observability/engine/checks/observability-config.test.d.ts.map +1 -0
- package/dist/observability/engine/checks/observability-config.test.js +39 -0
- package/dist/observability/engine/checks/observability-config.test.js.map +1 -0
- package/dist/observability/engine/checks/registry.d.ts +19 -0
- package/dist/observability/engine/checks/registry.d.ts.map +1 -0
- package/dist/observability/engine/checks/registry.js +44 -0
- package/dist/observability/engine/checks/registry.js.map +1 -0
- package/dist/observability/engine/checks/registry.test.d.ts +2 -0
- package/dist/observability/engine/checks/registry.test.d.ts.map +1 -0
- package/dist/observability/engine/checks/registry.test.js +23 -0
- package/dist/observability/engine/checks/registry.test.js.map +1 -0
- package/dist/observability/engine/checks/runner.d.ts +23 -0
- package/dist/observability/engine/checks/runner.d.ts.map +1 -0
- package/dist/observability/engine/checks/runner.js +66 -0
- package/dist/observability/engine/checks/runner.js.map +1 -0
- package/dist/observability/engine/checks/runner.test.d.ts +2 -0
- package/dist/observability/engine/checks/runner.test.d.ts.map +1 -0
- package/dist/observability/engine/checks/runner.test.js +95 -0
- package/dist/observability/engine/checks/runner.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/component-parser.d.ts +3 -0
- package/dist/observability/engine/doc-graph/component-parser.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/component-parser.js +42 -0
- package/dist/observability/engine/doc-graph/component-parser.js.map +1 -0
- package/dist/observability/engine/doc-graph/component-parser.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/component-parser.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/component-parser.test.js +40 -0
- package/dist/observability/engine/doc-graph/component-parser.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/component-use-detector.d.ts +8 -0
- package/dist/observability/engine/doc-graph/component-use-detector.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/component-use-detector.js +62 -0
- package/dist/observability/engine/doc-graph/component-use-detector.js.map +1 -0
- package/dist/observability/engine/doc-graph/component-use-detector.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/component-use-detector.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/component-use-detector.test.js +38 -0
- package/dist/observability/engine/doc-graph/component-use-detector.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/decision-parser.d.ts +3 -0
- package/dist/observability/engine/doc-graph/decision-parser.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/decision-parser.js +60 -0
- package/dist/observability/engine/doc-graph/decision-parser.js.map +1 -0
- package/dist/observability/engine/doc-graph/decision-parser.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/decision-parser.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/decision-parser.test.js +65 -0
- package/dist/observability/engine/doc-graph/decision-parser.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/design-props.d.ts +9 -0
- package/dist/observability/engine/doc-graph/design-props.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/design-props.js +50 -0
- package/dist/observability/engine/doc-graph/design-props.js.map +1 -0
- package/dist/observability/engine/doc-graph/edge-builder.d.ts +28 -0
- package/dist/observability/engine/doc-graph/edge-builder.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/edge-builder.js +75 -0
- package/dist/observability/engine/doc-graph/edge-builder.js.map +1 -0
- package/dist/observability/engine/doc-graph/edge-builder.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/edge-builder.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/edge-builder.test.js +124 -0
- package/dist/observability/engine/doc-graph/edge-builder.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/feature-parser.d.ts +3 -0
- package/dist/observability/engine/doc-graph/feature-parser.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/feature-parser.js +78 -0
- package/dist/observability/engine/doc-graph/feature-parser.js.map +1 -0
- package/dist/observability/engine/doc-graph/feature-parser.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/feature-parser.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/feature-parser.test.js +51 -0
- package/dist/observability/engine/doc-graph/feature-parser.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/index.d.ts +3 -0
- package/dist/observability/engine/doc-graph/index.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/index.js +138 -0
- package/dist/observability/engine/doc-graph/index.js.map +1 -0
- package/dist/observability/engine/doc-graph/index.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/index.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/index.test.js +82 -0
- package/dist/observability/engine/doc-graph/index.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/parse-markdown.d.ts +15 -0
- package/dist/observability/engine/doc-graph/parse-markdown.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/parse-markdown.js +79 -0
- package/dist/observability/engine/doc-graph/parse-markdown.js.map +1 -0
- package/dist/observability/engine/doc-graph/parse-markdown.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/parse-markdown.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/parse-markdown.test.js +50 -0
- package/dist/observability/engine/doc-graph/parse-markdown.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/plan-task-parser.d.ts +3 -0
- package/dist/observability/engine/doc-graph/plan-task-parser.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/plan-task-parser.js +38 -0
- package/dist/observability/engine/doc-graph/plan-task-parser.js.map +1 -0
- package/dist/observability/engine/doc-graph/plan-task-parser.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/plan-task-parser.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/plan-task-parser.test.js +38 -0
- package/dist/observability/engine/doc-graph/plan-task-parser.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/playbook-task-parser.d.ts +3 -0
- package/dist/observability/engine/doc-graph/playbook-task-parser.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/playbook-task-parser.js +40 -0
- package/dist/observability/engine/doc-graph/playbook-task-parser.js.map +1 -0
- package/dist/observability/engine/doc-graph/playbook-task-parser.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/playbook-task-parser.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/playbook-task-parser.test.js +31 -0
- package/dist/observability/engine/doc-graph/playbook-task-parser.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/rule-parser.d.ts +3 -0
- package/dist/observability/engine/doc-graph/rule-parser.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/rule-parser.js +65 -0
- package/dist/observability/engine/doc-graph/rule-parser.js.map +1 -0
- package/dist/observability/engine/doc-graph/rule-parser.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/rule-parser.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/rule-parser.test.js +44 -0
- package/dist/observability/engine/doc-graph/rule-parser.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/story-parser.d.ts +8 -0
- package/dist/observability/engine/doc-graph/story-parser.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/story-parser.js +109 -0
- package/dist/observability/engine/doc-graph/story-parser.js.map +1 -0
- package/dist/observability/engine/doc-graph/story-parser.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/story-parser.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/story-parser.test.js +66 -0
- package/dist/observability/engine/doc-graph/story-parser.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/test-discovery.d.ts +3 -0
- package/dist/observability/engine/doc-graph/test-discovery.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/test-discovery.js +122 -0
- package/dist/observability/engine/doc-graph/test-discovery.js.map +1 -0
- package/dist/observability/engine/doc-graph/test-discovery.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/test-discovery.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/test-discovery.test.js +39 -0
- package/dist/observability/engine/doc-graph/test-discovery.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/token-parser.d.ts +3 -0
- package/dist/observability/engine/doc-graph/token-parser.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/token-parser.js +67 -0
- package/dist/observability/engine/doc-graph/token-parser.js.map +1 -0
- package/dist/observability/engine/doc-graph/token-parser.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/token-parser.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/token-parser.test.js +39 -0
- package/dist/observability/engine/doc-graph/token-parser.test.js.map +1 -0
- package/dist/observability/engine/doc-graph/token-use-detector.d.ts +10 -0
- package/dist/observability/engine/doc-graph/token-use-detector.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/token-use-detector.js +105 -0
- package/dist/observability/engine/doc-graph/token-use-detector.js.map +1 -0
- package/dist/observability/engine/doc-graph/token-use-detector.test.d.ts +2 -0
- package/dist/observability/engine/doc-graph/token-use-detector.test.d.ts.map +1 -0
- package/dist/observability/engine/doc-graph/token-use-detector.test.js +60 -0
- package/dist/observability/engine/doc-graph/token-use-detector.test.js.map +1 -0
- package/dist/observability/engine/event-schemas.d.ts +12 -0
- package/dist/observability/engine/event-schemas.d.ts.map +1 -0
- package/dist/observability/engine/event-schemas.js +182 -0
- package/dist/observability/engine/event-schemas.js.map +1 -0
- package/dist/observability/engine/event-schemas.test.d.ts +2 -0
- package/dist/observability/engine/event-schemas.test.d.ts.map +1 -0
- package/dist/observability/engine/event-schemas.test.js +200 -0
- package/dist/observability/engine/event-schemas.test.js.map +1 -0
- package/dist/observability/engine/fix-agent-dispatcher.d.ts +19 -0
- package/dist/observability/engine/fix-agent-dispatcher.d.ts.map +1 -0
- package/dist/observability/engine/fix-agent-dispatcher.js +88 -0
- package/dist/observability/engine/fix-agent-dispatcher.js.map +1 -0
- package/dist/observability/engine/fix-agent-dispatcher.test.d.ts +2 -0
- package/dist/observability/engine/fix-agent-dispatcher.test.d.ts.map +1 -0
- package/dist/observability/engine/fix-agent-dispatcher.test.js +54 -0
- package/dist/observability/engine/fix-agent-dispatcher.test.js.map +1 -0
- package/dist/observability/engine/fix-flow.d.ts +30 -0
- package/dist/observability/engine/fix-flow.d.ts.map +1 -0
- package/dist/observability/engine/fix-flow.js +105 -0
- package/dist/observability/engine/fix-flow.js.map +1 -0
- package/dist/observability/engine/fix-flow.test.d.ts +2 -0
- package/dist/observability/engine/fix-flow.test.d.ts.map +1 -0
- package/dist/observability/engine/fix-flow.test.js +127 -0
- package/dist/observability/engine/fix-flow.test.js.map +1 -0
- package/dist/observability/engine/fix-plan.d.ts +3 -0
- package/dist/observability/engine/fix-plan.d.ts.map +1 -0
- package/dist/observability/engine/fix-plan.js +13 -0
- package/dist/observability/engine/fix-plan.js.map +1 -0
- package/dist/observability/engine/fix-plan.test.d.ts +2 -0
- package/dist/observability/engine/fix-plan.test.d.ts.map +1 -0
- package/dist/observability/engine/fix-plan.test.js +44 -0
- package/dist/observability/engine/fix-plan.test.js.map +1 -0
- package/dist/observability/engine/harvester.d.ts +16 -0
- package/dist/observability/engine/harvester.d.ts.map +1 -0
- package/dist/observability/engine/harvester.js +106 -0
- package/dist/observability/engine/harvester.js.map +1 -0
- package/dist/observability/engine/harvester.test.d.ts +2 -0
- package/dist/observability/engine/harvester.test.d.ts.map +1 -0
- package/dist/observability/engine/harvester.test.js +99 -0
- package/dist/observability/engine/harvester.test.js.map +1 -0
- package/dist/observability/engine/identity.d.ts +6 -0
- package/dist/observability/engine/identity.d.ts.map +1 -0
- package/dist/observability/engine/identity.js +50 -0
- package/dist/observability/engine/identity.js.map +1 -0
- package/dist/observability/engine/identity.test.d.ts +2 -0
- package/dist/observability/engine/identity.test.d.ts.map +1 -0
- package/dist/observability/engine/identity.test.js +29 -0
- package/dist/observability/engine/identity.test.js.map +1 -0
- package/dist/observability/engine/ledger-writer.d.ts +10 -0
- package/dist/observability/engine/ledger-writer.d.ts.map +1 -0
- package/dist/observability/engine/ledger-writer.js +50 -0
- package/dist/observability/engine/ledger-writer.js.map +1 -0
- package/dist/observability/engine/ledger-writer.test.d.ts +2 -0
- package/dist/observability/engine/ledger-writer.test.d.ts.map +1 -0
- package/dist/observability/engine/ledger-writer.test.js +72 -0
- package/dist/observability/engine/ledger-writer.test.js.map +1 -0
- package/dist/observability/engine/llm-dispatcher.d.ts +16 -0
- package/dist/observability/engine/llm-dispatcher.d.ts.map +1 -0
- package/dist/observability/engine/llm-dispatcher.js +183 -0
- package/dist/observability/engine/llm-dispatcher.js.map +1 -0
- package/dist/observability/engine/llm-dispatcher.test.d.ts +2 -0
- package/dist/observability/engine/llm-dispatcher.test.d.ts.map +1 -0
- package/dist/observability/engine/llm-dispatcher.test.js +109 -0
- package/dist/observability/engine/llm-dispatcher.test.js.map +1 -0
- package/dist/observability/engine/phase-audit.d.ts +22 -0
- package/dist/observability/engine/phase-audit.d.ts.map +1 -0
- package/dist/observability/engine/phase-audit.js +98 -0
- package/dist/observability/engine/phase-audit.js.map +1 -0
- package/dist/observability/engine/phase-audit.test.d.ts +2 -0
- package/dist/observability/engine/phase-audit.test.d.ts.map +1 -0
- package/dist/observability/engine/phase-audit.test.js +82 -0
- package/dist/observability/engine/phase-audit.test.js.map +1 -0
- package/dist/observability/engine/phase-subsets.d.ts +5 -0
- package/dist/observability/engine/phase-subsets.d.ts.map +1 -0
- package/dist/observability/engine/phase-subsets.js +23 -0
- package/dist/observability/engine/phase-subsets.js.map +1 -0
- package/dist/observability/engine/phase-subsets.test.d.ts +2 -0
- package/dist/observability/engine/phase-subsets.test.d.ts.map +1 -0
- package/dist/observability/engine/phase-subsets.test.js +24 -0
- package/dist/observability/engine/phase-subsets.test.js.map +1 -0
- package/dist/observability/engine/redact.d.ts +9 -0
- package/dist/observability/engine/redact.d.ts.map +1 -0
- package/dist/observability/engine/redact.js +134 -0
- package/dist/observability/engine/redact.js.map +1 -0
- package/dist/observability/engine/redact.test.d.ts +2 -0
- package/dist/observability/engine/redact.test.d.ts.map +1 -0
- package/dist/observability/engine/redact.test.js +244 -0
- package/dist/observability/engine/redact.test.js.map +1 -0
- package/dist/observability/engine/stall.d.ts +13 -0
- package/dist/observability/engine/stall.d.ts.map +1 -0
- package/dist/observability/engine/stall.js +167 -0
- package/dist/observability/engine/stall.js.map +1 -0
- package/dist/observability/engine/stall.test.d.ts +2 -0
- package/dist/observability/engine/stall.test.d.ts.map +1 -0
- package/dist/observability/engine/stall.test.js +148 -0
- package/dist/observability/engine/stall.test.js.map +1 -0
- package/dist/observability/engine/synthesizer.d.ts +35 -0
- package/dist/observability/engine/synthesizer.d.ts.map +1 -0
- package/dist/observability/engine/synthesizer.js +298 -0
- package/dist/observability/engine/synthesizer.js.map +1 -0
- package/dist/observability/engine/synthesizer.test.d.ts +2 -0
- package/dist/observability/engine/synthesizer.test.d.ts.map +1 -0
- package/dist/observability/engine/synthesizer.test.js +183 -0
- package/dist/observability/engine/synthesizer.test.js.map +1 -0
- package/dist/observability/engine/types.d.ts +422 -0
- package/dist/observability/engine/types.d.ts.map +1 -0
- package/dist/observability/engine/types.js +3 -0
- package/dist/observability/engine/types.js.map +1 -0
- package/dist/observability/engine/types.test.d.ts +2 -0
- package/dist/observability/engine/types.test.d.ts.map +1 -0
- package/dist/observability/engine/types.test.js +16 -0
- package/dist/observability/engine/types.test.js.map +1 -0
- package/dist/observability/renderers/_lib.d.ts +7 -0
- package/dist/observability/renderers/_lib.d.ts.map +1 -0
- package/dist/observability/renderers/_lib.js +28 -0
- package/dist/observability/renderers/_lib.js.map +1 -0
- package/dist/observability/renderers/dashboard.d.ts +5 -0
- package/dist/observability/renderers/dashboard.d.ts.map +1 -0
- package/dist/observability/renderers/dashboard.js +100 -0
- package/dist/observability/renderers/dashboard.js.map +1 -0
- package/dist/observability/renderers/dashboard.test.d.ts +2 -0
- package/dist/observability/renderers/dashboard.test.d.ts.map +1 -0
- package/dist/observability/renderers/dashboard.test.js +142 -0
- package/dist/observability/renderers/dashboard.test.js.map +1 -0
- package/dist/observability/renderers/markdown.d.ts +4 -0
- package/dist/observability/renderers/markdown.d.ts.map +1 -0
- package/dist/observability/renderers/markdown.js +225 -0
- package/dist/observability/renderers/markdown.js.map +1 -0
- package/dist/observability/renderers/markdown.test.d.ts +2 -0
- package/dist/observability/renderers/markdown.test.d.ts.map +1 -0
- package/dist/observability/renderers/markdown.test.js +169 -0
- package/dist/observability/renderers/markdown.test.js.map +1 -0
- package/dist/observability/renderers/mmr-findings.d.ts +10 -0
- package/dist/observability/renderers/mmr-findings.d.ts.map +1 -0
- package/dist/observability/renderers/mmr-findings.js +21 -0
- package/dist/observability/renderers/mmr-findings.js.map +1 -0
- package/dist/observability/renderers/mmr-findings.test.d.ts +2 -0
- package/dist/observability/renderers/mmr-findings.test.d.ts.map +1 -0
- package/dist/observability/renderers/mmr-findings.test.js +86 -0
- package/dist/observability/renderers/mmr-findings.test.js.map +1 -0
- package/dist/observability/renderers/sidecar.d.ts +5 -0
- package/dist/observability/renderers/sidecar.d.ts.map +1 -0
- package/dist/observability/renderers/sidecar.js +51 -0
- package/dist/observability/renderers/sidecar.js.map +1 -0
- package/dist/observability/renderers/sidecar.test.d.ts +2 -0
- package/dist/observability/renderers/sidecar.test.d.ts.map +1 -0
- package/dist/observability/renderers/sidecar.test.js +77 -0
- package/dist/observability/renderers/sidecar.test.js.map +1 -0
- package/dist/observability/renderers/terminal.d.ts +7 -0
- package/dist/observability/renderers/terminal.d.ts.map +1 -0
- package/dist/observability/renderers/terminal.js +96 -0
- package/dist/observability/renderers/terminal.js.map +1 -0
- package/dist/observability/renderers/terminal.test.d.ts +2 -0
- package/dist/observability/renderers/terminal.test.d.ts.map +1 -0
- package/dist/observability/renderers/terminal.test.js +163 -0
- package/dist/observability/renderers/terminal.test.js.map +1 -0
- package/dist/project/adopt.d.ts.map +1 -1
- package/dist/project/adopt.js +3 -1
- package/dist/project/adopt.js.map +1 -1
- package/dist/project/detectors/coverage.test.js +3 -2
- package/dist/project/detectors/coverage.test.js.map +1 -1
- package/dist/project/detectors/disambiguate.js +1 -1
- package/dist/project/detectors/disambiguate.js.map +1 -1
- package/dist/project/detectors/index.d.ts.map +1 -1
- package/dist/project/detectors/index.js +2 -0
- package/dist/project/detectors/index.js.map +1 -1
- package/dist/project/detectors/resolve-detection.test.js +57 -0
- package/dist/project/detectors/resolve-detection.test.js.map +1 -1
- package/dist/project/detectors/types.d.ts +6 -2
- package/dist/project/detectors/types.d.ts.map +1 -1
- package/dist/project/detectors/types.js.map +1 -1
- package/dist/project/detectors/web3.d.ts +4 -0
- package/dist/project/detectors/web3.d.ts.map +1 -0
- package/dist/project/detectors/web3.js +37 -0
- package/dist/project/detectors/web3.js.map +1 -0
- package/dist/project/detectors/web3.test.d.ts +2 -0
- package/dist/project/detectors/web3.test.d.ts.map +1 -0
- package/dist/project/detectors/web3.test.js +75 -0
- package/dist/project/detectors/web3.test.js.map +1 -0
- package/dist/state/state-manager.d.ts +7 -2
- package/dist/state/state-manager.d.ts.map +1 -1
- package/dist/state/state-manager.js +31 -2
- package/dist/state/state-manager.js.map +1 -1
- package/dist/state/state-manager.test.js +88 -3
- package/dist/state/state-manager.test.js.map +1 -1
- package/dist/types/config.d.ts +8 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/state.d.ts +2 -0
- package/dist/types/state.d.ts.map +1 -1
- package/dist/wizard/copy/core.d.ts.map +1 -1
- package/dist/wizard/copy/core.js +4 -0
- package/dist/wizard/copy/core.js.map +1 -1
- package/dist/wizard/copy/index.d.ts.map +1 -1
- package/dist/wizard/copy/index.js +2 -0
- package/dist/wizard/copy/index.js.map +1 -1
- package/dist/wizard/copy/types.d.ts +5 -1
- package/dist/wizard/copy/types.d.ts.map +1 -1
- package/dist/wizard/copy/types.test-d.js +7 -0
- package/dist/wizard/copy/types.test-d.js.map +1 -1
- package/dist/wizard/copy/web3.d.ts +3 -0
- package/dist/wizard/copy/web3.d.ts.map +1 -0
- package/dist/wizard/copy/web3.js +15 -0
- package/dist/wizard/copy/web3.js.map +1 -0
- package/dist/wizard/questions.d.ts +2 -1
- package/dist/wizard/questions.d.ts.map +1 -1
- package/dist/wizard/questions.js +8 -1
- package/dist/wizard/questions.js.map +1 -1
- package/dist/wizard/questions.test.js +14 -0
- package/dist/wizard/questions.test.js.map +1 -1
- package/dist/wizard/wizard.d.ts.map +1 -1
- package/dist/wizard/wizard.js +1 -0
- package/dist/wizard/wizard.js.map +1 -1
- package/package.json +16 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { describe, it, expectTypeOf } from 'vitest';
|
|
2
|
+
describe('engine types', () => {
|
|
3
|
+
it('Verdict enum has exactly three values', () => {
|
|
4
|
+
expectTypeOf().toEqualTypeOf();
|
|
5
|
+
});
|
|
6
|
+
it('EventType enum has exactly eight values', () => {
|
|
7
|
+
expectTypeOf().toEqualTypeOf();
|
|
8
|
+
});
|
|
9
|
+
it('FindingsSummary.by_severity_status has all four severities', () => {
|
|
10
|
+
expectTypeOf().toMatchTypeOf();
|
|
11
|
+
});
|
|
12
|
+
it('EngineOutput has schema_version "1.0"', () => {
|
|
13
|
+
expectTypeOf().toEqualTypeOf();
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=types.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../../src/observability/engine/types.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAQnD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,YAAY,EAAW,CAAC,aAAa,EAAwC,CAAA;IAC/E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,YAAY,EAAa,CAAC,aAAa,EASpC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,YAAY,EAAyC,CAAC,aAAa,EAK/D,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,YAAY,EAAkC,CAAC,aAAa,EAAS,CAAA;IACvE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AdapterStatus, AvailabilityMap, Severity, Verdict, NeedsAttentionItem } from '../engine/types.js';
|
|
2
|
+
export declare function severityBadge(s: Severity): string;
|
|
3
|
+
export declare function verdictToken(v: Verdict): string;
|
|
4
|
+
export declare function adapterGlyph(s: AdapterStatus): string;
|
|
5
|
+
export declare function availabilityLine(a: AvailabilityMap): string;
|
|
6
|
+
export declare function needsAttentionLines(items: NeedsAttentionItem[]): string[];
|
|
7
|
+
//# sourceMappingURL=_lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_lib.d.ts","sourceRoot":"","sources":["../../../src/observability/renderers/_lib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE/G,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAEjD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAE/C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAErD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAK3D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,EAAE,CAUzE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function severityBadge(s) {
|
|
2
|
+
return { P0: 'P0', P1: 'P1', P2: 'P2', P3: 'P3' }[s];
|
|
3
|
+
}
|
|
4
|
+
export function verdictToken(v) {
|
|
5
|
+
return { pass: 'pass', 'degraded-pass': 'degraded-pass', blocked: 'blocked' }[v] ?? v;
|
|
6
|
+
}
|
|
7
|
+
export function adapterGlyph(s) {
|
|
8
|
+
return s.status === 'available' ? '✓' : s.status === 'degraded' ? '~' : '—';
|
|
9
|
+
}
|
|
10
|
+
export function availabilityLine(a) {
|
|
11
|
+
const ord = [
|
|
12
|
+
'git', 'gh', 'pipeline_docs', 'tests', 'state', 'beads', 'mmr', 'audit_history',
|
|
13
|
+
];
|
|
14
|
+
return ord.map((k) => `${k} ${adapterGlyph(a[k])}`).join(' · ');
|
|
15
|
+
}
|
|
16
|
+
export function needsAttentionLines(items) {
|
|
17
|
+
if (items.length === 0)
|
|
18
|
+
return [];
|
|
19
|
+
const lines = [`⚠ needs attention (${items.length})`];
|
|
20
|
+
for (const i of items) {
|
|
21
|
+
const ageStr = i.signal === 'lens_skipped_repeatedly'
|
|
22
|
+
? `${i.threshold_count ?? i.threshold_hours}× streak`
|
|
23
|
+
: `${i.age_hours}h`;
|
|
24
|
+
lines.push(` • ${i.summary} [${ageStr}]`);
|
|
25
|
+
}
|
|
26
|
+
return lines;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=_lib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_lib.js","sourceRoot":"","sources":["../../../src/observability/renderers/_lib.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,CAAW;IACvC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAU;IACrC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACvF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAgB;IAC3C,OAAO,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAkB;IACjD,MAAM,GAAG,GAA8B;QACrC,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe;KAChF,CAAA;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAkB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAA2B;IAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,MAAM,KAAK,GAAa,CAAC,sBAAsB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IAC/D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,yBAAyB;YACnD,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,UAAU;YACrD,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAA;QACrB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,MAAM,GAAG,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { EngineOutput, Verdict } from '../engine/types.js';
|
|
2
|
+
export declare function verdictToSeverityToken(v: Verdict): string;
|
|
3
|
+
export declare function renderProgressFragment(out: EngineOutput): string;
|
|
4
|
+
export declare function renderAuditFragment(out: EngineOutput): string;
|
|
5
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/observability/renderers/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAY,MAAM,oBAAoB,CAAA;AAGzE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAGzD;AAmCD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CA2BhE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CA2C7D"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { redactRendered } from '../engine/redact.js';
|
|
2
|
+
export function verdictToSeverityToken(v) {
|
|
3
|
+
const map = { blocked: '--sev-p0', 'degraded-pass': '--sev-p2', pass: '--sev-pass' };
|
|
4
|
+
return map[v];
|
|
5
|
+
}
|
|
6
|
+
function escape(s) {
|
|
7
|
+
return s
|
|
8
|
+
.replace(/&/g, '&')
|
|
9
|
+
.replace(/</g, '<')
|
|
10
|
+
.replace(/>/g, '>')
|
|
11
|
+
.replace(/"/g, '"')
|
|
12
|
+
.replace(/'/g, ''');
|
|
13
|
+
}
|
|
14
|
+
const SEVERITIES = ['P0', 'P1', 'P2', 'P3'];
|
|
15
|
+
function needsAttentionAside(out) {
|
|
16
|
+
if (out.needs_attention.length === 0)
|
|
17
|
+
return '';
|
|
18
|
+
const items = out.needs_attention.map((i) => {
|
|
19
|
+
const ageStr = i.signal === 'lens_skipped_repeatedly'
|
|
20
|
+
? `${i.threshold_count ?? i.threshold_hours}× streak`
|
|
21
|
+
: `${i.age_hours}h`;
|
|
22
|
+
return `<li><code>${escape(i.signal)}</code> ${escape(i.summary)} <span class="age">[${ageStr}]</span></li>`;
|
|
23
|
+
}).join('');
|
|
24
|
+
return `<aside class="needs-attention"><h3>Needs Attention</h3><ul>${items}</ul></aside>`;
|
|
25
|
+
}
|
|
26
|
+
function timelineDetails(out) {
|
|
27
|
+
if (!out.replay || out.replay.events.length === 0)
|
|
28
|
+
return '';
|
|
29
|
+
const rows = out.replay.events.slice(0, 100).map((e) => `<tr><td>${escape(e.ts)}</td><td>${escape(e.source)}</td><td>${escape(e.kind)}</td>` +
|
|
30
|
+
`<td>${escape(e.summary)}</td></tr>`).join('');
|
|
31
|
+
return `<details class="timeline"><summary>Timeline (${out.replay.events.length} events)</summary>` +
|
|
32
|
+
'<table><thead><tr><th>Time</th><th>Source</th><th>Kind</th><th>Summary</th></tr></thead>' +
|
|
33
|
+
`<tbody>${rows}</tbody></table></details>`;
|
|
34
|
+
}
|
|
35
|
+
export function renderProgressFragment(out) {
|
|
36
|
+
const snap = out.snapshot;
|
|
37
|
+
const agents = (snap?.active_agents ?? []).map((a) => {
|
|
38
|
+
const task = a.current_task
|
|
39
|
+
? `${escape(a.current_task.id ?? '(unplanned)')} — ${escape(a.current_task.title)}`
|
|
40
|
+
: '<em>idle</em>';
|
|
41
|
+
return `<li><code>${escape(a.actor_label)}</code> · ${escape(a.branch)} · ${task}</li>`;
|
|
42
|
+
}).join('') || '<li><em>none</em></li>';
|
|
43
|
+
const decisions = (snap?.recent_decisions ?? []).slice(0, 5).map((d) => `<li><code>${escape(d.key)}</code>: ${escape(d.summary)}</li>`).join('') || '<li><em>none</em></li>';
|
|
44
|
+
const sinceHours = Number(out.invocation.args.sinceHours ?? 24);
|
|
45
|
+
const fragment = `<section id="build-progress" class="panel">
|
|
46
|
+
<header>
|
|
47
|
+
<h2>Build Progress</h2>
|
|
48
|
+
<span class="meta">last ${sinceHours}h · phase: ${escape(snap?.current_phase ?? '(unknown)')}</span>
|
|
49
|
+
</header>
|
|
50
|
+
${needsAttentionAside(out)}
|
|
51
|
+
<div class="grid grid-2">
|
|
52
|
+
<div class="card"><h3>Active Agents</h3><ul>${agents}</ul></div>
|
|
53
|
+
<div class="card"><h3>Recent Decisions</h3><ul>${decisions}</ul></div>
|
|
54
|
+
</div>
|
|
55
|
+
${timelineDetails(out)}
|
|
56
|
+
</section>`;
|
|
57
|
+
return redactRendered(fragment);
|
|
58
|
+
}
|
|
59
|
+
export function renderAuditFragment(out) {
|
|
60
|
+
const args = out.invocation.args;
|
|
61
|
+
const findings = out.findings.filter((f) => f.status !== 'skipped' && f.status !== 'acknowledged');
|
|
62
|
+
const threshIdx = SEVERITIES.indexOf(out.fix_threshold);
|
|
63
|
+
const filterButtons = ['all', 'blocking', ...SEVERITIES].map((f) => {
|
|
64
|
+
const count = f === 'all' ? findings.length
|
|
65
|
+
: f === 'blocking' ? findings.filter((fi) => SEVERITIES.indexOf(fi.severity) <= threshIdx).length
|
|
66
|
+
: findings.filter((fi) => fi.severity === f).length;
|
|
67
|
+
return `<button data-filter="${escape(String(f))}">${escape(String(f))} (${count})</button>`;
|
|
68
|
+
}).join(' ');
|
|
69
|
+
const findingItems = findings.length === 0
|
|
70
|
+
? '<p class="empty">No findings.</p>'
|
|
71
|
+
: `<ol class="findings">${findings.map((f) => {
|
|
72
|
+
const idShort = escape(f.id.slice(0, 8));
|
|
73
|
+
const sevCls = `severity-${escape(f.severity)}`;
|
|
74
|
+
return `<li class="finding ${sevCls}" data-status="${escape(f.status)}" data-severity="${escape(f.severity)}">
|
|
75
|
+
<header>
|
|
76
|
+
<span class="badge" style="color: var(--sev-${f.severity.toLowerCase()})">${escape(f.severity)}</span>
|
|
77
|
+
<code class="finding-id" title="run scaffold observe ack ${idShort} to acknowledge">${idShort}</code>
|
|
78
|
+
<span class="lens">[${escape(f.lens_id)}]</span>
|
|
79
|
+
<span class="title">${escape(f.title)}</span>
|
|
80
|
+
</header>
|
|
81
|
+
<p>${escape(f.description)}</p>
|
|
82
|
+
</li>`;
|
|
83
|
+
}).join('')}</ol>`;
|
|
84
|
+
const verdictToken = verdictToSeverityToken(out.verdict);
|
|
85
|
+
const metaText = `${out.summary.blocking} blocking · threshold ${escape(out.fix_threshold)}` +
|
|
86
|
+
` · profile=${escape(args.profile ?? '?')} scope=${escape(args.scope ?? '?')}`;
|
|
87
|
+
const fragment = '<section id="build-audit" class="panel"' +
|
|
88
|
+
` data-verdict="${escape(out.verdict)}" data-threshold="${escape(out.fix_threshold)}"` +
|
|
89
|
+
` style="--verdict-color: var(${verdictToken})">
|
|
90
|
+
<header>
|
|
91
|
+
<h2>Audit</h2>
|
|
92
|
+
<span class="badge" style="color: var(${verdictToken})">${escape(out.verdict)}</span>
|
|
93
|
+
<span class="meta">${metaText}</span>
|
|
94
|
+
</header>
|
|
95
|
+
<div class="finding-filters">${filterButtons}</div>
|
|
96
|
+
${findingItems}
|
|
97
|
+
</section>`;
|
|
98
|
+
return redactRendered(fragment);
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/observability/renderers/dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.test.d.ts","sourceRoot":"","sources":["../../../src/observability/renderers/dashboard.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { renderProgressFragment, renderAuditFragment, verdictToSeverityToken } from './dashboard.js';
|
|
3
|
+
const baseOut = {
|
|
4
|
+
schema_version: '1.0',
|
|
5
|
+
invocation: {
|
|
6
|
+
command: 'progress', args: { sinceHours: 24 },
|
|
7
|
+
started_at: '2026-05-04T14:00:00Z', completed_at: '2026-05-04T14:00:01Z', scaffold_version: '3.25.1',
|
|
8
|
+
},
|
|
9
|
+
availability: {
|
|
10
|
+
git: { status: 'available' }, gh: { status: 'unavailable' },
|
|
11
|
+
pipeline_docs: { status: 'available' }, tests: { status: 'available' },
|
|
12
|
+
state: { status: 'available' }, beads: { status: 'unavailable' },
|
|
13
|
+
mmr: { status: 'available' }, audit_history: { status: 'unavailable' },
|
|
14
|
+
ledger: { events_read: 4, malformed_lines: 0, sources: [{ worktree_id: 'wid-a', events: 4 }] },
|
|
15
|
+
},
|
|
16
|
+
snapshot: {
|
|
17
|
+
current_phase: 'build',
|
|
18
|
+
active_agents: [{
|
|
19
|
+
worktree_id: 'wid-a', actor_label: 'agent-alice', branch: 'feat-auth',
|
|
20
|
+
current_task: { id: 'T-031', title: 'refresh token rotation', claimed_at: '2026-05-04T13:55:00Z' },
|
|
21
|
+
open_pr: null,
|
|
22
|
+
}],
|
|
23
|
+
completed_in_window: [], in_flight: [], blocked: [], upcoming: [],
|
|
24
|
+
recent_decisions: [{
|
|
25
|
+
decision_id: 'decision:foo', key: 'foo', summary: 'bar',
|
|
26
|
+
recorded_at: '2026-05-04T13:00:00Z', affects: [],
|
|
27
|
+
}],
|
|
28
|
+
story_coverage: [],
|
|
29
|
+
},
|
|
30
|
+
replay: null, findings: [], needs_attention: [],
|
|
31
|
+
graph_stats: {
|
|
32
|
+
nodes_by_kind: {}, edges_by_kind: {}, orphans_by_kind: {}, unsanctioned_uses: 0, ad_hoc_token_uses: 0,
|
|
33
|
+
},
|
|
34
|
+
fix_threshold: 'P2', verdict: 'pass',
|
|
35
|
+
summary: {
|
|
36
|
+
total: 0, by_severity: { P0: 0, P1: 0, P2: 0, P3: 0 },
|
|
37
|
+
by_severity_status: {
|
|
38
|
+
P0: { open: 0, acknowledged: 0, skipped: 0 }, P1: { open: 0, acknowledged: 0, skipped: 0 },
|
|
39
|
+
P2: { open: 0, acknowledged: 0, skipped: 0 }, P3: { open: 0, acknowledged: 0, skipped: 0 },
|
|
40
|
+
},
|
|
41
|
+
blocking: 0, acknowledged: 0, skipped_lenses: 0,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
describe('verdictToSeverityToken', () => {
|
|
45
|
+
it('maps blocked to --sev-p0', () => { expect(verdictToSeverityToken('blocked')).toBe('--sev-p0'); });
|
|
46
|
+
it('maps degraded-pass to --sev-p2', () => { expect(verdictToSeverityToken('degraded-pass')).toBe('--sev-p2'); });
|
|
47
|
+
it('maps pass to --sev-pass', () => { expect(verdictToSeverityToken('pass')).toBe('--sev-pass'); });
|
|
48
|
+
});
|
|
49
|
+
describe('renderProgressFragment', () => {
|
|
50
|
+
it('emits a self-contained <section id="build-progress"> with active-agents data', () => {
|
|
51
|
+
const html = renderProgressFragment(baseOut);
|
|
52
|
+
expect(html).toMatch(/<section id="build-progress"/);
|
|
53
|
+
expect(html).toContain('agent-alice');
|
|
54
|
+
expect(html).toContain('T-031');
|
|
55
|
+
expect(html).toContain('refresh token rotation');
|
|
56
|
+
});
|
|
57
|
+
it('reflects sinceHours from invocation args in the meta span', () => {
|
|
58
|
+
const out = JSON.parse(JSON.stringify(baseOut));
|
|
59
|
+
out.invocation.args = { sinceHours: 48 };
|
|
60
|
+
const html = renderProgressFragment(out);
|
|
61
|
+
expect(html).toContain('last 48h');
|
|
62
|
+
});
|
|
63
|
+
it('escapes HTML special characters in user-controlled fields', () => {
|
|
64
|
+
const tainted = JSON.parse(JSON.stringify(baseOut));
|
|
65
|
+
tainted.snapshot.active_agents[0].current_task.title = 'evil <script>alert(1)</script>';
|
|
66
|
+
const html = renderProgressFragment(tainted);
|
|
67
|
+
expect(html).not.toContain('<script>alert(1)</script>');
|
|
68
|
+
expect(html).toContain('<script>');
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe('renderAuditFragment', () => {
|
|
72
|
+
const auditOut = { ...baseOut,
|
|
73
|
+
invocation: { ...baseOut.invocation, command: 'audit', args: { profile: 'fast', scope: 'all' } },
|
|
74
|
+
snapshot: null, verdict: 'blocked', fix_threshold: 'P1',
|
|
75
|
+
findings: [
|
|
76
|
+
{ id: '3a8c1f02aabbccdd', lens_id: 'B-ac-coverage', severity: 'P0',
|
|
77
|
+
title: 'AC failing', description: 'd', source_doc: 'docs/user-stories.md#s-1',
|
|
78
|
+
evidence: { kind: 'rule_violation', rule_id: 'r', file: 'f' },
|
|
79
|
+
confidence: 'high', first_seen: '', last_seen: '', status: 'open' },
|
|
80
|
+
],
|
|
81
|
+
summary: {
|
|
82
|
+
total: 1, by_severity: { P0: 1, P1: 0, P2: 0, P3: 0 },
|
|
83
|
+
by_severity_status: {
|
|
84
|
+
P0: { open: 1, acknowledged: 0, skipped: 0 }, P1: { open: 0, acknowledged: 0, skipped: 0 },
|
|
85
|
+
P2: { open: 0, acknowledged: 0, skipped: 0 }, P3: { open: 0, acknowledged: 0, skipped: 0 },
|
|
86
|
+
},
|
|
87
|
+
blocking: 1, acknowledged: 0, skipped_lenses: 0,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
it('emits a self-contained <section id="build-audit"> with verdict + finding data', () => {
|
|
91
|
+
const html = renderAuditFragment(auditOut);
|
|
92
|
+
expect(html).toMatch(/<section id="build-audit"/);
|
|
93
|
+
expect(html).toContain('blocked');
|
|
94
|
+
expect(html).toContain('B-ac-coverage');
|
|
95
|
+
expect(html).toContain('3a8c1f02');
|
|
96
|
+
expect(html).toContain('data-verdict="blocked"');
|
|
97
|
+
});
|
|
98
|
+
it('excludes acknowledged findings from visible list and filter counts', () => {
|
|
99
|
+
const out = { ...auditOut,
|
|
100
|
+
findings: [
|
|
101
|
+
...auditOut.findings,
|
|
102
|
+
{ id: 'aaaaaaaaaaaaaaaa', lens_id: 'B-ac-coverage', severity: 'P1',
|
|
103
|
+
title: 'acked', description: 'd', source_doc: 'docs/user-stories.md#s-1',
|
|
104
|
+
evidence: { kind: 'rule_violation', rule_id: 'r', file: 'f' },
|
|
105
|
+
confidence: 'high', first_seen: '', last_seen: '', status: 'acknowledged' },
|
|
106
|
+
],
|
|
107
|
+
summary: { ...auditOut.summary, total: 2, acknowledged: 1, by_severity: { P0: 1, P1: 1, P2: 0, P3: 0 } },
|
|
108
|
+
};
|
|
109
|
+
const html = renderAuditFragment(out);
|
|
110
|
+
expect(html).not.toContain('aaaaaaaaaa');
|
|
111
|
+
expect(html).toContain('all (1)');
|
|
112
|
+
});
|
|
113
|
+
it('renders empty-state when no findings', () => {
|
|
114
|
+
const out = { ...auditOut, findings: [], verdict: 'pass',
|
|
115
|
+
summary: { ...auditOut.summary, total: 0, blocking: 0, by_severity: { P0: 0, P1: 0, P2: 0, P3: 0 } } };
|
|
116
|
+
const html = renderAuditFragment(out);
|
|
117
|
+
expect(html).toMatch(/no findings/i);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
describe('renderProgressFragment — needs_attention + replay', () => {
|
|
121
|
+
it('renders a needs-attention aside when needs_attention is non-empty', () => {
|
|
122
|
+
const out = JSON.parse(JSON.stringify(baseOut));
|
|
123
|
+
out.needs_attention = [{ signal: 'pr_stale', ref: { kind: 'pr', id: '42' },
|
|
124
|
+
age_hours: 67, threshold_hours: 48, summary: 'PR #42 opened 67h ago, not merged or closed' }];
|
|
125
|
+
const html = renderProgressFragment(out);
|
|
126
|
+
expect(html).toMatch(/needs-attention/);
|
|
127
|
+
expect(html).toContain('pr_stale');
|
|
128
|
+
expect(html).toContain('PR #42');
|
|
129
|
+
});
|
|
130
|
+
it('renders a timeline details element when replay is populated', () => {
|
|
131
|
+
const out = JSON.parse(JSON.stringify(baseOut));
|
|
132
|
+
out.replay = { window: { from: '2026-05-04T13:00:00Z', to: '2026-05-04T14:00:00Z' },
|
|
133
|
+
events: [{ sort_id: 'ledger:ulid-A', correlation_id: null, ts: '2026-05-04T13:55:00Z',
|
|
134
|
+
source: 'ledger', kind: 'task_claimed', actor_label: 'agent-alice',
|
|
135
|
+
task_id: 'T-031', summary: 'T-031 claimed' }] };
|
|
136
|
+
const html = renderProgressFragment(out);
|
|
137
|
+
expect(html).toMatch(/timeline/);
|
|
138
|
+
expect(html).toContain('task_claimed');
|
|
139
|
+
expect(html).toContain('T-031 claimed');
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
//# sourceMappingURL=dashboard.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.test.js","sourceRoot":"","sources":["../../../src/observability/renderers/dashboard.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/observability/renderers/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA+D,MAAM,oBAAoB,CAAA;AAmHnH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAoBhE;AAsFD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAiB7D"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { redactRendered, sanitizePath } from '../engine/redact.js';
|
|
2
|
+
function mdEscape(s) {
|
|
3
|
+
return s.replace(/</g, '<').replace(/>/g, '>').replace(/\|/g, '\\|')
|
|
4
|
+
.replace(/\*/g, '\\*').replace(/_/g, '\\_').replace(/`/g, '\\`');
|
|
5
|
+
}
|
|
6
|
+
function fmtDate(iso) {
|
|
7
|
+
const d = new Date(iso);
|
|
8
|
+
if (isNaN(d.valueOf()))
|
|
9
|
+
return iso;
|
|
10
|
+
return d.toISOString().replace('T', ' ').replace(/\.\d+Z$/, ' UTC');
|
|
11
|
+
}
|
|
12
|
+
function header(out, kind) {
|
|
13
|
+
const lines = [
|
|
14
|
+
`# Build Observability — ${kind}`,
|
|
15
|
+
'',
|
|
16
|
+
`**Generated:** ${fmtDate(out.invocation.started_at)}`,
|
|
17
|
+
`**Scaffold version:** ${out.invocation.scaffold_version}`,
|
|
18
|
+
];
|
|
19
|
+
return lines.join('\n');
|
|
20
|
+
}
|
|
21
|
+
function availabilityTable(a) {
|
|
22
|
+
const ord = [
|
|
23
|
+
'git', 'gh', 'pipeline_docs', 'tests', 'state', 'beads', 'mmr', 'audit_history',
|
|
24
|
+
];
|
|
25
|
+
const rows = ord.map((k) => {
|
|
26
|
+
const s = a[k];
|
|
27
|
+
const reason = s.reason ? sanitizePath(s.reason) : '';
|
|
28
|
+
return `| ${k} | ${s.status} | ${reason} |`;
|
|
29
|
+
});
|
|
30
|
+
return ['## Availability', '', '| Adapter | Status | Reason / Notes |', '|---|---|---|', ...rows].join('\n');
|
|
31
|
+
}
|
|
32
|
+
function ledgerSummary(a) {
|
|
33
|
+
const lines = [
|
|
34
|
+
'## Ledger',
|
|
35
|
+
'',
|
|
36
|
+
`- Events read: ${a.ledger.events_read}`,
|
|
37
|
+
`- Malformed lines: ${a.ledger.malformed_lines}`,
|
|
38
|
+
'- Sources:',
|
|
39
|
+
...a.ledger.sources.map((s) => {
|
|
40
|
+
const harvested = s.harvested_at ? ` (harvested ${fmtDate(s.harvested_at)})` : '';
|
|
41
|
+
return ` - \`${s.worktree_id}\` — ${s.events} events${harvested}`;
|
|
42
|
+
}),
|
|
43
|
+
];
|
|
44
|
+
return lines.join('\n');
|
|
45
|
+
}
|
|
46
|
+
function activeAgentsSection(out) {
|
|
47
|
+
const ag = out.snapshot?.active_agents ?? [];
|
|
48
|
+
if (ag.length === 0)
|
|
49
|
+
return '';
|
|
50
|
+
const rows = ag.map((a) => {
|
|
51
|
+
const taskStr = a.current_task
|
|
52
|
+
? `${mdEscape(a.current_task.id ?? '(unplanned)')} — ${mdEscape(a.current_task.title)}`
|
|
53
|
+
: 'idle';
|
|
54
|
+
const pr = a.open_pr ? ` (PR #${a.open_pr.number})` : '';
|
|
55
|
+
return `| ${mdEscape(a.actor_label)} | ${mdEscape(a.branch)} | ${taskStr}${pr} |`;
|
|
56
|
+
});
|
|
57
|
+
return ['## Active Agents', '', '| Actor | Branch | Current Task |', '|---|---|---|', ...rows].join('\n');
|
|
58
|
+
}
|
|
59
|
+
function completedSection(out) {
|
|
60
|
+
const cs = out.snapshot?.completed_in_window ?? [];
|
|
61
|
+
if (cs.length === 0)
|
|
62
|
+
return '';
|
|
63
|
+
const rows = cs.map((c) => {
|
|
64
|
+
const pr = c.pr_number ? `PR #${c.pr_number}` : '—';
|
|
65
|
+
const tid = mdEscape(c.task_id ?? '(unplanned)');
|
|
66
|
+
return `| ${tid} | ${mdEscape(c.task_title)} | ${mdEscape(c.outcome)} | ${pr} | ${mdEscape(c.by)} |`;
|
|
67
|
+
});
|
|
68
|
+
return [
|
|
69
|
+
'## Completed in Window', '', '| Task | Title | Outcome | PR | By |', '|---|---|---|---|---|', ...rows,
|
|
70
|
+
].join('\n');
|
|
71
|
+
}
|
|
72
|
+
function inFlightSection(out) {
|
|
73
|
+
const ts = out.snapshot?.in_flight ?? [];
|
|
74
|
+
if (ts.length === 0)
|
|
75
|
+
return '';
|
|
76
|
+
const rows = ts.map((t) => `| ${mdEscape(t.task_id ?? '(unplanned)')} | ${mdEscape(t.task_title)}` +
|
|
77
|
+
` | ${mdEscape(t.by)} | ${t.age_hours}h | ${mdEscape(t.branch)} |`);
|
|
78
|
+
return ['## In Flight', '', '| Task | Title | By | Age | Branch |', '|---|---|---|---|---|', ...rows].join('\n');
|
|
79
|
+
}
|
|
80
|
+
function decisionsSection(out) {
|
|
81
|
+
const ds = out.snapshot?.recent_decisions ?? [];
|
|
82
|
+
if (ds.length === 0)
|
|
83
|
+
return '';
|
|
84
|
+
const rows = ds.slice(0, 10).map((d) => {
|
|
85
|
+
const affects = d.affects.length > 0 ? mdEscape(d.affects.join(', ')) : '—';
|
|
86
|
+
return `| \`${mdEscape(d.key)}\` | ${mdEscape(d.summary)} | ${fmtDate(d.recorded_at)} | ${affects} |`;
|
|
87
|
+
});
|
|
88
|
+
return ['## Recent Decisions', '', '| Key | Summary | Recorded | Affects |', '|---|---|---|---|', ...rows].join('\n');
|
|
89
|
+
}
|
|
90
|
+
function needsAttentionSection(out) {
|
|
91
|
+
if (out.needs_attention.length === 0)
|
|
92
|
+
return '';
|
|
93
|
+
const rows = out.needs_attention.map((i) => {
|
|
94
|
+
const ageStr = i.signal === 'lens_skipped_repeatedly'
|
|
95
|
+
? `${i.threshold_count ?? i.threshold_hours}× streak`
|
|
96
|
+
: `${i.age_hours}h`;
|
|
97
|
+
return `| ${i.signal} | ${mdEscape(i.summary)} | ${ageStr} |`;
|
|
98
|
+
});
|
|
99
|
+
return ['## Needs Attention', '', '| Signal | Item | Age |', '|---|---|---|', ...rows].join('\n');
|
|
100
|
+
}
|
|
101
|
+
function timelineSection(out) {
|
|
102
|
+
if (!out.replay || out.replay.events.length === 0)
|
|
103
|
+
return '';
|
|
104
|
+
const rows = out.replay.events.slice(0, 100).map((e) => `| ${e.ts} | ${e.source} | ${e.kind} | ${mdEscape(e.summary)} |`);
|
|
105
|
+
return ['## Timeline', '', `Window: ${out.replay.window.from} – ${out.replay.window.to}`, '',
|
|
106
|
+
'| Time | Source | Kind | Summary |', '|---|---|---|---|', ...rows].join('\n');
|
|
107
|
+
}
|
|
108
|
+
export function renderProgressMarkdown(out) {
|
|
109
|
+
const sinceHours = Number(out.invocation.args.sinceHours ?? 24);
|
|
110
|
+
const windowEnd = fmtDate(out.invocation.started_at);
|
|
111
|
+
const sections = [
|
|
112
|
+
header(out, 'Progress'),
|
|
113
|
+
'',
|
|
114
|
+
`**Window:** last ${sinceHours} hours (ending ${windowEnd})`,
|
|
115
|
+
`**Phase:** ${out.snapshot?.current_phase ?? '(unknown)'}`,
|
|
116
|
+
'',
|
|
117
|
+
needsAttentionSection(out),
|
|
118
|
+
activeAgentsSection(out),
|
|
119
|
+
inFlightSection(out),
|
|
120
|
+
completedSection(out),
|
|
121
|
+
decisionsSection(out),
|
|
122
|
+
timelineSection(out),
|
|
123
|
+
availabilityTable(out.availability),
|
|
124
|
+
'',
|
|
125
|
+
ledgerSummary(out.availability),
|
|
126
|
+
].filter(Boolean);
|
|
127
|
+
return redactRendered(sections.join('\n\n')) + '\n';
|
|
128
|
+
}
|
|
129
|
+
const SEVERITIES = ['P0', 'P1', 'P2', 'P3'];
|
|
130
|
+
function summaryTable(out) {
|
|
131
|
+
const rows = SEVERITIES.map((s) => {
|
|
132
|
+
const total = out.summary.by_severity[s];
|
|
133
|
+
const stat = out.summary.by_severity_status[s];
|
|
134
|
+
const visible = stat.open;
|
|
135
|
+
return `| ${s} | ${total} | ${visible} | ${stat.acknowledged} |`;
|
|
136
|
+
});
|
|
137
|
+
const hdr = [
|
|
138
|
+
'## Summary',
|
|
139
|
+
'',
|
|
140
|
+
`${out.summary.total} findings · ${out.summary.blocking} blocking` +
|
|
141
|
+
` (severity at or above ${out.fix_threshold}) · ${out.summary.acknowledged} acknowledged` +
|
|
142
|
+
` · ${out.summary.skipped_lenses} skipped lenses.`,
|
|
143
|
+
'',
|
|
144
|
+
'| Severity | Total | Visible | Acknowledged |',
|
|
145
|
+
'|---|---|---|---|',
|
|
146
|
+
...rows,
|
|
147
|
+
];
|
|
148
|
+
return hdr.join('\n');
|
|
149
|
+
}
|
|
150
|
+
function renderEvidence(ev) {
|
|
151
|
+
if (ev.kind === 'doc_disagreement') {
|
|
152
|
+
const docs = `\`${mdEscape(ev.left_doc)}\` ↔ \`${mdEscape(ev.right_doc)}\``;
|
|
153
|
+
return `*Documents:* ${docs}\n\n*Conflict:* ${mdEscape(ev.conflict)}`;
|
|
154
|
+
}
|
|
155
|
+
return `\`\`\`\`json\n${JSON.stringify(ev, null, 2)}\n\`\`\`\``;
|
|
156
|
+
}
|
|
157
|
+
function findingSection(f) {
|
|
158
|
+
const idShort = f.id.slice(0, 8);
|
|
159
|
+
const lines = [
|
|
160
|
+
`### [${f.severity}] ${mdEscape(f.lens_id)} — ${mdEscape(f.title)}`,
|
|
161
|
+
'',
|
|
162
|
+
`\`${idShort}\` · *source:* \`${mdEscape(f.source_doc || '—')}\` · *confidence:* ${f.confidence}`,
|
|
163
|
+
'',
|
|
164
|
+
mdEscape(f.description),
|
|
165
|
+
'',
|
|
166
|
+
'**Evidence:**',
|
|
167
|
+
'',
|
|
168
|
+
renderEvidence(f.evidence),
|
|
169
|
+
];
|
|
170
|
+
if (f.fix_hint) {
|
|
171
|
+
lines.push('', '**Fix hint:**', '', '````json', JSON.stringify(f.fix_hint, null, 2), '````');
|
|
172
|
+
}
|
|
173
|
+
return lines.join('\n');
|
|
174
|
+
}
|
|
175
|
+
function findingsSection(out) {
|
|
176
|
+
const visible = out.findings.filter((f) => f.status !== 'acknowledged' && f.status !== 'skipped');
|
|
177
|
+
if (visible.length === 0)
|
|
178
|
+
return '## Findings\n\nNo open findings.';
|
|
179
|
+
const grouped = ['## Findings'];
|
|
180
|
+
for (const sev of SEVERITIES) {
|
|
181
|
+
const inSev = visible.filter((f) => f.severity === sev);
|
|
182
|
+
if (inSev.length === 0)
|
|
183
|
+
continue;
|
|
184
|
+
grouped.push('', `### Severity ${sev} (${inSev.length})`, '');
|
|
185
|
+
for (const f of inSev)
|
|
186
|
+
grouped.push(findingSection(f), '');
|
|
187
|
+
}
|
|
188
|
+
return grouped.join('\n');
|
|
189
|
+
}
|
|
190
|
+
function acknowledgedSection(out) {
|
|
191
|
+
const acks = out.findings.filter((f) => f.status === 'acknowledged');
|
|
192
|
+
if (acks.length === 0)
|
|
193
|
+
return '';
|
|
194
|
+
const rows = acks.map((f) => `| \`${f.id.slice(0, 8)}\` | ${f.severity} | ${mdEscape(f.lens_id)}` +
|
|
195
|
+
` | ${mdEscape(f.title)} | ${mdEscape(f.ack_note ?? '')} |`);
|
|
196
|
+
return [
|
|
197
|
+
'## Acknowledged', '', '| ID | Severity | Lens | Title | Note |', '|---|---|---|---|---|', ...rows,
|
|
198
|
+
].join('\n');
|
|
199
|
+
}
|
|
200
|
+
function skippedSection(out) {
|
|
201
|
+
const skipped = out.findings.filter((f) => f.status === 'skipped');
|
|
202
|
+
if (skipped.length === 0)
|
|
203
|
+
return '';
|
|
204
|
+
const rows = skipped.map((f) => `| ${mdEscape(f.lens_id)} | ${mdEscape(f.evidence.reason ?? '—')} |`);
|
|
205
|
+
return ['## Skipped Lenses', '', '| Lens | Reason |', '|---|---|', ...rows].join('\n');
|
|
206
|
+
}
|
|
207
|
+
export function renderAuditMarkdown(out) {
|
|
208
|
+
const args = out.invocation.args;
|
|
209
|
+
const sections = [
|
|
210
|
+
header(out, 'Audit'),
|
|
211
|
+
'',
|
|
212
|
+
`**Verdict:** ${out.verdict}`,
|
|
213
|
+
`**Profile:** ${args.profile ?? '?'}`,
|
|
214
|
+
`**Scope:** ${args.scope ?? '?'}`,
|
|
215
|
+
`**Fix threshold:** ${out.fix_threshold}`,
|
|
216
|
+
'',
|
|
217
|
+
summaryTable(out),
|
|
218
|
+
findingsSection(out),
|
|
219
|
+
acknowledgedSection(out),
|
|
220
|
+
skippedSection(out),
|
|
221
|
+
availabilityTable(out.availability),
|
|
222
|
+
].filter(Boolean);
|
|
223
|
+
return redactRendered(sections.join('\n\n')) + '\n';
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/observability/renderers/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.test.d.ts","sourceRoot":"","sources":["../../../src/observability/renderers/markdown.test.ts"],"names":[],"mappings":""}
|