domain-knowledge-kit 0.2.16 → 0.2.19

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 (45) hide show
  1. package/dist/cli.js +4 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/features/agent/commands/init.d.ts +90 -1
  4. package/dist/features/agent/commands/init.d.ts.map +1 -1
  5. package/dist/features/agent/commands/init.js +206 -48
  6. package/dist/features/agent/commands/init.js.map +1 -1
  7. package/dist/features/agent/commands/prime.d.ts.map +1 -1
  8. package/dist/features/agent/commands/prime.js +2 -1
  9. package/dist/features/agent/commands/prime.js.map +1 -1
  10. package/dist/features/agent/commands/update.d.ts +27 -0
  11. package/dist/features/agent/commands/update.d.ts.map +1 -0
  12. package/dist/features/agent/commands/update.js +316 -0
  13. package/dist/features/agent/commands/update.js.map +1 -0
  14. package/dist/features/agent/dkk-artifacts.d.ts +76 -0
  15. package/dist/features/agent/dkk-artifacts.d.ts.map +1 -0
  16. package/dist/features/agent/dkk-artifacts.js +328 -0
  17. package/dist/features/agent/dkk-artifacts.js.map +1 -0
  18. package/dist/features/agent/install-mode.d.ts +34 -0
  19. package/dist/features/agent/install-mode.d.ts.map +1 -0
  20. package/dist/features/agent/install-mode.js +78 -0
  21. package/dist/features/agent/install-mode.js.map +1 -0
  22. package/dist/features/agent/mcp-register.d.ts +20 -0
  23. package/dist/features/agent/mcp-register.d.ts.map +1 -0
  24. package/dist/features/agent/mcp-register.js +116 -0
  25. package/dist/features/agent/mcp-register.js.map +1 -0
  26. package/dist/features/agent/settings-prune.d.ts +29 -0
  27. package/dist/features/agent/settings-prune.d.ts.map +1 -0
  28. package/dist/features/agent/settings-prune.js +70 -0
  29. package/dist/features/agent/settings-prune.js.map +1 -0
  30. package/dist/features/agent/tests/settings-prune.test.d.ts +2 -0
  31. package/dist/features/agent/tests/settings-prune.test.d.ts.map +1 -0
  32. package/dist/features/agent/tests/settings-prune.test.js +118 -0
  33. package/dist/features/agent/tests/settings-prune.test.js.map +1 -0
  34. package/dist/features/scaffold/commands/new-domain.d.ts +22 -0
  35. package/dist/features/scaffold/commands/new-domain.d.ts.map +1 -1
  36. package/dist/features/scaffold/commands/new-domain.js +44 -28
  37. package/dist/features/scaffold/commands/new-domain.js.map +1 -1
  38. package/dist/version.d.ts +4 -0
  39. package/dist/version.d.ts.map +1 -0
  40. package/dist/version.js +15 -0
  41. package/dist/version.js.map +1 -0
  42. package/package.json +3 -3
  43. package/tools/dkk/claude/hooks/post-edit-validate.mjs +25 -8
  44. package/tools/dkk/claude/hooks/session-start-prime.mjs +3 -16
  45. package/tools/dkk/claude/hooks/stop-validate.mjs +25 -6
