@nac3/forge-cli 1.0.28 → 1.0.31

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.
Files changed (71) hide show
  1. package/dist/bin/yf.d.ts.map +1 -1
  2. package/dist/bin/yf.js +5 -0
  3. package/dist/bin/yf.js.map +1 -1
  4. package/dist/chat/claude.d.ts +13 -0
  5. package/dist/chat/claude.d.ts.map +1 -1
  6. package/dist/chat/claude.js +18 -5
  7. package/dist/chat/claude.js.map +1 -1
  8. package/dist/chat/claude_cli.d.ts.map +1 -1
  9. package/dist/chat/claude_cli.js +10 -0
  10. package/dist/chat/claude_cli.js.map +1 -1
  11. package/dist/chat/panel.d.ts.map +1 -1
  12. package/dist/chat/panel.js +111 -10
  13. package/dist/chat/panel.js.map +1 -1
  14. package/dist/chat/server.d.ts.map +1 -1
  15. package/dist/chat/server.js +35 -2
  16. package/dist/chat/server.js.map +1 -1
  17. package/dist/chat/tools.d.ts.map +1 -1
  18. package/dist/chat/tools.js +56 -34
  19. package/dist/chat/tools.js.map +1 -1
  20. package/dist/commands/federation.d.ts +17 -0
  21. package/dist/commands/federation.d.ts.map +1 -0
  22. package/dist/commands/federation.js +145 -0
  23. package/dist/commands/federation.js.map +1 -0
  24. package/dist/core/brain_capabilities.d.ts +64 -0
  25. package/dist/core/brain_capabilities.d.ts.map +1 -0
  26. package/dist/core/brain_capabilities.js +119 -0
  27. package/dist/core/brain_capabilities.js.map +1 -0
  28. package/dist/core/brain_config.d.ts +1 -1
  29. package/dist/core/brain_config.d.ts.map +1 -1
  30. package/dist/core/brain_config.js +7 -0
  31. package/dist/core/brain_config.js.map +1 -1
  32. package/dist/core/cost_router.d.ts +6 -0
  33. package/dist/core/cost_router.d.ts.map +1 -1
  34. package/dist/core/cost_router.js +122 -8
  35. package/dist/core/cost_router.js.map +1 -1
  36. package/dist/core/federation_config.d.ts +17 -0
  37. package/dist/core/federation_config.d.ts.map +1 -0
  38. package/dist/core/federation_config.js +77 -0
  39. package/dist/core/federation_config.js.map +1 -0
  40. package/dist/core/provider_keys.d.ts +1 -1
  41. package/dist/core/provider_keys.d.ts.map +1 -1
  42. package/dist/core/provider_keys.js +3 -0
  43. package/dist/core/provider_keys.js.map +1 -1
  44. package/dist/core/provider_models.d.ts.map +1 -1
  45. package/dist/core/provider_models.js +10 -0
  46. package/dist/core/provider_models.js.map +1 -1
  47. package/dist/llm/federation_client.d.ts +66 -0
  48. package/dist/llm/federation_client.d.ts.map +1 -0
  49. package/dist/llm/federation_client.js +166 -0
  50. package/dist/llm/federation_client.js.map +1 -0
  51. package/dist/llm/federation_host.d.ts +16 -0
  52. package/dist/llm/federation_host.d.ts.map +1 -0
  53. package/dist/llm/federation_host.js +132 -0
  54. package/dist/llm/federation_host.js.map +1 -0
  55. package/dist/llm/gemini_client.d.ts.map +1 -1
  56. package/dist/llm/gemini_client.js +15 -6
  57. package/dist/llm/gemini_client.js.map +1 -1
  58. package/dist/llm/multi_provider_client.d.ts.map +1 -1
  59. package/dist/llm/multi_provider_client.js +27 -0
  60. package/dist/llm/multi_provider_client.js.map +1 -1
  61. package/dist/llm/openai_client.d.ts +4 -0
  62. package/dist/llm/openai_client.d.ts.map +1 -1
  63. package/dist/llm/openai_client.js +18 -6
  64. package/dist/llm/openai_client.js.map +1 -1
  65. package/dist/llm/single_step.d.ts +63 -0
  66. package/dist/llm/single_step.d.ts.map +1 -0
  67. package/dist/llm/single_step.js +171 -0
  68. package/dist/llm/single_step.js.map +1 -0
  69. package/dist/version.d.ts +1 -1
  70. package/dist/version.js +1 -1
  71. package/package.json +1 -1
