@sdd-method/sdd-cli 0.21.0 → 0.22.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 +30 -10
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-harness.d.ts +20 -0
- package/dist/lib/agent-harness.d.ts.map +1 -0
- package/dist/lib/agent-harness.js +28 -0
- package/dist/lib/agent-harness.js.map +1 -0
- package/dist/lib/briefing/index.d.ts +15 -0
- package/dist/lib/briefing/index.d.ts.map +1 -0
- package/dist/lib/briefing/index.js +13 -0
- package/dist/lib/briefing/index.js.map +1 -0
- package/dist/lib/briefing/render.d.ts +57 -0
- package/dist/lib/briefing/render.d.ts.map +1 -0
- package/dist/lib/briefing/render.js +112 -0
- package/dist/lib/briefing/render.js.map +1 -0
- package/dist/lib/briefing/variables.d.ts +49 -0
- package/dist/lib/briefing/variables.d.ts.map +1 -0
- package/dist/lib/briefing/variables.js +92 -0
- package/dist/lib/briefing/variables.js.map +1 -0
- package/dist/lib/catalogue/aggregate.d.ts +19 -0
- package/dist/lib/catalogue/aggregate.d.ts.map +1 -1
- package/dist/lib/catalogue/aggregate.js +88 -0
- package/dist/lib/catalogue/aggregate.js.map +1 -1
- package/dist/lib/catalogue/build.d.ts.map +1 -1
- package/dist/lib/catalogue/build.js +24 -1
- package/dist/lib/catalogue/build.js.map +1 -1
- package/dist/lib/catalogue/builders/capabilities.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/capabilities.js +18 -4
- package/dist/lib/catalogue/builders/capabilities.js.map +1 -1
- package/dist/lib/catalogue/builders/feature-subscription-channels.d.ts +12 -0
- package/dist/lib/catalogue/builders/feature-subscription-channels.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/feature-subscription-channels.js +197 -0
- package/dist/lib/catalogue/builders/feature-subscription-channels.js.map +1 -0
- package/dist/lib/catalogue/builders/index.d.ts +4 -0
- package/dist/lib/catalogue/builders/index.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/index.js +2 -0
- package/dist/lib/catalogue/builders/index.js.map +1 -1
- package/dist/lib/catalogue/builders/product-platform-dependencies.d.ts +10 -0
- package/dist/lib/catalogue/builders/product-platform-dependencies.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/product-platform-dependencies.js +155 -0
- package/dist/lib/catalogue/builders/product-platform-dependencies.js.map +1 -0
- package/dist/lib/catalogue/canonical-schema.yaml +96 -1
- package/dist/lib/catalogue/traceability-loader.d.ts +17 -0
- package/dist/lib/catalogue/traceability-loader.d.ts.map +1 -1
- package/dist/lib/catalogue/traceability-loader.js +6 -0
- package/dist/lib/catalogue/traceability-loader.js.map +1 -1
- package/dist/lib/generate-briefing/index.d.ts +22 -0
- package/dist/lib/generate-briefing/index.d.ts.map +1 -0
- package/dist/lib/generate-briefing/index.js +77 -0
- package/dist/lib/generate-briefing/index.js.map +1 -0
- package/dist/lib/hooks-seed/copilot.d.ts +93 -0
- package/dist/lib/hooks-seed/copilot.d.ts.map +1 -0
- package/dist/lib/hooks-seed/copilot.js +167 -0
- package/dist/lib/hooks-seed/copilot.js.map +1 -0
- package/dist/lib/hooks-seed/index.d.ts +4 -0
- package/dist/lib/hooks-seed/index.d.ts.map +1 -1
- package/dist/lib/hooks-seed/index.js +2 -0
- package/dist/lib/hooks-seed/index.js.map +1 -1
- package/dist/lib/hooks-seed/lifecycle-mapping.d.ts +12 -0
- package/dist/lib/hooks-seed/lifecycle-mapping.d.ts.map +1 -0
- package/dist/lib/hooks-seed/lifecycle-mapping.js +28 -0
- package/dist/lib/hooks-seed/lifecycle-mapping.js.map +1 -0
- package/dist/lib/init/index.d.ts +6 -4
- package/dist/lib/init/index.d.ts.map +1 -1
- package/dist/lib/init/index.js +5 -26
- package/dist/lib/init/index.js.map +1 -1
- package/dist/lib/init/platform.d.ts +9 -0
- package/dist/lib/init/platform.d.ts.map +1 -1
- package/dist/lib/init/platform.js +8 -2
- package/dist/lib/init/platform.js.map +1 -1
- package/dist/lib/sync/briefing-merge.d.ts +34 -0
- package/dist/lib/sync/briefing-merge.d.ts.map +1 -0
- package/dist/lib/sync/briefing-merge.js +82 -0
- package/dist/lib/sync/briefing-merge.js.map +1 -0
- package/dist/lib/sync/copilot-hooks-merge.d.ts +30 -0
- package/dist/lib/sync/copilot-hooks-merge.d.ts.map +1 -0
- package/dist/lib/sync/copilot-hooks-merge.js +96 -0
- package/dist/lib/sync/copilot-hooks-merge.js.map +1 -0
- package/dist/lib/sync/index.d.ts +8 -3
- package/dist/lib/sync/index.d.ts.map +1 -1
- package/dist/lib/sync/index.js +63 -23
- package/dist/lib/sync/index.js.map +1 -1
- package/dist/verbs/generate-briefing.d.ts +3 -0
- package/dist/verbs/generate-briefing.d.ts.map +1 -0
- package/dist/verbs/generate-briefing.js +28 -0
- package/dist/verbs/generate-briefing.js.map +1 -0
- package/dist/verbs/init.d.ts.map +1 -1
- package/dist/verbs/init.js +11 -8
- package/dist/verbs/init.js.map +1 -1
- package/dist/verbs/sync.d.ts.map +1 -1
- package/dist/verbs/sync.js +11 -4
- package/dist/verbs/sync.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builders + drift detection for the method-managed GitHub Copilot CLI
|
|
3
|
+
* hooks, per `docs/method/methods/hook-contracts.md` (Hook 1, Hook 2)
|
|
4
|
+
* and the portable contracts in `hook-portable-contract-schema.yaml`.
|
|
5
|
+
*
|
|
6
|
+
* The Copilot CLI surface differs from Claude Code in three ways
|
|
7
|
+
* (per ADR 0141 §4.3 + hook-contracts.md):
|
|
8
|
+
*
|
|
9
|
+
* 1. Hook configs live in per-event JSON files (`.github/hooks/<event>.json`),
|
|
10
|
+
* not a single settings.json.
|
|
11
|
+
* 2. No per-tool matcher — every `preToolUse` hook fires for every
|
|
12
|
+
* tool, with in-script filtering instead.
|
|
13
|
+
* 3. Approval semantic is declarative (`approval: deny-on-nonzero`)
|
|
14
|
+
* rather than exit-code based.
|
|
15
|
+
*
|
|
16
|
+
* Ownership is sentinel-based, same as Claude Code: the `bash` and
|
|
17
|
+
* `powershell` command strings carry `# sdd-method-managed:true`.
|
|
18
|
+
* Adopter-added events in the same `events[]` array lack the sentinel
|
|
19
|
+
* and survive sync.
|
|
20
|
+
*/
|
|
21
|
+
import { type PortableLifecycleEventClass } from "./lifecycle-mapping.js";
|
|
22
|
+
/**
|
|
23
|
+
* The shape of one event entry in `.github/hooks/<event>.json`.
|
|
24
|
+
* `command` may be either a single shell string or a per-shell object —
|
|
25
|
+
* we always emit the per-shell object for Windows/PowerShell parity.
|
|
26
|
+
*/
|
|
27
|
+
export interface CopilotHookCommand {
|
|
28
|
+
readonly bash: string;
|
|
29
|
+
readonly powershell: string;
|
|
30
|
+
}
|
|
31
|
+
export interface CopilotHookEvent {
|
|
32
|
+
readonly type: string;
|
|
33
|
+
readonly command: CopilotHookCommand;
|
|
34
|
+
readonly timeout_ms?: number;
|
|
35
|
+
readonly approval?: "always-allow" | "deny-on-nonzero";
|
|
36
|
+
}
|
|
37
|
+
export interface CopilotHookFile {
|
|
38
|
+
readonly version: 1;
|
|
39
|
+
readonly events: readonly CopilotHookEvent[];
|
|
40
|
+
readonly [key: string]: unknown;
|
|
41
|
+
}
|
|
42
|
+
export declare function copilotHookFilePath(portable: PortableLifecycleEventClass): string;
|
|
43
|
+
/**
|
|
44
|
+
* Hook 1 — `block-edits-to-method-managed-paths` (pre_tool_use).
|
|
45
|
+
* Copilot CLI has no per-tool matcher, so the script
|
|
46
|
+
* (orchestration/scripts/copilot-method-guard.{sh,ps1}) does the
|
|
47
|
+
* filtering on tool name in addition to the path check. Method-side
|
|
48
|
+
* authors the scripts; we just emit the wiring.
|
|
49
|
+
*/
|
|
50
|
+
export declare function buildCopilotPreToolUseEvent(): CopilotHookEvent;
|
|
51
|
+
/**
|
|
52
|
+
* Hook 2 — `validate-adr-structure-on-session-start` (session_start).
|
|
53
|
+
* Output is surfaced as session-baseline context; non-blocking
|
|
54
|
+
* (`approval: always-allow`) to match the portable contract's `warn`
|
|
55
|
+
* exit-code semantic.
|
|
56
|
+
*/
|
|
57
|
+
export declare function buildCopilotSessionStartEvent(): CopilotHookEvent;
|
|
58
|
+
/**
|
|
59
|
+
* Method-managed Copilot CLI hook surface. The map is portable-class →
|
|
60
|
+
* `{ filePath, events: [method-managed events to write] }`. The
|
|
61
|
+
* settings-merge pass walks this to render each `.github/hooks/*.json`
|
|
62
|
+
* file with sentinel-based ownership.
|
|
63
|
+
*/
|
|
64
|
+
export type CopilotHookSurface = Readonly<Record<PortableLifecycleEventClass, {
|
|
65
|
+
filePath: string;
|
|
66
|
+
events: readonly CopilotHookEvent[];
|
|
67
|
+
}>>;
|
|
68
|
+
export declare function buildMethodManagedCopilotHooks(): Partial<CopilotHookSurface>;
|
|
69
|
+
/**
|
|
70
|
+
* An event entry is method-managed iff its `command.bash` (or
|
|
71
|
+
* `command.powershell`) carries the sentinel.
|
|
72
|
+
*/
|
|
73
|
+
export declare function isMethodManagedEvent(event: CopilotHookEvent): boolean;
|
|
74
|
+
export interface CopilotMergeResult {
|
|
75
|
+
readonly file: CopilotHookFile;
|
|
76
|
+
/** True iff a method-managed event differs from incoming or was added. */
|
|
77
|
+
readonly changed: boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Upsert method-managed events into an existing hook file. Adopter-
|
|
81
|
+
* added events (no sentinel) survive. An unmarked adopter event that
|
|
82
|
+
* is equivalent (modulo sentinel) to a method-managed event we're
|
|
83
|
+
* adding gets de-duped — same safety net as the Claude Code merge
|
|
84
|
+
* post-v0.12.2.
|
|
85
|
+
*/
|
|
86
|
+
export declare function upsertCopilotHookFile(existing: CopilotHookFile | null, owned: readonly CopilotHookEvent[]): CopilotMergeResult;
|
|
87
|
+
/**
|
|
88
|
+
* Detect adopter drift: an event still carrying the sentinel but whose
|
|
89
|
+
* content no longer matches the canonical version we'd write. Returns
|
|
90
|
+
* `true` iff drift is present.
|
|
91
|
+
*/
|
|
92
|
+
export declare function detectCopilotHookDrift(existing: CopilotHookFile | null, owned: readonly CopilotHookEvent[]): boolean;
|
|
93
|
+
//# sourceMappingURL=copilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAmB,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAI3F;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,iBAAiB,CAAC;CACxD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAUD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,2BAA2B,GACpC,MAAM,CAQR;AAOD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,IAAI,gBAAgB,CAY9D;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,IAAI,gBAAgB,CAchE;AAED;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,MAAM,CACJ,2BAA2B,EAC3B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,CAC1D,CACF,CAAC;AAEF,wBAAgB,8BAA8B,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAW5E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAUrE;AA4BD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,eAAe,GAAG,IAAI,EAChC,KAAK,EAAE,SAAS,gBAAgB,EAAE,GACjC,kBAAkB,CA6BpB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,GAAG,IAAI,EAChC,KAAK,EAAE,SAAS,gBAAgB,EAAE,GACjC,OAAO,CAKT"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builders + drift detection for the method-managed GitHub Copilot CLI
|
|
3
|
+
* hooks, per `docs/method/methods/hook-contracts.md` (Hook 1, Hook 2)
|
|
4
|
+
* and the portable contracts in `hook-portable-contract-schema.yaml`.
|
|
5
|
+
*
|
|
6
|
+
* The Copilot CLI surface differs from Claude Code in three ways
|
|
7
|
+
* (per ADR 0141 §4.3 + hook-contracts.md):
|
|
8
|
+
*
|
|
9
|
+
* 1. Hook configs live in per-event JSON files (`.github/hooks/<event>.json`),
|
|
10
|
+
* not a single settings.json.
|
|
11
|
+
* 2. No per-tool matcher — every `preToolUse` hook fires for every
|
|
12
|
+
* tool, with in-script filtering instead.
|
|
13
|
+
* 3. Approval semantic is declarative (`approval: deny-on-nonzero`)
|
|
14
|
+
* rather than exit-code based.
|
|
15
|
+
*
|
|
16
|
+
* Ownership is sentinel-based, same as Claude Code: the `bash` and
|
|
17
|
+
* `powershell` command strings carry `# sdd-method-managed:true`.
|
|
18
|
+
* Adopter-added events in the same `events[]` array lack the sentinel
|
|
19
|
+
* and survive sync.
|
|
20
|
+
*/
|
|
21
|
+
import { METHOD_MANAGED_SENTINEL } from "./types.js";
|
|
22
|
+
import { nativeEventName } from "./lifecycle-mapping.js";
|
|
23
|
+
const HARNESS = "github-copilot-cli";
|
|
24
|
+
/** Filename per portable lifecycle class. */
|
|
25
|
+
const HOOK_FILE_BY_PORTABLE = {
|
|
26
|
+
pre_tool_use: "pre-tool-use.json",
|
|
27
|
+
session_start: "session-start.json",
|
|
28
|
+
};
|
|
29
|
+
export function copilotHookFilePath(portable) {
|
|
30
|
+
const name = HOOK_FILE_BY_PORTABLE[portable];
|
|
31
|
+
if (!name) {
|
|
32
|
+
throw new Error(`No Copilot CLI hook file mapped for portable class "${portable}"`);
|
|
33
|
+
}
|
|
34
|
+
return `.github/hooks/${name}`;
|
|
35
|
+
}
|
|
36
|
+
function withSentinel(command) {
|
|
37
|
+
if (command.includes(METHOD_MANAGED_SENTINEL))
|
|
38
|
+
return command;
|
|
39
|
+
return `${command} ${METHOD_MANAGED_SENTINEL}`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Hook 1 — `block-edits-to-method-managed-paths` (pre_tool_use).
|
|
43
|
+
* Copilot CLI has no per-tool matcher, so the script
|
|
44
|
+
* (orchestration/scripts/copilot-method-guard.{sh,ps1}) does the
|
|
45
|
+
* filtering on tool name in addition to the path check. Method-side
|
|
46
|
+
* authors the scripts; we just emit the wiring.
|
|
47
|
+
*/
|
|
48
|
+
export function buildCopilotPreToolUseEvent() {
|
|
49
|
+
return {
|
|
50
|
+
type: nativeEventName(HARNESS, "pre_tool_use"),
|
|
51
|
+
command: {
|
|
52
|
+
bash: withSentinel("./orchestration/scripts/copilot-method-guard.sh"),
|
|
53
|
+
powershell: withSentinel("./orchestration/scripts/copilot-method-guard.ps1"),
|
|
54
|
+
},
|
|
55
|
+
timeout_ms: 5000,
|
|
56
|
+
approval: "deny-on-nonzero",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Hook 2 — `validate-adr-structure-on-session-start` (session_start).
|
|
61
|
+
* Output is surfaced as session-baseline context; non-blocking
|
|
62
|
+
* (`approval: always-allow`) to match the portable contract's `warn`
|
|
63
|
+
* exit-code semantic.
|
|
64
|
+
*/
|
|
65
|
+
export function buildCopilotSessionStartEvent() {
|
|
66
|
+
return {
|
|
67
|
+
type: nativeEventName(HARNESS, "session_start"),
|
|
68
|
+
command: {
|
|
69
|
+
bash: withSentinel("sdd-cli validate --validator adr-structure 2>&1 | head -20"),
|
|
70
|
+
powershell: withSentinel("sdd-cli validate --validator adr-structure 2>&1 | Select-Object -First 20"),
|
|
71
|
+
},
|
|
72
|
+
timeout_ms: 30000,
|
|
73
|
+
approval: "always-allow",
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export function buildMethodManagedCopilotHooks() {
|
|
77
|
+
return {
|
|
78
|
+
pre_tool_use: {
|
|
79
|
+
filePath: copilotHookFilePath("pre_tool_use"),
|
|
80
|
+
events: [buildCopilotPreToolUseEvent()],
|
|
81
|
+
},
|
|
82
|
+
session_start: {
|
|
83
|
+
filePath: copilotHookFilePath("session_start"),
|
|
84
|
+
events: [buildCopilotSessionStartEvent()],
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* An event entry is method-managed iff its `command.bash` (or
|
|
90
|
+
* `command.powershell`) carries the sentinel.
|
|
91
|
+
*/
|
|
92
|
+
export function isMethodManagedEvent(event) {
|
|
93
|
+
const bash = typeof event.command?.bash === "string" ? event.command.bash : "";
|
|
94
|
+
const ps = typeof event.command?.powershell === "string"
|
|
95
|
+
? event.command.powershell
|
|
96
|
+
: "";
|
|
97
|
+
return (bash.includes(METHOD_MANAGED_SENTINEL) ||
|
|
98
|
+
ps.includes(METHOD_MANAGED_SENTINEL));
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Strip the sentinel and trailing whitespace from a command string so
|
|
102
|
+
* two commands can be compared modulo ownership marker. Symmetric to
|
|
103
|
+
* the Claude Code merge logic.
|
|
104
|
+
*/
|
|
105
|
+
function normaliseCommandString(command) {
|
|
106
|
+
return command.replace(METHOD_MANAGED_SENTINEL, "").trimEnd();
|
|
107
|
+
}
|
|
108
|
+
function eventsEquivalentExcludingSentinel(a, b) {
|
|
109
|
+
if (a.type !== b.type)
|
|
110
|
+
return false;
|
|
111
|
+
if (a.approval !== b.approval)
|
|
112
|
+
return false;
|
|
113
|
+
if (a.timeout_ms !== b.timeout_ms)
|
|
114
|
+
return false;
|
|
115
|
+
const aBash = a.command?.bash ?? "";
|
|
116
|
+
const bBash = b.command?.bash ?? "";
|
|
117
|
+
const aPs = a.command?.powershell ?? "";
|
|
118
|
+
const bPs = b.command?.powershell ?? "";
|
|
119
|
+
return (normaliseCommandString(aBash) === normaliseCommandString(bBash) &&
|
|
120
|
+
normaliseCommandString(aPs) === normaliseCommandString(bPs));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Upsert method-managed events into an existing hook file. Adopter-
|
|
124
|
+
* added events (no sentinel) survive. An unmarked adopter event that
|
|
125
|
+
* is equivalent (modulo sentinel) to a method-managed event we're
|
|
126
|
+
* adding gets de-duped — same safety net as the Claude Code merge
|
|
127
|
+
* post-v0.12.2.
|
|
128
|
+
*/
|
|
129
|
+
export function upsertCopilotHookFile(existing, owned) {
|
|
130
|
+
const currentEvents = existing?.events ?? [];
|
|
131
|
+
let dedupedAny = false;
|
|
132
|
+
const adopterEvents = currentEvents.filter((evt) => {
|
|
133
|
+
if (isMethodManagedEvent(evt))
|
|
134
|
+
return false;
|
|
135
|
+
const equivalent = owned.some((o) => eventsEquivalentExcludingSentinel(evt, o));
|
|
136
|
+
if (equivalent) {
|
|
137
|
+
dedupedAny = true;
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
});
|
|
142
|
+
const before = currentEvents.filter((e) => isMethodManagedEvent(e));
|
|
143
|
+
const after = owned;
|
|
144
|
+
const methodChanged = JSON.stringify(before) !== JSON.stringify(after);
|
|
145
|
+
const nextFile = {
|
|
146
|
+
version: 1,
|
|
147
|
+
events: [...adopterEvents, ...owned],
|
|
148
|
+
};
|
|
149
|
+
return {
|
|
150
|
+
file: nextFile,
|
|
151
|
+
changed: methodChanged || dedupedAny,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Detect adopter drift: an event still carrying the sentinel but whose
|
|
156
|
+
* content no longer matches the canonical version we'd write. Returns
|
|
157
|
+
* `true` iff drift is present.
|
|
158
|
+
*/
|
|
159
|
+
export function detectCopilotHookDrift(existing, owned) {
|
|
160
|
+
if (!existing)
|
|
161
|
+
return false;
|
|
162
|
+
const existingMethod = existing.events.filter((e) => isMethodManagedEvent(e));
|
|
163
|
+
if (existingMethod.length === 0)
|
|
164
|
+
return false;
|
|
165
|
+
return JSON.stringify(existingMethod) !== JSON.stringify(owned);
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=copilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/copilot.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,4 +14,8 @@ export { METHOD_MANAGED_SENTINEL, isMethodManagedMatcher } from "./types.js";
|
|
|
14
14
|
export { buildMethodManagedHooks } from "./entries.js";
|
|
15
15
|
export { detectHooksDrift, upsertMethodManagedHooks, } from "./merge.js";
|
|
16
16
|
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";
|
|
17
21
|
//# 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;;;;;;;;;;GAUG;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,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;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,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EACL,8BAA8B,EAC9B,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -12,4 +12,6 @@
|
|
|
12
12
|
export { METHOD_MANAGED_SENTINEL, isMethodManagedMatcher } from "./types.js";
|
|
13
13
|
export { buildMethodManagedHooks } from "./entries.js";
|
|
14
14
|
export { detectHooksDrift, upsertMethodManagedHooks, } from "./merge.js";
|
|
15
|
+
export { buildMethodManagedCopilotHooks, copilotHookFilePath, detectCopilotHookDrift, isMethodManagedEvent, upsertCopilotHookFile, } from "./copilot.js";
|
|
16
|
+
export { nativeEventName, } from "./lifecycle-mapping.js";
|
|
15
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,8BAA8B,EAC9B,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAStB,OAAO,EACL,eAAe,GAChB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portable lifecycle event class → harness-native event mapping per
|
|
3
|
+
* ADR 0141 §4.3 and the table in `docs/method/foundations/lifecycle-event-classes.yaml`.
|
|
4
|
+
*
|
|
5
|
+
* Adding a new harness binding is mechanical: extend `AgentHarness`
|
|
6
|
+
* in src/lib/agent-harness.ts and add a row here. Hook builders
|
|
7
|
+
* consume this mapping rather than hand-coding native event names.
|
|
8
|
+
*/
|
|
9
|
+
import type { AgentHarness } from "../agent-harness.js";
|
|
10
|
+
export type PortableLifecycleEventClass = "pre_tool_use" | "post_tool_use" | "user_prompt_submit" | "session_start" | "session_stop";
|
|
11
|
+
export declare function nativeEventName(harness: AgentHarness, portable: PortableLifecycleEventClass): string;
|
|
12
|
+
//# sourceMappingURL=lifecycle-mapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-mapping.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/lifecycle-mapping.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,MAAM,2BAA2B,GACnC,cAAc,GACd,eAAe,GACf,oBAAoB,GACpB,eAAe,GACf,cAAc,CAAC;AAqBnB,wBAAgB,eAAe,CAC7B,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,2BAA2B,GACpC,MAAM,CAER"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portable lifecycle event class → harness-native event mapping per
|
|
3
|
+
* ADR 0141 §4.3 and the table in `docs/method/foundations/lifecycle-event-classes.yaml`.
|
|
4
|
+
*
|
|
5
|
+
* Adding a new harness binding is mechanical: extend `AgentHarness`
|
|
6
|
+
* in src/lib/agent-harness.ts and add a row here. Hook builders
|
|
7
|
+
* consume this mapping rather than hand-coding native event names.
|
|
8
|
+
*/
|
|
9
|
+
const MAPPINGS = {
|
|
10
|
+
"claude-code": {
|
|
11
|
+
pre_tool_use: "PreToolUse",
|
|
12
|
+
post_tool_use: "PostToolUse",
|
|
13
|
+
user_prompt_submit: "UserPromptSubmit",
|
|
14
|
+
session_start: "SessionStart",
|
|
15
|
+
session_stop: "Stop",
|
|
16
|
+
},
|
|
17
|
+
"github-copilot-cli": {
|
|
18
|
+
pre_tool_use: "preToolUse",
|
|
19
|
+
post_tool_use: "postToolUse",
|
|
20
|
+
user_prompt_submit: "userPromptSubmitted",
|
|
21
|
+
session_start: "sessionStart",
|
|
22
|
+
session_stop: "agentStop",
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export function nativeEventName(harness, portable) {
|
|
26
|
+
return MAPPINGS[harness][portable];
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=lifecycle-mapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-mapping.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/lifecycle-mapping.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,MAAM,QAAQ,GAEV;IACF,aAAa,EAAE;QACb,YAAY,EAAE,YAAY;QAC1B,aAAa,EAAE,aAAa;QAC5B,kBAAkB,EAAE,kBAAkB;QACtC,aAAa,EAAE,cAAc;QAC7B,YAAY,EAAE,MAAM;KACrB;IACD,oBAAoB,EAAE;QACpB,YAAY,EAAE,YAAY;QAC1B,aAAa,EAAE,aAAa;QAC5B,kBAAkB,EAAE,qBAAqB;QACzC,aAAa,EAAE,cAAc;QAC7B,YAAY,EAAE,WAAW;KAC1B;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,OAAqB,EACrB,QAAqC;IAErC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC"}
|
package/dist/lib/init/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AgentHarness } from "../agent-harness.js";
|
|
1
2
|
import { type Profile } from "../repo-kind.js";
|
|
2
3
|
import { type IntegrationProfileType } from "./integration.js";
|
|
3
4
|
export interface InitOptions {
|
|
@@ -9,11 +10,12 @@ export interface InitOptions {
|
|
|
9
10
|
dryRun: boolean;
|
|
10
11
|
platformRoot?: string;
|
|
11
12
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* Target agent harness per ADR 0141 §4.6. Drives which hooks
|
|
14
|
+
* baseline gets seeded and which wrappers are emitted. The CLI verb
|
|
15
|
+
* resolves the default (`claude-code`) before calling in; callers
|
|
16
|
+
* MAY pass `undefined` to mean the same thing in test paths.
|
|
15
17
|
*/
|
|
16
|
-
agentHarness?:
|
|
18
|
+
agentHarness?: AgentHarness;
|
|
17
19
|
appId?: string;
|
|
18
20
|
integrationId?: string;
|
|
19
21
|
profileType?: IntegrationProfileType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/init/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/init/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAyB,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAItE,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;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAG5B,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;AA8BD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAA2C,GACpE,OAAO,CAAC,UAAU,CAAC,CA8GrB"}
|
package/dist/lib/init/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { execFile as execFileCb } from "node:child_process";
|
|
2
|
-
import { access, mkdir
|
|
2
|
+
import { access, mkdir } from "node:fs/promises";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import { loadBundle } from "../bundle.js";
|
|
@@ -7,7 +7,6 @@ import { profileFromBundleName } from "../repo-kind.js";
|
|
|
7
7
|
import { runSync } from "../sync/index.js";
|
|
8
8
|
import { runValidate } from "../validate/index.js";
|
|
9
9
|
import { scaffoldAppProfile } from "./app.js";
|
|
10
|
-
import { renderAppClaudeMd, renderIntegrationClaudeMd, renderPlatformClaudeMd, } from "./claude-md.js";
|
|
11
10
|
import { scaffoldIntegrationProfile, } from "./integration.js";
|
|
12
11
|
import { derivePlatformId, scaffoldPlatformProfile } from "./platform.js";
|
|
13
12
|
const execFile = promisify(execFileCb);
|
|
@@ -94,9 +93,9 @@ export async function runInit(opts, stdout = (line) => process.stdout.write(line
|
|
|
94
93
|
stdout(fail("Sync failed during init; target repo may be partially populated"));
|
|
95
94
|
return { exitCode: syncResult.exitCode };
|
|
96
95
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
// Briefing files (`agent-instructions.md` + harness wrapper) are
|
|
97
|
+
// emitted by the sync step's `syncBriefingFiles` pass per ADR 0148.
|
|
98
|
+
// No init-time write needed; sync handles fresh-vs-existing.
|
|
100
99
|
if (opts.gitInit) {
|
|
101
100
|
const alreadyGit = await pathExists(join(opts.targetDir, ".git"));
|
|
102
101
|
if (alreadyGit) {
|
|
@@ -152,27 +151,6 @@ function displayId(opts) {
|
|
|
152
151
|
}
|
|
153
152
|
return opts.platformName ?? "<unknown-platform>";
|
|
154
153
|
}
|
|
155
|
-
function renderClaudeMdForProfile(opts) {
|
|
156
|
-
if (opts.profile === "application") {
|
|
157
|
-
return renderAppClaudeMd({
|
|
158
|
-
appId: opts.appId,
|
|
159
|
-
...(opts.platformName ? { platformName: opts.platformName } : {}),
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
if (opts.profile === "integration") {
|
|
163
|
-
return renderIntegrationClaudeMd({
|
|
164
|
-
integrationId: opts.integrationId,
|
|
165
|
-
profileType: opts.profileType,
|
|
166
|
-
...(opts.providerName ? { providerName: opts.providerName } : {}),
|
|
167
|
-
...(opts.platformName ? { platformName: opts.platformName } : {}),
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
const platformName = opts.platformName;
|
|
171
|
-
return renderPlatformClaudeMd({
|
|
172
|
-
platformName,
|
|
173
|
-
platformId: opts.platformId ?? derivePlatformId(platformName),
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
154
|
async function runScaffold(opts) {
|
|
177
155
|
if (opts.profile === "application") {
|
|
178
156
|
return scaffoldAppProfile({
|
|
@@ -187,6 +165,7 @@ async function runScaffold(opts) {
|
|
|
187
165
|
platformName,
|
|
188
166
|
platformId,
|
|
189
167
|
targetRepo: opts.targetDir,
|
|
168
|
+
...(opts.agentHarness ? { agentHarness: opts.agentHarness } : {}),
|
|
190
169
|
});
|
|
191
170
|
}
|
|
192
171
|
return scaffoldIntegrationProfile({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/init/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
+
import type { AgentHarness } from "../agent-harness.js";
|
|
1
2
|
export interface PlatformProfileRenderInput {
|
|
2
3
|
platformName: string;
|
|
3
4
|
platformId: string;
|
|
4
5
|
targetRepo: string;
|
|
5
6
|
today?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Target agent harness per ADR 0141 §4.6. When set to
|
|
9
|
+
* `github-copilot-cli`, the scaffold skips `.claude/settings.json`
|
|
10
|
+
* (Copilot CLI does not read it). The first sync run then writes
|
|
11
|
+
* `.github/hooks/*.json`. Defaults to `claude-code` behaviour when
|
|
12
|
+
* omitted, preserving the legacy scaffold.
|
|
13
|
+
*/
|
|
14
|
+
agentHarness?: AgentHarness;
|
|
6
15
|
}
|
|
7
16
|
export declare function renderPlatformReadme(input: {
|
|
8
17
|
platformName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/lib/init/platform.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/lib/init/platform.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAkDT;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CA4BhD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,GAAE;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAwBd;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAqB1E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAqB5E;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAoErC;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAM7D"}
|
|
@@ -151,8 +151,14 @@ export async function scaffoldPlatformProfile(input) {
|
|
|
151
151
|
filesWritten.push("README.md");
|
|
152
152
|
await writeFileAt(join(input.targetRepo, ".gitignore"), renderPlatformGitignore());
|
|
153
153
|
filesWritten.push(".gitignore");
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
// ADR 0141 §4.6: only seed .claude/settings.json under the Claude
|
|
155
|
+
// Code reference harness. Copilot CLI adopters get .github/hooks/*.json
|
|
156
|
+
// written by the first sync run; their MCP wiring lands separately
|
|
157
|
+
// under ADR 0150 Phase 3.
|
|
158
|
+
if (input.agentHarness !== "github-copilot-cli") {
|
|
159
|
+
await writeFileAt(join(input.targetRepo, ".claude/settings.json"), renderClaudeSettingsStub({ sddRepoPath: input.targetRepo }));
|
|
160
|
+
filesWritten.push(".claude/settings.json");
|
|
161
|
+
}
|
|
156
162
|
await writeFileAt(join(input.targetRepo, WORKFLOW_REL_PATH), renderMethodValidationWorkflow("platform"));
|
|
157
163
|
filesWritten.push(WORKFLOW_REL_PATH);
|
|
158
164
|
for (const rel of [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/lib/init/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/lib/init/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Briefing-layer sync per ADR 0148.
|
|
3
|
+
*
|
|
4
|
+
* Two files participate, with different semantics:
|
|
5
|
+
*
|
|
6
|
+
* - `agent-instructions.md` — fully method-managed; unconditional
|
|
7
|
+
* overwrite on every sync. No marker-aware merge.
|
|
8
|
+
* - Harness wrapper (`CLAUDE.md` / `AGENTS.md` / …) — partially
|
|
9
|
+
* method-managed. The `<!-- method-managed: begin/end -->` block
|
|
10
|
+
* is overwritten; adopter content around it survives via the
|
|
11
|
+
* existing `writeMarkedBlockFile` machinery (same pattern as
|
|
12
|
+
* `.github/workflows/method-validation.yml`).
|
|
13
|
+
*
|
|
14
|
+
* Both files are rendered from templates that ship in the bundle at
|
|
15
|
+
* `<target>/orchestration/templates/briefing/...`. Older bundles
|
|
16
|
+
* pre-dating ADR 0148 won't carry the templates; this module skips
|
|
17
|
+
* gracefully with a log line in that case.
|
|
18
|
+
*/
|
|
19
|
+
import type { AgentHarness } from "../agent-harness.js";
|
|
20
|
+
import type { RepoKind } from "../repo-kind.js";
|
|
21
|
+
export interface BriefingSyncOptions {
|
|
22
|
+
readonly targetRepo: string;
|
|
23
|
+
readonly repoKind: RepoKind;
|
|
24
|
+
readonly baselineVersion: string;
|
|
25
|
+
readonly agentHarness: AgentHarness;
|
|
26
|
+
readonly allowOverwrite: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface BriefingSyncResult {
|
|
29
|
+
readonly log: readonly string[];
|
|
30
|
+
/** Path of the file refused, or null when not refused. */
|
|
31
|
+
readonly refused: string | null;
|
|
32
|
+
}
|
|
33
|
+
export declare function syncBriefingFiles(opts: BriefingSyncOptions): Promise<BriefingSyncResult>;
|
|
34
|
+
//# sourceMappingURL=briefing-merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"briefing-merge.d.ts","sourceRoot":"","sources":["../../../src/lib/sync/briefing-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAWxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAqE7B"}
|