@sdd-method/sdd-cli 1.40.0 → 1.42.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.
Files changed (142) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +2 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/api-surface/index.js +2 -2
  5. package/dist/lib/api-surface/index.js.map +1 -1
  6. package/dist/lib/catalogue/build.d.ts.map +1 -1
  7. package/dist/lib/catalogue/build.js +6 -0
  8. package/dist/lib/catalogue/build.js.map +1 -1
  9. package/dist/lib/catalogue/builders/integration-components.js +3 -3
  10. package/dist/lib/catalogue/builders/integrations.d.ts +2 -0
  11. package/dist/lib/catalogue/builders/integrations.d.ts.map +1 -1
  12. package/dist/lib/catalogue/builders/integrations.js +3 -0
  13. package/dist/lib/catalogue/builders/integrations.js.map +1 -1
  14. package/dist/lib/catalogue/builders/products.d.ts +6 -0
  15. package/dist/lib/catalogue/builders/products.d.ts.map +1 -1
  16. package/dist/lib/catalogue/builders/products.js +9 -2
  17. package/dist/lib/catalogue/builders/products.js.map +1 -1
  18. package/dist/lib/catalogue/builders/repo-dependency.d.ts +12 -0
  19. package/dist/lib/catalogue/builders/repo-dependency.d.ts.map +1 -0
  20. package/dist/lib/catalogue/builders/repo-dependency.js +127 -0
  21. package/dist/lib/catalogue/builders/repo-dependency.js.map +1 -0
  22. package/dist/lib/catalogue/builders/repositories.d.ts +1 -0
  23. package/dist/lib/catalogue/builders/repositories.d.ts.map +1 -1
  24. package/dist/lib/catalogue/builders/repositories.js +4 -0
  25. package/dist/lib/catalogue/builders/repositories.js.map +1 -1
  26. package/dist/lib/catalogue/canonical-schema.yaml +66 -1
  27. package/dist/lib/catalogue/cli-version.d.ts +1 -1
  28. package/dist/lib/catalogue/cli-version.d.ts.map +1 -1
  29. package/dist/lib/catalogue/cli-version.js +3 -3
  30. package/dist/lib/catalogue/cli-version.js.map +1 -1
  31. package/dist/lib/catalogue/freshness.d.ts +26 -0
  32. package/dist/lib/catalogue/freshness.d.ts.map +1 -0
  33. package/dist/lib/catalogue/freshness.js +69 -0
  34. package/dist/lib/catalogue/freshness.js.map +1 -0
  35. package/dist/lib/catalogue/graph-run.js +1 -1
  36. package/dist/lib/catalogue/graph-run.js.map +1 -1
  37. package/dist/lib/catalogue/manifest-loader.d.ts +2 -0
  38. package/dist/lib/catalogue/manifest-loader.d.ts.map +1 -1
  39. package/dist/lib/catalogue/manifest-loader.js +4 -0
  40. package/dist/lib/catalogue/manifest-loader.js.map +1 -1
  41. package/dist/lib/catalogue/rubric-coverage-map.yaml +10 -0
  42. package/dist/lib/ci-binding/index.d.ts +63 -0
  43. package/dist/lib/ci-binding/index.d.ts.map +1 -0
  44. package/dist/lib/ci-binding/index.js +220 -0
  45. package/dist/lib/ci-binding/index.js.map +1 -0
  46. package/dist/lib/ci-binding/module.d.ts +36 -0
  47. package/dist/lib/ci-binding/module.d.ts.map +1 -0
  48. package/dist/lib/ci-binding/module.js +204 -0
  49. package/dist/lib/ci-binding/module.js.map +1 -0
  50. package/dist/lib/context-pull/index.d.ts +39 -0
  51. package/dist/lib/context-pull/index.d.ts.map +1 -0
  52. package/dist/lib/context-pull/index.js +151 -0
  53. package/dist/lib/context-pull/index.js.map +1 -0
  54. package/dist/lib/context-pull/resolve.d.ts +46 -0
  55. package/dist/lib/context-pull/resolve.d.ts.map +1 -0
  56. package/dist/lib/context-pull/resolve.js +70 -0
  57. package/dist/lib/context-pull/resolve.js.map +1 -0
  58. package/dist/lib/init/app.d.ts.map +1 -1
  59. package/dist/lib/init/app.js +3 -0
  60. package/dist/lib/init/app.js.map +1 -1
  61. package/dist/lib/init/ci-workflow.d.ts +6 -8
  62. package/dist/lib/init/ci-workflow.d.ts.map +1 -1
  63. package/dist/lib/init/ci-workflow.js +69 -122
  64. package/dist/lib/init/ci-workflow.js.map +1 -1
  65. package/dist/lib/init/integration.d.ts.map +1 -1
  66. package/dist/lib/init/integration.js +3 -0
  67. package/dist/lib/init/integration.js.map +1 -1
  68. package/dist/lib/init/platform.d.ts.map +1 -1
  69. package/dist/lib/init/platform.js +6 -2
  70. package/dist/lib/init/platform.js.map +1 -1
  71. package/dist/lib/lock-file.d.ts +20 -0
  72. package/dist/lib/lock-file.d.ts.map +1 -1
  73. package/dist/lib/lock-file.js +25 -1
  74. package/dist/lib/lock-file.js.map +1 -1
  75. package/dist/lib/mcp/build-info.d.ts.map +1 -1
  76. package/dist/lib/mcp/build-info.js +3 -3
  77. package/dist/lib/mcp/build-info.js.map +1 -1
  78. package/dist/lib/pack/index.js +2 -2
  79. package/dist/lib/pack/index.js.map +1 -1
  80. package/dist/lib/pack/validate.js +2 -2
  81. package/dist/lib/pack/validate.js.map +1 -1
  82. package/dist/lib/package-version.d.ts +24 -0
  83. package/dist/lib/package-version.d.ts.map +1 -1
  84. package/dist/lib/package-version.js +68 -1
  85. package/dist/lib/package-version.js.map +1 -1
  86. package/dist/lib/sync/index.d.ts +13 -0
  87. package/dist/lib/sync/index.d.ts.map +1 -1
  88. package/dist/lib/sync/index.js +69 -46
  89. package/dist/lib/sync/index.js.map +1 -1
  90. package/dist/lib/validate/bundle-coherence.js +2 -2
  91. package/dist/lib/validate/bundle-coherence.js.map +1 -1
  92. package/dist/lib/validate/plan.d.ts +25 -0
  93. package/dist/lib/validate/plan.d.ts.map +1 -0
  94. package/dist/lib/validate/plan.js +54 -0
  95. package/dist/lib/validate/plan.js.map +1 -0
  96. package/dist/maintain-bin.d.ts +3 -0
  97. package/dist/maintain-bin.d.ts.map +1 -0
  98. package/dist/maintain-bin.js +8 -0
  99. package/dist/maintain-bin.js.map +1 -0
  100. package/dist/maintain-program.d.ts +8 -0
  101. package/dist/maintain-program.d.ts.map +1 -0
  102. package/dist/maintain-program.js +91 -0
  103. package/dist/maintain-program.js.map +1 -0
  104. package/dist/maintain-version.json +4 -0
  105. package/dist/verbs/catalogue-maintain.d.ts +6 -0
  106. package/dist/verbs/catalogue-maintain.d.ts.map +1 -0
  107. package/dist/verbs/catalogue-maintain.js +110 -0
  108. package/dist/verbs/catalogue-maintain.js.map +1 -0
  109. package/dist/verbs/catalogue.d.ts +5 -0
  110. package/dist/verbs/catalogue.d.ts.map +1 -1
  111. package/dist/verbs/catalogue.js +14 -80
  112. package/dist/verbs/catalogue.js.map +1 -1
  113. package/dist/verbs/context.d.ts +3 -0
  114. package/dist/verbs/context.d.ts.map +1 -0
  115. package/dist/verbs/context.js +39 -0
  116. package/dist/verbs/context.js.map +1 -0
  117. package/dist/verbs/pack-build.d.ts +3 -0
  118. package/dist/verbs/pack-build.d.ts.map +1 -0
  119. package/dist/verbs/pack-build.js +31 -0
  120. package/dist/verbs/pack-build.js.map +1 -0
  121. package/dist/verbs/pack.d.ts.map +1 -1
  122. package/dist/verbs/pack.js +2 -25
  123. package/dist/verbs/pack.js.map +1 -1
  124. package/dist/verbs/sync.d.ts.map +1 -1
  125. package/dist/verbs/sync.js +21 -0
  126. package/dist/verbs/sync.js.map +1 -1
  127. package/dist/verbs/validate.d.ts.map +1 -1
  128. package/dist/verbs/validate.js +26 -0
  129. package/dist/verbs/validate.js.map +1 -1
  130. package/dist/verify-program.d.ts +6 -1
  131. package/dist/verify-program.d.ts.map +1 -1
  132. package/dist/verify-program.js +11 -4
  133. package/dist/verify-program.js.map +1 -1
  134. package/dist/verify-version.json +4 -0
  135. package/package.json +6 -5
  136. package/scripts/{build-verify-package.mjs → build-persona-package.mjs} +112 -46
  137. package/scripts/copy-yaml-assets.mjs +6 -0
  138. package/scripts/dagger-parity.sh +74 -0
  139. package/scripts/maintain-acceptance.mjs +240 -0
  140. package/scripts/maintain-version.json +4 -0
  141. package/scripts/release-gate.mjs +60 -0
  142. package/scripts/verify-version.json +2 -2