@@ -0,0 +1,119 @@
1
+ /** MIME types every vision-capable provider in our v1 set accepts. */
2
+ export const SUPPORTED_IMAGE_MEDIA_TYPES = [
3
+ 'image/png',
4
+ 'image/jpeg',
5
+ 'image/webp',
6
+ 'image/gif',
7
+ ];
8
+ /**
9
+ * Does this (provider, model) pair accept image input?
10
+ *
11
+ * Conservative by design: returns true only for model families we
12
+ * know are multimodal and whose client we have wired to format
13
+ * images. An unknown model id => false (so the router keeps looking
14
+ * for a known-good vision brain rather than sending images to a text
15
+ * model that will refuse).
16
+ */
17
+ export function isVisionCapable(provider, model) {
18
+ const m = (model || '').toLowerCase();
19
+ switch (provider) {
20
+ case 'anthropic':
21
+ /* Every shipping Claude (3.x / 4.x: opus, sonnet, haiku)
22
+ * accepts images on /v1/messages. */
23
+ return /claude/.test(m);
24
+ case 'openai':
25
+ /* gpt-4o family, gpt-4.1 family, gpt-4-turbo (vision), and the
26
+ * o-series reasoning models with vision. Excludes 3.5. */
27
+ return /gpt-4o|gpt-4\.1|gpt-4-turbo|^o[134]\b|^o[134]-/.test(m);
28
+ case 'google_ai':
29
+ /* Gemini 1.5 and 2.x are natively multimodal. */
30
+ return /gemini-(1\.5|2|3)/.test(m) || /gemini-(pro|flash)/.test(m);
31
+ case 'xai':
32
+ /* Grok vision variants (grok-2-vision, grok-4). */
33
+ return /vision|grok-4/.test(m);
34
+ case 'mistral':
35
+ /* Pixtral is Mistral's vision model. */
36
+ return /pixtral/.test(m);
37
+ case 'ollama':
38
+ /* Open-weight vision models the user can pull. Default text
39
+ * models (llama3.1, qwen2.5) are NOT vision. */
40
+ return /llava|llama3\.2-vision|moondream|bakllava|minicpm-v|qwen2\.5-?vl/.test(m);
41
+ case 'yujin_managed':
42
+ /* The managed proxy picks the model server-side; assume the
43
+ * server routes vision turns to a capable model + validates. */
44
+ return true;
45
+ case 'deepseek':
46
+ case 'cohere':
47
+ /* No vision endpoint wired for these. */
48
+ return false;
49
+ default:
50
+ return false;
51
+ }
52
+ }
53
+ /**
54
+ * Count image attachments across a set of chat turns. Structurally
55
+ * typed (no ChatMessage import) so it stays in the IO-free core.
56
+ */
57
+ export function countImageAttachments(messages) {
58
+ let n = 0;
59
+ for (const m of messages) {
60
+ if (m && Array.isArray(m.attachments))
61
+ n += m.attachments.length;
62
+ }
63
+ return n;
64
+ }
65
+ /** Defensive caps so a malformed / hostile client cannot blow up a
66
+ * turn with hundreds of huge images. ~6MB of bytes per image. */
67
+ const MAX_ATTACHMENTS = 8;
68
+ const MAX_B64_LEN = 8 * 1024 * 1024;
69
+ /**
70
+ * Validate + normalize a raw `attachments` payload from a chat
71
+ * request into ImageAttachment[]. Accepts several shapes a client
72
+ * might send: {media_type|mime, data|base64} or a full data URL in
73
+ * {url|data_url|data}. Strips the `data:...;base64,` prefix, maps
74
+ * image/jpg -> image/jpeg, drops anything not in the supported set
75
+ * or over the size cap. Never throws.
76
+ */
77
+ export function parseImageAttachments(raw) {
78
+ if (!Array.isArray(raw))
79
+ return [];
80
+ const out = [];
81
+ for (const item of raw) {
82
+ if (out.length >= MAX_ATTACHMENTS)
83
+ break;
84
+ if (!item || typeof item !== 'object')
85
+ continue;
86
+ const o = item;
87
+ let data = typeof o['data'] === 'string' ? o['data']
88
+ : typeof o['base64'] === 'string' ? o['base64']
89
+ : '';
90
+ let media = typeof o['media_type'] === 'string' ? o['media_type']
91
+ : typeof o['mime'] === 'string' ? o['mime']
92
+ : '';
93
+ const url = typeof o['url'] === 'string' ? o['url']
94
+ : typeof o['data_url'] === 'string' ? o['data_url']
95
+ : '';
96
+ const src = url || data;
97
+ const dm = /^data:([^;,]+);base64,(.*)$/s.exec(src);
98
+ if (dm) {
99
+ media = media || (dm[1] ?? '');
100
+ data = dm[2] ?? '';
101
+ }
102
+ if (!data || data.length > MAX_B64_LEN)
103
+ continue;
104
+ media = (media || 'image/png').toLowerCase().trim();
105
+ if (media === 'image/jpg')
106
+ media = 'image/jpeg';
107
+ if (!SUPPORTED_IMAGE_MEDIA_TYPES.includes(media))
108
+ continue;
109
+ const name = typeof o['name'] === 'string' ? o['name'].slice(0, 120) : undefined;
110
+ out.push(name ? { media_type: media, data, name } : { media_type: media, data });
111
+ }
112
+ return out;
113
+ }
114
+ /** The fallback shown when a multimodal turn arrives but no configured
115
+ * brain can do vision (no key/plan on any vision provider). */
116
+ export const NO_VISION_BRAIN_MESSAGE = 'Para realizar trabajo multimodal necesitas cargar una clave o un plan ' +
117
+ 'en algun brain multimodal (por ejemplo Anthropic/Claude, OpenAI gpt-4o ' +
118
+ 'o Google Gemini). Configuralo con `yf brain config` o en el panel de claves.';
119
+ //# sourceMappingURL=brain_capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain_capabilities.js","sourceRoot":"","sources":["../../src/core/brain_capabilities.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /** Provider id matches the slot prefix in the vault
2
2
  * (byok_<provider>_api_key). */
