@momentiq/dark-factory-cli 2.17.0 → 3.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 (136) hide show
  1. package/dist/adapters/codex-sdk.d.ts +30 -5
  2. package/dist/adapters/codex-sdk.d.ts.map +1 -1
  3. package/dist/adapters/codex-sdk.js +50 -15
  4. package/dist/adapters/codex-sdk.js.map +1 -1
  5. package/dist/adapters/cursor-sdk.d.ts.map +1 -1
  6. package/dist/adapters/cursor-sdk.js +14 -2
  7. package/dist/adapters/cursor-sdk.js.map +1 -1
  8. package/dist/adapters/index.d.ts +1 -0
  9. package/dist/adapters/index.d.ts.map +1 -1
  10. package/dist/adapters/index.js +6 -0
  11. package/dist/adapters/index.js.map +1 -1
  12. package/dist/adapters/mode-scope.d.ts +86 -0
  13. package/dist/adapters/mode-scope.d.ts.map +1 -0
  14. package/dist/adapters/mode-scope.js +456 -0
  15. package/dist/adapters/mode-scope.js.map +1 -0
  16. package/dist/branch-protection/audit_branch_protection.py +80 -2
  17. package/dist/cli.d.ts +5 -0
  18. package/dist/cli.d.ts.map +1 -1
  19. package/dist/cli.js +31 -1
  20. package/dist/cli.js.map +1 -1
  21. package/dist/commands/mode.d.ts +2 -0
  22. package/dist/commands/mode.d.ts.map +1 -0
  23. package/dist/commands/mode.js +235 -0
  24. package/dist/commands/mode.js.map +1 -0
  25. package/dist/commands/objectives.d.ts +27 -3
  26. package/dist/commands/objectives.d.ts.map +1 -1
  27. package/dist/commands/objectives.js +347 -53
  28. package/dist/commands/objectives.js.map +1 -1
  29. package/dist/commands/onboard.d.ts.map +1 -1
  30. package/dist/commands/onboard.js +3 -1
  31. package/dist/commands/onboard.js.map +1 -1
  32. package/dist/cycle-doc-validator/validate_cycle_doc.py +128 -11
  33. package/dist/doctor.d.ts.map +1 -1
  34. package/dist/doctor.js +15 -7
  35. package/dist/doctor.js.map +1 -1
  36. package/dist/evidence/index.d.ts +1 -0
  37. package/dist/evidence/index.d.ts.map +1 -1
  38. package/dist/evidence/index.js +5 -0
  39. package/dist/evidence/index.js.map +1 -1
  40. package/dist/evidence/ui-visual/embed.d.ts +65 -0
  41. package/dist/evidence/ui-visual/embed.d.ts.map +1 -0
  42. package/dist/evidence/ui-visual/embed.js +176 -0
  43. package/dist/evidence/ui-visual/embed.js.map +1 -0
  44. package/dist/evidence/ui-visual/index.d.ts +2 -0
  45. package/dist/evidence/ui-visual/index.d.ts.map +1 -0
  46. package/dist/evidence/ui-visual/index.js +6 -0
  47. package/dist/evidence/ui-visual/index.js.map +1 -0
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +1 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/mcp/cycle-doc/parser.d.ts +3 -3
  53. package/dist/mcp/cycle-doc/parser.d.ts.map +1 -1
  54. package/dist/mcp/cycle-doc/parser.js +2 -2
  55. package/dist/mcp/cycle-doc/parser.js.map +1 -1
  56. package/dist/mcp/tools/doctor.d.ts +5 -0
  57. package/dist/mcp/tools/doctor.d.ts.map +1 -1
  58. package/dist/mcp/tools/doctor.js +10 -1
  59. package/dist/mcp/tools/doctor.js.map +1 -1
  60. package/dist/mcp/tools/review-bypass.d.ts +5 -0
  61. package/dist/mcp/tools/review-bypass.d.ts.map +1 -1
  62. package/dist/mcp/tools/review-bypass.js +9 -1
  63. package/dist/mcp/tools/review-bypass.js.map +1 -1
  64. package/dist/mode/apply.d.ts +8 -0
  65. package/dist/mode/apply.d.ts.map +1 -0
  66. package/dist/mode/apply.js +118 -0
  67. package/dist/mode/apply.js.map +1 -0
  68. package/dist/mode/context.d.ts +50 -0
  69. package/dist/mode/context.d.ts.map +1 -0
  70. package/dist/mode/context.js +127 -0
  71. package/dist/mode/context.js.map +1 -0
  72. package/dist/mode/critic-registration.d.ts +66 -0
  73. package/dist/mode/critic-registration.d.ts.map +1 -0
  74. package/dist/mode/critic-registration.js +279 -0
  75. package/dist/mode/critic-registration.js.map +1 -0
  76. package/dist/mode/guard.d.ts +15 -0
  77. package/dist/mode/guard.d.ts.map +1 -0
  78. package/dist/mode/guard.js +160 -0
  79. package/dist/mode/guard.js.map +1 -0
  80. package/dist/mode/init.d.ts +17 -0
  81. package/dist/mode/init.d.ts.map +1 -0
  82. package/dist/mode/init.js +147 -0
  83. package/dist/mode/init.js.map +1 -0
  84. package/dist/mode/loadConfig.d.ts +34 -0
  85. package/dist/mode/loadConfig.d.ts.map +1 -0
  86. package/dist/mode/loadConfig.js +38 -0
  87. package/dist/mode/loadConfig.js.map +1 -0
  88. package/dist/mode/prompts/designer-baseline.md +47 -0
  89. package/dist/mode/resolve.d.ts +24 -0
  90. package/dist/mode/resolve.d.ts.map +1 -0
  91. package/dist/mode/resolve.js +65 -0
  92. package/dist/mode/resolve.js.map +1 -0
  93. package/dist/mode/scope-policy.d.ts +41 -0
  94. package/dist/mode/scope-policy.d.ts.map +1 -0
  95. package/dist/mode/scope-policy.js +97 -0
  96. package/dist/mode/scope-policy.js.map +1 -0
  97. package/dist/mode/status.d.ts +14 -0
  98. package/dist/mode/status.d.ts.map +1 -0
  99. package/dist/mode/status.js +13 -0
  100. package/dist/mode/status.js.map +1 -0
  101. package/dist/onboard/seeders/design-md.d.ts +3 -0
  102. package/dist/onboard/seeders/design-md.d.ts.map +1 -0
  103. package/dist/onboard/seeders/design-md.js +138 -0
  104. package/dist/onboard/seeders/design-md.js.map +1 -0
  105. package/dist/onboard/seeders/index.d.ts +8 -0
  106. package/dist/onboard/seeders/index.d.ts.map +1 -1
  107. package/dist/onboard/seeders/index.js +3 -0
  108. package/dist/onboard/seeders/index.js.map +1 -1
  109. package/dist/onboard/validate.d.ts +36 -1
  110. package/dist/onboard/validate.d.ts.map +1 -1
  111. package/dist/onboard/validate.js +136 -42
  112. package/dist/onboard/validate.js.map +1 -1
  113. package/dist/skills/config.d.ts +2 -110
  114. package/dist/skills/config.d.ts.map +1 -1
  115. package/dist/skills/config.js +20 -58
  116. package/dist/skills/config.js.map +1 -1
  117. package/dist/skills/index.d.ts +1 -1
  118. package/dist/skills/index.d.ts.map +1 -1
  119. package/dist/skills/index.js +1 -1
  120. package/dist/skills/index.js.map +1 -1
  121. package/dist/skills/install.d.ts.map +1 -1
  122. package/dist/skills/install.js +7 -0
  123. package/dist/skills/install.js.map +1 -1
  124. package/package.json +3 -3
  125. package/skills/designer-brief/SKILL.md.tmpl +74 -0
  126. package/skills/designer-brief/skill.json +17 -0
  127. package/skills/designer-build/SKILL.md.tmpl +63 -0
  128. package/skills/designer-build/skill.json +17 -0
  129. package/skills/designer-handoff/SKILL.md.tmpl +64 -0
  130. package/skills/designer-handoff/skill.json +17 -0
  131. package/skills/designer-ship/SKILL.md.tmpl +77 -0
  132. package/skills/designer-ship/skill.json +17 -0
  133. package/skills/objectives/SKILL.md.tmpl +34 -6
  134. package/skills/verify/producer/ui-visual-surfaces.ts +261 -0
  135. package/skills/verify/producer/ui-visual.config.ts +22 -0
  136. package/skills/verify/producer/ui-visual.producer.spec.ts +137 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/onboard/seeders/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAiCnE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAkB,EAClB,OAA0B;IAE1B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBAAqB,CAAC,CAAC,IAAI,YAAY,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CACtF,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,SAAS;IACT,qBAAqB;IACrB,aAAa;IACb,uBAAuB;CACxB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/onboard/seeders/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAuChD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAkB,EAClB,OAA0B;IAE1B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBAAqB,CAAC,CAAC,IAAI,YAAY,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CACtF,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,SAAS;IACT,qBAAqB;IACrB,aAAa;IACb,uBAAuB;IACvB,cAAc;CACf,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { DoctorCheck } from "@momentiq/dark-factory-schemas";
