@sdd-method/sdd-cli 1.42.0 → 1.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -57
- package/dist/author-bin.d.ts +3 -0
- package/dist/author-bin.d.ts.map +1 -0
- package/dist/author-bin.js +8 -0
- package/dist/author-bin.js.map +1 -0
- package/dist/author-program.d.ts +8 -0
- package/dist/author-program.d.ts.map +1 -0
- package/dist/author-program.js +99 -0
- package/dist/author-program.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-harness.d.ts +11 -8
- package/dist/lib/agent-harness.d.ts.map +1 -1
- package/dist/lib/agent-harness.js +17 -8
- package/dist/lib/agent-harness.js.map +1 -1
- package/dist/lib/briefing/index.d.ts +1 -1
- package/dist/lib/briefing/index.d.ts.map +1 -1
- package/dist/lib/briefing/index.js +1 -1
- package/dist/lib/briefing/index.js.map +1 -1
- package/dist/lib/briefing/render.d.ts +18 -1
- package/dist/lib/briefing/render.d.ts.map +1 -1
- package/dist/lib/briefing/render.js +17 -8
- package/dist/lib/briefing/render.js.map +1 -1
- package/dist/lib/catalogue/aggregation-manifest-loader.js +4 -4
- package/dist/lib/catalogue/aggregation-manifest-loader.js.map +1 -1
- package/dist/lib/catalogue/freshness.d.ts +1 -0
- package/dist/lib/catalogue/freshness.d.ts.map +1 -1
- package/dist/lib/catalogue/freshness.js +4 -3
- package/dist/lib/catalogue/freshness.js.map +1 -1
- package/dist/lib/context-pull/index.d.ts +15 -9
- package/dist/lib/context-pull/index.d.ts.map +1 -1
- package/dist/lib/context-pull/index.js +79 -39
- package/dist/lib/context-pull/index.js.map +1 -1
- package/dist/lib/context-pull/retired-mcp-setup.d.ts +7 -0
- package/dist/lib/context-pull/retired-mcp-setup.d.ts.map +1 -0
- package/dist/lib/context-pull/retired-mcp-setup.js +7 -0
- package/dist/lib/context-pull/retired-mcp-setup.js.map +1 -0
- package/dist/lib/hooks-seed/entries.d.ts +15 -0
- package/dist/lib/hooks-seed/entries.d.ts.map +1 -1
- package/dist/lib/hooks-seed/entries.js +30 -1
- package/dist/lib/hooks-seed/entries.js.map +1 -1
- package/dist/lib/hooks-seed/index.d.ts +4 -9
- package/dist/lib/hooks-seed/index.d.ts.map +1 -1
- package/dist/lib/hooks-seed/index.js +4 -7
- package/dist/lib/hooks-seed/index.js.map +1 -1
- package/dist/lib/hooks-seed/merge.d.ts +7 -0
- package/dist/lib/hooks-seed/merge.d.ts.map +1 -1
- package/dist/lib/hooks-seed/merge.js +31 -0
- package/dist/lib/hooks-seed/merge.js.map +1 -1
- package/dist/lib/init/app.d.ts +0 -1
- package/dist/lib/init/app.d.ts.map +1 -1
- package/dist/lib/init/app.js +0 -7
- package/dist/lib/init/app.js.map +1 -1
- package/dist/lib/init/integration.d.ts +0 -1
- package/dist/lib/init/integration.d.ts.map +1 -1
- package/dist/lib/init/integration.js +0 -7
- package/dist/lib/init/integration.js.map +1 -1
- package/dist/lib/init/platform.d.ts +2 -10
- package/dist/lib/init/platform.d.ts.map +1 -1
- package/dist/lib/init/platform.js +6 -13
- package/dist/lib/init/platform.js.map +1 -1
- package/dist/lib/plan/index.d.ts.map +1 -1
- package/dist/lib/plan/index.js +4 -4
- package/dist/lib/plan/index.js.map +1 -1
- package/dist/lib/plan/read-sdd.js +1 -1
- package/dist/lib/plan/render-template.d.ts +8 -0
- package/dist/lib/plan/render-template.d.ts.map +1 -1
- package/dist/lib/plan/render-template.js +27 -3
- package/dist/lib/plan/render-template.js.map +1 -1
- package/dist/lib/sdd-index/repo-config.d.ts +1 -1
- package/dist/lib/sdd-index/repo-config.js +1 -1
- package/dist/lib/sdd-reader.d.ts +35 -0
- package/dist/lib/sdd-reader.d.ts.map +1 -0
- package/dist/lib/sdd-reader.js +91 -0
- package/dist/lib/sdd-reader.js.map +1 -0
- package/dist/lib/sync/briefing-merge.d.ts +1 -1
- package/dist/lib/sync/briefing-merge.d.ts.map +1 -1
- package/dist/lib/sync/briefing-merge.js +50 -34
- package/dist/lib/sync/briefing-merge.js.map +1 -1
- package/dist/lib/sync/diff.js +1 -1
- package/dist/lib/sync/diff.js.map +1 -1
- package/dist/lib/sync/index.d.ts +3 -6
- package/dist/lib/sync/index.d.ts.map +1 -1
- package/dist/lib/sync/index.js +20 -70
- package/dist/lib/sync/index.js.map +1 -1
- package/dist/lib/sync/settings-merge.d.ts +26 -48
- package/dist/lib/sync/settings-merge.d.ts.map +1 -1
- package/dist/lib/sync/settings-merge.js +70 -162
- package/dist/lib/sync/settings-merge.js.map +1 -1
- package/dist/maintain-program.d.ts.map +1 -1
- package/dist/maintain-program.js +5 -2
- package/dist/maintain-program.js.map +1 -1
- package/dist/maintain-version.json +2 -2
- package/dist/verbs/catalogue-check.d.ts +10 -0
- package/dist/verbs/catalogue-check.d.ts.map +1 -0
- package/dist/verbs/catalogue-check.js +28 -0
- package/dist/verbs/catalogue-check.js.map +1 -0
- package/dist/verbs/catalogue.d.ts.map +1 -1
- package/dist/verbs/catalogue.js +2 -0
- package/dist/verbs/catalogue.js.map +1 -1
- package/dist/verbs/context.js +1 -1
- package/dist/verbs/context.js.map +1 -1
- package/dist/verify-program.js +1 -1
- package/dist/verify-program.js.map +1 -1
- package/dist/verify-version.json +2 -2
- package/package.json +5 -5
- package/scripts/author-acceptance.mjs +170 -0
- package/scripts/author-version.json +4 -0
- package/scripts/build-persona-package.mjs +46 -13
- package/scripts/maintain-version.json +2 -2
- package/scripts/release-gate.mjs +1 -1
- package/scripts/verify-version.json +2 -2
- package/scripts/vitest-tmpdir.mjs +26 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../../src/lib/catalogue/freshness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAO/C,sIAAsI;AACtI,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB,EAAE,YAAoB;IAClF,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC7C,SAAS;QACX,CAAC;QACD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,
|
|
1
|
+
{"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../../src/lib/catalogue/freshness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `sdd-cli context pull` — write the code-repo briefing
|
|
3
|
-
*
|
|
2
|
+
* `sdd-cli context pull` — write the code-repo briefing into a code repository from its upstream
|
|
3
|
+
* SDD (M-ADR 0220 §4.5, re-homing M-ADR 0150 §4.4 Phase D).
|
|
4
4
|
*
|
|
5
|
-
* The successor to the code-repo half of `generate-claude-md.sh
|
|
6
|
-
*
|
|
7
|
-
* server's job. A sibling verb to `generate-briefing`, not an extension of it:
|
|
5
|
+
* The successor to the code-repo half of `generate-claude-md.sh`. No dynamic content is baked
|
|
6
|
+
* in: the briefing points at the SDD's files. A sibling verb to `generate-briefing`, not an extension of it:
|
|
8
7
|
* `generate-briefing` needs the target to be an SDD (marker, lock, synced
|
|
9
8
|
* templates), and a code repository is none of those. They share the
|
|
10
9
|
* placeholder substitution and the wrapper's marker-block merge.
|
|
11
10
|
*
|
|
12
11
|
* What it writes, and nothing else (M-ADR 0218 §4.3 item 9, a MAINTAIN verb):
|
|
13
12
|
* agent-instructions.md whole file, method-managed
|
|
14
|
-
* CLAUDE.md
|
|
15
|
-
*
|
|
16
|
-
* Templates are read from the SDD, which carries them via its baseline bundle.
|
|
13
|
+
* CLAUDE.md, AGENTS.md the method-managed block only; adopter content survives (AGENTS.md is
|
|
14
|
+
* the pointer, M-ADR 0220 §4.6, when the SDD's baseline carries it)
|
|
15
|
+
* Templates are read from the SDD, which carries them via its baseline bundle. MCP_SETUP.md is no
|
|
16
|
+
* longer written (M-ADR 0220 §4.5); a copy this verb wrote earlier is removed when it still
|
|
17
|
+
* matches the method's last render, and left with a notice when it does not.
|
|
17
18
|
*/
|
|
18
19
|
import type { AgentHarness } from "../agent-harness.js";
|
|
19
20
|
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
21
|
export declare const MCP_SETUP_REL_PATH = "MCP_SETUP.md";
|
|
22
22
|
export interface ContextPullOptions {
|
|
23
23
|
/** The code repository to write into. */
|
|
@@ -34,6 +34,12 @@ export interface ContextPullResult {
|
|
|
34
34
|
readonly exitCode: number;
|
|
35
35
|
}
|
|
36
36
|
export declare function runContextPull(opts: ContextPullOptions, out?: (line: string) => void): Promise<ContextPullResult>;
|
|
37
|
+
/**
|
|
38
|
+
* Remove an MCP_SETUP.md this verb wrote before M-ADR 0220, when it is byte-identical to the
|
|
39
|
+
* method's last template rendered with the values its own header records. Anything else is the
|
|
40
|
+
* adopter's now, and stays.
|
|
41
|
+
*/
|
|
42
|
+
export declare function retireMcpSetup(codeRepo: string): Promise<"absent" | "removed" | "kept">;
|
|
37
43
|
/** `{{name}}` substitution over an open variable set (the briefing renderer's is closed to four). */
|
|
38
44
|
export declare function substituteAll(template: string, vars: Readonly<Record<string, string>>): string;
|
|
39
45
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/context-pull/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/context-pull/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAiBxD,eAAO,MAAM,uBAAuB,+CAA+C,CAAC;AACpF,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAMjD,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,CA2H5B;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,CAiB7F;AAED,qGAAqG;AACrG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAE9F"}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `sdd-cli context pull` — write the code-repo briefing
|
|
3
|
-
*
|
|
2
|
+
* `sdd-cli context pull` — write the code-repo briefing into a code repository from its upstream
|
|
3
|
+
* SDD (M-ADR 0220 §4.5, re-homing M-ADR 0150 §4.4 Phase D).
|
|
4
4
|
*
|
|
5
|
-
* The successor to the code-repo half of `generate-claude-md.sh
|
|
6
|
-
*
|
|
7
|
-
* server's job. A sibling verb to `generate-briefing`, not an extension of it:
|
|
5
|
+
* The successor to the code-repo half of `generate-claude-md.sh`. No dynamic content is baked
|
|
6
|
+
* in: the briefing points at the SDD's files. A sibling verb to `generate-briefing`, not an extension of it:
|
|
8
7
|
* `generate-briefing` needs the target to be an SDD (marker, lock, synced
|
|
9
8
|
* templates), and a code repository is none of those. They share the
|
|
10
9
|
* placeholder substitution and the wrapper's marker-block merge.
|
|
11
10
|
*
|
|
12
11
|
* What it writes, and nothing else (M-ADR 0218 §4.3 item 9, a MAINTAIN verb):
|
|
13
12
|
* agent-instructions.md whole file, method-managed
|
|
14
|
-
* CLAUDE.md
|
|
15
|
-
*
|
|
16
|
-
* Templates are read from the SDD, which carries them via its baseline bundle.
|
|
13
|
+
* CLAUDE.md, AGENTS.md the method-managed block only; adopter content survives (AGENTS.md is
|
|
14
|
+
* the pointer, M-ADR 0220 §4.6, when the SDD's baseline carries it)
|
|
15
|
+
* Templates are read from the SDD, which carries them via its baseline bundle. MCP_SETUP.md is no
|
|
16
|
+
* longer written (M-ADR 0220 §4.5); a copy this verb wrote earlier is removed when it still
|
|
17
|
+
* matches the method's last render, and left with a notice when it does not.
|
|
17
18
|
*/
|
|
18
|
-
import { access, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
19
|
+
import { access, mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
19
20
|
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 { AGENT_INSTRUCTIONS_REL_PATH, AGENTS_POINTER, WRAPPER_BLOCK_BEGIN, WRAPPER_BLOCK_END, findUnresolvedPlaceholders, harnessWrapperOutputPath, resolveBriefingVariables, splitWrapperTemplate, } from "../briefing/index.js";
|
|
21
22
|
import { readLockFile } from "../lock-file.js";
|
|
22
23
|
import { readRepoKind } from "../repo-kind.js";
|
|
23
24
|
import { writeMarkedBlockFile } from "../sync/yaml-block-merge.js";
|
|
24
25
|
import { defaultSearchRoots, resolveCodeRepoName, resolveSdd } from "./resolve.js";
|
|
26
|
+
import { RETIRED_MCP_SETUP_TEMPLATE } from "./retired-mcp-setup.js";
|
|
25
27
|
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
28
|
export const MCP_SETUP_REL_PATH = "MCP_SETUP.md";
|
|
28
29
|
const WRAPPER_TEMPLATE = {
|
|
29
30
|
"claude-code": "claude-code/CLAUDE.md.hbs",
|
|
30
|
-
"github-copilot-cli": "github-copilot-cli/AGENTS.md.hbs",
|
|
31
31
|
};
|
|
32
32
|
export async function runContextPull(opts, out = (line) => process.stdout.write(line)) {
|
|
33
33
|
const codeRepo = resolve(opts.codeRepo);
|
|
@@ -73,21 +73,23 @@ export async function runContextPull(opts, out = (line) => process.stdout.write(
|
|
|
73
73
|
repo_kind: sdd.repo_kind,
|
|
74
74
|
baseline_version: sdd.baseline_version,
|
|
75
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
76
|
};
|
|
80
77
|
const aiTemplate = join(sddRoot, CODE_REPO_BRIEFING_ROOT, "agent-instructions.md.hbs");
|
|
81
78
|
const wrapperTemplate = join(sddRoot, CODE_REPO_BRIEFING_ROOT, WRAPPER_TEMPLATE[opts.agentHarness]);
|
|
82
|
-
const
|
|
83
|
-
for (const t of [aiTemplate, wrapperTemplate, mcpTemplate]) {
|
|
79
|
+
for (const t of [aiTemplate, wrapperTemplate]) {
|
|
84
80
|
if (!(await exists(t))) {
|
|
85
81
|
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
82
|
return { exitCode: 1 };
|
|
87
83
|
}
|
|
88
84
|
}
|
|
85
|
+
// The AGENTS.md pointer (M-ADR 0220 §4.6) arrived later than the other code-repo templates: an SDD
|
|
86
|
+
// whose baseline does not carry it yet gets no pointer, and everything else proceeds.
|
|
87
|
+
const pointerTemplate = join(sddRoot, CODE_REPO_BRIEFING_ROOT, AGENTS_POINTER.templateRel);
|
|
88
|
+
const wrapperSources = [[harnessWrapperOutputPath(opts.agentHarness), wrapperTemplate]];
|
|
89
|
+
if (await exists(pointerTemplate))
|
|
90
|
+
wrapperSources.push([AGENTS_POINTER.outputRel, pointerTemplate]);
|
|
89
91
|
const rendered = {};
|
|
90
|
-
for (const [rel, path] of [[AGENT_INSTRUCTIONS_REL_PATH, aiTemplate],
|
|
92
|
+
for (const [rel, path] of [[AGENT_INSTRUCTIONS_REL_PATH, aiTemplate], ...wrapperSources]) {
|
|
91
93
|
const content = substituteAll(await readFile(path, "utf8"), vars);
|
|
92
94
|
const unresolved = findUnresolvedPlaceholders(content);
|
|
93
95
|
if (unresolved.length > 0) {
|
|
@@ -96,30 +98,37 @@ export async function runContextPull(opts, out = (line) => process.stdout.write(
|
|
|
96
98
|
}
|
|
97
99
|
rendered[rel] = content;
|
|
98
100
|
}
|
|
99
|
-
// The
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
out(fail(`${
|
|
101
|
+
// The wrappers first: they are the only writes that can be refused, and a refusal must leave
|
|
102
|
+
// nothing written, so every wrapper is checked before any is written.
|
|
103
|
+
const existingOf = {};
|
|
104
|
+
for (const [rel] of wrapperSources) {
|
|
105
|
+
const path = join(codeRepo, rel);
|
|
106
|
+
const existing = (await exists(path)) ? await readFile(path, "utf8") : null;
|
|
107
|
+
existingOf[rel] = existing;
|
|
108
|
+
const hasMarkers = existing !== null && existing.includes(WRAPPER_BLOCK_BEGIN) && existing.includes(WRAPPER_BLOCK_END);
|
|
109
|
+
if (existing !== null && !hasMarkers && !opts.allowOverwrite) {
|
|
110
|
+
// No markers: a pre-briefing-layer file (the bash generator wrote these whole) or adopter-authored.
|
|
111
|
+
out(fail(`${rel} 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
112
|
return { exitCode: 1 };
|
|
111
113
|
}
|
|
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
114
|
}
|
|
119
115
|
const changed = [];
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
116
|
+
for (const [rel] of wrapperSources) {
|
|
117
|
+
const path = join(codeRepo, rel);
|
|
118
|
+
const existing = existingOf[rel] ?? null;
|
|
119
|
+
const hasMarkers = existing !== null && existing.includes(WRAPPER_BLOCK_BEGIN) && existing.includes(WRAPPER_BLOCK_END);
|
|
120
|
+
if (existing !== null && !hasMarkers) {
|
|
121
|
+
await writeFile(path, rendered[rel], "utf8");
|
|
122
|
+
if (existing !== rendered[rel])
|
|
123
|
+
changed.push(rel);
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const parts = splitWrapperTemplate(rendered[rel]);
|
|
127
|
+
const merge = await writeMarkedBlockFile(path, existing === null ? rendered[rel] : parts.block, { begin: WRAPPER_BLOCK_BEGIN, end: WRAPPER_BLOCK_END }, opts.allowOverwrite, existing === null ? undefined : { pre: parts.pre, post: parts.post });
|
|
128
|
+
if (merge.changed)
|
|
129
|
+
changed.push(rel);
|
|
130
|
+
}
|
|
131
|
+
for (const rel of [AGENT_INSTRUCTIONS_REL_PATH]) {
|
|
123
132
|
const path = join(codeRepo, rel);
|
|
124
133
|
const before = (await exists(path)) ? await readFile(path, "utf8") : null;
|
|
125
134
|
if (before !== rendered[rel]) {
|
|
@@ -128,10 +137,41 @@ export async function runContextPull(opts, out = (line) => process.stdout.write(
|
|
|
128
137
|
changed.push(rel);
|
|
129
138
|
}
|
|
130
139
|
}
|
|
140
|
+
const mcpSetup = await retireMcpSetup(codeRepo);
|
|
131
141
|
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
|
|
142
|
+
out(info(changed.length > 0 ? `Wrote ${changed.join(", ")}.` : `Already current: ${[AGENT_INSTRUCTIONS_REL_PATH, ...wrapperSources.map(([rel]) => rel)].join(", ")}.`));
|
|
143
|
+
if (mcpSetup === "removed")
|
|
144
|
+
out(info(`Removed ${MCP_SETUP_REL_PATH}: the method no longer ships it (M-ADR 0220), and this copy was unedited.`));
|
|
145
|
+
if (mcpSetup === "kept")
|
|
146
|
+
out(info(`${MCP_SETUP_REL_PATH} is no longer written (M-ADR 0220). This copy differs from the method's last render, so it was left; delete it if nothing in it is yours.`));
|
|
133
147
|
return { exitCode: 0 };
|
|
134
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Remove an MCP_SETUP.md this verb wrote before M-ADR 0220, when it is byte-identical to the
|
|
151
|
+
* method's last template rendered with the values its own header records. Anything else is the
|
|
152
|
+
* adopter's now, and stays.
|
|
153
|
+
*/
|
|
154
|
+
export async function retireMcpSetup(codeRepo) {
|
|
155
|
+
const path = join(codeRepo, MCP_SETUP_REL_PATH);
|
|
156
|
+
if (!(await exists(path)))
|
|
157
|
+
return "absent";
|
|
158
|
+
const text = await readFile(path, "utf8");
|
|
159
|
+
const repo = /^\* \*\*Emitted by:\*\* `sdd-cli context pull`, for code repo `([^`]*)`$/m.exec(text);
|
|
160
|
+
const upstream = /^\* \*\*Upstream SDD:\*\* `([^`]*)` at `([^`]*)`$/m.exec(text);
|
|
161
|
+
const baseline = /^\* \*\*Baseline version:\*\* `([^`]*)`$/m.exec(text);
|
|
162
|
+
if (!repo || !upstream || !baseline)
|
|
163
|
+
return "kept";
|
|
164
|
+
const render = substituteAll(RETIRED_MCP_SETUP_TEMPLATE, {
|
|
165
|
+
repo_name: repo[1],
|
|
166
|
+
upstream_sdd_name: upstream[1],
|
|
167
|
+
sdd_root: upstream[2],
|
|
168
|
+
sdd_method_baseline_version: baseline[1],
|
|
169
|
+
});
|
|
170
|
+
if (render !== text)
|
|
171
|
+
return "kept";
|
|
172
|
+
await rm(path);
|
|
173
|
+
return "removed";
|
|
174
|
+
}
|
|
135
175
|
/** `{{name}}` substitution over an open variable set (the briefing renderer's is closed to four). */
|
|
136
176
|
export function substituteAll(template, vars) {
|
|
137
177
|
return template.replace(/\{\{\s*([a-z_][a-z0-9_]*)\s*\}\}/g, (full, key) => (key in vars ? vars[key] : full));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/context-pull/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/context-pull/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The last MCP_SETUP.md template the method shipped (sdd-method 52bbc36), kept so `context pull`
|
|
3
|
+
* can tell a copy it wrote from one an adopter edited after M-ADR 0220 §4.5 retired the file.
|
|
4
|
+
* The SDD's own baseline stops carrying the template, so the comparison cannot read it from there.
|
|
5
|
+
*/
|
|
6
|
+
export declare const RETIRED_MCP_SETUP_TEMPLATE: string;
|
|
7
|
+
//# sourceMappingURL=retired-mcp-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retired-mcp-setup.d.ts","sourceRoot":"","sources":["../../../src/lib/context-pull/retired-mcp-setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAs4O,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The last MCP_SETUP.md template the method shipped (sdd-method 52bbc36), kept so `context pull`
|
|
3
|
+
* can tell a copy it wrote from one an adopter edited after M-ADR 0220 §4.5 retired the file.
|
|
4
|
+
* The SDD's own baseline stops carrying the template, so the comparison cannot read it from there.
|
|
5
|
+
*/
|
|
6
|
+
export const RETIRED_MCP_SETUP_TEMPLATE = "# MCP_SETUP.md\n\n* **Source:** sdd-method-baseline\n* **Emitted by:** `sdd-cli context pull`, for code repo `{{repo_name}}`\n* **Upstream SDD:** `{{upstream_sdd_name}}` at `{{sdd_root}}`\n* **Baseline version:** `{{sdd_method_baseline_version}}`\n\nThis file is **method-shipped guidance for agents working in this code repo**. It tells the agent how to reach the upstream SDD's live context via MCP. Read it alongside `agent-instructions.md` at session start.\n\nPer M-ADR 0150 (MCP as the primary dynamic-context layer), the **primary dynamic-context surface** for this code repo is the upstream SDD's MCP server, not baked-in snapshot content. Prefer MCP queries over reading static files for anything that might have changed since the last `sdd-cli context pull`.\n\n## \u00a71 What MCP gives you here\n\nThis code repo (`{{repo_name}}`) consumes specifications from the upstream SDD `{{upstream_sdd_name}}`. The upstream SDD exposes a read-only MCP server (`sdd-mcp`) you can query for:\n\n* **Catalogue rows** \u2014 current capability inventory, service registry, contract list, feature tree, cross-SDD edges.\n* **Gate state** \u2014 lock-in recommendations, intent-quality scores, domain-architecture scores, contract-quality scores per capability.\n* **Plan progress** \u2014 active plans, phases shipped, deferred follow-ups.\n* **Spec lookups** \u2014 ADRs, capability specs, feature specs, traceability manifests.\n\nThe static briefing in this repo (`agent-instructions.md` and the harness wrapper) covers conventions and orientation that are stable across syncs. Anything that changes faster than syncs run \u2014 gate state, catalogue rows, lock-in status \u2014 belongs behind MCP.\n\n## \u00a72 Server identity\n\n* **Server name:** `sdd-mcp`\n* **Upstream SDD path:** `{{sdd_root}}`\n* **Transport:** stdio (per M-ADR 0128's three-MCP-server commitment)\n\n`{{sdd_root}}` is where the SDD was checked out when this file was written; adjust it if your checkout differs. The MCP server resolves the SDD root with this precedence (per sdd-cli):\n\n1. `SDD_REPO_PATH` environment variable.\n2. `--sdd-repo <path>` flag on `sdd-cli mcp serve`.\n3. A platform SDD serves itself: when the git root's own `.sdd-repo-kind` reads `platform-product`, that repository is the SDD, whatever its siblings carry (so a platform repo needs no `SDD_REPO_PATH`).\n4. Sibling-directory auto-discovery from the code repo.\n\n## \u00a73 Harness wiring\n\n### Claude Code (reference)\n\nAdd this fragment to `.claude/settings.json` in this code repo. If the SDD is checked out in a sibling directory, discovery finds it and the `--sdd-repo` argument can be dropped:\n\n```jsonc\n{\n \"mcpServers\": {\n \"sdd-mcp\": {\n \"command\": \"sdd-cli\",\n \"args\": [\"mcp\", \"serve\", \"--sdd-repo\", \"{{sdd_root}}\"]\n }\n }\n}\n```\n\nVerify the wiring: open this code repo in Claude Code; in a session, ask the agent \"list available MCP resources\". You should see `sdd://` URIs from `sdd-mcp`.\n\n### GitHub Copilot CLI\n\nCopilot CLI's MCP wiring uses `.github/copilot/mcp.json` (verify against the current Copilot CLI docs at the time of setup; this surface is evolving). Equivalent shape:\n\n```jsonc\n{\n \"servers\": {\n \"sdd-mcp\": {\n \"command\": \"sdd-cli\",\n \"args\": [\"mcp\", \"serve\", \"--sdd-repo\", \"{{sdd_root}}\"]\n }\n }\n}\n```\n\n### Other harnesses\n\nFor any other harness (OpenAI Codex CLI, OpenCode, a generic-stdio harness, or custom in-house): follow the adopter-responsibility flow per M-ADR 0141 \u00a74.5. Read the portable contract of each MCP resource (in the upstream SDD's `docs/method/methods/`) and instantiate against your harness's native MCP-client interface. Document the wiring in an adopter-side ADR or guide.\n\n## \u00a74 Resource surface \u2014 quick reference\n\nThe upstream `sdd-mcp` server exposes resources keyed by `sdd://` URIs. The most relevant for code-repo agents:\n\n| URI pattern | Returns | Typical use |\n|---|---|---|\n| `sdd://catalogue/{name}` | All rows from one catalogue (e.g. `services`, `capabilities`, `features`, `contracts`) | Discover what exists in the SDD |\n| `sdd://catalogue/metamodel` | The catalogue metamodel doc | Understand the entity / edge model |\n| `sdd://catalogue/schema` | Parsed schema (entities + columns + FK constraints) | Reason about data shape |\n| `sdd://gates/{gate}` | Current gate state per capability | Check whether your dependency has locked in |\n| `sdd://specs/{path}` | Spec content lookup | Read a specific feature / capability spec by ID |\n| `sdd://adrs/{id}` | ADR content + metadata | Cross-reference architectural decisions |\n\nNewly-added resource families ship via baseline sync; consult the upstream SDD's MCP setup docs for the current list.\n\nTools (callable via MCP `tools/call`): `find_producers`, `find_consumers`, `find_consumers_of_contract`, `find_dependencies`, `find_dependents`, `cascade_impact`, `query_edges_for_entity`, `find_orphan_rows`, `query_catalogue_coverage`, `find_products_by_category`, `find_related_specs`, `search_specs`, `list_adrs`, `query_gate_status`. Ask the server for `tools/list` for each tool's arguments.\n\n## \u00a75 Troubleshooting\n\n**`sdd-mcp` unreachable / \"Connection refused\"**\nThe MCP server is launched on-demand by the harness; if it isn't starting, check:\n1. `sdd-cli` is installed and on `$PATH` (`which sdd-cli` should resolve).\n2. The harness's MCP config exists and points at `sdd-cli mcp serve`.\n3. The `--sdd-repo` path (or the sibling the server discovers) is a real SDD root.\n\n**\"SDD root not found\" or \"manifest missing\"**\nThe SDD path doesn't resolve to a valid SDD. The path should contain `.sdd/sdd-manifest.yaml` (or the legacy `docs/method/foundations/` layout).\n\n**Version mismatch on resources**\nSome resource families require a minimum `sdd-cli` version. Check `npm list -g @sdd-method/sdd-cli`; upgrade via `npm install -g @sdd-method/sdd-cli@latest` if a resource returns \"unsupported by this server version\".\n\n**Permission denied**\nFor adopter-scoped resources (per M-ADR 0130), `platform-mcp` / `partner-mcp` enforce scope. If you're hitting permission errors, confirm you're querying the right MCP server for the resource (operator scope vs partner scope).\n\n## \u00a76 Fallback semantics \u2014 no silent stale-data\n\nIf `sdd-mcp` is unreachable for any reason, **the agent must report the error and continue with whatever static context exists in this code repo** \u2014 `CLAUDE.md` snapshot + the orientation in this file. **There is no silent fallback to stale baked-in dynamic state.** Per M-ADR 0128 \u00a71, falling back to stale data re-introduces exactly the problem MCP exists to fix.\n\nIf MCP-served dynamic context is unavailable, surface this back to the user explicitly. The user can choose to:\n\n* Proceed without dynamic context (accept the limitation).\n* Restart the MCP server / fix the connection.\n* Re-run `sdd-cli context pull` for a fresh static briefing, acknowledging it is still a point-in-time read.\n\n## Cross-references\n\n* Upstream SDD: `{{sdd_root}}`\n* M-ADR 0128 (MCP live-query infrastructure)\n* M-ADR 0150 (MCP as primary dynamic-context layer)\n* M-ADR 0130 (adopter MCP composition pattern \u2014 `platform-mcp` / `partner-mcp`)\n* M-ADR 0148 (the static-briefing layer this file complements)\n\n---\n\n<!-- This file is rewritten whole by sdd-cli context pull. Put repo-specific MCP guidance in the harness wrapper, below its method-managed markers. -->\n";
|
|
7
|
+
//# sourceMappingURL=retired-mcp-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retired-mcp-setup.js","sourceRoot":"","sources":["../../../src/lib/context-pull/retired-mcp-setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAW,63OAA63O,CAAC"}
|
|
@@ -7,6 +7,21 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { HookMatcher, HooksBlock } from "./types.js";
|
|
9
9
|
export declare function buildMethodGuardPreToolUse(): HookMatcher;
|
|
10
|
+
/**
|
|
11
|
+
* The session-start check runs the VERIFY persona's CLI (M-ADR 0218, 0220), not sdd-cli, which is
|
|
12
|
+
* the administrator's: validating is routine author work. It runs through npx at the exact
|
|
13
|
+
* verify-cli version this sdd-cli releases with, the version the managed CI workflow installs, so a
|
|
14
|
+
* local pass comes from the same verifier CI uses and nothing needs installing globally.
|
|
15
|
+
*/
|
|
16
|
+
export declare function sessionStartValidateCommand(verifyVersion?: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Whether a session-start command is one this tool rendered, at any version: the sdd-cli form it
|
|
19
|
+
* wrote until the hook moved to verify-cli, or the npx form at any exact version. Sync replaces its
|
|
20
|
+
* own earlier render without counting it as drift; otherwise every release that moves the pinned
|
|
21
|
+
* version would refuse the settings sync until --allow-overwrite, the flag that also rewrites keys
|
|
22
|
+
* the adopter owns. Anything else under the sentinel (an edited command) is still drift.
|
|
23
|
+
*/
|
|
24
|
+
export declare function isOwnSessionStartRender(command: string): boolean;
|
|
10
25
|
export declare function buildSessionStartValidate(): HookMatcher;
|
|
11
26
|
/**
|
|
12
27
|
* Full method-managed hooks block. When extending, add a new event
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/entries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/entries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAiB,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQzE,wBAAgB,0BAA0B,IAAI,WAAW,CAYxD;AAMD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,GAAE,MAA8B,GAAG,MAAM,CAEjG;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOhE;AAED,wBAAgB,yBAAyB,IAAI,WAAW,CAUvD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,UAAU,CAMpD"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* merge path can identify it on refresh. Adopter-added hooks under
|
|
6
6
|
* the same event survive because they lack the sentinel.
|
|
7
7
|
*/
|
|
8
|
+
import { EXACT_VERSION, getVerifyCliVersion } from "../package-version.js";
|
|
8
9
|
import { METHOD_MANAGED_SENTINEL } from "./types.js";
|
|
9
10
|
function withSentinel(command) {
|
|
10
11
|
if (command.includes(METHOD_MANAGED_SENTINEL))
|
|
@@ -22,13 +23,41 @@ export function buildMethodGuardPreToolUse() {
|
|
|
22
23
|
],
|
|
23
24
|
};
|
|
24
25
|
}
|
|
26
|
+
const SESSION_START_VALIDATE_ARGS = ' validate --target-repo "${CLAUDE_PROJECT_DIR:-$(pwd)}" --validator adr-structure 2>&1 | head -20';
|
|
27
|
+
const VERIFY_CLI_NPX = /^npx --yes @sdd-method\/verify-cli@(\S+)$/;
|
|
28
|
+
/**
|
|
29
|
+
* The session-start check runs the VERIFY persona's CLI (M-ADR 0218, 0220), not sdd-cli, which is
|
|
30
|
+
* the administrator's: validating is routine author work. It runs through npx at the exact
|
|
31
|
+
* verify-cli version this sdd-cli releases with, the version the managed CI workflow installs, so a
|
|
32
|
+
* local pass comes from the same verifier CI uses and nothing needs installing globally.
|
|
33
|
+
*/
|
|
34
|
+
export function sessionStartValidateCommand(verifyVersion = getVerifyCliVersion()) {
|
|
35
|
+
return withSentinel(`npx --yes @sdd-method/verify-cli@${verifyVersion}${SESSION_START_VALIDATE_ARGS}`);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Whether a session-start command is one this tool rendered, at any version: the sdd-cli form it
|
|
39
|
+
* wrote until the hook moved to verify-cli, or the npx form at any exact version. Sync replaces its
|
|
40
|
+
* own earlier render without counting it as drift; otherwise every release that moves the pinned
|
|
41
|
+
* version would refuse the settings sync until --allow-overwrite, the flag that also rewrites keys
|
|
42
|
+
* the adopter owns. Anything else under the sentinel (an edited command) is still drift.
|
|
43
|
+
*/
|
|
44
|
+
export function isOwnSessionStartRender(command) {
|
|
45
|
+
const body = command.replace(METHOD_MANAGED_SENTINEL, "").trimEnd();
|
|
46
|
+
if (!body.endsWith(SESSION_START_VALIDATE_ARGS))
|
|
47
|
+
return false;
|
|
48
|
+
const launcher = body.slice(0, body.length - SESSION_START_VALIDATE_ARGS.length);
|
|
49
|
+
if (launcher === "sdd-cli")
|
|
50
|
+
return true;
|
|
51
|
+
const npx = VERIFY_CLI_NPX.exec(launcher);
|
|
52
|
+
return npx !== null && EXACT_VERSION.test(npx[1]);
|
|
53
|
+
}
|
|
25
54
|
export function buildSessionStartValidate() {
|
|
26
55
|
return {
|
|
27
56
|
matcher: "startup",
|
|
28
57
|
hooks: [
|
|
29
58
|
{
|
|
30
59
|
type: "command",
|
|
31
|
-
command:
|
|
60
|
+
command: sessionStartValidateCommand(),
|
|
32
61
|
},
|
|
33
62
|
],
|
|
34
63
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/entries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"entries.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/entries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,SAAS,YAAY,CAAC,OAAe;IACnC,IAAI,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9D,OAAO,GAAG,OAAO,IAAI,uBAAuB,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,OAAO,EAAE,yBAAyB;QAClC,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,YAAY,CACnB,mFAAmF,CACpF;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,2BAA2B,GAC/B,mGAAmG,CAAC;AACtG,MAAM,cAAc,GAAG,2CAA2C,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,gBAAwB,mBAAmB,EAAE;IACvF,OAAO,YAAY,CAAC,oCAAoC,aAAa,GAAG,2BAA2B,EAAE,CAAC,CAAC;AACzG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACpE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACjF,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,GAAG,KAAK,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,2BAA2B,EAAE;aACvC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,KAAK,GAAkD;QAC3D,UAAU,EAAE,CAAC,0BAA0B,EAAE,CAAC;QAC1C,YAAY,EAAE,CAAC,yBAAyB,EAAE,CAAC;KAC5C,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -5,17 +5,12 @@
|
|
|
5
5
|
* `.claude/settings.json`'s `hooks` key. Ownership is identified by
|
|
6
6
|
* the `# sdd-method-managed:true` sentinel in each hook command.
|
|
7
7
|
*
|
|
8
|
-
* Integration: `src/lib/sync/settings-merge.ts`
|
|
9
|
-
*
|
|
10
|
-
* the adopter opted into `--agent-harness claude-code` at init time.
|
|
8
|
+
* Integration: `src/lib/sync/settings-merge.ts` calls `upsertMethodManagedHooks`
|
|
9
|
+
* when the repo runs the claude-code harness (the default).
|
|
11
10
|
*/
|
|
12
11
|
export type { HookCommand, HookEventName, HookMatcher, HooksBlock, SettingsWithHooks, } from "./types.js";
|
|
13
12
|
export { METHOD_MANAGED_SENTINEL, isMethodManagedMatcher } from "./types.js";
|
|
14
|
-
export { buildMethodManagedHooks } from "./entries.js";
|
|
15
|
-
export { detectHooksDrift, upsertMethodManagedHooks, } from "./merge.js";
|
|
13
|
+
export { buildMethodManagedHooks, isOwnSessionStartRender, sessionStartValidateCommand, } from "./entries.js";
|
|
14
|
+
export { detectHooksDrift, normaliseOwnHookRenders, upsertMethodManagedHooks, } from "./merge.js";
|
|
16
15
|
export type { HooksUpsertResult } from "./merge.js";
|
|
17
|
-
export { buildMethodManagedCopilotHooks, copilotHookFilePath, detectCopilotHookDrift, isMethodManagedEvent, upsertCopilotHookFile, } from "./copilot.js";
|
|
18
|
-
export type { CopilotHookCommand, CopilotHookEvent, CopilotHookFile, CopilotHookSurface, CopilotMergeResult, } from "./copilot.js";
|
|
19
|
-
export { nativeEventName, } from "./lifecycle-mapping.js";
|
|
20
|
-
export type { PortableLifecycleEventClass } from "./lifecycle-mapping.js";
|
|
21
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -5,13 +5,10 @@
|
|
|
5
5
|
* `.claude/settings.json`'s `hooks` key. Ownership is identified by
|
|
6
6
|
* the `# sdd-method-managed:true` sentinel in each hook command.
|
|
7
7
|
*
|
|
8
|
-
* Integration: `src/lib/sync/settings-merge.ts`
|
|
9
|
-
*
|
|
10
|
-
* the adopter opted into `--agent-harness claude-code` at init time.
|
|
8
|
+
* Integration: `src/lib/sync/settings-merge.ts` calls `upsertMethodManagedHooks`
|
|
9
|
+
* when the repo runs the claude-code harness (the default).
|
|
11
10
|
*/
|
|
12
11
|
export { METHOD_MANAGED_SENTINEL, isMethodManagedMatcher } from "./types.js";
|
|
13
|
-
export { buildMethodManagedHooks } from "./entries.js";
|
|
14
|
-
export { detectHooksDrift, upsertMethodManagedHooks, } from "./merge.js";
|
|
15
|
-
export { buildMethodManagedCopilotHooks, copilotHookFilePath, detectCopilotHookDrift, isMethodManagedEvent, upsertCopilotHookFile, } from "./copilot.js";
|
|
16
|
-
export { nativeEventName, } from "./lifecycle-mapping.js";
|
|
12
|
+
export { buildMethodManagedHooks, isOwnSessionStartRender, sessionStartValidateCommand, } from "./entries.js";
|
|
13
|
+
export { detectHooksDrift, normaliseOwnHookRenders, upsertMethodManagedHooks, } from "./merge.js";
|
|
17
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
|
|
@@ -20,5 +20,12 @@ export declare function upsertMethodManagedHooks(existing: SettingsWithHooks, ow
|
|
|
20
20
|
* from what we would write now. Returns the list of events where drift
|
|
21
21
|
* is present.
|
|
22
22
|
*/
|
|
23
|
+
/**
|
|
24
|
+
* The existing settings with every method-managed session-start command this tool rendered at an
|
|
25
|
+
* earlier version swapped for the current render, for drift detection only. The tool's own older
|
|
26
|
+
* output is regenerable, never drift (the same rule settings-merge applies to an SDD_REPO_PATH it
|
|
27
|
+
* wrote). The raw settings still go to the upsert, which rewrites the older render.
|
|
28
|
+
*/
|
|
29
|
+
export declare function normaliseOwnHookRenders(existing: SettingsWithHooks, owned: HooksBlock): SettingsWithHooks;
|
|
23
30
|
export declare function detectHooksDrift(existing: SettingsWithHooks, owned: HooksBlock): readonly HookEventName[];
|
|
24
31
|
//# sourceMappingURL=merge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/merge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,aAAa,EAEb,UAAU,EACV,iBAAiB,EAClB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/merge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,aAAa,EAEb,UAAU,EACV,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAyCpB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,sEAAsE;IACtE,QAAQ,CAAC,aAAa,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,UAAU,GAChB,iBAAiB,CAuEnB;AAED;;;;;GAKG;AACH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,UAAU,GAChB,iBAAiB,CAyBnB;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,UAAU,GAChB,SAAS,aAAa,EAAE,CAkB1B"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* sync untouched.
|
|
7
7
|
*/
|
|
8
8
|
import { METHOD_MANAGED_SENTINEL, isMethodManagedMatcher } from "./types.js";
|
|
9
|
+
import { isOwnSessionStartRender } from "./entries.js";
|
|
9
10
|
/**
|
|
10
11
|
* Strip the method-managed sentinel and trailing whitespace from a hook
|
|
11
12
|
* command so two commands can be compared modulo ownership marker.
|
|
@@ -105,6 +106,36 @@ export function upsertMethodManagedHooks(existing, owned) {
|
|
|
105
106
|
* from what we would write now. Returns the list of events where drift
|
|
106
107
|
* is present.
|
|
107
108
|
*/
|
|
109
|
+
/**
|
|
110
|
+
* The existing settings with every method-managed session-start command this tool rendered at an
|
|
111
|
+
* earlier version swapped for the current render, for drift detection only. The tool's own older
|
|
112
|
+
* output is regenerable, never drift (the same rule settings-merge applies to an SDD_REPO_PATH it
|
|
113
|
+
* wrote). The raw settings still go to the upsert, which rewrites the older render.
|
|
114
|
+
*/
|
|
115
|
+
export function normaliseOwnHookRenders(existing, owned) {
|
|
116
|
+
const current = existing["hooks"];
|
|
117
|
+
const ownedCommand = owned.SessionStart?.[0]?.hooks[0]?.command;
|
|
118
|
+
if (!isHooksObject(current) || ownedCommand === undefined)
|
|
119
|
+
return existing;
|
|
120
|
+
const block = current;
|
|
121
|
+
const sessionStart = block.SessionStart;
|
|
122
|
+
if (!sessionStart)
|
|
123
|
+
return existing;
|
|
124
|
+
return {
|
|
125
|
+
...existing,
|
|
126
|
+
hooks: {
|
|
127
|
+
...block,
|
|
128
|
+
SessionStart: sessionStart.map((m) => isMethodManagedMatcher(m)
|
|
129
|
+
? {
|
|
130
|
+
...m,
|
|
131
|
+
hooks: m.hooks.map((h) => typeof h.command === "string" && isOwnSessionStartRender(h.command)
|
|
132
|
+
? { ...h, command: ownedCommand }
|
|
133
|
+
: h),
|
|
134
|
+
}
|
|
135
|
+
: m),
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
}
|
|
108
139
|
export function detectHooksDrift(existing, owned) {
|
|
109
140
|
const current = isHooksObject(existing["hooks"])
|
|
110
141
|
? existing["hooks"]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/merge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/merge.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/init/app.d.ts
CHANGED
|
@@ -14,7 +14,6 @@ export declare function renderAppServiceArchitecture(input: {
|
|
|
14
14
|
description: string;
|
|
15
15
|
today: string;
|
|
16
16
|
}): string;
|
|
17
|
-
export declare function renderAppClaudeSettings(): string;
|
|
18
17
|
export declare function scaffoldAppProfile(input: AppProfileRenderInput): Promise<{
|
|
19
18
|
filesWritten: string[];
|
|
20
19
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/lib/init/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/lib/init/app.ts"],"names":[],"mappings":"AAKA,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,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAgCrC"}
|