@momentiq/dark-factory-cli 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/README.md +121 -40
  2. package/dist/adapters/codex-sdk.d.ts +66 -0
  3. package/dist/adapters/codex-sdk.d.ts.map +1 -1
  4. package/dist/adapters/codex-sdk.js +321 -4
  5. package/dist/adapters/codex-sdk.js.map +1 -1
  6. package/dist/adapters/critic-result-schema.d.ts +15 -10
  7. package/dist/adapters/critic-result-schema.d.ts.map +1 -1
  8. package/dist/adapters/critic-result-schema.js +10 -0
  9. package/dist/adapters/critic-result-schema.js.map +1 -1
  10. package/dist/adapters/cursor-cli.d.ts +19 -1
  11. package/dist/adapters/cursor-cli.d.ts.map +1 -1
  12. package/dist/adapters/cursor-cli.js +96 -14
  13. package/dist/adapters/cursor-cli.js.map +1 -1
  14. package/dist/adapters/index.d.ts +1 -0
  15. package/dist/adapters/index.d.ts.map +1 -1
  16. package/dist/adapters/index.js +7 -0
  17. package/dist/adapters/index.js.map +1 -1
  18. package/dist/adapters/static-schema-lint.d.ts +68 -0
  19. package/dist/adapters/static-schema-lint.d.ts.map +1 -0
  20. package/dist/adapters/static-schema-lint.js +813 -0
  21. package/dist/adapters/static-schema-lint.js.map +1 -0
  22. package/dist/branch-protection/spec-default.yaml +2 -2
  23. package/dist/cli.d.ts +17 -1
  24. package/dist/cli.d.ts.map +1 -1
  25. package/dist/cli.js +414 -113
  26. package/dist/cli.js.map +1 -1
  27. package/dist/commands/findings.d.ts +6 -0
  28. package/dist/commands/findings.d.ts.map +1 -0
  29. package/dist/commands/findings.js +196 -0
  30. package/dist/commands/findings.js.map +1 -0
  31. package/dist/commands/show.d.ts +11 -0
  32. package/dist/commands/show.d.ts.map +1 -0
  33. package/dist/commands/show.js +78 -0
  34. package/dist/commands/show.js.map +1 -0
  35. package/dist/commands/skills.d.ts +6 -0
  36. package/dist/commands/skills.d.ts.map +1 -0
  37. package/dist/commands/skills.js +248 -0
  38. package/dist/commands/skills.js.map +1 -0
  39. package/dist/commands/status.d.ts +6 -0
  40. package/dist/commands/status.d.ts.map +1 -0
  41. package/dist/commands/status.js +85 -0
  42. package/dist/commands/status.js.map +1 -0
  43. package/dist/compact/index.d.ts +2 -0
  44. package/dist/compact/index.d.ts.map +1 -0
  45. package/dist/compact/index.js +3 -0
  46. package/dist/compact/index.js.map +1 -0
  47. package/dist/compact/lockfile.d.ts +53 -0
  48. package/dist/compact/lockfile.d.ts.map +1 -0
  49. package/dist/compact/lockfile.js +626 -0
  50. package/dist/compact/lockfile.js.map +1 -0
  51. package/dist/cycle-doc-validator/validate_cycle_doc.py +39 -9
  52. package/dist/doctor.d.ts +51 -1
  53. package/dist/doctor.d.ts.map +1 -1
  54. package/dist/doctor.js +497 -1
  55. package/dist/doctor.js.map +1 -1
  56. package/dist/evidence/docker-build.d.ts +6 -0
  57. package/dist/evidence/docker-build.d.ts.map +1 -0
  58. package/dist/evidence/docker-build.js +199 -0
  59. package/dist/evidence/docker-build.js.map +1 -0
  60. package/dist/evidence/index.d.ts +1 -0
  61. package/dist/evidence/index.d.ts.map +1 -1
  62. package/dist/evidence/index.js +6 -0
  63. package/dist/evidence/index.js.map +1 -1
  64. package/dist/handoff/handoff-verb.d.ts.map +1 -1
  65. package/dist/handoff/handoff-verb.js +6 -3
  66. package/dist/handoff/handoff-verb.js.map +1 -1
  67. package/dist/handoff/ports.d.ts +8 -0
  68. package/dist/handoff/ports.d.ts.map +1 -1
  69. package/dist/handoff/real-clients.js +1 -1
  70. package/dist/handoff/real-clients.js.map +1 -1
  71. package/dist/index.d.ts +2 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +8 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/lib/show-status-core.d.ts +63 -0
  76. package/dist/lib/show-status-core.d.ts.map +1 -0
  77. package/dist/lib/show-status-core.js +156 -0
  78. package/dist/lib/show-status-core.js.map +1 -0
  79. package/dist/mcp/prompts.d.ts.map +1 -1
  80. package/dist/mcp/prompts.js +113 -78
  81. package/dist/mcp/prompts.js.map +1 -1
  82. package/dist/mcp/resources.js +1 -1
  83. package/dist/mcp/resources.js.map +1 -1
  84. package/dist/mcp/server.d.ts.map +1 -1
  85. package/dist/mcp/server.js +2 -0
  86. package/dist/mcp/server.js.map +1 -1
  87. package/dist/mcp/tools/doctor.d.ts.map +1 -1
  88. package/dist/mcp/tools/doctor.js +5 -0
  89. package/dist/mcp/tools/doctor.js.map +1 -1
  90. package/dist/mcp/tools/findings.d.ts +0 -22
  91. package/dist/mcp/tools/findings.d.ts.map +1 -1
  92. package/dist/mcp/tools/findings.js +5 -73
  93. package/dist/mcp/tools/findings.js.map +1 -1
  94. package/dist/mcp/tools/handoff.d.ts.map +1 -1
  95. package/dist/mcp/tools/handoff.js +10 -17
  96. package/dist/mcp/tools/handoff.js.map +1 -1
  97. package/dist/mcp/tools/review-bypass.d.ts.map +1 -1
  98. package/dist/mcp/tools/review-bypass.js +22 -1
  99. package/dist/mcp/tools/review-bypass.js.map +1 -1
  100. package/dist/mcp/tools/skills-install.d.ts +6 -0
  101. package/dist/mcp/tools/skills-install.d.ts.map +1 -0
  102. package/dist/mcp/tools/skills-install.js +260 -0
  103. package/dist/mcp/tools/skills-install.js.map +1 -0
  104. package/dist/mcp/tools/stats-gate.d.ts.map +1 -1
  105. package/dist/mcp/tools/stats-gate.js +63 -15
  106. package/dist/mcp/tools/stats-gate.js.map +1 -1
  107. package/dist/policy/baseline.d.ts.map +1 -1
  108. package/dist/policy/baseline.js +11 -3
  109. package/dist/policy/baseline.js.map +1 -1
  110. package/dist/policy/gate.d.ts +1 -1
  111. package/dist/policy/gate.d.ts.map +1 -1
  112. package/dist/policy/gate.js +96 -12
  113. package/dist/policy/gate.js.map +1 -1
  114. package/dist/prompt.d.ts +1 -0
  115. package/dist/prompt.d.ts.map +1 -1
  116. package/dist/prompt.js +123 -4
  117. package/dist/prompt.js.map +1 -1
  118. package/dist/report.d.ts +130 -3
  119. package/dist/report.d.ts.map +1 -1
  120. package/dist/report.js +367 -10
  121. package/dist/report.js.map +1 -1
  122. package/dist/runner.d.ts +6 -0
  123. package/dist/runner.d.ts.map +1 -1
  124. package/dist/runner.js +213 -4
  125. package/dist/runner.js.map +1 -1
  126. package/dist/self-consistency.d.ts +144 -0
  127. package/dist/self-consistency.d.ts.map +1 -0
  128. package/dist/self-consistency.js +368 -0
  129. package/dist/self-consistency.js.map +1 -0
  130. package/dist/skills/config.d.ts +176 -0
  131. package/dist/skills/config.d.ts.map +1 -0
  132. package/dist/skills/config.js +251 -0
  133. package/dist/skills/config.js.map +1 -0
  134. package/dist/skills/index.d.ts +4 -0
  135. package/dist/skills/index.d.ts.map +1 -0
  136. package/dist/skills/index.js +8 -0
  137. package/dist/skills/index.js.map +1 -0
  138. package/dist/skills/install.d.ts +62 -0
  139. package/dist/skills/install.d.ts.map +1 -0
  140. package/dist/skills/install.js +315 -0
  141. package/dist/skills/install.js.map +1 -0
  142. package/dist/skills/template.d.ts +42 -0
  143. package/dist/skills/template.d.ts.map +1 -0
  144. package/dist/skills/template.js +95 -0
  145. package/dist/skills/template.js.map +1 -0
  146. package/dist/trusted-surface/rebind.d.ts.map +1 -1
  147. package/dist/trusted-surface/rebind.js +199 -2
  148. package/dist/trusted-surface/rebind.js.map +1 -1
  149. package/package.json +36 -2
  150. package/skills/README.md +89 -0
  151. package/skills/chief-engineer-blitz/SKILL.md.tmpl +443 -0
  152. package/skills/chief-engineer-blitz/skill.json +53 -0
  153. package/skills/chief-engineer-review/SKILL.md.tmpl +184 -0
  154. package/skills/chief-engineer-review/references/review-examples.md.tmpl +130 -0
  155. package/skills/chief-engineer-review/skill.json +67 -0
  156. package/skills/chief-engineer-review/templates/code-review-prompt.md.tmpl +111 -0
  157. package/skills/chief-engineer-review/templates/escalation-prompt.md.tmpl +56 -0
  158. package/skills/chief-engineer-review/templates/plan-review-prompt.md.tmpl +74 -0
  159. package/skills/skill-schema.json +73 -0