1
+ import { type DarkFactoryConfig, type DoctorCheck } from "@momentiq/dark-factory-schemas";
2
2
  export interface CheckAgentContextSetOptions {
3
3
  repoRoot: string;
4
4
  /**
@@ -16,4 +16,39 @@ export interface CheckAgentContextSetOptions {
16
16
  guidanceFiles: readonly string[] | undefined;
17
17
  }
18
18
  export declare function checkAgentContextSet(opts: CheckAgentContextSetOptions): Promise<DoctorCheck[]>;
19
+ export interface CheckDarkFactoryConfigOptions {
20
+ repoRoot: string;
21
+ }
22
+ export interface DarkFactoryConfigOutcome {
23
+ check: DoctorCheck;
24
+ /**
25
+ * The canonically-parsed config: `{}` when the file is missing (defaults
26
+ * everywhere), the parsed shape when valid, `undefined` when the file
27
+ * exists but cannot be parsed (YAML or schema error — see `check`).
28
+ */
29
+ config: DarkFactoryConfig | undefined;
30
+ }
31
+ export declare function checkDarkFactoryConfig(opts: CheckDarkFactoryConfigOptions): Promise<DarkFactoryConfigOutcome>;
32
+ export interface CheckDesignMdOptions {
33
+ repoRoot: string;
34
+ /**
35
+ * Outcome of `checkDarkFactoryConfig`: the parsed config, or `undefined`
36
+ * when darkfactory.yaml exists but is unparseable (this check then fails
37
+ * as "cannot evaluate" and defers to `config.darkfactory_yaml` for the
38
+ * root cause).
39
+ */
40
+ config: DarkFactoryConfig | undefined;
41
+ }
42
+ /**
43
+ * Cycle 27 Phase A — `agent_context.design_md`.
44
+ *
45
+ * DESIGN.md (Google Labs open spec) is the design-side sibling of AGENTS.md.
46
+ * Advisory for repos without a designer mode: a missing file PASSES with a
47
+ * recommendation. REQUIRED once `darkfactory.yaml` declares `modes.designer`:
48
+ * the Designer Mode persona and design-lens critics bind to this file, so its
49
+ * absence is a real gap and FAILS with remediation. Consumes the config
50
+ * parsed once by `checkDarkFactoryConfig` — never re-reads or re-interprets
51
+ * the file itself.
52
+ */
53
+ export declare function checkDesignMd(opts: CheckDesignMdOptions): Promise<DoctorCheck>;
19
54
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/onboard/validate.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC9C;AA2DD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,WAAW,EAAE,CAAC,CA+DxB"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/onboard/validate.ts"],"names":[],"mappings":"AAwBA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC9C;AAmCD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,WAAW,EAAE,CAAC,CA6DxB;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,WAAW,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACvC;AA0BD,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,wBAAwB,CAAC,CAmDnC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,WAAW,CAAC,CAmCtB"}
@@ -1,51 +1,38 @@
1
1
  // Cycle 15 Phase C — `checkAgentContextSet()` for `df doctor`.
