@momentiq/dark-factory-cli 1.1.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 (104) hide show
  1. package/README.md +86 -2
  2. package/dist/adapters/critic-result-schema.d.ts +14 -14
  3. package/dist/adapters/index.d.ts +1 -0
  4. package/dist/adapters/index.d.ts.map +1 -1
  5. package/dist/adapters/index.js +7 -0
  6. package/dist/adapters/index.js.map +1 -1
  7. package/dist/adapters/static-schema-lint.d.ts +68 -0
  8. package/dist/adapters/static-schema-lint.d.ts.map +1 -0
  9. package/dist/adapters/static-schema-lint.js +813 -0
  10. package/dist/adapters/static-schema-lint.js.map +1 -0
  11. package/dist/cli.d.ts +17 -1
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +296 -41
  14. package/dist/cli.js.map +1 -1
  15. package/dist/commands/findings.d.ts +6 -0
  16. package/dist/commands/findings.d.ts.map +1 -0
  17. package/dist/commands/findings.js +196 -0
  18. package/dist/commands/findings.js.map +1 -0
  19. package/dist/commands/skills.d.ts +6 -0
  20. package/dist/commands/skills.d.ts.map +1 -0
  21. package/dist/commands/skills.js +248 -0
  22. package/dist/commands/skills.js.map +1 -0
  23. package/dist/doctor.d.ts +17 -0
  24. package/dist/doctor.d.ts.map +1 -1
  25. package/dist/doctor.js +107 -0
  26. package/dist/doctor.js.map +1 -1
  27. package/dist/evidence/docker-build.d.ts +6 -0
  28. package/dist/evidence/docker-build.d.ts.map +1 -0
  29. package/dist/evidence/docker-build.js +199 -0
  30. package/dist/evidence/docker-build.js.map +1 -0
  31. package/dist/evidence/index.d.ts +1 -0
  32. package/dist/evidence/index.d.ts.map +1 -1
  33. package/dist/evidence/index.js +6 -0
  34. package/dist/evidence/index.js.map +1 -1
  35. package/dist/index.d.ts +1 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +4 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/mcp/server.d.ts.map +1 -1
  40. package/dist/mcp/server.js +2 -0
  41. package/dist/mcp/server.js.map +1 -1
  42. package/dist/mcp/tools/doctor.d.ts.map +1 -1
  43. package/dist/mcp/tools/doctor.js +5 -0
  44. package/dist/mcp/tools/doctor.js.map +1 -1
  45. package/dist/mcp/tools/review-bypass.d.ts.map +1 -1
  46. package/dist/mcp/tools/review-bypass.js +21 -0
  47. package/dist/mcp/tools/review-bypass.js.map +1 -1
  48. package/dist/mcp/tools/skills-install.d.ts +6 -0
  49. package/dist/mcp/tools/skills-install.d.ts.map +1 -0
  50. package/dist/mcp/tools/skills-install.js +260 -0
  51. package/dist/mcp/tools/skills-install.js.map +1 -0
  52. package/dist/mcp/tools/stats-gate.d.ts.map +1 -1
  53. package/dist/mcp/tools/stats-gate.js +63 -15
  54. package/dist/mcp/tools/stats-gate.js.map +1 -1
  55. package/dist/policy/gate.d.ts +1 -1
  56. package/dist/policy/gate.d.ts.map +1 -1
  57. package/dist/policy/gate.js +96 -12
  58. package/dist/policy/gate.js.map +1 -1
  59. package/dist/prompt.d.ts +1 -0
  60. package/dist/prompt.d.ts.map +1 -1
  61. package/dist/prompt.js +105 -1
  62. package/dist/prompt.js.map +1 -1
  63. package/dist/report.d.ts +106 -3
  64. package/dist/report.d.ts.map +1 -1
  65. package/dist/report.js +282 -10
  66. package/dist/report.js.map +1 -1
  67. package/dist/runner.d.ts +2 -0
  68. package/dist/runner.d.ts.map +1 -1
  69. package/dist/runner.js +86 -2
  70. package/dist/runner.js.map +1 -1
  71. package/dist/self-consistency.d.ts +144 -0
  72. package/dist/self-consistency.d.ts.map +1 -0
  73. package/dist/self-consistency.js +368 -0
  74. package/dist/self-consistency.js.map +1 -0
  75. package/dist/skills/config.d.ts +176 -0
  76. package/dist/skills/config.d.ts.map +1 -0
  77. package/dist/skills/config.js +251 -0
  78. package/dist/skills/config.js.map +1 -0
  79. package/dist/skills/index.d.ts +4 -0
  80. package/dist/skills/index.d.ts.map +1 -0
  81. package/dist/skills/index.js +8 -0
  82. package/dist/skills/index.js.map +1 -0
  83. package/dist/skills/install.d.ts +62 -0
  84. package/dist/skills/install.d.ts.map +1 -0
  85. package/dist/skills/install.js +315 -0
  86. package/dist/skills/install.js.map +1 -0
  87. package/dist/skills/template.d.ts +42 -0
  88. package/dist/skills/template.d.ts.map +1 -0
  89. package/dist/skills/template.js +95 -0
  90. package/dist/skills/template.js.map +1 -0
  91. package/dist/trusted-surface/rebind.d.ts.map +1 -1
  92. package/dist/trusted-surface/rebind.js +14 -1
  93. package/dist/trusted-surface/rebind.js.map +1 -1
  94. package/package.json +32 -2
  95. package/skills/README.md +89 -0
  96. package/skills/chief-engineer-blitz/SKILL.md.tmpl +443 -0
  97. package/skills/chief-engineer-blitz/skill.json +53 -0
  98. package/skills/chief-engineer-review/SKILL.md.tmpl +184 -0
  99. package/skills/chief-engineer-review/references/review-examples.md.tmpl +130 -0
  100. package/skills/chief-engineer-review/skill.json +67 -0
  101. package/skills/chief-engineer-review/templates/code-review-prompt.md.tmpl +111 -0
  102. package/skills/chief-engineer-review/templates/escalation-prompt.md.tmpl +56 -0
  103. package/skills/chief-engineer-review/templates/plan-review-prompt.md.tmpl +74 -0
  104. package/skills/skill-schema.json +73 -0
