@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,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders .github/workflows/method-validation.yml per ADR 0129.
|
|
3
|
+
*
|
|
4
|
+
* The template in this file is the source of truth for what
|
|
5
|
+
* `sdd-cli init` / `sdd-cli sync` writes. It mirrors the
|
|
6
|
+
* human-readable `orchestration/templates/ci/method-validation.yml.hbs`
|
|
7
|
+
* in sdd-method; the two must stay in lockstep.
|
|
8
|
+
*
|
|
9
|
+
* Output wraps a `# method-managed: begin` / `# method-managed: end`
|
|
10
|
+
* block-marker pair so the sync path can preserve adopter-authored
|
|
11
|
+
* content outside the block.
|
|
12
|
+
*/
|
|
13
|
+
export const WORKFLOW_REL_PATH = ".github/workflows/method-validation.yml";
|
|
14
|
+
export const BLOCK_BEGIN = "# method-managed: begin";
|
|
15
|
+
export const BLOCK_END = "# method-managed: end";
|
|
16
|
+
/**
|
|
17
|
+
* Full file content (block + adopter-extension footer). Used by
|
|
18
|
+
* `sdd-cli init` to write a fresh workflow.
|
|
19
|
+
*/
|
|
20
|
+
export function renderMethodValidationWorkflow(profile) {
|
|
21
|
+
const methodBlock = buildMethodManagedBlock(profile);
|
|
22
|
+
return methodBlock + "\n\n# Adopter-specific jobs go in a separate workflow file\n# (e.g. .github/workflows/adopter-validation.yml) — see\n# docs/method/methods/ci-baseline-guide.md.\n";
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Method-managed slice only (begin marker through end marker). Used
|
|
26
|
+
* by `sdd-cli sync` as the `incomingBlock` argument to
|
|
27
|
+
* `writeMarkedBlockFile` so adopter content outside the markers is
|
|
28
|
+
* preserved verbatim.
|
|
29
|
+
*/
|
|
30
|
+
export function renderMethodManagedWorkflowBlock(profile) {
|
|
31
|
+
return buildMethodManagedBlock(profile);
|
|
32
|
+
}
|
|
33
|
+
function buildMethodManagedBlock(profile) {
|
|
34
|
+
const lines = [];
|
|
35
|
+
lines.push(BLOCK_BEGIN);
|
|
36
|
+
lines.push("# Method-distributed validation workflow per ADR 0129.", "# Refreshed by `sdd-cli sync`; content inside the method-managed", "# markers must not be hand-edited (sync refuses without --allow-overwrite).", `# Profile: ${profile}`, "", "name: Method Validation", "", "on:", " pull_request:", " push:", " branches: [main, master]", " workflow_dispatch:", "", "jobs:");
|
|
37
|
+
// All profiles: ADR + spec-lifecycle.
|
|
38
|
+
lines.push(...renderSddCliJob("validate-adr-structure", "Validate ADR metadata", "adr-structure"), ...renderSddCliJob("validate-spec-lifecycle", "Validate spec lifecycle", "spec-lifecycle"));
|
|
39
|
+
if (profile === "platform") {
|
|
40
|
+
lines.push(...renderSddCliJob("validate-traceability", "Validate traceability", "traceability"), ...renderSddCliJob("validate-runway-classification", "Validate runway classification", "runway-classification"), ...renderSddCliJob("validate-corpus-consistency", "Validate corpus consistency", "corpus-consistency"), ...renderSddCliJob("validate-config", "Validate configuration", "config"), ...renderBashJob("validate-cascade-completeness", "Validate cascade completeness", "bash orchestration/scripts/validate-cascade-completeness.sh all"), ...renderBashJob("validate-architecture-alignment", "Validate architecture alignment", "bash orchestration/scripts/validate-architecture-alignment.sh"));
|
|
41
|
+
}
|
|
42
|
+
else if (profile === "application") {
|
|
43
|
+
lines.push(...renderSddCliJob("validate-app-docs", "Validate app documentation", "app-docs"));
|
|
44
|
+
}
|
|
45
|
+
else if (profile === "integration") {
|
|
46
|
+
lines.push(...renderSddCliJob("validate-integration-docs", "Validate integration documentation", "integration-docs"));
|
|
47
|
+
}
|
|
48
|
+
lines.push(BLOCK_END);
|
|
49
|
+
return lines.join("\n");
|
|
50
|
+
}
|
|
51
|
+
function renderSddCliJob(jobName, stepDescription, validatorName) {
|
|
52
|
+
return [
|
|
53
|
+
"",
|
|
54
|
+
` ${jobName}:`,
|
|
55
|
+
` runs-on: ubuntu-latest`,
|
|
56
|
+
` steps:`,
|
|
57
|
+
` - uses: actions/checkout@v4`,
|
|
58
|
+
` - uses: actions/setup-node@v4`,
|
|
59
|
+
` with:`,
|
|
60
|
+
` node-version: "20"`,
|
|
61
|
+
` - name: Install sdd-cli`,
|
|
62
|
+
` run: npm install -g @sdd-method/sdd-cli`,
|
|
63
|
+
` - name: ${stepDescription}`,
|
|
64
|
+
` run: sdd-cli validate --target-repo . --validator ${validatorName}`,
|
|
65
|
+
];
|
|
66
|
+
}
|
|
67
|
+
function renderBashJob(jobName, stepDescription, command) {
|
|
68
|
+
return [
|
|
69
|
+
"",
|
|
70
|
+
` ${jobName}:`,
|
|
71
|
+
` runs-on: ubuntu-latest`,
|
|
72
|
+
` steps:`,
|
|
73
|
+
` - uses: actions/checkout@v4`,
|
|
74
|
+
` - name: ${stepDescription}`,
|
|
75
|
+
` run: ${command}`,
|
|
76
|
+
];
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=ci-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-workflow.js","sourceRoot":"","sources":["../../../src/lib/init/ci-workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { IntegrationProfileType } from "./integration.js";
|
|
2
|
+
export interface AppClaudeMdInput {
|
|
3
|
+
appId: string;
|
|
4
|
+
platformName?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface IntegrationClaudeMdInput {
|
|
7
|
+
integrationId: string;
|
|
8
|
+
profileType: IntegrationProfileType;
|
|
9
|
+
providerName?: string;
|
|
10
|
+
platformName?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface PlatformClaudeMdInput {
|
|
13
|
+
platformName: string;
|
|
14
|
+
platformId: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function renderAppClaudeMd(input: AppClaudeMdInput): string;
|
|
17
|
+
export declare function renderIntegrationClaudeMd(input: IntegrationClaudeMdInput): string;
|
|
18
|
+
export declare function renderPlatformClaudeMd(input: PlatformClaudeMdInput): string;
|
|
19
|
+
//# sourceMappingURL=claude-md.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../../src/lib/init/claude-md.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,sBAAsB,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AA8BD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAoCjE;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,MAAM,CAsCR;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAmC3E"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
const LIVE_CONTEXT_SECTION = [
|
|
2
|
+
"## Live Context via MCP",
|
|
3
|
+
"",
|
|
4
|
+
"This repo is wired for the **sdd-mcp** Model Context Protocol server (see `.claude/settings.json`). Agents should prefer live MCP queries over scanning the repo by hand. Useful entry points:",
|
|
5
|
+
"",
|
|
6
|
+
"- `list_adrs` / `sdd://adrs/catalogue` — ADR discovery",
|
|
7
|
+
"- `sdd://adrs/{scope}/{number}` — individual ADR bodies",
|
|
8
|
+
"- `search_specs` / `find_related_specs` — full-text spec search",
|
|
9
|
+
"- `find_consumers` / `find_producers` / `find_dependencies` / `find_dependents` — cross-repo dependency graph (requires populated `orchestration/repo-config/`)",
|
|
10
|
+
"- `cascade_impact` — dry-run the cascade-update checklist for a proposed change",
|
|
11
|
+
"",
|
|
12
|
+
"All tools accept `pin_to_commit` for reproducible reads. See [ADR 0128](docs/method/adr/ADR%200128:%20Live-Query%20Context%20Extension%20via%20Model%20Context%20Protocol.md) for the full surface.",
|
|
13
|
+
];
|
|
14
|
+
const COMMON_FOOTER = [
|
|
15
|
+
"## Repository Lifecycle",
|
|
16
|
+
"",
|
|
17
|
+
"- `sdd-cli sync --bundle <path>` — refresh the method baseline in this repo.",
|
|
18
|
+
"- `sdd-cli validate` — run the profile's validator suite against this repo.",
|
|
19
|
+
"- `sdd-cli generate-claude-md ...` — regenerate this file after edits.",
|
|
20
|
+
"",
|
|
21
|
+
"## Managed-Path Reminder",
|
|
22
|
+
"",
|
|
23
|
+
"Everything under `docs/method/**` and other paths listed in `method-baseline.lock::managed_paths` is method-distributed. Do **not** edit those files locally — edits are overwritten on the next `sdd-cli sync`. Changes belong upstream in the method repository.",
|
|
24
|
+
"",
|
|
25
|
+
"Product-owned content (e.g. `docs/platform/**`, profile-specific YAMLs, `content/**`, `contracts/**`) is yours to edit freely.",
|
|
26
|
+
];
|
|
27
|
+
export function renderAppClaudeMd(input) {
|
|
28
|
+
const prettyName = titleize(input.appId);
|
|
29
|
+
const platformLine = input.platformName
|
|
30
|
+
? `This app consumes platform services published by **${input.platformName}**.`
|
|
31
|
+
: "This app consumes platform services published by the host platform.";
|
|
32
|
+
return ([
|
|
33
|
+
`# CLAUDE.md — ${prettyName}`,
|
|
34
|
+
"",
|
|
35
|
+
`This file briefs Claude Code (and other AI assistants) on the purpose, identity, and boundaries of the **${prettyName}** application SDD repository.`,
|
|
36
|
+
"",
|
|
37
|
+
"## Repository Identity",
|
|
38
|
+
"",
|
|
39
|
+
`- **Profile:** application`,
|
|
40
|
+
`- **App ID:** ${input.appId}`,
|
|
41
|
+
input.platformName ? `- **Platform:** ${input.platformName}` : "- **Platform:** (set via --platform-name when regenerating)",
|
|
42
|
+
"- **Repo kind:** application-product",
|
|
43
|
+
"",
|
|
44
|
+
"## Purpose",
|
|
45
|
+
"",
|
|
46
|
+
platformLine,
|
|
47
|
+
"",
|
|
48
|
+
"See `docs/service-architecture.md` for the consumer-side architecture and `app-platform-dependencies.yaml` for the machine-readable contract dependency declarations.",
|
|
49
|
+
"",
|
|
50
|
+
"## Method Variant",
|
|
51
|
+
"",
|
|
52
|
+
"This repo uses the **Application Method Variant** (ADR 0089). Validation surface is intentionally reduced vs. the platform profile — fetch the ADR via MCP (`sdd://adrs/method/0089`) or read `docs/method/adr/` locally.",
|
|
53
|
+
"",
|
|
54
|
+
...LIVE_CONTEXT_SECTION,
|
|
55
|
+
"",
|
|
56
|
+
...COMMON_FOOTER,
|
|
57
|
+
"",
|
|
58
|
+
"_This file was generated by `sdd-cli generate-claude-md`. Tailor it as the app matures._",
|
|
59
|
+
"",
|
|
60
|
+
].join("\n") + "\n");
|
|
61
|
+
}
|
|
62
|
+
export function renderIntegrationClaudeMd(input) {
|
|
63
|
+
const prettyName = titleize(input.integrationId);
|
|
64
|
+
const providerLine = input.providerName
|
|
65
|
+
? `Provider: **${input.providerName}**.`
|
|
66
|
+
: "Provider: _(set --provider-name when regenerating)_.";
|
|
67
|
+
return ([
|
|
68
|
+
`# CLAUDE.md — ${prettyName}`,
|
|
69
|
+
"",
|
|
70
|
+
`This file briefs Claude Code (and other AI assistants) on the purpose, identity, and boundaries of the **${prettyName}** integration SDD repository.`,
|
|
71
|
+
"",
|
|
72
|
+
"## Repository Identity",
|
|
73
|
+
"",
|
|
74
|
+
`- **Profile:** integration`,
|
|
75
|
+
`- **Integration ID:** ${input.integrationId}`,
|
|
76
|
+
`- **Profile type:** ${input.profileType}`,
|
|
77
|
+
providerLine ? `- ${providerLine}` : "",
|
|
78
|
+
input.platformName ? `- **Platform:** ${input.platformName}` : "",
|
|
79
|
+
"- **Repo kind:** integration-product",
|
|
80
|
+
"",
|
|
81
|
+
"## Purpose",
|
|
82
|
+
"",
|
|
83
|
+
"This repository scaffolds a product-agnostic integration per ADR 0096. See `integration-manifest.yaml` for the canonical identity, binding model, and inbound/outbound configuration; `docs/service-architecture.md` for the adapter architecture.",
|
|
84
|
+
"",
|
|
85
|
+
"## Method Variant",
|
|
86
|
+
"",
|
|
87
|
+
"This repo uses the **Integration Method Variant** (ADR 0096). Validation surface is integration-specific — fetch the ADR via MCP (`sdd://adrs/method/0096`) or read `docs/method/adr/` locally.",
|
|
88
|
+
"",
|
|
89
|
+
...LIVE_CONTEXT_SECTION,
|
|
90
|
+
"",
|
|
91
|
+
...COMMON_FOOTER,
|
|
92
|
+
"",
|
|
93
|
+
"_This file was generated by `sdd-cli generate-claude-md`. Tailor it as the integration matures._",
|
|
94
|
+
"",
|
|
95
|
+
]
|
|
96
|
+
.filter((line) => line !== "")
|
|
97
|
+
.join("\n") + "\n");
|
|
98
|
+
}
|
|
99
|
+
export function renderPlatformClaudeMd(input) {
|
|
100
|
+
return ([
|
|
101
|
+
`# CLAUDE.md — ${input.platformName}`,
|
|
102
|
+
"",
|
|
103
|
+
`This file briefs Claude Code (and other AI assistants) on the purpose, identity, and boundaries of the **${input.platformName}** platform SDD repository.`,
|
|
104
|
+
"",
|
|
105
|
+
"## Repository Identity",
|
|
106
|
+
"",
|
|
107
|
+
"- **Profile:** platform",
|
|
108
|
+
`- **Platform name:** ${input.platformName}`,
|
|
109
|
+
`- **Platform ID:** ${input.platformId}`,
|
|
110
|
+
"- **Repo kind:** platform-product",
|
|
111
|
+
"",
|
|
112
|
+
"## Purpose",
|
|
113
|
+
"",
|
|
114
|
+
`This is the root SDD repository for **${input.platformName}**. It contains the canonical method baseline (sync-managed under \`docs/method/**\`), platform/product architecture (\`docs/platform/**\`), domain docs (\`docs/domains/**\`), published cross-domain contracts (\`contracts/**\`), and orchestration tooling (\`orchestration/**\`).`,
|
|
115
|
+
"",
|
|
116
|
+
"See `README.md` for the repository map and navigation indexes.",
|
|
117
|
+
"",
|
|
118
|
+
"## Composition Flow",
|
|
119
|
+
"",
|
|
120
|
+
"- `sdd-cli init --profile platform` — bootstrap this repo (done once, at the start).",
|
|
121
|
+
"- `platform-cli add <domain>` — scaffold a domain and its service repos (outside this repo). Populates `orchestration/repo-config/`.",
|
|
122
|
+
"- `sdd-cli sync` — refresh the method baseline as new ADRs or templates ship upstream.",
|
|
123
|
+
"- `sdd-cli validate` — run the 7-validator platform suite (traceability, runway-classification, adr-structure, spec-lifecycle, corpus-consistency, config, gate-readiness). Add `--validator docs-all` to opt into the conditional suite (backward-compatibility, deprecation-runway, migration-completeness, ddd-artifacts, glossary-alignment, intent-quality-readiness) once the relevant artefacts exist (BASELINE.md, gate-registry files).",
|
|
124
|
+
"",
|
|
125
|
+
...LIVE_CONTEXT_SECTION,
|
|
126
|
+
"",
|
|
127
|
+
...COMMON_FOOTER,
|
|
128
|
+
"",
|
|
129
|
+
"_This file was generated by `sdd-cli generate-claude-md`. Tailor it as the platform matures._",
|
|
130
|
+
"",
|
|
131
|
+
].join("\n") + "\n");
|
|
132
|
+
}
|
|
133
|
+
function titleize(kebab) {
|
|
134
|
+
return kebab
|
|
135
|
+
.split("-")
|
|
136
|
+
.filter((part) => part.length > 0)
|
|
137
|
+
.map((part) => part[0].toUpperCase() + part.slice(1))
|
|
138
|
+
.join(" ");
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=claude-md.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../../src/lib/init/claude-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type Profile } from "../repo-kind.js";
|
|
2
|
+
import { type IntegrationProfileType } from "./integration.js";
|
|
3
|
+
export interface InitOptions {
|
|
4
|
+
profile: Profile;
|
|
5
|
+
bundle: string;
|
|
6
|
+
targetDir: string;
|
|
7
|
+
allowExisting: boolean;
|
|
8
|
+
gitInit: boolean;
|
|
9
|
+
dryRun: boolean;
|
|
10
|
+
platformRoot?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Opt-in agent harness for the hook-seed layer per ADR 0129. If
|
|
13
|
+
* unset, no hooks are seeded beyond the baseline guard script that
|
|
14
|
+
* platform scaffolding already writes.
|
|
15
|
+
*/
|
|
16
|
+
agentHarness?: "claude-code";
|
|
17
|
+
appId?: string;
|
|
18
|
+
integrationId?: string;
|
|
19
|
+
profileType?: IntegrationProfileType;
|
|
20
|
+
providerName?: string;
|
|
21
|
+
publishedBy?: "internal" | "third-party";
|
|
22
|
+
sdkVersion?: string;
|
|
23
|
+
supportedAssetTypes?: readonly string[];
|
|
24
|
+
inboundOnly?: boolean;
|
|
25
|
+
outboundOnly?: boolean;
|
|
26
|
+
platformName?: string;
|
|
27
|
+
platformId?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface InitResult {
|
|
30
|
+
exitCode: number;
|
|
31
|
+
}
|
|
32
|
+
export declare function runInit(opts: InitOptions, stdout?: (line: string) => void): Promise<InitResult>;
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/init/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAyB,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAStE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAK1B,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;IAG7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAwBD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAA2C,GACpE,OAAO,CAAC,UAAU,CAAC,CA6GrB"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { execFile as execFileCb } from "node:child_process";
|
|
2
|
+
import { access, mkdir, writeFile } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { promisify } from "node:util";
|
|
5
|
+
import { loadBundle } from "../bundle.js";
|
|
6
|
+
import { profileFromBundleName } from "../repo-kind.js";
|
|
7
|
+
import { runSync } from "../sync/index.js";
|
|
8
|
+
import { runValidate } from "../validate/index.js";
|
|
9
|
+
import { scaffoldAppProfile } from "./app.js";
|
|
10
|
+
import { renderAppClaudeMd, renderIntegrationClaudeMd, renderPlatformClaudeMd, } from "./claude-md.js";
|
|
11
|
+
import { scaffoldIntegrationProfile, } from "./integration.js";
|
|
12
|
+
import { derivePlatformId, scaffoldPlatformProfile } from "./platform.js";
|
|
13
|
+
const execFile = promisify(execFileCb);
|
|
14
|
+
const SECTION_RULE = "═".repeat(59);
|
|
15
|
+
const BASELINE_SENTINELS = {
|
|
16
|
+
application: [
|
|
17
|
+
".sdd-repo-kind",
|
|
18
|
+
"app-platform-dependencies.yaml",
|
|
19
|
+
"docs/platform/adr",
|
|
20
|
+
"docs/method/adr",
|
|
21
|
+
],
|
|
22
|
+
integration: [
|
|
23
|
+
".sdd-repo-kind",
|
|
24
|
+
"integration-manifest.yaml",
|
|
25
|
+
"docs/platform/adr",
|
|
26
|
+
"docs/method/adr",
|
|
27
|
+
],
|
|
28
|
+
platform: [
|
|
29
|
+
".sdd-repo-kind",
|
|
30
|
+
"docs/method/adr",
|
|
31
|
+
"orchestration/repo-config",
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
export async function runInit(opts, stdout = (line) => process.stdout.write(line)) {
|
|
35
|
+
const inputErrors = validateProfileInputs(opts);
|
|
36
|
+
if (inputErrors) {
|
|
37
|
+
stdout(fail(inputErrors));
|
|
38
|
+
return { exitCode: 1 };
|
|
39
|
+
}
|
|
40
|
+
if (!(await pathExists(opts.bundle))) {
|
|
41
|
+
stdout(fail(`Bundle not found: ${opts.bundle}`));
|
|
42
|
+
return { exitCode: 1 };
|
|
43
|
+
}
|
|
44
|
+
const bundle = await loadBundle(opts.bundle);
|
|
45
|
+
const bundleProfile = profileFromBundleName(bundle.manifest.bundleName);
|
|
46
|
+
await bundle.cleanup();
|
|
47
|
+
if (bundleProfile !== opts.profile) {
|
|
48
|
+
stdout(fail(`Bundle profile mismatch: bundle is ${bundleProfile}, --profile is ${opts.profile}`));
|
|
49
|
+
return { exitCode: 1 };
|
|
50
|
+
}
|
|
51
|
+
stdout(section(`Init (${opts.profile}) — ${displayId(opts)}`));
|
|
52
|
+
stdout(info(`Target dir: ${opts.targetDir}`));
|
|
53
|
+
stdout(info(`Bundle: ${opts.bundle}`));
|
|
54
|
+
const preflight = await checkTargetRepoState(opts.targetDir, BASELINE_SENTINELS[opts.profile], opts.allowExisting);
|
|
55
|
+
if (preflight.status === "fail") {
|
|
56
|
+
stdout(fail(preflight.reason));
|
|
57
|
+
return { exitCode: 1 };
|
|
58
|
+
}
|
|
59
|
+
if (opts.dryRun) {
|
|
60
|
+
stdout(info("Dry run enabled. No files will be modified."));
|
|
61
|
+
stdout(info(`Would write profile scaffold for ${opts.profile} in ${opts.targetDir}`));
|
|
62
|
+
stdout(info(`Would sync bundle ${opts.bundle} into ${opts.targetDir}`));
|
|
63
|
+
if (opts.gitInit)
|
|
64
|
+
stdout(info(`Would git init -b main in ${opts.targetDir}`));
|
|
65
|
+
stdout(info("Would run post-bootstrap validation"));
|
|
66
|
+
return { exitCode: 0 };
|
|
67
|
+
}
|
|
68
|
+
await mkdir(opts.targetDir, { recursive: true });
|
|
69
|
+
stdout(info("Writing profile scaffold"));
|
|
70
|
+
const scaffold = await runScaffold(opts);
|
|
71
|
+
for (const f of scaffold.filesWritten)
|
|
72
|
+
stdout(info(` wrote ${f}`));
|
|
73
|
+
stdout(info("Syncing method baseline"));
|
|
74
|
+
const syncResult = await runSync({
|
|
75
|
+
bundle: opts.bundle,
|
|
76
|
+
targetRepo: opts.targetDir,
|
|
77
|
+
dryRun: false,
|
|
78
|
+
allowOverwrite: false,
|
|
79
|
+
delete: true,
|
|
80
|
+
...(opts.agentHarness ? { agentHarness: opts.agentHarness } : {}),
|
|
81
|
+
}, stdout);
|
|
82
|
+
if (syncResult.exitCode !== 0) {
|
|
83
|
+
stdout(fail("Sync failed during init; target repo may be partially populated"));
|
|
84
|
+
return { exitCode: syncResult.exitCode };
|
|
85
|
+
}
|
|
86
|
+
stdout(info("Writing CLAUDE.md"));
|
|
87
|
+
await writeFile(join(opts.targetDir, "CLAUDE.md"), renderClaudeMdForProfile(opts), "utf8");
|
|
88
|
+
stdout(info(" wrote CLAUDE.md"));
|
|
89
|
+
if (opts.gitInit) {
|
|
90
|
+
const alreadyGit = await pathExists(join(opts.targetDir, ".git"));
|
|
91
|
+
if (alreadyGit) {
|
|
92
|
+
stdout(info("Skipping git init (.git already present)"));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
await execFile("git", ["-C", opts.targetDir, "init", "-b", "main"]);
|
|
96
|
+
stdout(info("git init -b main"));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
stdout(info("Running post-bootstrap validation"));
|
|
100
|
+
const validateResult = await runValidate({
|
|
101
|
+
targetRepo: opts.targetDir,
|
|
102
|
+
strict: false,
|
|
103
|
+
...(opts.platformRoot ? { platformRoot: opts.platformRoot } : {}),
|
|
104
|
+
}, stdout);
|
|
105
|
+
if (validateResult.exitCode !== 0) {
|
|
106
|
+
stdout(fail("Post-bootstrap validation failed. Scaffold and baseline are in place; fix issues and re-run sdd-cli validate."));
|
|
107
|
+
return { exitCode: validateResult.exitCode };
|
|
108
|
+
}
|
|
109
|
+
stdout(pass(`Bootstrap complete for ${displayId(opts)}`));
|
|
110
|
+
return { exitCode: 0 };
|
|
111
|
+
}
|
|
112
|
+
function validateProfileInputs(opts) {
|
|
113
|
+
if (opts.profile === "application") {
|
|
114
|
+
if (!opts.appId)
|
|
115
|
+
return "--app-id is required for --profile application";
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
if (opts.profile === "integration") {
|
|
119
|
+
if (!opts.integrationId) {
|
|
120
|
+
return "--integration-id is required for --profile integration";
|
|
121
|
+
}
|
|
122
|
+
if (!opts.profileType) {
|
|
123
|
+
return "--profile-type is required for --profile integration";
|
|
124
|
+
}
|
|
125
|
+
if (opts.inboundOnly && opts.outboundOnly) {
|
|
126
|
+
return "--inbound-only and --outbound-only are mutually exclusive";
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (opts.profile === "platform") {
|
|
130
|
+
if (!opts.platformName) {
|
|
131
|
+
return "--platform-name is required for --profile platform";
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
function displayId(opts) {
|
|
137
|
+
if (opts.profile === "application")
|
|
138
|
+
return opts.appId ?? "<unknown-app>";
|
|
139
|
+
if (opts.profile === "integration") {
|
|
140
|
+
return opts.integrationId ?? "<unknown-integration>";
|
|
141
|
+
}
|
|
142
|
+
return opts.platformName ?? "<unknown-platform>";
|
|
143
|
+
}
|
|
144
|
+
function renderClaudeMdForProfile(opts) {
|
|
145
|
+
if (opts.profile === "application") {
|
|
146
|
+
return renderAppClaudeMd({
|
|
147
|
+
appId: opts.appId,
|
|
148
|
+
...(opts.platformName ? { platformName: opts.platformName } : {}),
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
if (opts.profile === "integration") {
|
|
152
|
+
return renderIntegrationClaudeMd({
|
|
153
|
+
integrationId: opts.integrationId,
|
|
154
|
+
profileType: opts.profileType,
|
|
155
|
+
...(opts.providerName ? { providerName: opts.providerName } : {}),
|
|
156
|
+
...(opts.platformName ? { platformName: opts.platformName } : {}),
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
const platformName = opts.platformName;
|
|
160
|
+
return renderPlatformClaudeMd({
|
|
161
|
+
platformName,
|
|
162
|
+
platformId: opts.platformId ?? derivePlatformId(platformName),
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
async function runScaffold(opts) {
|
|
166
|
+
if (opts.profile === "application") {
|
|
167
|
+
return scaffoldAppProfile({
|
|
168
|
+
appId: opts.appId,
|
|
169
|
+
targetRepo: opts.targetDir,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
if (opts.profile === "platform") {
|
|
173
|
+
const platformName = opts.platformName;
|
|
174
|
+
const platformId = opts.platformId ?? derivePlatformId(platformName);
|
|
175
|
+
return scaffoldPlatformProfile({
|
|
176
|
+
platformName,
|
|
177
|
+
platformId,
|
|
178
|
+
targetRepo: opts.targetDir,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
return scaffoldIntegrationProfile({
|
|
182
|
+
integrationId: opts.integrationId,
|
|
183
|
+
profileType: opts.profileType,
|
|
184
|
+
targetRepo: opts.targetDir,
|
|
185
|
+
...(opts.providerName !== undefined ? { providerName: opts.providerName } : {}),
|
|
186
|
+
...(opts.publishedBy !== undefined ? { publishedBy: opts.publishedBy } : {}),
|
|
187
|
+
...(opts.sdkVersion !== undefined ? { sdkVersion: opts.sdkVersion } : {}),
|
|
188
|
+
...(opts.supportedAssetTypes !== undefined
|
|
189
|
+
? { supportedAssetTypes: opts.supportedAssetTypes }
|
|
190
|
+
: {}),
|
|
191
|
+
...(opts.inboundOnly !== undefined ? { inboundOnly: opts.inboundOnly } : {}),
|
|
192
|
+
...(opts.outboundOnly !== undefined ? { outboundOnly: opts.outboundOnly } : {}),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
async function checkTargetRepoState(targetDir, sentinels, allowExisting) {
|
|
196
|
+
const exists = await pathExists(targetDir);
|
|
197
|
+
if (!exists)
|
|
198
|
+
return { status: "ok" };
|
|
199
|
+
if (allowExisting)
|
|
200
|
+
return { status: "ok" };
|
|
201
|
+
for (const rel of sentinels) {
|
|
202
|
+
if (await pathExists(join(targetDir, rel))) {
|
|
203
|
+
return {
|
|
204
|
+
status: "fail",
|
|
205
|
+
reason: `Target repo already contains baseline files: ${targetDir}/${rel} (re-run with --allow-existing only if this dir is intentionally partially seeded)`,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return { status: "ok" };
|
|
210
|
+
}
|
|
211
|
+
async function pathExists(p) {
|
|
212
|
+
try {
|
|
213
|
+
await access(p);
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function section(title) {
|
|
221
|
+
return `\n${SECTION_RULE}\n ${title}\n${SECTION_RULE}\n\n`;
|
|
222
|
+
}
|
|
223
|
+
function info(msg) {
|
|
224
|
+
return `[INFO] ${msg}\n`;
|
|
225
|
+
}
|
|
226
|
+
function pass(msg) {
|
|
227
|
+
return `[PASS] ${msg}\n`;
|
|
228
|
+
}
|
|
229
|
+
function fail(msg) {
|
|
230
|
+
return `[FAIL] ${msg}\n`;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/init/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export type IntegrationProfileType = "workflow" | "device-hardware" | "saas-platform" | "financial-services" | "data-hub" | "data-feed";
|
|
2
|
+
export declare const INTEGRATION_PROFILE_TYPES: readonly IntegrationProfileType[];
|
|
3
|
+
export type BindingModel = "org-bound" | "asset-bound";
|
|
4
|
+
export interface IntegrationCapabilities {
|
|
5
|
+
inbound: boolean;
|
|
6
|
+
outbound: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface IntegrationProfileRenderInput {
|
|
9
|
+
integrationId: string;
|
|
10
|
+
profileType: IntegrationProfileType;
|
|
11
|
+
targetRepo: string;
|
|
12
|
+
providerName?: string;
|
|
13
|
+
publishedBy?: "internal" | "third-party";
|
|
14
|
+
sdkVersion?: string;
|
|
15
|
+
supportedAssetTypes?: readonly string[];
|
|
16
|
+
description?: string;
|
|
17
|
+
today?: string;
|
|
18
|
+
inboundOnly?: boolean;
|
|
19
|
+
outboundOnly?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function defaultBindingModel(profile: IntegrationProfileType): BindingModel;
|
|
22
|
+
export declare function defaultCapabilities(profile: IntegrationProfileType): IntegrationCapabilities;
|
|
23
|
+
export declare function resolveCapabilities(profile: IntegrationProfileType, opts: {
|
|
24
|
+
inboundOnly?: boolean;
|
|
25
|
+
outboundOnly?: boolean;
|
|
26
|
+
}): IntegrationCapabilities;
|
|
27
|
+
export declare function renderIntegrationManifest(input: {
|
|
28
|
+
integrationId: string;
|
|
29
|
+
providerName: string;
|
|
30
|
+
profileType: IntegrationProfileType;
|
|
31
|
+
capabilities: IntegrationCapabilities;
|
|
32
|
+
bindingModel: BindingModel;
|
|
33
|
+
supportedAssetTypes: readonly string[];
|
|
34
|
+
sdkVersion: string;
|
|
35
|
+
publishedBy: string;
|
|
36
|
+
}): string;
|
|
37
|
+
export declare function renderIntegrationServiceArchitecture(input: {
|
|
38
|
+
integrationId: string;
|
|
39
|
+
providerName: string;
|
|
40
|
+
profileType: IntegrationProfileType;
|
|
41
|
+
capabilities: IntegrationCapabilities;
|
|
42
|
+
bindingModel: BindingModel;
|
|
43
|
+
supportedAssetTypes: readonly string[];
|
|
44
|
+
publishedBy: string;
|
|
45
|
+
description: string;
|
|
46
|
+
today: string;
|
|
47
|
+
}): string;
|
|
48
|
+
export declare function scaffoldIntegrationProfile(input: IntegrationProfileRenderInput): Promise<{
|
|
49
|
+
filesWritten: string[];
|
|
50
|
+
}>;
|
|
51
|
+
export declare function renderIntegrationClaudeSettings(): string;
|
|
52
|
+
export declare function isIntegrationProfileType(value: string): value is IntegrationProfileType;
|
|
53
|
+
//# sourceMappingURL=integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/lib/init/integration.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,sBAAsB,GAC9B,UAAU,GACV,iBAAiB,GACjB,eAAe,GACf,oBAAoB,GACpB,UAAU,GACV,WAAW,CAAC;AAEhB,eAAO,MAAM,yBAAyB,EAAE,SAAS,sBAAsB,EAOtE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,CAAC;AAEvD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,sBAAsB,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,GAAG,YAAY,CAUjF;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,sBAAsB,GAC9B,uBAAuB,CAUzB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GACtD,uBAAuB,CAOzB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,sBAAsB,CAAC;IACpC,YAAY,EAAE,uBAAuB,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAgBT;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,sBAAsB,CAAC;IACpC,YAAY,EAAE,uBAAuB,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAoHT;AAED,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,6BAA6B,GACnC,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAgErC;AAED,wBAAgB,+BAA+B,IAAI,MAAM,CAGxD;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,sBAAsB,CAEvF"}
|