@nac3/forge-cli 0.2.0-alpha.2 → 0.2.0-alpha.4
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 +4 -0
- package/dist/bin/yf.js.map +1 -1
- 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/voice.js +1 -1
- package/dist/commands/voice.js.map +1 -1
- package/dist/core/keys_envelope.d.ts +13 -0
- package/dist/core/keys_envelope.d.ts.map +1 -1
- package/dist/core/keys_envelope.js.map +1 -1
- 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/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/bin/yf.d.ts.map
CHANGED
|
@@ -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;
|
|
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;AA4BpC,wBAAgB,YAAY,IAAI,OAAO,CAsCtC"}
|
package/dist/bin/yf.js
CHANGED
|
@@ -31,6 +31,7 @@ import { registerTunnelCommand } from '../commands/tunnel.js';
|
|
|
31
31
|
import { registerDeployCommand } from '../commands/deploy.js';
|
|
32
32
|
import { registerAppCommand } from '../commands/app.js';
|
|
33
33
|
import { registerVoiceCommand } from '../commands/voice.js';
|
|
34
|
+
import { registerKeysSetupCommand } from '../commands/keys_setup.js';
|
|
34
35
|
import { registerRepoCommand } from '../commands/repo.js';
|
|
35
36
|
import { registerMobileCommand } from '../commands/mobile.js';
|
|
36
37
|
import { registerLogCommand } from '../commands/log.js';
|
|
@@ -64,6 +65,9 @@ export function buildProgram() {
|
|
|
64
65
|
registerDeployCommand(program);
|
|
65
66
|
registerAppCommand(program);
|
|
66
67
|
registerVoiceCommand(program);
|
|
68
|
+
/* `yf keys setup` -- BYOK provider keys (brain + voice) + sync. */
|
|
69
|
+
const keys = program.command('keys').description('BYOK provider keys (brain + voice).');
|
|
70
|
+
registerKeysSetupCommand(keys);
|
|
67
71
|
registerRepoCommand(program);
|
|
68
72
|
registerMobileCommand(program);
|
|
69
73
|
registerLogCommand(program);
|
package/dist/bin/yf.js.map
CHANGED
|
@@ -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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"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -75,55 +75,107 @@ async function runDoctorChecks() {
|
|
|
75
75
|
detail: 'not yet initialised (will be created when you set the first slot)',
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
|
-
/* 4. Voice provider keys (
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
/* 4. Voice provider keys (BYOK).
|
|
79
|
+
*
|
|
80
|
+
* Two sources to consider (in priority order):
|
|
81
|
+
* a) ~/.yujin-forge/provider_keys.json -- the new location
|
|
82
|
+
* written by `yf voice setup` (encrypted blob synced
|
|
83
|
+
* across devices via /v1/keys-sync).
|
|
84
|
+
* b) Vault slots `openai` / `google_voice` / `elevenlabs`
|
|
85
|
+
* -- legacy slots from the panel-based flow, still
|
|
86
|
+
* respected for back-compat. */
|
|
87
|
+
let vaultSlotNames = [];
|
|
81
88
|
try {
|
|
82
89
|
const v = await Vault.open({ configDir: configDir() });
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
90
|
+
vaultSlotNames = v.list().map((s) => s.name);
|
|
91
|
+
}
|
|
92
|
+
catch { /* vault not yet initialised */ }
|
|
93
|
+
let providerKeys = {};
|
|
94
|
+
try {
|
|
95
|
+
const { promises: fsp } = await import('node:fs');
|
|
96
|
+
const os = await import('node:os');
|
|
97
|
+
const home = process.env.HOME || process.env.USERPROFILE || os.homedir();
|
|
98
|
+
const p = path.join(home, '.yujin-forge', 'provider_keys.json');
|
|
99
|
+
const raw = await fsp.readFile(p, 'utf-8');
|
|
100
|
+
providerKeys = JSON.parse(raw);
|
|
101
|
+
}
|
|
102
|
+
catch { /* no provider_keys.json yet -- treat as empty */ }
|
|
103
|
+
const stt = [];
|
|
104
|
+
if (providerKeys.openai_api_key || vaultSlotNames.includes('openai'))
|
|
105
|
+
stt.push('OpenAI');
|
|
106
|
+
if (providerKeys.google_stt_key || vaultSlotNames.includes('google_voice'))
|
|
107
|
+
stt.push('Google');
|
|
108
|
+
const tts = [];
|
|
109
|
+
if (providerKeys.elevenlabs_api_key || vaultSlotNames.includes('elevenlabs'))
|
|
110
|
+
tts.push('ElevenLabs');
|
|
111
|
+
if (providerKeys.openai_api_key)
|
|
112
|
+
tts.push('OpenAI');
|
|
113
|
+
if (providerKeys.google_tts_key || vaultSlotNames.includes('google_voice'))
|
|
114
|
+
tts.push('Google');
|
|
115
|
+
checks.push({
|
|
116
|
+
name: 'Voice providers available (BYOK)',
|
|
117
|
+
ok: stt.length > 0 && tts.length > 0,
|
|
118
|
+
detail: 'STT: ' + (stt.length > 0 ? stt.join(' + ') : 'none')
|
|
119
|
+
+ ' / TTS: ' + (tts.length > 0 ? tts.join(' + ') : 'none')
|
|
120
|
+
+ (providerKeys.stt_provider_preference
|
|
121
|
+
? ' / pref STT: ' + providerKeys.stt_provider_preference : '')
|
|
122
|
+
+ (providerKeys.tts_provider_preference
|
|
123
|
+
? ' / pref TTS: ' + providerKeys.tts_provider_preference : ''),
|
|
124
|
+
...(stt.length === 0 || tts.length === 0 ? {
|
|
125
|
+
hint: 'run `yf keys setup` to configure brain + voice providers. Keys encrypt locally + sync to mobile automatically.',
|
|
126
|
+
} : {}),
|
|
127
|
+
});
|
|
128
|
+
/* 5. Brain provider (BYOK).
|
|
129
|
+
*
|
|
130
|
+
* Forge is BYOK for the brain (Anthropic / OpenAI / Google AI /
|
|
131
|
+
* DeepSeek) -- a single heavy dev burns $100-$200/mo, the
|
|
132
|
+
* $10/mo platform fee cannot absorb that. The user picks
|
|
133
|
+
* their provider via `yf keys setup` + pastes the key. The
|
|
134
|
+
* encrypted key syncs to mobile automatically.
|
|
135
|
+
*
|
|
136
|
+
* Check: provider_keys.json has a preference + the matching
|
|
137
|
+
* key + (optionally) a model alias. */
|
|
138
|
+
const brainPref = (providerKeys.brain_provider_preference ?? null);
|
|
139
|
+
const brainKey = brainPref === 'anthropic' ? providerKeys.anthropic_api_key
|
|
140
|
+
: brainPref === 'openai' ? providerKeys.openai_api_key
|
|
141
|
+
: brainPref === 'google' ? providerKeys.google_ai_key
|
|
142
|
+
: brainPref === 'deepseek' ? providerKeys.deepseek_api_key
|
|
143
|
+
: undefined;
|
|
144
|
+
const brainModel = brainPref === 'anthropic' ? providerKeys.anthropic_model_preference
|
|
145
|
+
: brainPref === 'openai' ? providerKeys.openai_brain_model_preference
|
|
146
|
+
: brainPref === 'google' ? providerKeys.google_brain_model_preference
|
|
147
|
+
: brainPref === 'deepseek' ? providerKeys.deepseek_model_preference
|
|
148
|
+
: undefined;
|
|
149
|
+
if (brainPref && brainKey) {
|
|
110
150
|
checks.push({
|
|
111
|
-
name: '
|
|
112
|
-
ok:
|
|
113
|
-
detail:
|
|
114
|
-
|
|
151
|
+
name: 'Brain provider (BYOK: chat + code)',
|
|
152
|
+
ok: true,
|
|
153
|
+
detail: 'provider: ' + brainPref
|
|
154
|
+
+ (brainModel ? ' / model: ' + brainModel : ' / model: (default for tier)'),
|
|
115
155
|
});
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
116
158
|
checks.push({
|
|
117
|
-
name: '
|
|
118
|
-
ok:
|
|
119
|
-
detail:
|
|
120
|
-
|
|
159
|
+
name: 'Brain provider (BYOK: chat + code)',
|
|
160
|
+
ok: false,
|
|
161
|
+
detail: brainPref
|
|
162
|
+
? 'preference is ' + brainPref + ' but no API key on file for it'
|
|
163
|
+
: 'no brain provider configured -- chat + code will fail',
|
|
164
|
+
hint: 'run `yf keys setup` to pick a provider (Anthropic / OpenAI / Google AI / DeepSeek) and paste your API key',
|
|
121
165
|
});
|
|
122
166
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
167
|
+
/* 6. GitHub token. Optional -- only needed when chat tools
|
|
168
|
+
* want to create repos / push commits. Marked OK by default
|
|
169
|
+
* with an info detail when missing, so a clean install
|
|
170
|
+
* doesn't show a red ✗ for a feature the user may not need. */
|
|
171
|
+
const hasGithub = vaultSlotNames.includes('github_token');
|
|
172
|
+
checks.push({
|
|
173
|
+
name: 'GitHub token (write-class tools)',
|
|
174
|
+
ok: true,
|
|
175
|
+
detail: hasGithub
|
|
176
|
+
? 'github_token slot configured'
|
|
177
|
+
: '(optional; not configured -- only needed for forge.create_github_repo / forge.git_push)',
|
|
178
|
+
});
|
|
127
179
|
/* 5. i18n catalogs + manuals (Fase F). All 10 locales must
|
|
128
180
|
load + the 10 manual HTML files must exist on disk. */
|
|
129
181
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `yf keys setup` -- interactive BYOK provider configuration
|
|
3
|
+
*
|
|
4
|
+
* Covers BOTH the brain providers (LLM for chat + tool calling:
|
|
5
|
+
* Anthropic / OpenAI / Google Gemini / DeepSeek) and the voice
|
|
6
|
+
* providers (OpenAI Whisper+tts / Google Cloud STT+TTS /
|
|
7
|
+
* ElevenLabs TTS). All BYOK -- the user pastes their own keys,
|
|
8
|
+
* the worker never persists nor logs them.
|
|
9
|
+
*
|
|
10
|
+
* Flow:
|
|
11
|
+
* 1. Read the current local provider keys from disk
|
|
12
|
+
* (~/.yujin-forge/provider_keys.json), if any.
|
|
13
|
+
* 2. Ask which categories to configure (brain, voice, or both).
|
|
14
|
+
* 3. For brain: pick provider, paste key, fetch live model
|
|
15
|
+
* list from the worker (which proxies to the upstream
|
|
16
|
+
* provider using the BYOK key in the request header --
|
|
17
|
+
* key not persisted), pick model alias.
|
|
18
|
+
* 4. For voice: pick providers, paste keys, pick STT + TTS
|
|
19
|
+
* preferences.
|
|
20
|
+
* 5. Merge + encrypt with the SERVER_API_KEY from the vault.
|
|
21
|
+
* 6. POST the encrypted blob to /v1/keys-sync/<handle> so
|
|
22
|
+
* mobile + other paired devices pull it.
|
|
23
|
+
* 7. Write the plaintext locally so subsequent calls can read
|
|
24
|
+
* it without re-prompting.
|
|
25
|
+
*
|
|
26
|
+
* Server never sees plaintext -- only the ciphertext blob.
|
|
27
|
+
*
|
|
28
|
+
* Subcommands:
|
|
29
|
+
* yf keys setup Interactive prompts.
|
|
30
|
+
* yf keys setup --show Print current local config (keys masked).
|
|
31
|
+
* yf keys setup --pull Pull the server copy + overwrite local.
|
|
32
|
+
* yf keys setup --provider anthropic --key sk-ant-xxx
|
|
33
|
+
* Non-interactive single-provider set.
|
|
34
|
+
*
|
|
35
|
+
* Back-compat alias:
|
|
36
|
+
* yf voice setup Same command, same flow.
|
|
37
|
+
*
|
|
38
|
+
* ASCII-only.
|
|
39
|
+
*/
|
|
40
|
+
import type { Command } from 'commander';
|
|
41
|
+
export interface KeysSetupOptions {
|
|
42
|
+
show?: boolean;
|
|
43
|
+
pull?: boolean;
|
|
44
|
+
provider?: string;
|
|
45
|
+
key?: string;
|
|
46
|
+
}
|
|
47
|
+
export declare function registerKeysSetupCommand(parent: Command): void;
|
|
48
|
+
/** Back-compat alias -- `yf voice setup` still works. */
|
|
49
|
+
export declare function registerVoiceSetupCommand(parent: Command): void;
|
|
50
|
+
export declare function runKeysSetup(opts: KeysSetupOptions): Promise<void>;
|
|
51
|
+
export declare const runVoiceSetup: typeof runKeysSetup;
|
|
52
|
+
export type VoiceSetupOptions = KeysSetupOptions;
|
|
53
|
+
//# sourceMappingURL=keys_setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys_setup.d.ts","sourceRoot":"","sources":["../../src/commands/keys_setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2MzC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAyBD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAU9D;AAED,yDAAyD;AACzD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAE/D;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiPxE;AAGD,eAAO,MAAM,aAAa,qBAAe,CAAC;AAC1C,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import prompts from 'prompts';
|
|
5
|
+
import { c, header } from '../ui/colors.js';
|
|
6
|
+
import { Vault } from '../vault/store.js';
|
|
7
|
+
import { configDir } from '../license/index.js';
|
|
8
|
+
import { readLicense } from '../core/polar.js';
|
|
9
|
+
import { signBearer, HITO4_BASE_URL } from '../license/hito4_client.js';
|
|
10
|
+
import { encryptUserKeys, decryptUserKeys, envelopeToBlob, envelopeFromBlob, } from '../core/keys_envelope.js';
|
|
11
|
+
const VAULT_SECRET_SLOT = 'yf_server_api_key';
|
|
12
|
+
const LOCAL_KEYS_FILE = 'provider_keys.json';
|
|
13
|
+
function localKeysPath() {
|
|
14
|
+
const home = process.env.HOME || process.env.USERPROFILE || os.homedir();
|
|
15
|
+
return path.join(home, '.yujin-forge', LOCAL_KEYS_FILE);
|
|
16
|
+
}
|
|
17
|
+
async function readLocalKeys() {
|
|
18
|
+
try {
|
|
19
|
+
const raw = await fs.readFile(localKeysPath(), 'utf-8');
|
|
20
|
+
const parsed = JSON.parse(raw);
|
|
21
|
+
if (parsed && parsed.v === 1)
|
|
22
|
+
return parsed;
|
|
23
|
+
}
|
|
24
|
+
catch { /* missing or malformed -- treat as empty */ }
|
|
25
|
+
return { v: 1, updated_at: '1970-01-01T00:00:00Z' };
|
|
26
|
+
}
|
|
27
|
+
async function writeLocalKeys(payload) {
|
|
28
|
+
const p = localKeysPath();
|
|
29
|
+
await fs.mkdir(path.dirname(p), { recursive: true });
|
|
30
|
+
const tmp = p + '.tmp';
|
|
31
|
+
await fs.writeFile(tmp, JSON.stringify(payload, null, 2), 'utf-8');
|
|
32
|
+
await fs.rename(tmp, p);
|
|
33
|
+
}
|
|
34
|
+
function maskKey(k) {
|
|
35
|
+
if (!k)
|
|
36
|
+
return '(none)';
|
|
37
|
+
if (k.length <= 8)
|
|
38
|
+
return '****';
|
|
39
|
+
return k.slice(0, 4) + '...' + k.slice(-4);
|
|
40
|
+
}
|
|
41
|
+
async function loadServerSecret() {
|
|
42
|
+
const vault = await Vault.open({ configDir: configDir() });
|
|
43
|
+
if (!vault.has(VAULT_SECRET_SLOT)) {
|
|
44
|
+
throw new Error('keys setup: vault slot "' + VAULT_SECRET_SLOT + '" is empty. '
|
|
45
|
+
+ 'Run `yf vault set ' + VAULT_SECRET_SLOT + '` with the value '
|
|
46
|
+
+ 'provided at signup before configuring provider keys.');
|
|
47
|
+
}
|
|
48
|
+
return vault.get(VAULT_SECRET_SLOT);
|
|
49
|
+
}
|
|
50
|
+
async function loadUserHandle() {
|
|
51
|
+
const lic = await readLicense();
|
|
52
|
+
if (!lic.user_handle) {
|
|
53
|
+
throw new Error('keys setup: no user_handle on the local license cache. '
|
|
54
|
+
+ 'Run `yf license activate --user-handle <you@example.com>` first.');
|
|
55
|
+
}
|
|
56
|
+
return lic.user_handle;
|
|
57
|
+
}
|
|
58
|
+
async function pushToServer(payload) {
|
|
59
|
+
const secret = await loadServerSecret();
|
|
60
|
+
const handle = await loadUserHandle();
|
|
61
|
+
const env = await encryptUserKeys(payload, secret);
|
|
62
|
+
const blob = envelopeToBlob(env);
|
|
63
|
+
const bearer = signBearer(secret, handle);
|
|
64
|
+
const url = HITO4_BASE_URL.replace(/\/+$/, '') + '/v1/keys-sync/' + encodeURIComponent(handle);
|
|
65
|
+
const r = await fetch(url, {
|
|
66
|
+
method: 'POST',
|
|
67
|
+
headers: { Authorization: 'Bearer ' + bearer, 'content-type': 'application/json' },
|
|
68
|
+
body: JSON.stringify({ blob, ts: payload.updated_at }),
|
|
69
|
+
});
|
|
70
|
+
if (!r.ok) {
|
|
71
|
+
let detail = '';
|
|
72
|
+
try {
|
|
73
|
+
detail = await r.text();
|
|
74
|
+
}
|
|
75
|
+
catch { /* */ }
|
|
76
|
+
throw new Error('keys setup: server push failed (HTTP ' + r.status + '): ' + detail.slice(0, 200));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function pullFromServer() {
|
|
80
|
+
const secret = await loadServerSecret();
|
|
81
|
+
const handle = await loadUserHandle();
|
|
82
|
+
const bearer = signBearer(secret, handle);
|
|
83
|
+
const url = HITO4_BASE_URL.replace(/\/+$/, '') + '/v1/keys-sync/' + encodeURIComponent(handle);
|
|
84
|
+
const r = await fetch(url, { method: 'GET', headers: { Authorization: 'Bearer ' + bearer } });
|
|
85
|
+
if (!r.ok) {
|
|
86
|
+
let detail = '';
|
|
87
|
+
try {
|
|
88
|
+
detail = await r.text();
|
|
89
|
+
}
|
|
90
|
+
catch { /* */ }
|
|
91
|
+
throw new Error('keys setup: server pull failed (HTTP ' + r.status + '): ' + detail.slice(0, 200));
|
|
92
|
+
}
|
|
93
|
+
const body = await r.json();
|
|
94
|
+
if (!body.blob)
|
|
95
|
+
return null;
|
|
96
|
+
const env = envelopeFromBlob(body.blob);
|
|
97
|
+
return decryptUserKeys(env, secret);
|
|
98
|
+
}
|
|
99
|
+
/** Fetch the live model list from the worker. The worker proxies
|
|
100
|
+
* to the upstream provider using the BYOK key in the header --
|
|
101
|
+
* key is never persisted nor logged on the server. */
|
|
102
|
+
async function fetchBrainModels(provider, apiKey) {
|
|
103
|
+
const url = HITO4_BASE_URL.replace(/\/+$/, '')
|
|
104
|
+
+ '/v1/brain-providers/' + encodeURIComponent(provider) + '/models';
|
|
105
|
+
try {
|
|
106
|
+
const r = await fetch(url, {
|
|
107
|
+
method: 'GET',
|
|
108
|
+
headers: { 'x-yf-brain-key': apiKey },
|
|
109
|
+
});
|
|
110
|
+
if (!r.ok) {
|
|
111
|
+
return { models: [], fromUpstream: false, error: 'HTTP ' + r.status };
|
|
112
|
+
}
|
|
113
|
+
const body = await r.json();
|
|
114
|
+
return {
|
|
115
|
+
models: body.models ?? [],
|
|
116
|
+
fromUpstream: body.from_upstream === true,
|
|
117
|
+
error: body.upstream_error ?? undefined,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
return { models: [], fromUpstream: false, error: e instanceof Error ? e.message : String(e) };
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const BRAIN_PROVIDER_CHOICES = [
|
|
125
|
+
{ title: 'Anthropic (Claude opus/sonnet/haiku)', value: 'anthropic',
|
|
126
|
+
hint: 'API key starts with sk-ant-' },
|
|
127
|
+
{ title: 'OpenAI (GPT-5 / GPT-4o / o3 / o3-mini)', value: 'openai',
|
|
128
|
+
hint: 'API key starts with sk-' },
|
|
129
|
+
{ title: 'Google AI Studio (Gemini 2.5 Pro/Flash)', value: 'google',
|
|
130
|
+
hint: 'API key from aistudio.google.com (NOT a Cloud STT/TTS key)' },
|
|
131
|
+
{ title: 'DeepSeek (chat / reasoner R1)', value: 'deepseek',
|
|
132
|
+
hint: 'API key starts with sk-' },
|
|
133
|
+
];
|
|
134
|
+
function brainKeyOf(p, provider) {
|
|
135
|
+
if (provider === 'anthropic')
|
|
136
|
+
return p.anthropic_api_key;
|
|
137
|
+
if (provider === 'openai')
|
|
138
|
+
return p.openai_api_key;
|
|
139
|
+
if (provider === 'google')
|
|
140
|
+
return p.google_ai_key;
|
|
141
|
+
if (provider === 'deepseek')
|
|
142
|
+
return p.deepseek_api_key;
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
function setBrainKey(p, provider, key) {
|
|
146
|
+
if (provider === 'anthropic')
|
|
147
|
+
p.anthropic_api_key = key;
|
|
148
|
+
else if (provider === 'openai')
|
|
149
|
+
p.openai_api_key = key;
|
|
150
|
+
else if (provider === 'google')
|
|
151
|
+
p.google_ai_key = key;
|
|
152
|
+
else if (provider === 'deepseek')
|
|
153
|
+
p.deepseek_api_key = key;
|
|
154
|
+
}
|
|
155
|
+
function brainModelOf(p, provider) {
|
|
156
|
+
if (provider === 'anthropic')
|
|
157
|
+
return p.anthropic_model_preference;
|
|
158
|
+
if (provider === 'openai')
|
|
159
|
+
return p.openai_brain_model_preference;
|
|
160
|
+
if (provider === 'google')
|
|
161
|
+
return p.google_brain_model_preference;
|
|
162
|
+
if (provider === 'deepseek')
|
|
163
|
+
return p.deepseek_model_preference;
|
|
164
|
+
return undefined;
|
|
165
|
+
}
|
|
166
|
+
function setBrainModel(p, provider, model) {
|
|
167
|
+
if (provider === 'anthropic')
|
|
168
|
+
p.anthropic_model_preference = model;
|
|
169
|
+
else if (provider === 'openai')
|
|
170
|
+
p.openai_brain_model_preference = model;
|
|
171
|
+
else if (provider === 'google')
|
|
172
|
+
p.google_brain_model_preference = model;
|
|
173
|
+
else if (provider === 'deepseek')
|
|
174
|
+
p.deepseek_model_preference = model;
|
|
175
|
+
}
|
|
176
|
+
function printCurrent(p) {
|
|
177
|
+
header('Yujin Forge -- keys setup (current local)');
|
|
178
|
+
console.log('');
|
|
179
|
+
console.log(c.brand(' Brain (AI for chat + code):'));
|
|
180
|
+
console.log(' Preferred provider: ' + c.brand(p.brain_provider_preference ?? '(not set)'));
|
|
181
|
+
console.log(' Anthropic key: ' + c.dim(maskKey(p.anthropic_api_key))
|
|
182
|
+
+ (p.anthropic_model_preference ? ' -- model: ' + c.brand(p.anthropic_model_preference) : ''));
|
|
183
|
+
console.log(' OpenAI key: ' + c.dim(maskKey(p.openai_api_key))
|
|
184
|
+
+ (p.openai_brain_model_preference ? ' -- model: ' + c.brand(p.openai_brain_model_preference) : ''));
|
|
185
|
+
console.log(' Google AI key: ' + c.dim(maskKey(p.google_ai_key))
|
|
186
|
+
+ (p.google_brain_model_preference ? ' -- model: ' + c.brand(p.google_brain_model_preference) : ''));
|
|
187
|
+
console.log(' DeepSeek key: ' + c.dim(maskKey(p.deepseek_api_key))
|
|
188
|
+
+ (p.deepseek_model_preference ? ' -- model: ' + c.brand(p.deepseek_model_preference) : ''));
|
|
189
|
+
console.log('');
|
|
190
|
+
console.log(c.brand(' Voice (STT + TTS):'));
|
|
191
|
+
console.log(' OpenAI key (shared): ' + c.dim(maskKey(p.openai_api_key)));
|
|
192
|
+
console.log(' Google STT key: ' + c.dim(maskKey(p.google_stt_key)));
|
|
193
|
+
console.log(' Google TTS key: ' + c.dim(maskKey(p.google_tts_key)));
|
|
194
|
+
console.log(' ElevenLabs key: ' + c.dim(maskKey(p.elevenlabs_api_key)));
|
|
195
|
+
console.log(' STT preference: ' + c.brand(p.stt_provider_preference ?? '(not set)'));
|
|
196
|
+
console.log(' TTS preference: ' + c.brand(p.tts_provider_preference ?? '(not set)'));
|
|
197
|
+
console.log(' STT language: ' + (p.stt_language ?? c.dim('(default)')));
|
|
198
|
+
console.log(' TTS voice: ' + (p.tts_voice ?? c.dim('(default)')));
|
|
199
|
+
console.log('');
|
|
200
|
+
console.log(' Last updated: ' + c.dim(p.updated_at));
|
|
201
|
+
}
|
|
202
|
+
const NON_INTERACTIVE_PROVIDERS = new Set([
|
|
203
|
+
'anthropic', 'openai', 'google-ai', 'deepseek',
|
|
204
|
+
'openai-voice', 'google-stt', 'google-tts', 'elevenlabs',
|
|
205
|
+
]);
|
|
206
|
+
function applyNonInteractiveSet(merged, provider, key) {
|
|
207
|
+
const p = provider.toLowerCase();
|
|
208
|
+
if (!NON_INTERACTIVE_PROVIDERS.has(p))
|
|
209
|
+
return false;
|
|
210
|
+
if (p === 'anthropic')
|
|
211
|
+
merged.anthropic_api_key = key;
|
|
212
|
+
else if (p === 'openai' || p === 'openai-voice')
|
|
213
|
+
merged.openai_api_key = key;
|
|
214
|
+
else if (p === 'google-ai')
|
|
215
|
+
merged.google_ai_key = key;
|
|
216
|
+
else if (p === 'deepseek')
|
|
217
|
+
merged.deepseek_api_key = key;
|
|
218
|
+
else if (p === 'google-stt')
|
|
219
|
+
merged.google_stt_key = key;
|
|
220
|
+
else if (p === 'google-tts')
|
|
221
|
+
merged.google_tts_key = key;
|
|
222
|
+
else if (p === 'elevenlabs')
|
|
223
|
+
merged.elevenlabs_api_key = key;
|
|
224
|
+
return true;
|
|
225
|
+
}
|
|
226
|
+
export function registerKeysSetupCommand(parent) {
|
|
227
|
+
parent
|
|
228
|
+
.command('setup')
|
|
229
|
+
.description('Configure BYOK provider keys -- Brain (Anthropic / OpenAI / Google AI / DeepSeek) '
|
|
230
|
+
+ 'and Voice (OpenAI / Google Cloud / ElevenLabs). Encrypts + syncs to your other devices.')
|
|
231
|
+
.option('--show', 'print current local config (keys masked)')
|
|
232
|
+
.option('--pull', 'pull the server copy + overwrite local')
|
|
233
|
+
.option('--provider <name>', 'non-interactive: anthropic|openai|google-ai|deepseek|google-stt|google-tts|elevenlabs')
|
|
234
|
+
.option('--key <value>', 'non-interactive: the API key value for --provider')
|
|
235
|
+
.action(async (opts) => { await runKeysSetup(opts); });
|
|
236
|
+
}
|
|
237
|
+
/** Back-compat alias -- `yf voice setup` still works. */
|
|
238
|
+
export function registerVoiceSetupCommand(parent) {
|
|
239
|
+
registerKeysSetupCommand(parent);
|
|
240
|
+
}
|
|
241
|
+
export async function runKeysSetup(opts) {
|
|
242
|
+
/* --show: print current + exit. */
|
|
243
|
+
if (opts.show) {
|
|
244
|
+
const current = await readLocalKeys();
|
|
245
|
+
printCurrent(current);
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
/* --pull: server -> local. */
|
|
249
|
+
if (opts.pull) {
|
|
250
|
+
let pulled;
|
|
251
|
+
try {
|
|
252
|
+
pulled = await pullFromServer();
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
console.error(c.error(err instanceof Error ? err.message : String(err)));
|
|
256
|
+
process.exitCode = 1;
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
if (!pulled) {
|
|
260
|
+
console.log(c.dim('Server has no provider keys for this user yet.'));
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
await writeLocalKeys(pulled);
|
|
264
|
+
header('Yujin Forge -- keys setup (pulled from server)');
|
|
265
|
+
console.log('');
|
|
266
|
+
printCurrent(pulled);
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
/* --provider / --key: non-interactive single set. */
|
|
270
|
+
if (opts.provider || opts.key) {
|
|
271
|
+
if (!opts.provider || !opts.key) {
|
|
272
|
+
console.error(c.error('--provider and --key must be used together.'));
|
|
273
|
+
process.exitCode = 1;
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
const merged = await readLocalKeys();
|
|
277
|
+
if (!applyNonInteractiveSet(merged, opts.provider, opts.key)) {
|
|
278
|
+
console.error(c.error('--provider must be one of: '
|
|
279
|
+
+ Array.from(NON_INTERACTIVE_PROVIDERS).join(', ')));
|
|
280
|
+
process.exitCode = 1;
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
merged.updated_at = new Date().toISOString();
|
|
284
|
+
try {
|
|
285
|
+
await pushToServer(merged);
|
|
286
|
+
await writeLocalKeys(merged);
|
|
287
|
+
header('Yujin Forge -- keys setup (saved)');
|
|
288
|
+
console.log('');
|
|
289
|
+
printCurrent(merged);
|
|
290
|
+
}
|
|
291
|
+
catch (err) {
|
|
292
|
+
console.error(c.error(err instanceof Error ? err.message : String(err)));
|
|
293
|
+
process.exitCode = 1;
|
|
294
|
+
}
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
/* Interactive flow. */
|
|
298
|
+
const current = await readLocalKeys();
|
|
299
|
+
header('Yujin Forge -- keys setup');
|
|
300
|
+
console.log('');
|
|
301
|
+
console.log(c.dim('Configure the API keys for your chosen providers. The keys are'));
|
|
302
|
+
console.log(c.dim('encrypted with your account secret + synced to your mobile + other'));
|
|
303
|
+
console.log(c.dim('paired devices automatically. The server never sees plaintext.'));
|
|
304
|
+
console.log('');
|
|
305
|
+
console.log(c.dim('Press Enter on any field to keep its current value.'));
|
|
306
|
+
console.log('');
|
|
307
|
+
const cats = await prompts({
|
|
308
|
+
type: 'multiselect',
|
|
309
|
+
name: 'cats',
|
|
310
|
+
message: 'Which categories do you want to configure?',
|
|
311
|
+
choices: [
|
|
312
|
+
{ title: 'Brain (AI for chat + code) -- REQUIRED for Forge',
|
|
313
|
+
value: 'brain', selected: !current.brain_provider_preference },
|
|
314
|
+
{ title: 'Voice (STT + TTS)',
|
|
315
|
+
value: 'voice', selected: false },
|
|
316
|
+
],
|
|
317
|
+
min: 1,
|
|
318
|
+
hint: 'Space to select, Enter to confirm.',
|
|
319
|
+
});
|
|
320
|
+
if (!cats.cats || cats.cats.length === 0) {
|
|
321
|
+
console.log(c.dim('Nothing selected. Aborting.'));
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
const merged = { ...current };
|
|
325
|
+
/* ----- Brain section ----- */
|
|
326
|
+
if (cats.cats.includes('brain')) {
|
|
327
|
+
console.log('');
|
|
328
|
+
console.log(c.brand('Brain provider'));
|
|
329
|
+
console.log(c.dim('A heavy dev easily burns $100-$200/mo on any of these. Forge is BYOK --'));
|
|
330
|
+
console.log(c.dim('you pay the provider directly. Pick the one you already have credits on.'));
|
|
331
|
+
console.log('');
|
|
332
|
+
const providerAns = await prompts({
|
|
333
|
+
type: 'select',
|
|
334
|
+
name: 'p',
|
|
335
|
+
message: 'Pick your brain provider',
|
|
336
|
+
choices: BRAIN_PROVIDER_CHOICES.map((ch) => ({
|
|
337
|
+
title: ch.title + (brainKeyOf(current, ch.value) ? c.success(' [configured]') : ''),
|
|
338
|
+
value: ch.value,
|
|
339
|
+
description: ch.hint,
|
|
340
|
+
})),
|
|
341
|
+
initial: BRAIN_PROVIDER_CHOICES.findIndex((ch) => ch.value === (current.brain_provider_preference ?? 'anthropic')),
|
|
342
|
+
});
|
|
343
|
+
const provider = (providerAns.p ?? null);
|
|
344
|
+
if (provider) {
|
|
345
|
+
merged.brain_provider_preference = provider;
|
|
346
|
+
const existingKey = brainKeyOf(merged, provider);
|
|
347
|
+
const keyAns = await prompts({
|
|
348
|
+
type: 'password',
|
|
349
|
+
name: 'k',
|
|
350
|
+
message: 'API key for ' + provider + '. Current: ' + maskKey(existingKey),
|
|
351
|
+
});
|
|
352
|
+
const keyToUse = keyAns.k || existingKey;
|
|
353
|
+
if (keyToUse) {
|
|
354
|
+
setBrainKey(merged, provider, keyToUse);
|
|
355
|
+
/* Fetch live model list from the worker, fall back to
|
|
356
|
+
* baked-in default list if unreachable. */
|
|
357
|
+
console.log(c.dim('Fetching available models from ' + provider + '...'));
|
|
358
|
+
const ml = await fetchBrainModels(provider, keyToUse);
|
|
359
|
+
if (!ml.fromUpstream) {
|
|
360
|
+
console.log(c.dim(' (upstream call failed' + (ml.error ? ': ' + ml.error : '') + ' -- using default list)'));
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
console.log(c.success(' found ' + ml.models.length + ' chat models on your account'));
|
|
364
|
+
}
|
|
365
|
+
const currentModel = brainModelOf(merged, provider);
|
|
366
|
+
const modelChoices = ml.models.map((m) => ({
|
|
367
|
+
title: (m.display_name && m.display_name !== m.id)
|
|
368
|
+
? m.display_name + c.dim(' (' + m.id + ')')
|
|
369
|
+
: m.id,
|
|
370
|
+
value: m.id,
|
|
371
|
+
description: m.created_at ? 'released ' + m.created_at.slice(0, 10) : undefined,
|
|
372
|
+
}));
|
|
373
|
+
const initialIdx = Math.max(0, modelChoices.findIndex((ch) => ch.value === currentModel));
|
|
374
|
+
const modelAns = await prompts({
|
|
375
|
+
type: 'select',
|
|
376
|
+
name: 'm',
|
|
377
|
+
message: 'Pick the model to use as default',
|
|
378
|
+
choices: modelChoices,
|
|
379
|
+
initial: initialIdx,
|
|
380
|
+
});
|
|
381
|
+
if (modelAns.m)
|
|
382
|
+
setBrainModel(merged, provider, modelAns.m);
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
console.log(c.warn('No API key entered + none on file -- brain will fail until you set one.'));
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
/* ----- Voice section ----- */
|
|
390
|
+
if (cats.cats.includes('voice')) {
|
|
391
|
+
console.log('');
|
|
392
|
+
console.log(c.brand('Voice providers'));
|
|
393
|
+
const answers = await prompts({
|
|
394
|
+
type: 'multiselect',
|
|
395
|
+
name: 'providers',
|
|
396
|
+
message: 'Which voice providers do you want to configure?',
|
|
397
|
+
choices: [
|
|
398
|
+
{ title: 'OpenAI (Whisper for STT + tts-1 for TTS)', value: 'openai',
|
|
399
|
+
selected: !!merged.openai_api_key },
|
|
400
|
+
{ title: 'Google Cloud (STT + TTS)', value: 'google',
|
|
401
|
+
selected: !!(merged.google_stt_key || merged.google_tts_key) },
|
|
402
|
+
{ title: 'ElevenLabs (TTS only -- higher quality voice)', value: 'elevenlabs',
|
|
403
|
+
selected: !!merged.elevenlabs_api_key },
|
|
404
|
+
],
|
|
405
|
+
min: 0,
|
|
406
|
+
hint: 'Space to select, Enter to confirm.',
|
|
407
|
+
});
|
|
408
|
+
if (answers.providers && answers.providers.includes('openai')) {
|
|
409
|
+
const r = await prompts({
|
|
410
|
+
type: 'password',
|
|
411
|
+
name: 'k',
|
|
412
|
+
message: 'OpenAI API key (sk-...). Current: ' + maskKey(merged.openai_api_key),
|
|
413
|
+
});
|
|
414
|
+
if (r.k)
|
|
415
|
+
merged.openai_api_key = r.k;
|
|
416
|
+
}
|
|
417
|
+
if (answers.providers && answers.providers.includes('google')) {
|
|
418
|
+
const sttR = await prompts({
|
|
419
|
+
type: 'password',
|
|
420
|
+
name: 'k',
|
|
421
|
+
message: 'Google Cloud Speech-to-Text API key. Current: ' + maskKey(merged.google_stt_key),
|
|
422
|
+
});
|
|
423
|
+
if (sttR.k)
|
|
424
|
+
merged.google_stt_key = sttR.k;
|
|
425
|
+
const ttsR = await prompts({
|
|
426
|
+
type: 'password',
|
|
427
|
+
name: 'k',
|
|
428
|
+
message: 'Google Cloud Text-to-Speech API key (can be same as STT). Current: ' + maskKey(merged.google_tts_key),
|
|
429
|
+
});
|
|
430
|
+
if (ttsR.k)
|
|
431
|
+
merged.google_tts_key = ttsR.k;
|
|
432
|
+
}
|
|
433
|
+
if (answers.providers && answers.providers.includes('elevenlabs')) {
|
|
434
|
+
const r = await prompts({
|
|
435
|
+
type: 'password',
|
|
436
|
+
name: 'k',
|
|
437
|
+
message: 'ElevenLabs API key. Current: ' + maskKey(merged.elevenlabs_api_key),
|
|
438
|
+
});
|
|
439
|
+
if (r.k)
|
|
440
|
+
merged.elevenlabs_api_key = r.k;
|
|
441
|
+
}
|
|
442
|
+
const sttCandidates = [];
|
|
443
|
+
if (merged.openai_api_key)
|
|
444
|
+
sttCandidates.push({ title: 'OpenAI (Whisper)', value: 'openai' });
|
|
445
|
+
if (merged.google_stt_key)
|
|
446
|
+
sttCandidates.push({ title: 'Google', value: 'google' });
|
|
447
|
+
if (sttCandidates.length > 0) {
|
|
448
|
+
const pref = await prompts({
|
|
449
|
+
type: 'select', name: 'p', message: 'Preferred STT provider',
|
|
450
|
+
choices: sttCandidates, initial: 0,
|
|
451
|
+
});
|
|
452
|
+
if (pref.p)
|
|
453
|
+
merged.stt_provider_preference = pref.p;
|
|
454
|
+
}
|
|
455
|
+
const ttsCandidates = [];
|
|
456
|
+
if (merged.openai_api_key)
|
|
457
|
+
ttsCandidates.push({ title: 'OpenAI (tts-1)', value: 'openai' });
|
|
458
|
+
if (merged.google_tts_key)
|
|
459
|
+
ttsCandidates.push({ title: 'Google', value: 'google' });
|
|
460
|
+
if (merged.elevenlabs_api_key)
|
|
461
|
+
ttsCandidates.push({ title: 'ElevenLabs', value: 'elevenlabs' });
|
|
462
|
+
if (ttsCandidates.length > 0) {
|
|
463
|
+
const pref = await prompts({
|
|
464
|
+
type: 'select', name: 'p', message: 'Preferred TTS provider',
|
|
465
|
+
choices: ttsCandidates, initial: 0,
|
|
466
|
+
});
|
|
467
|
+
if (pref.p)
|
|
468
|
+
merged.tts_provider_preference = pref.p;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
merged.updated_at = new Date().toISOString();
|
|
472
|
+
try {
|
|
473
|
+
await pushToServer(merged);
|
|
474
|
+
await writeLocalKeys(merged);
|
|
475
|
+
console.log('');
|
|
476
|
+
console.log(c.success('Provider keys saved + synced.'));
|
|
477
|
+
console.log('');
|
|
478
|
+
printCurrent(merged);
|
|
479
|
+
}
|
|
480
|
+
catch (err) {
|
|
481
|
+
console.error(c.error(err instanceof Error ? err.message : String(err)));
|
|
482
|
+
process.exitCode = 1;
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
/* Back-compat aliases so callers using the old names still work. */
|
|
486
|
+
export const runVoiceSetup = runKeysSetup;
|
|
487
|
+
//# sourceMappingURL=keys_setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys_setup.js","sourceRoot":"","sources":["../../src/commands/keys_setup.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/voice.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readVoiceConfig, writeVoiceConfig, matchConfiguredWakeWord } from '../voice/config.js';
|
|
2
2
|
import { DEFAULT_WAKE_ALIASES, mergeAliases } from '../voice/wake.js';
|
|
3
|
-
import { registerVoiceSetupCommand } from './
|
|
3
|
+
import { registerVoiceSetupCommand } from './keys_setup.js';
|
|
4
4
|
function splitCsv(s) {
|
|
5
5
|
return s.split(',').map((x) => x.trim()).filter((x) => x.length > 0);
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice.js","sourceRoot":"","sources":["../../src/commands/voice.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"voice.js","sourceRoot":"","sources":["../../src/commands/voice.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,22 @@
|
|
|
12
12
|
*
|
|
13
13
|
* ASCII-only. WebCrypto only (Node 20+ / Workers / RN).
|
|
14
14
|
*/
|
|
15
|
+
export type BrainProvider = 'anthropic' | 'openai' | 'google' | 'deepseek';
|
|
15
16
|
export interface ProviderKeysPlaintext {
|
|
16
17
|
v: 1;
|
|
18
|
+
/** Which LLM provider drives the brain (chat + tool calling).
|
|
19
|
+
* All four are BYOK -- a single dev easily burns
|
|
20
|
+
* $100-$200/mo on any of them, the Forge platform fee
|
|
21
|
+
* cannot absorb that. */
|
|
22
|
+
brain_provider_preference?: BrainProvider;
|
|
23
|
+
anthropic_api_key?: string;
|
|
24
|
+
anthropic_model_preference?: 'opus' | 'sonnet' | 'haiku';
|
|
17
25
|
openai_api_key?: string;
|
|
26
|
+
openai_brain_model_preference?: 'gpt-5' | 'gpt-4o' | 'o3' | 'o3-mini';
|
|
27
|
+
google_ai_key?: string;
|
|
28
|
+
google_brain_model_preference?: 'gemini-2.5-pro' | 'gemini-2.5-flash';
|
|
29
|
+
deepseek_api_key?: string;
|
|
30
|
+
deepseek_model_preference?: 'deepseek-chat' | 'deepseek-reasoner';
|
|
18
31
|
google_stt_key?: string;
|
|
19
32
|
google_tts_key?: string;
|
|
20
33
|
elevenlabs_api_key?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys_envelope.d.ts","sourceRoot":"","sources":["../../src/core/keys_envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,MAAM,WAAW,qBAAqB;IACpC,CAAC,EAAE,CAAC,CAAC;IACL,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9C,uBAAuB,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,CAAC,CAAC;IACL,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAwCD,qBAAa,iBAAkB,SAAQ,KAAK;aACd,IAAI,EAAE,WAAW,GAAG,YAAY;gBAAhC,IAAI,EAAE,WAAW,GAAG,YAAY;CAG7D;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC,CA2BhC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAKxD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAe3D"}
|
|
1
|
+
{"version":3,"file":"keys_envelope.d.ts","sourceRoot":"","sources":["../../src/core/keys_envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE3E,MAAM,WAAW,qBAAqB;IACpC,CAAC,EAAE,CAAC,CAAC;IACL;;;8BAG0B;IAC1B,yBAAyB,CAAC,EAAE,aAAa,CAAC;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0BAA0B,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6BAA6B,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B,CAAC,EAAE,gBAAgB,GAAG,kBAAkB,CAAC;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB,CAAC,EAAE,eAAe,GAAG,mBAAmB,CAAC;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9C,uBAAuB,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,CAAC,CAAC;IACL,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAwCD,qBAAa,iBAAkB,SAAQ,KAAK;aACd,IAAI,EAAE,WAAW,GAAG,YAAY;gBAAhC,IAAI,EAAE,WAAW,GAAG,YAAY;CAG7D;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC,CA2BhC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAKxD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAe3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys_envelope.js","sourceRoot":"","sources":["../../src/core/keys_envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAC9B,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAE9B,MAAM,YAAY,GAAG,OAAO,CAAC;AAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,WAAW,GAAG,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"keys_envelope.js","sourceRoot":"","sources":["../../src/core/keys_envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { Vault } from '../vault/store.js';
|
|
2
|
+
import type { BrainProvider } from '../core/keys_envelope.js';
|
|
2
3
|
export declare const HITO4_BASE_URL: string;
|
|
4
|
+
interface ResolvedBrain {
|
|
5
|
+
provider: BrainProvider | null;
|
|
6
|
+
apiKey: string | null;
|
|
7
|
+
modelAlias: string | null;
|
|
8
|
+
}
|
|
9
|
+
/** Resolve which brain provider + key + model alias to use for
|
|
10
|
+
* the current request. Mirrors the mobile-side logic that
|
|
11
|
+
* reads from the encrypted keys-sync cache. */
|
|
12
|
+
export declare function resolveBrainHeaders(): Promise<ResolvedBrain>;
|
|
3
13
|
export interface Hito4ClientDeps {
|
|
4
14
|
fetchImpl?: typeof fetch;
|
|
5
15
|
vaultOpener?: () => Promise<Vault>;
|
|
@@ -16,9 +26,15 @@ export interface FlowCallResult {
|
|
|
16
26
|
body: Record<string, unknown>;
|
|
17
27
|
}
|
|
18
28
|
/** Call a HITO 4 flow. Returns the raw server response (no
|
|
19
|
-
* retry / no backoff -- callers can decide).
|
|
29
|
+
* retry / no backoff -- callers can decide).
|
|
30
|
+
*
|
|
31
|
+
* Brain providers are BYOK: this call reads the local
|
|
32
|
+
* ~/.yujin-forge/provider_keys.json, picks the preferred
|
|
33
|
+
* provider + key + model, and forwards them as headers. The
|
|
34
|
+
* worker never persists nor logs the key. */
|
|
20
35
|
export declare function callFlow(flow: string, input: unknown, deps?: Hito4ClientDeps): Promise<FlowCallResult>;
|
|
21
36
|
/** Pull the up-to-date license row from the server. The CLI's
|
|
22
37
|
* Polar cache is then refreshed with the result. */
|
|
23
38
|
export declare function fetchServerLicense(deps?: Hito4ClientDeps): Promise<FlowCallResult>;
|
|
39
|
+
export {};
|
|
24
40
|
//# sourceMappingURL=hito4_client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hito4_client.d.ts","sourceRoot":"","sources":["../../src/license/hito4_client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hito4_client.d.ts","sourceRoot":"","sources":["../../src/license/hito4_client.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,KAAK,EAAyB,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAErF,eAAO,MAAM,cAAc,QAA8E,CAAC;AAiB1G,UAAU,aAAa;IACrB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;gDAEgD;AAChD,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,CAAC,CAelE;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC;qDACiD;IACjD,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA+BD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAE,MAAmB,GAAG,MAAM,CAG1F;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;;;;;8CAM8C;AAC9C,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAE,eAAoB,GACvD,OAAO,CAAC,cAAc,CAAC,CAoBzB;AAED;qDACqD;AACrD,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAc5F"}
|
|
@@ -19,11 +19,63 @@
|
|
|
19
19
|
* ASCII-only.
|
|
20
20
|
*/
|
|
21
21
|
import { createHmac } from 'node:crypto';
|
|
22
|
+
import { promises as fs } from 'node:fs';
|
|
23
|
+
import path from 'node:path';
|
|
24
|
+
import os from 'node:os';
|
|
22
25
|
import { Vault } from '../vault/store.js';
|
|
23
26
|
import { configDir } from './index.js';
|
|
24
27
|
import { readLicense } from '../core/polar.js';
|
|
25
28
|
export const HITO4_BASE_URL = process.env.YF_HITO4_BASE_URL ?? 'https://yujin-hito4.yujinapp.workers.dev';
|
|
26
29
|
const SECRET_SLOT = 'yf_server_api_key';
|
|
30
|
+
/** Read the local plaintext provider keys cache. The mobile
|
|
31
|
+
* equivalent is the `useProviderKeys` hook. Returns null if
|
|
32
|
+
* the file does not exist yet (user has not run keys setup). */
|
|
33
|
+
async function readLocalProviderKeys() {
|
|
34
|
+
const home = process.env.HOME || process.env.USERPROFILE || os.homedir();
|
|
35
|
+
const p = path.join(home, '.yujin-forge', 'provider_keys.json');
|
|
36
|
+
try {
|
|
37
|
+
const raw = await fs.readFile(p, 'utf-8');
|
|
38
|
+
const parsed = JSON.parse(raw);
|
|
39
|
+
if (parsed && parsed.v === 1)
|
|
40
|
+
return parsed;
|
|
41
|
+
}
|
|
42
|
+
catch { /* missing */ }
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
/** Resolve which brain provider + key + model alias to use for
|
|
46
|
+
* the current request. Mirrors the mobile-side logic that
|
|
47
|
+
* reads from the encrypted keys-sync cache. */
|
|
48
|
+
export async function resolveBrainHeaders() {
|
|
49
|
+
const cache = await readLocalProviderKeys();
|
|
50
|
+
if (!cache)
|
|
51
|
+
return { provider: null, apiKey: null, modelAlias: null };
|
|
52
|
+
const provider = (cache.brain_provider_preference ?? null);
|
|
53
|
+
if (!provider)
|
|
54
|
+
return { provider: null, apiKey: null, modelAlias: null };
|
|
55
|
+
let apiKey;
|
|
56
|
+
let modelAlias;
|
|
57
|
+
if (provider === 'anthropic') {
|
|
58
|
+
apiKey = cache.anthropic_api_key;
|
|
59
|
+
modelAlias = cache.anthropic_model_preference;
|
|
60
|
+
}
|
|
61
|
+
else if (provider === 'openai') {
|
|
62
|
+
apiKey = cache.openai_api_key;
|
|
63
|
+
modelAlias = cache.openai_brain_model_preference;
|
|
64
|
+
}
|
|
65
|
+
else if (provider === 'google') {
|
|
66
|
+
apiKey = cache.google_ai_key;
|
|
67
|
+
modelAlias = cache.google_brain_model_preference;
|
|
68
|
+
}
|
|
69
|
+
else if (provider === 'deepseek') {
|
|
70
|
+
apiKey = cache.deepseek_api_key;
|
|
71
|
+
modelAlias = cache.deepseek_model_preference;
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
provider,
|
|
75
|
+
apiKey: apiKey ?? null,
|
|
76
|
+
modelAlias: modelAlias ?? null,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
27
79
|
function hmacHex(secret, msg) {
|
|
28
80
|
return createHmac('sha256', secret).update(msg).digest('hex');
|
|
29
81
|
}
|
|
@@ -52,23 +104,32 @@ export function signBearer(secret, handle, ts = Date.now()) {
|
|
|
52
104
|
return ts + '.' + sig;
|
|
53
105
|
}
|
|
54
106
|
/** Call a HITO 4 flow. Returns the raw server response (no
|
|
55
|
-
* retry / no backoff -- callers can decide).
|
|
107
|
+
* retry / no backoff -- callers can decide).
|
|
108
|
+
*
|
|
109
|
+
* Brain providers are BYOK: this call reads the local
|
|
110
|
+
* ~/.yujin-forge/provider_keys.json, picks the preferred
|
|
111
|
+
* provider + key + model, and forwards them as headers. The
|
|
112
|
+
* worker never persists nor logs the key. */
|
|
56
113
|
export async function callFlow(flow, input, deps = {}) {
|
|
57
114
|
const base = deps.baseUrl ?? HITO4_BASE_URL;
|
|
58
115
|
const secret = await getSecret(deps);
|
|
59
116
|
const handle = await getHandle(deps);
|
|
60
117
|
const bearer = signBearer(secret, handle);
|
|
61
118
|
const fetchImpl = deps.fetchImpl ?? ((u, init) => globalThis.fetch(u, init));
|
|
119
|
+
const brain = await resolveBrainHeaders();
|
|
62
120
|
const url = base.replace(/\/+$/, '') + '/v1/flows/' + encodeURIComponent(flow);
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
121
|
+
const headers = {
|
|
122
|
+
'Authorization': 'Bearer ' + bearer,
|
|
123
|
+
'x-yf-user-handle': handle,
|
|
124
|
+
'content-type': 'application/json',
|
|
125
|
+
};
|
|
126
|
+
if (brain.provider)
|
|
127
|
+
headers['x-yf-brain-provider'] = brain.provider;
|
|
128
|
+
if (brain.apiKey)
|
|
129
|
+
headers['x-yf-brain-key'] = brain.apiKey;
|
|
130
|
+
if (brain.modelAlias)
|
|
131
|
+
headers['x-yf-brain-model'] = brain.modelAlias;
|
|
132
|
+
const r = await fetchImpl(url, { method: 'POST', headers, body: JSON.stringify(input ?? null) });
|
|
72
133
|
let body = {};
|
|
73
134
|
try {
|
|
74
135
|
body = await r.json();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hito4_client.js","sourceRoot":"","sources":["../../src/license/hito4_client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"hito4_client.js","sourceRoot":"","sources":["../../src/license/hito4_client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,0CAA0C,CAAC;AAC1G,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAExC;;iEAEiE;AACjE,KAAK,UAAU,qBAAqB;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACzE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;QACxD,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC;AACd,CAAC;AAQD;;gDAEgD;AAChD,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,KAAK,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,yBAAyB,IAAI,IAAI,CAAyB,CAAC;IACnF,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACzE,IAAI,MAA0B,CAAC;IAAC,IAAI,UAA8B,CAAC;IACnE,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAAC,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAAC,UAAU,GAAG,KAAK,CAAC,0BAA0B,CAAC;IAAC,CAAC;SAC7G,IAAI,QAAQ,KAAK,QAAQ,EAAK,CAAC;QAAC,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC;QAAI,UAAU,GAAG,KAAK,CAAC,6BAA6B,CAAC;IAAC,CAAC;SACrH,IAAI,QAAQ,KAAK,QAAQ,EAAK,CAAC;QAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;QAAK,UAAU,GAAG,KAAK,CAAC,6BAA6B,CAAC;IAAC,CAAC;SACrH,IAAI,QAAQ,KAAK,UAAU,EAAG,CAAC;QAAC,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAAE,UAAU,GAAG,KAAK,CAAC,yBAAyB,CAAC;IAAC,CAAC;IACtH,OAAO;QACL,QAAQ;QACR,MAAM,EAAE,MAAM,IAAI,IAAI;QACtB,UAAU,EAAE,UAAU,IAAI,IAAI;KAC/B,CAAC;AACJ,CAAC;AAYD,SAAS,OAAO,CAAC,MAAc,EAAE,GAAW;IAC1C,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAqB;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,6BAA6B,GAAG,WAAW,GAAG,cAAc;cAC1D,oBAAoB,GAAG,WAAW,GAAG,4BAA4B;cACjE,mCAAmC,CACtC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAqB;IAC5C,IAAI,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IACtD,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,4DAA4D;cAC1D,kEAAkE,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,WAAW,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,MAAc,EAAE,KAAa,IAAI,CAAC,GAAG,EAAE;IAChF,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;IAC7D,OAAO,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,CAAC;AAQD;;;;;;8CAM8C;AAC9C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAY,EAAE,KAAc,EAAE,OAAwB,EAAE;IAExD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAM,EAAE,IAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC/E,MAAM,OAAO,GAA2B;QACtC,eAAe,EAAE,SAAS,GAAG,MAAM;QACnC,kBAAkB,EAAE,MAAM;QAC1B,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,IAAI,KAAK,CAAC,QAAQ;QAAI,OAAO,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;IACtE,IAAI,KAAK,CAAC,MAAM;QAAM,OAAO,CAAC,gBAAgB,CAAC,GAAQ,KAAK,CAAC,MAAM,CAAC;IACpE,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,CAAC,kBAAkB,CAAC,GAAM,KAAK,CAAC,UAAU,CAAC;IACxE,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACjG,IAAI,IAAI,GAA4B,EAAE,CAAC;IACvC,IAAI,CAAC;QAAC,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,EAA6B,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,IAAI,GAAG,EAAE,CAAC;IAAC,CAAC;IAC9E,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED;qDACqD;AACrD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAwB,EAAE;IACjE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAM,EAAE,IAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACxF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACnF,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAC7B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,eAAe,EAAE,SAAS,GAAG,MAAM,EAAE;KACjD,CAAC,CAAC;IACH,IAAI,IAAI,GAA4B,EAAE,CAAC;IACvC,IAAI,CAAC;QAAC,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,EAA6B,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,IAAI,GAAG,EAAE,CAAC;IAAC,CAAC;IAC9E,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;AAC9C,CAAC"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
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.4",
|
|
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>",
|