2
2
  //
3
- // Walks the cycle-15 D3 required-files set (CLAUDE.md, AGENTS.md,
4
- // .claude/settings.json, docs/PRINCIPLES.md, docs/roadmap/cycles/cycle1-*.md,
5
- // .agent-review/config.json) UNCONDITIONALLY, then optionally validates each
6
- // path in `context.guidanceFiles` (from the loaded AgentReviewConfig) resolves
7
- // to a real file under `repoRoot`.
3
+ // Walks the universal Dark-Factory required-files floor (CLAUDE.md, AGENTS.md,
4
+ // .claude/settings.json, .agent-review/config.json) UNCONDITIONALLY, then
5
+ // optionally validates each path in `context.guidanceFiles` (from the loaded
6
+ // AgentReviewConfig) resolves to a real file under `repoRoot`.
8
7
  //
9
8
  // Per Decision #7 (round-1 revision): the required-files walk runs regardless
10
- // of whether `context.guidanceFiles` is configured — the D3 set is the floor.
11
- // The guidance-file walk is opt-in: when `guidanceFiles` is undefined OR `[]`,
12
- // a single `agent_context.guidance_not_configured` informational marker is
13
- // emitted (passed: true, optional: true) so operators see the field was
14
- // skipped rather than silently absent.
9
+ // of whether `context.guidanceFiles` is configured — the universal floor is
10
+ // not opt-in. The guidance-file walk is opt-in: when `guidanceFiles` is
11
+ // undefined OR `[]`, a single `agent_context.guidance_not_configured`
12
+ // informational marker is emitted (passed: true, optional: true) so operators
13
+ // see the field was skipped rather than silently absent.
15
14
  //
