@nac3/forge-cli 0.2.0-alpha.3 → 0.2.0-alpha.5

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.
@@ -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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"}
@@ -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 './voice_setup.js';
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":"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"}
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":"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"}
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":"AAqBA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI1C,eAAO,MAAM,cAAc,QAA8E,CAAC;AAG1G,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;iDACiD;AACjD,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAE,eAAoB,GACvD,OAAO,CAAC,cAAc,CAAC,CAmBzB;AAED;qDACqD;AACrD,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAc5F"}
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"}