@@ -0,0 +1,248 @@
1
+ // `df skills install/list` — CLI surface for the bundled-skill installer.
2
+ //
3
+ // DFP #192: the OSS CLI owns the source-of-truth for skills that ship as
4
+ // part of the Dark Factory adoption (chief-engineer-review,
5
+ // chief-engineer-blitz, and any future ones). This subcommand renders the
6
+ // bundled skill templates against the consumer's `darkfactory.yaml` and
7
+ // writes the result to `.claude/skills/<name>/` in the consumer repo.
8
+ //
9
+ // Sub-subcommand pattern mirrors `df flow` — top-level `df skills` fans
10
+ // out to `install` / `list` inside cmdSkills rather than registering each
11
+ // at the top of cli.ts. Keeps the namespace grouped.
12
+ //
13
+ // CLI mirror of: `df_skills_install` + `df_skills_list` MCP tools (the
14
+ // same `installSkill` / `listBundledSkills` core powers both).
15
+ import { enabledSkillNames, loadDarkFactoryConfig, } from "../skills/config.js";
16
+ import { installSkill, KNOWN_SKILLS, listBundledSkills, } from "../skills/install.js";
17
+ const TOP_HELP = [
18
+ "df skills — install consumer-shape templated skills bundled with @momentiq/dark-factory-cli.",
19
+ "",
20
+ "Usage:",
21
+ " df skills install <name> Render + install one bundled skill.",
22
+ " df skills install --all Install every skill declared `enabled: true`",
23
+ " in darkfactory.yaml.",
24
+ " df skills list List bundled skills + their summaries.",
25
+ " df skills --help, -h Show this message.",
26
+ "",
27
+ "Install flags (df skills install):",
28
+ " --force Overwrite a hand-edited rendered file",
29
+ " (skipped by default — the renderer detects",
30
+ " the absence of the GENERATED marker).",
31
+ " --target-dir <path> Override the install location",
32
+ " (default: <cwd>/.claude/skills/<name>/).",
33
+ " --json Print the install result as JSON.",
34
+ "",
35
+ "Bundled skills:",
36
+ ...KNOWN_SKILLS.map((s) => ` - ${s}`),
37
+ "",
38
+ "Consumer config: place `darkfactory.yaml` at the repo root to override the",
39
+ "rendered values (REPO_NAME, MANIFESTO_PATH, ADR_DIR, etc.). See the project",
40
+ "README for the schema.",
41
+ "",
42
+ ].join("\n");
43
+ function parseInstallArgs(rest) {
44
+ let skillName;
45
+ let all = false;
46
+ let force = false;
47
+ let json = false;
48
+ let targetDir;
49
+ for (let i = 0; i < rest.length; i++) {
50
+ const a = rest[i] ?? "";
51
+ if (a === "--all") {
52
+ all = true;
53
+ continue;
54
+ }
55
+ if (a === "--force") {
56
+ force = true;
57
+ continue;
58
+ }
59
+ if (a === "--json") {
60
+ json = true;
61
+ continue;
62
+ }
63
+ if (a === "--target-dir") {
64
+ const next = rest[i + 1];
65
+ if (next === undefined || next.startsWith("--")) {
66
+ return { error: "--target-dir requires a value." };
67
+ }
68
+ targetDir = next;
69
+ i++;
70
+ continue;
71
+ }
72
+ if (a.startsWith("--target-dir=")) {
73
+ targetDir = a.slice("--target-dir=".length);
74
+ continue;
75
+ }
76
+ if (a.startsWith("--")) {
77
+ return { error: `unknown flag: ${a}` };
78
+ }
79
+ if (skillName === undefined) {
80
+ skillName = a;
81
+ continue;
82
+ }
83
+ return { error: `unexpected positional arg: ${a}` };
84
+ }
85
+ if (!all && skillName === undefined) {
86
+ return { error: "missing skill name (or --all). Run `df skills --help`." };
87
+ }
88
+ if (all && skillName !== undefined) {
89
+ return { error: "cannot pass both <name> and --all." };
90
+ }
91
+ const out = {
92
+ all,
93
+ force,
94
+ json,
95
+ ...(skillName !== undefined ? { skillName } : {}),
96
+ ...(targetDir !== undefined ? { targetDir } : {}),
97
+ };
98
+ return out;
99
+ }
100
+ function renderInstallTextSummary(r) {
101
+ const lines = [];
102
+ lines.push(`df skills install: ${r.skillName} v${r.manifestVersion} → ${r.files.length} file(s) processed`);
103
+ lines.push(` config: ${r.configPath}${r.configIsDefault ? " (defaults — no darkfactory.yaml present)" : ""}`);
104
+ for (const f of r.files) {
105
+ if (f.action === "skipped") {
106
+ lines.push(` ! ${f.relTarget} — SKIPPED (${f.reason ?? "skipped"})`);
107
+ }
108
+ else {
109
+ lines.push(` - ${f.relTarget} — ${f.action}`);
110
+ }
111
+ }
112
+ if (r.resolvedVariables.length > 0) {
113
+ lines.push(` variables resolved:`);
114
+ for (const v of r.resolvedVariables) {
115
+ // Truncate multi-line list values to first line + ellipsis for the
116
+ // text summary — full values are visible in --json.
117
+ const oneLine = v.value.includes("\n")
118
+ ? `${v.value.split("\n")[0]} … (${v.value.split("\n").length} lines)`
119
+ : v.value;
120
+ lines.push(` {{${v.name}}} = ${oneLine}`);
121
+ }
122
+ }
123
+ return lines.join("\n");
124
+ }
125
+ async function cmdSkillsInstall(rest, io) {
126
+ if (rest.includes("--help") || rest.includes("-h")) {
127
+ io.stdout(TOP_HELP);
128
+ return 0;
129
+ }
130
+ const parsed = parseInstallArgs(rest);
131
+ if ("error" in parsed) {
132
+ io.stderr(`df skills install: ${parsed.error}\n`);
133
+ return 2;
134
+ }
135
+ const cwd = process.cwd();
136
+ let targetSkills;
137
+ if (parsed.all) {
138
+ // Reject --all + --target-dir at the CLI surface: every bundled skill
139
+ // targets SKILL.md, so a shared target-dir would have the second install
140
+ // overwrite the first. Surface a clear error so the consumer either drops
141
+ // --target-dir (gets the default per-skill .claude/skills/<name>/) or
142
+ // splits the invocations one-skill-at-a-time.
143
+ if (parsed.targetDir !== undefined) {
144
+ io.stderr(`df skills install: --all is incompatible with --target-dir (bundled skills share target filenames like SKILL.md, so a single dir would overwrite). Install each skill separately, or omit --target-dir to use the default <cwd>/.claude/skills/<name>/.\n`);
145
+ return 2;
146
+ }
147
+ const loaded = loadDarkFactoryConfig(cwd);
148
+ const enabled = enabledSkillNames(loaded.config);
149
+ if (enabled.length === 0) {
150
+ io.stderr(`df skills install: --all found no skills marked enabled: true in ${loaded.configPath} (${loaded.isDefault ? "no darkfactory.yaml present" : "present"}).\n`);
151
+ return 1;
152
+ }
153
+ const unknown = enabled.filter((name) => !KNOWN_SKILLS.includes(name));
154
+ if (unknown.length > 0) {
155
+ io.stderr(`df skills install: --all rejected — unknown skill name(s) in ${loaded.configPath}: ${unknown.join(", ")}. Known skills: ${KNOWN_SKILLS.join(", ")}.\n`);
156
+ return 2;
157
+ }
158
+ targetSkills = enabled;
159
+ }
160
+ else if (parsed.skillName !== undefined) {
161
+ targetSkills = [parsed.skillName];
162
+ }
163
+ else {
164
+ // Shouldn't be reachable — parseInstallArgs guards.
165
+ io.stderr(`df skills install: no skill named.\n`);
166
+ return 2;
167
+ }
168
+ const results = [];
169
+ let exitCode = 0;
170
+ for (const name of targetSkills) {
171
+ try {
172
+ const opts = {
173
+ cwd,
174
+ skillName: name,
175
+ force: parsed.force,
176
+ ...(parsed.targetDir !== undefined ? { targetDir: parsed.targetDir } : {}),
177
+ };
178
+ const r = installSkill(opts);
179
+ results.push(r);
180
+ // Non-fatal but worth surfacing: if any file was skipped (hand-edited
181
+ // without --force), exit code 3 so CI catches the partial install.
182
+ if (r.files.some((f) => f.action === "skipped")) {
183
+ exitCode = Math.max(exitCode, 3);
184
+ }
185
+ }
186
+ catch (err) {
187
+ io.stderr(`df skills install: ${err.message}\n`);
188
+ return 1;
189
+ }
190
+ }
191
+ if (parsed.json) {
192
+ io.stdout(`${JSON.stringify({ installed: results }, null, 2)}\n`);
193
+ }
194
+ else {
195
+ for (const r of results) {
196
+ io.stdout(`${renderInstallTextSummary(r)}\n`);
197
+ }
198
+ if (exitCode === 3) {
199
+ io.stdout(`\nNote: one or more files were skipped because they were hand-edited. Re-run with --force to overwrite.\n`);
200
+ }
201
+ }
202
+ return exitCode;
203
+ }
204
+ function cmdSkillsList(rest, io) {
205
+ if (rest.includes("--help") || rest.includes("-h")) {
206
+ io.stdout(TOP_HELP);
207
+ return 0;
208
+ }
209
+ const json = rest.includes("--json");
210
+ const items = listBundledSkills();
211
+ if (json) {
212
+ io.stdout(`${JSON.stringify({ skills: items }, null, 2)}\n`);
213
+ return 0;
214
+ }
215
+ if (items.length === 0) {
216
+ io.stdout(`df skills list: no bundled skills.\n`);
217
+ return 0;
218
+ }
219
+ io.stdout(`df skills list — ${items.length} bundled skill(s)\n`);
220
+ for (const item of items) {
221
+ io.stdout(`\n ${item.name} (v${item.version})`);
222
+ if (item.originatingRepo)
223
+ io.stdout(` origin: ${item.originatingRepo}`);
224
+ io.stdout(`\n ${item.summary}\n`);
225
+ }
226
+ return 0;
227
+ }
228
+ export async function cmdSkills(rest) {
229
+ const io = {
230
+ stdout: (s) => process.stdout.write(s),
231
+ stderr: (s) => process.stderr.write(s),
232
+ };
233
+ if (rest.length === 0 || rest[0] === "--help" || rest[0] === "-h") {
234
+ io.stdout(TOP_HELP);
235
+ return 0;
236
+ }
237
+ const sub = rest[0];
238
+ const subRest = rest.slice(1);
239
+ if (sub === "install") {
240
+ return await cmdSkillsInstall(subRest, io);
241
+ }
242
+ if (sub === "list") {
243
+ return cmdSkillsList(subRest, io);
244
+ }
245
+ io.stderr(`df skills: unknown subcommand "${sub}". Run \`df skills --help\`.\n`);
246
+ return 2;
247
+ }
248
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface StatusIo {
2
+ stdout: (s: string) => void;
3
+ stderr: (s: string) => void;
4
+ }
5
+ export declare function cmdStatus(rest: string[], io: StatusIo): Promise<number>;
6
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAyDD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB7E"}
@@ -0,0 +1,85 @@
1
+ // `df status` — terse verdict + per-critic line for a commit.
2
+ //
3
+ // Sibling of `df show`. Same shared backend (`loadForCommit`); narrower
4
+ // output:
5
+ // - `--json` returns the `df_findings` narrowed shape — `{ commit,
6
+ // critics: [{ id, status, verdict?, findings: [{ severity, file?,
7
+ // line?, rule, message }] }] }`. Byte-equivalent with the
8
+ // `df_findings.structuredContent` envelope the MCP tool returns
9
+ // (cycle 5 spec requirement; both routes call
10
+ // `mapArtifactForFindings()` on the SAME `LoadOutcome.artifact`).
11
+ // - non-JSON renders a terse text block (short commit + verdict + one
12
+ // line per critic) — distinct from `df show`'s rich block so the
13
+ // operator UX split between the two subcommands is real.
14
+ import { loadForCommit, mapArtifactForFindings, renderTerseStatusText, } from "../lib/show-status-core.js";
15
+ const HELP = [
16
+ "df status — terse verdict + per-critic status for a commit.",
17
+ "",
18
+ "Usage:",
19
+ " df status [--commit <ref>] [--json]",
20
+ "",
21
+ "Flags:",
22
+ " --commit <ref> Commit ref (default HEAD).",
23
+ " --json Print the df_findings narrowed JSON shape:",
24
+ " { commit, critics: [{ id, status, verdict?,",
25
+ " findings: [{ severity, file?, line?, rule,",
26
+ " message }] }] }. Byte-equivalent with the",
27
+ " df_findings MCP tool's structuredContent.",
28
+ " --help, -h Show this message.",
29
+ "",
30
+ "Exit codes:",
31
+ " 0 success",
32
+ " 1 no artifact found / config load failed / git rev-parse failed",
33
+ " 2 usage error",
34
+ "",
35
+ ].join("\n");
36
+ function parseStatusArgs(rest) {
37
+ let commit = "HEAD";
38
+ let json = false;
39
+ for (let i = 0; i < rest.length; i++) {
40
+ const a = rest[i] ?? "";
41
+ if (a === "--json") {
42
+ json = true;
43
+ continue;
44
+ }
45
+ if (a === "--commit") {
46
+ const next = rest[i + 1];
47
+ if (next === undefined || next.startsWith("--")) {
48
+ return { error: "--commit requires a value (e.g. --commit HEAD)." };
49
+ }
50
+ commit = next;
51
+ i++;
52
+ continue;
53
+ }
54
+ if (a.startsWith("--commit=")) {
55
+ commit = a.slice("--commit=".length);
56
+ continue;
57
+ }
58
+ return { error: `unknown flag or positional arg: ${a}` };
59
+ }
60
+ return { commit, json, cwd: process.cwd() };
61
+ }
62
+ export async function cmdStatus(rest, io) {
63
+ if (rest.includes("--help") || rest.includes("-h")) {
64
+ io.stdout(HELP);
65
+ return 0;
66
+ }
67
+ const parsed = parseStatusArgs(rest);
68
+ if ("error" in parsed) {
69
+ io.stderr(`df status: ${parsed.error}\nRun \`df status --help\` for usage.\n`);
70
+ return 2;
71
+ }
72
+ const outcome = await loadForCommit(parsed.cwd, parsed.commit);
73
+ if (!outcome.artifact) {
74
+ io.stderr(`df status: ${outcome.error ?? "no artifact"}\n`);
75
+ return 1;
76
+ }
77
+ if (parsed.json) {
78
+ const findings = mapArtifactForFindings(outcome.artifact);
79
+ io.stdout(`${JSON.stringify(findings, null, 2)}\n`);
80
+ return 0;
81
+ }
82
+ io.stdout(`${renderTerseStatusText(outcome.artifact)}\n`);
83
+ return 0;
84
+ }
85
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { identifyLockfileKind, extractFromUnifiedDiff, renderDiffStub, renderContentStub, effectiveMode, compactDiff, splitDiffByFile, DEFAULT_GENERATED_LOCKFILE_GLOBS, MAX_COMPACTED_DIFF_BYTES, MAX_COMPACTED_CONTENT_BYTES, type LockfileKind, type CompactedPackageDelta, type CompactedLockfileDelta, type CompactedContentInput, type CompactDiffOutput, } from "./lockfile.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compact/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,eAAe,EACf,gCAAgC,EAChC,wBAAwB,EACxB,2BAA2B,EAC3B,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ // ADR 0001 — bounded lockfile strategy. Barrel for the compact module.
2
+ export { identifyLockfileKind, extractFromUnifiedDiff, renderDiffStub, renderContentStub, effectiveMode, compactDiff, splitDiffByFile, DEFAULT_GENERATED_LOCKFILE_GLOBS, MAX_COMPACTED_DIFF_BYTES, MAX_COMPACTED_CONTENT_BYTES, } from "./lockfile.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compact/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,eAAe,EACf,gCAAgC,EAChC,wBAAwB,EACxB,2BAA2B,GAM5B,MAAM,eAAe,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { GeneratedFilePolicy } from "@momentiq/dark-factory-schemas";
2
+ export declare const MAX_COMPACTED_DIFF_BYTES = 250000;
3
+ export declare const MAX_COMPACTED_CONTENT_BYTES = 50000;
4
+ export declare const DEFAULT_GENERATED_LOCKFILE_GLOBS: readonly string[];
5
+ export type LockfileKind = "npm" | "pnpm" | "yarn";
6
+ export interface CompactedPackageDelta {
7
+ kind: "add" | "remove" | "upgrade";
8
+ name: string;
9
+ version?: string;
10
+ oldVersion?: string;
11
+ newVersion?: string;
12
+ integrity?: string;
13
+ oldIntegrity?: string;
14
+ }
15
+ export interface CompactedLockfileDelta {
16
+ path: string;
17
+ lockfileKind: LockfileKind;
18
+ addedLines: number;
19
+ removedLines: number;
20
+ patchSha256: string;
21
+ packages: CompactedPackageDelta[];
22
+ parseError?: string;
23
+ notes?: string[];
24
+ }
25
+ export interface CompactedContentInput {
26
+ path: string;
27
+ lockfileKind: LockfileKind;
28
+ bytesBefore: number;
29
+ contentSha256: string;
30
+ packagesAfter: {
31
+ name: string;
32
+ version: string;
33
+ integrity?: string;
34
+ }[];
35
+ }
36
+ export interface CompactDiffOutput {
37
+ compactedDiff: string;
38
+ matchedFiles: Map<string, LockfileKind>;
39
+ parseErrorPaths: string[];
40
+ }
41
+ export declare function identifyLockfileKind(path: string): LockfileKind | undefined;
42
+ export declare function effectiveMode(path: string, policy: GeneratedFilePolicy): "full" | "compact" | "omit";
43
+ export declare function extractFromUnifiedDiff(perFileDiff: string, path: string): CompactedLockfileDelta;
44
+ export declare function renderDiffStub(delta: CompactedLockfileDelta): string;
45
+ export declare function renderContentStub(input: CompactedContentInput): string;
46
+ export declare function compactDiff(fullDiff: string, policy: GeneratedFilePolicy): CompactDiffOutput;
47
+ interface DiffSection {
48
+ path: string | null;
49
+ text: string;
50
+ }
51
+ export declare function splitDiffByFile(diff: string): DiffSection[];
52
+ export {};
53
+ //# sourceMappingURL=lockfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/compact/lockfile.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAe1E,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAChD,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAOlD,eAAO,MAAM,gCAAgC,EAAE,SAAS,MAAM,EAK7D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxE;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAM3E;AAKD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,mBAAmB,GAC1B,MAAM,GAAG,SAAS,GAAG,MAAM,CAO7B;AAMD,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,sBAAsB,CAoDxB;AAkTD,wBAAgB,cAAc,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CA8BpE;AAgCD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAqCtE;AASD,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,GAC1B,iBAAiB,CAsEnB;AAWD,UAAU,WAAW;IAEnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAKD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAyB3D"}