16
15
  // Cycle 15 exit-criterion lines 297–303: "the post-apply check fails loudly
17
- // when any of [list] are missing or unwired (`context.guidanceFiles` does not
18
- // point at real files). All current repos must pass `df doctor` after this
19
- // lands."
20
- import { access, readdir } from "node:fs/promises";
16
+ // when any of [the universal floor] are missing or unwired (`context.guidanceFiles`
17
+ // does not point at real files). All current repos must pass `df doctor` after
18
+ // this lands."
19
+ import { access, readFile } from "node:fs/promises";
21
20
  import { constants } from "node:fs";
22
21
  import { resolve } from "node:path";
22
+ import { parse as parseYaml } from "yaml";
23
+ import { parseDarkFactoryConfig, } from "@momentiq/dark-factory-schemas";
23
24
  const REQUIRED_FILES = [
24
- { key: "claude_md", name: "CLAUDE.md", path: "CLAUDE.md", isGlob: false },
25
- { key: "agents_md", name: "AGENTS.md", path: "AGENTS.md", isGlob: false },
25
+ { key: "claude_md", name: "CLAUDE.md", path: "CLAUDE.md" },
26
+ { key: "agents_md", name: "AGENTS.md", path: "AGENTS.md" },
26
27
  {
27
28
  key: "claude_settings",
28
29
  name: ".claude/settings.json",
29
30
  path: ".claude/settings.json",
30
- isGlob: false,
31
- },
32
- {
33
- key: "principles",
34
- name: "docs/PRINCIPLES.md",
35
- path: "docs/PRINCIPLES.md",
36
- isGlob: false,
37
- },
38
- {
39
- key: "cycle1_bootstrap",
40
- name: "docs/roadmap/cycles/cycle1-*.md",
41
- path: "docs/roadmap/cycles",
42
- isGlob: true,
43
31
  },
44
32
  {
45
33
  key: "config",
46
34
  name: ".agent-review/config.json",
47
35
  path: ".agent-review/config.json",
48
- isGlob: false,
49
36
  },
50
37
  ];
51
38
  async function fileExists(path) {
@@ -57,15 +44,6 @@ async function fileExists(path) {
57
44
  return false;
58
45
  }
59
46
  }
60
- async function cycle1GlobMatches(dir) {
61
- try {
62
- const entries = await readdir(dir);
63
- return entries.some((name) => /^cycle1-.*\.md$/.test(name));
64
- }
65
- catch {
66
- return false;
67
- }
68
- }
69
47
  const REMEDIATION = "run `df onboard --apply` to generate the missing agent-context files, or restore the file from version control";
