@nac3/forge-cli 0.2.0-alpha.12 → 0.2.0-alpha.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"yf.d.ts","sourceRoot":"","sources":["../../src/bin/yf.ts"],"names":[],"mappings":";AAUA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC,wBAAgB,YAAY,IAAI,OAAO,CA0CtC"}
1
+ {"version":3,"file":"yf.d.ts","sourceRoot":"","sources":["../../src/bin/yf.ts"],"names":[],"mappings":";AAUA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkCpC,wBAAgB,YAAY,IAAI,OAAO,CA6CtC"}
package/dist/bin/yf.js CHANGED
@@ -38,6 +38,9 @@ import { registerLogCommand } from '../commands/log.js';
38
38
  import { registerTriageCommand } from '../commands/triage.js';
39
39
  import { registerDiscoverCommand } from '../commands/discover.js';
40
40
  import { registerLegacyAuditCommand } from '../commands/legacy-audit.js';
41
+ import { registerClarifyCommand } from '../commands/clarify.js';
42
+ import { registerSpecCommand } from '../commands/spec.js';
43
+ import { registerApproveCommand } from '../commands/approve.js';
41
44
  import { VERSION } from '../version.js';
42
45
  export function buildProgram() {
43
46
  const program = new Command();
@@ -78,6 +81,9 @@ export function buildProgram() {
78
81
  registerTriageCommand(program);
79
82
  registerDiscoverCommand(program);
80
83
  registerLegacyAuditCommand(program);
84
+ registerClarifyCommand(program);
85
+ registerSpecCommand(program);
86
+ registerApproveCommand(program);
81
87
  return program;
82
88
  }
83
89
  async function main() {
@@ -1 +1 @@
1
- {"version":3,"file":"yf.js","sourceRoot":"","sources":["../../src/bin/yf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yf.js","sourceRoot":"","sources":["../../src/bin/yf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * `yf approve <doc...>` -- Phase IV step 13 of PRODUCT_WORKFLOW.md.
3
+ *
4
+ * The unbreakable gate. Forge refuses to proceed to Phase V
5
+ * (build) until the user has explicitly approved the 3 spec
6
+ * documents (RFP + arch + design) by their current sha256.
7
+ *
8
+ * Usage:
9
+ * yf approve rfp approve one doc
10
+ * yf approve rfp arch design approve all three (batch)
11
+ * yf approve --list show approval state
12
+ * yf approve --revoke <doc> revoke an approval
13
+ *
14
+ * Approval persists workflow.approvals.<doc> = {
15
+ * approved_at: ISO,
16
+ * version_sha256: sha of the spec file at approval time
17
+ * }
18
+ *
19
+ * If the doc file changes after approval, Forge detects the sha
20
+ * mismatch + treats the approval as stale -- user must re-approve.
21
+ *
22
+ * ASCII-only.
23
+ */
24
+ import type { Command } from 'commander';
25
+ export interface ApproveOptions {
26
+ cwd?: string;
27
+ list?: boolean;
28
+ revoke?: string;
29
+ }
30
+ export declare function runApprove(targets: string[], opts: ApproveOptions): Promise<void>;
31
+ export declare function registerApproveCommand(program: Command): void;
32
+ //# sourceMappingURL=approve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approve.d.ts","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAK,MAAM,CAAC;IAChB,IAAI,CAAC,EAAI,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuGD,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDvF;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAc7D"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * `yf approve <doc...>` -- Phase IV step 13 of PRODUCT_WORKFLOW.md.
3
+ *
4
+ * The unbreakable gate. Forge refuses to proceed to Phase V
5
+ * (build) until the user has explicitly approved the 3 spec
6
+ * documents (RFP + arch + design) by their current sha256.
7
+ *
8
+ * Usage:
9
+ * yf approve rfp approve one doc
10
+ * yf approve rfp arch design approve all three (batch)
11
+ * yf approve --list show approval state
12
+ * yf approve --revoke <doc> revoke an approval
13
+ *
14
+ * Approval persists workflow.approvals.<doc> = {
15
+ * approved_at: ISO,
16
+ * version_sha256: sha of the spec file at approval time
17
+ * }
18
+ *
19
+ * If the doc file changes after approval, Forge detects the sha
20
+ * mismatch + treats the approval as stale -- user must re-approve.
21
+ *
22
+ * ASCII-only.
23
+ */
24
+ import path from 'node:path';
25
+ import { promises as fs } from 'node:fs';
26
+ import { createHash } from 'node:crypto';
27
+ import prompts from 'prompts';
28
+ import { c, header } from '../ui/colors.js';
29
+ import { readWorkflow, patchWorkflowGroup, } from '../workflow/state.js';
30
+ const ALL_DOCS = ['rfp', 'arch', 'design'];
31
+ function sha256(text) {
32
+ return createHash('sha256').update(text, 'utf-8').digest('hex');
33
+ }
34
+ async function listState(projectRoot) {
35
+ const wf = await readWorkflow(projectRoot);
36
+ console.log(c.brand('Approval state:'));
37
+ console.log('');
38
+ for (const k of ALL_DOCS) {
39
+ const spec = wf.specs?.[k];
40
+ const apr = wf.approvals?.[k];
41
+ if (!spec) {
42
+ console.log(' ' + c.dim(k.padEnd(8)) + c.warn(' -- spec not generated yet'));
43
+ continue;
44
+ }
45
+ if (!apr) {
46
+ console.log(' ' + c.brand(k.padEnd(8)) + c.warn(' -- NOT approved (' + spec.doc_path + ', v' + spec.version + ')'));
47
+ continue;
48
+ }
49
+ const stale = apr.version_sha256 !== spec.sha256;
50
+ if (stale) {
51
+ console.log(' ' + c.brand(k.padEnd(8)) + c.warn(' -- STALE (approved sha != current sha, re-approval needed)'));
52
+ }
53
+ else {
54
+ console.log(' ' + c.brand(k.padEnd(8)) + c.success(' -- approved at ' + apr.approved_at));
55
+ }
56
+ }
57
+ console.log('');
58
+ }
59
+ async function approveOne(projectRoot, kind) {
60
+ const wf = await readWorkflow(projectRoot);
61
+ const spec = wf.specs?.[kind];
62
+ if (!spec) {
63
+ console.log(c.error('Spec "' + kind + '" no generado todavia. Corre primero ') + c.code('yf spec ' + kind));
64
+ return false;
65
+ }
66
+ /* Re-read the file to ensure the current sha matches what was
67
+ * stored when the spec ran. If the user edited the file by hand
68
+ * between spec generation and approve, we want them to know. */
69
+ const abs = path.join(projectRoot, spec.doc_path);
70
+ let body;
71
+ try {
72
+ body = await fs.readFile(abs, 'utf-8');
73
+ }
74
+ catch (err) {
75
+ console.log(c.error('No se pudo leer ' + spec.doc_path + ': ' + String(err instanceof Error ? err.message : err)));
76
+ return false;
77
+ }
78
+ const currentSha = sha256(body);
79
+ if (currentSha !== spec.sha256) {
80
+ console.log(c.warn(' ' + kind + ': el archivo cambio desde la generacion.'));
81
+ console.log(c.dim(' Stored sha: ' + spec.sha256.slice(0, 16) + '...'));
82
+ console.log(c.dim(' Current sha: ' + currentSha.slice(0, 16) + '...'));
83
+ const confirm = await prompts({
84
+ type: 'select',
85
+ name: 'choice',
86
+ message: ' Aprobar la version CURRENT (con tus ediciones)?',
87
+ choices: [
88
+ { title: 'Si, aprobar version actual', value: 'yes' },
89
+ { title: 'No, re-generar antes de aprobar', value: 'regenerate' },
90
+ { title: 'Cancelar', value: 'cancel' },
91
+ ],
92
+ });
93
+ if (confirm.choice !== 'yes') {
94
+ if (confirm.choice === 'regenerate') {
95
+ console.log(c.dim(' Corre: ') + c.code('yf spec ' + kind + ' --yes'));
96
+ }
97
+ return false;
98
+ }
99
+ /* Update workflow.specs.<kind>.sha256 to match. */
100
+ await patchWorkflowGroup(projectRoot, 'specs', {
101
+ [kind]: { ...spec, sha256: currentSha, done_at: new Date().toISOString() },
102
+ });
103
+ }
104
+ await patchWorkflowGroup(projectRoot, 'approvals', {
105
+ [kind]: {
106
+ approved_at: new Date().toISOString(),
107
+ version_sha256: currentSha,
108
+ },
109
+ });
110
+ console.log(c.success(' Aprobado: ') + c.brand(kind));
111
+ return true;
112
+ }
113
+ async function revokeOne(projectRoot, kind) {
114
+ const wf = await readWorkflow(projectRoot);
115
+ if (!wf.approvals?.[kind]) {
116
+ console.log(c.warn(kind + ' no estaba aprobado.'));
117
+ return;
118
+ }
119
+ /* Patch with explicit removal -- set to undefined. The
120
+ * patchWorkflowGroup helper preserves siblings; to remove we
121
+ * overwrite the whole approvals object. */
122
+ const next = { ...(wf.approvals ?? {}) };
123
+ delete next[kind];
124
+ await patchWorkflowGroup(projectRoot, 'approvals', next);
125
+ console.log(c.success('Revocado: ') + c.brand(kind));
126
+ }
127
+ export async function runApprove(targets, opts) {
128
+ header('Yujin Forge -- approve');
129
+ console.log('');
130
+ const projectRoot = opts.cwd ? path.resolve(opts.cwd) : process.cwd();
131
+ if (opts.list) {
132
+ await listState(projectRoot);
133
+ return;
134
+ }
135
+ if (opts.revoke) {
136
+ const r = opts.revoke;
137
+ if (!ALL_DOCS.includes(r)) {
138
+ console.log(c.error('Doc invalido: ' + r + '. Valid: ' + ALL_DOCS.join(', ')));
139
+ process.exitCode = 1;
140
+ return;
141
+ }
142
+ await revokeOne(projectRoot, r);
143
+ return;
144
+ }
145
+ if (targets.length === 0) {
146
+ console.log(c.error('Especifica que aprobar: ') + c.code('yf approve rfp arch design'));
147
+ console.log(c.dim('o solo uno: ') + c.code('yf approve rfp'));
148
+ console.log(c.dim('o lista: ') + c.code('yf approve --list'));
149
+ process.exitCode = 1;
150
+ return;
151
+ }
152
+ let allOk = true;
153
+ for (const t of targets) {
154
+ if (!ALL_DOCS.includes(t)) {
155
+ console.log(c.error('Doc invalido: ' + t + '. Valid: ' + ALL_DOCS.join(', ')));
156
+ allOk = false;
157
+ continue;
158
+ }
159
+ const ok = await approveOne(projectRoot, t);
160
+ if (!ok)
161
+ allOk = false;
162
+ }
163
+ console.log('');
164
+ /* Re-check the entire 3-doc set for status. */
165
+ const wf = await readWorkflow(projectRoot);
166
+ const fullApproved = ALL_DOCS.every((k) => {
167
+ const sp = wf.specs?.[k];
168
+ const ap = wf.approvals?.[k];
169
+ return sp && ap && ap.version_sha256 === sp.sha256;
170
+ });
171
+ if (fullApproved) {
172
+ console.log(c.success('Phase IV gate: PASSED. Los 3 docs estan aprobados + sha-locked.'));
173
+ console.log(c.dim('Siguiente paso: ') + c.code('yf bootstrap'));
174
+ }
175
+ else {
176
+ if (allOk) {
177
+ console.log(c.warn('Approbations parciales. Para destrabar Phase V hacen falta los 3 docs aprobados.'));
178
+ console.log(c.dim('Estado: ') + c.code('yf approve --list'));
179
+ }
180
+ }
181
+ }
182
+ export function registerApproveCommand(program) {
183
+ program.command('approve [docs...]')
184
+ .description('Phase IV step 13: explicit approval gate for RFP + arch + design.')
185
+ .option('--cwd <path>', 'project root (default: current directory)')
186
+ .option('--list', 'show approval state for the 3 docs')
187
+ .option('--revoke <doc>', 'revoke approval for a single doc')
188
+ .action(async (docs, opts) => {
189
+ try {
190
+ await runApprove(docs ?? [], opts);
191
+ }
192
+ catch (err) {
193
+ console.error(c.error(err instanceof Error ? err.message : String(err)));
194
+ process.exitCode = 1;
195
+ }
196
+ });
197
+ }
198
+ //# sourceMappingURL=approve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approve.js","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * `yf clarify <round>` -- Phase II of PRODUCT_WORKFLOW.md
3
+ * (steps 4 through 9).
4
+ *
5
+ * Six rounds of structured clarification:
6
+ *
7
+ * functional step 4: user stories, MVP slice, personas
8
+ * quantitative step 5: volumetria, paralelismo, complejidad
9
+ * structural step 6: persistencia, middleware, lifecycle, workers
10
+ * governance step 7: compliance, audit, retention, RBAC, DR
11
+ * operational step 8: i18n, a11y, cost, monitoring, SLA
12
+ * blocks step 9: descompose system + dep graph + MVP path
13
+ *
14
+ * Each round writes a markdown doc to
15
+ * docs/clarification/0X_<round>.md inside the user's project,
16
+ * and a structured summary to workflow.clarification.<round>.
17
+ *
18
+ * The 6 rounds run in order. Forge refuses to run round N+1
19
+ * until round N is complete. Skip is allowed only when triage
20
+ * tier === simple AND the round is not blocks (which everyone
21
+ * needs).
22
+ *
23
+ * ASCII-only.
24
+ */
25
+ import type { Command } from 'commander';
26
+ type Round = 'functional' | 'quantitative' | 'structural' | 'governance' | 'operational' | 'blocks';
27
+ export declare function runClarify(round: Round, cwd?: string): Promise<void>;
28
+ export declare function registerClarifyCommand(program: Command): void;
29
+ export {};
30
+ //# sourceMappingURL=clarify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clarify.d.ts","sourceRoot":"","sources":["../../src/commands/clarify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWzC,KAAK,KAAK,GAAG,YAAY,GAAG,cAAc,GAAG,YAAY,GAC5C,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAC;AAonBrD,wBAAsB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC1E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkB7D"}