fixo-cli 1.0.4 → 2.0.0

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.

Potentially problematic release.


This version of fixo-cli might be problematic. Click here for more details.

Files changed (199) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +18 -14
  3. package/dist/agent/agent-client.d.ts +28 -6
  4. package/dist/agent/agent-client.d.ts.map +1 -1
  5. package/dist/agent/agent-client.js +118 -39
  6. package/dist/agent/agent-client.js.map +1 -1
  7. package/dist/agent/agent-pool.d.ts +55 -6
  8. package/dist/agent/agent-pool.d.ts.map +1 -1
  9. package/dist/agent/agent-pool.js +120 -20
  10. package/dist/agent/agent-pool.js.map +1 -1
  11. package/dist/agent/auto-verifier.d.ts +55 -0
  12. package/dist/agent/auto-verifier.d.ts.map +1 -0
  13. package/dist/agent/auto-verifier.js +50 -0
  14. package/dist/agent/auto-verifier.js.map +1 -0
  15. package/dist/agent/command-parser.d.ts.map +1 -1
  16. package/dist/agent/command-parser.js +176 -0
  17. package/dist/agent/command-parser.js.map +1 -1
  18. package/dist/agent/context-builder.d.ts +24 -0
  19. package/dist/agent/context-builder.d.ts.map +1 -0
  20. package/dist/agent/context-builder.js +197 -0
  21. package/dist/agent/context-builder.js.map +1 -0
  22. package/dist/agent/conversation.d.ts +14 -1
  23. package/dist/agent/conversation.d.ts.map +1 -1
  24. package/dist/agent/conversation.js +53 -7
  25. package/dist/agent/conversation.js.map +1 -1
  26. package/dist/agent/mcp-bridge.js +1 -1
  27. package/dist/agent/mcp-bridge.js.map +1 -1
  28. package/dist/agent/orchestrator.d.ts +45 -0
  29. package/dist/agent/orchestrator.d.ts.map +1 -1
  30. package/dist/agent/orchestrator.js +140 -3
  31. package/dist/agent/orchestrator.js.map +1 -1
  32. package/dist/agent/parser-adapter.d.ts +17 -0
  33. package/dist/agent/parser-adapter.d.ts.map +1 -1
  34. package/dist/agent/parser-adapter.js +254 -2
  35. package/dist/agent/parser-adapter.js.map +1 -1
  36. package/dist/agent/predictive-gate.d.ts.map +1 -1
  37. package/dist/agent/predictive-gate.js +4 -1
  38. package/dist/agent/predictive-gate.js.map +1 -1
  39. package/dist/agent/providers-manager.d.ts +5 -0
  40. package/dist/agent/providers-manager.d.ts.map +1 -1
  41. package/dist/agent/providers-manager.js +119 -8
  42. package/dist/agent/providers-manager.js.map +1 -1
  43. package/dist/agent/repo-map.d.ts +18 -1
  44. package/dist/agent/repo-map.d.ts.map +1 -1
  45. package/dist/agent/repo-map.js +144 -54
  46. package/dist/agent/repo-map.js.map +1 -1
  47. package/dist/agent/retry.js +1 -2
  48. package/dist/agent/retry.js.map +1 -1
  49. package/dist/agent/single-agent.d.ts.map +1 -1
  50. package/dist/agent/single-agent.js +129 -22
  51. package/dist/agent/single-agent.js.map +1 -1
  52. package/dist/agent/skills.d.ts.map +1 -1
  53. package/dist/agent/skills.js +2 -1
  54. package/dist/agent/skills.js.map +1 -1
  55. package/dist/agent/subagent.js +2 -2
  56. package/dist/agent/subagent.js.map +1 -1
  57. package/dist/agent/task-router.d.ts +46 -0
  58. package/dist/agent/task-router.d.ts.map +1 -0
  59. package/dist/agent/task-router.js +352 -0
  60. package/dist/agent/task-router.js.map +1 -0
  61. package/dist/agent/telemetry.d.ts +29 -1
  62. package/dist/agent/telemetry.d.ts.map +1 -1
  63. package/dist/agent/telemetry.js +25 -10
  64. package/dist/agent/telemetry.js.map +1 -1
  65. package/dist/agent/tool-definitions.d.ts +3 -0
  66. package/dist/agent/tool-definitions.d.ts.map +1 -0
  67. package/dist/agent/tool-definitions.js +519 -0
  68. package/dist/agent/tool-definitions.js.map +1 -0
  69. package/dist/agent/tool-executor.d.ts +6 -1
  70. package/dist/agent/tool-executor.d.ts.map +1 -1
  71. package/dist/agent/tool-executor.js +99 -553
  72. package/dist/agent/tool-executor.js.map +1 -1
  73. package/dist/agent/tools/command-tools.d.ts +6 -0
  74. package/dist/agent/tools/command-tools.d.ts.map +1 -0
  75. package/dist/agent/tools/command-tools.js +104 -0
  76. package/dist/agent/tools/command-tools.js.map +1 -0
  77. package/dist/agent/tools/file-tools.d.ts +15 -0
  78. package/dist/agent/tools/file-tools.d.ts.map +1 -0
  79. package/dist/agent/tools/file-tools.js +551 -0
  80. package/dist/agent/tools/file-tools.js.map +1 -0
  81. package/dist/agent/tools/todo-tools.d.ts +3 -0
  82. package/dist/agent/tools/todo-tools.d.ts.map +1 -0
  83. package/dist/agent/tools/todo-tools.js +70 -0
  84. package/dist/agent/tools/todo-tools.js.map +1 -0
  85. package/dist/agent/web-impl.d.ts.map +1 -1
  86. package/dist/agent/web-impl.js +45 -0
  87. package/dist/agent/web-impl.js.map +1 -1
  88. package/dist/agent/worker-agent.d.ts +3 -1
  89. package/dist/agent/worker-agent.d.ts.map +1 -1
  90. package/dist/agent/worker-agent.js +51 -14
  91. package/dist/agent/worker-agent.js.map +1 -1
  92. package/dist/config.d.ts +242 -0
  93. package/dist/config.d.ts.map +1 -1
  94. package/dist/config.js +79 -0
  95. package/dist/config.js.map +1 -1
  96. package/dist/git/git-manager.d.ts +33 -2
  97. package/dist/git/git-manager.d.ts.map +1 -1
  98. package/dist/git/git-manager.js +111 -15
  99. package/dist/git/git-manager.js.map +1 -1
  100. package/dist/git/git-ops.d.ts.map +1 -1
  101. package/dist/git/git-ops.js +2 -1
  102. package/dist/git/git-ops.js.map +1 -1
  103. package/dist/index.js +85 -8
  104. package/dist/index.js.map +1 -1
  105. package/dist/lsp/lsp-manager.js +1 -1
  106. package/dist/lsp/lsp-manager.js.map +1 -1
  107. package/dist/model-outcomes.d.ts.map +1 -1
  108. package/dist/model-outcomes.js +2 -1
  109. package/dist/model-outcomes.js.map +1 -1
  110. package/dist/planner.d.ts +0 -9
  111. package/dist/planner.d.ts.map +1 -1
  112. package/dist/planner.js +0 -9
  113. package/dist/planner.js.map +1 -1
  114. package/dist/project-memory.d.ts +12 -1
  115. package/dist/project-memory.d.ts.map +1 -1
  116. package/dist/project-memory.js +8 -6
  117. package/dist/project-memory.js.map +1 -1
  118. package/dist/runtime/loop-mitigation.d.ts +78 -7
  119. package/dist/runtime/loop-mitigation.d.ts.map +1 -1
  120. package/dist/runtime/loop-mitigation.js +122 -9
  121. package/dist/runtime/loop-mitigation.js.map +1 -1
  122. package/dist/runtime/os-sandbox.d.ts +100 -0
  123. package/dist/runtime/os-sandbox.d.ts.map +1 -0
  124. package/dist/runtime/os-sandbox.js +246 -0
  125. package/dist/runtime/os-sandbox.js.map +1 -0
  126. package/dist/runtime/run-inventory.d.ts +17 -0
  127. package/dist/runtime/run-inventory.d.ts.map +1 -0
  128. package/dist/runtime/run-inventory.js +49 -0
  129. package/dist/runtime/run-inventory.js.map +1 -0
  130. package/dist/runtime/staging.d.ts.map +1 -1
  131. package/dist/runtime/staging.js +4 -1
  132. package/dist/runtime/staging.js.map +1 -1
  133. package/dist/runtime/task-session.d.ts +14 -0
  134. package/dist/runtime/task-session.d.ts.map +1 -1
  135. package/dist/runtime/task-session.js +26 -0
  136. package/dist/runtime/task-session.js.map +1 -1
  137. package/dist/setup-wizard.d.ts +11 -3
  138. package/dist/setup-wizard.d.ts.map +1 -1
  139. package/dist/setup-wizard.js +113 -15
  140. package/dist/setup-wizard.js.map +1 -1
  141. package/dist/types.d.ts +8 -0
  142. package/dist/types.d.ts.map +1 -1
  143. package/dist/ui/commands/context-commands.d.ts +7 -0
  144. package/dist/ui/commands/context-commands.d.ts.map +1 -0
  145. package/dist/ui/commands/context-commands.js +241 -0
  146. package/dist/ui/commands/context-commands.js.map +1 -0
  147. package/dist/ui/commands/index.d.ts +3 -0
  148. package/dist/ui/commands/index.d.ts.map +1 -0
  149. package/dist/ui/commands/index.js +46 -0
  150. package/dist/ui/commands/index.js.map +1 -0
  151. package/dist/ui/commands/info-commands.d.ts +15 -0
  152. package/dist/ui/commands/info-commands.d.ts.map +1 -0
  153. package/dist/ui/commands/info-commands.js +122 -0
  154. package/dist/ui/commands/info-commands.js.map +1 -0
  155. package/dist/ui/commands/model-commands.d.ts +5 -0
  156. package/dist/ui/commands/model-commands.d.ts.map +1 -0
  157. package/dist/ui/commands/model-commands.js +417 -0
  158. package/dist/ui/commands/model-commands.js.map +1 -0
  159. package/dist/ui/commands/session-commands.d.ts +5 -0
  160. package/dist/ui/commands/session-commands.d.ts.map +1 -0
  161. package/dist/ui/commands/session-commands.js +154 -0
  162. package/dist/ui/commands/session-commands.js.map +1 -0
  163. package/dist/ui/commands/task-commands.d.ts +8 -0
  164. package/dist/ui/commands/task-commands.d.ts.map +1 -0
  165. package/dist/ui/commands/task-commands.js +152 -0
  166. package/dist/ui/commands/task-commands.js.map +1 -0
  167. package/dist/ui/commands/types.d.ts +46 -0
  168. package/dist/ui/commands/types.d.ts.map +1 -0
  169. package/dist/ui/commands/types.js +2 -0
  170. package/dist/ui/commands/types.js.map +1 -0
  171. package/dist/ui/commands/workspace-commands.d.ts +8 -0
  172. package/dist/ui/commands/workspace-commands.d.ts.map +1 -0
  173. package/dist/ui/commands/workspace-commands.js +131 -0
  174. package/dist/ui/commands/workspace-commands.js.map +1 -0
  175. package/dist/ui/loading-animation.d.ts +24 -0
  176. package/dist/ui/loading-animation.d.ts.map +1 -0
  177. package/dist/ui/loading-animation.js +123 -0
  178. package/dist/ui/loading-animation.js.map +1 -0
  179. package/dist/ui/markdown-stream.js +2 -2
  180. package/dist/ui/markdown-stream.js.map +1 -1
  181. package/dist/ui/prompt.d.ts +7 -0
  182. package/dist/ui/prompt.d.ts.map +1 -1
  183. package/dist/ui/prompt.js +435 -1214
  184. package/dist/ui/prompt.js.map +1 -1
  185. package/dist/ui/render-primitives.d.ts +6 -0
  186. package/dist/ui/render-primitives.d.ts.map +1 -1
  187. package/dist/ui/render-primitives.js +30 -13
  188. package/dist/ui/render-primitives.js.map +1 -1
  189. package/dist/ui/render.d.ts.map +1 -1
  190. package/dist/ui/render.js +2 -0
  191. package/dist/ui/render.js.map +1 -1
  192. package/package.json +17 -3
  193. package/scripts/check-vendor-wasm.js +11 -0
  194. package/vendor/tree-sitter-go.wasm +0 -0
  195. package/vendor/tree-sitter-javascript.wasm +0 -0
  196. package/vendor/tree-sitter-python.wasm +0 -0
  197. package/vendor/tree-sitter-rust.wasm +0 -0
  198. package/vendor/tree-sitter-tsx.wasm +0 -0
  199. package/vendor/tree-sitter-typescript.wasm +0 -0