@@ -0,0 +1,315 @@
1
+ // `df skills install <name>` — install a bundled skill into the consumer's
2
+ // `.claude/skills/<name>/`, rendering all template files against the
3
+ // consumer's `darkfactory.yaml`.
4
+ //
5
+ // Idempotency contract:
6
+ // - Re-running `df skills install <name>` overwrites the rendered files
7
+ // (no merge — the rendered file is a generated artifact).
8
+ // - If the rendered file would change AND it has been hand-edited since
9
+ // the last install (detected via a top-of-file GENERATED header marker),
10
+ // install refuses to overwrite without `--force`.
11
+ // - The generated header carries a hash of the manifest version + the
12
+ // resolved variable set, so a no-op re-run is detectable.
13
+ //
14
+ // Discovery:
15
+ // - The bundled skill source-of-truth lives at `packages/cli/skills/<name>/`
16
+ // in this repo; published, it lives at the equivalent location inside the
17
+ // installed npm package.
18
+ // - `resolveSkillSourceDir()` finds the dir relative to this module's
19
+ // compiled location (works for both src/ in dev and dist/ in production).
20
+ import { createHash, } from "node:crypto";
21
+ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, } from "node:fs";
22
+ import { dirname, join, resolve } from "node:path";
23
+ import { fileURLToPath } from "node:url";
24
+ import { loadDarkFactoryConfig, resolveSkillOverrides, } from "./config.js";
25
+ import { extractReferencedVariables, renderTemplateBody, } from "./template.js";
26
+ /**
27
+ * Names of the skills bundled with this CLI. Adding a new skill = (1) drop
28
+ * the source-of-truth dir under `skills/`, (2) append the name here.
29
+ */
30
+ export const KNOWN_SKILLS = [
31
+ "chief-engineer-review",
32
+ "chief-engineer-blitz",
33
+ ];
34
+ /**
35
+ * The HTML-comment marker emitted at the top of every rendered file
36
+ * (after frontmatter for SKILL.md, at the very top for other files). Used
37
+ * to detect hand-edits at re-install time so we can refuse to overwrite
38
+ * unless `--force` is passed.
39
+ */
40
+ const GENERATED_MARKER = "GENERATED by `df skills install";
41
+ /**
42
+ * Resolve the absolute path of the bundled-skills source-of-truth root.
43
+ * In dev (running from src/), the path is `<package>/skills/`. In a
44
+ * published install (running from dist/), the path is the same — the
45
+ * `files` array in package.json carries the `skills/` dir verbatim and
46
+ * `dist/skills/index.js`'s ../../skills resolution lands on it.
47
+ */
48
+ export function resolveSkillsRoot() {
49
+ const here = dirname(fileURLToPath(import.meta.url));
50
+ // src/skills/install.ts → ../../skills (two up: skills → src → package root)
51
+ // dist/skills/install.js → ../../skills (same depth)
52
+ return resolve(here, "..", "..", "skills");
53
+ }
54
+ function readManifest(skillName, sourceRoot) {
55
+ const manifestPath = join(sourceRoot, skillName, "skill.json");
56
+ if (!existsSync(manifestPath)) {
57
+ throw new Error(`df skills install: unknown skill "${skillName}" — no manifest at ${manifestPath}. Known skills: ${KNOWN_SKILLS.join(", ")}.`);
58
+ }
59
+ const raw = readFileSync(manifestPath, "utf8");
60
+ let parsed;
61
+ try {
62
+ parsed = JSON.parse(raw);
63
+ }
64
+ catch (err) {
65
+ throw new Error(`df skills install: skill.json for "${skillName}" is not valid JSON — ${err.message}`);
66
+ }
67
+ // Light structural check — full schema is in skills/skill-schema.json.
68
+ // We rely on the renderer's per-variable check (catches typos) and the
69
+ // file-write loop (catches missing files); a heavyweight zod parse is
70
+ // overkill for a directory we author + ship ourselves.
71
+ const m = parsed;
72
+ if (typeof m.name !== "string" || typeof m.version !== "string") {
73
+ throw new Error(`df skills install: skill.json for "${skillName}" missing required fields (name, version).`);
74
+ }
75
+ if (m.name !== skillName) {
76
+ throw new Error(`df skills install: skill.json#name "${String(m.name)}" does not match directory name "${skillName}".`);
77
+ }
78
+ if (!Array.isArray(m.files) || m.files.length === 0) {
79
+ throw new Error(`df skills install: skill.json#files for "${skillName}" must be a non-empty array.`);
80
+ }
81
+ if (typeof m.variables !== "object" || m.variables === null) {
82
+ throw new Error(`df skills install: skill.json#variables for "${skillName}" must be an object.`);
83
+ }
84
+ return parsed;
85
+ }
86
+ /**
87
+ * List every bundled skill (one-entry per dir under the source root that
88
+ * has a valid skill.json). Used by `df skills list` + `df_skills_list`.
89
+ */
90
+ export function listBundledSkills(sourceRoot) {
91
+ const root = sourceRoot ?? resolveSkillsRoot();
92
+ if (!existsSync(root))
93
+ return [];
94
+ const out = [];
95
+ for (const entry of readdirSync(root, { withFileTypes: true })) {
96
+ if (!entry.isDirectory())
97
+ continue;
98
+ const name = entry.name;
99
+ const manifestPath = join(root, name, "skill.json");
100
+ if (!existsSync(manifestPath))
101
+ continue;
102
+ try {
103
+ const m = JSON.parse(readFileSync(manifestPath, "utf8"));
104
+ const item = {
105
+ name: m.name,
106
+ version: m.version,
107
+ summary: m.summary,
108
+ ...(m.originatingRepo !== undefined
109
+ ? { originatingRepo: m.originatingRepo }
110
+ : {}),
111
+ };
112
+ out.push(item);
113
+ }
114
+ catch {
115
+ // Skip malformed manifests so a single bad dir doesn't break the list.
116
+ }
117
+ }
118
+ // Stable order — alphabetical by name, regardless of FS readdir order.
119
+ out.sort((a, b) => a.name.localeCompare(b.name));
120
+ return out;
121
+ }
122
+ /**
123
+ * Read an existing rendered file, if it exists, and return the marker line
124
+ * embedded by a previous install (if any) so we can detect hand-edits.
125
+ */
126
+ function detectExistingMarker(absPath) {
127
+ if (!existsSync(absPath))
128
+ return { present: false, hash: null };
129
+ const body = readFileSync(absPath, "utf8");
130
+ // Marker shape: `# install-hash: <64-hex>` on a line by itself, after the
131
+ // GENERATED prefix line. We match the hash specifically; if the hash isn't
132
+ // present (or doesn't match the freshly-computed one), we treat the file
133
+ // as hand-edited.
134
+ const match = body.match(/install-hash:\s*([0-9a-f]{64})/);
135
+ if (match)
136
+ return { present: true, hash: match[1] ?? null };
137
+ // Marker comment present but no hash → also treat as old format / hand-edited.
138
+ if (body.includes(GENERATED_MARKER))
139
+ return { present: true, hash: null };
140
+ return { present: false, hash: null };
141
+ }
142
+ /**
143
+ * Compute a stable hash of (manifest.version + resolved-variables) so a
144
+ * re-render with identical inputs produces an identical hash. Embedded in
145
+ * the GENERATED header so subsequent installs can skip a no-op rewrite.
146
+ */
147
+ function computeInstallHash(manifest, resolved) {
148
+ const h = createHash("sha256");
149
+ h.update(manifest.name);
150
+ h.update("\n");
151
+ h.update(manifest.version);
152
+ h.update("\n");
153
+ // Sort for determinism — renderTemplateBody returns in template-encounter
154
+ // order but the hash should not depend on which template referenced the
155
+ // variable first.
156
+ const sorted = [...resolved].sort((a, b) => a.name.localeCompare(b.name));
157
+ for (const entry of sorted) {
158
+ h.update(entry.name);
159
+ h.update("=");
160
+ h.update(entry.value);
161
+ h.update("\n");
162
+ }
163
+ return h.digest("hex");
164
+ }
165
+ /**
166
+ * Inject the GENERATED marker (with install-hash) into a rendered body.
167
+ * For .md files with YAML frontmatter, the marker goes immediately after
168
+ * the closing `---`. For other files, it goes at the top.
169
+ */
170
+ function injectInstallMarker(body, skillName, installHash) {
171
+ const marker = [
172
+ `<!--`,
173
+ ` ${GENERATED_MARKER} ${skillName}\`. Do not hand-edit.`,
174
+ ` install-hash: ${installHash}`,
175
+ ` Re-render with: df skills install ${skillName}`,
176
+ ` Or edit darkfactory.yaml + the upstream template, then re-install.`,
177
+ `-->`,
178
+ ``,
179
+ ].join("\n");
180
+ // Detect YAML frontmatter (--- ... ---) at file start.
181
+ if (body.startsWith("---\n")) {
182
+ const closing = body.indexOf("\n---", 4);
183
+ if (closing !== -1) {
184
+ const afterFm = closing + "\n---".length;
185
+ const head = body.slice(0, afterFm);
186
+ const tail = body.slice(afterFm);
187
+ // Ensure exactly one blank line between frontmatter and marker.
188
+ const tailTrim = tail.replace(/^\n+/, "");
189
+ return `${head}\n\n${marker}${tailTrim}`;
190
+ }
191
+ }
192
+ return `${marker}${body}`;
193
+ }
194
+ /**
195
+ * Strip a previously-injected marker block from a body so we can compare
196
+ * the freshly-rendered body to the on-disk body modulo the marker (which
197
+ * carries a hash that changes per-install).
198
+ */
199
+ function stripInstallMarker(body) {
200
+ // The marker block is a `<!-- … -->` whose first content line starts with
201
+ // the GENERATED prefix. Conservative match — only the first such block.
202
+ const re = /<!--\s*\n\s+GENERATED by `df skills install [^]*?-->\n?/;
203
+ return body.replace(re, "");
204
+ }
205
+ /**
206
+ * Install one skill into the consumer's `.claude/skills/<name>/`.
207
+ */
208
+ export function installSkill(options) {
209
+ const sourceRoot = options._sourceRoot ?? resolveSkillsRoot();
210
+ const skillSourceDir = join(sourceRoot, options.skillName);
211
+ if (!existsSync(skillSourceDir) || !statSync(skillSourceDir).isDirectory()) {
212
+ throw new Error(`df skills install: unknown skill "${options.skillName}". Known skills: ${KNOWN_SKILLS.join(", ")}.`);
213
+ }
214
+ const manifest = readManifest(options.skillName, sourceRoot);
215
+ // Load consumer config + resolve overrides.
216
+ const loaded = loadDarkFactoryConfig(options.cwd);
217
+ const config = loaded.config;
218
+ const overrides = resolveSkillOverrides({ config, repoRoot: options.cwd });
219
+ const targetDir = options.targetDir ??
220
+ resolve(options.cwd, ".claude", "skills", options.skillName);
221
+ // First pass: render all files in-memory to compute the install hash
222
+ // from the full resolved-variable set across templates (so the hash
223
+ // changes when ANY variable resolves differently, not just one).
224
+ const renderedNoMarker = [];
225
+ const allVars = new Map();
226
+ for (const fileSpec of manifest.files) {
227
+ const templatePath = join(skillSourceDir, fileSpec.template);
228
+ if (!existsSync(templatePath)) {
229
+ throw new Error(`df skills install: template file missing at ${templatePath} (skill: ${manifest.name}).`);
230
+ }
231
+ const raw = readFileSync(templatePath, "utf8");
232
+ // Lint: every variable referenced must be declared.
233
+ for (const varName of extractReferencedVariables(raw)) {
234
+ if (!(varName in manifest.variables)) {
235
+ throw new Error(`df skills install: template ${fileSpec.template} references undeclared variable "{{${varName}}}" — add to skill.json#variables for skill "${manifest.name}".`);
236
+ }
237
+ }
238
+ const rendered = renderTemplateBody(raw, { manifest, overrides });
239
+ for (const entry of rendered.substituted) {
240
+ allVars.set(entry.name, entry.value);
241
+ }
242
+ renderedNoMarker.push({
243
+ target: fileSpec.target,
244
+ body: rendered.body,
245
+ substituted: rendered.substituted,
246
+ });
247
+ }
248
+ const resolvedVariables = Array.from(allVars, ([name, value]) => ({ name, value }));
249
+ const installHash = computeInstallHash(manifest, resolvedVariables);
250
+ // Second pass: inject marker + write to disk.
251
+ const files = [];
252
+ for (const r of renderedNoMarker) {
253
+ const absTarget = resolve(targetDir, r.target);
254
+ const finalBody = injectInstallMarker(r.body, manifest.name, installHash);
255
+ const existing = detectExistingMarker(absTarget);
256
+ const exists = existsSync(absTarget);
257
+ if (exists && existing.present === false) {
258
+ // File exists but has no marker → hand-edited or pre-template version.
259
+ if (!options.force) {
260
+ files.push({
261
+ relTarget: r.target,
262
+ absoluteTarget: absTarget,
263
+ action: "skipped",
264
+ reason: "file exists without GENERATED marker (hand-edited or pre-template). Re-run with --force to overwrite.",
265
+ });
266
+ continue;
267
+ }
268
+ }
269
+ if (exists && existing.present && existing.hash === installHash) {
270
+ // Hash matches → same manifest version + same resolved vars. Compare
271
+ // the body (modulo the marker) to detect a hand-edit the hash cannot
272
+ // catch: a user can edit the prose without touching the marker, and
273
+ // both `manifest.version` + the resolved-variable set stay identical,
274
+ // so the recomputed `installHash` still matches. Without this guard
275
+ // the next install silently treats the modified body as "unchanged"
276
+ // and the consumer drifts from the source-of-truth template.
277
+ const currentBody = readFileSync(absTarget, "utf8");
278
+ const currentWithoutMarker = stripInstallMarker(currentBody).trim();
279
+ const newWithoutMarker = stripInstallMarker(finalBody).trim();
280
+ if (currentWithoutMarker === newWithoutMarker) {
281
+ files.push({
282
+ relTarget: r.target,
283
+ absoluteTarget: absTarget,
284
+ action: "unchanged",
285
+ });
286
+ continue;
287
+ }
288
+ if (!options.force) {
289
+ files.push({
290
+ relTarget: r.target,
291
+ absoluteTarget: absTarget,
292
+ action: "skipped",
293
+ reason: "rendered file body has been hand-edited (install-hash matches but content differs from the upstream template). Re-run with --force to overwrite.",
294
+ });
295
+ continue;
296
+ }
297
+ }
298
+ mkdirSync(dirname(absTarget), { recursive: true });
299
+ writeFileSync(absTarget, finalBody, "utf8");
300
+ files.push({
301
+ relTarget: r.target,
302
+ absoluteTarget: absTarget,
303
+ action: exists ? "updated" : "created",
304
+ });
305
+ }
306
+ return {
307
+ skillName: manifest.name,
308
+ manifestVersion: manifest.version,
309
+ configPath: loaded.configPath,
310
+ configIsDefault: loaded.isDefault,
311
+ resolvedVariables,
312
+ files,
313
+ };
314
+ }
315
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/skills/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export interface SkillVariableDef {
2
+ readonly description: string;
3
+ readonly source?: string;
4
+ readonly default: string;
5
+ readonly kind?: "scalar" | "list";
6
+ }
7
+ export interface SkillManifest {
8
+ readonly name: string;
9
+ readonly version: string;
10
+ readonly summary: string;
11
+ readonly originatingRepo?: string;
12
+ readonly files: ReadonlyArray<{
13
+ readonly template: string;
14
+ readonly target: string;
15
+ }>;
16
+ readonly variables: Readonly<Record<string, SkillVariableDef>>;
17
+ }
18
+ export type VariableOverride = string | ReadonlyArray<string>;
19
+ export interface RenderTemplateOptions {
20
+ readonly manifest: SkillManifest;
21
+ readonly overrides: Readonly<Record<string, VariableOverride>>;
22
+ }
23
+ export interface RenderResult {
24
+ readonly body: string;
25
+ readonly substituted: ReadonlyArray<{
26
+ readonly name: string;
27
+ readonly value: string;
28
+ }>;
29
+ }
30
+ /**
31
+ * Render `body` by substituting every `{{VAR}}` reference using the skill's
32
+ * manifest + the consumer's overrides. Throws on any reference whose
33
+ * identifier is not declared in `manifest.variables`.
34
+ */
35
+ export declare function renderTemplateBody(body: string, options: RenderTemplateOptions): RenderResult;
36
+ /**
37
+ * Side-channel: list every `{{VAR}}` reference present in the body, in order
38
+ * of first appearance (deduplicated). Used by the linter that validates a
39
+ * manifest declares every variable its templates actually use.
40
+ */
41
+ export declare function extractReferencedVariables(body: string): string[];
42
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/skills/template.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;CAChE;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;CAChE;AAoCD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,qBAAqB,GAC7B,YAAY,CAkBd;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAajE"}
@@ -0,0 +1,95 @@
1
+ // `df skills install` — template renderer.
2
+ //
3
+ // Substitutes `{{VARIABLE}}` references in a template body with values
4
+ // resolved from the consumer's `darkfactory.yaml` (with sensible defaults
5
+ // per the skill's manifest).
6
+ //
7
+ // Design decisions:
8
+ //
9
+ // 1. Double-brace delimiter `{{X}}` for install-time variables. Single-brace
10
+ // `{X}` is left UNTOUCHED — that delimiter is reserved for runtime variables
11
+ // the agent fills at skill invocation (PR metadata, manifesto content, etc.).
12
+ // This keeps install-time + runtime variable systems orthogonal in a single
13
+ // file without escape-syntax acrobatics.
14
+ //
15
+ // 2. Strict variable resolution — any `{{VARIABLE}}` reference in the body must
16
+ // be declared in the skill's `skill.json#variables`. Unknown references are
17
+ // a render-time error (catches typos). Declared-but-not-overridden variables
18
+ // use the manifest's `default`.
19
+ //
20
+ // 3. `kind: "list"` variables accept an array from the consumer config and
21
+ // render one element per line (used for QUALITY_GATE_TARGETS). Scalar
22
+ // variables substitute the value as-is (no escape — values are paths/names,
23
+ // not arbitrary user input).
24
+ //
25
+ // 4. No conditional / loop syntax. If a future skill needs them, we'll lift in
26
+ // handlebars; until then strict-substitution is enough and keeps the
27
+ // surface area trivial to audit.
28
+ /**
29
+ * Regex matching `{{IDENTIFIER}}` (uppercase + digits + underscore, must
30
+ * start with a letter). Conservative on purpose — keeps single-brace `{X}`
31
+ * runtime variables and arbitrary mustache-like brace pairs out of scope.
32
+ */
33
+ const VARIABLE_REGEX = /\{\{([A-Z][A-Z0-9_]*)\}\}/g;
34
+ /**
35
+ * Resolve a variable's effective value: consumer override > manifest default.
36
+ * For `kind: "list"`, an array override is rendered one-per-line; a string
37
+ * override is treated as already-rendered. The manifest default is always a
38
+ * string (lists are declared with a single-line scalar default representing
39
+ * the minimal one-element list).
40
+ */
41
+ function resolveValue(varName, def, overrides) {
42
+ const override = overrides[varName];
43
+ if (override !== undefined) {
44
+ if (Array.isArray(override)) {
45
+ if (def.kind !== "list") {
46
+ throw new Error(`skills: variable "${varName}" received an array override but its manifest declares kind: "scalar" (or omitted).`);
47
+ }
48
+ return override.join("\n");
49
+ }
50
+ return String(override);
51
+ }
52
+ return def.default;
53
+ }
54
+ /**
55
+ * Render `body` by substituting every `{{VAR}}` reference using the skill's
56
+ * manifest + the consumer's overrides. Throws on any reference whose
57
+ * identifier is not declared in `manifest.variables`.
58
+ */
59
+ export function renderTemplateBody(body, options) {
60
+ const seen = new Map();
61
+ const rendered = body.replace(VARIABLE_REGEX, (_match, varName) => {
62
+ const def = options.manifest.variables[varName];
63
+ if (def === undefined) {
64
+ throw new Error(`skills: template references undeclared variable "{{${varName}}}" — add it to skill.json#variables for skill "${options.manifest.name}".`);
65
+ }
66
+ let value = seen.get(varName);
67
+ if (value === undefined) {
68
+ value = resolveValue(varName, def, options.overrides);
69
+ seen.set(varName, value);
70
+ }
71
+ return value;
72
+ });
73
+ const substituted = Array.from(seen, ([name, value]) => ({ name, value }));
74
+ return { body: rendered, substituted };
75
+ }
76
+ /**
77
+ * Side-channel: list every `{{VAR}}` reference present in the body, in order
78
+ * of first appearance (deduplicated). Used by the linter that validates a
79
+ * manifest declares every variable its templates actually use.
80
+ */
81
+ export function extractReferencedVariables(body) {
82
+ const seen = new Set();
83
+ const out = [];
84
+ const re = new RegExp(VARIABLE_REGEX.source, "g");
85
+ let match;
86
+ while ((match = re.exec(body)) !== null) {
87
+ const name = match[1] ?? "";
88
+ if (!seen.has(name)) {
89
+ seen.add(name);
90
+ out.push(name);
91
+ }
92
+ }
93
+ return out;
94
+ }
95
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/skills/template.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rebind.d.ts","sourceRoot":"","sources":["../../src/trusted-surface/rebind.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAsBxD,OAAO,KAAK,EAGV,YAAY,EACZ,YAAY,EAEb,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IAOb,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,YAAY,CAAC,CAiFvB;AA8KD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAoBpF"}
1
+ {"version":3,"file":"rebind.d.ts","sourceRoot":"","sources":["../../src/trusted-surface/rebind.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAsBxD,OAAO,KAAK,EAGV,YAAY,EACZ,YAAY,EAEb,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IAOb,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,YAAY,CAAC,CA8FvB;AA8KD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAoBpF"}
@@ -2,7 +2,7 @@ import { createHash } from "node:crypto";
2
2
  import { existsSync, readFileSync, realpathSync } from "node:fs";
3
3
  import { isAbsolute, relative, resolve } from "node:path";
4
4
  import { changedFiles, commitDiff, commitMetadata, commitParent, commitStat, currentBranch, diffHash as diffHashFn, gitShowFile, resolveCommit, } from "../git.js";
5
- import { readQualityGateEvidence } from "../evidence/index.js";
5
+ import { readDockerBuildEvidence, readQualityGateEvidence } from "../evidence/index.js";
6
6
  import { compactDiff, effectiveMode, identifyLockfileKind, renderContentStub, } from "../compact/index.js";
7
7
  const DEFAULT_DIFF_BUDGET = 1_500_000;
8
8
  export async function buildReviewPacket(loaded, options = {}) {
@@ -61,6 +61,18 @@ export async function buildReviewPacket(loaded, options = {}) {
61
61
  ? await readGuidanceFilesFromRef(options.trustedSurfaceRef, config.context.promptFragments, cwd)
62
62
  : readGuidanceFiles(repoRoot, config.context.promptFragments);
63
63
  const validation = await readValidationEvidence(loaded, sha);
64
+ // DFP #141 — pick up the consumer's `scripts/check-dockerfile.sh`
65
+ // evidence if the shim ran. Field is undefined when the shim hasn't
66
+ // run, which is the status-quo path (no behavior change). Read from
67
+ // the working-tree side; UNLIKE config + guidance files this is NOT
68
+ // a trusted-surface input (it lives under .git/agent-reviews/,
69
+ // outside the tracked tree, so the parent-ref rebind doesn't apply
70
+ // and would also fail — git can't `show ref:_dockerbuild-evidence.json`
71
+ // because the file is never committed). The reader's second arg is
72
+ // the SHA-binding gate: records whose `reviewedSha` doesn't match the
73
+ // commit under review are dropped as stale (mirror of the
74
+ // `readQualityGateEvidence` stale-handling path).
75
+ const dockerBuildEvidence = await readDockerBuildEvidence(loaded, sha);
64
76
  return {
65
77
  repoRoot,
66
78
  branch,
@@ -76,6 +88,7 @@ export async function buildReviewPacket(loaded, options = {}) {
76
88
  validation,
77
89
  ...(compactedDiff !== undefined ? { compactedDiff } : {}),
78
90
  ...(parseErrorPaths !== undefined ? { parseErrorPaths } : {}),
91
+ ...(dockerBuildEvidence !== undefined ? { dockerBuildEvidence } : {}),
79
92
  };
80
93
  }
81
94
  // ADR § 2.1 / § 2.4 — for each path whose effective mode is
@@ -1 +1 @@
1
- {"version":3,"file":"rebind.js","sourceRoot":"","sources":["../../src/trusted-surface/rebind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rebind.js","sourceRoot":"","sources":["../../src/trusted-surface/rebind.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,31 @@
1
1
  {
2
2
  "name": "@momentiq/dark-factory-cli",
3
- "version": "1.1.0",
3
+ "version": "2.0.0",
4
4
  "description": "Dark Factory OSS CLI — multi-vendor adversarial critic orchestration (Cursor, Codex, Gemini, Grok) with min-complete-quorum aggregation and trusted-surface rebind",
5
5
  "license": "Apache-2.0",
6
+ "homepage": "https://momentiq.ai/dark-factory",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/momentiq-ai/dark-factory.git",
10
+ "directory": "packages/cli"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/momentiq-ai/dark-factory/issues"
14
+ },
15
+ "author": "Momentiq AI",
16
+ "keywords": [
17
+ "ai-agents",
18
+ "code-review",
19
+ "github-actions",
20
+ "pr-automation",
21
+ "multi-vendor",
22
+ "agentic-sdlc",
23
+ "claude-code",
24
+ "cursor-sdk",
25
+ "dark-factory",
26
+ "critic",
27
+ "quorum"
28
+ ],
6
29
  "type": "module",
7
30
  "main": "./dist/index.js",
8
31
  "types": "./dist/index.d.ts",
@@ -42,6 +65,10 @@
42
65
  "./cycle-tracker-sync": {
43
66
  "types": "./dist/cycle-tracker-sync/index.d.ts",
44
67
  "import": "./dist/cycle-tracker-sync/index.js"
68
+ },
69
+ "./skills": {
70
+ "types": "./dist/skills/index.d.ts",
71
+ "import": "./dist/skills/index.js"
45
72
  }
46
73
  },
47
74
  "bin": {
@@ -49,6 +76,7 @@
49
76
  },
50
77
  "files": [
51
78
  "dist",
79
+ "skills",
52
80
  "README.md",
53
81
  "LICENSE"
54
82
  ],
@@ -68,8 +96,10 @@
68
96
  "@cursor/sdk": "^1.0.12",
69
97
  "@google/genai": "^2.2.0",
70
98
  "@modelcontextprotocol/sdk": "^1.29.0",
71
- "@momentiq/dark-factory-schemas": "0.4.0",
99
+ "@momentiq/dark-factory-schemas": "0.6.0",
72
100
  "@openai/codex-sdk": "^0.130.0",
101
+ "ajv": "^8.20.0",
102
+ "ajv-formats": "^3.0.1",
73
103
  "openai": "^6.37.0",
74
104
  "yaml": "^2.9.0",
75
105
  "zod": "^3.23.0",