@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
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
// Cycle 27 Phase A — `df mode` CLI wrapper.
|
|
2
|
+
//
|
|
3
|
+
// Subcommands:
|
|
4
|
+
// df mode init [name] Seed a `modes.<name>` catalog entry into
|
|
5
|
+
// darkfactory.yaml (default name: designer).
|
|
6
|
+
// Appends — never rewrites the consumer's file.
|
|
7
|
+
// df mode status [--json] Report the active operator mode, resolved from
|
|
8
|
+
// `--mode <name>` / `DF_MODE`. No mode active is
|
|
9
|
+
// the normal engineer path (exit 0).
|
|
10
|
+
//
|
|
11
|
+
// The logic lives in src/mode/ (init.ts / status.ts / resolve.ts); this is
|
|
12
|
+
// the thin argv shim, mirroring commands/skills.ts.
|
|
13
|
+
import { readFileSync } from "node:fs";
|
|
14
|
+
import { initMode } from "../mode/init.js";
|
|
15
|
+
import { applyModeScopeCriticRegistration } from "../mode/critic-registration.js";
|
|
16
|
+
import { modeStatus } from "../mode/status.js";
|
|
17
|
+
import { applyMode } from "../mode/apply.js";
|
|
18
|
+
import { decideGuard } from "../mode/guard.js";
|
|
19
|
+
import { buildModeContext, safeDesignMdPath } from "../mode/context.js";
|
|
20
|
+
async function readStdin() {
|
|
21
|
+
const chunks = [];
|
|
22
|
+
for await (const chunk of process.stdin) {
|
|
23
|
+
chunks.push(Buffer.from(chunk));
|
|
24
|
+
}
|
|
25
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
26
|
+
}
|
|
27
|
+
function parseModeFlags(rest) {
|
|
28
|
+
const flags = {};
|
|
29
|
+
const positional = [];
|
|
30
|
+
for (let i = 0; i < rest.length; i++) {
|
|
31
|
+
const a = rest[i] ?? "";
|
|
32
|
+
if (a.startsWith("--")) {
|
|
33
|
+
const eq = a.indexOf("=");
|
|
34
|
+
if (eq >= 0) {
|
|
35
|
+
flags[a.slice(2, eq)] = a.slice(eq + 1);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const next = rest[i + 1];
|
|
39
|
+
if (next !== undefined && !next.startsWith("--")) {
|
|
40
|
+
flags[a.slice(2)] = next;
|
|
41
|
+
i++;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
flags[a.slice(2)] = true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
positional.push(a);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return { flags, positional };
|
|
53
|
+
}
|
|
54
|
+
const USAGE = [
|
|
55
|
+
"usage:",
|
|
56
|
+
" df mode init [name] Seed a modes.<name> catalog entry into darkfactory.yaml",
|
|
57
|
+
" (default: designer). Appends; never rewrites your file.",
|
|
58
|
+
" df mode status [--json] Report the active operator mode (--mode <name> / DF_MODE).",
|
|
59
|
+
" df mode apply [name] Write the per-user Claude Code overlay into",
|
|
60
|
+
" .claude/settings.local.json (env, hooks, deny belt, MCP).",
|
|
61
|
+
" df mode guard --hook PreToolUse hook binding: reads the hook JSON on stdin,",
|
|
62
|
+
" emits an allow/deny decision per the mode catalog.",
|
|
63
|
+
" df mode context --hook SessionStart hook binding: emits the mode persona +",
|
|
64
|
+
" catalog summary + DESIGN.md as additional context.",
|
|
65
|
+
"",
|
|
66
|
+
"The mode axis is an OPERATOR axis (who is driving the session). It is",
|
|
67
|
+
"independent of the critic-fleet --profile / AGENT_REVIEW_PROFILE axis.",
|
|
68
|
+
].join("\n");
|
|
69
|
+
export async function cmdMode(rest) {
|
|
70
|
+
const { flags, positional } = parseModeFlags(rest);
|
|
71
|
+
const wantsHelp = flags["help"] === true || rest.includes("-h");
|
|
72
|
+
const sub = positional.filter((p) => p !== "-h")[0];
|
|
73
|
+
if (sub === undefined || wantsHelp) {
|
|
74
|
+
process.stdout.write(`${USAGE}\n`);
|
|
75
|
+
return sub === undefined && !wantsHelp ? 1 : 0;
|
|
76
|
+
}
|
|
77
|
+
if (sub === "init") {
|
|
78
|
+
const modeName = positional[1] ?? "designer";
|
|
79
|
+
try {
|
|
80
|
+
const result = initMode(process.cwd(), modeName);
|
|
81
|
+
const lines = [];
|
|
82
|
+
if (result.status === "exists") {
|
|
83
|
+
lines.push(`df mode: "${modeName}" already in the catalog at ${result.configPath} — catalog unchanged.`);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
lines.push(`df mode: seeded modes.${modeName} into ${result.configPath}.`, `df mode: proposed writeScopes (review in the init PR — protectedPaths wins on overlap):`, ...result.writeScopes.map((s) => ` - ${s}`));
|
|
87
|
+
}
|
|
88
|
+
// Register the deterministic ModeScope scope critic so out-of-scope
|
|
89
|
+
// diffs are blocked in local `df review`/`df gate-push` AND CI
|
|
90
|
+
// `agent-critic` (inside the existing required check — no consumer
|
|
91
|
+
// ruleset/workflow changes). Runs on every init (idempotent) so a
|
|
92
|
+
// repo whose catalog predates the critic still gets it wired.
|
|
93
|
+
const reg = applyModeScopeCriticRegistration(process.cwd());
|
|
94
|
+
// A registration `error` (malformed / failed-validation `.agent-review/
|
|
95
|
+
// config.json`) is a HARD failure: the catalog was seeded but the
|
|
96
|
+
// deterministic scope critic is NOT wired, so `Mode:` PRs would merge
|
|
97
|
+
// WITHOUT the scope gate — the exact unsafe state this critic exists to
|
|
98
|
+
// prevent. Exiting 0 there reads as "the mode is guarded" and hides it,
|
|
99
|
+
// so we fail non-zero and suppress the "next" hint. `absent` is NOT an
|
|
100
|
+
// error: it is the specified pre-`df onboard` skip (no config yet), so it
|
|
101
|
+
// stays exit 0 and keeps the next-step (the catalog seed is real work).
|
|
102
|
+
let registrationFailed = false;
|
|
103
|
+
switch (reg.status) {
|
|
104
|
+
case "registered":
|
|
105
|
+
lines.push(`df mode: registered the ModeScope scope critic in ${reg.configPath}:`);
|
|
106
|
+
lines.push(...reg.changes.map((c) => ` - ${c}`));
|
|
107
|
+
break;
|
|
108
|
+
case "already-registered":
|
|
109
|
+
lines.push(`df mode: ModeScope scope critic already registered in ${reg.configPath} — unchanged.`);
|
|
110
|
+
break;
|
|
111
|
+
case "absent":
|
|
112
|
+
lines.push(`df mode: NOTE ${reg.configPath} not found — run \`df onboard\` first, then re-run ` +
|
|
113
|
+
`\`df mode init ${modeName}\` to wire the scope critic (idempotent).`);
|
|
114
|
+
break;
|
|
115
|
+
case "error":
|
|
116
|
+
registrationFailed = true;
|
|
117
|
+
lines.push(`df mode: ERROR could not register the ModeScope scope critic in ${reg.configPath}: ${reg.error}. ` +
|
|
118
|
+
`The catalog was seeded but the scope gate is NOT wired — \`Mode:\` PRs would skip it. ` +
|
|
119
|
+
`Fix ${reg.configPath} and re-run \`df mode init ${modeName}\` (idempotent).`);
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
if (registrationFailed) {
|
|
123
|
+
// Fail loud on stderr with a non-zero exit — do NOT print the "next"
|
|
124
|
+
// hint, which would imply the mode is ready to commit and guarded.
|
|
125
|
+
process.stderr.write(`${lines.join("\n")}\n`);
|
|
126
|
+
return 1;
|
|
127
|
+
}
|
|
128
|
+
lines.push(`df mode: next: commit darkfactory.yaml + .agent-review/config.json, then run \`df doctor\`.`);
|
|
129
|
+
process.stdout.write(`${lines.join("\n")}\n`);
|
|
130
|
+
return 0;
|
|
131
|
+
}
|
|
132
|
+
catch (e) {
|
|
133
|
+
process.stderr.write(`df mode init failed: ${e instanceof Error ? e.message : String(e)}\n`);
|
|
134
|
+
return 1;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (sub === "status") {
|
|
138
|
+
try {
|
|
139
|
+
const status = modeStatus(process.cwd(), { mode: flags["mode"] }, { DF_MODE: process.env["DF_MODE"] });
|
|
140
|
+
if (flags["json"] === true) {
|
|
141
|
+
process.stdout.write(`${JSON.stringify(status, null, 2)}\n`);
|
|
142
|
+
return 0;
|
|
143
|
+
}
|
|
144
|
+
if (!status.active) {
|
|
145
|
+
process.stdout.write("df mode: no operator mode active (normal engineer session). " +
|
|
146
|
+
"Activate with --mode <name> or DF_MODE=<name>.\n");
|
|
147
|
+
return 0;
|
|
148
|
+
}
|
|
149
|
+
const scopes = status.mode.writeScopes ?? [];
|
|
150
|
+
process.stdout.write([
|
|
151
|
+
`df mode: ACTIVE — ${status.modeName}`,
|
|
152
|
+
` writeScopes: ${scopes.length > 0 ? scopes.join(", ") : "(none configured)"}`,
|
|
153
|
+
` protectedPaths: ${(status.mode.protectedPaths ?? []).join(", ") || "(none)"}`,
|
|
154
|
+
` dependencyPolicy: ${status.mode.dependencyPolicy ?? "(unset)"}`,
|
|
155
|
+
` visual evidence: ${status.mode.evidence?.visual ?? "(unset)"}`,
|
|
156
|
+
].join("\n") + "\n");
|
|
157
|
+
return 0;
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
process.stderr.write(`df mode status failed: ${e instanceof Error ? e.message : String(e)}\n`);
|
|
161
|
+
return 1;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (sub === "apply") {
|
|
165
|
+
const modeName = positional[1] ?? "designer";
|
|
166
|
+
try {
|
|
167
|
+
const result = applyMode(process.cwd(), modeName);
|
|
168
|
+
process.stdout.write([
|
|
169
|
+
`df mode: ${result.created ? "created" : "updated"} ${result.settingsPath} for mode "${result.modeName}".`,
|
|
170
|
+
`df mode: next: open Claude Code in this repo — the session starts in ${result.modeName} mode.`,
|
|
171
|
+
].join("\n") + "\n");
|
|
172
|
+
return 0;
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
process.stderr.write(`df mode apply failed: ${e instanceof Error ? e.message : String(e)}\n`);
|
|
176
|
+
return 1;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (sub === "guard" && flags["hook"] === true) {
|
|
180
|
+
// PreToolUse binding. JSON out on stdout, always exit 0 — the decision
|
|
181
|
+
// payload carries allow/deny; a crashed guard must not wedge the session.
|
|
182
|
+
let decision;
|
|
183
|
+
try {
|
|
184
|
+
const stdin = await readStdin();
|
|
185
|
+
let hookInput = null;
|
|
186
|
+
try {
|
|
187
|
+
hookInput = JSON.parse(stdin);
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
hookInput = null; // decideGuard fail-closes when a mode is active
|
|
191
|
+
}
|
|
192
|
+
const status = modeStatus(process.cwd(), {}, { DF_MODE: process.env["DF_MODE"] });
|
|
193
|
+
decision = decideGuard(hookInput, status.active ? { modeName: status.modeName, mode: status.mode } : undefined);
|
|
194
|
+
}
|
|
195
|
+
catch (e) {
|
|
196
|
+
// Catalog unresolvable while DF_MODE set (unknown mode, broken yaml):
|
|
197
|
+
// fail CLOSED — an unenforceable mode must not silently allow.
|
|
198
|
+
decision = {
|
|
199
|
+
decision: "deny",
|
|
200
|
+
plain: "To be safe, the mode guard blocked this action — the mode setup couldn't be read.",
|
|
201
|
+
hint: `guard could not resolve the active mode (${e instanceof Error ? e.message : String(e)}) — fix darkfactory.yaml/DF_MODE or unset DF_MODE`,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
const payload = decision.decision === "allow"
|
|
205
|
+
? { hookEventName: "PreToolUse", permissionDecision: "allow" }
|
|
206
|
+
: {
|
|
207
|
+
hookEventName: "PreToolUse",
|
|
208
|
+
permissionDecision: "deny",
|
|
209
|
+
permissionDecisionReason: `${decision.plain} [agent: ${decision.hint}]`,
|
|
210
|
+
};
|
|
211
|
+
process.stdout.write(`${JSON.stringify({ hookSpecificOutput: payload })}\n`);
|
|
212
|
+
return 0;
|
|
213
|
+
}
|
|
214
|
+
if (sub === "context" && flags["hook"] === true) {
|
|
215
|
+
try {
|
|
216
|
+
const status = modeStatus(process.cwd(), {}, { DF_MODE: process.env["DF_MODE"] });
|
|
217
|
+
if (!status.active)
|
|
218
|
+
return 0; // no mode → no context injection
|
|
219
|
+
// null covers missing, non-relative, traversal, and symlink-escape —
|
|
220
|
+
// all narrated as "unseeded" by buildModeContext (fail-safe silence).
|
|
221
|
+
const designMdPath = safeDesignMdPath(process.cwd(), status.mode.designSystem?.designMd ?? "DESIGN.md");
|
|
222
|
+
const designMd = designMdPath !== null ? readFileSync(designMdPath, "utf8") : undefined;
|
|
223
|
+
const additionalContext = buildModeContext({ modeName: status.modeName, mode: status.mode }, designMd);
|
|
224
|
+
process.stdout.write(`${JSON.stringify({ hookSpecificOutput: { hookEventName: "SessionStart", additionalContext } })}\n`);
|
|
225
|
+
return 0;
|
|
226
|
+
}
|
|
227
|
+
catch (e) {
|
|
228
|
+
process.stderr.write(`df mode context failed: ${e instanceof Error ? e.message : String(e)}\n`);
|
|
229
|
+
return 1;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
process.stderr.write(`df mode: unknown subcommand "${sub}".\n${USAGE}\n`);
|
|
233
|
+
return 1;
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode.js","sourceRoot":"","sources":["../../src/commands/mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,16 @@ interface HashOptions {
|
|
|
10
10
|
subcommand: "hash";
|
|
11
11
|
text: string;
|
|
12
12
|
}
|
|
13
|
+
type DeriveSource = {
|
|
14
|
+
kind: "cycle";
|
|
15
|
+
cycle: string;
|
|
16
|
+
} | {
|
|
17
|
+
kind: "brief";
|
|
18
|
+
briefPath: string;
|
|
19
|
+
};
|
|
13
20
|
interface DeriveOptions {
|
|
14
21
|
subcommand: "derive";
|
|
15
|
-
|
|
22
|
+
source: DeriveSource;
|
|
16
23
|
apply: boolean;
|
|
17
24
|
json: boolean;
|
|
18
25
|
cwd: string;
|
|
@@ -30,11 +37,19 @@ export declare function parseObjectivesArgs(rest: string[]): ParsedOptions | {
|
|
|
30
37
|
error: string;
|
|
31
38
|
};
|
|
32
39
|
export interface ExtractedCriterion {
|
|
33
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Criterion id — the locator suffix. `ec<k>` for a cycle-doc exit criterion,
|
|
42
|
+
* `ac<k>` for a brief Done-when checkbox.
|
|
43
|
+
*/
|
|
34
44
|
id: string;
|
|
35
45
|
/** Human-facing display text (label + emphasis stripped). */
|
|
36
46
|
text: string;
|
|
37
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* The canonical hash input for this criterion — the exact string fed to
|
|
49
|
+
* `canonicalizeCriterion`. For an exit-criteria item this is the verbatim
|
|
50
|
+
* source line; for a brief Done-when checkbox it is the criterion text with
|
|
51
|
+
* the `[ ]`/`[x]` marker stripped, so toggling the box never moves the hash.
|
|
52
|
+
*/
|
|
38
53
|
raw: string;
|
|
39
54
|
/**
|
|
40
55
|
* Non-blank, NON-marker lines that follow this item's `raw` line before the
|
|
@@ -61,6 +76,15 @@ export interface ExtractedCriterion {
|
|
|
61
76
|
* criteria — see `continuationLines`.
|
|
62
77
|
*/
|
|
63
78
|
export declare function extractExitCriteria(sectionBody: string): ExtractedCriterion[];
|
|
79
|
+
/**
|
|
80
|
+
* Enumerate a brief `## Done-when` section body's checkboxes into criteria,
|
|
81
|
+
* assigning each a positional `ac<k>` id. Mirrors `extractExitCriteria`'s
|
|
82
|
+
* continuation-line collection so the single-line-atomic-criterion guard applies
|
|
83
|
+
* to briefs too. `raw` is the checkbox-stripped criterion text (the canonical
|
|
84
|
+
* hash input); NON-checkbox list items and prose in the section are ignored (one
|
|
85
|
+
* objective per Done-when checkbox).
|
|
86
|
+
*/
|
|
87
|
+
export declare function extractBriefCriteria(sectionBody: string): ExtractedCriterion[];
|
|
64
88
|
export declare function cmdObjectives(rest: string[], io: ObjectivesIo, deps?: ObjectivesDeps): Promise<number>;
|
|
65
89
|
export {};
|
|
66
90
|
//# sourceMappingURL=objectives.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectives.d.ts","sourceRoot":"","sources":["../../src/commands/objectives.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"objectives.d.ts","sourceRoot":"","sources":["../../src/commands/objectives.ts"],"names":[],"mappings":"AAuBA,OAAO,EACL,YAAY,EAIb,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAMD,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;CACpC;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,KAAK,YAAY,GACb;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,UAAU,aAAa;IACrB,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,aAAa;IACrB,UAAU,EAAE,SAAS,CAAC;CACvB;AAED,KAAK,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,CAAC;AAEhF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAqBrF;AA2ND,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;;;;;;OAYG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA4B7E;AAkDD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA2B9E;AAoED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,EAAE,YAAY,EAChB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
|