@@ -105,6 +105,11 @@ export class TreeSitterAdapter {
105
105
  supported = true;
106
106
  parser = null;
107
107
  initialised = false;
108
+ /** Lazily-loaded language grammars, keyed by LanguageId. The `bash`
109
+ * grammar is loaded eagerly in {@link init} because the shell-
110
+ * command parser path runs on virtually every tool call. The other
111
+ * languages are loaded on demand by {@link loadLanguage}. */
112
+ languages = new Map();
108
113
  async init() {
109
114
  if (this.initialised) {
110
115
  return { ok: this.supported };
@@ -129,12 +134,12 @@ export class TreeSitterAdapter {
129
134
  const Bash = await LanguageCtor.load(bashWasm);
130
135
  this.parser = new ParserCtor();
131
136
  this.parser.setLanguage(Bash);
137
+ this.languages.set('bash', Bash);
132
138
  this.supported = true;
133
139
  return { ok: true };
134
140
  }
135
141
  catch (err) {
136
142
  const reason = err instanceof Error ? err.message : String(err);
137
- // eslint-disable-next-line no-console
138
143
  console.warn(`\u26A0 Tree-Sitter WASM unavailable (${reason}). Falling back to regex parser. ` +
139
144
  `Performance reduced; accuracy may vary.`);
140
145
  this.parser = null;
@@ -142,8 +147,68 @@ export class TreeSitterAdapter {
142
147
  return { ok: false, reason };
143
148
  }
144
149
  }
150
+ /**
151
+ * Lazily load a language grammar from the vendored WASM. Idempotent.
152
+ * Returns `true` if the language is ready for tree-sitter-based
153
+ * extraction; `false` if the WASM is missing or fails to load
154
+ * (callers will fall back to the regex extractor).
155
+ *
156
+ * Pre-warm a language before calling {@link extractSymbols} in
157
+ * hot paths \u2014 extractSymbols itself is synchronous (see why in
158
+ * the {@link ParserAdapter} interface) and will silently fall
159
+ * through to the regex path if the grammar isn't loaded yet.
160
+ */
161
+ async loadLanguage(lang) {
162
+ if (!this.parser || !this.supported)
163
+ return false;
164
+ if (this.languages.has(lang))
165
+ return true;
166
+ const wasmFile = wasmFileForLanguage(lang);
167
+ if (!wasmFile)
168
+ return false;
169
+ const wasmPath = resolveVendorWasm(wasmFile);
170
+ if (!wasmPath)
171
+ return false;
172
+ try {
173
+ const grammar = await LanguageCtor.load(wasmPath);
174
+ this.languages.set(lang, grammar);
175
+ return true;
176
+ }
177
+ catch {
178
+ // safe: a single missing/incompatible grammar must not break
179
+ // unrelated languages or the shell path.
180
+ return false;
181
+ }
182
+ }
145
183
  extractSymbols(source, language) {
146
- return regexExtractSymbols(source, language);
184
+ const grammar = this.languages.get(language);
185
+ if (!grammar || !this.parser) {
186
+ return regexExtractSymbols(source, language);
187
+ }
188
+ try {
189
+ this.parser.setLanguage(grammar);
190
+ const tree = this.parser.parse(source);
191
+ const out = extractSymbolsFromTree(tree.rootNode, language);
192
+ // Restore the parser to its eagerly-loaded bash grammar so the
193
+ // command-parser path stays correct after a symbol extraction.
194
+ const bash = this.languages.get('bash');
195
+ if (bash)
196
+ this.parser.setLanguage(bash);
197
+ // Empty result on a successful parse usually means the source
198
+ // had no top-level declarations \u2014 but it's also the failure
199
+ // mode of an unfamiliar dialect. Fall through to the regex
200
+ // extractor in that case as a belt-and-braces safety net; if
201
+ // the regex agrees there are none, we still return an empty
202
+ // array.
203
+ if (out.length === 0)
204
+ return regexExtractSymbols(source, language);
205
+ return out;
206
+ }
207
+ catch {
208
+ // safe: any tree-sitter failure (mismatched dialect, corrupt
209
+ // source, etc.) falls back to the regex extractor.
210
+ return regexExtractSymbols(source, language);
211
+ }
147
212
  }
148
213
  extractImports(source, language) {
149
214
  return regexExtractImports(source, language);
@@ -202,6 +267,193 @@ function findCommandNodes(node) {
202
267
  }
203
268
  return list;
204
269
  }
270
+ /* ──────────────────────── Language → WASM file ──────────────────────── */
271
+ /**
272
+ * Maps a {@link LanguageId} to the vendored WASM file the grammar
273
+ * lives in. Returns `null` for languages that don't have a vendored
274
+ * grammar (regex fallback only).
275
+ */
276
+ function wasmFileForLanguage(lang) {
277
+ switch (lang) {
278
+ case 'typescript': return 'tree-sitter-typescript.wasm';
279
+ case 'javascript': return 'tree-sitter-javascript.wasm';
280
+ case 'python': return 'tree-sitter-python.wasm';
281
+ case 'go': return 'tree-sitter-go.wasm';
282
+ case 'rust': return 'tree-sitter-rust.wasm';
283
+ case 'bash': return 'tree-sitter-bash.wasm';
284
+ default: return null;
285
+ }
286
+ }
287
+ /* ──────────────────────── AST → SymbolInfo[] ──────────────────────── */
288
+ /**
289
+ * Walks a parsed root node and emits symbol records for top-level
290
+ * declarations. Per-language conventions for "exported":
291
+ * - TS/JS: wrapped in an `export_statement` (or `export default`).
292
+ * - Python: top-level name whose first char is not `_`.
293
+ * - Go: top-level name whose first char is uppercase.
294
+ * - Rust: declaration carries a `visibility_modifier` child whose
295
+ * text starts with `pub`.
296
+ *
297
+ * The function caps at 100 symbols per file to mirror the regex
298
+ * extractor and protect downstream context budgets.
299
+ */
300
+ function extractSymbolsFromTree(root, language) {
301
+ const out = [];
302
+ const seen = new Set();
303
+ const MAX = 100;
304
+ const push = (name, kind, node, exported) => {
305
+ if (!name || seen.has(name) || out.length >= MAX)
306
+ return;
307
+ seen.add(name);
308
+ out.push({
309
+ name,
310
+ kind,
311
+ line: node.startPosition.row + 1,
312
+ endLine: node.endPosition.row + 1,
313
+ exported,
314
+ });
315
+ };
316
+ /** First identifier-shaped descendant; used as a fallback when the
317
+ * grammar exposes the name via a positional child instead of a
318
+ * named field. */
319
+ const firstIdentText = (node) => {
320
+ const named = node.childForFieldName('name');
321
+ if (named)
322
+ return named.text;
323
+ for (let i = 0; i < node.namedChildCount; i++) {
324
+ const c = node.namedChild(i);
325
+ if (c.type === 'identifier' || c.type === 'type_identifier' || c.type === 'property_identifier') {
326
+ return c.text;
327
+ }
328
+ }
329
+ return undefined;
330
+ };
331
+ const hasPub = (node) => {
332
+ for (let i = 0; i < node.namedChildCount; i++) {
333
+ const c = node.namedChild(i);
334
+ if (c.type === 'visibility_modifier' && c.text.startsWith('pub'))
335
+ return true;
336
+ }
337
+ return false;
338
+ };
339
+ const visitTopLevel = (node, exportedFromWrapper) => {
340
+ const t = node.type;
341
+ if (language === 'typescript' || language === 'javascript') {
342
+ // Unwrap `export_statement` → emit the inner declaration as exported.
343
+ if (t === 'export_statement') {
344
+ for (let i = 0; i < node.namedChildCount; i++) {
345
+ visitTopLevel(node.namedChild(i), true);
346
+ }
347
+ return;
348
+ }
349
+ if (t === 'class_declaration')
350
+ return push(firstIdentText(node), 'class', node, exportedFromWrapper);
351
+ if (t === 'interface_declaration')
352
+ return push(firstIdentText(node), 'interface', node, exportedFromWrapper);
353
+ if (t === 'function_declaration')
354
+ return push(firstIdentText(node), 'function', node, exportedFromWrapper);
355
+ if (t === 'function_signature')
356
+ return push(firstIdentText(node), 'function', node, exportedFromWrapper);
357
+ if (t === 'enum_declaration')
358
+ return push(firstIdentText(node), 'enum', node, exportedFromWrapper);
359
+ if (t === 'type_alias_declaration')
360
+ return push(firstIdentText(node), 'type', node, exportedFromWrapper);
361
+ if (t === 'lexical_declaration' || t === 'variable_declaration') {
362
+ // `const a = 1, b = 2;` → walk declarators.
363
+ for (let i = 0; i < node.namedChildCount; i++) {
364
+ const decl = node.namedChild(i);
365
+ if (decl.type === 'variable_declarator') {
366
+ push(firstIdentText(decl), 'const', decl, exportedFromWrapper);
367
+ }
368
+ }
369
+ return;
370
+ }
371
+ return;
372
+ }
373
+ if (language === 'python') {
374
+ if (t === 'class_definition' || t === 'function_definition' || t === 'decorated_definition') {
375
+ // Decorated wraps the real definition as a named child.
376
+ let target = node;
377
+ if (t === 'decorated_definition') {
378
+ for (let i = 0; i < node.namedChildCount; i++) {
379
+ const c = node.namedChild(i);
380
+ if (c.type === 'class_definition' || c.type === 'function_definition') {
381
+ target = c;
382
+ break;
383
+ }
384
+ }
385
+ }
386
+ const name = firstIdentText(target);
387
+ const kind = target.type === 'class_definition' ? 'class' : 'function';
388
+ push(name, kind, target, name !== undefined && !name.startsWith('_'));
389
+ }
390
+ return;
391
+ }
392
+ if (language === 'go') {
393
+ const isUpper = (s) => !!s && s[0] >= 'A' && s[0] <= 'Z';
394
+ if (t === 'function_declaration' || t === 'method_declaration') {
395
+ const name = firstIdentText(node);
396
+ push(name, 'function', node, isUpper(name));
397
+ return;
398
+ }
399
+ if (t === 'type_declaration' || t === 'var_declaration' || t === 'const_declaration') {
400
+ for (let i = 0; i < node.namedChildCount; i++) {
401
+ const spec = node.namedChild(i);
402
+ const name = firstIdentText(spec);
403
+ let kind = 'type';
404
+ if (t === 'var_declaration')
405
+ kind = 'var';
406
+ else if (t === 'const_declaration')
407
+ kind = 'const';
408
+ else if (spec.type === 'type_spec') {
409
+ // Look at the type definition body to refine the kind.
410
+ for (let j = 0; j < spec.namedChildCount; j++) {
411
+ const def = spec.namedChild(j);
412
+ if (def.type === 'struct_type') {
413
+ kind = 'type';
414
+ break;
415
+ }
416
+ if (def.type === 'interface_type') {
417
+ kind = 'interface';
418
+ break;
419
+ }
420
+ }
421
+ }
422
+ push(name, kind, spec, isUpper(name));
423
+ }
424
+ return;
425
+ }
426
+ return;
427
+ }
428
+ if (language === 'rust') {
429
+ const exported = hasPub(node);
430
+ if (t === 'function_item')
431
+ return push(firstIdentText(node), 'function', node, exported);
432
+ if (t === 'struct_item')
433
+ return push(firstIdentText(node), 'type', node, exported);
434
+ if (t === 'enum_item')
435
+ return push(firstIdentText(node), 'enum', node, exported);
436
+ if (t === 'trait_item')
437
+ return push(firstIdentText(node), 'interface', node, exported);
438
+ if (t === 'mod_item')
439
+ return push(firstIdentText(node), 'module', node, exported);
440
+ if (t === 'const_item')
441
+ return push(firstIdentText(node), 'const', node, exported);
442
+ if (t === 'static_item')
443
+ return push(firstIdentText(node), 'const', node, exported);
444
+ // type_item → `type Alias = …;`
445
+ if (t === 'type_item')
446
+ return push(firstIdentText(node), 'type', node, exported);
447
+ return;
448
+ }
449
+ };
450
+ for (let i = 0; i < root.namedChildCount; i++) {
451
+ visitTopLevel(root.namedChild(i), false);
452
+ if (out.length >= MAX)
453
+ break;
454
+ }
455
+ return out;
456
+ }
205
457
  // ──── RegexParserAdapter ─────────────────────────────────────────
206
458
  export class RegexParserAdapter {
207
459
  name = 'regex';
@@ -1 +1 @@
1
- {"version":3,"file":"parser-adapter.js","sourceRoot":"","sources":["../../src/agent/parser-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser-adapter.js","sourceRoot":"","sources":["../../src/agent/parser-adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"predictive-gate.d.ts","sourceRoot":"","sources":["../../src/agent/predictive-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAYH,2EAA2E;AAC3E,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAC/B,YAAY,CAoCd;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,YAAY,EACtB,kBAAkB,EAAE,MAAM,EAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAChC,SAAS,GAAE,MAAsC,GAChD,aAAa,CAkBf;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,aAAa,GACtB,MAAM,CASR"}
1
+ {"version":3,"file":"predictive-gate.d.ts","sourceRoot":"","sources":["../../src/agent/predictive-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAYH,2EAA2E;AAC3E,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAC/B,YAAY,CAuCd;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,YAAY,EACtB,kBAAkB,EAAE,MAAM,EAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAChC,SAAS,GAAE,MAAsC,GAChD,aAAa,CAkBf;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,aAAa,GACtB,MAAM,CASR"}
@@ -71,10 +71,13 @@ export function estimateReadCost(absolutePath, model) {
71
71
  return { bytes, projectedTokens: Math.ceil(bytes / FALLBACK_BYTES_PER_TOKEN), exact: false };
72
72
  }
73
73
  finally {
74
+ // safe: closeSync after a failed openSync just means there was
75
+ // no fd to close, or the kernel already reaped it. Either way
76
+ // resource recovery is best-effort.
74
77
  try {
75
78
  fs.closeSync(fd);
76
79
  }
77
- catch { /* ignore */ }
80
+ catch { /* safe: see above */ }
78
81
  }
79
82
  }
80
83
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"predictive-gate.js","sourceRoot":"","sources":["../../src/agent/predictive-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"predictive-gate.js","sourceRoot":"","sources":["../../src/agent/predictive-gate.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
1
  import { type ProviderCredential } from '../runtime/credential-vault.js';
2
+ /**
3
+ * Known-good models that reliably follow the multi-agent DAG orchestration contract.
4
+ * Used by the router when `modelRouting === 'auto'` to prevent task deadlocks.
5
+ */
6
+ export declare const MODEL_DAG_VERIFIED: Set<string>;
2
7
  export interface ProviderDefinition {
3
8
  /** Short ID used as the key in providers.json */
4
9
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"providers-manager.d.ts","sourceRoot":"","sources":["../../src/agent/providers-manager.ts"],"names":[],"mappings":"AAkBA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AAIxC,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,YAAY,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,0EAA0E;IAC1E,WAAW,EAAE,OAAO,CAAC;IACrB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,EAiIjD,CAAC;AAiDF;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAAC;CACtC;AAgFD,eAAO,MAAM,gBAAgB;IAC3B,qDAAqD;gCACzB,MAAM,YAAY,MAAM,GAAG,IAAI;IAI3D,iEAAiE;gCACrC,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvD,iEAAiE;+BACtC,IAAI;IAI/B,qDAAqD;YAC7C,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAaxF,wCAAwC;cAC9B,MAAM,UAAU,MAAM,SAAS,MAAM,GAAG,IAAI;IAsBtD,0EAA0E;iBAC7D,MAAM,GAAG,OAAO;IAS7B,qEAAqE;iBACxD,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnC,mEAAmE;0BAC7C,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAkB9F;;;;;;;;;OASG;yBACwB,CAAC,QACpB,MAAM,MACR,CAAC,IAAI,EAAE,kBAAkB,GAAG;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC3E,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAWpB;;;;;OAKG;oBACa,IAAI;IAcpB;;;OAGG;kBACW,IAAI;IAIlB,6CAA6C;cACnC,MAAM,GAAG,OAAO;IAK1B,uCAAuC;wBACnB,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI3D,+CAA+C;yBAC1B,kBAAkB,EAAE;IAIzC;;;;;OAKG;0BACmB,MAAM,GAAG,wBAAwB,GAAG,IAAI;IAU9D;;;;;;;;;;;;OAYG;4BAC2B,MAAM,GAAG,OAAO,CAAC;QAC7C,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,mBAAmB,CAAC;QAC/C,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CA2DH,CAAC"}
1
+ {"version":3,"file":"providers-manager.d.ts","sourceRoot":"","sources":["../../src/agent/providers-manager.ts"],"names":[],"mappings":"AAmBA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AAIxC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,aAK7B,CAAC;AAEH,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,YAAY,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,0EAA0E;IAC1E,WAAW,EAAE,OAAO,CAAC;IACrB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,EAiIjD,CAAC;AA0GF;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAAC;CACtC;AAyGD,eAAO,MAAM,gBAAgB;IAC3B,qDAAqD;gCACzB,MAAM,YAAY,MAAM,GAAG,IAAI;IAK3D,iEAAiE;gCACrC,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvD,iEAAiE;+BACtC,IAAI;IAK/B,qDAAqD;YAC7C,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAaxF,wCAAwC;cAC9B,MAAM,UAAU,MAAM,SAAS,MAAM,GAAG,IAAI;IAsBtD,0EAA0E;iBAC7D,MAAM,GAAG,OAAO;IAS7B,qEAAqE;iBACxD,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnC,mEAAmE;0BAC7C,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAkB9F;;;;;;;;;OASG;yBACwB,CAAC,QACpB,MAAM,MACR,CAAC,IAAI,EAAE,kBAAkB,GAAG;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC3E,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAWpB;;;;;OAKG;oBACa,IAAI;IAkCpB;;;OAGG;kBACW,IAAI;IAIlB,6CAA6C;cACnC,MAAM,GAAG,OAAO;IAK1B,uCAAuC;wBACnB,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI3D,+CAA+C;yBAC1B,kBAAkB,EAAE;IAIzC;;;;;OAKG;0BACmB,MAAM,GAAG,wBAAwB,GAAG,IAAI;IAU9D;;;;;;;;;;;;OAYG;4BAC2B,MAAM,GAAG,OAAO,CAAC;QAC7C,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,mBAAmB,CAAC;QAC/C,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CA+DH,CAAC"}
@@ -16,7 +16,19 @@
16
16
  import fs from 'node:fs';
17
17
  import path from 'node:path';
18
18
  import os from 'node:os';
19
+ import crypto from 'node:crypto';
19
20
  import { getProviderKeyVault, resetProviderKeyVault, } from '../runtime/credential-vault.js';
21
+ /* ──────────────────────── Provider Registry ──────────────────────── */
22
+ /**
23
+ * Known-good models that reliably follow the multi-agent DAG orchestration contract.
24
+ * Used by the router when `modelRouting === 'auto'` to prevent task deadlocks.
25
+ */
26
+ export const MODEL_DAG_VERIFIED = new Set([
27
+ 'claude-3-5-sonnet-20241022',
28
+ 'gemini-2.5-pro',
29
+ 'gpt-4o',
30
+ 'o3-mini',
31
+ ]);
20
32
  export const PROVIDER_REGISTRY = [
21
33
  {
22
34
  name: 'openai',
@@ -32,7 +44,7 @@ export const PROVIDER_REGISTRY = [
32
44
  displayName: 'Anthropic (Claude)',
33
45
  baseUrl: 'https://api.anthropic.com/v1',
34
46
  openAICompat: false,
35
- models: ['claude-opus-4-5', 'claude-sonnet-4-5', 'claude-haiku-3-5'],
47
+ models: ['claude-opus-4-7', 'claude-sonnet-4-6', 'claude-haiku-4-5-20251001'],
36
48
  requiresKey: true,
37
49
  docsUrl: 'https://console.anthropic.com/settings/keys',
38
50
  },
@@ -77,7 +89,7 @@ export const PROVIDER_REGISTRY = [
77
89
  displayName: 'OpenRouter',
78
90
  baseUrl: 'https://openrouter.ai/api/v1',
79
91
  openAICompat: true,
80
- models: ['anthropic/claude-opus-4-5', 'openai/gpt-4o', 'google/gemini-2.5-pro', 'meta-llama/llama-4-maverick'],
92
+ models: ['anthropic/claude-opus-4-7', 'openai/gpt-4o', 'google/gemini-2.5-pro', 'meta-llama/llama-4-maverick'],
81
93
  requiresKey: true,
82
94
  docsUrl: 'https://openrouter.ai/keys',
83
95
  },
@@ -151,13 +163,62 @@ export const PROVIDER_REGISTRY = [
151
163
  function getProvidersFilePath() {
152
164
  return path.join(os.homedir(), '.fixocli', 'providers.json');
153
165
  }
166
+ function getMachineKey() {
167
+ const p = path.join(os.homedir(), '.fixocli', '.machine_key');
168
+ if (fs.existsSync(p)) {
169
+ return Buffer.from(fs.readFileSync(p, 'utf-8').trim(), 'hex');
170
+ }
171
+ const key = crypto.randomBytes(32);
172
+ fs.writeFileSync(p, key.toString('hex') + '\n', { mode: 0o600 });
173
+ return key;
174
+ }
175
+ function encryptKey(key) {
176
+ if (key.startsWith('ENC:'))
177
+ return key;
178
+ const iv = crypto.randomBytes(16);
179
+ const cipher = crypto.createCipheriv('aes-256-gcm', getMachineKey(), iv);
180
+ let encrypted = cipher.update(key, 'utf8', 'hex');
181
+ encrypted += cipher.final('hex');
182
+ const authTag = cipher.getAuthTag().toString('hex');
183
+ return `ENC:${iv.toString('hex')}:${authTag}:${encrypted}`;
184
+ }
185
+ function decryptKey(val) {
186
+ if (!val.startsWith('ENC:'))
187
+ return val;
188
+ const parts = val.split(':');
189
+ if (parts.length !== 4) {
190
+ console.warn('[FixO] providers.json: malformed ENC entry — removing this key. Run /providers remove and re-add it.');
191
+ throw new Error('Malformed encrypted key entry in providers.json');
192
+ }
193
+ const iv = Buffer.from(parts[1], 'hex');
194
+ const authTag = Buffer.from(parts[2], 'hex');
195
+ const encrypted = parts[3];
196
+ try {
197
+ const decipher = crypto.createDecipheriv('aes-256-gcm', getMachineKey(), iv);
198
+ decipher.setAuthTag(authTag);
199
+ let decrypted = decipher.update(encrypted, 'hex', 'utf8');
200
+ decrypted += decipher.final('utf8');
201
+ return decrypted;
202
+ }
203
+ catch {
204
+ console.warn('[FixO] Failed to decrypt a stored API key. Your ~/.fixocli/providers.json may be corrupted\n' +
205
+ ' or the machine key has changed. Run: /providers remove <name>, then re-add the key.');
206
+ throw new Error('AES-256-GCM decryption failed — corrupted providers.json or rotated machine key');
207
+ }
208
+ }
154
209
  function loadStore() {
155
210
  const filePath = getProvidersFilePath();
156
211
  try {
157
212
  if (!fs.existsSync(filePath))
158
213
  return {};
159
214
  const raw = fs.readFileSync(filePath, 'utf-8');
160
- return JSON.parse(raw);
215
+ const store = JSON.parse(raw);
216
+ for (const k of Object.keys(store)) {
217
+ if (store[k].apiKey) {
218
+ store[k].apiKey = decryptKey(store[k].apiKey);
219
+ }
220
+ }
221
+ return store;
161
222
  }
162
223
  catch {
163
224
  return {};
@@ -169,14 +230,20 @@ function saveStore(store) {
169
230
  fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
170
231
  }
171
232
  const filePath = getProvidersFilePath();
172
- fs.writeFileSync(filePath, JSON.stringify(store, null, 2) + '\n', {
233
+ const toSave = JSON.parse(JSON.stringify(store)); // deep copy
234
+ for (const k of Object.keys(toSave)) {
235
+ if (toSave[k].apiKey) {
236
+ toSave[k].apiKey = encryptKey(toSave[k].apiKey);
237
+ }
238
+ }
239
+ fs.writeFileSync(filePath, JSON.stringify(toSave, null, 2) + '\n', {
173
240
  encoding: 'utf-8',
174
241
  mode: 0o600,
175
242
  });
176
243
  try {
177
244
  fs.chmodSync(filePath, 0o600);
178
245
  }
179
- catch { /* ignore */ }
246
+ catch { /* safe: see above */ }
180
247
  }
181
248
  function maskKey(key) {
182
249
  if (key.length <= 8)
@@ -210,10 +277,11 @@ function saveModelsCache(store) {
210
277
  encoding: 'utf-8',
211
278
  mode: 0o600,
212
279
  });
280
+ // safe: same belt-and-braces chmod as saveStore — see comment there.
213
281
  try {
214
282
  fs.chmodSync(filePath, 0o600);
215
283
  }
216
- catch { /* ignore */ }
284
+ catch { /* safe: see saveStore */ }
217
285
  }
218
286
  /**
219
287
  * Build the same provider-specific headers that the existing
@@ -249,6 +317,25 @@ function parseModelsResponse(payload) {
249
317
  .filter((s) => typeof s === 'string' && s.length > 0);
250
318
  return ids.length > 0 ? ids : null;
251
319
  }
320
+ function getModelHintsPath() {
321
+ return path.join(os.homedir(), '.fixocli', 'model-hints.json');
322
+ }
323
+ function loadModelProviderHints() {
324
+ try {
325
+ const raw = fs.readFileSync(getModelHintsPath(), 'utf-8');
326
+ const parsed = JSON.parse(raw);
327
+ return new Map(Object.entries(parsed));
328
+ }
329
+ catch {
330
+ return new Map();
331
+ }
332
+ }
333
+ function persistModelProviderHints(hints) {
334
+ const dir = path.join(os.homedir(), '.fixocli');
335
+ if (!fs.existsSync(dir))
336
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
337
+ fs.writeFileSync(getModelHintsPath(), JSON.stringify(Object.fromEntries(hints), null, 2) + '\n', { encoding: 'utf-8', mode: 0o600 });
338
+ }
252
339
  /**
253
340
  * Maps model IDs to their explicitly-selected provider name.
254
341
  * Populated when the user picks a model from a provider's list
@@ -256,11 +343,12 @@ function parseModelsResponse(payload) {
256
343
  * AgentClient.resolveDirectConfig() before heuristic matching,
257
344
  * which makes live-fetched models route to their correct provider.
258
345
  */
259
- let modelProviderHints = new Map();
346
+ let modelProviderHints = loadModelProviderHints();
260
347
  export const ProvidersManager = {
261
348
  /** Set an explicit model-to-provider association. */
262
349
  setModelProviderHint(model, provider) {
263
350
  modelProviderHints.set(model.toLowerCase().trim(), provider);
351
+ persistModelProviderHints(modelProviderHints);
264
352
  },
265
353
  /** Get the explicit provider hint for a model, if one exists. */
266
354
  getModelProviderHint(model) {
@@ -269,6 +357,7 @@ export const ProvidersManager = {
269
357
  /** Clear all model-provider hints (e.g. when context resets). */
270
358
  clearModelProviderHints() {
271
359
  modelProviderHints = new Map();
360
+ persistModelProviderHints(modelProviderHints);
272
361
  },
273
362
  /** List all connected providers with masked keys. */
274
363
  list() {
@@ -363,10 +452,28 @@ export const ProvidersManager = {
363
452
  hydrateVault() {
364
453
  const store = loadStore();
365
454
  const vault = getProviderKeyVault();
455
+ let needsMigration = false;
456
+ // We read directly from file without decrypting to check if any are unencrypted
457
+ try {
458
+ const raw = fs.readFileSync(getProvidersFilePath(), 'utf-8');
459
+ const rawStore = JSON.parse(raw);
460
+ for (const entry of Object.values(rawStore)) {
461
+ if (entry.apiKey && !entry.apiKey.startsWith('ENC:')) {
462
+ needsMigration = true;
463
+ break;
464
+ }
465
+ }
466
+ }
467
+ catch {
468
+ // ignore
469
+ }
366
470
  for (const [name, entry] of Object.entries(store)) {
367
471
  const def = PROVIDER_REGISTRY.find((p) => p.name === name);
368
472
  vault.ingest(name, entry.apiKey, def ? def.baseUrl : '', def ? def.displayName : name);
369
473
  }
474
+ if (needsMigration) {
475
+ saveStore(store);
476
+ }
370
477
  },
371
478
  /**
372
479
  * Drop the cached vault singleton. Used by the
@@ -435,10 +542,14 @@ export const ProvidersManager = {
435
542
  // having to know whether a live fetch was ever attempted.
436
543
  const store = loadModelsCache();
437
544
  store[name] = { models: def.models.slice(), fetchedAt: now, source: 'registry-fallback' };
545
+ // safe: cache persistence is a perf optimisation only — losing
546
+ // it means the next /model call re-runs the fallback, never
547
+ // user-visible breakage. ENOSPC / read-only $HOME are the only
548
+ // realistic causes.
438
549
  try {
439
550
  saveModelsCache(store);
440
551
  }
441
- catch { /* ignore */ }
552
+ catch { /* safe: see above */ }
442
553
  return { models: def.models.slice(), source: 'registry-fallback', fetchedAt: now };
443
554
  };
444
555
  // No key on disk → cannot live-fetch; fall through to cache → registry.