70
48
  export async function checkAgentContextSet(opts) {
71
49
  const out = [];
@@ -76,9 +54,7 @@ export async function checkAgentContextSet(opts) {
76
54
  // fail when CLAUDE.md is missing.
77
55
  for (const req of REQUIRED_FILES) {
78
56
  const fullPath = resolve(opts.repoRoot, req.path);
79
- const exists = req.isGlob
80
- ? await cycle1GlobMatches(fullPath)
81
- : await fileExists(fullPath);
57
+ const exists = await fileExists(fullPath);
82
58
  out.push(exists
83
59
  ? {
84
60
  name: `agent_context.${req.key}`,
@@ -124,4 +100,122 @@ export async function checkAgentContextSet(opts) {
124
100
  }
125
101
  return out;
126
102
  }
103
+ /**
104
+ * Cycle 27 — `config.darkfactory_yaml`.
105
+ *
106
+ * Doctor's SINGLE parse of darkfactory.yaml, using the canonical
107
+ * `parseDarkFactoryConfig` from @momentiq/dark-factory-schemas. Downstream
108
+ * checks (checkDesignMd today) consume the returned `config` instead of
109
+ * re-reading the file — one parse, one semantics, and a config problem is
110
+ * attributed to THIS check rather than misattributed to whichever downstream
111
+ * check happened to trip over it. (Advisor-mandated restructure, #299: two
112
+ * rounds of findings came from a tolerant hand-rolled probe drifting from
113
+ * the canonical parser's semantics.)
114
+ */
115
+ /**
116
+ * Flatten an error message for a one-line doctor detail: yaml parse errors
117
+ * embed newlines and code-frame snippets that would break doctor's
118
+ * one-check-per-line output (and could smuggle content into logs). Collapse
119
+ * whitespace runs and cap the length.
120
+ */
121
+ function oneLineError(e) {
122
+ const msg = e instanceof Error ? e.message : String(e);
123
+ const flat = msg.replace(/\s+/g, " ").trim();
124
+ return flat.length > 300 ? `${flat.slice(0, 300)}…` : flat;
125
+ }
126
+ export async function checkDarkFactoryConfig(opts) {
127
+ const configPath = resolve(opts.repoRoot, "darkfactory.yaml");
128
+ let raw;
129
+ try {
130
+ raw = await readFile(configPath, "utf8");
131
+ }
132
+ catch (e) {
133
+ // Only ENOENT means "missing → defaults apply". Any other read failure
134
+ // (EACCES, EISDIR, …) is a real problem that must not silently pass.
135
+ if (e.code === "ENOENT") {
136
+ return {
137
+ check: {
138
+ name: "config.darkfactory_yaml",
139
+ passed: true,
140
+ detail: `darkfactory.yaml not present at ${configPath} — defaults apply everywhere (create one to configure skills/modes)`,
141
+ },
142
+ config: {},
143
+ };
144
+ }
145
+ return {
146
+ check: {
147
+ name: "config.darkfactory_yaml",
148
+ passed: false,
149
+ detail: `darkfactory.yaml at ${configPath} cannot be read: ${oneLineError(e)}`,
150
+ remediation: "fix the file's permissions/type so it is a readable file, then re-run `df doctor`",
151
+ },
152
+ config: undefined,
153
+ };
154
+ }
155
+ try {
156
+ const config = parseDarkFactoryConfig(parseYaml(raw) ?? {});
157
+ return {
158
+ check: {
159
+ name: "config.darkfactory_yaml",
160
+ passed: true,
161
+ detail: `darkfactory.yaml parses canonically at ${configPath}`,
162
+ },
163
+ config,
164
+ };
165
+ }
166
+ catch (e) {
167
+ return {
168
+ check: {
169
+ name: "config.darkfactory_yaml",
170
+ passed: false,
171
+ detail: `darkfactory.yaml at ${configPath} cannot be parsed canonically: ${oneLineError(e)}`,
172
+ remediation: "fix darkfactory.yaml so `parseDarkFactoryConfig` accepts it (the error names the offending path), then re-run `df doctor`",
173
+ },
174
+ config: undefined,
175
+ };
176
+ }
177
+ }
178
+ /**
179
+ * Cycle 27 Phase A — `agent_context.design_md`.
180
+ *
181
+ * DESIGN.md (Google Labs open spec) is the design-side sibling of AGENTS.md.
182
+ * Advisory for repos without a designer mode: a missing file PASSES with a
183
+ * recommendation. REQUIRED once `darkfactory.yaml` declares `modes.designer`:
184
+ * the Designer Mode persona and design-lens critics bind to this file, so its
185
+ * absence is a real gap and FAILS with remediation. Consumes the config
186
+ * parsed once by `checkDarkFactoryConfig` — never re-reads or re-interprets
187
+ * the file itself.
188
+ */
189
+ export async function checkDesignMd(opts) {
190
+ const designPath = resolve(opts.repoRoot, "DESIGN.md");
191
+ const exists = await fileExists(designPath);
192
+ if (exists) {
193
+ return {
194
+ name: "agent_context.design_md",
195
+ passed: true,
196
+ detail: `DESIGN.md present at ${designPath}`,
197
+ };
198
+ }
199
+ if (opts.config === undefined) {
200
+ return {
201
+ name: "agent_context.design_md",
202
+ passed: false,
203
+ detail: `DESIGN.md missing at ${designPath} and whether a designer mode requires it cannot be determined — darkfactory.yaml is unparseable (see the config.darkfactory_yaml check for the root cause)`,
204
+ remediation: "fix darkfactory.yaml first, then run `df onboard --apply` to seed a DESIGN.md skeleton",
205
+ };
206
+ }
207
+ if (opts.config.modes?.["designer"] !== undefined) {
208
+ return {
209
+ name: "agent_context.design_md",
210
+ passed: false,
211
+ detail: `DESIGN.md missing at ${designPath} — required: darkfactory.yaml declares modes.designer, whose persona and design-lens critics bind to it`,
212
+ remediation: "run `df onboard --apply` to seed a DESIGN.md skeleton (Google Labs spec), or author one at the repo root",
213
+ };
214
+ }
215
+ return {
216
+ name: "agent_context.design_md",
217
+ passed: true,
218
+ detail: `DESIGN.md not present at ${designPath} (advisory — recommended agent-context file; becomes required once a designer mode is configured)`,
219
+ };
220
+ }
127
221
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/onboard/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/onboard/validate.ts"],"names":[],"mappings":"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"}
@@ -1,114 +1,6 @@
1
- import { z } from "zod";
1
+ import { type DarkFactoryConfig } from "@momentiq/dark-factory-schemas";
2
2
  export declare const CONFIG_FILENAME = "darkfactory.yaml";
3
- export declare const DarkFactoryConfigSchema: z.ZodObject<{
4
- repo: z.ZodOptional<z.ZodObject<{
5
- displayName: z.ZodOptional<z.ZodOptional<z.ZodString>>;
6
- slug: z.ZodOptional<z.ZodOptional<z.ZodString>>;
7
- ownerRepo: z.ZodOptional<z.ZodOptional<z.ZodString>>;
8
- }, "strip", z.ZodTypeAny, {
9
- displayName?: string | undefined;
10
- slug?: string | undefined;
11
- ownerRepo?: string | undefined;
12
- }, {
13
- displayName?: string | undefined;
14
- slug?: string | undefined;
15
- ownerRepo?: string | undefined;
16
- }>>;
17
- docs: z.ZodOptional<z.ZodObject<{
18
- manifesto: z.ZodOptional<z.ZodOptional<z.ZodString>>;
19
- adrDir: z.ZodOptional<z.ZodOptional<z.ZodString>>;
20
- cycleDocsDir: z.ZodOptional<z.ZodOptional<z.ZodString>>;
21
- rfcDir: z.ZodOptional<z.ZodOptional<z.ZodString>>;
22
- prdDir: z.ZodOptional<z.ZodOptional<z.ZodString>>;
23
- }, "strip", z.ZodTypeAny, {
24
- manifesto?: string | undefined;
25
- adrDir?: string | undefined;
26
- cycleDocsDir?: string | undefined;
27
- rfcDir?: string | undefined;
28
- prdDir?: string | undefined;
29
- }, {
30
- manifesto?: string | undefined;
31
- adrDir?: string | undefined;
32
- cycleDocsDir?: string | undefined;
33
- rfcDir?: string | undefined;
34
- prdDir?: string | undefined;
35
- }>>;
36
- agents: z.ZodOptional<z.ZodObject<{
37
- chiefEngineer: z.ZodOptional<z.ZodOptional<z.ZodString>>;
38
- }, "strip", z.ZodTypeAny, {
39
- chiefEngineer?: string | undefined;
40
- }, {
41
- chiefEngineer?: string | undefined;
42
- }>>;
43
- qualityGates: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
44
- qualityGatesExtras: z.ZodOptional<z.ZodObject<{
45
- apiTypes: z.ZodOptional<z.ZodOptional<z.ZodString>>;
46
- }, "strip", z.ZodTypeAny, {
47
- apiTypes?: string | undefined;
48
- }, {
49
- apiTypes?: string | undefined;
50
- }>>;
51
- worktreeRoot: z.ZodOptional<z.ZodString>;
52
- agentCommitterOrg: z.ZodOptional<z.ZodString>;
53
- skills: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
54
- enabled: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
55
- }, "strip", z.ZodTypeAny, {
56
- enabled?: boolean | undefined;
57
- }, {
58
- enabled?: boolean | undefined;
59
- }>>>;
60
- }, "strict", z.ZodTypeAny, {
61
- repo?: {
62
- displayName?: string | undefined;
63
- slug?: string | undefined;
64
- ownerRepo?: string | undefined;
65
- } | undefined;
66
- docs?: {
67
- manifesto?: string | undefined;
68
- adrDir?: string | undefined;
69
- cycleDocsDir?: string | undefined;
70
- rfcDir?: string | undefined;
71
- prdDir?: string | undefined;
72
- } | undefined;
73
- agents?: {
74
- chiefEngineer?: string | undefined;
75
- } | undefined;
76
- qualityGates?: string[] | undefined;
77
- qualityGatesExtras?: {
78
- apiTypes?: string | undefined;
79
- } | undefined;
80
- worktreeRoot?: string | undefined;
81
- agentCommitterOrg?: string | undefined;
82
- skills?: Record<string, {
83
- enabled?: boolean | undefined;
84
- }> | undefined;
85
- }, {
86
- repo?: {
87
- displayName?: string | undefined;
88
- slug?: string | undefined;
89
- ownerRepo?: string | undefined;
90
- } | undefined;
91
- docs?: {
92
- manifesto?: string | undefined;
93
- adrDir?: string | undefined;
94
- cycleDocsDir?: string | undefined;
95
- rfcDir?: string | undefined;
96
- prdDir?: string | undefined;
97
- } | undefined;
98
- agents?: {
99
- chiefEngineer?: string | undefined;
100
- } | undefined;
101
- qualityGates?: string[] | undefined;
102
- qualityGatesExtras?: {
103
- apiTypes?: string | undefined;
104
- } | undefined;
105
- worktreeRoot?: string | undefined;
106
- agentCommitterOrg?: string | undefined;
107
- skills?: Record<string, {
108
- enabled?: boolean | undefined;
109
- }> | undefined;
110
- }>;
111
- export type DarkFactoryConfig = z.infer<typeof DarkFactoryConfigSchema>;
3
+ export type { DarkFactoryConfig };
112
4
  export interface LoadedDarkFactoryConfig {
113
5
  readonly config: DarkFactoryConfig;
114
6
  readonly configPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/skills/config.ts"],"names":[],"mappings":"AA2CA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAmClD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBzB,CAAC;AAEZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,GACf,uBAAuB,CA+BzB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWxE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAavE;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CA0DnC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAKrE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/skills/config.ts"],"names":[],"mappings":"AA4CA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,gCAAgC,CAAC;AAExC,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAelD,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,GACf,uBAAuB,CAuCzB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWxE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAavE;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CA0DnC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAKrE"}
@@ -33,60 +33,15 @@
33
33
  // enabled: true
34
34
  //
35
35
  // Backed by the existing `yaml` workspace dep (already required by other
36
- // CLI surfaces); zod validates the shape so a malformed config fails closed
37
- // at load time with a useful error.
36
+ // CLI surfaces); the canonical `parseDarkFactoryConfig` from
37
+ // @momentiq/dark-factory-schemas validates the shape so a malformed config
38
+ // fails closed at load time with a useful error.
38
39
  import { execFileSync } from "node:child_process";
39
40
  import { existsSync, readFileSync } from "node:fs";
40
41
  import { resolve } from "node:path";
41
42
  import { parse as parseYaml } from "yaml";
42
- import { z } from "zod";
43
+ import { parseDarkFactoryConfig, } from "@momentiq/dark-factory-schemas";
43
44
  export const CONFIG_FILENAME = "darkfactory.yaml";
44
- const repoSchema = z
45
- .object({
46
- displayName: z.string().optional(),
47
- slug: z.string().optional(),
48
- ownerRepo: z.string().optional(),
49
- })
50
- .partial()
51
- .optional();
52
- const docsSchema = z
53
- .object({
54
- manifesto: z.string().optional(),
55
- adrDir: z.string().optional(),
56
- cycleDocsDir: z.string().optional(),
57
- rfcDir: z.string().optional(),
58
- prdDir: z.string().optional(),
59
- })
60
- .partial()
61
- .optional();
62
- const agentsSchema = z
63
- .object({
64
- chiefEngineer: z.string().optional(),
65
- })
66
- .partial()
67
- .optional();
68
- const skillEntrySchema = z
69
- .object({
70
- enabled: z.boolean().optional(),
71
- })
72
- .partial();
73
- export const DarkFactoryConfigSchema = z
74
- .object({
75
- repo: repoSchema,
76
- docs: docsSchema,
77
- agents: agentsSchema,
78
- qualityGates: z.array(z.string()).optional(),
79
- qualityGatesExtras: z
80
- .object({
81
- apiTypes: z.string().optional(),
82
- })
83
- .partial()
84
- .optional(),
85
- worktreeRoot: z.string().optional(),
86
- agentCommitterOrg: z.string().optional(),
87
- skills: z.record(skillEntrySchema).optional(),
88
- })
89
- .strict();
90
45
  /**
91
46
  * Locate + parse `darkfactory.yaml` at `repoRoot`. Returns a defaulted
92
47
  * empty config when the file does not exist (so callers can render skills
@@ -98,7 +53,7 @@ export function loadDarkFactoryConfig(repoRoot) {
98
53
  const configPath = resolve(repoRoot, CONFIG_FILENAME);
99
54
  if (!existsSync(configPath)) {
100
55
  return {
101
- config: DarkFactoryConfigSchema.parse({}),
56
+ config: parseDarkFactoryConfig({}),
102
57
  configPath,
103
58
  isDefault: true,
104
59
  };
@@ -114,14 +69,21 @@ export function loadDarkFactoryConfig(repoRoot) {
114
69
  // Empty file → empty object (yaml parser returns null for a file
115
70
  // containing only comments / whitespace; treat that as the empty config).
116
71
  const candidate = parsed === null || parsed === undefined ? {} : parsed;
117
- const result = DarkFactoryConfigSchema.safeParse(candidate);
118
- if (!result.success) {
119
- const issues = result.error.issues
120
- .map((i) => ` - ${i.path.join(".") || "(root)"}: ${i.message}`)
121
- .join("\n");
122
- throw new Error(`${CONFIG_FILENAME}: schema validation failed:\n${issues}`);
123
- }
124
- return { config: result.data, configPath, isDefault: false };
72
+ try {
73
+ return {
74
+ config: parseDarkFactoryConfig(candidate),
75
+ configPath,
76
+ isDefault: false,
77
+ };
78
+ }
79
+ catch (err) {
80
+ // The canonical parser rejects unknown/malformed keys at EVERY level (the
81
+ // old local zod schema only made the top-level object strict and silently
82
+ // stripped unknown nested keys). Wrap its SchemaError in the loader's
83
+ // stable "schema validation failed" contract — callers and tests match on
84
+ // that prefix — while surfacing the offending path the parser names.
85
+ throw new Error(`${CONFIG_FILENAME}: schema validation failed:\n - ${err instanceof Error ? err.message : String(err)}`);
86
+ }
125
87
  }
126
88
  /**
127
89
  * Parse a git remote URL into `<owner>/<repo>`. Handles both the SSH
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/skills/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/skills/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export { installSkill, listBundledSkills, resolveSkillsRoot, KNOWN_SKILLS, type InstallOptions, type InstallResult, type InstalledFile, type ListedSkill, } from "./install.js";
2
- export { loadDarkFactoryConfig, resolveSkillOverrides, enabledSkillNames, inferGitOriginOwnerRepo, parseGitRemoteOwnerRepo, DarkFactoryConfigSchema, CONFIG_FILENAME, type DarkFactoryConfig, type LoadedDarkFactoryConfig, type ResolveSkillOverridesOptions, } from "./config.js";
2
+ export { loadDarkFactoryConfig, resolveSkillOverrides, enabledSkillNames, inferGitOriginOwnerRepo, parseGitRemoteOwnerRepo, CONFIG_FILENAME, type DarkFactoryConfig, type LoadedDarkFactoryConfig, type ResolveSkillOverridesOptions, } from "./config.js";
3
3
  export { renderTemplateBody, extractReferencedVariables, type SkillManifest, type SkillVariableDef, type RenderResult, type RenderTemplateOptions, type VariableOverride, } from "./template.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,GAClC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,GAClC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC"}
@@ -3,6 +3,6 @@
3
3
  // - `src/mcp/tools/skills-install.ts` (the parallel MCP tool surface)
4
4
  // - `src/index.ts` (the library export for downstream consumers)
5
5
  export { installSkill, listBundledSkills, resolveSkillsRoot, KNOWN_SKILLS, } from "./install.js";
6
- export { loadDarkFactoryConfig, resolveSkillOverrides, enabledSkillNames, inferGitOriginOwnerRepo, parseGitRemoteOwnerRepo, DarkFactoryConfigSchema, CONFIG_FILENAME, } from "./config.js";
6
+ export { loadDarkFactoryConfig, resolveSkillOverrides, enabledSkillNames, inferGitOriginOwnerRepo, parseGitRemoteOwnerRepo, CONFIG_FILENAME, } from "./config.js";
7
7
  export { renderTemplateBody, extractReferencedVariables, } from "./template.js";
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,8DAA8D;AAC9D,wEAAwE;AACxE,mEAAmE;AAEnE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GAKb,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,GAIhB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,0BAA0B,GAM3B,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,8DAA8D;AAC9D,wEAAwE;AACxE,mEAAmE;AAEnE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GAKb,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,GAIhB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,0BAA0B,GAM3B,MAAM,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/skills/install.ts"],"names":[],"mappings":"AA8CA;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,MAAM,CAK9C,CAAC;AAUF,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IACjE,sDAAsD;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7F,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,WAAW;IAC1B,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;CACnC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AA8CD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CA2BpE;AA6FD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CA0HnE"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/skills/install.ts"],"names":[],"mappings":"AA8CA;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,MAAM,CAY9C,CAAC;AAUF,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IACjE,sDAAsD;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7F,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,WAAW;IAC1B,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;CACnC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AA8CD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CA2BpE;AA6FD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CA0HnE"}
@@ -32,6 +32,13 @@ export const KNOWN_SKILLS = [
32
32
  "chief-engineer-blitz",
33
33
  "objectives",
34
34
  "verify",
35
+ // Designer Mode (cycle 27 Phase B) — the operator-facing skill set. Each
36
+ // installs via the same machinery + the darkfactory.yaml `skills` enable
37
+ // map (`df skills install --all` cross-checks names against this list).
38
+ "designer-brief",
39
+ "designer-build",
40
+ "designer-ship",
41
+ "designer-handoff",
35
42
  ];
36
43
  /**
37
44
  * The HTML-comment marker emitted at the top of every rendered file