@@ -0,0 +1,316 @@
1
+ import { existsSync, readFileSync, rmSync, writeFileSync } from "node:fs";
2
+ import { spawnSync, execFileSync } from "node:child_process";
3
+ import { createInterface } from "node:readline";
4
+ import { join } from "node:path";
5
+ import { repoRoot, packageClaudeDir } from "../../../shared/paths.js";
6
+ import { formatCliError } from "../../../shared/errors.js";
7
+ import { pkgVersion, pkgName } from "../../../version.js";
8
+ import { installClaudeConfig, installSkills, mergeClaudeSettings, refreshAgentsMd, } from "./init.js";
9
+ import { computeArtifactDiff, dkkHookBasenames, dkkPermissionAllowEntries, scanInstalledArtifacts, } from "../dkk-artifacts.js";
10
+ import { detectInstallMode, fetchLatestVersion } from "../install-mode.js";
11
+ import { pruneDkkEntries } from "../settings-prune.js";
12
+ import { ensureMcpRegistered } from "../mcp-register.js";
13
+ /** Register the `update` subcommand. */
14
+ export function registerUpdate(program) {
15
+ program
16
+ .command("update")
17
+ .description("Upgrade dkk and refresh DKK-managed artifacts (.claude/, .github/skills/, AGENTS.md, MCP) in this project")
18
+ .option("-y, --yes", "Skip interactive confirmation for the artifact diff")
19
+ .option("--check", "Dry-run: print the diff + plan but make no changes")
20
+ .option("--skip-npm", "Don't run npm upgrade (use the already-installed version)")
21
+ .option("--skip-artifacts", "Don't sweep/reinstall .claude/ and .github/skills/ files")
22
+ .option("--skip-mcp", "Don't auto-register the DKK MCP server")
23
+ .option("-r, --root <path>", "Override repository root")
24
+ .option("--post-upgrade", "Internal: re-exec phase after self-upgrade", false)
25
+ .action(async (opts) => {
26
+ try {
27
+ await runUpdate(opts);
28
+ }
29
+ catch (err) {
30
+ console.error(`Error: ${formatCliError(err)}`);
31
+ process.exit(1);
32
+ }
33
+ });
34
+ }
35
+ async function runUpdate(opts) {
36
+ const root = repoRoot(opts.root);
37
+ // ── Phase A: Pre-flight ─────────────────────────────────────────────
38
+ // .dkk/ must exist — `update` is project-scoped and only meaningful
39
+ // for repos that have already adopted DKK.
40
+ if (!existsSync(join(root, ".dkk"))) {
41
+ console.error(`Error: \`dkk update\` requires a DKK-using project (no .dkk/ found at ${root}).`);
42
+ console.error(`Hint: run \`dkk init\` first to bootstrap one.`);
43
+ process.exit(1);
44
+ }
45
+ // Skip Phase A/B/C entirely if we're already in the re-exec'd child.
46
+ if (!opts.postUpgrade) {
47
+ const install = detectInstallMode();
48
+ if (install.mode === "npx") {
49
+ console.error("Error: `dkk update` can't upgrade an npx-launched install.");
50
+ console.error("Hint: install dkk globally (`npm i -g domain-knowledge-kit`) or as a devDependency, then re-run.");
51
+ process.exit(1);
52
+ }
53
+ const current = pkgVersion;
54
+ const latest = opts.skipNpm ? current : fetchLatestVersion();
55
+ if (opts.skipNpm) {
56
+ console.log(`dkk: ${current} (npm upgrade skipped via --skip-npm)`);
57
+ }
58
+ else if (latest === null) {
59
+ console.warn(`Warning: could not contact the npm registry; proceeding without self-upgrade.`);
60
+ }
61
+ else if (current === latest) {
62
+ console.log(`dkk: already on the latest version (${current}).`);
63
+ }
64
+ else {
65
+ console.log(`dkk: ${current} → ${latest} (running npm install…)`);
66
+ // ── Phase B: Self-upgrade ───────────────────────────────────────
67
+ const npmArgs = buildNpmInstallArgs(install);
68
+ const npmResult = spawnSync("npm", npmArgs, { stdio: "inherit" });
69
+ if (npmResult.status !== 0) {
70
+ console.error(`Error: npm install failed with exit code ${npmResult.status ?? "unknown"}.`);
71
+ console.error(`Hint: run \`npm ${npmArgs.join(" ")}\` manually to see the underlying error, then re-run \`dkk update --skip-npm\`.`);
72
+ process.exit(1);
73
+ }
74
+ // ── Phase C: Re-exec onto the new install ───────────────────────
75
+ const newDkk = resolveDkkBinary(install);
76
+ if (!newDkk) {
77
+ console.warn("Warning: could not locate the freshly-installed `dkk` binary; refreshing artifacts using the in-memory templates (may be stale).");
78
+ // Fall through to phases D–H in the current process. Best-effort.
79
+ }
80
+ else {
81
+ const childArgs = buildReExecArgs(opts);
82
+ const child = spawnSync(newDkk, ["update", "--post-upgrade", ...childArgs], {
83
+ stdio: "inherit",
84
+ });
85
+ process.exit(child.status ?? 0);
86
+ }
87
+ }
88
+ }
89
+ // ── Phase D: Artifact diff + sweep + reinstall ──────────────────────
90
+ let diffSummary = { added: 0, replaced: 0, removed: 0 };
91
+ // Track whether settings.json existed before the install path; if it
92
+ // didn't, Phase E has nothing to prune — installClaudeConfig just wrote
93
+ // a pristine copy of the template.
94
+ const settingsExistedBefore = existsSync(join(root, ".claude", "settings.json"));
95
+ if (!opts.skipArtifacts) {
96
+ const diff = computeArtifactDiff(root);
97
+ printArtifactDiff(diff);
98
+ if (opts.check) {
99
+ console.log("\n(--check) No changes made. Re-run without --check to apply.");
100
+ return;
101
+ }
102
+ const totalChanges = diff.toAdd.length + diff.toReplace.length + diff.toRemove.length;
103
+ if (totalChanges === 0) {
104
+ console.log("Artifacts: already up to date.");
105
+ }
106
+ else {
107
+ if (!opts.yes) {
108
+ const ok = await confirm(`Proceed with these changes? [y/N] `);
109
+ if (!ok) {
110
+ console.log("Aborted. No changes made.");
111
+ return;
112
+ }
113
+ }
114
+ sweepRemovedArtifacts(root);
115
+ installClaudeConfig(root, /*force*/ true, { skipSettings: true });
116
+ installSkills(root, /*force*/ true);
117
+ diffSummary = { added: diff.toAdd.length, replaced: diff.toReplace.length, removed: diff.toRemove.length };
118
+ }
119
+ }
120
+ // ── Phase E: settings.json prune + remerge ──────────────────────────
121
+ const settingsResult = pruneAndRemergeSettings(root, opts, settingsExistedBefore);
122
+ // ── Phase F: MCP auto-register ──────────────────────────────────────
123
+ let mcpOutcome = { status: "skipped", reason: "--skip-mcp" };
124
+ if (!opts.skipMcp && !opts.check) {
125
+ mcpOutcome = ensureMcpRegistered(root);
126
+ }
127
+ // ── Phase G: AGENTS.md refresh ──────────────────────────────────────
128
+ let agentsStatus = "skipped";
129
+ if (!opts.check) {
130
+ agentsStatus = refreshAgentsMd(root);
131
+ }
132
+ // ── Phase H: Summary report ─────────────────────────────────────────
133
+ printSummary(diffSummary, settingsResult, mcpOutcome, agentsStatus);
134
+ }
135
+ // ── Phase A helpers ───────────────────────────────────────────────────
136
+ function buildNpmInstallArgs(install) {
137
+ if (install.mode === "global") {
138
+ return ["install", "-g", `${pkgName}@latest`];
139
+ }
140
+ // Local / unknown: install as a devDep into the current cwd. Bumps the
141
+ // host's package.json so subsequent runs pick up the new version.
142
+ return ["install", "--save-dev", `${pkgName}@latest`];
143
+ }
144
+ function resolveDkkBinary(install) {
145
+ // Try the obvious places first; fall back to `which`.
146
+ const candidates = [];
147
+ if (install.mode === "global" && install.globalNodeModules) {
148
+ candidates.push(join(install.globalNodeModules, ".bin", "dkk"));
149
+ }
150
+ candidates.push(join(process.cwd(), "node_modules", ".bin", "dkk"));
151
+ for (const c of candidates) {
152
+ if (existsSync(c))
153
+ return c;
154
+ }
155
+ try {
156
+ const out = execFileSync("which", ["dkk"], {
157
+ encoding: "utf-8",
158
+ timeout: 5_000,
159
+ stdio: ["ignore", "pipe", "ignore"],
160
+ }).trim();
161
+ return out.length > 0 ? out : null;
162
+ }
163
+ catch {
164
+ return null;
165
+ }
166
+ }
167
+ function buildReExecArgs(opts) {
168
+ const args = [];
169
+ if (opts.yes)
170
+ args.push("--yes");
171
+ if (opts.check)
172
+ args.push("--check");
173
+ if (opts.skipArtifacts)
174
+ args.push("--skip-artifacts");
175
+ if (opts.skipMcp)
176
+ args.push("--skip-mcp");
177
+ if (opts.root)
178
+ args.push("--root", opts.root);
179
+ // --skip-npm is intentionally NOT forwarded: we've just finished the
180
+ // npm-install step, so a child re-exec should still continue with
181
+ // artifact refresh (the equivalent of --skip-npm at the child level).
182
+ return args;
183
+ }
184
+ // ── Phase D helpers ───────────────────────────────────────────────────
185
+ function printArtifactDiff(diff) {
186
+ console.log("");
187
+ console.log("Artifact diff against the bundled template:");
188
+ if (diff.toAdd.length === 0 && diff.toReplace.length === 0 && diff.toRemove.length === 0) {
189
+ console.log(" (no changes)");
190
+ return;
191
+ }
192
+ for (const p of diff.toAdd)
193
+ console.log(` + add ${p}`);
194
+ for (const p of diff.toReplace)
195
+ console.log(` ~ replace ${p}`);
196
+ for (const p of diff.toRemove)
197
+ console.log(` - remove ${p}`);
198
+ }
199
+ function sweepRemovedArtifacts(root) {
200
+ // Recompute the diff at sweep-time so we delete exactly what we promised.
201
+ const diff = computeArtifactDiff(root);
202
+ for (const rel of diff.toRemove) {
203
+ const abs = join(root, rel);
204
+ try {
205
+ rmSync(abs, { recursive: true, force: true });
206
+ console.log(`Removed ${rel}`);
207
+ }
208
+ catch (err) {
209
+ const msg = err instanceof Error ? err.message : String(err);
210
+ console.warn(`Warning: could not remove ${rel}: ${msg}`);
211
+ }
212
+ }
213
+ // Belt-and-suspenders: also sweep any installed dkk-* directory that
214
+ // isn't in the new template's shipped list (handles the rare case where
215
+ // `computeArtifactDiff` couldn't recompute the same way — e.g. if a
216
+ // file was deleted between the two scans). No-op in the normal case.
217
+ for (const p of scanInstalledArtifacts(root).legacy) {
218
+ if (existsSync(p)) {
219
+ try {
220
+ rmSync(p, { recursive: true, force: true });
221
+ }
222
+ catch { /* ignore */ }
223
+ }
224
+ }
225
+ }
226
+ function pruneAndRemergeSettings(root, opts, existedBefore) {
227
+ if (opts.check || opts.skipArtifacts) {
228
+ return { status: "skipped", pruned: 0, added: 0, mixedWarnings: [] };
229
+ }
230
+ const templatePath = join(packageClaudeDir(), "settings.json");
231
+ if (!existsSync(templatePath)) {
232
+ return { status: "skipped", pruned: 0, added: 0, mixedWarnings: [] };
233
+ }
234
+ const settingsPath = join(root, ".claude", "settings.json");
235
+ // No existing file → just write the template verbatim. Phase D skipped
236
+ // settings.json so it's our responsibility to create it.
237
+ if (!existedBefore) {
238
+ const raw = readFileSync(templatePath, "utf-8");
239
+ writeFileSync(settingsPath, raw, "utf-8");
240
+ console.log(`Created .claude/settings.json`);
241
+ return { status: "no-file", pruned: 0, added: 0, mixedWarnings: [] };
242
+ }
243
+ let existing;
244
+ let template;
245
+ try {
246
+ existing = JSON.parse(readFileSync(settingsPath, "utf-8"));
247
+ template = JSON.parse(readFileSync(templatePath, "utf-8"));
248
+ }
249
+ catch (err) {
250
+ const msg = err instanceof Error ? err.message : String(err);
251
+ console.warn(`Warning: could not parse settings.json (${msg}); leaving it untouched.`);
252
+ return { status: "malformed", pruned: 0, added: 0, mixedWarnings: [] };
253
+ }
254
+ const dkkAllow = new Set(dkkPermissionAllowEntries());
255
+ const dkkHooks = new Set(dkkHookBasenames());
256
+ const { pruned, removed, mixedHookWarnings } = pruneDkkEntries(existing, dkkAllow, dkkHooks);
257
+ const { merged, changes } = mergeClaudeSettings(pruned, template);
258
+ writeFileSync(settingsPath, JSON.stringify(merged, null, 2) + "\n", "utf-8");
259
+ for (const w of mixedHookWarnings)
260
+ console.warn(`Warning: ${w}`);
261
+ return {
262
+ status: removed.length > 0 ? "pruned-and-merged" : "merge-only",
263
+ pruned: removed.length,
264
+ added: changes.length,
265
+ mixedWarnings: mixedHookWarnings,
266
+ };
267
+ }
268
+ // ── Phase H helpers ───────────────────────────────────────────────────
269
+ function printSummary(diff, settings, mcp, agents) {
270
+ console.log("");
271
+ console.log("── Summary ────────────────────────────────────────────────────────");
272
+ console.log(`dkk ${pkgVersion}`);
273
+ console.log(`Artifacts +${diff.added} added, ~${diff.replaced} replaced, -${diff.removed} removed`);
274
+ console.log(`settings.json ${formatSettingsResult(settings)}`);
275
+ console.log(`MCP server ${formatMcpResult(mcp)}`);
276
+ console.log(`AGENTS.md ${agents}`);
277
+ console.log("");
278
+ console.log("Next: run `dkk render` to validate the domain model.");
279
+ }
280
+ function formatSettingsResult(s) {
281
+ if (s.status === "no-file")
282
+ return "(none — created by artifact install)";
283
+ if (s.status === "skipped")
284
+ return "skipped";
285
+ if (s.status === "malformed")
286
+ return "left untouched (could not parse)";
287
+ return `pruned ${s.pruned}, added ${s.added}`;
288
+ }
289
+ function formatMcpResult(m) {
290
+ switch (m.status) {
291
+ case "already-registered":
292
+ return `already registered (${m.via === "project" ? ".mcp.json" : "claude CLI"})`;
293
+ case "registered":
294
+ return `registered via ${m.via === "claude-cli" ? "`claude mcp add`" : ".mcp.json"}`;
295
+ case "skipped":
296
+ return `skipped (${m.reason})`;
297
+ case "failed":
298
+ return `failed: ${m.reason} (run \`claude mcp add dkk -- dkk mcp\` manually)`;
299
+ }
300
+ }
301
+ // ── Confirmation prompt ──────────────────────────────────────────────
302
+ /** Interactive Y/N prompt. Non-TTY stdin defaults to "no" (safer for CI). */
303
+ function confirm(prompt) {
304
+ if (!process.stdin.isTTY) {
305
+ console.log(`${prompt}n (no TTY — defaulting to abort; pass --yes to skip this prompt)`);
306
+ return Promise.resolve(false);
307
+ }
308
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
309
+ return new Promise((resolve) => {
310
+ rl.question(prompt, (answer) => {
311
+ rl.close();
312
+ resolve(/^y(es)?$/i.test(answer.trim()));
313
+ });
314
+ });
315
+ }
316
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/features/agent/commands/update.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,eAAe,GAEhB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,GAEvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAoB,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAA2B,MAAM,oBAAoB,CAAC;AAYlF,wCAAwC;AACxC,MAAM,UAAU,cAAc,CAAC,OAAY;IACzC,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2GAA2G,CAAC;SACxH,MAAM,CAAC,WAAW,EAAE,qDAAqD,CAAC;SAC1E,MAAM,CAAC,SAAS,EAAE,oDAAoD,CAAC;SACvE,MAAM,CAAC,YAAY,EAAE,2DAA2D,CAAC;SACjF,MAAM,CAAC,kBAAkB,EAAE,0DAA0D,CAAC;SACtF,MAAM,CAAC,YAAY,EAAE,wCAAwC,CAAC;SAC9D,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,EAAE,KAAK,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,IAAgB,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,UAAU,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAgB;IACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjC,uEAAuE;IACvE,oEAAoE;IACpE,2CAA2C;IAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,yEAAyE,IAAI,IAAI,CAAC,CAAC;QACjG,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qEAAqE;IACrE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,kGAAkG,CAAC,CAAC;YAClH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;QAE7D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,QAAQ,OAAO,uCAAuC,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QAChG,CAAC;aAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,uCAAuC,OAAO,IAAI,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,QAAQ,OAAO,MAAM,MAAM,yBAAyB,CAAC,CAAC;YAElE,mEAAmE;YACnE,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,4CAA4C,SAAS,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,CAAC;gBAC5F,OAAO,CAAC,KAAK,CAAC,mBAAmB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;gBACrI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,mEAAmE;YACnE,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,kIAAkI,CAAC,CAAC;gBACjJ,kEAAkE;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBACxC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC,EAAE;oBAC1E,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,IAAI,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACxD,qEAAqE;IACrE,wEAAwE;IACxE,mCAAmC;IACnC,MAAM,qBAAqB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtF,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,oCAAoC,CAAC,CAAC;gBAC/D,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;oBACzC,OAAO;gBACT,CAAC;YACH,CAAC;YACD,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC5B,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACpC,WAAW,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7G,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAElF,uEAAuE;IACvE,IAAI,UAAU,GACZ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,uEAAuE;IACvE,IAAI,YAAY,GAAmD,SAAS,CAAC;IAC7E,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,uEAAuE;IACvE,YAAY,CAAC,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;AACtE,CAAC;AAED,yEAAyE;AAEzE,SAAS,mBAAmB,CAAC,OAAoB;IAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,SAAS,CAAC,CAAC;IAChD,CAAC;IACD,uEAAuE;IACvE,kEAAkE;IAClE,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,OAAO,SAAS,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAoB;IAC5C,sDAAsD;IACtD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC3D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;YACzC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAgB;IACvC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,IAAI,CAAC,GAAG;QAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,aAAa;QAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACtD,IAAI,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,qEAAqE;IACrE,kEAAkE;IAClE,sEAAsE;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yEAAyE;AAEzE,SAAS,iBAAiB,CAAC,IAAkB;IAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACjE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,0EAA0E;IAC1E,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,6BAA6B,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,wEAAwE;IACxE,oEAAoE;IACpE,qEAAqE;IACrE,KAAK,MAAM,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACpD,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC;gBAAC,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;AACH,CAAC;AAWD,SAAS,uBAAuB,CAC9B,IAAY,EACZ,IAAgB,EAChB,aAAsB;IAEtB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,eAAe,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAE5D,uEAAuE;IACvE,yDAAyD;IACzD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAChD,aAAa,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,QAAwB,CAAC;IAC7B,IAAI,QAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAmB,CAAC;QAC7E,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAmB,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,2CAA2C,GAAG,0BAA0B,CAAC,CAAC;QACvF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IACzE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7F,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAElE,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAE7E,KAAK,MAAM,CAAC,IAAI,iBAAiB;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjE,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY;QAC/D,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,aAAa,EAAE,iBAAiB;KACjC,CAAC;AACJ,CAAC;AAED,yEAAyE;AAEzE,SAAS,YAAY,CACnB,IAA0D,EAC1D,QAAwB,EACxB,GAA+D,EAC/D,MAAsD;IAEtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,QAAQ,eAAe,IAAI,CAAC,OAAO,UAAU,CAAC,CAAC;IACxG,OAAO,CAAC,GAAG,CAAC,iBAAiB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAiB;IAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,sCAAsC,CAAC;IAC1E,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,kCAAkC,CAAC;IACxE,OAAO,UAAU,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,CAA6D;IACpF,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,oBAAoB;YACvB,OAAO,uBAAuB,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC;QACpF,KAAK,YAAY;YACf,OAAO,kBAAkB,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACvF,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC,CAAC,MAAM,mDAAmD,CAAC;IAClF,CAAC;AACH,CAAC;AAED,wEAAwE;AAExE,6EAA6E;AAC7E,SAAS,OAAO,CAAC,MAAc;IAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,oEAAoE,CAAC,CAAC;QAC3F,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QACtC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAC7B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Repo-relative paths that previous DKK versions installed but the current
3
+ * release no longer ships. `dkk update` removes any of these still present
4
+ * in a target repo. Append new entries here when a template file is
5
+ * renamed or retired.
6
+ */
7
+ export declare const LEGACY_DKK_PATHS: readonly string[];
8
+ export interface ClaudeArtifactInventory {
9
+ /** `.claude/hooks/<basename>.mjs` filenames the bundled template installs. */
10
+ hooks: string[];
11
+ /** `.claude/skills/<skill>/` directories the bundled template installs (matches the `dkk-*` prefix). */
12
+ skills: string[];
13
+ /** `.claude/agents/<agent>.md` filenames the bundled template installs. */
14
+ agents: string[];
15
+ /** `.claude/commands/<command>.md` filenames the bundled template installs. */
16
+ commands: string[];
17
+ }
18
+ /**
19
+ * Walk `tools/dkk/claude/` in the running DKK package and return the set of
20
+ * artifact basenames the template currently ships. Derived at runtime so
21
+ * future template additions don't require code changes here.
22
+ */
23
+ export declare function dkkClaudeFiles(): ClaudeArtifactInventory;
24
+ /**
25
+ * Skill directories the bundled `.github/skills/` template installs (e.g.
26
+ * `dkk-flow-implementer`). Returned as bare directory names.
27
+ */
28
+ export declare function dkkGithubSkillDirs(): string[];
29
+ /**
30
+ * `permissions.allow` entries the bundled `settings.json` template ships.
31
+ * Empty array if the template is missing or unparseable — callers should
32
+ * treat that as "DKK doesn't own any permissions" rather than erroring.
33
+ */
34
+ export declare function dkkPermissionAllowEntries(): string[];
35
+ /**
36
+ * Hook script basenames referenced by the bundled `settings.json` template
37
+ * (e.g. `session-start-prime.mjs`). Used to identify DKK-owned hook entries
38
+ * in a consumer's settings.json so they can be pruned cleanly.
39
+ */
40
+ export declare function dkkHookBasenames(): string[];
41
+ /**
42
+ * Result of scanning a target repo for every DKK-managed artifact path.
43
+ * Paths are absolute. Use {@link computeArtifactDiff} for the add / replace /
44
+ * remove triage.
45
+ */
46
+ export interface InstalledArtifactScan {
47
+ dkkPrefixedClaude: string[];
48
+ dkkHooks: string[];
49
+ githubSkillDirs: string[];
50
+ legacy: string[];
51
+ }
52
+ /**
53
+ * Walk a target repo's `.claude/` and `.github/skills/` trees and return
54
+ * the set of paths the predicates flag as DKK-managed.
55
+ */
56
+ export declare function scanInstalledArtifacts(root: string): InstalledArtifactScan;
57
+ export interface ArtifactDiff {
58
+ /** Files in the new template that aren't present in the target repo. */
59
+ toAdd: string[];
60
+ /** Files present in both but with different content. */
61
+ toReplace: string[];
62
+ /** Files present locally that DKK no longer ships (renamed/removed templates + legacy paths). */
63
+ toRemove: string[];
64
+ }
65
+ /**
66
+ * Compute the add / replace / remove triage between the bundled template
67
+ * and a target repo. Paths are returned as repo-relative POSIX paths.
68
+ *
69
+ * `toAdd` and `toReplace` are derived by enumerating the bundled template's
70
+ * shipped files; `toRemove` is the set of installed DKK-managed paths that
71
+ * have no counterpart in the new template.
72
+ */
73
+ export declare function computeArtifactDiff(root: string): ArtifactDiff;
74
+ /** True if `name` (basename or first path segment) starts with `dkk-`. */
75
+ export declare function isDkkPrefixed(path: string): boolean;
76
+ //# sourceMappingURL=dkk-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dkk-artifacts.d.ts","sourceRoot":"","sources":["../../../src/features/agent/dkk-artifacts.ts"],"names":[],"mappings":"AAyBA;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAE7C,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,wGAAwG;IACxG,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,uBAAuB,CAUxD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAI7C;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAIpD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAa3C;AA8BD;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IAEpC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAE5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAE1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAkD1E;AAED,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,wDAAwD;IACxD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iGAAiG;IACjG,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAqG9D;AAcD,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD"}