@nac3/forge-cli 0.2.0-alpha.1 → 0.2.0-alpha.11
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/bin/yf.d.ts.map +1 -1
- package/dist/bin/yf.js +9 -0
- package/dist/bin/yf.js.map +1 -1
- package/dist/chat/claude.d.ts +12 -15
- package/dist/chat/claude.d.ts.map +1 -1
- package/dist/chat/claude.js +60 -20
- package/dist/chat/claude.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +90 -3
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/server.js +451 -32
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/audit_consumers.d.ts +66 -0
- package/dist/chat/tools/audit_consumers.d.ts.map +1 -0
- package/dist/chat/tools/audit_consumers.js +231 -0
- package/dist/chat/tools/audit_consumers.js.map +1 -0
- package/dist/chat/tools/git.js +4 -4
- package/dist/chat/tools/github.js +3 -3
- package/dist/chat/tools/lifecycle.js +3 -3
- package/dist/chat/tools/manual.js +1 -1
- package/dist/chat/tools/reader.js +8 -8
- package/dist/chat/tools.d.ts.map +1 -1
- package/dist/chat/tools.js +11 -4
- package/dist/chat/tools.js.map +1 -1
- package/dist/commands/chat.d.ts +3 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +46 -1
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/discover.d.ts +30 -0
- package/dist/commands/discover.d.ts.map +1 -0
- package/dist/commands/discover.js +178 -0
- package/dist/commands/discover.js.map +1 -0
- package/dist/commands/doctor.js +94 -42
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/keys_setup.d.ts +53 -0
- package/dist/commands/keys_setup.d.ts.map +1 -0
- package/dist/commands/keys_setup.js +487 -0
- package/dist/commands/keys_setup.js.map +1 -0
- package/dist/commands/triage.d.ts +34 -0
- package/dist/commands/triage.d.ts.map +1 -0
- package/dist/commands/triage.js +228 -0
- package/dist/commands/triage.js.map +1 -0
- package/dist/commands/voice.d.ts.map +1 -1
- package/dist/commands/voice.js +3 -0
- package/dist/commands/voice.js.map +1 -1
- package/dist/commands/voice_setup.d.ts +37 -0
- package/dist/commands/voice_setup.d.ts.map +1 -0
- package/dist/commands/voice_setup.js +308 -0
- package/dist/commands/voice_setup.js.map +1 -0
- package/dist/core/keys_envelope.d.ts +54 -0
- package/dist/core/keys_envelope.d.ts.map +1 -0
- package/dist/core/keys_envelope.js +135 -0
- package/dist/core/keys_envelope.js.map +1 -0
- package/dist/license/hito4_client.d.ts +17 -1
- package/dist/license/hito4_client.d.ts.map +1 -1
- package/dist/license/hito4_client.js +71 -10
- package/dist/license/hito4_client.js.map +1 -1
- package/dist/license/index.d.ts.map +1 -1
- package/dist/license/index.js +7 -0
- package/dist/license/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/voice/intents.d.ts +1 -1
- package/dist/voice/intents.js +0 -0
- package/dist/voice/providers/google.d.ts.map +1 -1
- package/dist/voice/providers/google.js +129 -23
- package/dist/voice/providers/google.js.map +1 -1
- package/dist/workflow/state.d.ts +190 -0
- package/dist/workflow/state.d.ts.map +1 -0
- package/dist/workflow/state.js +119 -0
- package/dist/workflow/state.js.map +1 -0
- package/package.json +3 -3
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
*
|
|
21
21
|
* ASCII-only.
|
|
22
22
|
*/
|
|
23
|
+
import path from 'node:path';
|
|
24
|
+
import { promises as fs } from 'node:fs';
|
|
23
25
|
import { Vault } from '../../vault/store.js';
|
|
24
26
|
import { configDir } from '../../license/index.js';
|
|
25
27
|
const STT_ENDPOINT = 'https://speech.googleapis.com/v1/speech:recognize';
|
|
@@ -27,6 +29,60 @@ const TTS_ENDPOINT = 'https://texttospeech.googleapis.com/v1/text:synthesize';
|
|
|
27
29
|
const DEFAULT_STT_LANGUAGE = 'en-US';
|
|
28
30
|
const DEFAULT_TTS_LANGUAGE = 'en-US';
|
|
29
31
|
const DEFAULT_TTS_VOICE = 'en-US-Neural2-C';
|
|
32
|
+
/** Per-locale voice persona for Google Cloud TTS Neural2 voices.
|
|
33
|
+
* Selected to sound native to the locale + warm + neutral
|
|
34
|
+
* gender where possible. Keys are lowercased; we lookup with
|
|
35
|
+
* region first (es-ar) then language alone (es) as fallback. */
|
|
36
|
+
const LOCALE_TO_VOICE = {
|
|
37
|
+
/* Spanish family. ES-AR uses the rioplatense (Spain Neural2-A
|
|
38
|
+
sounds neutral enough; Argentina-specific voices are limited).
|
|
39
|
+
Mexican Latin Spanish prefers Wavenet-A. */
|
|
40
|
+
'es': 'es-ES-Neural2-A',
|
|
41
|
+
'es-ar': 'es-US-Neural2-A',
|
|
42
|
+
'es-es': 'es-ES-Neural2-A',
|
|
43
|
+
'es-mx': 'es-US-Neural2-A',
|
|
44
|
+
'es-us': 'es-US-Neural2-A',
|
|
45
|
+
/* English. en-US-Neural2-C is warm + neutral. */
|
|
46
|
+
'en': 'en-US-Neural2-C',
|
|
47
|
+
'en-us': 'en-US-Neural2-C',
|
|
48
|
+
'en-gb': 'en-GB-Neural2-A',
|
|
49
|
+
/* Portuguese. */
|
|
50
|
+
'pt': 'pt-BR-Neural2-A',
|
|
51
|
+
'pt-br': 'pt-BR-Neural2-A',
|
|
52
|
+
'pt-pt': 'pt-PT-Wavenet-A',
|
|
53
|
+
/* French. */
|
|
54
|
+
'fr': 'fr-FR-Neural2-A',
|
|
55
|
+
'fr-fr': 'fr-FR-Neural2-A',
|
|
56
|
+
'fr-ca': 'fr-CA-Neural1-A',
|
|
57
|
+
/* Italian. */
|
|
58
|
+
'it': 'it-IT-Neural2-A',
|
|
59
|
+
'it-it': 'it-IT-Neural2-A',
|
|
60
|
+
/* German. */
|
|
61
|
+
'de': 'de-DE-Neural2-A',
|
|
62
|
+
'de-de': 'de-DE-Neural2-A',
|
|
63
|
+
/* Japanese. */
|
|
64
|
+
'ja': 'ja-JP-Neural2-B',
|
|
65
|
+
'ja-jp': 'ja-JP-Neural2-B',
|
|
66
|
+
/* Mandarin Chinese. */
|
|
67
|
+
'zh': 'cmn-CN-Wavenet-A',
|
|
68
|
+
'zh-cn': 'cmn-CN-Wavenet-A',
|
|
69
|
+
'zh-tw': 'cmn-TW-Wavenet-A',
|
|
70
|
+
/* Hindi. */
|
|
71
|
+
'hi': 'hi-IN-Neural2-A',
|
|
72
|
+
'hi-in': 'hi-IN-Neural2-A',
|
|
73
|
+
/* Arabic. */
|
|
74
|
+
'ar': 'ar-XA-Wavenet-A',
|
|
75
|
+
'ar-xa': 'ar-XA-Wavenet-A',
|
|
76
|
+
};
|
|
77
|
+
function voiceForLocale(key) {
|
|
78
|
+
if (LOCALE_TO_VOICE[key])
|
|
79
|
+
return LOCALE_TO_VOICE[key];
|
|
80
|
+
/* Strip region: es-ar -> es. */
|
|
81
|
+
const base = key.split('-')[0];
|
|
82
|
+
if (base && LOCALE_TO_VOICE[base])
|
|
83
|
+
return LOCALE_TO_VOICE[base];
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
30
86
|
const DEFAULT_TTS_FORMAT = 'mp3';
|
|
31
87
|
const VAULT_SLOT = 'google_voice';
|
|
32
88
|
/** Map our SttAudioFormat to Google's encoding enum. */
|
|
@@ -51,13 +107,66 @@ function ttsFormatToGoogleEncoding(format) {
|
|
|
51
107
|
default: return 'MP3';
|
|
52
108
|
}
|
|
53
109
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
110
|
+
/** Read the per-use-case key from provider_keys.json (alpha.4+
|
|
111
|
+
* canonical BYOK path written by `yf keys setup`). STT prefers
|
|
112
|
+
* google_stt_key; TTS prefers google_tts_key; if neither is
|
|
113
|
+
* set but the other one is, we fall back to the cross-set key
|
|
114
|
+
* (STT keys typically work for TTS and vice versa on Google
|
|
115
|
+
* Cloud projects with both APIs enabled). */
|
|
116
|
+
async function readProviderKey(useCase) {
|
|
117
|
+
try {
|
|
118
|
+
const p = path.join(configDir(), 'provider_keys.json');
|
|
119
|
+
const raw = await fs.readFile(p, 'utf-8');
|
|
120
|
+
const parsed = JSON.parse(raw);
|
|
121
|
+
const stt = typeof parsed.google_stt_key === 'string' ? parsed.google_stt_key.trim() : '';
|
|
122
|
+
const tts = typeof parsed.google_tts_key === 'string' ? parsed.google_tts_key.trim() : '';
|
|
123
|
+
const primary = useCase === 'stt' ? stt : tts;
|
|
124
|
+
const fallback = useCase === 'stt' ? tts : stt;
|
|
125
|
+
if (primary !== '')
|
|
126
|
+
return primary;
|
|
127
|
+
if (fallback !== '')
|
|
128
|
+
return fallback;
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
if (err.code !== 'ENOENT'
|
|
133
|
+
&& !(err instanceof SyntaxError)) {
|
|
134
|
+
/* swallow real IO errors -- caller falls back to vault */
|
|
135
|
+
}
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
async function readKey(opener, useCase) {
|
|
140
|
+
/* 1. BYOK provider_keys.json -- canonical alpha.4+ path. */
|
|
141
|
+
const fromBYOK = await readProviderKey(useCase);
|
|
142
|
+
if (fromBYOK)
|
|
143
|
+
return fromBYOK;
|
|
144
|
+
/* 2. Vault slot google_voice -- legacy / shared path. */
|
|
145
|
+
try {
|
|
146
|
+
const vault = await opener();
|
|
147
|
+
if (vault.has(VAULT_SLOT)) {
|
|
148
|
+
return vault.get(VAULT_SLOT);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch { /* vault unavailable -- fall through to the throw */ }
|
|
152
|
+
const slotName = useCase === 'stt' ? 'google_stt_key' : 'google_tts_key';
|
|
153
|
+
throw new Error('google voice: no key found. Configure either:\n'
|
|
154
|
+
+ ' - `yf keys setup` (writes ' + slotName + ' to provider_keys.json) (recommended)\n'
|
|
155
|
+
+ ' - `yf vault set ' + VAULT_SLOT + ' <your Google Cloud API key>` (legacy)');
|
|
156
|
+
}
|
|
157
|
+
/** Cheap "are we configured?" check used by readyToRun. Mirrors
|
|
158
|
+
* the resolution order in readKey + returns boolean instead of
|
|
159
|
+
* throwing. */
|
|
160
|
+
async function hasKey(opener, useCase) {
|
|
161
|
+
if ((await readProviderKey(useCase)) !== null)
|
|
162
|
+
return true;
|
|
163
|
+
try {
|
|
164
|
+
const vault = await opener();
|
|
165
|
+
return vault.has(VAULT_SLOT);
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return false;
|
|
59
169
|
}
|
|
60
|
-
return vault.get(VAULT_SLOT);
|
|
61
170
|
}
|
|
62
171
|
async function safeText(r) {
|
|
63
172
|
try {
|
|
@@ -79,13 +188,7 @@ export class GoogleSttProvider {
|
|
|
79
188
|
this.vaultOpener = opts.vaultOpener ?? (() => Vault.open({ configDir: configDir() }));
|
|
80
189
|
}
|
|
81
190
|
async readyToRun() {
|
|
82
|
-
|
|
83
|
-
const vault = await this.vaultOpener();
|
|
84
|
-
return vault.has(VAULT_SLOT);
|
|
85
|
-
}
|
|
86
|
-
catch {
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
191
|
+
return hasKey(this.vaultOpener, 'stt');
|
|
89
192
|
}
|
|
90
193
|
async transcribe(req) {
|
|
91
194
|
if (!req.audio || req.audio.length === 0) {
|
|
@@ -93,7 +196,7 @@ export class GoogleSttProvider {
|
|
|
93
196
|
}
|
|
94
197
|
let apiKey;
|
|
95
198
|
try {
|
|
96
|
-
apiKey = await readKey(this.vaultOpener);
|
|
199
|
+
apiKey = await readKey(this.vaultOpener, 'stt');
|
|
97
200
|
}
|
|
98
201
|
catch (err) {
|
|
99
202
|
throw err;
|
|
@@ -165,20 +268,23 @@ export class GoogleTtsProvider {
|
|
|
165
268
|
this.vaultOpener = opts.vaultOpener ?? (() => Vault.open({ configDir: configDir() }));
|
|
166
269
|
}
|
|
167
270
|
async readyToRun() {
|
|
168
|
-
|
|
169
|
-
const vault = await this.vaultOpener();
|
|
170
|
-
return vault.has(VAULT_SLOT);
|
|
171
|
-
}
|
|
172
|
-
catch {
|
|
173
|
-
return false;
|
|
174
|
-
}
|
|
271
|
+
return hasKey(this.vaultOpener, 'tts');
|
|
175
272
|
}
|
|
176
273
|
async synthesize(req) {
|
|
177
274
|
if (!req.text || req.text.trim() === '') {
|
|
178
275
|
throw new Error('google TTS: text is empty');
|
|
179
276
|
}
|
|
180
|
-
const apiKey = await readKey(this.vaultOpener);
|
|
181
|
-
|
|
277
|
+
const apiKey = await readKey(this.vaultOpener, 'tts');
|
|
278
|
+
/* Voice persona resolution. Priority:
|
|
279
|
+
* 1. explicit req.voice (caller overrides)
|
|
280
|
+
* 2. mapped from req.language via LOCALE_TO_VOICE
|
|
281
|
+
* 3. DEFAULT_TTS_VOICE (en-US-Neural2-C)
|
|
282
|
+
* This makes the bot sound natural per language without
|
|
283
|
+
* the caller having to know Google's voice catalog. */
|
|
284
|
+
const langKey = (req.language || '').toLowerCase();
|
|
285
|
+
const voice = req.voice
|
|
286
|
+
?? (langKey ? voiceForLocale(langKey) : undefined)
|
|
287
|
+
?? DEFAULT_TTS_VOICE;
|
|
182
288
|
const language = req.language ?? this.inferLanguageFromVoice(voice) ?? DEFAULT_TTS_LANGUAGE;
|
|
183
289
|
const format = req.format ?? DEFAULT_TTS_FORMAT;
|
|
184
290
|
const encoding = ttsFormatToGoogleEncoding(format);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/voice/providers/google.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/voice/providers/google.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Yujin Forge -- Product Workflow state.
|
|
3
|
+
*
|
|
4
|
+
* Shared persistence layer for the 18-step methodology defined
|
|
5
|
+
* in docs/PRODUCT_WORKFLOW.md. State lives in the project's
|
|
6
|
+
* yujin.forge.json under `workflow.*` so it survives across
|
|
7
|
+
* sessions + can be inspected + shared via the git repo.
|
|
8
|
+
*
|
|
9
|
+
* Every command in the workflow (yf triage, yf discover, yf
|
|
10
|
+
* clarify, yf spec, yf approve, yf bootstrap, yf block dev, yf
|
|
11
|
+
* deploy, yf manual, yf metrics, yf iterate) reads + writes
|
|
12
|
+
* through this module. The chat tool surface (forge_triage,
|
|
13
|
+
* forge_discover, etc) does the same -- the underlying state
|
|
14
|
+
* is identical regardless of entry point.
|
|
15
|
+
*
|
|
16
|
+
* Schema:
|
|
17
|
+
*
|
|
18
|
+
* workflow: {
|
|
19
|
+
* tier: 'simple' | 'medium' | 'full' | null,
|
|
20
|
+
* tier_reason: string,
|
|
21
|
+
* tier_decided_at: ISO,
|
|
22
|
+
*
|
|
23
|
+
* intent: { ... } // Phase I step 3
|
|
24
|
+
* legacy_audit: { ... } // Phase I step 3.5
|
|
25
|
+
* vault_inventory: { ... } // Phase I step 2 audit
|
|
26
|
+
*
|
|
27
|
+
* clarification: {
|
|
28
|
+
* functional: { done_at, summary, doc_path }, // step 4
|
|
29
|
+
* nfr_quantitative: { done_at, summary, doc_path }, // step 5
|
|
30
|
+
* nfr_structural: { done_at, summary, doc_path }, // step 6
|
|
31
|
+
* nfr_governance: { done_at, summary, doc_path }, // step 7
|
|
32
|
+
* nfr_operational: { done_at, summary, doc_path }, // step 8
|
|
33
|
+
* blocks: { done_at, blocks: [...] }, // step 9
|
|
34
|
+
* },
|
|
35
|
+
*
|
|
36
|
+
* specs: {
|
|
37
|
+
* rfp: { done_at, version, doc_path, sha256 }, // step 10
|
|
38
|
+
* arch: { done_at, version, doc_path, sha256 }, // step 11
|
|
39
|
+
* design: { done_at, version, doc_path, sha256 }, // step 12
|
|
40
|
+
* },
|
|
41
|
+
*
|
|
42
|
+
* approvals: {
|
|
43
|
+
* rfp: { approved_at, version_sha256 }, // step 13
|
|
44
|
+
* arch: { approved_at, version_sha256 }, // step 13
|
|
45
|
+
* design: { approved_at, version_sha256 }, // step 13
|
|
46
|
+
* },
|
|
47
|
+
*
|
|
48
|
+
* bootstrap: { done_at, stack, ci_set }, // step 14
|
|
49
|
+
*
|
|
50
|
+
* blocks_progress: [ // step 15
|
|
51
|
+
* { block_id, status, tests_green_at, deployed_at }
|
|
52
|
+
* ],
|
|
53
|
+
*
|
|
54
|
+
* deploy: { ... } // step 16
|
|
55
|
+
* postlaunch:{ ... } // step 17
|
|
56
|
+
* iterations:[{ at, type, summary }] // step 18
|
|
57
|
+
* }
|
|
58
|
+
*
|
|
59
|
+
* ASCII-only.
|
|
60
|
+
*/
|
|
61
|
+
export type WorkflowTier = 'simple' | 'medium' | 'full';
|
|
62
|
+
export interface IntentState {
|
|
63
|
+
operation: 'migrate' | 'new' | 'modify' | null;
|
|
64
|
+
target: 'desktop' | 'mobile' | 'responsive' | 'web-and-mobile' | null;
|
|
65
|
+
input_channel: 'chat-text' | 'voice' | 'document-paste' | null;
|
|
66
|
+
project_state: 'no-code' | 'local-repo' | 'remote-repo' | 'deployed' | null;
|
|
67
|
+
legacy_framework: string | null;
|
|
68
|
+
preferred_stack: string | null;
|
|
69
|
+
use_case: 'hobby' | 'poc' | 'internal' | 'commercial' | null;
|
|
70
|
+
decided_at: string;
|
|
71
|
+
}
|
|
72
|
+
export interface LegacyAuditState {
|
|
73
|
+
ran_at: string;
|
|
74
|
+
framework: string;
|
|
75
|
+
framework_version: string;
|
|
76
|
+
total_files: number;
|
|
77
|
+
tsx_files: number;
|
|
78
|
+
has_tests: boolean;
|
|
79
|
+
nac3_readiness: number;
|
|
80
|
+
tech_debt_signals: string[];
|
|
81
|
+
deprecated_deps: string[];
|
|
82
|
+
}
|
|
83
|
+
export interface VaultInventoryState {
|
|
84
|
+
ran_at: string;
|
|
85
|
+
/** Per family: configured | skipped | unknown.
|
|
86
|
+
* Skipped families are flagged as debt for step 16 (deploy). */
|
|
87
|
+
families: Record<string, 'configured' | 'skipped' | 'unknown'>;
|
|
88
|
+
}
|
|
89
|
+
export interface ClarificationRoundState {
|
|
90
|
+
done_at: string;
|
|
91
|
+
summary: string;
|
|
92
|
+
doc_path?: string;
|
|
93
|
+
}
|
|
94
|
+
export interface BlockPlanItem {
|
|
95
|
+
id: string;
|
|
96
|
+
name: string;
|
|
97
|
+
effort: 'S' | 'M' | 'L' | 'XL';
|
|
98
|
+
dependencies: string[];
|
|
99
|
+
mvp: boolean;
|
|
100
|
+
}
|
|
101
|
+
export interface ClarificationState {
|
|
102
|
+
functional?: ClarificationRoundState;
|
|
103
|
+
nfr_quantitative?: ClarificationRoundState;
|
|
104
|
+
nfr_structural?: ClarificationRoundState;
|
|
105
|
+
nfr_governance?: ClarificationRoundState;
|
|
106
|
+
nfr_operational?: ClarificationRoundState;
|
|
107
|
+
blocks?: {
|
|
108
|
+
done_at: string;
|
|
109
|
+
blocks: BlockPlanItem[];
|
|
110
|
+
mvp_path: string[];
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
export interface SpecDocState {
|
|
114
|
+
done_at: string;
|
|
115
|
+
version: number;
|
|
116
|
+
doc_path: string;
|
|
117
|
+
sha256: string;
|
|
118
|
+
}
|
|
119
|
+
export interface ApprovalState {
|
|
120
|
+
approved_at: string;
|
|
121
|
+
version_sha256: string;
|
|
122
|
+
}
|
|
123
|
+
export interface BootstrapState {
|
|
124
|
+
done_at: string;
|
|
125
|
+
stack: string;
|
|
126
|
+
ci_set: boolean;
|
|
127
|
+
}
|
|
128
|
+
export interface BlockProgressState {
|
|
129
|
+
block_id: string;
|
|
130
|
+
status: 'pending' | 'in_progress' | 'green' | 'failed';
|
|
131
|
+
tests_green_at?: string;
|
|
132
|
+
deployed_at?: string;
|
|
133
|
+
}
|
|
134
|
+
export interface DeployState {
|
|
135
|
+
done_at: string;
|
|
136
|
+
pipeline: string;
|
|
137
|
+
url: string;
|
|
138
|
+
smoke_at: string;
|
|
139
|
+
}
|
|
140
|
+
export interface PostLaunchState {
|
|
141
|
+
manual_at: string;
|
|
142
|
+
dashboards_at: string;
|
|
143
|
+
feedback_channel: string;
|
|
144
|
+
}
|
|
145
|
+
export interface IterationEntry {
|
|
146
|
+
at: string;
|
|
147
|
+
type: 'bug' | 'feature_small' | 'feature_large' | 'nfr_change' | 'pivot';
|
|
148
|
+
summary: string;
|
|
149
|
+
}
|
|
150
|
+
export interface WorkflowState {
|
|
151
|
+
tier?: WorkflowTier;
|
|
152
|
+
tier_reason?: string;
|
|
153
|
+
tier_decided_at?: string;
|
|
154
|
+
intent?: IntentState;
|
|
155
|
+
legacy_audit?: LegacyAuditState;
|
|
156
|
+
vault_inventory?: VaultInventoryState;
|
|
157
|
+
clarification?: ClarificationState;
|
|
158
|
+
specs?: {
|
|
159
|
+
rfp?: SpecDocState;
|
|
160
|
+
arch?: SpecDocState;
|
|
161
|
+
design?: SpecDocState;
|
|
162
|
+
};
|
|
163
|
+
approvals?: {
|
|
164
|
+
rfp?: ApprovalState;
|
|
165
|
+
arch?: ApprovalState;
|
|
166
|
+
design?: ApprovalState;
|
|
167
|
+
};
|
|
168
|
+
bootstrap?: BootstrapState;
|
|
169
|
+
blocks_progress?: BlockProgressState[];
|
|
170
|
+
deploy?: DeployState;
|
|
171
|
+
postlaunch?: PostLaunchState;
|
|
172
|
+
iterations?: IterationEntry[];
|
|
173
|
+
}
|
|
174
|
+
interface ProjectConfig {
|
|
175
|
+
workflow?: WorkflowState;
|
|
176
|
+
[key: string]: unknown;
|
|
177
|
+
}
|
|
178
|
+
export declare function loadConfig(projectRoot: string): Promise<ProjectConfig>;
|
|
179
|
+
export declare function saveConfig(projectRoot: string, cfg: ProjectConfig): Promise<void>;
|
|
180
|
+
export declare function readWorkflow(projectRoot: string): Promise<WorkflowState>;
|
|
181
|
+
export declare function writeWorkflow(projectRoot: string, patch: Partial<WorkflowState>): Promise<WorkflowState>;
|
|
182
|
+
/** Update a NESTED key under workflow.<group> (clarification,
|
|
183
|
+
* specs, approvals, blocks_progress) without overwriting sibling
|
|
184
|
+
* keys at the same level. */
|
|
185
|
+
export declare function patchWorkflowGroup<K extends keyof WorkflowState>(projectRoot: string, group: K, patch: Partial<NonNullable<WorkflowState[K]>>): Promise<WorkflowState>;
|
|
186
|
+
/** Append to workflow.iterations[]. Idempotent: callers should
|
|
187
|
+
* generate a unique-ish `at` per call so duplicates do not stack. */
|
|
188
|
+
export declare function appendIteration(projectRoot: string, entry: IterationEntry): Promise<WorkflowState>;
|
|
189
|
+
export {};
|
|
190
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/workflow/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Yujin Forge -- Product Workflow state.
|
|
3
|
+
*
|
|
4
|
+
* Shared persistence layer for the 18-step methodology defined
|
|
5
|
+
* in docs/PRODUCT_WORKFLOW.md. State lives in the project's
|
|
6
|
+
* yujin.forge.json under `workflow.*` so it survives across
|
|
7
|
+
* sessions + can be inspected + shared via the git repo.
|
|
8
|
+
*
|
|
9
|
+
* Every command in the workflow (yf triage, yf discover, yf
|
|
10
|
+
* clarify, yf spec, yf approve, yf bootstrap, yf block dev, yf
|
|
11
|
+
* deploy, yf manual, yf metrics, yf iterate) reads + writes
|
|
12
|
+
* through this module. The chat tool surface (forge_triage,
|
|
13
|
+
* forge_discover, etc) does the same -- the underlying state
|
|
14
|
+
* is identical regardless of entry point.
|
|
15
|
+
*
|
|
16
|
+
* Schema:
|
|
17
|
+
*
|
|
18
|
+
* workflow: {
|
|
19
|
+
* tier: 'simple' | 'medium' | 'full' | null,
|
|
20
|
+
* tier_reason: string,
|
|
21
|
+
* tier_decided_at: ISO,
|
|
22
|
+
*
|
|
23
|
+
* intent: { ... } // Phase I step 3
|
|
24
|
+
* legacy_audit: { ... } // Phase I step 3.5
|
|
25
|
+
* vault_inventory: { ... } // Phase I step 2 audit
|
|
26
|
+
*
|
|
27
|
+
* clarification: {
|
|
28
|
+
* functional: { done_at, summary, doc_path }, // step 4
|
|
29
|
+
* nfr_quantitative: { done_at, summary, doc_path }, // step 5
|
|
30
|
+
* nfr_structural: { done_at, summary, doc_path }, // step 6
|
|
31
|
+
* nfr_governance: { done_at, summary, doc_path }, // step 7
|
|
32
|
+
* nfr_operational: { done_at, summary, doc_path }, // step 8
|
|
33
|
+
* blocks: { done_at, blocks: [...] }, // step 9
|
|
34
|
+
* },
|
|
35
|
+
*
|
|
36
|
+
* specs: {
|
|
37
|
+
* rfp: { done_at, version, doc_path, sha256 }, // step 10
|
|
38
|
+
* arch: { done_at, version, doc_path, sha256 }, // step 11
|
|
39
|
+
* design: { done_at, version, doc_path, sha256 }, // step 12
|
|
40
|
+
* },
|
|
41
|
+
*
|
|
42
|
+
* approvals: {
|
|
43
|
+
* rfp: { approved_at, version_sha256 }, // step 13
|
|
44
|
+
* arch: { approved_at, version_sha256 }, // step 13
|
|
45
|
+
* design: { approved_at, version_sha256 }, // step 13
|
|
46
|
+
* },
|
|
47
|
+
*
|
|
48
|
+
* bootstrap: { done_at, stack, ci_set }, // step 14
|
|
49
|
+
*
|
|
50
|
+
* blocks_progress: [ // step 15
|
|
51
|
+
* { block_id, status, tests_green_at, deployed_at }
|
|
52
|
+
* ],
|
|
53
|
+
*
|
|
54
|
+
* deploy: { ... } // step 16
|
|
55
|
+
* postlaunch:{ ... } // step 17
|
|
56
|
+
* iterations:[{ at, type, summary }] // step 18
|
|
57
|
+
* }
|
|
58
|
+
*
|
|
59
|
+
* ASCII-only.
|
|
60
|
+
*/
|
|
61
|
+
import { promises as fs } from 'node:fs';
|
|
62
|
+
import path from 'node:path';
|
|
63
|
+
const CONFIG_FILE = 'yujin.forge.json';
|
|
64
|
+
function configPath(projectRoot) {
|
|
65
|
+
return path.join(projectRoot, CONFIG_FILE);
|
|
66
|
+
}
|
|
67
|
+
export async function loadConfig(projectRoot) {
|
|
68
|
+
try {
|
|
69
|
+
const raw = await fs.readFile(configPath(projectRoot), 'utf-8');
|
|
70
|
+
const parsed = JSON.parse(raw);
|
|
71
|
+
if (parsed && typeof parsed === 'object')
|
|
72
|
+
return parsed;
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
if (err.code !== 'ENOENT'
|
|
76
|
+
&& !(err instanceof SyntaxError)) {
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return {};
|
|
81
|
+
}
|
|
82
|
+
export async function saveConfig(projectRoot, cfg) {
|
|
83
|
+
const text = JSON.stringify(cfg, null, 2) + '\n';
|
|
84
|
+
await fs.writeFile(configPath(projectRoot), text, 'utf-8');
|
|
85
|
+
}
|
|
86
|
+
export async function readWorkflow(projectRoot) {
|
|
87
|
+
const cfg = await loadConfig(projectRoot);
|
|
88
|
+
return cfg.workflow ?? {};
|
|
89
|
+
}
|
|
90
|
+
export async function writeWorkflow(projectRoot, patch) {
|
|
91
|
+
const cfg = await loadConfig(projectRoot);
|
|
92
|
+
cfg.workflow = { ...(cfg.workflow ?? {}), ...patch };
|
|
93
|
+
await saveConfig(projectRoot, cfg);
|
|
94
|
+
return cfg.workflow;
|
|
95
|
+
}
|
|
96
|
+
/** Update a NESTED key under workflow.<group> (clarification,
|
|
97
|
+
* specs, approvals, blocks_progress) without overwriting sibling
|
|
98
|
+
* keys at the same level. */
|
|
99
|
+
export async function patchWorkflowGroup(projectRoot, group, patch) {
|
|
100
|
+
const cfg = await loadConfig(projectRoot);
|
|
101
|
+
const wf = cfg.workflow ?? {};
|
|
102
|
+
const prev = (wf[group] ?? {});
|
|
103
|
+
const merged = { ...prev, ...patch };
|
|
104
|
+
cfg.workflow = { ...wf, [group]: merged };
|
|
105
|
+
await saveConfig(projectRoot, cfg);
|
|
106
|
+
return cfg.workflow;
|
|
107
|
+
}
|
|
108
|
+
/** Append to workflow.iterations[]. Idempotent: callers should
|
|
109
|
+
* generate a unique-ish `at` per call so duplicates do not stack. */
|
|
110
|
+
export async function appendIteration(projectRoot, entry) {
|
|
111
|
+
const cfg = await loadConfig(projectRoot);
|
|
112
|
+
const wf = cfg.workflow ?? {};
|
|
113
|
+
const list = Array.isArray(wf.iterations) ? wf.iterations : [];
|
|
114
|
+
list.push(entry);
|
|
115
|
+
cfg.workflow = { ...wf, iterations: list };
|
|
116
|
+
await saveConfig(projectRoot, cfg);
|
|
117
|
+
return cfg.workflow;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/workflow/state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nac3/forge-cli",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.11",
|
|
4
4
|
"description": "Yujin Forge -- voice-first NAC-3 React development framework. CLI + chat panel + spec ingest + 10-format document reader + voice loop.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Pablo Kuschnirof <pablo@rpaforce.com>",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"node-html-parser": "6.1.13",
|
|
37
37
|
"pdfjs-dist": "^4.10.38",
|
|
38
38
|
"prompts": "2.4.2",
|
|
39
|
+
"typescript": "5.7.2",
|
|
39
40
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
@@ -45,12 +46,11 @@
|
|
|
45
46
|
"pixelmatch": "^7.2.0",
|
|
46
47
|
"pngjs": "^7.0.0",
|
|
47
48
|
"tsx": "4.19.2",
|
|
48
|
-
"typescript": "5.7.2",
|
|
49
49
|
"vitest": "2.1.8"
|
|
50
50
|
},
|
|
51
51
|
"engines": {
|
|
52
52
|
"node": ">=18.17",
|
|
53
|
-
"pnpm": ">=
|
|
53
|
+
"pnpm": ">=9"
|
|
54
54
|
},
|
|
55
55
|
"packageManager": "pnpm@11.3.0",
|
|
56
56
|
"files": [
|