@sdd-method/sdd-cli 0.9.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 +201 -0
- package/NOTICE +17 -0
- package/README.md +151 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +66 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/bundle.d.ts +20 -0
- package/dist/lib/bundle.d.ts.map +1 -0
- package/dist/lib/bundle.js +75 -0
- package/dist/lib/bundle.js.map +1 -0
- package/dist/lib/generate-claude-md/index.d.ts +16 -0
- package/dist/lib/generate-claude-md/index.d.ts.map +1 -0
- package/dist/lib/generate-claude-md/index.js +89 -0
- package/dist/lib/generate-claude-md/index.js.map +1 -0
- package/dist/lib/hooks-seed/entries.d.ts +16 -0
- package/dist/lib/hooks-seed/entries.d.ts.map +1 -0
- package/dist/lib/hooks-seed/entries.js +47 -0
- package/dist/lib/hooks-seed/entries.js.map +1 -0
- package/dist/lib/hooks-seed/index.d.ts +17 -0
- package/dist/lib/hooks-seed/index.d.ts.map +1 -0
- package/dist/lib/hooks-seed/index.js +15 -0
- package/dist/lib/hooks-seed/index.js.map +1 -0
- package/dist/lib/hooks-seed/merge.d.ts +24 -0
- package/dist/lib/hooks-seed/merge.d.ts.map +1 -0
- package/dist/lib/hooks-seed/merge.js +73 -0
- package/dist/lib/hooks-seed/merge.js.map +1 -0
- package/dist/lib/hooks-seed/types.d.ts +27 -0
- package/dist/lib/hooks-seed/types.d.ts.map +1 -0
- package/dist/lib/hooks-seed/types.js +20 -0
- package/dist/lib/hooks-seed/types.js.map +1 -0
- package/dist/lib/init/app.d.ts +21 -0
- package/dist/lib/init/app.d.ts.map +1 -0
- package/dist/lib/init/app.js +132 -0
- package/dist/lib/init/app.js.map +1 -0
- package/dist/lib/init/ci-workflow.d.ts +29 -0
- package/dist/lib/init/ci-workflow.d.ts.map +1 -0
- package/dist/lib/init/ci-workflow.js +78 -0
- package/dist/lib/init/ci-workflow.js.map +1 -0
- package/dist/lib/init/claude-md.d.ts +19 -0
- package/dist/lib/init/claude-md.d.ts.map +1 -0
- package/dist/lib/init/claude-md.js +140 -0
- package/dist/lib/init/claude-md.js.map +1 -0
- package/dist/lib/init/index.d.ts +33 -0
- package/dist/lib/init/index.d.ts.map +1 -0
- package/dist/lib/init/index.js +232 -0
- package/dist/lib/init/index.js.map +1 -0
- package/dist/lib/init/integration.d.ts +53 -0
- package/dist/lib/init/integration.d.ts.map +1 -0
- package/dist/lib/init/integration.js +237 -0
- package/dist/lib/init/integration.js.map +1 -0
- package/dist/lib/init/platform.d.ts +26 -0
- package/dist/lib/init/platform.d.ts.map +1 -0
- package/dist/lib/init/platform.js +188 -0
- package/dist/lib/init/platform.js.map +1 -0
- package/dist/lib/list/discover.d.ts +8 -0
- package/dist/lib/list/discover.d.ts.map +1 -0
- package/dist/lib/list/discover.js +77 -0
- package/dist/lib/list/discover.js.map +1 -0
- package/dist/lib/list/format.d.ts +9 -0
- package/dist/lib/list/format.d.ts.map +1 -0
- package/dist/lib/list/format.js +44 -0
- package/dist/lib/list/format.js.map +1 -0
- package/dist/lib/list/index.d.ts +12 -0
- package/dist/lib/list/index.d.ts.map +1 -0
- package/dist/lib/list/index.js +15 -0
- package/dist/lib/list/index.js.map +1 -0
- package/dist/lib/lock-file.d.ts +14 -0
- package/dist/lib/lock-file.d.ts.map +1 -0
- package/dist/lib/lock-file.js +80 -0
- package/dist/lib/lock-file.js.map +1 -0
- package/dist/lib/mcp/build-info.d.ts +9 -0
- package/dist/lib/mcp/build-info.d.ts.map +1 -0
- package/dist/lib/mcp/build-info.js +10 -0
- package/dist/lib/mcp/build-info.js.map +1 -0
- package/dist/lib/mcp/errors.d.ts +23 -0
- package/dist/lib/mcp/errors.d.ts.map +1 -0
- package/dist/lib/mcp/errors.js +25 -0
- package/dist/lib/mcp/errors.js.map +1 -0
- package/dist/lib/mcp/parse/frontmatter.d.ts +22 -0
- package/dist/lib/mcp/parse/frontmatter.d.ts.map +1 -0
- package/dist/lib/mcp/parse/frontmatter.js +49 -0
- package/dist/lib/mcp/parse/frontmatter.js.map +1 -0
- package/dist/lib/mcp/parse/gate-registry.d.ts +19 -0
- package/dist/lib/mcp/parse/gate-registry.d.ts.map +1 -0
- package/dist/lib/mcp/parse/gate-registry.js +68 -0
- package/dist/lib/mcp/parse/gate-registry.js.map +1 -0
- package/dist/lib/mcp/parse/paths.d.ts +21 -0
- package/dist/lib/mcp/parse/paths.d.ts.map +1 -0
- package/dist/lib/mcp/parse/paths.js +83 -0
- package/dist/lib/mcp/parse/paths.js.map +1 -0
- package/dist/lib/mcp/pin/errors.d.ts +11 -0
- package/dist/lib/mcp/pin/errors.d.ts.map +1 -0
- package/dist/lib/mcp/pin/errors.js +32 -0
- package/dist/lib/mcp/pin/errors.js.map +1 -0
- package/dist/lib/mcp/pin/index.d.ts +18 -0
- package/dist/lib/mcp/pin/index.d.ts.map +1 -0
- package/dist/lib/mcp/pin/index.js +29 -0
- package/dist/lib/mcp/pin/index.js.map +1 -0
- package/dist/lib/mcp/pin/read.d.ts +24 -0
- package/dist/lib/mcp/pin/read.d.ts.map +1 -0
- package/dist/lib/mcp/pin/read.js +64 -0
- package/dist/lib/mcp/pin/read.js.map +1 -0
- package/dist/lib/mcp/pin/resolve.d.ts +12 -0
- package/dist/lib/mcp/pin/resolve.d.ts.map +1 -0
- package/dist/lib/mcp/pin/resolve.js +33 -0
- package/dist/lib/mcp/pin/resolve.js.map +1 -0
- package/dist/lib/mcp/prompts/evaluate-cascade.d.ts +14 -0
- package/dist/lib/mcp/prompts/evaluate-cascade.d.ts.map +1 -0
- package/dist/lib/mcp/prompts/evaluate-cascade.js +147 -0
- package/dist/lib/mcp/prompts/evaluate-cascade.js.map +1 -0
- package/dist/lib/mcp/prompts/index.d.ts +9 -0
- package/dist/lib/mcp/prompts/index.d.ts.map +1 -0
- package/dist/lib/mcp/prompts/index.js +23 -0
- package/dist/lib/mcp/prompts/index.js.map +1 -0
- package/dist/lib/mcp/prompts/propose-adr.d.ts +12 -0
- package/dist/lib/mcp/prompts/propose-adr.d.ts.map +1 -0
- package/dist/lib/mcp/prompts/propose-adr.js +94 -0
- package/dist/lib/mcp/prompts/propose-adr.js.map +1 -0
- package/dist/lib/mcp/prompts/review-data-model-change.d.ts +10 -0
- package/dist/lib/mcp/prompts/review-data-model-change.d.ts.map +1 -0
- package/dist/lib/mcp/prompts/review-data-model-change.js +134 -0
- package/dist/lib/mcp/prompts/review-data-model-change.js.map +1 -0
- package/dist/lib/mcp/prompts/template-loader.d.ts +29 -0
- package/dist/lib/mcp/prompts/template-loader.d.ts.map +1 -0
- package/dist/lib/mcp/prompts/template-loader.js +44 -0
- package/dist/lib/mcp/prompts/template-loader.js.map +1 -0
- package/dist/lib/mcp/prompts/types.d.ts +17 -0
- package/dist/lib/mcp/prompts/types.d.ts.map +1 -0
- package/dist/lib/mcp/prompts/types.js +10 -0
- package/dist/lib/mcp/prompts/types.js.map +1 -0
- package/dist/lib/mcp/prompts/write-capability-spec.d.ts +8 -0
- package/dist/lib/mcp/prompts/write-capability-spec.d.ts.map +1 -0
- package/dist/lib/mcp/prompts/write-capability-spec.js +85 -0
- package/dist/lib/mcp/prompts/write-capability-spec.js.map +1 -0
- package/dist/lib/mcp/prompts/write-feature-spec.d.ts +10 -0
- package/dist/lib/mcp/prompts/write-feature-spec.d.ts.map +1 -0
- package/dist/lib/mcp/prompts/write-feature-spec.js +94 -0
- package/dist/lib/mcp/prompts/write-feature-spec.js.map +1 -0
- package/dist/lib/mcp/prompts/write-work-order.d.ts +7 -0
- package/dist/lib/mcp/prompts/write-work-order.d.ts.map +1 -0
- package/dist/lib/mcp/prompts/write-work-order.js +69 -0
- package/dist/lib/mcp/prompts/write-work-order.js.map +1 -0
- package/dist/lib/mcp/reader.d.ts +37 -0
- package/dist/lib/mcp/reader.d.ts.map +1 -0
- package/dist/lib/mcp/reader.js +93 -0
- package/dist/lib/mcp/reader.js.map +1 -0
- package/dist/lib/mcp/resources/adrs.d.ts +3 -0
- package/dist/lib/mcp/resources/adrs.d.ts.map +1 -0
- package/dist/lib/mcp/resources/adrs.js +97 -0
- package/dist/lib/mcp/resources/adrs.js.map +1 -0
- package/dist/lib/mcp/resources/data-models.d.ts +14 -0
- package/dist/lib/mcp/resources/data-models.d.ts.map +1 -0
- package/dist/lib/mcp/resources/data-models.js +81 -0
- package/dist/lib/mcp/resources/data-models.js.map +1 -0
- package/dist/lib/mcp/resources/gates.d.ts +9 -0
- package/dist/lib/mcp/resources/gates.d.ts.map +1 -0
- package/dist/lib/mcp/resources/gates.js +90 -0
- package/dist/lib/mcp/resources/gates.js.map +1 -0
- package/dist/lib/mcp/resources/glossary.d.ts +16 -0
- package/dist/lib/mcp/resources/glossary.d.ts.map +1 -0
- package/dist/lib/mcp/resources/glossary.js +87 -0
- package/dist/lib/mcp/resources/glossary.js.map +1 -0
- package/dist/lib/mcp/resources/specs.d.ts +23 -0
- package/dist/lib/mcp/resources/specs.d.ts.map +1 -0
- package/dist/lib/mcp/resources/specs.js +151 -0
- package/dist/lib/mcp/resources/specs.js.map +1 -0
- package/dist/lib/mcp/resources/version.d.ts +3 -0
- package/dist/lib/mcp/resources/version.d.ts.map +1 -0
- package/dist/lib/mcp/resources/version.js +45 -0
- package/dist/lib/mcp/resources/version.js.map +1 -0
- package/dist/lib/mcp/server.d.ts +29 -0
- package/dist/lib/mcp/server.d.ts.map +1 -0
- package/dist/lib/mcp/server.js +104 -0
- package/dist/lib/mcp/server.js.map +1 -0
- package/dist/lib/mcp/tools/cascade-impact.d.ts +22 -0
- package/dist/lib/mcp/tools/cascade-impact.d.ts.map +1 -0
- package/dist/lib/mcp/tools/cascade-impact.js +53 -0
- package/dist/lib/mcp/tools/cascade-impact.js.map +1 -0
- package/dist/lib/mcp/tools/find-consumers-of-contract.d.ts +7 -0
- package/dist/lib/mcp/tools/find-consumers-of-contract.d.ts.map +1 -0
- package/dist/lib/mcp/tools/find-consumers-of-contract.js +70 -0
- package/dist/lib/mcp/tools/find-consumers-of-contract.js.map +1 -0
- package/dist/lib/mcp/tools/find-consumers.d.ts +7 -0
- package/dist/lib/mcp/tools/find-consumers.d.ts.map +1 -0
- package/dist/lib/mcp/tools/find-consumers.js +52 -0
- package/dist/lib/mcp/tools/find-consumers.js.map +1 -0
- package/dist/lib/mcp/tools/find-dependencies.d.ts +8 -0
- package/dist/lib/mcp/tools/find-dependencies.d.ts.map +1 -0
- package/dist/lib/mcp/tools/find-dependencies.js +89 -0
- package/dist/lib/mcp/tools/find-dependencies.js.map +1 -0
- package/dist/lib/mcp/tools/find-dependents.d.ts +8 -0
- package/dist/lib/mcp/tools/find-dependents.d.ts.map +1 -0
- package/dist/lib/mcp/tools/find-dependents.js +89 -0
- package/dist/lib/mcp/tools/find-dependents.js.map +1 -0
- package/dist/lib/mcp/tools/find-producers.d.ts +8 -0
- package/dist/lib/mcp/tools/find-producers.d.ts.map +1 -0
- package/dist/lib/mcp/tools/find-producers.js +57 -0
- package/dist/lib/mcp/tools/find-producers.js.map +1 -0
- package/dist/lib/mcp/tools/find-related-specs.d.ts +9 -0
- package/dist/lib/mcp/tools/find-related-specs.d.ts.map +1 -0
- package/dist/lib/mcp/tools/find-related-specs.js +92 -0
- package/dist/lib/mcp/tools/find-related-specs.js.map +1 -0
- package/dist/lib/mcp/tools/list-adrs.d.ts +3 -0
- package/dist/lib/mcp/tools/list-adrs.d.ts.map +1 -0
- package/dist/lib/mcp/tools/list-adrs.js +73 -0
- package/dist/lib/mcp/tools/list-adrs.js.map +1 -0
- package/dist/lib/mcp/tools/query-gate-status.d.ts +3 -0
- package/dist/lib/mcp/tools/query-gate-status.d.ts.map +1 -0
- package/dist/lib/mcp/tools/query-gate-status.js +82 -0
- package/dist/lib/mcp/tools/query-gate-status.js.map +1 -0
- package/dist/lib/mcp/tools/search-specs.d.ts +12 -0
- package/dist/lib/mcp/tools/search-specs.d.ts.map +1 -0
- package/dist/lib/mcp/tools/search-specs.js +151 -0
- package/dist/lib/mcp/tools/search-specs.js.map +1 -0
- package/dist/lib/mcp/workspace.d.ts +25 -0
- package/dist/lib/mcp/workspace.d.ts.map +1 -0
- package/dist/lib/mcp/workspace.js +129 -0
- package/dist/lib/mcp/workspace.js.map +1 -0
- package/dist/lib/mcp-seed/entries.d.ts +19 -0
- package/dist/lib/mcp-seed/entries.d.ts.map +1 -0
- package/dist/lib/mcp-seed/entries.js +14 -0
- package/dist/lib/mcp-seed/entries.js.map +1 -0
- package/dist/lib/mcp-seed/index.d.ts +36 -0
- package/dist/lib/mcp-seed/index.d.ts.map +1 -0
- package/dist/lib/mcp-seed/index.js +28 -0
- package/dist/lib/mcp-seed/index.js.map +1 -0
- package/dist/lib/mcp-seed/merge.d.ts +34 -0
- package/dist/lib/mcp-seed/merge.d.ts.map +1 -0
- package/dist/lib/mcp-seed/merge.js +99 -0
- package/dist/lib/mcp-seed/merge.js.map +1 -0
- package/dist/lib/mcp-seed/types.d.ts +24 -0
- package/dist/lib/mcp-seed/types.d.ts.map +1 -0
- package/dist/lib/mcp-seed/types.js +13 -0
- package/dist/lib/mcp-seed/types.js.map +1 -0
- package/dist/lib/plan/index.d.ts +19 -0
- package/dist/lib/plan/index.d.ts.map +1 -0
- package/dist/lib/plan/index.js +69 -0
- package/dist/lib/plan/index.js.map +1 -0
- package/dist/lib/plan/read-sdd.d.ts +46 -0
- package/dist/lib/plan/read-sdd.d.ts.map +1 -0
- package/dist/lib/plan/read-sdd.js +102 -0
- package/dist/lib/plan/read-sdd.js.map +1 -0
- package/dist/lib/plan/render-template.d.ts +8 -0
- package/dist/lib/plan/render-template.d.ts.map +1 -0
- package/dist/lib/plan/render-template.js +60 -0
- package/dist/lib/plan/render-template.js.map +1 -0
- package/dist/lib/repo-kind.d.ts +20 -0
- package/dist/lib/repo-kind.d.ts.map +1 -0
- package/dist/lib/repo-kind.js +73 -0
- package/dist/lib/repo-kind.js.map +1 -0
- package/dist/lib/scripts.d.ts +2 -0
- package/dist/lib/scripts.d.ts.map +1 -0
- package/dist/lib/scripts.js +7 -0
- package/dist/lib/scripts.js.map +1 -0
- package/dist/lib/sdd-index/cascade.d.ts +46 -0
- package/dist/lib/sdd-index/cascade.d.ts.map +1 -0
- package/dist/lib/sdd-index/cascade.js +91 -0
- package/dist/lib/sdd-index/cascade.js.map +1 -0
- package/dist/lib/sdd-index/contracts.d.ts +29 -0
- package/dist/lib/sdd-index/contracts.d.ts.map +1 -0
- package/dist/lib/sdd-index/contracts.js +216 -0
- package/dist/lib/sdd-index/contracts.js.map +1 -0
- package/dist/lib/sdd-index/data-model.d.ts +13 -0
- package/dist/lib/sdd-index/data-model.d.ts.map +1 -0
- package/dist/lib/sdd-index/data-model.js +23 -0
- package/dist/lib/sdd-index/data-model.js.map +1 -0
- package/dist/lib/sdd-index/execution-map.d.ts +34 -0
- package/dist/lib/sdd-index/execution-map.d.ts.map +1 -0
- package/dist/lib/sdd-index/execution-map.js +105 -0
- package/dist/lib/sdd-index/execution-map.js.map +1 -0
- package/dist/lib/sdd-index/graph.d.ts +28 -0
- package/dist/lib/sdd-index/graph.d.ts.map +1 -0
- package/dist/lib/sdd-index/graph.js +122 -0
- package/dist/lib/sdd-index/graph.js.map +1 -0
- package/dist/lib/sdd-index/index.d.ts +29 -0
- package/dist/lib/sdd-index/index.d.ts.map +1 -0
- package/dist/lib/sdd-index/index.js +79 -0
- package/dist/lib/sdd-index/index.js.map +1 -0
- package/dist/lib/sdd-index/repo-config.d.ts +23 -0
- package/dist/lib/sdd-index/repo-config.d.ts.map +1 -0
- package/dist/lib/sdd-index/repo-config.js +150 -0
- package/dist/lib/sdd-index/repo-config.js.map +1 -0
- package/dist/lib/sdd-index/types.d.ts +106 -0
- package/dist/lib/sdd-index/types.d.ts.map +1 -0
- package/dist/lib/sdd-index/types.js +13 -0
- package/dist/lib/sdd-index/types.js.map +1 -0
- package/dist/lib/sdd-index/watch.d.ts +24 -0
- package/dist/lib/sdd-index/watch.d.ts.map +1 -0
- package/dist/lib/sdd-index/watch.js +112 -0
- package/dist/lib/sdd-index/watch.js.map +1 -0
- package/dist/lib/spawn.d.ts +8 -0
- package/dist/lib/spawn.d.ts.map +1 -0
- package/dist/lib/spawn.js +16 -0
- package/dist/lib/spawn.js.map +1 -0
- package/dist/lib/sync/apply.d.ts +3 -0
- package/dist/lib/sync/apply.d.ts.map +1 -0
- package/dist/lib/sync/apply.js +16 -0
- package/dist/lib/sync/apply.js.map +1 -0
- package/dist/lib/sync/diff.d.ts +8 -0
- package/dist/lib/sync/diff.d.ts.map +1 -0
- package/dist/lib/sync/diff.js +48 -0
- package/dist/lib/sync/diff.js.map +1 -0
- package/dist/lib/sync/index.d.ts +17 -0
- package/dist/lib/sync/index.d.ts.map +1 -0
- package/dist/lib/sync/index.js +184 -0
- package/dist/lib/sync/index.js.map +1 -0
- package/dist/lib/sync/settings-merge.d.ts +45 -0
- package/dist/lib/sync/settings-merge.d.ts.map +1 -0
- package/dist/lib/sync/settings-merge.js +109 -0
- package/dist/lib/sync/settings-merge.js.map +1 -0
- package/dist/lib/sync/source-tag.d.ts +5 -0
- package/dist/lib/sync/source-tag.d.ts.map +1 -0
- package/dist/lib/sync/source-tag.js +34 -0
- package/dist/lib/sync/source-tag.js.map +1 -0
- package/dist/lib/sync/yaml-block-merge.d.ts +50 -0
- package/dist/lib/sync/yaml-block-merge.d.ts.map +1 -0
- package/dist/lib/sync/yaml-block-merge.js +113 -0
- package/dist/lib/sync/yaml-block-merge.js.map +1 -0
- package/dist/lib/validate/aggregate.d.ts +13 -0
- package/dist/lib/validate/aggregate.d.ts.map +1 -0
- package/dist/lib/validate/aggregate.js +35 -0
- package/dist/lib/validate/aggregate.js.map +1 -0
- package/dist/lib/validate/dispatch.d.ts +34 -0
- package/dist/lib/validate/dispatch.d.ts.map +1 -0
- package/dist/lib/validate/dispatch.js +167 -0
- package/dist/lib/validate/dispatch.js.map +1 -0
- package/dist/lib/validate/index.d.ts +13 -0
- package/dist/lib/validate/index.d.ts.map +1 -0
- package/dist/lib/validate/index.js +69 -0
- package/dist/lib/validate/index.js.map +1 -0
- package/dist/lib/validate/runner.d.ts +16 -0
- package/dist/lib/validate/runner.d.ts.map +1 -0
- package/dist/lib/validate/runner.js +66 -0
- package/dist/lib/validate/runner.js.map +1 -0
- package/dist/verbs/generate-claude-md.d.ts +3 -0
- package/dist/verbs/generate-claude-md.d.ts.map +1 -0
- package/dist/verbs/generate-claude-md.js +36 -0
- package/dist/verbs/generate-claude-md.js.map +1 -0
- package/dist/verbs/init.d.ts +3 -0
- package/dist/verbs/init.d.ts.map +1 -0
- package/dist/verbs/init.js +90 -0
- package/dist/verbs/init.js.map +1 -0
- package/dist/verbs/list.d.ts +3 -0
- package/dist/verbs/list.d.ts.map +1 -0
- package/dist/verbs/list.js +43 -0
- package/dist/verbs/list.js.map +1 -0
- package/dist/verbs/mcp.d.ts +3 -0
- package/dist/verbs/mcp.d.ts.map +1 -0
- package/dist/verbs/mcp.js +22 -0
- package/dist/verbs/mcp.js.map +1 -0
- package/dist/verbs/plan.d.ts +3 -0
- package/dist/verbs/plan.d.ts.map +1 -0
- package/dist/verbs/plan.js +41 -0
- package/dist/verbs/plan.js.map +1 -0
- package/dist/verbs/sync.d.ts +3 -0
- package/dist/verbs/sync.d.ts.map +1 -0
- package/dist/verbs/sync.js +27 -0
- package/dist/verbs/sync.js.map +1 -0
- package/dist/verbs/validate.d.ts +3 -0
- package/dist/verbs/validate.d.ts.map +1 -0
- package/dist/verbs/validate.js +21 -0
- package/dist/verbs/validate.js.map +1 -0
- package/package.json +61 -0
- package/scripts/README.md +48 -0
- package/scripts/sync-method-baseline.sh +258 -0
- package/scripts/validate-app-dependencies.sh +289 -0
- package/scripts/validate-app-docs.sh +185 -0
- package/scripts/validate-integration-docs.sh +222 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { runInit } from "../lib/init/index.js";
|
|
2
|
+
import { INTEGRATION_PROFILE_TYPES, isIntegrationProfileType, } from "../lib/init/integration.js";
|
|
3
|
+
const VALID_PROFILES = [
|
|
4
|
+
"platform",
|
|
5
|
+
"application",
|
|
6
|
+
"integration",
|
|
7
|
+
];
|
|
8
|
+
export function registerInit(program) {
|
|
9
|
+
program
|
|
10
|
+
.command("init")
|
|
11
|
+
.description("Scaffold a new SDD repository from a method baseline bundle")
|
|
12
|
+
.requiredOption("--profile <profile>", "repo profile: platform | application | integration")
|
|
13
|
+
.requiredOption("--bundle <path>", "path to the method-baseline tarball")
|
|
14
|
+
.option("--app-id <id>", "app identifier (required for --profile application)")
|
|
15
|
+
.option("--integration-id <id>", "integration identifier (required for --profile integration)")
|
|
16
|
+
.option("--profile-type <type>", `integration profile type: ${INTEGRATION_PROFILE_TYPES.join(" | ")}`)
|
|
17
|
+
.option("--provider-name <name>", "human-readable provider name")
|
|
18
|
+
.option("--published-by <value>", "integration publisher: internal | third-party")
|
|
19
|
+
.option("--sdk-version <ver>", "integration SDK version")
|
|
20
|
+
.option("--supported-asset-types <csv>", "comma-separated supported asset types (default: vehicle)")
|
|
21
|
+
.option("--inbound-only", "mark integration as inbound-only")
|
|
22
|
+
.option("--outbound-only", "mark integration as outbound-only")
|
|
23
|
+
.option("--platform-name <name>", "human-readable platform name (required for --profile platform)")
|
|
24
|
+
.option("--platform-id <slug>", "kebab-case platform slug (defaults to kebab-case of --platform-name)")
|
|
25
|
+
.option("--target-dir <dir>", "target directory", process.cwd())
|
|
26
|
+
.option("--allow-existing", "allow bootstrapping into a non-empty directory")
|
|
27
|
+
.option("--no-git-init", "skip git init")
|
|
28
|
+
.option("--dry-run", "report planned actions without writing")
|
|
29
|
+
.option("--platform-root <dir>", "path to sdd-method for post-bootstrap app-dependencies validation")
|
|
30
|
+
.option("--agent-harness <name>", "opt into a harness-specific hooks baseline. Supported: claude-code")
|
|
31
|
+
.action(async (opts) => {
|
|
32
|
+
if (!VALID_PROFILES.includes(opts.profile)) {
|
|
33
|
+
process.stderr.write(`[FAIL] --profile must be one of: ${VALID_PROFILES.join(", ")}\n`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
const profile = opts.profile;
|
|
37
|
+
if (profile === "integration" && opts.profileType) {
|
|
38
|
+
if (!isIntegrationProfileType(opts.profileType)) {
|
|
39
|
+
process.stderr.write(`[FAIL] --profile-type must be one of: ${INTEGRATION_PROFILE_TYPES.join(", ")}\n`);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (opts.publishedBy !== undefined &&
|
|
44
|
+
opts.publishedBy !== "internal" &&
|
|
45
|
+
opts.publishedBy !== "third-party") {
|
|
46
|
+
process.stderr.write(`[FAIL] --published-by must be one of: internal, third-party\n`);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
const supportedAssetTypes = opts.supportedAssetTypes
|
|
50
|
+
? opts.supportedAssetTypes
|
|
51
|
+
.split(",")
|
|
52
|
+
.map((s) => s.trim())
|
|
53
|
+
.filter((s) => s.length > 0)
|
|
54
|
+
: undefined;
|
|
55
|
+
const { exitCode } = await runInit({
|
|
56
|
+
profile,
|
|
57
|
+
bundle: opts.bundle,
|
|
58
|
+
targetDir: opts.targetDir,
|
|
59
|
+
allowExisting: opts.allowExisting === true,
|
|
60
|
+
gitInit: opts.gitInit,
|
|
61
|
+
dryRun: opts.dryRun === true,
|
|
62
|
+
...(opts.platformRoot ? { platformRoot: opts.platformRoot } : {}),
|
|
63
|
+
...(opts.appId ? { appId: opts.appId } : {}),
|
|
64
|
+
...(opts.integrationId ? { integrationId: opts.integrationId } : {}),
|
|
65
|
+
...(opts.profileType && isIntegrationProfileType(opts.profileType)
|
|
66
|
+
? { profileType: opts.profileType }
|
|
67
|
+
: {}),
|
|
68
|
+
...(opts.providerName ? { providerName: opts.providerName } : {}),
|
|
69
|
+
...(opts.publishedBy === "internal" || opts.publishedBy === "third-party"
|
|
70
|
+
? { publishedBy: opts.publishedBy }
|
|
71
|
+
: {}),
|
|
72
|
+
...(opts.sdkVersion ? { sdkVersion: opts.sdkVersion } : {}),
|
|
73
|
+
...(supportedAssetTypes ? { supportedAssetTypes } : {}),
|
|
74
|
+
...(opts.inboundOnly !== undefined ? { inboundOnly: opts.inboundOnly } : {}),
|
|
75
|
+
...(opts.outboundOnly !== undefined ? { outboundOnly: opts.outboundOnly } : {}),
|
|
76
|
+
...(opts.platformName ? { platformName: opts.platformName } : {}),
|
|
77
|
+
...(opts.platformId ? { platformId: opts.platformId } : {}),
|
|
78
|
+
...(opts.agentHarness === "claude-code"
|
|
79
|
+
? { agentHarness: opts.agentHarness }
|
|
80
|
+
: {}),
|
|
81
|
+
});
|
|
82
|
+
if (opts.agentHarness !== undefined &&
|
|
83
|
+
opts.agentHarness !== "claude-code") {
|
|
84
|
+
process.stderr.write(`[WARN] Unsupported --agent-harness "${opts.agentHarness}"; only "claude-code" is recognised today. Hooks baseline skipped.\n`);
|
|
85
|
+
}
|
|
86
|
+
if (exitCode !== 0)
|
|
87
|
+
process.exit(exitCode);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/verbs/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/verbs/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8BnD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { runList } from "../lib/list/index.js";
|
|
2
|
+
const VALID_PROFILES = [
|
|
3
|
+
"platform",
|
|
4
|
+
"application",
|
|
5
|
+
"integration",
|
|
6
|
+
];
|
|
7
|
+
export function registerList(program) {
|
|
8
|
+
program
|
|
9
|
+
.command("list")
|
|
10
|
+
.description("Enumerate SDD repositories discoverable in the current workspace")
|
|
11
|
+
.option("--profile <profile>", "filter by profile: platform | application | integration")
|
|
12
|
+
.option("--workspace-root <path>", "workspace directory to walk (repeatable; defaults to cwd)", collectRoots, [])
|
|
13
|
+
.option("--format <format>", "output format: text | json", "text")
|
|
14
|
+
.action(async (opts) => {
|
|
15
|
+
const profileFilter = parseProfile(opts.profile);
|
|
16
|
+
const format = parseFormat(opts.format);
|
|
17
|
+
const { exitCode } = await runList({
|
|
18
|
+
workspaceRoots: opts.workspaceRoot ?? [],
|
|
19
|
+
format,
|
|
20
|
+
...(profileFilter ? { profileFilter } : {}),
|
|
21
|
+
}, (s) => process.stdout.write(s));
|
|
22
|
+
if (exitCode !== 0)
|
|
23
|
+
process.exit(exitCode);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function collectRoots(value, prior) {
|
|
27
|
+
prior.push(value);
|
|
28
|
+
return prior;
|
|
29
|
+
}
|
|
30
|
+
function parseProfile(value) {
|
|
31
|
+
if (value === undefined)
|
|
32
|
+
return undefined;
|
|
33
|
+
if (!VALID_PROFILES.includes(value)) {
|
|
34
|
+
throw new Error(`Unknown --profile "${value}". Expected one of: ${VALID_PROFILES.join(", ")}`);
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
function parseFormat(value) {
|
|
39
|
+
if (value === "text" || value === "json")
|
|
40
|
+
return value;
|
|
41
|
+
throw new Error(`Unknown --format "${value}". Expected "text" or "json".`);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/verbs/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,MAAM,cAAc,GAAuB;IACzC,UAAU;IACV,aAAa;IACb,aAAa;CACd,CAAC;AAQF,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,kEAAkE,CACnE;SACA,MAAM,CACL,qBAAqB,EACrB,yDAAyD,CAC1D;SACA,MAAM,CACL,yBAAyB,EACzB,2DAA2D,EAC3D,YAAY,EACZ,EAAc,CACf;SACA,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;QAC3C,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAChC;YACE,cAAc,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;YACxC,MAAM;YACN,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/B,CAAC;QACF,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,KAAe;IAClD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAgB,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,sBAAsB,KAAK,uBAAuB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9E,CAAC;IACJ,CAAC;IACD,OAAO,KAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,+BAA+B,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/verbs/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0BlD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { runMcpServe } from "../lib/mcp/server.js";
|
|
2
|
+
export function registerMcp(program) {
|
|
3
|
+
const mcp = program
|
|
4
|
+
.command("mcp")
|
|
5
|
+
.description("Model Context Protocol (MCP) server management. See `sdd-cli mcp serve --help` for the stdio server.");
|
|
6
|
+
mcp
|
|
7
|
+
.command("serve")
|
|
8
|
+
.description("Start a local stdio MCP server exposing the SDD as resources and tools. Spawned by an MCP client (e.g. Claude Code) over stdio.")
|
|
9
|
+
.option("--sdd-repo <dir>", "explicit SDD repository path; overrides sibling discovery but is itself overridden by the SDD_REPO_PATH environment variable")
|
|
10
|
+
.action(async (opts) => {
|
|
11
|
+
try {
|
|
12
|
+
await runMcpServe({
|
|
13
|
+
...(opts.sddRepo ? { sddRepo: opts.sddRepo } : {}),
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
// Fatal errors are already surfaced on stderr by runMcpServe.
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/verbs/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMnD,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CACV,sGAAsG,CACvG,CAAC;IAEJ,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CACV,iIAAiI,CAClI;SACA,MAAM,CACL,kBAAkB,EAClB,8HAA8H,CAC/H;SACA,MAAM,CAAC,KAAK,EAAE,IAA8B,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,WAAW,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/verbs/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4CnD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { runPlanPilot } from "../lib/plan/index.js";
|
|
2
|
+
export function registerPlan(program) {
|
|
3
|
+
program
|
|
4
|
+
.command("plan")
|
|
5
|
+
.description("Scaffold a plan markdown file from a method-distributed template. Currently supports --pilot for pilot-kickoff plans; future subcommands may add --initiative / --migration.")
|
|
6
|
+
.option("--pilot", "scaffold a pilot-kickoff plan (requires --service, --capability, --domain)", false)
|
|
7
|
+
.option("--service <name>", "service / pilot name, e.g. party-management")
|
|
8
|
+
.option("--capability <name>", "capability under test, e.g. organization-management")
|
|
9
|
+
.option("--domain <name>", "domain the capability belongs to, e.g. party")
|
|
10
|
+
.option("--workspace-root <path>", "SDD root (defaults to cwd)")
|
|
11
|
+
.option("--output <path>", "destination file (defaults to content/product/plans/{service}-pilot-kickoff.md)")
|
|
12
|
+
.option("--dry-run", "print rendered output to stdout without writing", false)
|
|
13
|
+
.action(async (opts) => {
|
|
14
|
+
if (opts.pilot !== true) {
|
|
15
|
+
process.stderr.write("[FAIL] plan: no mode specified. Pass --pilot (other modes not yet implemented).\n");
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
const missing = [];
|
|
19
|
+
if (!opts.service)
|
|
20
|
+
missing.push("--service");
|
|
21
|
+
if (!opts.capability)
|
|
22
|
+
missing.push("--capability");
|
|
23
|
+
if (!opts.domain)
|
|
24
|
+
missing.push("--domain");
|
|
25
|
+
if (missing.length > 0) {
|
|
26
|
+
process.stderr.write(`[FAIL] plan --pilot: missing required flag(s): ${missing.join(", ")}\n`);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const result = await runPlanPilot({
|
|
30
|
+
sddRoot: opts.workspaceRoot ?? process.cwd(),
|
|
31
|
+
service: opts.service,
|
|
32
|
+
capability: opts.capability,
|
|
33
|
+
domain: opts.domain,
|
|
34
|
+
...(opts.output !== undefined ? { outputPath: opts.output } : {}),
|
|
35
|
+
...(opts.dryRun === true ? { dryRun: true } : {}),
|
|
36
|
+
}, (s) => process.stdout.write(s));
|
|
37
|
+
if (result.exitCode !== 0)
|
|
38
|
+
process.exit(result.exitCode);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/verbs/plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAYpD,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,8KAA8K,CAC/K;SACA,MAAM,CAAC,SAAS,EAAE,4EAA4E,EAAE,KAAK,CAAC;SACtG,MAAM,CAAC,kBAAkB,EAAE,6CAA6C,CAAC;SACzE,MAAM,CAAC,qBAAqB,EAAE,qDAAqD,CAAC;SACpF,MAAM,CAAC,iBAAiB,EAAE,8CAA8C,CAAC;SACzE,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,CAAC;SAC/D,MAAM,CAAC,iBAAiB,EAAE,iFAAiF,CAAC;SAC5G,MAAM,CAAC,WAAW,EAAE,iDAAiD,EAAE,KAAK,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;QAC3C,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mFAAmF,CACpF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kDAAkD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACzE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B;YACE,OAAO,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE;YAC5C,OAAO,EAAE,IAAI,CAAC,OAAQ;YACtB,UAAU,EAAE,IAAI,CAAC,UAAW;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAO;YACpB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/B,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/verbs/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+BnD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { runSync } from "../lib/sync/index.js";
|
|
2
|
+
export function registerSync(program) {
|
|
3
|
+
program
|
|
4
|
+
.command("sync")
|
|
5
|
+
.description("Pull the latest upstream method baseline into this SDD repository")
|
|
6
|
+
.requiredOption("--bundle <path>", "path to the method-baseline tarball")
|
|
7
|
+
.option("--target-repo <dir>", "target SDD repo", process.cwd())
|
|
8
|
+
.option("--dry-run", "report planned actions without writing")
|
|
9
|
+
.option("--allow-overwrite", "accept overwrites of locally-modified method content")
|
|
10
|
+
.option("--no-delete", "preserve files removed upstream")
|
|
11
|
+
.option("--agent-harness <name>", "refresh the harness-specific hooks baseline. Supported: claude-code")
|
|
12
|
+
.action(async (opts) => {
|
|
13
|
+
const { exitCode } = await runSync({
|
|
14
|
+
bundle: opts.bundle,
|
|
15
|
+
targetRepo: opts.targetRepo,
|
|
16
|
+
dryRun: opts.dryRun === true,
|
|
17
|
+
allowOverwrite: opts.allowOverwrite === true,
|
|
18
|
+
delete: opts.delete,
|
|
19
|
+
...(opts.agentHarness === "claude-code"
|
|
20
|
+
? { agentHarness: opts.agentHarness }
|
|
21
|
+
: {}),
|
|
22
|
+
});
|
|
23
|
+
if (exitCode !== 0)
|
|
24
|
+
process.exit(exitCode);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/verbs/sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAW/C,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,mEAAmE,CACpE;SACA,cAAc,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;SACxE,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CACL,mBAAmB,EACnB,sDAAsD,CACvD;SACA,MAAM,CAAC,aAAa,EAAE,iCAAiC,CAAC;SACxD,MAAM,CACL,wBAAwB,EACxB,qEAAqE,CACtE;SACA,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;QAC3C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;YAC5B,cAAc,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;YAC5C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,aAAa;gBACrC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;gBACrC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/verbs/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsBvD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { runValidate } from "../lib/validate/index.js";
|
|
2
|
+
export function registerValidate(program) {
|
|
3
|
+
program
|
|
4
|
+
.command("validate")
|
|
5
|
+
.description("Run the method-level validation suite for this SDD repository")
|
|
6
|
+
.option("--target-repo <dir>", "target SDD repo", process.cwd())
|
|
7
|
+
.option("--platform-root <dir>", "path to the sdd-method (or platform) repo, required for app-dependencies")
|
|
8
|
+
.option("--validator <name>", "run only the named validator")
|
|
9
|
+
.option("--strict", "treat warnings as failures")
|
|
10
|
+
.action(async (opts) => {
|
|
11
|
+
const { exitCode } = await runValidate({
|
|
12
|
+
targetRepo: opts.targetRepo,
|
|
13
|
+
...(opts.platformRoot ? { platformRoot: opts.platformRoot } : {}),
|
|
14
|
+
...(opts.validator ? { validator: opts.validator } : {}),
|
|
15
|
+
strict: opts.strict === true,
|
|
16
|
+
});
|
|
17
|
+
if (exitCode !== 0)
|
|
18
|
+
process.exit(exitCode);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/verbs/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AASvD,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CACV,+DAA+D,CAChE;SACA,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC/D,MAAM,CACL,uBAAuB,EACvB,0EAA0E,CAC3E;SACA,MAAM,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;SAC5D,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,IAA8B,EAAE,EAAE;QAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC;YACrC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;SAC7B,CAAC,CAAC;QACH,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sdd-method/sdd-cli",
|
|
3
|
+
"version": "0.9.0",
|
|
4
|
+
"description": "Method-layer CLI for SDD repository lifecycle — init, sync, validate, list, plan, generate-claude-md, mcp serve. v0.9.0 ships method enforcement automation Phases 0+1+2 per ADR 0129: GitHub Actions CI baseline seeded by init/sync (Layer 1 authoritative) and opt-in Claude Code hooks via --agent-harness claude-code (Layer 2 accelerator), both delegating to sdd-cli validate with per-entry ownership.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"sdd-method",
|
|
7
|
+
"sdd",
|
|
8
|
+
"spec-driven-development",
|
|
9
|
+
"cli"
|
|
10
|
+
],
|
|
11
|
+
"homepage": "https://github.com/tomfosteruk/sdd-cli#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/tomfosteruk/sdd-cli/issues"
|
|
14
|
+
},
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/tomfosteruk/sdd-cli.git"
|
|
18
|
+
},
|
|
19
|
+
"license": "Apache-2.0",
|
|
20
|
+
"author": "Tom Foster",
|
|
21
|
+
"type": "module",
|
|
22
|
+
"bin": {
|
|
23
|
+
"sdd-cli": "dist/cli.js"
|
|
24
|
+
},
|
|
25
|
+
"exports": {
|
|
26
|
+
".": "./dist/index.js"
|
|
27
|
+
},
|
|
28
|
+
"main": "./dist/index.js",
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"files": [
|
|
31
|
+
"dist",
|
|
32
|
+
"scripts",
|
|
33
|
+
"README.md",
|
|
34
|
+
"LICENSE",
|
|
35
|
+
"NOTICE"
|
|
36
|
+
],
|
|
37
|
+
"scripts": {
|
|
38
|
+
"build": "tsc",
|
|
39
|
+
"typecheck": "tsc --noEmit",
|
|
40
|
+
"test": "npm run build && vitest run",
|
|
41
|
+
"test:watch": "vitest",
|
|
42
|
+
"prepublishOnly": "npm run build"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^22.0.0",
|
|
46
|
+
"typescript": "^5.5.0",
|
|
47
|
+
"vitest": "^2.0.0"
|
|
48
|
+
},
|
|
49
|
+
"engines": {
|
|
50
|
+
"node": ">=20.0.0"
|
|
51
|
+
},
|
|
52
|
+
"publishConfig": {
|
|
53
|
+
"access": "public"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
57
|
+
"commander": "^12.1.0",
|
|
58
|
+
"yaml": "^2.5.0",
|
|
59
|
+
"zod": "^4.3.6"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Bundled upstream scripts
|
|
2
|
+
|
|
3
|
+
Frozen copies of bash scripts from
|
|
4
|
+
[`sdd-method`](https://github.com/tomfosteruk/sdd-method) that
|
|
5
|
+
`sdd-cli` either shells out to (`validate-*`) or retains as a regression
|
|
6
|
+
oracle (`sync-method-baseline.sh`, which is superseded by native TypeScript
|
|
7
|
+
sync in v0.2.0 but kept so `tests/parity/` can keep catching drift).
|
|
8
|
+
|
|
9
|
+
Files in this directory are **byte-identical** to their upstream source. Do
|
|
10
|
+
not edit here — edit upstream, then run the refresh procedure below to copy
|
|
11
|
+
the new version in. Byte-identity keeps `diff` usable as a drift-detection
|
|
12
|
+
signal.
|
|
13
|
+
|
|
14
|
+
## Provenance
|
|
15
|
+
|
|
16
|
+
| File | Upstream path | Pinned to |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| `sync-method-baseline.sh` | `orchestration/scripts/sync-method-baseline.sh` | `4d80826` |
|
|
19
|
+
| `validate-app-docs.sh` | `orchestration/scripts/validate-app-docs.sh` | `db4cb25` |
|
|
20
|
+
| `validate-app-dependencies.sh` | `orchestration/scripts/validate-app-dependencies.sh` | `db4cb25` |
|
|
21
|
+
| `validate-integration-docs.sh` | `orchestration/scripts/validate-integration-docs.sh` | `db4cb25` |
|
|
22
|
+
|
|
23
|
+
Only the validators that accept a `--*-root` flag are bundled. The
|
|
24
|
+
no-flag validators (`validate-adr-structure.sh`, `validate-spec-lifecycle.sh`,
|
|
25
|
+
`validate-runway-classification.sh`) compute their root as `SCRIPT_DIR/../..`,
|
|
26
|
+
which means they only make sense when run from the target repo's own
|
|
27
|
+
`orchestration/scripts/` directory (where `sync` places them). The
|
|
28
|
+
`sdd-cli validate` dispatcher spawns those directly from the target repo.
|
|
29
|
+
|
|
30
|
+
## Refresh procedure
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cp ../sdd-method/orchestration/scripts/<script>.sh scripts/
|
|
34
|
+
# Then update the SHA in this README and commit both together.
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Automation (pre-build sync step) is a later milestone. Refresh is currently
|
|
38
|
+
manual and visible.
|
|
39
|
+
|
|
40
|
+
## Lifecycle
|
|
41
|
+
|
|
42
|
+
The `sync-method-baseline.sh` oracle is frozen at 4a8cd05 and stays for
|
|
43
|
+
regression testing — the native TS sync is tested against it in
|
|
44
|
+
`tests/parity/`.
|
|
45
|
+
|
|
46
|
+
The `validate-*.sh` scripts are what `sdd-cli validate` spawns. Native TS
|
|
47
|
+
reimplementation of individual validators is v0.3.0+, smallest-first
|
|
48
|
+
(adr-structure, spec-lifecycle).
|