@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.
- package/dist/adapters/codex-sdk.d.ts +30 -5
- package/dist/adapters/codex-sdk.d.ts.map +1 -1
- package/dist/adapters/codex-sdk.js +50 -15
- package/dist/adapters/codex-sdk.js.map +1 -1
- package/dist/adapters/cursor-sdk.d.ts.map +1 -1
- package/dist/adapters/cursor-sdk.js +14 -2
- package/dist/adapters/cursor-sdk.js.map +1 -1
- package/dist/adapters/index.d.ts +1 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +6 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/mode-scope.d.ts +86 -0
- package/dist/adapters/mode-scope.d.ts.map +1 -0
- package/dist/adapters/mode-scope.js +456 -0
- package/dist/adapters/mode-scope.js.map +1 -0
- package/dist/branch-protection/audit_branch_protection.py +80 -2
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +31 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/mode.d.ts +2 -0
- package/dist/commands/mode.d.ts.map +1 -0
- package/dist/commands/mode.js +235 -0
- package/dist/commands/mode.js.map +1 -0
- package/dist/commands/objectives.d.ts +27 -3
- package/dist/commands/objectives.d.ts.map +1 -1
- package/dist/commands/objectives.js +347 -53
- package/dist/commands/objectives.js.map +1 -1
- package/dist/commands/onboard.d.ts.map +1 -1
- package/dist/commands/onboard.js +3 -1
- package/dist/commands/onboard.js.map +1 -1
- package/dist/cycle-doc-validator/validate_cycle_doc.py +128 -11
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +15 -7
- package/dist/doctor.js.map +1 -1
- package/dist/evidence/index.d.ts +1 -0
- package/dist/evidence/index.d.ts.map +1 -1
- package/dist/evidence/index.js +5 -0
- package/dist/evidence/index.js.map +1 -1
- package/dist/evidence/ui-visual/embed.d.ts +65 -0
- package/dist/evidence/ui-visual/embed.d.ts.map +1 -0
- package/dist/evidence/ui-visual/embed.js +176 -0
- package/dist/evidence/ui-visual/embed.js.map +1 -0
- package/dist/evidence/ui-visual/index.d.ts +2 -0
- package/dist/evidence/ui-visual/index.d.ts.map +1 -0
- package/dist/evidence/ui-visual/index.js +6 -0
- package/dist/evidence/ui-visual/index.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/cycle-doc/parser.d.ts +3 -3
- package/dist/mcp/cycle-doc/parser.d.ts.map +1 -1
- package/dist/mcp/cycle-doc/parser.js +2 -2
- package/dist/mcp/cycle-doc/parser.js.map +1 -1
- package/dist/mcp/tools/doctor.d.ts +5 -0
- package/dist/mcp/tools/doctor.d.ts.map +1 -1
- package/dist/mcp/tools/doctor.js +10 -1
- package/dist/mcp/tools/doctor.js.map +1 -1
- package/dist/mcp/tools/review-bypass.d.ts +5 -0
- package/dist/mcp/tools/review-bypass.d.ts.map +1 -1
- package/dist/mcp/tools/review-bypass.js +9 -1
- package/dist/mcp/tools/review-bypass.js.map +1 -1
- package/dist/mode/apply.d.ts +8 -0
- package/dist/mode/apply.d.ts.map +1 -0
- package/dist/mode/apply.js +118 -0
- package/dist/mode/apply.js.map +1 -0
- package/dist/mode/context.d.ts +50 -0
- package/dist/mode/context.d.ts.map +1 -0
- package/dist/mode/context.js +127 -0
- package/dist/mode/context.js.map +1 -0
- package/dist/mode/critic-registration.d.ts +66 -0
- package/dist/mode/critic-registration.d.ts.map +1 -0
- package/dist/mode/critic-registration.js +279 -0
- package/dist/mode/critic-registration.js.map +1 -0
- package/dist/mode/guard.d.ts +15 -0
- package/dist/mode/guard.d.ts.map +1 -0
- package/dist/mode/guard.js +160 -0
- package/dist/mode/guard.js.map +1 -0
- package/dist/mode/init.d.ts +17 -0
- package/dist/mode/init.d.ts.map +1 -0
- package/dist/mode/init.js +147 -0
- package/dist/mode/init.js.map +1 -0
- package/dist/mode/loadConfig.d.ts +34 -0
- package/dist/mode/loadConfig.d.ts.map +1 -0
- package/dist/mode/loadConfig.js +38 -0
- package/dist/mode/loadConfig.js.map +1 -0
- package/dist/mode/prompts/designer-baseline.md +47 -0
- package/dist/mode/resolve.d.ts +24 -0
- package/dist/mode/resolve.d.ts.map +1 -0
- package/dist/mode/resolve.js +65 -0
- package/dist/mode/resolve.js.map +1 -0
- package/dist/mode/scope-policy.d.ts +41 -0
- package/dist/mode/scope-policy.d.ts.map +1 -0
- package/dist/mode/scope-policy.js +97 -0
- package/dist/mode/scope-policy.js.map +1 -0
- package/dist/mode/status.d.ts +14 -0
- package/dist/mode/status.d.ts.map +1 -0
- package/dist/mode/status.js +13 -0
- package/dist/mode/status.js.map +1 -0
- package/dist/onboard/seeders/design-md.d.ts +3 -0
- package/dist/onboard/seeders/design-md.d.ts.map +1 -0
- package/dist/onboard/seeders/design-md.js +138 -0
- package/dist/onboard/seeders/design-md.js.map +1 -0
- package/dist/onboard/seeders/index.d.ts +8 -0
- package/dist/onboard/seeders/index.d.ts.map +1 -1
- package/dist/onboard/seeders/index.js +3 -0
- package/dist/onboard/seeders/index.js.map +1 -1
- package/dist/onboard/validate.d.ts +36 -1
- package/dist/onboard/validate.d.ts.map +1 -1
- package/dist/onboard/validate.js +136 -42
- package/dist/onboard/validate.js.map +1 -1
- package/dist/skills/config.d.ts +2 -110
- package/dist/skills/config.d.ts.map +1 -1
- package/dist/skills/config.js +20 -58
- package/dist/skills/config.js.map +1 -1
- package/dist/skills/index.d.ts +1 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +1 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/install.d.ts.map +1 -1
- package/dist/skills/install.js +7 -0
- package/dist/skills/install.js.map +1 -1
- package/package.json +3 -3
- package/skills/designer-brief/SKILL.md.tmpl +74 -0
- package/skills/designer-brief/skill.json +17 -0
- package/skills/designer-build/SKILL.md.tmpl +63 -0
- package/skills/designer-build/skill.json +17 -0
- package/skills/designer-handoff/SKILL.md.tmpl +64 -0
- package/skills/designer-handoff/skill.json +17 -0
- package/skills/designer-ship/SKILL.md.tmpl +77 -0
- package/skills/designer-ship/skill.json +17 -0
- package/skills/objectives/SKILL.md.tmpl +34 -6
- package/skills/verify/producer/ui-visual-surfaces.ts +261 -0
- package/skills/verify/producer/ui-visual.config.ts +22 -0
- 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;
|
|
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
|
|
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,
|
|
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"}
|
package/dist/onboard/validate.js
CHANGED
|
@@ -1,51 +1,38 @@
|
|
|
1
1
|
// Cycle 15 Phase C — `checkAgentContextSet()` for `df doctor`.
|
|
2
2
|
//
|
|
3
|
-
// Walks the
|
|
4
|
-
// .claude/settings.json,
|
|
5
|
-
//
|
|
6
|
-
//
|
|
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
|
|
11
|
-
// The guidance-file walk is opt-in: when `guidanceFiles` is
|
|
12
|
-
// a single `agent_context.guidance_not_configured`
|
|
13
|
-
// emitted (passed: true, optional: true) so operators
|
|
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 [
|
|
18
|
-
// point at real files). All current repos must pass `df doctor` after
|
|
19
|
-
// lands."
|
|
20
|
-
import { access,
|
|
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"
|
|
25
|
-
{ key: "agents_md", name: "AGENTS.md", path: "AGENTS.md"
|
|
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 =
|
|
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":"AAAA,+DAA+D;AAC/D,EAAE;AACF
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/onboard/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/skills/config.d.ts
CHANGED
|
@@ -1,114 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type DarkFactoryConfig } from "@momentiq/dark-factory-schemas";
|
|
2
2
|
export declare const CONFIG_FILENAME = "darkfactory.yaml";
|
|
3
|
-
export
|
|
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":"
|
|
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"}
|
package/dist/skills/config.js
CHANGED
|
@@ -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);
|
|
37
|
-
//
|
|
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 {
|
|
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:
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
|
|
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":"AAAA,uDAAuD;AACvD,EAAE;AACF,yEAAyE;AACzE,sEAAsE;AACtE,uEAAuE;AACvE,yEAAyE;AACzE,EAAE;AACF,mEAAmE;AACnE,aAAa;AACb,EAAE;AACF,UAAU;AACV,2CAA2C;AAC3C,oCAAoC;AACpC,qDAAqD;AACrD,UAAU;AACV,sCAAsC;AACtC,yBAAyB;AACzB,0CAA0C;AAC1C,0BAA0B;AAC1B,0BAA0B;AAC1B,YAAY;AACZ,wDAAwD;AACxD,kBAAkB;AAClB,6BAA6B;AAC7B,wBAAwB;AACxB,0CAA0C;AAC1C,sCAAsC;AACtC,kCAAkC;AAClC,YAAY;AACZ,6BAA6B;AAC7B,sBAAsB;AACtB,4BAA4B;AAC5B,sBAAsB;AACtB,EAAE;AACF,yEAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/skills/config.ts"],"names":[],"mappings":"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"}
|
package/dist/skills/index.d.ts
CHANGED
|
@@ -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,
|
|
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,
|
|
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"}
|
package/dist/skills/index.js
CHANGED
|
@@ -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,
|
|
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
|
package/dist/skills/index.js.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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"}
|
package/dist/skills/install.js
CHANGED
|
@@ -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
|