@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 @@
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":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAaxD,OAAO,KAAK,EACV,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,CA+CvB;AAoBD,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"}
@@ -1,7 +1,9 @@
1
+ import { createHash } from "node:crypto";
1
2
  import { existsSync, readFileSync, realpathSync } from "node:fs";
2
3
  import { isAbsolute, relative, resolve } from "node:path";
3
4
  import { changedFiles, commitDiff, commitMetadata, commitParent, commitStat, currentBranch, diffHash as diffHashFn, gitShowFile, resolveCommit, } from "../git.js";
4
- import { readQualityGateEvidence } from "../evidence/index.js";
5
+ import { readDockerBuildEvidence, readQualityGateEvidence } from "../evidence/index.js";
6
+ import { compactDiff, effectiveMode, identifyLockfileKind, renderContentStub, } from "../compact/index.js";
5
7
  const DEFAULT_DIFF_BUDGET = 1_500_000;
6
8
  export async function buildReviewPacket(loaded, options = {}) {
7
9
  const { config, repoRoot } = loaded;
@@ -14,15 +16,44 @@ export async function buildReviewPacket(loaded, options = {}) {
14
16
  const range = parent ? `${parent}..${sha}` : sha;
15
17
  const stat = await commitStat(parent, sha, cwd);
16
18
  const fullDiff = await commitDiff(parent, sha, cwd);
19
+ // ADR § 2.1 — diffHash hashes the PRE-TRUNCATION, PRE-COMPACTION
20
+ // fullDiff so cache identity is stable across policy toggles AND
21
+ // budget truncation. This is unchanged from today.
22
+ const hash = diffHashFn(fullDiff);
23
+ // packet.diff retains today's shape: byte-budgeted from fullDiff
24
+ // (back-compat surface for downstream consumers).
17
25
  const diff = fullDiff.length > DEFAULT_DIFF_BUDGET
18
26
  ? `${fullDiff.slice(0, DEFAULT_DIFF_BUDGET)}\n... [diff truncated at ${DEFAULT_DIFF_BUDGET} bytes]\n`
19
27
  : fullDiff;
20
28
  const diffTruncated = fullDiff.length > DEFAULT_DIFF_BUDGET;
21
- const hash = diffHashFn(fullDiff);
22
29
  const files = await changedFiles(parent, sha, cwd, {
23
30
  maxBytes: config.context.maxChangedFileBytes,
24
31
  readContent: config.context.includeFullChangedFiles,
25
32
  });
33
+ // ADR § 2.1.1 — bounded lockfile strategy. Operates on the
34
+ // UNTRUNCATED fullDiff so source-file hunks that previously
35
+ // overflowed the per-packet budget now fit after lockfile
36
+ // sections collapse to stubs. The result is byte-capped at
37
+ // MAX_COMPACTED_DIFF_BYTES (an EARLIER cap than DEFAULT_DIFF_BUDGET
38
+ // — see ADR § 2.4.1).
39
+ let compactedDiff;
40
+ let parseErrorPaths;
41
+ const policy = config.context.generatedFilePolicy;
42
+ if (policy !== undefined) {
43
+ // Compute effective mode for each changed file path; if any has
44
+ // non-"full" effective mode, run compaction.
45
+ const anyNonFull = files.some((f) => effectiveMode(f.path, policy) !== "full");
46
+ if (anyNonFull) {
47
+ const result = compactDiff(fullDiff, policy);
48
+ compactedDiff = result.compactedDiff;
49
+ const onParseError = policy.onParseError ?? "refuse-and-block";
50
+ if (result.parseErrorPaths.length > 0 && onParseError === "refuse-and-block") {
51
+ parseErrorPaths = result.parseErrorPaths;
52
+ }
53
+ // Update each matched file's compactedContent + clear content.
54
+ await applyContentCompaction(files, policy, sha, cwd);
55
+ }
56
+ }
26
57
  const guidanceFiles = options.trustedSurfaceRef !== undefined
27
58
  ? await readGuidanceFilesFromRef(options.trustedSurfaceRef, config.context.guidanceFiles, cwd)
28
59
  : readGuidanceFiles(repoRoot, config.context.guidanceFiles);
@@ -30,6 +61,18 @@ export async function buildReviewPacket(loaded, options = {}) {
30
61
  ? await readGuidanceFilesFromRef(options.trustedSurfaceRef, config.context.promptFragments, cwd)
31
62
  : readGuidanceFiles(repoRoot, config.context.promptFragments);
32
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);
33
76
  return {
34
77
  repoRoot,
35
78
  branch,
@@ -43,8 +86,162 @@ export async function buildReviewPacket(loaded, options = {}) {
43
86
  guidanceFiles,
44
87
  promptFragments,
45
88
  validation,
89
+ ...(compactedDiff !== undefined ? { compactedDiff } : {}),
90
+ ...(parseErrorPaths !== undefined ? { parseErrorPaths } : {}),
91
+ ...(dockerBuildEvidence !== undefined ? { dockerBuildEvidence } : {}),
46
92
  };
47
93
  }
94
+ // ADR § 2.1 / § 2.4 — for each path whose effective mode is
95
+ // !== "full", set compactedContent + CLEAR content so the prompt
96
+ // renders only the compacted form. Mutates `files` in place (caller
97
+ // receives the mutated array).
98
+ async function applyContentCompaction(files, policy, sha, cwd) {
99
+ for (const file of files) {
100
+ const mode = effectiveMode(file.path, policy);
101
+ if (mode === "full")
102
+ continue;
103
+ const kind = identifyLockfileKind(file.path);
104
+ if (kind === undefined) {
105
+ // Unknown lockfile kind but explicitly globbed; emit a stub
106
+ // marking the path as omitted by policy. Don't read content.
107
+ file.compactedContent = `[DF-COMPACT v1 unknown-format full-content omitted]\nfiles:\n - path: ${file.path}`;
108
+ file.content = "";
109
+ continue;
110
+ }
111
+ if (file.content === undefined) {
112
+ // includeFullChangedFiles must have been false. Synthesize a
113
+ // minimal stub from path + status alone.
114
+ file.compactedContent = `[DF-COMPACT v1 ${kind} full-content not-read]\nfiles:\n - path: ${file.path}`;
115
+ continue;
116
+ }
117
+ if (mode === "omit") {
118
+ file.compactedContent = `[DF-COMPACT v1 ${kind} omitted-by-policy]\nfiles:\n - path: ${file.path}\n - bytes: ${Buffer.byteLength(file.content, "utf8")}`;
119
+ file.content = "";
120
+ continue;
121
+ }
122
+ // mode === "compact"
123
+ const packagesAfter = extractPackagesAfter(kind, file.content);
124
+ const contentSha = createHash("sha256").update(file.content).digest("hex");
125
+ const stub = renderContentStub({
126
+ path: file.path,
127
+ lockfileKind: kind,
128
+ bytesBefore: Buffer.byteLength(file.content, "utf8"),
129
+ contentSha256: contentSha,
130
+ packagesAfter,
131
+ });
132
+ file.compactedContent = stub;
133
+ file.content = "";
134
+ }
135
+ }
136
+ // Lightweight post-commit-state extractor for the content stub.
137
+ // Walks the same field surfaces as the per-format diff extractors;
138
+ // errors fall back to an empty array (the stub still emits with
139
+ // notes:lockfile-metadata-only equivalent).
140
+ function extractPackagesAfter(kind, content) {
141
+ const out = [];
142
+ if (kind === "npm") {
143
+ const lines = content.split("\n");
144
+ const markerRe = /^\s*"node_modules\/(@?[^"]+)":\s*\{/;
145
+ const versionRe = /^\s*"version":\s*"([^"]+)"/;
146
+ const integrityRe = /^\s*"integrity":\s*"([^"]+)"/;
147
+ let pendingName = null;
148
+ let pendingVersion;
149
+ let pendingIntegrity;
150
+ function flush() {
151
+ if (pendingName && pendingVersion) {
152
+ out.push({
153
+ name: pendingName,
154
+ version: pendingVersion,
155
+ ...(pendingIntegrity !== undefined ? { integrity: pendingIntegrity } : {}),
156
+ });
157
+ }
158
+ pendingName = null;
159
+ pendingVersion = undefined;
160
+ pendingIntegrity = undefined;
161
+ }
162
+ for (const line of lines) {
163
+ const m = markerRe.exec(line);
164
+ if (m) {
165
+ flush();
166
+ let name = m[1] ?? "";
167
+ if (name.includes("/node_modules/")) {
168
+ const parts = name.split("/node_modules/");
169
+ name = parts[parts.length - 1] ?? name;
170
+ }
171
+ pendingName = name;
172
+ continue;
173
+ }
174
+ const vm = versionRe.exec(line);
175
+ if (vm && pendingName)
176
+ pendingVersion = vm[1];
177
+ const im = integrityRe.exec(line);
178
+ if (im && pendingName)
179
+ pendingIntegrity = im[1];
180
+ }
181
+ flush();
182
+ return out;
183
+ }
184
+ if (kind === "pnpm") {
185
+ const lines = content.split("\n");
186
+ const specRe = /^\s*\/(@?[^@/]+(?:\/[^@/]+)?)@([^:()]+)(?:\([^)]+\))?:/;
187
+ const integrityRe = /^\s*integrity:\s*(\S+)/;
188
+ let pending = null;
189
+ function flush() {
190
+ if (pending)
191
+ out.push(pending);
192
+ pending = null;
193
+ }
194
+ for (const line of lines) {
195
+ const m = specRe.exec(line);
196
+ if (m) {
197
+ flush();
198
+ pending = { name: m[1] ?? "", version: m[2] ?? "" };
199
+ continue;
200
+ }
201
+ if (pending) {
202
+ const im = integrityRe.exec(line);
203
+ if (im)
204
+ pending.integrity = im[1] ?? "";
205
+ }
206
+ }
207
+ flush();
208
+ return out;
209
+ }
210
+ // yarn
211
+ const lines = content.split("\n");
212
+ const specRe = /^(@?[^@\s]+)@[^:]+:/;
213
+ const versionRe = /^\s+version\s+"([^"]+)"/;
214
+ const integrityRe = /^\s+integrity\s+(\S+)/;
215
+ let pending = null;
216
+ function flush() {
217
+ if (pending && pending.version) {
218
+ out.push({
219
+ name: pending.name,
220
+ version: pending.version,
221
+ ...(pending.integrity !== undefined ? { integrity: pending.integrity } : {}),
222
+ });
223
+ }
224
+ pending = null;
225
+ }
226
+ for (const line of lines) {
227
+ const m = specRe.exec(line);
228
+ if (m) {
229
+ flush();
230
+ pending = { name: m[1] ?? "" };
231
+ continue;
232
+ }
233
+ if (pending) {
234
+ const vm = versionRe.exec(line);
235
+ if (vm)
236
+ pending.version = vm[1] ?? "";
237
+ const im = integrityRe.exec(line);
238
+ if (im)
239
+ pending.integrity = im[1] ?? "";
240
+ }
241
+ }
242
+ flush();
243
+ return out;
244
+ }
48
245
  async function safeParent(sha, cwd) {
49
246
  try {
50
247
  return await commitParent(sha, cwd);
@@ -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.0.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",
@@ -23,6 +46,10 @@
23
46
  "types": "./dist/trusted-surface/index.d.ts",
24
47
  "import": "./dist/trusted-surface/index.js"
25
48
  },
49
+ "./compact": {
50
+ "types": "./dist/compact/index.d.ts",
51
+ "import": "./dist/compact/index.js"
52
+ },
26
53
  "./evidence": {
27
54
  "types": "./dist/evidence/index.d.ts",
28
55
  "import": "./dist/evidence/index.js"
@@ -38,6 +65,10 @@
38
65
  "./cycle-tracker-sync": {
39
66
  "types": "./dist/cycle-tracker-sync/index.d.ts",
40
67
  "import": "./dist/cycle-tracker-sync/index.js"
68
+ },
69
+ "./skills": {
70
+ "types": "./dist/skills/index.d.ts",
71
+ "import": "./dist/skills/index.js"
41
72
  }
42
73
  },
43
74
  "bin": {
@@ -45,6 +76,7 @@
45
76
  },
46
77
  "files": [
47
78
  "dist",
79
+ "skills",
48
80
  "README.md",
49
81
  "LICENSE"
50
82
  ],
@@ -64,8 +96,10 @@
64
96
  "@cursor/sdk": "^1.0.12",
65
97
  "@google/genai": "^2.2.0",
66
98
  "@modelcontextprotocol/sdk": "^1.29.0",
67
- "@momentiq/dark-factory-schemas": "0.3.0",
99
+ "@momentiq/dark-factory-schemas": "0.6.0",
68
100
  "@openai/codex-sdk": "^0.130.0",
101
+ "ajv": "^8.20.0",
102
+ "ajv-formats": "^3.0.1",
69
103
  "openai": "^6.37.0",
70
104
  "yaml": "^2.9.0",
71
105
  "zod": "^3.23.0",
@@ -0,0 +1,89 @@
1
+ # Bundled skills (source of truth)
2
+
3
+ This directory is the source of truth for skills shipped by
4
+ `@momentiq/dark-factory-cli` and installable into any consumer repo via
5
+ `df skills install <name>`.
6
+
7
+ Each subdirectory is one skill:
8
+
9
+ ```
10
+ skills/
11
+ ├── skill-schema.json # JSON schema for skill.json files
12
+ ├── chief-engineer-review/
13
+ │ ├── skill.json # manifest (variables, file map)
14
+ │ ├── SKILL.md.tmpl # main skill body (Handlebars-style vars)
15
+ │ ├── templates/
16
+ │ │ ├── code-review-prompt.md.tmpl
17
+ │ │ ├── plan-review-prompt.md.tmpl
18
+ │ │ └── escalation-prompt.md.tmpl
19
+ │ └── references/
20
+ │ └── review-examples.md.tmpl
21
+ └── chief-engineer-blitz/
22
+ ├── skill.json
23
+ └── SKILL.md.tmpl
24
+ ```
25
+
26
+ ## Authoring rules
27
+
28
+ 1. **Every `{{VARIABLE}}` reference in any `.tmpl` file MUST be declared in
29
+ `skill.json#variables`.** The renderer fails closed if a referenced variable
30
+ is undeclared (catches typos and silent drift between template + manifest).
31
+ 2. **`{{X}}` is install-time substitution** (rendered by `df skills install`
32
+ from `darkfactory.yaml`). `{X}` (single-brace) is runtime substitution
33
+ (filled later by the agent at skill invocation; not touched by the renderer).
34
+ 3. **Header comment in every rendered file.** Every `.tmpl` should start (or
35
+ end its frontmatter with) a `GENERATED by df skills install …` comment so
36
+ consumers know not to hand-edit the rendered copy.
37
+ 4. **No consumer-specific literals.** If the skill mentions a Make-target,
38
+ an ADR directory, a manifesto path, or any other repo-shaped string, route
39
+ it through a `{{VAR}}` with a sensible default.
40
+
41
+ ## Install-time variable conventions
42
+
43
+ | Variable | Typical default | Source |
44
+ |---|---|---|
45
+ | `{{REPO_NAME}}` | `this repo` | `darkfactory.yaml: repo.displayName` |
46
+ | `{{REPO_SLUG}}` | (empty) | `repo.slug` > `<repo>` portion of git `origin` remote |
47
+ | `{{MANIFESTO_PATH}}` | `docs/PRINCIPLES.md` | `docs.manifesto` |
48
+ | `{{ADR_DIR}}` | `docs/ADR` | `docs.adrDir` |
49
+ | `{{CYCLE_DOCS_DIR}}` | `docs/roadmap/cycles` | `docs.cycleDocsDir` |
50
+ | `{{RFC_DIR}}` | `docs/rfcs` | `docs.rfcDir` |
51
+ | `{{PRD_DIR}}` | `docs/prds` | `docs.prdDir` |
52
+ | `{{CE_AGENT_PATH}}` | `.claude/agents/chief-engineer.md` | `agents.chiefEngineer` |
53
+ | `{{QUALITY_GATE_TARGETS}}` | `make quality-gates` | `qualityGates` (list) |
54
+ | `{{WORKTREE_ROOT}}` | `.claude/worktrees` | `worktreeRoot` |
55
+ | `{{OWNER_REPO}}` | (empty) | `repo.ownerRepo` > parsed from `git config --get remote.origin.url` |
56
+ | `{{AGENT_COMMITTER_ORG}}` | `momentiq` | `agentCommitterOrg` |
57
+
58
+ `OWNER_REPO` / `REPO_SLUG` precedence at install time: explicit
59
+ `darkfactory.yaml` value wins. When the yaml does not provide it, the
60
+ renderer falls back to parsing the consumer repo's `origin` git remote
61
+ (both SSH `git@github.com:owner/repo.git` and HTTPS
62
+ `https://github.com/owner/repo.git` forms are recognized). If neither
63
+ yields a value, the renderer uses the manifest default (empty by
64
+ convention — the consumer accepts that templated `gh` commands will
65
+ require an explicit `--repo` flag).
66
+
67
+ ## Adding a new skill
68
+
69
+ 1. Create `skills/<name>/`.
70
+ 2. Write `skill.json` declaring all variables your templates use.
71
+ 3. Write `SKILL.md.tmpl` (and any sibling templates/, references/).
72
+ 4. Add the skill name to `KNOWN_SKILLS` in `src/skills/install.ts`.
73
+ 5. Add a vitest case in `tests/skills/install.test.ts` that renders the skill
74
+ against the default config and snapshots the output.
75
+
76
+ ## How skills ship in the npm tarball
77
+
78
+ Bundled skills ship via the top-level `files: ["skills"]` array in
79
+ `packages/cli/package.json` — the whole `skills/` directory is copied
80
+ verbatim into the published tarball. There is **no** copy-assets step
81
+ for `.tmpl` / `skill.json` files; `scripts/copy-assets.mjs` only mirrors
82
+ non-TypeScript assets *inside* `src/` (e.g. Python scripts, YAML fixtures)
83
+ into `dist/`. The skills directory sits at the package root, parallel to
84
+ `dist/`, and `resolveSkillsRoot()` finds it relative to the compiled
85
+ module's URL.
86
+
87
+ If you need a new file extension under `skills/` (today: `.md.tmpl`,
88
+ `.json`), nothing in the build needs to change — the `files` array
89
+ already takes the directory as a whole.