@@ -0,0 +1,39 @@
1
+ /**
2
+ * `sdd-cli context pull` — write the code-repo briefing and MCP_SETUP.md into a
3
+ * code repository from its upstream SDD (M-ADR 0128 §1; M-ADR 0150 §4.3–4.4).
4
+ *
5
+ * The successor to the code-repo half of `generate-claude-md.sh`, scoped by
6
+ * M-ADR 0150 Phase D: no dynamic content is baked in; that is the SDD's MCP
7
+ * server's job. A sibling verb to `generate-briefing`, not an extension of it:
8
+ * `generate-briefing` needs the target to be an SDD (marker, lock, synced
9
+ * templates), and a code repository is none of those. They share the
10
+ * placeholder substitution and the wrapper's marker-block merge.
11
+ *
12
+ * What it writes, and nothing else (M-ADR 0218 §4.3 item 9, a MAINTAIN verb):
13
+ * agent-instructions.md whole file, method-managed
14
+ * CLAUDE.md / AGENTS.md the method-managed block only; adopter content survives
15
+ * MCP_SETUP.md whole file, method-managed
16
+ * Templates are read from the SDD, which carries them via its baseline bundle.
17
+ */
18
+ import type { AgentHarness } from "../agent-harness.js";
19
+ export declare const CODE_REPO_BRIEFING_ROOT = "orchestration/templates/briefing/code-repo";
20
+ export declare const MCP_SETUP_TEMPLATE = "orchestration/templates/mcp/code-repo/MCP_SETUP.md.hbs";
21
+ export declare const MCP_SETUP_REL_PATH = "MCP_SETUP.md";
22
+ export interface ContextPullOptions {
23
+ /** The code repository to write into. */
24
+ readonly codeRepo: string;
25
+ readonly agentHarness: AgentHarness;
26
+ readonly allowOverwrite: boolean;
27
+ readonly sddPath?: string | undefined;
28
+ readonly repoName?: string | undefined;
29
+ readonly searchRoots?: readonly string[] | undefined;
30
+ /** ISO date recorded as pull_date. Default: today (UTC). Pinned in tests for determinism. */
31
+ readonly pullDate?: string | undefined;
32
+ }
33
+ export interface ContextPullResult {
34
+ readonly exitCode: number;
35
+ }
36
+ export declare function runContextPull(opts: ContextPullOptions, out?: (line: string) => void): Promise<ContextPullResult>;
37
+ /** `{{name}}` substitution over an open variable set (the briefing renderer's is closed to four). */
38
+ export declare function substituteAll(template: string, vars: Readonly<Record<string, string>>): string;
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/context-pull/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAexD,eAAO,MAAM,uBAAuB,+CAA+C,CAAC;AACpF,eAAO,MAAM,kBAAkB,2DAA2D,CAAC;AAC3F,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAOjD,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,EACxB,GAAG,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAA2C,GACjE,OAAO,CAAC,iBAAiB,CAAC,CAiH5B;AAED,qGAAqG;AACrG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAE9F"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * `sdd-cli context pull` — write the code-repo briefing and MCP_SETUP.md into a
3
+ * code repository from its upstream SDD (M-ADR 0128 §1; M-ADR 0150 §4.3–4.4).
4
+ *
5
+ * The successor to the code-repo half of `generate-claude-md.sh`, scoped by
6
+ * M-ADR 0150 Phase D: no dynamic content is baked in; that is the SDD's MCP
7
+ * server's job. A sibling verb to `generate-briefing`, not an extension of it:
8
+ * `generate-briefing` needs the target to be an SDD (marker, lock, synced
9
+ * templates), and a code repository is none of those. They share the
10
+ * placeholder substitution and the wrapper's marker-block merge.
11
+ *
12
+ * What it writes, and nothing else (M-ADR 0218 §4.3 item 9, a MAINTAIN verb):
13
+ * agent-instructions.md whole file, method-managed
14
+ * CLAUDE.md / AGENTS.md the method-managed block only; adopter content survives
15
+ * MCP_SETUP.md whole file, method-managed
16
+ * Templates are read from the SDD, which carries them via its baseline bundle.
17
+ */
18
+ import { access, mkdir, readFile, writeFile } from "node:fs/promises";
19
+ import { basename, dirname, join, resolve } from "node:path";
20
+ import { AGENT_INSTRUCTIONS_REL_PATH, WRAPPER_BLOCK_BEGIN, WRAPPER_BLOCK_END, findUnresolvedPlaceholders, harnessWrapperOutputPath, resolveBriefingVariables, splitWrapperTemplate, } from "../briefing/index.js";
21
+ import { readLockFile } from "../lock-file.js";
22
+ import { readRepoKind } from "../repo-kind.js";
23
+ import { writeMarkedBlockFile } from "../sync/yaml-block-merge.js";
24
+ import { defaultSearchRoots, resolveCodeRepoName, resolveSdd } from "./resolve.js";
25
+ export const CODE_REPO_BRIEFING_ROOT = "orchestration/templates/briefing/code-repo";
26
+ export const MCP_SETUP_TEMPLATE = "orchestration/templates/mcp/code-repo/MCP_SETUP.md.hbs";
27
+ export const MCP_SETUP_REL_PATH = "MCP_SETUP.md";
28
+ const WRAPPER_TEMPLATE = {
29
+ "claude-code": "claude-code/CLAUDE.md.hbs",
30
+ "github-copilot-cli": "github-copilot-cli/AGENTS.md.hbs",
31
+ };
32
+ export async function runContextPull(opts, out = (line) => process.stdout.write(line)) {
33
+ const codeRepo = resolve(opts.codeRepo);
34
+ if ((await readRepoKind(codeRepo)) !== null) {
35
+ out(fail(`${codeRepo} is an SDD repository (it has .sdd-repo-kind). context pull writes into a code repository; for an SDD use sdd-cli generate-briefing.`));
36
+ return { exitCode: 1 };
37
+ }
38
+ const repoName = resolveCodeRepoName(codeRepo, opts.repoName);
39
+ const outcome = await resolveSdd({
40
+ repoName,
41
+ sddPath: opts.sddPath,
42
+ searchRoots: opts.searchRoots ?? defaultSearchRoots(codeRepo),
43
+ codeRepo,
44
+ });
45
+ if (outcome.kind === "not-an-sdd") {
46
+ out(fail(`--sdd ${outcome.path} is not an SDD repository (no .sdd-repo-kind).`));
47
+ return { exitCode: 1 };
48
+ }
49
+ if (outcome.kind === "not-found") {
50
+ out(fail(`No SDD lists repository "${repoName}" in its catalogues/repositories.csv (searched ${outcome.searched.length} SDD(s) under ${(opts.searchRoots ?? defaultSearchRoots(codeRepo)).join(", ")}). Pass --sdd <path>, or --repo <id> if this repository is catalogued under another id.`));
51
+ return { exitCode: 1 };
52
+ }
53
+ if (outcome.kind === "ambiguous") {
54
+ out(fail(`Repository "${repoName}" is listed by ${outcome.candidates.length} SDDs: ${outcome.candidates.join(", ")}. Pass --sdd <path> to choose.`));
55
+ return { exitCode: 1 };
56
+ }
57
+ const sddRoot = outcome.sddRoot;
58
+ if (!outcome.catalogued) {
59
+ out(warn(`${basename(sddRoot)}'s catalogues/repositories.csv does not list "${repoName}"; continuing because --sdd was given.`));
60
+ }
61
+ // The SDD's own identity, profile and baseline, exactly as its own briefing renders them.
62
+ const lock = await readLockFile(sddRoot);
63
+ const forwardBase = lock?.bundles.find((b) => b.isForwardBase);
64
+ if (!forwardBase) {
65
+ out(fail(`${sddRoot} has no forward-base bundle in method-baseline.lock; sync it first.`));
66
+ return { exitCode: 1 };
67
+ }
68
+ const sdd = await resolveBriefingVariables({ targetRepo: sddRoot, baselineVersionOverride: forwardBase.bundleVersion });
69
+ const vars = {
70
+ repo_name: repoName,
71
+ sdd_name: sdd.sdd_name,
72
+ sdd_root: sddRoot,
73
+ repo_kind: sdd.repo_kind,
74
+ baseline_version: sdd.baseline_version,
75
+ pull_date: opts.pullDate ?? new Date().toISOString().slice(0, 10),
76
+ // MCP_SETUP.md's own names, kept so the template the bash generator rendered still renders.
77
+ upstream_sdd_name: basename(sddRoot),
78
+ sdd_method_baseline_version: sdd.baseline_version,
79
+ };
80
+ const aiTemplate = join(sddRoot, CODE_REPO_BRIEFING_ROOT, "agent-instructions.md.hbs");
81
+ const wrapperTemplate = join(sddRoot, CODE_REPO_BRIEFING_ROOT, WRAPPER_TEMPLATE[opts.agentHarness]);
82
+ const mcpTemplate = join(sddRoot, MCP_SETUP_TEMPLATE);
83
+ for (const t of [aiTemplate, wrapperTemplate, mcpTemplate]) {
84
+ if (!(await exists(t))) {
85
+ out(fail(`${sddRoot} does not carry ${t.slice(sddRoot.length + 1)}: its method baseline predates context pull. Sync the SDD to a baseline that ships the code-repo templates.`));
86
+ return { exitCode: 1 };
87
+ }
88
+ }
89
+ const rendered = {};
90
+ for (const [rel, path] of [[AGENT_INSTRUCTIONS_REL_PATH, aiTemplate], [harnessWrapperOutputPath(opts.agentHarness), wrapperTemplate], [MCP_SETUP_REL_PATH, mcpTemplate]]) {
91
+ const content = substituteAll(await readFile(path, "utf8"), vars);
92
+ const unresolved = findUnresolvedPlaceholders(content);
93
+ if (unresolved.length > 0) {
94
+ out(fail(`${rel}: the SDD's template has placeholders this CLI does not know: ${unresolved.join(", ")}. Upgrade sdd-cli.`));
95
+ return { exitCode: 1 };
96
+ }
97
+ rendered[rel] = content;
98
+ }
99
+ // The wrapper first: it is the only write that can be refused, and a refusal must leave nothing written.
100
+ const wrapperRel = harnessWrapperOutputPath(opts.agentHarness);
101
+ const wrapperPath = join(codeRepo, wrapperRel);
102
+ const existing = (await exists(wrapperPath)) ? await readFile(wrapperPath, "utf8") : null;
103
+ const parts = splitWrapperTemplate(rendered[wrapperRel]);
104
+ const hasMarkers = existing !== null && existing.includes(WRAPPER_BLOCK_BEGIN) && existing.includes(WRAPPER_BLOCK_END);
105
+ let wrapperChanged;
106
+ if (existing !== null && !hasMarkers) {
107
+ // No markers: a pre-briefing-layer file (the bash generator wrote these whole) or adopter-authored.
108
+ if (!opts.allowOverwrite) {
109
+ out(fail(`${wrapperRel} exists without method-managed markers, so it is treated as adopter-authored. Nothing was written. Re-run with --allow-overwrite to replace it with the rendered wrapper (move anything worth keeping below its markers afterwards).`));
110
+ return { exitCode: 1 };
111
+ }
112
+ await writeFile(wrapperPath, rendered[wrapperRel], "utf8");
113
+ wrapperChanged = existing !== rendered[wrapperRel];
114
+ }
115
+ else {
116
+ const merge = await writeMarkedBlockFile(wrapperPath, existing === null ? rendered[wrapperRel] : parts.block, { begin: WRAPPER_BLOCK_BEGIN, end: WRAPPER_BLOCK_END }, opts.allowOverwrite, existing === null ? undefined : { pre: parts.pre, post: parts.post });
117
+ wrapperChanged = merge.changed;
118
+ }
119
+ const changed = [];
120
+ if (wrapperChanged)
121
+ changed.push(wrapperRel);
122
+ for (const rel of [AGENT_INSTRUCTIONS_REL_PATH, MCP_SETUP_REL_PATH]) {
123
+ const path = join(codeRepo, rel);
124
+ const before = (await exists(path)) ? await readFile(path, "utf8") : null;
125
+ if (before !== rendered[rel]) {
126
+ await mkdir(dirname(path), { recursive: true });
127
+ await writeFile(path, rendered[rel], "utf8");
128
+ changed.push(rel);
129
+ }
130
+ }
131
+ out(info(`Code repo "${repoName}" is specified by ${sdd.sdd_name} (${sdd.repo_kind}, ${sdd.baseline_version}) at ${sddRoot}.`));
132
+ out(info(changed.length > 0 ? `Wrote ${changed.join(", ")}.` : `Already current: ${AGENT_INSTRUCTIONS_REL_PATH}, ${wrapperRel}, ${MCP_SETUP_REL_PATH}.`));
133
+ return { exitCode: 0 };
134
+ }
135
+ /** `{{name}}` substitution over an open variable set (the briefing renderer's is closed to four). */
136
+ export function substituteAll(template, vars) {
137
+ return template.replace(/\{\{\s*([a-z_][a-z0-9_]*)\s*\}\}/g, (full, key) => (key in vars ? vars[key] : full));
138
+ }
139
+ async function exists(path) {
140
+ try {
141
+ await access(path);
142
+ return true;
143
+ }
144
+ catch {
145
+ return false;
146
+ }
147
+ }
148
+ const info = (m) => `[INFO] ${m}\n`;
149
+ const warn = (m) => `[WARN] ${m}\n`;
150
+ const fail = (m) => `[FAIL] ${m}\n`;
151
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/context-pull/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Code-repo SDD-source resolution for `sdd-cli context pull` (M-ADR 0128 §1,
3
+ * M-ADR 0150 §4.4 Phase D).
4
+ *
5
+ * A code repository has no `.sdd-repo-kind`, no lock and no bundle, so nothing
6
+ * in it names the SDD that specifies it. The SDD names the code repository
7
+ * instead: every repository it owns is a row in its own
8
+ * `catalogues/repositories.csv`, keyed by id. Resolution is therefore a lookup
9
+ * in that direction: find the SDD whose catalogue lists this repository.
10
+ *
11
+ * Only the SDD's OWN catalogue counts, never `catalogues-aggregated/`: a
12
+ * platform root's aggregate lists every member's repositories too, so reading
13
+ * it would make every code repo resolve to two SDDs.
14
+ */
15
+ export declare const REPOSITORIES_CATALOGUE = "catalogues/repositories.csv";
16
+ /** The code repository's id: `--repo` when given, else its git top-level's directory name. */
17
+ export declare function resolveCodeRepoName(codeRepo: string, override?: string): string;
18
+ export type ResolveOutcome = {
19
+ readonly kind: "resolved";
20
+ readonly sddRoot: string;
21
+ readonly catalogued: boolean;
22
+ } | {
23
+ readonly kind: "not-found";
24
+ readonly searched: readonly string[];
25
+ } | {
26
+ readonly kind: "ambiguous";
27
+ readonly candidates: readonly string[];
28
+ } | {
29
+ readonly kind: "not-an-sdd";
30
+ readonly path: string;
31
+ };
32
+ export interface ResolveSddOptions {
33
+ readonly repoName: string;
34
+ /** `--sdd`: an explicit SDD root. Skips discovery. */
35
+ readonly sddPath?: string | undefined;
36
+ /** Directories to discover SDDs under. Default: the code repository's parent. */
37
+ readonly searchRoots: readonly string[];
38
+ /** The code repository itself, excluded from candidates. */
39
+ readonly codeRepo: string;
40
+ }
41
+ /** Does this SDD's own repositories catalogue list `repoName`? */
42
+ export declare function catalogueListsRepo(sddRoot: string, repoName: string): Promise<boolean>;
43
+ export declare function resolveSdd(opts: ResolveSddOptions): Promise<ResolveOutcome>;
44
+ /** Default discovery root: the directory holding the code repository. */
45
+ export declare function defaultSearchRoots(codeRepo: string): string[];
46
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/lib/context-pull/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,eAAO,MAAM,sBAAsB,gCAAgC,CAAC;AAEpE,8FAA8F;AAC9F,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAK/E;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAAE,GACrF;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACpE;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,kEAAkE;AAClE,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAS5F;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAkBjF;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7D"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Code-repo SDD-source resolution for `sdd-cli context pull` (M-ADR 0128 §1,
3
+ * M-ADR 0150 §4.4 Phase D).
4
+ *
5
+ * A code repository has no `.sdd-repo-kind`, no lock and no bundle, so nothing
6
+ * in it names the SDD that specifies it. The SDD names the code repository
7
+ * instead: every repository it owns is a row in its own
8
+ * `catalogues/repositories.csv`, keyed by id. Resolution is therefore a lookup
9
+ * in that direction: find the SDD whose catalogue lists this repository.
10
+ *
11
+ * Only the SDD's OWN catalogue counts, never `catalogues-aggregated/`: a
12
+ * platform root's aggregate lists every member's repositories too, so reading
13
+ * it would make every code repo resolve to two SDDs.
14
+ */
15
+ import { access } from "node:fs/promises";
16
+ import { spawnSync } from "node:child_process";
17
+ import { basename, dirname, join, resolve } from "node:path";
18
+ import { readCatalogueCsv } from "../catalogue/csv-reader.js";
19
+ import { discoverSddRepos } from "../list/discover.js";
20
+ import { readRepoKind } from "../repo-kind.js";
21
+ export const REPOSITORIES_CATALOGUE = "catalogues/repositories.csv";
22
+ /** The code repository's id: `--repo` when given, else its git top-level's directory name. */
23
+ export function resolveCodeRepoName(codeRepo, override) {
24
+ if (override !== undefined && override.trim() !== "")
25
+ return override.trim();
26
+ const top = spawnSync("git", ["-C", codeRepo, "rev-parse", "--show-toplevel"], { encoding: "utf8" });
27
+ if (top.status === 0 && top.stdout.trim() !== "")
28
+ return basename(top.stdout.trim());
29
+ return basename(resolve(codeRepo));
30
+ }
31
+ /** Does this SDD's own repositories catalogue list `repoName`? */
32
+ export async function catalogueListsRepo(sddRoot, repoName) {
33
+ const path = join(sddRoot, REPOSITORIES_CATALOGUE);
34
+ try {
35
+ await access(path);
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ const { rows } = await readCatalogueCsv(path);
41
+ return rows.some((r) => r["id"] === repoName);
42
+ }
43
+ export async function resolveSdd(opts) {
44
+ if (opts.sddPath !== undefined) {
45
+ const root = resolve(opts.sddPath);
46
+ if ((await readRepoKind(root)) === null)
47
+ return { kind: "not-an-sdd", path: root };
48
+ // An explicit --sdd is the caller's assertion, so an uncatalogued repository is reported
49
+ // (the caller may be wiring a repository the SDD has not catalogued yet), not refused.
50
+ return { kind: "resolved", sddRoot: root, catalogued: await catalogueListsRepo(root, opts.repoName) };
51
+ }
52
+ const self = resolve(opts.codeRepo);
53
+ const found = await discoverSddRepos(opts.searchRoots);
54
+ const searched = found.map((r) => r.path).filter((p) => resolve(p) !== self);
55
+ const matches = [];
56
+ for (const p of searched) {
57
+ if (await catalogueListsRepo(p, opts.repoName))
58
+ matches.push(p);
59
+ }
60
+ if (matches.length === 1)
61
+ return { kind: "resolved", sddRoot: matches[0], catalogued: true };
62
+ if (matches.length === 0)
63
+ return { kind: "not-found", searched };
64
+ return { kind: "ambiguous", candidates: matches };
65
+ }
66
+ /** Default discovery root: the directory holding the code repository. */
67
+ export function defaultSearchRoots(codeRepo) {
68
+ return [dirname(resolve(codeRepo))];
69
+ }
70
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/lib/context-pull/resolve.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/lib/init/app.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAkBT;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CA8ET;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAGhD;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAoCrC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/lib/init/app.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAkBT;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CA8ET;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAGhD;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAsCrC"}
@@ -2,6 +2,7 @@ import { mkdir, writeFile } from "node:fs/promises";
2
2
  import { dirname, join } from "node:path";
3
3
  import { buildMethodManagedServers, upsertMethodManagedServers, } from "../mcp-seed/index.js";
4
4
  import { renderMethodValidationWorkflow, WORKFLOW_REL_PATH } from "./ci-workflow.js";
5
+ import { writeMethodValidationModule } from "../ci-binding/index.js";
5
6
  export function renderAppPlatformDependencies(input) {
6
7
  return ([
7
8
  "# app-platform-dependencies.yaml",
@@ -116,6 +117,8 @@ export async function scaffoldAppProfile(input) {
116
117
  filesWritten.push(".claude/settings.json");
117
118
  await writeFileAt(join(input.targetRepo, WORKFLOW_REL_PATH), renderMethodValidationWorkflow("application"));
118
119
  filesWritten.push(WORKFLOW_REL_PATH);
120
+ // The module the workflow calls (M-ADR 0219).
121
+ filesWritten.push(...(await writeMethodValidationModule(input.targetRepo)));
119
122
  return { filesWritten };
120
123
  }
121
124
  async function writeFileAt(path, content) {
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/lib/init/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/lib/init/app.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,8 @@
1
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.
2
+ * Renders .github/workflows/method-validation.yml: the GitHub Actions host wrapper (M-ADR 0219
3
+ * §4.4), which installs the pinned Dagger CLI and calls the Method Validation module. The job
4
+ * itself is defined once, in ../ci-binding/module.ts; the other hosts' wrappers are in
5
+ * ../ci-binding/index.ts.
8
6
  *
9
7
  * Output wraps a `# method-managed: begin` / `# method-managed: end`
10
8
  * block-marker pair so the sync path can preserve adopter-authored
@@ -18,12 +16,12 @@ export declare const BLOCK_END = "# method-managed: end";
18
16
  * Full file content (block + adopter-extension footer). Used by
19
17
  * `sdd-cli init` to write a fresh workflow.
20
18
  */
21
- export declare function renderMethodValidationWorkflow(profile: Profile): string;
19
+ export declare function renderMethodValidationWorkflow(profile: Profile, runner?: readonly string[]): string;
22
20
  /**
23
21
  * Method-managed slice only (begin marker through end marker). Used
24
22
  * by `sdd-cli sync` as the `incomingBlock` argument to
25
23
  * `writeMarkedBlockFile` so adopter content outside the markers is
26
24
  * preserved verbatim.
27
25
  */
28
- export declare function renderMethodManagedWorkflowBlock(profile: Profile): string;
26
+ export declare function renderMethodManagedWorkflowBlock(profile: Profile, runner?: readonly string[]): string;
29
27
  //# sourceMappingURL=ci-workflow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ci-workflow.d.ts","sourceRoot":"","sources":["../../../src/lib/init/ci-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAoB/C,eAAO,MAAM,iBAAiB,4CAA4C,CAAC;AAC3E,eAAO,MAAM,WAAW,4BAA4B,CAAC;AACrD,eAAO,MAAM,SAAS,0BAA0B,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAGvE;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEzE"}
1
+ {"version":3,"file":"ci-workflow.d.ts","sourceRoot":"","sources":["../../../src/lib/init/ci-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI/C,eAAO,MAAM,iBAAiB,4CAA4C,CAAC;AAC3E,eAAO,MAAM,WAAW,4BAA4B,CAAC;AACrD,eAAO,MAAM,SAAS,0BAA0B,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAGnG;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAErG"}