3
- export type BrainProvider = 'anthropic' | 'openai' | 'google_ai' | 'deepseek' | 'xai' | 'mistral' | 'cohere' | 'ollama' | 'yujin_managed';
3
+ export type BrainProvider = 'anthropic' | 'openai' | 'google_ai' | 'deepseek' | 'xai' | 'mistral' | 'cohere' | 'qwen' | 'zai' | 'ollama' | 'yujin_managed' | 'federation';
4
4
  export declare const ALL_BRAIN_PROVIDERS: readonly BrainProvider[];
5
5
  /** Vault slot name a given provider stores its key under. The
6
6
  * yujin_managed virtual provider has no client-side key (the
@@ -1 +1 @@
1
- {"version":3,"file":"brain_config.d.ts","sourceRoot":"","sources":["../../src/core/brain_config.ts"],"names":[],"mappings":"AA+BA;iCACiC;AACjC,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,QAAQ,GACR,WAAW,GACX,UAAU,GACV,KAAK,GACL,SAAS,GACT,QAAQ,GAKR,QAAQ,GAMR,eAAe,CAAC;AAEpB,eAAO,MAAM,mBAAmB,EAAE,SAAS,aAAa,EAIvD,CAAC;AAEF;;;;;oDAKoD;AACpD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAc7D;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,WAAW,CAAC;IACtB;oCACgC;IAChC,iBAAiB,EAAE,KAAK,GAAG,UAAU,CAAC;IACtC;;;2DAGuD;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB;;;;;+CAK2C;IAC3C,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;4CAGwC;IACxC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,kBAAkB,IAAI,WAAW,CAShD;AA0BD,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAeD,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAyB5D;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;AAED,gDAAgD;AAChD,wBAAsB,cAAc,CAClC,IAAI,EAAE,KAAK,GAAG,UAAU,EACxB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,CAKtB;AAED,mEAAmE;AACnE,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAKvF;AAED,iCAAiC;AACjC,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAI7D"}
1
+ {"version":3,"file":"brain_config.d.ts","sourceRoot":"","sources":["../../src/core/brain_config.ts"],"names":[],"mappings":"AA+BA;iCACiC;AACjC,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,QAAQ,GACR,WAAW,GACX,UAAU,GACV,KAAK,GACL,SAAS,GACT,QAAQ,GAKR,MAAM,GACN,KAAK,GAKL,QAAQ,GAMR,eAAe,GAMf,YAAY,CAAC;AAEjB,eAAO,MAAM,mBAAmB,EAAE,SAAS,aAAa,EAMvD,CAAC;AAEF;;;;;oDAKoD;AACpD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAmB7D;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,WAAW,CAAC;IACtB;oCACgC;IAChC,iBAAiB,EAAE,KAAK,GAAG,UAAU,CAAC;IACtC;;;2DAGuD;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB;;;;;+CAK2C;IAC3C,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;4CAGwC;IACxC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,kBAAkB,IAAI,WAAW,CAShD;AA0BD,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAeD,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAyB5D;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;AAED,gDAAgD;AAChD,wBAAsB,cAAc,CAClC,IAAI,EAAE,KAAK,GAAG,UAAU,EACxB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,CAKtB;AAED,mEAAmE;AACnE,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAKvF;AAED,iCAAiC;AACjC,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAI7D"}
@@ -30,8 +30,10 @@ import path from 'node:path';
30
30
  import os from 'node:os';
31
31
  export const ALL_BRAIN_PROVIDERS = [
32
32
  'anthropic', 'openai', 'google_ai', 'deepseek', 'xai', 'mistral', 'cohere',
33
+ 'qwen', 'zai',
33
34
  'ollama',
34
35
  'yujin_managed',
36
+ 'federation',
35
37
  ];
36
38
  /** Vault slot name a given provider stores its key under. The
37
39
  * yujin_managed virtual provider has no client-side key (the
@@ -48,10 +50,15 @@ export function vaultSlotForProvider(p) {
48
50
  case 'xai': return 'xai_api_key';
49
51
  case 'mistral': return 'mistral_api_key';
50
52
  case 'cohere': return 'cohere_api_key';
53
+ case 'qwen': return 'qwen_api_key';
54
+ case 'zai': return 'zai_api_key';
51
55
  /* ollama is keyless (local); the slot exists only for the
52
56
  * exhaustive switch -- getKey() will just return null. */
