forgecraft-mcp 1.4.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +67 -0
- package/README.md +527 -525
- package/dist/analyzers/anchors/anchor-loader.d.ts +47 -0
- package/dist/analyzers/anchors/anchor-loader.d.ts.map +1 -0
- package/dist/analyzers/anchors/anchor-loader.js +113 -0
- package/dist/analyzers/anchors/anchor-loader.js.map +1 -0
- package/dist/analyzers/anti-pattern.d.ts.map +1 -1
- package/dist/analyzers/anti-pattern.js +38 -26
- package/dist/analyzers/anti-pattern.js.map +1 -1
- package/dist/analyzers/completeness-helpers.d.ts +5 -0
- package/dist/analyzers/completeness-helpers.d.ts.map +1 -1
- package/dist/analyzers/completeness-helpers.js +17 -0
- package/dist/analyzers/completeness-helpers.js.map +1 -1
- package/dist/analyzers/completeness.d.ts.map +1 -1
- package/dist/analyzers/completeness.js +4 -4
- package/dist/analyzers/completeness.js.map +1 -1
- package/dist/analyzers/gs-scorer.d.ts +3 -1
- package/dist/analyzers/gs-scorer.d.ts.map +1 -1
- package/dist/analyzers/gs-scorer.js +5 -2
- package/dist/analyzers/gs-scorer.js.map +1 -1
- package/dist/analyzers/package-json.d.ts.map +1 -1
- package/dist/analyzers/package-json.js +194 -34
- package/dist/analyzers/package-json.js.map +1 -1
- package/dist/analyzers/scorers/composable-scorer.d.ts +4 -2
- package/dist/analyzers/scorers/composable-scorer.d.ts.map +1 -1
- package/dist/analyzers/scorers/composable-scorer.js +50 -2
- package/dist/analyzers/scorers/composable-scorer.js.map +1 -1
- package/dist/analyzers/scorers/executable-scorer.d.ts +3 -2
- package/dist/analyzers/scorers/executable-scorer.d.ts.map +1 -1
- package/dist/analyzers/scorers/executable-scorer.js +64 -4
- package/dist/analyzers/scorers/executable-scorer.js.map +1 -1
- package/dist/analyzers/scorers/scorer-utils.d.ts +5 -3
- package/dist/analyzers/scorers/scorer-utils.d.ts.map +1 -1
- package/dist/analyzers/scorers/scorer-utils.js +34 -9
- package/dist/analyzers/scorers/scorer-utils.js.map +1 -1
- package/dist/analyzers/scorers/self-describing-scorer.d.ts +7 -4
- package/dist/analyzers/scorers/self-describing-scorer.d.ts.map +1 -1
- package/dist/analyzers/scorers/self-describing-scorer.js +17 -18
- package/dist/analyzers/scorers/self-describing-scorer.js.map +1 -1
- package/dist/cli/help.js +51 -51
- package/dist/disciplines/catalog.d.ts +16 -0
- package/dist/disciplines/catalog.d.ts.map +1 -0
- package/dist/disciplines/catalog.js +196 -0
- package/dist/disciplines/catalog.js.map +1 -0
- package/dist/disciplines/runner.d.ts +13 -0
- package/dist/disciplines/runner.d.ts.map +1 -0
- package/dist/disciplines/runner.js +35 -0
- package/dist/disciplines/runner.js.map +1 -0
- package/dist/registry/composer.d.ts.map +1 -1
- package/dist/registry/composer.js +9 -4
- package/dist/registry/composer.js.map +1 -1
- package/dist/registry/loader-tag.d.ts.map +1 -1
- package/dist/registry/loader-tag.js +1 -0
- package/dist/registry/loader-tag.js.map +1 -1
- package/dist/registry/remote-gates.js +1 -1
- package/dist/registry/remote-gates.js.map +1 -1
- package/dist/registry/renderer-skeletons.js +92 -92
- package/dist/registry/sentinel-renderer.js +299 -20
- package/dist/registry/sentinel-renderer.js.map +1 -1
- package/dist/sentinel/detect.d.ts +41 -0
- package/dist/sentinel/detect.d.ts.map +1 -0
- package/dist/sentinel/detect.js +122 -0
- package/dist/sentinel/detect.js.map +1 -0
- package/dist/sentinel/write.d.ts +54 -0
- package/dist/sentinel/write.d.ts.map +1 -0
- package/dist/sentinel/write.js +75 -0
- package/dist/sentinel/write.js.map +1 -0
- package/dist/shared/cnt-health.d.ts +16 -0
- package/dist/shared/cnt-health.d.ts.map +1 -1
- package/dist/shared/cnt-health.js +55 -8
- package/dist/shared/cnt-health.js.map +1 -1
- package/dist/shared/config.d.ts +14 -0
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +45 -0
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/gs-score-logger.js +6 -6
- package/dist/shared/hook-installer.d.ts +58 -0
- package/dist/shared/hook-installer.d.ts.map +1 -0
- package/dist/shared/hook-installer.js +316 -0
- package/dist/shared/hook-installer.js.map +1 -0
- package/dist/shared/project-gates-helpers.d.ts +9 -0
- package/dist/shared/project-gates-helpers.d.ts.map +1 -1
- package/dist/shared/project-gates-helpers.js +35 -0
- package/dist/shared/project-gates-helpers.js.map +1 -1
- package/dist/shared/types/config.d.ts +7 -1
- package/dist/shared/types/config.d.ts.map +1 -1
- package/dist/shared/types/gates.d.ts +34 -0
- package/dist/shared/types/gates.d.ts.map +1 -1
- package/dist/shared/types/project.d.ts +68 -2
- package/dist/shared/types/project.d.ts.map +1 -1
- package/dist/shared/types/project.js +1 -0
- package/dist/shared/types/project.js.map +1 -1
- package/dist/shared/types/templates.d.ts +8 -1
- package/dist/shared/types/templates.d.ts.map +1 -1
- package/dist/shared/types/verify.d.ts +51 -1
- package/dist/shared/types/verify.d.ts.map +1 -1
- package/dist/shared/types/verify.js +37 -1
- package/dist/shared/types/verify.js.map +1 -1
- package/dist/tools/add-hook.d.ts.map +1 -1
- package/dist/tools/add-hook.js +8 -1
- package/dist/tools/add-hook.js.map +1 -1
- package/dist/tools/add-module.js +123 -123
- package/dist/tools/advice-registry.d.ts.map +1 -1
- package/dist/tools/advice-registry.js +108 -18
- package/dist/tools/advice-registry.js.map +1 -1
- package/dist/tools/advise-session-advisor.d.ts +16 -0
- package/dist/tools/advise-session-advisor.d.ts.map +1 -0
- package/dist/tools/advise-session-advisor.js +89 -0
- package/dist/tools/advise-session-advisor.js.map +1 -0
- package/dist/tools/advise-session-signals.d.ts +21 -0
- package/dist/tools/advise-session-signals.d.ts.map +1 -0
- package/dist/tools/advise-session-signals.js +113 -0
- package/dist/tools/advise-session-signals.js.map +1 -0
- package/dist/tools/advise-session.d.ts +22 -0
- package/dist/tools/advise-session.d.ts.map +1 -0
- package/dist/tools/advise-session.js +31 -0
- package/dist/tools/advise-session.js.map +1 -0
- package/dist/tools/analyze-harness.d.ts +18 -0
- package/dist/tools/analyze-harness.d.ts.map +1 -0
- package/dist/tools/analyze-harness.js +298 -0
- package/dist/tools/analyze-harness.js.map +1 -0
- package/dist/tools/audit.d.ts.map +1 -1
- package/dist/tools/audit.js +19 -0
- package/dist/tools/audit.js.map +1 -1
- package/dist/tools/change-request.d.ts +53 -0
- package/dist/tools/change-request.d.ts.map +1 -0
- package/dist/tools/change-request.js +395 -0
- package/dist/tools/change-request.js.map +1 -0
- package/dist/tools/check-cascade-contracts.d.ts +13 -0
- package/dist/tools/check-cascade-contracts.d.ts.map +1 -1
- package/dist/tools/check-cascade-contracts.js +73 -2
- package/dist/tools/check-cascade-contracts.js.map +1 -1
- package/dist/tools/check-cascade-report.js +64 -64
- package/dist/tools/check-cascade-steps.d.ts +3 -0
- package/dist/tools/check-cascade-steps.d.ts.map +1 -1
- package/dist/tools/check-cascade-steps.js +104 -15
- package/dist/tools/check-cascade-steps.js.map +1 -1
- package/dist/tools/check-cascade.d.ts +4 -3
- package/dist/tools/check-cascade.d.ts.map +1 -1
- package/dist/tools/check-cascade.js +30 -12
- package/dist/tools/check-cascade.js.map +1 -1
- package/dist/tools/check-derivation-chain.d.ts +37 -0
- package/dist/tools/check-derivation-chain.d.ts.map +1 -0
- package/dist/tools/check-derivation-chain.js +418 -0
- package/dist/tools/check-derivation-chain.js.map +1 -0
- package/dist/tools/check-spec-consistency.d.ts +25 -0
- package/dist/tools/check-spec-consistency.d.ts.map +1 -0
- package/dist/tools/check-spec-consistency.js +339 -0
- package/dist/tools/check-spec-consistency.js.map +1 -0
- package/dist/tools/check-t4.d.ts +54 -0
- package/dist/tools/check-t4.d.ts.map +1 -0
- package/dist/tools/check-t4.js +305 -0
- package/dist/tools/check-t4.js.map +1 -0
- package/dist/tools/close-cycle.d.ts +11 -0
- package/dist/tools/close-cycle.d.ts.map +1 -1
- package/dist/tools/close-cycle.js +364 -4
- package/dist/tools/close-cycle.js.map +1 -1
- package/dist/tools/cnt-add-routing.d.ts +31 -0
- package/dist/tools/cnt-add-routing.d.ts.map +1 -0
- package/dist/tools/cnt-add-routing.js +99 -0
- package/dist/tools/cnt-add-routing.js.map +1 -0
- package/dist/tools/configure-mcp.d.ts.map +1 -1
- package/dist/tools/configure-mcp.js +52 -2
- package/dist/tools/configure-mcp.js.map +1 -1
- package/dist/tools/consolidate-status.d.ts +31 -0
- package/dist/tools/consolidate-status.d.ts.map +1 -1
- package/dist/tools/consolidate-status.js +105 -0
- package/dist/tools/consolidate-status.js.map +1 -1
- package/dist/tools/executable-gates.d.ts +52 -0
- package/dist/tools/executable-gates.d.ts.map +1 -0
- package/dist/tools/executable-gates.js +333 -0
- package/dist/tools/executable-gates.js.map +1 -0
- package/dist/tools/extract-adrs-from-spec.d.ts +33 -0
- package/dist/tools/extract-adrs-from-spec.d.ts.map +1 -0
- package/dist/tools/extract-adrs-from-spec.js +410 -0
- package/dist/tools/extract-adrs-from-spec.js.map +1 -0
- package/dist/tools/extract-adrs-history.d.ts +47 -0
- package/dist/tools/extract-adrs-history.d.ts.map +1 -0
- package/dist/tools/extract-adrs-history.js +265 -0
- package/dist/tools/extract-adrs-history.js.map +1 -0
- package/dist/tools/forgecraft-dispatch-extended.d.ts.map +1 -1
- package/dist/tools/forgecraft-dispatch-extended.js +137 -0
- package/dist/tools/forgecraft-dispatch-extended.js.map +1 -1
- package/dist/tools/forgecraft-dispatch.d.ts.map +1 -1
- package/dist/tools/forgecraft-dispatch.js +16 -0
- package/dist/tools/forgecraft-dispatch.js.map +1 -1
- package/dist/tools/forgecraft-schema-params.d.ts +174 -2
- package/dist/tools/forgecraft-schema-params.d.ts.map +1 -1
- package/dist/tools/forgecraft-schema-params.js +197 -0
- package/dist/tools/forgecraft-schema-params.js.map +1 -1
- package/dist/tools/forgecraft-schema.d.ts +179 -7
- package/dist/tools/forgecraft-schema.d.ts.map +1 -1
- package/dist/tools/forgecraft-schema.js +37 -0
- package/dist/tools/forgecraft-schema.js.map +1 -1
- package/dist/tools/generate-adr.js +6 -6
- package/dist/tools/generate-adr.js.map +1 -1
- package/dist/tools/generate-decision.d.ts +77 -0
- package/dist/tools/generate-decision.d.ts.map +1 -0
- package/dist/tools/generate-decision.js +162 -0
- package/dist/tools/generate-decision.js.map +1 -0
- package/dist/tools/generate-env-probe.d.ts +49 -0
- package/dist/tools/generate-env-probe.d.ts.map +1 -0
- package/dist/tools/generate-env-probe.js +365 -0
- package/dist/tools/generate-env-probe.js.map +1 -0
- package/dist/tools/generate-harness.d.ts +53 -0
- package/dist/tools/generate-harness.d.ts.map +1 -0
- package/dist/tools/generate-harness.js +395 -0
- package/dist/tools/generate-harness.js.map +1 -0
- package/dist/tools/generate-roadmap.d.ts +1 -1
- package/dist/tools/generate-roadmap.d.ts.map +1 -1
- package/dist/tools/generate-roadmap.js +38 -4
- package/dist/tools/generate-roadmap.js.map +1 -1
- package/dist/tools/generate-session-prompt.d.ts +3 -3
- package/dist/tools/generate-session-prompt.d.ts.map +1 -1
- package/dist/tools/generate-session-prompt.js +9 -1
- package/dist/tools/generate-session-prompt.js.map +1 -1
- package/dist/tools/generate-slo-probe.d.ts +53 -0
- package/dist/tools/generate-slo-probe.d.ts.map +1 -0
- package/dist/tools/generate-slo-probe.js +366 -0
- package/dist/tools/generate-slo-probe.js.map +1 -0
- package/dist/tools/layer-status-gates.d.ts +24 -0
- package/dist/tools/layer-status-gates.d.ts.map +1 -0
- package/dist/tools/layer-status-gates.js +151 -0
- package/dist/tools/layer-status-gates.js.map +1 -0
- package/dist/tools/layer-status.d.ts +126 -0
- package/dist/tools/layer-status.d.ts.map +1 -0
- package/dist/tools/layer-status.js +647 -0
- package/dist/tools/layer-status.js.map +1 -0
- package/dist/tools/list.d.ts.map +1 -1
- package/dist/tools/list.js +9 -5
- package/dist/tools/list.js.map +1 -1
- package/dist/tools/postcondition-coverage.d.ts +57 -0
- package/dist/tools/postcondition-coverage.d.ts.map +1 -0
- package/dist/tools/postcondition-coverage.js +256 -0
- package/dist/tools/postcondition-coverage.js.map +1 -0
- package/dist/tools/probe-runners.d.ts +21 -0
- package/dist/tools/probe-runners.d.ts.map +1 -0
- package/dist/tools/probe-runners.js +246 -0
- package/dist/tools/probe-runners.js.map +1 -0
- package/dist/tools/probe-templates.d.ts +27 -0
- package/dist/tools/probe-templates.d.ts.map +1 -0
- package/dist/tools/probe-templates.js +279 -0
- package/dist/tools/probe-templates.js.map +1 -0
- package/dist/tools/propose-session.d.ts +28 -0
- package/dist/tools/propose-session.d.ts.map +1 -0
- package/dist/tools/propose-session.js +333 -0
- package/dist/tools/propose-session.js.map +1 -0
- package/dist/tools/refresh-output.js +14 -14
- package/dist/tools/review-stubs.d.ts +29 -0
- package/dist/tools/review-stubs.d.ts.map +1 -0
- package/dist/tools/review-stubs.js +173 -0
- package/dist/tools/review-stubs.js.map +1 -0
- package/dist/tools/roadmap-builder.d.ts +49 -1
- package/dist/tools/roadmap-builder.d.ts.map +1 -1
- package/dist/tools/roadmap-builder.js +210 -5
- package/dist/tools/roadmap-builder.js.map +1 -1
- package/dist/tools/run-env-probe.d.ts +57 -0
- package/dist/tools/run-env-probe.d.ts.map +1 -0
- package/dist/tools/run-env-probe.js +270 -0
- package/dist/tools/run-env-probe.js.map +1 -0
- package/dist/tools/run-harness.d.ts +52 -0
- package/dist/tools/run-harness.d.ts.map +1 -0
- package/dist/tools/run-harness.js +279 -0
- package/dist/tools/run-harness.js.map +1 -0
- package/dist/tools/run-slo-probe.d.ts +50 -0
- package/dist/tools/run-slo-probe.d.ts.map +1 -0
- package/dist/tools/run-slo-probe.js +281 -0
- package/dist/tools/run-slo-probe.js.map +1 -0
- package/dist/tools/scaffold-spec-stubs.js +115 -115
- package/dist/tools/scaffold-templates.js +62 -62
- package/dist/tools/scaffold-writer.d.ts.map +1 -1
- package/dist/tools/scaffold-writer.js +9 -0
- package/dist/tools/scaffold-writer.js.map +1 -1
- package/dist/tools/score-rubric.d.ts +19 -0
- package/dist/tools/score-rubric.d.ts.map +1 -0
- package/dist/tools/score-rubric.js +411 -0
- package/dist/tools/score-rubric.js.map +1 -0
- package/dist/tools/session-prompt-builders.d.ts +20 -0
- package/dist/tools/session-prompt-builders.d.ts.map +1 -1
- package/dist/tools/session-prompt-builders.js +78 -5
- package/dist/tools/session-prompt-builders.js.map +1 -1
- package/dist/tools/session-prompt-sections.d.ts +4 -2
- package/dist/tools/session-prompt-sections.d.ts.map +1 -1
- package/dist/tools/session-prompt-sections.js +22 -10
- package/dist/tools/session-prompt-sections.js.map +1 -1
- package/dist/tools/setup-artifact-writers.d.ts +69 -4
- package/dist/tools/setup-artifact-writers.d.ts.map +1 -1
- package/dist/tools/setup-artifact-writers.js +681 -5
- package/dist/tools/setup-artifact-writers.js.map +1 -1
- package/dist/tools/setup-cnt-builders.d.ts.map +1 -1
- package/dist/tools/setup-cnt-builders.js +162 -34
- package/dist/tools/setup-cnt-builders.js.map +1 -1
- package/dist/tools/setup-monitoring.d.ts +41 -0
- package/dist/tools/setup-monitoring.d.ts.map +1 -0
- package/dist/tools/setup-monitoring.js +364 -0
- package/dist/tools/setup-monitoring.js.map +1 -0
- package/dist/tools/setup-phase1.d.ts.map +1 -1
- package/dist/tools/setup-phase1.js +14 -1
- package/dist/tools/setup-phase1.js.map +1 -1
- package/dist/tools/setup-phase2.d.ts +14 -0
- package/dist/tools/setup-phase2.d.ts.map +1 -1
- package/dist/tools/setup-phase2.js +130 -3
- package/dist/tools/setup-phase2.js.map +1 -1
- package/dist/tools/setup-project.d.ts +8 -0
- package/dist/tools/setup-project.d.ts.map +1 -1
- package/dist/tools/setup-project.js +52 -2
- package/dist/tools/setup-project.js.map +1 -1
- package/dist/tools/spec-parser-tags.d.ts.map +1 -1
- package/dist/tools/spec-parser-tags.js +1 -0
- package/dist/tools/spec-parser-tags.js.map +1 -1
- package/dist/tools/verify-formatter.d.ts.map +1 -1
- package/dist/tools/verify-formatter.js +15 -1
- package/dist/tools/verify-formatter.js.map +1 -1
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +3 -0
- package/dist/tools/verify.js.map +1 -1
- package/package.json +98 -89
- package/templates/analytics/instructions.yaml +37 -37
- package/templates/analytics/mcp-servers.yaml +11 -11
- package/templates/analytics/structure.yaml +25 -25
- package/templates/api/harness/uc-template.hurl +20 -0
- package/templates/api/instructions.yaml +231 -231
- package/templates/api/mcp-servers.yaml +22 -22
- package/templates/api/nfr.yaml +23 -23
- package/templates/api/review.yaml +103 -103
- package/templates/api/structure.yaml +34 -34
- package/templates/api/verification.yaml +132 -132
- package/templates/cli/instructions.yaml +31 -31
- package/templates/cli/mcp-servers.yaml +11 -11
- package/templates/cli/review.yaml +53 -53
- package/templates/cli/structure.yaml +16 -16
- package/templates/data-lineage/instructions.yaml +28 -28
- package/templates/data-lineage/mcp-servers.yaml +22 -22
- package/templates/data-pipeline/instructions.yaml +84 -84
- package/templates/data-pipeline/mcp-servers.yaml +13 -13
- package/templates/data-pipeline/nfr.yaml +39 -39
- package/templates/data-pipeline/structure.yaml +23 -23
- package/templates/docs-manifest.yaml +227 -0
- package/templates/fintech/hooks.yaml +55 -55
- package/templates/fintech/instructions.yaml +112 -112
- package/templates/fintech/mcp-servers.yaml +13 -13
- package/templates/fintech/nfr.yaml +46 -46
- package/templates/fintech/playbook.yaml +210 -210
- package/templates/fintech/verification.yaml +239 -239
- package/templates/game/harness/uc-template.sim.ts +29 -0
- package/templates/game/instructions.yaml +289 -289
- package/templates/game/mcp-servers.yaml +38 -38
- package/templates/game/nfr.yaml +64 -64
- package/templates/game/playbook.yaml +214 -214
- package/templates/game/review.yaml +97 -97
- package/templates/game/structure.yaml +67 -67
- package/templates/game/verification.yaml +174 -174
- package/templates/healthcare/instructions.yaml +42 -42
- package/templates/healthcare/mcp-servers.yaml +13 -13
- package/templates/healthcare/nfr.yaml +47 -47
- package/templates/hipaa/instructions.yaml +41 -41
- package/templates/hipaa/mcp-servers.yaml +13 -13
- package/templates/infra/instructions.yaml +104 -104
- package/templates/infra/mcp-servers.yaml +20 -20
- package/templates/infra/nfr.yaml +46 -46
- package/templates/infra/review.yaml +65 -65
- package/templates/infra/structure.yaml +25 -25
- package/templates/library/instructions.yaml +36 -36
- package/templates/library/mcp-servers.yaml +20 -20
- package/templates/library/review.yaml +56 -56
- package/templates/library/structure.yaml +19 -19
- package/templates/medallion-architecture/instructions.yaml +41 -41
- package/templates/medallion-architecture/mcp-servers.yaml +22 -22
- package/templates/ml/instructions.yaml +85 -85
- package/templates/ml/mcp-servers.yaml +11 -11
- package/templates/ml/nfr.yaml +39 -39
- package/templates/ml/structure.yaml +25 -25
- package/templates/ml/verification.yaml +156 -156
- package/templates/mobile/instructions.yaml +44 -44
- package/templates/mobile/mcp-servers.yaml +11 -11
- package/templates/mobile/nfr.yaml +49 -49
- package/templates/mobile/structure.yaml +27 -27
- package/templates/mobile/verification.yaml +121 -121
- package/templates/observability-xray/instructions.yaml +40 -40
- package/templates/observability-xray/mcp-servers.yaml +15 -15
- package/templates/realtime/instructions.yaml +42 -42
- package/templates/realtime/mcp-servers.yaml +13 -13
- package/templates/soc2/instructions.yaml +41 -41
- package/templates/soc2/mcp-servers.yaml +24 -24
- package/templates/social/instructions.yaml +43 -43
- package/templates/social/mcp-servers.yaml +24 -24
- package/templates/state-machine/instructions.yaml +42 -42
- package/templates/state-machine/mcp-servers.yaml +11 -11
- package/templates/tools-registry.yaml +164 -164
- package/templates/universal/claude-md-blocks/layer-navigation.md +20 -0
- package/templates/universal/claude-md-blocks/nfr-contracts.md +22 -0
- package/templates/universal/hooks.yaml +879 -723
- package/templates/universal/instructions.yaml +1692 -1692
- package/templates/universal/mcp-servers.yaml +50 -50
- package/templates/universal/nfr.yaml +197 -197
- package/templates/universal/reference.yaml +326 -326
- package/templates/universal/review.yaml +204 -204
- package/templates/universal/skills.yaml +262 -262
- package/templates/universal/structure.yaml +67 -67
- package/templates/universal/verification.yaml +416 -416
- package/templates/web-next/hooks.yaml +114 -0
- package/templates/web-next/instructions.yaml +106 -0
- package/templates/web-react/harness/uc-template.spec.ts +35 -0
- package/templates/web-react/hooks.yaml +156 -44
- package/templates/web-react/instructions.yaml +296 -207
- package/templates/web-react/mcp-servers.yaml +20 -20
- package/templates/web-react/nfr.yaml +27 -27
- package/templates/web-react/review.yaml +94 -94
- package/templates/web-react/structure.yaml +46 -46
- package/templates/web-react/verification.yaml +126 -126
- package/templates/web-static/hooks.yaml +85 -0
- package/templates/web-static/instructions.yaml +204 -115
- package/templates/web-static/mcp-servers.yaml +20 -20
- package/templates/web3/instructions.yaml +44 -44
- package/templates/web3/mcp-servers.yaml +11 -11
- package/templates/web3/verification.yaml +159 -159
- package/templates/zero-trust/instructions.yaml +41 -41
- package/templates/zero-trust/mcp-servers.yaml +15 -15
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Roadmap building utilities: content generation, UC parsing, and session stub creation.
|
|
3
3
|
*/
|
|
4
|
+
export declare const EXECUTABLE_SPRINT_HEADER: Readonly<{
|
|
5
|
+
id: string;
|
|
6
|
+
title: string;
|
|
7
|
+
}>;
|
|
4
8
|
export declare const PHASE2_ITEMS: readonly [{
|
|
5
9
|
readonly id: "RM-010";
|
|
6
10
|
readonly title: "Integration tests: full API contract coverage";
|
|
@@ -41,18 +45,34 @@ export declare function parseUseCaseTitles(projectDir: string): ReadonlyArray<{
|
|
|
41
45
|
* @returns Human-readable project name
|
|
42
46
|
*/
|
|
43
47
|
export declare function readProjectName(projectDir: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Scan UC files for mentions of other UC IDs and infer implementation order.
|
|
50
|
+
* Returns a map of ucId → array of RM IDs that must complete first.
|
|
51
|
+
*
|
|
52
|
+
* Handles both canonical (docs/use-cases/<ucId>-*.md) and monolith (docs/use-cases.md).
|
|
53
|
+
*
|
|
54
|
+
* @param projectDir - Absolute project root
|
|
55
|
+
* @param ucItems - Ordered array of UC id/title pairs (index = RM position)
|
|
56
|
+
* @returns Map of ucId → dependent RM IDs
|
|
57
|
+
*/
|
|
58
|
+
export declare function inferUcDependencies(projectDir: string, ucItems: ReadonlyArray<{
|
|
59
|
+
readonly id: string;
|
|
60
|
+
readonly title: string;
|
|
61
|
+
}>): Map<string, string[]>;
|
|
44
62
|
/**
|
|
45
63
|
* Build the roadmap.md content string.
|
|
46
64
|
*
|
|
47
65
|
* @param projectName - Human-readable project name
|
|
48
66
|
* @param ucItems - Parsed use-case items for Phase 1
|
|
49
67
|
* @param specFilePath - Relative spec file path (for footer)
|
|
68
|
+
* @param tags - Project classification tags (drives Executable Sprint gate selection)
|
|
69
|
+
* @param projectDir - Absolute project root for UC dependency inference (optional)
|
|
50
70
|
* @returns Complete roadmap.md string
|
|
51
71
|
*/
|
|
52
72
|
export declare function buildRoadmapContent(projectName: string, ucItems: ReadonlyArray<{
|
|
53
73
|
readonly id: string;
|
|
54
74
|
readonly title: string;
|
|
55
|
-
}>, specFilePath: string): string;
|
|
75
|
+
}>, specFilePath: string, tags?: ReadonlyArray<string>, projectDir?: string): string;
|
|
56
76
|
/**
|
|
57
77
|
* Build a session prompt stub for a Phase 1 roadmap item.
|
|
58
78
|
*
|
|
@@ -62,6 +82,34 @@ export declare function buildRoadmapContent(projectName: string, ucItems: Readon
|
|
|
62
82
|
* @returns Stub markdown string
|
|
63
83
|
*/
|
|
64
84
|
export declare function buildSessionPromptStub(rmId: string, title: string, ucId: string): string;
|
|
85
|
+
/**
|
|
86
|
+
* Build a session prompt stub for an Executable Sprint bring-up item (EX-000).
|
|
87
|
+
* For GAME projects, the bring-up check verifies the engine runs headlessly —
|
|
88
|
+
* which is itself proof that logic and rendering are properly separated.
|
|
89
|
+
*
|
|
90
|
+
* @param projectName - Human-readable project name
|
|
91
|
+
* @param tags - Project classification tags
|
|
92
|
+
* @returns Stub markdown string
|
|
93
|
+
*/
|
|
94
|
+
export declare function buildExecutableBringUpStub(projectName: string, tags?: ReadonlyArray<string>): string;
|
|
95
|
+
/**
|
|
96
|
+
* Build a session prompt stub for an Executable Sprint use-case verification item.
|
|
97
|
+
* Lists all applicable gate files so the AI knows what to fill in and run.
|
|
98
|
+
*
|
|
99
|
+
* @param exId - The EX-00N identifier
|
|
100
|
+
* @param ucId - The UC identifier (e.g. UC-001)
|
|
101
|
+
* @param ucTitle - The use-case title
|
|
102
|
+
* @param tags - Project tags used to resolve gate tools
|
|
103
|
+
* @returns Stub markdown string
|
|
104
|
+
*/
|
|
105
|
+
export declare function buildExecutableVerifyStub(exId: string, ucId: string, ucTitle: string, tags?: ReadonlyArray<string>): string;
|
|
106
|
+
/**
|
|
107
|
+
* Format an EX ID with zero-padded 3-digit suffix.
|
|
108
|
+
*
|
|
109
|
+
* @param index - 0-based for header (EX-000) or 1-based for UC items
|
|
110
|
+
* @returns Formatted EX-00N string
|
|
111
|
+
*/
|
|
112
|
+
export declare function formatExId(index: number): string;
|
|
65
113
|
/**
|
|
66
114
|
* Format an RM ID with zero-padded 3-digit suffix.
|
|
67
115
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roadmap-builder.d.ts","sourceRoot":"","sources":["../../src/tools/roadmap-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"roadmap-builder.d.ts","sourceRoot":"","sources":["../../src/tools/roadmap-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKjE,CAAC;AAEb,eAAO,MAAM,YAAY;;;;;;;;;EAIf,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;EAaf,CAAC;AAIX;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GACjB,aAAa,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAehE;AAmBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA0B1D;AAgBD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GACtE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA0DvB;AAID;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EACvE,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,aAAa,CAAC,MAAM,CAAM,EAChC,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAuFR;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,MAAM,CAeR;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,aAAa,CAAC,MAAM,CAAM,GAC/B,MAAM,CAgDR;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,aAAa,CAAC,MAAM,CAAM,GAC/B,MAAM,CAgCR;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Roadmap building utilities: content generation, UC parsing, and session stub creation.
|
|
3
3
|
*/
|
|
4
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
+
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
5
5
|
import { join } from "node:path";
|
|
6
|
-
|
|
6
|
+
import { resolveExecutableGates, gateFilePath, gateToolSummary, } from "./executable-gates.js";
|
|
7
7
|
const GENERIC_UC_TITLES = [
|
|
8
8
|
"Implement primary use case",
|
|
9
9
|
"Implement secondary use case",
|
|
10
10
|
"Implement observer use case",
|
|
11
11
|
];
|
|
12
|
+
export const EXECUTABLE_SPRINT_HEADER = {
|
|
13
|
+
id: "EX-000",
|
|
14
|
+
title: "Executable: bring up — start server, confirm health endpoint responds",
|
|
15
|
+
};
|
|
12
16
|
export const PHASE2_ITEMS = [
|
|
13
17
|
{ id: "RM-010", title: "Integration tests: full API contract coverage" },
|
|
14
18
|
{ id: "RM-011", title: "Mutation testing: achieve >80% mutation score" },
|
|
@@ -110,6 +114,74 @@ function inferNameFromDir(projectDir) {
|
|
|
110
114
|
const last = parts[parts.length - 1] ?? "Project";
|
|
111
115
|
return last.replace(/[-_]/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
|
|
112
116
|
}
|
|
117
|
+
// ── UC Dependency Inference ───────────────────────────────────────────
|
|
118
|
+
/**
|
|
119
|
+
* Scan UC files for mentions of other UC IDs and infer implementation order.
|
|
120
|
+
* Returns a map of ucId → array of RM IDs that must complete first.
|
|
121
|
+
*
|
|
122
|
+
* Handles both canonical (docs/use-cases/<ucId>-*.md) and monolith (docs/use-cases.md).
|
|
123
|
+
*
|
|
124
|
+
* @param projectDir - Absolute project root
|
|
125
|
+
* @param ucItems - Ordered array of UC id/title pairs (index = RM position)
|
|
126
|
+
* @returns Map of ucId → dependent RM IDs
|
|
127
|
+
*/
|
|
128
|
+
export function inferUcDependencies(projectDir, ucItems) {
|
|
129
|
+
const deps = new Map();
|
|
130
|
+
if (ucItems.length === 0)
|
|
131
|
+
return deps;
|
|
132
|
+
const ucIds = ucItems.map((u) => u.id);
|
|
133
|
+
const ucDir = join(projectDir, "docs", "use-cases");
|
|
134
|
+
const ucMono = join(projectDir, "docs", "use-cases.md");
|
|
135
|
+
const UC_REF = /\bUC-\d{3,4}\b/g;
|
|
136
|
+
for (const uc of ucItems) {
|
|
137
|
+
let content = "";
|
|
138
|
+
if (existsSync(ucDir)) {
|
|
139
|
+
try {
|
|
140
|
+
const files = readdirSync(ucDir);
|
|
141
|
+
const match = files.find((f) => f.endsWith(".md") && f.toUpperCase().includes(uc.id));
|
|
142
|
+
if (match)
|
|
143
|
+
content = readFileSync(join(ucDir, match), "utf-8");
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
/* skip */
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else if (existsSync(ucMono)) {
|
|
150
|
+
try {
|
|
151
|
+
const mono = readFileSync(ucMono, "utf-8");
|
|
152
|
+
const start = mono.indexOf(`## ${uc.id}`);
|
|
153
|
+
if (start >= 0) {
|
|
154
|
+
const end = mono.indexOf("\n## ", start + 3);
|
|
155
|
+
content = end >= 0 ? mono.slice(start, end) : mono.slice(start);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
/* skip */
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (!content)
|
|
163
|
+
continue;
|
|
164
|
+
const refs = new Set();
|
|
165
|
+
let m;
|
|
166
|
+
UC_REF.lastIndex = 0;
|
|
167
|
+
while ((m = UC_REF.exec(content)) !== null) {
|
|
168
|
+
const refId = m[0];
|
|
169
|
+
if (refId !== uc.id && ucIds.includes(refId))
|
|
170
|
+
refs.add(refId);
|
|
171
|
+
}
|
|
172
|
+
if (refs.size > 0) {
|
|
173
|
+
const rmDeps = Array.from(refs)
|
|
174
|
+
.map((refId) => {
|
|
175
|
+
const idx = ucItems.findIndex((u) => u.id === refId);
|
|
176
|
+
return idx >= 0 ? `RM-${String(idx + 1).padStart(3, "0")}` : null;
|
|
177
|
+
})
|
|
178
|
+
.filter((id) => id !== null);
|
|
179
|
+
if (rmDeps.length > 0)
|
|
180
|
+
deps.set(uc.id, rmDeps);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return deps;
|
|
184
|
+
}
|
|
113
185
|
// ── Roadmap Content ────────────────────────────────────────────────────
|
|
114
186
|
/**
|
|
115
187
|
* Build the roadmap.md content string.
|
|
@@ -117,20 +189,38 @@ function inferNameFromDir(projectDir) {
|
|
|
117
189
|
* @param projectName - Human-readable project name
|
|
118
190
|
* @param ucItems - Parsed use-case items for Phase 1
|
|
119
191
|
* @param specFilePath - Relative spec file path (for footer)
|
|
192
|
+
* @param tags - Project classification tags (drives Executable Sprint gate selection)
|
|
193
|
+
* @param projectDir - Absolute project root for UC dependency inference (optional)
|
|
120
194
|
* @returns Complete roadmap.md string
|
|
121
195
|
*/
|
|
122
|
-
export function buildRoadmapContent(projectName, ucItems, specFilePath) {
|
|
196
|
+
export function buildRoadmapContent(projectName, ucItems, specFilePath, tags = [], projectDir) {
|
|
123
197
|
const date = new Date().toISOString().split("T")[0];
|
|
124
198
|
const lastPhase1Id = formatRmId(ucItems.length);
|
|
199
|
+
const lastExId = formatExId(ucItems.length);
|
|
200
|
+
const gates = resolveExecutableGates(tags);
|
|
201
|
+
const toolSummary = gateToolSummary(gates);
|
|
202
|
+
const ucDeps = projectDir
|
|
203
|
+
? inferUcDependencies(projectDir, ucItems)
|
|
204
|
+
: new Map();
|
|
125
205
|
const phase1Rows = ucItems
|
|
126
206
|
.map((uc, i) => {
|
|
127
207
|
const rmId = formatRmId(i + 1);
|
|
128
208
|
const title = `Implement ${uc.id}: ${uc.title}`;
|
|
129
|
-
|
|
209
|
+
const dependsOn = ucDeps.get(uc.id)?.join(", ") ?? "—";
|
|
210
|
+
return `| ${rmId} | ${title} | ${dependsOn} | pending | docs/session-prompts/${rmId}.md |`;
|
|
211
|
+
})
|
|
212
|
+
.join("\n");
|
|
213
|
+
const exHeaderRow = `| ${EXECUTABLE_SPRINT_HEADER.id} | ${EXECUTABLE_SPRINT_HEADER.title} | ${lastPhase1Id} | pending | docs/session-prompts/${EXECUTABLE_SPRINT_HEADER.id}.md |`;
|
|
214
|
+
const exUcRows = ucItems
|
|
215
|
+
.map((uc, i) => {
|
|
216
|
+
const exId = formatExId(i + 1);
|
|
217
|
+
const dependsOn = i === 0 ? EXECUTABLE_SPRINT_HEADER.id : formatExId(i);
|
|
218
|
+
const title = `Verify live: ${uc.id} — ${uc.title} (HTTP call + persistence check)`;
|
|
219
|
+
return `| ${exId} | ${title} | ${dependsOn} | pending | docs/session-prompts/${exId}.md |`;
|
|
130
220
|
})
|
|
131
221
|
.join("\n");
|
|
132
222
|
const phase2Rows = PHASE2_ITEMS.map((item, i) => {
|
|
133
|
-
const dependsOn = i === 0 ?
|
|
223
|
+
const dependsOn = i === 0 ? lastExId : PHASE2_ITEMS[i - 1].id;
|
|
134
224
|
return `| ${item.id} | ${item.title} | ${dependsOn} | pending | docs/session-prompts/${item.id}.md |`;
|
|
135
225
|
}).join("\n");
|
|
136
226
|
const phase3Rows = PHASE3_ITEMS.map((item, i) => {
|
|
@@ -155,6 +245,17 @@ export function buildRoadmapContent(projectName, ucItems, specFilePath) {
|
|
|
155
245
|
"|---|---|---|---|---|",
|
|
156
246
|
phase1Rows,
|
|
157
247
|
"",
|
|
248
|
+
"## Executable Sprint: Live Verification",
|
|
249
|
+
"",
|
|
250
|
+
`> Gates: **${toolSummary}**. Complete every item in this phase before moving to Phase 2.`,
|
|
251
|
+
"> Each session starts the server, exercises the use case end-to-end, and confirms persistence.",
|
|
252
|
+
"> A use case is not done until its EX item passes.",
|
|
253
|
+
"",
|
|
254
|
+
"| ID | Title | Depends On | Status | Prompt |",
|
|
255
|
+
"|---|---|---|---|---|",
|
|
256
|
+
exHeaderRow,
|
|
257
|
+
exUcRows,
|
|
258
|
+
"",
|
|
158
259
|
"## Phase 2: Integration & Quality Hardening",
|
|
159
260
|
"",
|
|
160
261
|
"| ID | Title | Depends On | Status | Prompt |",
|
|
@@ -197,6 +298,110 @@ export function buildSessionPromptStub(rmId, title, ucId) {
|
|
|
197
298
|
"",
|
|
198
299
|
].join("\n");
|
|
199
300
|
}
|
|
301
|
+
/**
|
|
302
|
+
* Build a session prompt stub for an Executable Sprint bring-up item (EX-000).
|
|
303
|
+
* For GAME projects, the bring-up check verifies the engine runs headlessly —
|
|
304
|
+
* which is itself proof that logic and rendering are properly separated.
|
|
305
|
+
*
|
|
306
|
+
* @param projectName - Human-readable project name
|
|
307
|
+
* @param tags - Project classification tags
|
|
308
|
+
* @returns Stub markdown string
|
|
309
|
+
*/
|
|
310
|
+
export function buildExecutableBringUpStub(projectName, tags = []) {
|
|
311
|
+
const isGame = tags.includes("GAME");
|
|
312
|
+
if (isGame) {
|
|
313
|
+
return [
|
|
314
|
+
`# Session Prompt — EX-000: Bring Up (Headless Engine Check)`,
|
|
315
|
+
`> Executable Sprint — for game projects, bring-up proves the engine runs without a renderer.`,
|
|
316
|
+
`> If this step fails, the architecture is not yet correct: logic and rendering are coupled.`,
|
|
317
|
+
`> Fix the coupling before proceeding. The simulation gates cannot run until this passes.`,
|
|
318
|
+
"",
|
|
319
|
+
"## Task",
|
|
320
|
+
`Confirm that the ${projectName} game engine can be imported and run headlessly.`,
|
|
321
|
+
"",
|
|
322
|
+
"## Steps",
|
|
323
|
+
"1. Import the GameEngine class in a plain Node script (no renderer, no browser)",
|
|
324
|
+
"2. Create a game instance and advance one step: `GameEngine.create().applyAction(...)`",
|
|
325
|
+
"3. If this throws or requires a DOM/canvas/WebGL context, the architecture needs fixing",
|
|
326
|
+
"4. Confirm a RandomPlayer strategy can drive the engine to completion in a loop",
|
|
327
|
+
"5. Commit: `chore: EX-000 headless engine confirmed — logic/render separation verified`",
|
|
328
|
+
"",
|
|
329
|
+
"## Acceptance Criteria",
|
|
330
|
+
"- [ ] GameEngine imports and runs with zero renderer dependencies",
|
|
331
|
+
"- [ ] One full game loop completes headlessly without errors",
|
|
332
|
+
"- [ ] RandomPlayer (or equivalent) can drive the engine to an end state",
|
|
333
|
+
"",
|
|
334
|
+
].join("\n");
|
|
335
|
+
}
|
|
336
|
+
return [
|
|
337
|
+
`# Session Prompt — EX-000: Bring Up`,
|
|
338
|
+
`> Executable Sprint — this session proves the server starts and responds before use-case verification begins.`,
|
|
339
|
+
"",
|
|
340
|
+
"## Task",
|
|
341
|
+
`Start the ${projectName} server and confirm it is reachable.`,
|
|
342
|
+
"",
|
|
343
|
+
"## Steps",
|
|
344
|
+
"1. Install dependencies and run the build (`npm install && npm run build`)",
|
|
345
|
+
"2. Start the server (`npm start` or `npm run dev`)",
|
|
346
|
+
"3. Confirm the health endpoint responds: `curl http://localhost:3000/health`",
|
|
347
|
+
"4. If no health endpoint exists, confirm any root route returns HTTP 200",
|
|
348
|
+
"5. Commit: `chore: EX-000 server starts and health check passes`",
|
|
349
|
+
"",
|
|
350
|
+
"## Acceptance Criteria",
|
|
351
|
+
"- [ ] Server starts without errors",
|
|
352
|
+
"- [ ] Health endpoint returns HTTP 200",
|
|
353
|
+
"- [ ] No unhandled startup exceptions in logs",
|
|
354
|
+
"",
|
|
355
|
+
].join("\n");
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Build a session prompt stub for an Executable Sprint use-case verification item.
|
|
359
|
+
* Lists all applicable gate files so the AI knows what to fill in and run.
|
|
360
|
+
*
|
|
361
|
+
* @param exId - The EX-00N identifier
|
|
362
|
+
* @param ucId - The UC identifier (e.g. UC-001)
|
|
363
|
+
* @param ucTitle - The use-case title
|
|
364
|
+
* @param tags - Project tags used to resolve gate tools
|
|
365
|
+
* @returns Stub markdown string
|
|
366
|
+
*/
|
|
367
|
+
export function buildExecutableVerifyStub(exId, ucId, ucTitle, tags = []) {
|
|
368
|
+
const gates = resolveExecutableGates(tags);
|
|
369
|
+
const gateFileList = gates
|
|
370
|
+
.map((g) => `- \`${gateFilePath(g, ucId)}\` — ${g.label} (\`${g.runCommand}\`)`)
|
|
371
|
+
.join("\n");
|
|
372
|
+
return [
|
|
373
|
+
`# Session Prompt — ${exId}: Verify Live — ${ucId}`,
|
|
374
|
+
`> Executable Sprint — exercises ${ucId} end-to-end: request → service → persistence.`,
|
|
375
|
+
`> Run \`generate_session_prompt\` with item_description="${ucTitle}" to generate a fully bound prompt.`,
|
|
376
|
+
"",
|
|
377
|
+
"## Task",
|
|
378
|
+
`Verify that ${ucId}: ${ucTitle} works end-to-end against the running server.`,
|
|
379
|
+
"",
|
|
380
|
+
"## Gate Files (fill in and run each)",
|
|
381
|
+
gateFileList,
|
|
382
|
+
"",
|
|
383
|
+
"## Steps",
|
|
384
|
+
"1. Ensure the server is running (EX-000 must be done)",
|
|
385
|
+
`2. Fill in the gate file(s) above with ${ucId}-specific values`,
|
|
386
|
+
"3. Run each gate command and confirm it passes",
|
|
387
|
+
"4. Fix any failures before marking this item done",
|
|
388
|
+
`5. Commit: \`test: ${exId} ${ucId} live verification passes\``,
|
|
389
|
+
"",
|
|
390
|
+
"## Acceptance Criteria",
|
|
391
|
+
...gates.map((g) => `- [ ] ${g.label} passes for ${ucId}`),
|
|
392
|
+
"- [ ] No server errors in logs during verification",
|
|
393
|
+
"",
|
|
394
|
+
].join("\n");
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Format an EX ID with zero-padded 3-digit suffix.
|
|
398
|
+
*
|
|
399
|
+
* @param index - 0-based for header (EX-000) or 1-based for UC items
|
|
400
|
+
* @returns Formatted EX-00N string
|
|
401
|
+
*/
|
|
402
|
+
export function formatExId(index) {
|
|
403
|
+
return `EX-${String(index).padStart(3, "0")}`;
|
|
404
|
+
}
|
|
200
405
|
/**
|
|
201
406
|
* Format an RM ID with zero-padded 3-digit suffix.
|
|
202
407
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roadmap-builder.js","sourceRoot":"","sources":["../../src/tools/roadmap-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"roadmap-builder.js","sourceRoot":"","sources":["../../src/tools/roadmap-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* run_env_probe tool handler.
|
|
3
|
+
*
|
|
4
|
+
* Scans tests/env/ for probe files, executes each via bash,
|
|
5
|
+
* reports PASS/FAIL/TOOL_MISSING/NOT_IMPLEMENTED/NO_PROBE/TIMEOUT/ERROR.
|
|
6
|
+
* Writes .forgecraft/env-probe-run.json after execution.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import type { ToolResult } from "../shared/types.js";
|
|
10
|
+
import type { ProbeStatus } from "./run-harness.js";
|
|
11
|
+
export declare const runEnvProbeSchema: z.ZodObject<{
|
|
12
|
+
project_dir: z.ZodString;
|
|
13
|
+
timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
15
|
+
}, "strip", z.ZodTypeAny, {
|
|
16
|
+
project_dir: string;
|
|
17
|
+
env?: Record<string, string> | undefined;
|
|
18
|
+
timeout_ms?: number | undefined;
|
|
19
|
+
}, {
|
|
20
|
+
project_dir: string;
|
|
21
|
+
env?: Record<string, string> | undefined;
|
|
22
|
+
timeout_ms?: number | undefined;
|
|
23
|
+
}>;
|
|
24
|
+
export type RunEnvProbeInput = z.infer<typeof runEnvProbeSchema>;
|
|
25
|
+
export interface EnvProbeResult {
|
|
26
|
+
service: string;
|
|
27
|
+
probeId: string;
|
|
28
|
+
probeFile: string | null;
|
|
29
|
+
probeType: string;
|
|
30
|
+
status: ProbeStatus;
|
|
31
|
+
durationMs: number;
|
|
32
|
+
output?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface EnvProbeRunJson {
|
|
35
|
+
timestamp: string;
|
|
36
|
+
passed: number;
|
|
37
|
+
failed: number;
|
|
38
|
+
errors: number;
|
|
39
|
+
notFound: number;
|
|
40
|
+
results: Array<{
|
|
41
|
+
service: string;
|
|
42
|
+
probeId: string;
|
|
43
|
+
status: string;
|
|
44
|
+
durationMs: number;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Parse a probe filename like "service-name-probe-id.health.sh" back into
|
|
49
|
+
* service + probeId + probeType components.
|
|
50
|
+
*/
|
|
51
|
+
export declare function parseEnvProbeFileName(fileName: string): {
|
|
52
|
+
service: string;
|
|
53
|
+
probeId: string;
|
|
54
|
+
probeType: string;
|
|
55
|
+
};
|
|
56
|
+
export declare function runEnvProbeHandler(args: RunEnvProbeInput): Promise<ToolResult>;
|
|
57
|
+
//# sourceMappingURL=run-env-probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-env-probe.d.ts","sourceRoot":"","sources":["../../src/tools/run-env-probe.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAY5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAIjE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAqCA;AA+CD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,UAAU,CAAC,CA4DrB"}
|