53
57
  case 'ollama': return 'ollama';
54
58
  case 'yujin_managed': return 'yujin_managed';
59
+ /* federation auth uses yf_federation_key (a raw vault slot,
60
+ * read directly by the fed client), not a byok_ slot. */
61
+ case 'federation': return 'yf_federation_key';
55
62
  }
56
63
  }
57
64
  export function defaultBrainConfig() {
@@ -1 +1 @@
1
- {"version":3,"file":"brain_config.js","sourceRoot":"","sources":["../../src/core/brain_config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brain_config.js","sourceRoot":"","sources":["../../src/core/brain_config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAoCzB,MAAM,CAAC,MAAM,mBAAmB,GAA6B;IAC3D,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ;IAC1E,MAAM,EAAE,KAAK;IACb,QAAQ;IACR,eAAe;IACf,YAAY;CACb,CAAC;AAEF;;;;;oDAKoD;AACpD,MAAM,UAAU,oBAAoB,CAAC,CAAgB;IACnD,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,WAAW,CAAC,CAAO,OAAO,mBAAmB,CAAC;QACnD,KAAK,QAAQ,CAAC,CAAU,OAAO,gBAAgB,CAAC;QAChD,KAAK,WAAW,CAAC,CAAO,OAAO,eAAe,CAAC;QAC/C,KAAK,UAAU,CAAC,CAAQ,OAAO,kBAAkB,CAAC;QAClD,KAAK,KAAK,CAAC,CAAa,OAAO,aAAa,CAAC;QAC7C,KAAK,SAAS,CAAC,CAAS,OAAO,iBAAiB,CAAC;QACjD,KAAK,QAAQ,CAAC,CAAU,OAAO,gBAAgB,CAAC;QAChD,KAAK,MAAM,CAAC,CAAY,OAAO,cAAc,CAAC;QAC9C,KAAK,KAAK,CAAC,CAAa,OAAO,aAAa,CAAC;QAC7C;mEAC2D;QAC3D,KAAK,QAAQ,CAAC,CAAU,OAAO,QAAQ,CAAC;QACxC,KAAK,eAAe,CAAC,CAAG,OAAO,eAAe,CAAC;QAC/C;kEAC0D;QAC1D,KAAK,YAAY,CAAC,CAAM,OAAO,mBAAmB,CAAC;IACrD,CAAC;AACH,CAAC;AAiCD,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,OAAO,EAAE,CAAC;QACV,GAAG,EAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,uBAAuB,EAAE;QACnE,QAAQ,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;QAC7D,iBAAiB,EAAE,UAAU;QAC7B,WAAW,EAAE,IAAI;QACjB,oBAAoB,EAAE,IAAI;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACzE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAU;IACnC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAClC,OAAQ,mBAAyC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;AAChG,CAAC;AAED;;uEAEuE;AACvE,MAAM,iBAAiB,GAA2B;IAChD,iBAAiB,EAAI,iBAAiB;IACtC,iBAAiB,EAAI,iBAAiB;IACtC,iBAAiB,EAAI,iBAAiB;IACtC,mBAAmB,EAAE,mBAAmB;IACxC,mBAAmB,EAAE,mBAAmB;IACxC,kBAAkB,EAAG,2BAA2B;CACjD,CAAC;AAEF,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,OAAO,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAU,EAAE,QAAqB;IAC7D,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACjD,MAAM,GAAG,GAAG,CAA4B,CAAC;IACzC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QACvE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;QAClB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;IACnB,OAAO;QACL,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,QAAQ;QACvC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QAClD,MAAM,GAAG,GAAgB;YACvB,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;YACzC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;YACxD,iBAAiB,EAAE,CAAC,CAAC,CAAC,iBAAiB,KAAK,KAAK,IAAI,CAAC,CAAC,iBAAiB,KAAK,UAAU,CAAC;gBACtF,CAAC,CAAC,CAAC,CAAC,iBAAiB;gBACrB,CAAC,CAAC,GAAG,CAAC,iBAAiB;YACzB;kDACsC;YACtC,WAAW,EAAE,CAAC,CAAC,WAAW,KAAK,KAAK;YACpC,oBAAoB,EAAE,CAAC,CAAC,oBAAoB,KAAK,KAAK;SACvD,CAAC;QACF,IAAI,CAAC,CAAC,cAAc,KAAK,MAAM,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAClE,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;QACxC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;QACjE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAgB;IACrD,MAAM,CAAC,GAAG,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAwB,EACxB,QAAuB,EACvB,KAAa;IAEb,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;IACpC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAChC,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAwB;IAC/D,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;IACpC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC7B,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iCAAiC;AACjC,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -10,6 +10,12 @@ export interface BrainSelection {
10
10
  reason: string;
11
11
  /** True when the chosen provider is wired at runtime. */
12
12
  runtime_wired: boolean;
13
+ /** Front 1 (multimodality) -- set when the turn carries image
14
+ * attachments but NO vision-capable brain has a key/plan. The
15
+ * chat server short-circuits with NO_VISION_BRAIN_MESSAGE instead
16
+ * of calling the (text-only) model, which would just say "no
17
+ * puedo". The selection fields still echo the would-be brain. */
18
+ multimodal_blocked?: boolean;
13
19
  }
14
20
  /** Inputs the router accepts. All optional. */
15
21
  export interface BrainSelectContext {
@@ -1 +1 @@
1
- {"version":3,"file":"cost_router.d.ts","sourceRoot":"","sources":["../../src/core/cost_router.ts"],"names":[],"mappings":"AA+CA,OAAO,EAEL,KAAK,aAAa,EAAE,KAAK,WAAW,EACrC,MAAM,mBAAmB,CAAC;AAS3B,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC;IACzB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,aAAa,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IACnC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,aAAa,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IACnC;;;yDAGqD;IACrD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;oCAKgC;IAChC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;iCAK6B;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;kBAKkB;AAClB,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBvG;AAED;;wCAEwC;AACxC,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAe3I;AAiFD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,WAAW,GAAG;IACrE,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,CAOA;AAKD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,KAAK,GAAG,UAAU,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,IAAI,CAAC;IACjE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAgND;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,GAAE,kBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC,CAuH9F;AAwDD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGlE"}
1
+ {"version":3,"file":"cost_router.d.ts","sourceRoot":"","sources":["../../src/core/cost_router.ts"],"names":[],"mappings":"AA+CA,OAAO,EAEL,KAAK,aAAa,EAAE,KAAK,WAAW,EACrC,MAAM,mBAAmB,CAAC;AAU3B,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC;IACzB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,aAAa,EAAE,OAAO,CAAC;IACvB;;;;sEAIkE;IAClE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,aAAa,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IACnC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,aAAa,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IACnC;;;yDAGqD;IACrD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;oCAKgC;IAChC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;iCAK6B;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;kBAKkB;AAClB,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBvG;AAED;;wCAEwC;AACxC,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAe3I;AAiFD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,WAAW,GAAG;IACrE,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,CAOA;AAKD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,KAAK,GAAG,UAAU,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,IAAI,CAAC;IACjE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AA4TD;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,GAAE,kBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC,CA8H9F;AAwDD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGlE"}
@@ -50,6 +50,7 @@ import { getKey } from './provider_keys.js';
50
50
  import { getVerbTier, FRONTIER_WORKFLOW_PHASES, } from '../nac3/verb_tier_map.js';
51
51
  import { classifyGate } from './reasoning_gate.js';
52
52
  import { classifyTurn } from './turn_classifier.js';
53
+ import { isVisionCapable } from './brain_capabilities.js';
53
54
  /** alpha.59z.7 -- heuristic: does the user text look like a
54
55
  * request to violate one of the active SQ rules? Catches the
55
56
  * most common patterns where the user pushes Forge to skip
@@ -104,8 +105,8 @@ export function looksLikePhaseCrossover(userText, workflowPhase) {
104
105
  * src/llm/multi_provider_client.ts. */
105
106
  const RUNTIME_WIRED = new Set([
106
107
  'anthropic', 'google_ai', 'openai', 'deepseek',
107
- 'xai', 'mistral', 'cohere', 'ollama',
108
- 'yujin_managed',
108
+ 'xai', 'mistral', 'cohere', 'qwen', 'zai', 'ollama',
109
+ 'yujin_managed', 'federation',
109
110
  ]);
110
111
  function brainLogPath() {
111
112
  const home = process.env.HOME || process.env.USERPROFILE || os.homedir();
@@ -389,6 +390,112 @@ async function decideSmartAutoTier(ctx, cfg) {
389
390
  telemetry,
390
391
  };
391
392
  }
393
+ /**
394
+ * Front 1 (multimodality) -- find a vision-capable brain that has a
395
+ * key (or is the keyless managed proxy), in priority order:
396
+ * 1. the configured frontier brain, if it is vision-capable;
397
+ * 2. the configured eco brain, if it is vision-capable;
398
+ * 3. the v1 vision defaults: anthropic, openai, google_ai.
399
+ * Returns the first whose provider is runtime-wired AND has a usable
400
+ * credential. Null when none is available -> the caller blocks the
401
+ * turn with NO_VISION_BRAIN_MESSAGE.
402
+ */
403
+ async function resolveVisionBrain(cfg) {
404
+ const candidates = [];
405
+ for (const t of [cfg.frontier, cfg.eco]) {
406
+ if (isVisionCapable(t.provider, t.model))
407
+ candidates.push({ provider: t.provider, model: t.model });
408
+ }
409
+ /* Sensible default vision model per provider (used only when the
410
+ * provider is not already the configured one). */
411
+ candidates.push({
412
+ provider: 'anthropic',
413
+ model: cfg.frontier.provider === 'anthropic' ? cfg.frontier.model : 'claude-sonnet-4-6',
414
+ });
415
+ candidates.push({ provider: 'openai', model: 'gpt-4o' });
416
+ candidates.push({
417
+ provider: 'google_ai',
418
+ model: cfg.eco.provider === 'google_ai' ? cfg.eco.model : 'gemini-2.5-flash',
419
+ });
420
+ const seen = new Set();
421
+ for (const c of candidates) {
422
+ const dedupKey = c.provider + '|' + c.model;
423
+ if (seen.has(dedupKey))
424
+ continue;
425
+ seen.add(dedupKey);
426
+ if (!RUNTIME_WIRED.has(c.provider))
427
+ continue;
428
+ let key = null;
429
+ try {
430
+ key = await getKey(vaultSlotForProvider(c.provider));
431
+ }
432
+ catch {
433
+ key = null;
434
+ }
435
+ if (key)
436
+ return { provider: c.provider, model: c.model, api_key: key };
437
+ }
438
+ return null;
439
+ }
440
+ /**
441
+ * Front 1 (multimodality) -- if the turn carries image attachments,
442
+ * make sure the chosen brain can actually SEE them. When the
443
+ * tier-selected brain is vision-capable + usable, keep it (the common
444
+ * case: Claude / Gemini defaults). Otherwise hop to a vision brain
445
+ * that has a key. When none exists, flag multimodal_blocked so the
446
+ * server returns the BYOK fallback message instead of a useless "no
447
+ * puedo" from a text model.
448
+ */
449
+ async function maybeApplyVisionRouting(sel, ctx, cfg) {
450
+ const n = ctx.attachments ?? 0;
451
+ if (n <= 0)
452
+ return sel;
453
+ const usableNow = isVisionCapable(sel.provider, sel.model) &&
454
+ (sel.provider === 'yujin_managed' || sel.api_key !== null);
455
+ if (usableNow)
456
+ return { ...sel, reason: sel.reason + ' +vision(keep)' };
457
+ const cand = await resolveVisionBrain(cfg);
458
+ if (cand) {
459
+ return {
460
+ ...sel,
461
+ provider: cand.provider,
462
+ model: cand.model,
463
+ api_key: cand.api_key,
464
+ runtime_wired: RUNTIME_WIRED.has(cand.provider),
465
+ reason: sel.reason + ' -> vision:' + cand.provider + '/' + cand.model,
466
+ };
467
+ }
468
+ return { ...sel, multimodal_blocked: true, reason: sel.reason + ' +vision(BLOCKED:no key)' };
469
+ }
470
+ /**
471
+ * F4 -- when this install is an active federation CHILD, every turn routes to
472
+ * the remote parent's brain regardless of the local brain config. The tier is
473
+ * still computed locally (the parent uses it as a hint). v1 does not federate
474
+ * multimodal turns, so a vision-blocked turn stays blocked.
475
+ */
476
+ async function maybeApplyFederation(sel) {
477
+ if (sel.multimodal_blocked)
478
+ return sel;
479
+ try {
480
+ const { isFederationActive } = await import('./federation_config.js');
481
+ if (await isFederationActive()) {
482
+ return {
483
+ ...sel,
484
+ provider: 'federation',
485
+ api_key: null,
486
+ runtime_wired: true,
487
+ reason: sel.reason + ' -> federation(parent)',
488
+ };
489
+ }
490
+ }
491
+ catch { /* no federation config -> normal routing */ }
492
+ return sel;
493
+ }
494
+ /** Apply the post-tier provider overrides in order: vision, then federation. */
495
+ async function finalizeSelection(sel, ctx, cfg) {
496
+ const visioned = await maybeApplyVisionRouting(sel, ctx, cfg);
497
+ return maybeApplyFederation(visioned);
498
+ }
392
499
  /**
393
500
  * Full routing decision. Reads brain_config + vault to resolve a
394
501
  * concrete provider+model+key. Logs the decision.
@@ -427,14 +534,17 @@ export async function selectBrainForTurn(ctx = {}) {
427
534
  reason: (managed ? '[managed] ' : '') + 'next_turn_hint:' + hint.reason + ' -> frontier',
428
535
  runtime_wired: RUNTIME_WIRED.has(provider),
429
536
  };
537
+ const visioned = await finalizeSelection(sel, ctx, cfg);
430
538
  await logDecision({
431
- tier: sel.tier, provider: sel.provider, model: sel.model, reason: sel.reason,
432
- has_key: apiKey !== null, runtime_wired: sel.runtime_wired,
539
+ tier: visioned.tier, provider: visioned.provider, model: visioned.model, reason: visioned.reason,
540
+ has_key: visioned.api_key !== null, runtime_wired: visioned.runtime_wired,
433
541
  verb_id: ctx.verb_id, workflow_phase: ctx.workflow_phase,
434
542
  user_override: ctx.user_override,
543
+ attachments: ctx.attachments ?? 0,
544
+ multimodal_blocked: visioned.multimodal_blocked === true,
435
545
  next_turn_hint: hint,
436
546
  });
437
- return sel;
547
+ return visioned;
438
548
  }
439
549
  const cheap = decideCheapTier(ctx, cfg);
440
550
  let tier;
@@ -495,7 +605,7 @@ export async function selectBrainForTurn(ctx = {}) {
495
605
  if (managed) {
496
606
  reason = '[managed] ' + reason;
497
607
  }
498
- const sel = {
608
+ const baseSel = {
499
609
  tier,
500
610
  provider,
501
611
  model,
@@ -503,16 +613,20 @@ export async function selectBrainForTurn(ctx = {}) {
503
613
  reason,
504
614
  runtime_wired: wired,
505
615
  };
616
+ /* Front 1 vision routing + F4 federation override (in order). */
617
+ const sel = await finalizeSelection(baseSel, ctx, cfg);
506
618
  const logEntry = {
507
619
  tier: sel.tier,
508
620
  provider: sel.provider,
509
621
  model: sel.model,
510
622
  reason: sel.reason,
511
- has_key: apiKey !== null,
512
- runtime_wired: wired,
623
+ has_key: sel.api_key !== null,
624
+ runtime_wired: sel.runtime_wired,
513
625
  verb_id: ctx.verb_id,
514
626
  workflow_phase: ctx.workflow_phase,
515
627
  user_override: ctx.user_override,
628
+ attachments: ctx.attachments ?? 0,
629
+ multimodal_blocked: sel.multimodal_blocked === true,
516
630
  };
517
631
  if (smartTelemetry) {
518
632
  logEntry.smart_auto = smartTelemetry;
@@ -1 +1 @@
1
- {"version":3,"file":"cost_router.js","sourceRoot":"","sources":["../../src/core/cost_router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost_router.js","sourceRoot":"","sources":["../../src/core/cost_router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface FederationConfig {
2
+ active: boolean;
3
+ parent_handle: string;
4
+ fed_handle: string;
5
+ base_url: string;
6
+ joined_at: string;
7
+ }
8
+ export declare function readFederationConfig(): Promise<FederationConfig | null>;
9
+ export declare function writeFederationConfig(cfg: FederationConfig): Promise<void>;
10
+ /** Remove the federation config (leave). The vault key is left in place
11
+ * (harmless without the config; re-join overwrites it). */
12
+ export declare function clearFederationConfig(): Promise<void>;
13
+ export declare function setFederationKey(key: string): Promise<void>;
14
+ export declare function getFederationKey(): Promise<string | null>;
15
+ /** True when a child is actively federated to a parent. */
16
+ export declare function isFederationActive(): Promise<boolean>;
17
+ //# sourceMappingURL=federation_config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation_config.d.ts","sourceRoot":"","sources":["../../src/core/federation_config.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAa7E;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhF;AAED;4DAC4D;AAC5D,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAK/D;AAED,2DAA2D;AAC3D,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG3D"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * F4 brain federation -- child-side config (2026-06-20).
3
+ *
4
+ * When a Forge install JOINS a parent (yf federation join <token>), it stores:
5
+ * - metadata (parent_handle, fed_handle, base_url, joined_at) in
6
+ * <config>/federation.json (mode 0600);
7
+ * - the derived per-link signing key in the vault slot
8
+ * 'yf_federation_key' (a raw slot, like yf_handle_key -- NOT a byok_
9
+ * provider key, so it bypasses provider_keys' allowlist and is read
10
+ * directly here).
11
+ *
12
+ * While a federation config is `active`, the child's brain config points both
13
+ * tiers at provider 'federation' so every turn routes to the parent's brain.
14
+ *
15
+ * ASCII-only.
16
+ */
17
+ import { promises as fs } from 'node:fs';
18
+ import path from 'node:path';
19
+ import os from 'node:os';
20
+ import { Vault } from '../vault/store.js';
21
+ import { configDir } from '../license/index.js';
22
+ const FED_KEY_SLOT = 'yf_federation_key';
23
+ function fedConfigPath() {
24
+ const home = process.env.HOME || process.env.USERPROFILE || os.homedir();
25
+ const base = process.env.YF_CONFIG_DIR || path.join(home, '.yujin-forge');
26
+ return path.join(base, 'federation.json');
27
+ }
28
+ export async function readFederationConfig() {
29
+ try {
30
+ const raw = await fs.readFile(fedConfigPath(), 'utf-8');
31
+ const j = JSON.parse(raw);
32
+ if (!j || typeof j.fed_handle !== 'string' || typeof j.parent_handle !== 'string')
33
+ return null;
34
+ return {
35
+ active: j.active === true,
36
+ parent_handle: j.parent_handle,
37
+ fed_handle: j.fed_handle,
38
+ base_url: typeof j.base_url === 'string' ? j.base_url : '',
39
+ joined_at: typeof j.joined_at === 'string' ? j.joined_at : '',
40
+ };
41
+ }
42
+ catch {
43
+ return null;
44
+ }
45
+ }
46
+ export async function writeFederationConfig(cfg) {
47
+ const p = fedConfigPath();
48
+ await fs.mkdir(path.dirname(p), { recursive: true });
49
+ await fs.writeFile(p, JSON.stringify(cfg, null, 2) + '\n', { mode: 0o600 });
50
+ }
51
+ /** Remove the federation config (leave). The vault key is left in place
52
+ * (harmless without the config; re-join overwrites it). */
53
+ export async function clearFederationConfig() {
54
+ try {
55
+ await fs.unlink(fedConfigPath());
56
+ }
57
+ catch { /* not joined */ }
58
+ }
59
+ export async function setFederationKey(key) {
60
+ const vault = await Vault.open({ configDir: configDir() });
61
+ await vault.set(FED_KEY_SLOT, key);
62
+ }
63
+ export async function getFederationKey() {
64
+ try {
65
+ const vault = await Vault.open({ configDir: configDir() });
66
+ return vault.has(FED_KEY_SLOT) ? vault.get(FED_KEY_SLOT) : null;
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
72
+ /** True when a child is actively federated to a parent. */
73
+ export async function isFederationActive() {
74
+ const cfg = await readFederationConfig();
75
+ return !!(cfg && cfg.active);
76
+ }
77
+ //# sourceMappingURL=federation_config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation_config.js","sourceRoot":"","sources":["../../src/core/federation_config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- declare const ALLOWED_SLOTS: readonly ["anthropic_api_key", "openai_api_key", "google_ai_key", "deepseek_api_key", "xai_api_key", "mistral_api_key", "cohere_api_key", "google_stt_key", "google_tts_key", "whisper_api_key", "elevenlabs_api_key", "yujin_admin_key"];
1
+ declare const ALLOWED_SLOTS: readonly ["anthropic_api_key", "openai_api_key", "google_ai_key", "deepseek_api_key", "xai_api_key", "mistral_api_key", "cohere_api_key", "qwen_api_key", "zai_api_key", "google_stt_key", "google_tts_key", "whisper_api_key", "elevenlabs_api_key", "yujin_admin_key"];
2
2
  export type ProviderSlot = (typeof ALLOWED_SLOTS)[number];
3
3
  export declare function listAllowedSlots(): readonly string[];
4
4
  export declare function isAllowedSlot(s: string): s is ProviderSlot;
@@ -1 +1 @@
1
- {"version":3,"file":"provider_keys.d.ts","sourceRoot":"","sources":["../../src/core/provider_keys.ts"],"names":[],"mappings":"AAkCA,QAAA,MAAM,aAAa,2OAyBT,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,wBAAgB,gBAAgB,IAAI,SAAS,MAAM,EAAE,CAEpD;AAgBD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,YAAY,CAM1D;AAqBD,+BAA+B;AAC/B,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAID;;;;eAIe;AACf,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC,CAgFD;AAED;;kBAEkB;AAClB,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOjE;AAED,0DAA0D;AAC1D,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1F;AAED,qCAAqC;AACrC,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK3D;AAED,oEAAoE;AACpE,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAQnE;AAED;;;;6BAI6B;AAC7B,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAY/E"}
1
+ {"version":3,"file":"provider_keys.d.ts","sourceRoot":"","sources":["../../src/core/provider_keys.ts"],"names":[],"mappings":"AAkCA,QAAA,MAAM,aAAa,0QA4BT,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,wBAAgB,gBAAgB,IAAI,SAAS,MAAM,EAAE,CAEpD;AAgBD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,YAAY,CAM1D;AAqBD,+BAA+B;AAC/B,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAID;;;;eAIe;AACf,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC,CAgFD;AAED;;kBAEkB;AAClB,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOjE;AAED,0DAA0D;AAC1D,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1F;AAED,qCAAqC;AACrC,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK3D;AAED,oEAAoE;AACpE,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAQnE;AAED;;;;6BAI6B;AAC7B,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAY/E"}
@@ -44,6 +44,9 @@ const ALLOWED_SLOTS = [
44
44
  'xai_api_key',
45
45
  'mistral_api_key',
46
46
  'cohere_api_key',
47
+ /* F4 -- low-cost challengers (OpenAI-compatible). */
48
+ 'qwen_api_key',
49
+ 'zai_api_key',
47
50
  /* Voice providers (decoupled from brain selection). */
48
51
  'google_stt_key',
49
52
  'google_tts_key',