bernard-agent 0.8.0 → 0.9.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.
Files changed (174) hide show
  1. package/README.md +80 -44
  2. package/dist/agent.d.ts +14 -3
  3. package/dist/agent.js +228 -38
  4. package/dist/agent.js.map +1 -1
  5. package/dist/builtin-specialists/correction-agent.json +32 -0
  6. package/dist/builtin-specialists/file-wrapper.json +43 -0
  7. package/dist/builtin-specialists/shell-wrapper.json +50 -0
  8. package/dist/builtin-specialists/specialist-creator.json +32 -0
  9. package/dist/builtin-specialists/web-wrapper.json +38 -0
  10. package/dist/candidate-bootstrap.d.ts +18 -0
  11. package/dist/candidate-bootstrap.js +61 -0
  12. package/dist/candidate-bootstrap.js.map +1 -0
  13. package/dist/config.d.ts +132 -10
  14. package/dist/config.js +234 -47
  15. package/dist/config.js.map +1 -1
  16. package/dist/context.js +23 -6
  17. package/dist/context.js.map +1 -1
  18. package/dist/correction-candidates.d.ts +54 -0
  19. package/dist/correction-candidates.js +138 -0
  20. package/dist/correction-candidates.js.map +1 -0
  21. package/dist/correction.d.ts +67 -0
  22. package/dist/correction.js +138 -0
  23. package/dist/correction.js.map +1 -0
  24. package/dist/critic.js +2 -1
  25. package/dist/critic.js.map +1 -1
  26. package/dist/cron/notes-store.d.ts +41 -0
  27. package/dist/cron/notes-store.js +134 -0
  28. package/dist/cron/notes-store.js.map +1 -0
  29. package/dist/cron/runner.js +25 -3
  30. package/dist/cron/runner.js.map +1 -1
  31. package/dist/cron/scoped-notes-tools.d.ts +24 -0
  32. package/dist/cron/scoped-notes-tools.js +50 -0
  33. package/dist/cron/scoped-notes-tools.js.map +1 -0
  34. package/dist/custom-providers.d.ts +80 -0
  35. package/dist/custom-providers.js +238 -0
  36. package/dist/custom-providers.js.map +1 -0
  37. package/dist/fs-utils.d.ts +2 -0
  38. package/dist/fs-utils.js +44 -0
  39. package/dist/fs-utils.js.map +1 -0
  40. package/dist/history.js +3 -1
  41. package/dist/history.js.map +1 -1
  42. package/dist/image.d.ts +59 -0
  43. package/dist/image.js +228 -0
  44. package/dist/image.js.map +1 -0
  45. package/dist/index.js +72 -4
  46. package/dist/index.js.map +1 -1
  47. package/dist/mcp.js +1 -1
  48. package/dist/mcp.js.map +1 -1
  49. package/dist/memory.d.ts +13 -0
  50. package/dist/memory.js +45 -4
  51. package/dist/memory.js.map +1 -1
  52. package/dist/menu.d.ts +97 -0
  53. package/dist/menu.js +338 -0
  54. package/dist/menu.js.map +1 -0
  55. package/dist/os-info.d.ts +22 -0
  56. package/dist/os-info.js +111 -0
  57. package/dist/os-info.js.map +1 -0
  58. package/dist/output.d.ts +35 -1
  59. package/dist/output.js +256 -45
  60. package/dist/output.js.map +1 -1
  61. package/dist/pac.d.ts +14 -2
  62. package/dist/pac.js +5 -5
  63. package/dist/pac.js.map +1 -1
  64. package/dist/paths.d.ts +5 -0
  65. package/dist/paths.js +6 -1
  66. package/dist/paths.js.map +1 -1
  67. package/dist/plan-store.d.ts +47 -0
  68. package/dist/plan-store.js +94 -0
  69. package/dist/plan-store.js.map +1 -0
  70. package/dist/prompt-rewriter.d.ts +29 -0
  71. package/dist/prompt-rewriter.js +155 -0
  72. package/dist/prompt-rewriter.js.map +1 -0
  73. package/dist/providers/index.d.ts +56 -4
  74. package/dist/providers/index.js +86 -5
  75. package/dist/providers/index.js.map +1 -1
  76. package/dist/providers/profiles.d.ts +37 -0
  77. package/dist/providers/profiles.js +110 -0
  78. package/dist/providers/profiles.js.map +1 -0
  79. package/dist/providers/types.d.ts +11 -2
  80. package/dist/providers/types.js +3 -0
  81. package/dist/providers/types.js.map +1 -1
  82. package/dist/rag-query.js +15 -1
  83. package/dist/rag-query.js.map +1 -1
  84. package/dist/react.d.ts +38 -0
  85. package/dist/react.js +116 -0
  86. package/dist/react.js.map +1 -0
  87. package/dist/reasoning-log.d.ts +30 -0
  88. package/dist/reasoning-log.js +102 -0
  89. package/dist/reasoning-log.js.map +1 -0
  90. package/dist/reference-resolver.d.ts +47 -0
  91. package/dist/reference-resolver.js +316 -0
  92. package/dist/reference-resolver.js.map +1 -0
  93. package/dist/reference-tool-lookup.d.ts +37 -0
  94. package/dist/reference-tool-lookup.js +318 -0
  95. package/dist/reference-tool-lookup.js.map +1 -0
  96. package/dist/repl.js +1053 -346
  97. package/dist/repl.js.map +1 -1
  98. package/dist/setup.js +2 -1
  99. package/dist/setup.js.map +1 -1
  100. package/dist/specialist-detector.js +2 -1
  101. package/dist/specialist-detector.js.map +1 -1
  102. package/dist/specialists.d.ts +74 -3
  103. package/dist/specialists.js +152 -20
  104. package/dist/specialists.js.map +1 -1
  105. package/dist/structured-output.d.ts +58 -0
  106. package/dist/structured-output.js +138 -0
  107. package/dist/structured-output.js.map +1 -0
  108. package/dist/theme.d.ts +2 -0
  109. package/dist/theme.js +18 -12
  110. package/dist/theme.js.map +1 -1
  111. package/dist/tool-call-repair.d.ts +29 -0
  112. package/dist/tool-call-repair.js +99 -0
  113. package/dist/tool-call-repair.js.map +1 -0
  114. package/dist/tool-profiles.d.ts +70 -0
  115. package/dist/tool-profiles.js +385 -0
  116. package/dist/tool-profiles.js.map +1 -0
  117. package/dist/tools/activity-summary.d.ts +15 -0
  118. package/dist/tools/activity-summary.js +44 -0
  119. package/dist/tools/activity-summary.js.map +1 -0
  120. package/dist/tools/ask-user.d.ts +49 -0
  121. package/dist/tools/ask-user.js +52 -0
  122. package/dist/tools/ask-user.js.map +1 -0
  123. package/dist/tools/augment.d.ts +17 -0
  124. package/dist/tools/augment.js +102 -0
  125. package/dist/tools/augment.js.map +1 -0
  126. package/dist/tools/cron-logs.js +7 -0
  127. package/dist/tools/cron-logs.js.map +1 -1
  128. package/dist/tools/cron-notes.d.ts +52 -0
  129. package/dist/tools/cron-notes.js +105 -0
  130. package/dist/tools/cron-notes.js.map +1 -0
  131. package/dist/tools/datetime.d.ts +7 -0
  132. package/dist/tools/datetime.js +29 -3
  133. package/dist/tools/datetime.js.map +1 -1
  134. package/dist/tools/evaluate.d.ts +20 -0
  135. package/dist/tools/evaluate.js +29 -0
  136. package/dist/tools/evaluate.js.map +1 -0
  137. package/dist/tools/index.js +4 -0
  138. package/dist/tools/index.js.map +1 -1
  139. package/dist/tools/mcp.d.ts +3 -3
  140. package/dist/tools/plan.d.ts +81 -0
  141. package/dist/tools/plan.js +108 -0
  142. package/dist/tools/plan.js.map +1 -0
  143. package/dist/tools/result-cap.d.ts +24 -0
  144. package/dist/tools/result-cap.js +44 -0
  145. package/dist/tools/result-cap.js.map +1 -0
  146. package/dist/tools/routine.d.ts +3 -3
  147. package/dist/tools/shell.d.ts +14 -1
  148. package/dist/tools/shell.js +86 -4
  149. package/dist/tools/shell.js.map +1 -1
  150. package/dist/tools/specialist-run.d.ts +5 -3
  151. package/dist/tools/specialist-run.js +115 -24
  152. package/dist/tools/specialist-run.js.map +1 -1
  153. package/dist/tools/specialist.d.ts +83 -3
  154. package/dist/tools/specialist.js +83 -3
  155. package/dist/tools/specialist.js.map +1 -1
  156. package/dist/tools/subagent.js +32 -14
  157. package/dist/tools/subagent.js.map +1 -1
  158. package/dist/tools/task.d.ts +19 -16
  159. package/dist/tools/task.js +69 -40
  160. package/dist/tools/task.js.map +1 -1
  161. package/dist/tools/think.d.ts +18 -0
  162. package/dist/tools/think.js +25 -0
  163. package/dist/tools/think.js.map +1 -0
  164. package/dist/tools/tool-wrapper-run.d.ts +121 -0
  165. package/dist/tools/tool-wrapper-run.js +382 -0
  166. package/dist/tools/tool-wrapper-run.js.map +1 -0
  167. package/dist/tools/types.d.ts +28 -2
  168. package/dist/tools/web-search.d.ts +31 -0
  169. package/dist/tools/web-search.js +172 -0
  170. package/dist/tools/web-search.js.map +1 -0
  171. package/dist/tools/wrap-with-specialist.d.ts +55 -0
  172. package/dist/tools/wrap-with-specialist.js +137 -0
  173. package/dist/tools/wrap-with-specialist.js.map +1 -0
  174. package/package.json +2 -2
package/dist/config.js CHANGED
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.PROVIDER_MODELS = exports.OPTIONS_REGISTRY = exports.PROVIDER_ENV_VARS = void 0;
37
+ exports.normalizeThreshold = normalizeThreshold;
37
38
  exports.savePreferences = savePreferences;
38
39
  exports.loadPreferences = loadPreferences;
39
40
  exports.saveProviderKey = saveProviderKey;
@@ -47,11 +48,16 @@ exports.getProviderApiKey = getProviderApiKey;
47
48
  exports.getAvailableProviders = getAvailableProviders;
48
49
  exports.isValidProvider = isValidProvider;
49
50
  exports.hasProviderKey = hasProviderKey;
51
+ exports.providerEnvVar = providerEnvVar;
52
+ exports.blankToUndefined = blankToUndefined;
53
+ exports.resolveProviderAndModel = resolveProviderAndModel;
54
+ exports.defaultProviderErrorMessage = defaultProviderErrorMessage;
50
55
  exports.loadConfig = loadConfig;
51
56
  const dotenv = __importStar(require("dotenv"));
52
57
  const path = __importStar(require("node:path"));
53
58
  const fs = __importStar(require("node:fs"));
54
59
  const paths_js_1 = require("./paths.js");
60
+ const custom_providers_js_1 = require("./custom-providers.js");
55
61
  const DEFAULT_PROVIDER = 'anthropic';
56
62
  const DEFAULT_MAX_TOKENS = 4096;
57
63
  const DEFAULT_SHELL_TIMEOUT = 30000;
@@ -59,6 +65,15 @@ const DEFAULT_TOKEN_WINDOW = 0;
59
65
  const DEFAULT_MAX_STEPS = 25;
60
66
  const DEFAULT_AUTO_CREATE_SPECIALISTS = false;
61
67
  const DEFAULT_AUTO_CREATE_THRESHOLD = 0.8;
68
+ /**
69
+ * Normalizes a threshold value to the 0-1 range.
70
+ * Accepts both 0-1 (fractional) and >1-100 (percentage) inputs.
71
+ * Values >1 are divided by 100. Result is clamped to [0, 1].
72
+ */
73
+ function normalizeThreshold(value) {
74
+ const normalized = value > 1 ? value / 100 : value;
75
+ return Math.max(0, Math.min(1, normalized));
76
+ }
62
77
  /** Maps each provider name to the environment variable that holds its API key. */
63
78
  exports.PROVIDER_ENV_VARS = {
64
79
  anthropic: 'ANTHROPIC_API_KEY',
@@ -93,7 +108,7 @@ exports.OPTIONS_REGISTRY = {
93
108
  'max-steps': {
94
109
  configKey: 'maxSteps',
95
110
  default: DEFAULT_MAX_STEPS,
96
- description: 'Maximum agent loop iterations per request (controls tool call chain length)',
111
+ description: 'Maximum agent loop iterations per request (tripled automatically in coordinator / ReAct mode)',
97
112
  envVar: 'BERNARD_MAX_STEPS',
98
113
  },
99
114
  };
@@ -118,12 +133,22 @@ function savePreferences(prefs) {
118
133
  data.maxSteps = prefs.maxSteps;
119
134
  if (prefs.theme !== undefined)
120
135
  data.theme = prefs.theme;
136
+ if (prefs.autoUpdate !== undefined)
137
+ data.autoUpdate = prefs.autoUpdate;
121
138
  if (prefs.criticMode !== undefined)
122
139
  data.criticMode = prefs.criticMode;
140
+ if (prefs.reactMode !== undefined)
141
+ data.reactMode = prefs.reactMode;
142
+ if (prefs.toolDetails !== undefined)
143
+ data.toolDetails = prefs.toolDetails;
123
144
  if (prefs.autoCreateSpecialists !== undefined)
124
145
  data.autoCreateSpecialists = prefs.autoCreateSpecialists;
125
146
  if (prefs.autoCreateThreshold !== undefined)
126
147
  data.autoCreateThreshold = prefs.autoCreateThreshold;
148
+ if (prefs.promptRewriter !== undefined)
149
+ data.promptRewriter = prefs.promptRewriter;
150
+ if (prefs.referenceLookup !== undefined)
151
+ data.referenceLookup = prefs.referenceLookup;
127
152
  // Preserve autoUpdate, criticMode, and auto-create settings from existing prefs when callers don't pass them
128
153
  let existing;
129
154
  try {
@@ -132,14 +157,18 @@ function savePreferences(prefs) {
132
157
  catch {
133
158
  /* ignore */
134
159
  }
135
- if (prefs.autoUpdate !== undefined) {
136
- data.autoUpdate = prefs.autoUpdate;
137
- }
138
- else if (existing && typeof existing.autoUpdate === 'boolean') {
139
- data.autoUpdate = existing.autoUpdate;
140
- }
141
- if (prefs.criticMode === undefined && existing && typeof existing.criticMode === 'boolean') {
142
- data.criticMode = existing.criticMode;
160
+ const booleanKeys = [
161
+ 'autoUpdate',
162
+ 'criticMode',
163
+ 'reactMode',
164
+ 'toolDetails',
165
+ 'promptRewriter',
166
+ 'referenceLookup',
167
+ ];
168
+ for (const k of booleanKeys) {
169
+ if (prefs[k] === undefined && existing && typeof existing[k] === 'boolean') {
170
+ data[k] = existing[k];
171
+ }
143
172
  }
144
173
  // Preserve numeric options from existing prefs when callers don't pass them.
145
174
  // Use 'in' to distinguish "key absent" (preserve) from "key explicitly set to undefined" (reset).
@@ -186,10 +215,14 @@ function loadPreferences() {
186
215
  theme: typeof parsed.theme === 'string' ? parsed.theme : undefined,
187
216
  autoUpdate: typeof parsed.autoUpdate === 'boolean' ? parsed.autoUpdate : undefined,
188
217
  criticMode: typeof parsed.criticMode === 'boolean' ? parsed.criticMode : undefined,
218
+ reactMode: typeof parsed.reactMode === 'boolean' ? parsed.reactMode : undefined,
219
+ toolDetails: typeof parsed.toolDetails === 'boolean' ? parsed.toolDetails : undefined,
189
220
  autoCreateSpecialists: typeof parsed.autoCreateSpecialists === 'boolean'
190
221
  ? parsed.autoCreateSpecialists
191
222
  : undefined,
192
223
  autoCreateThreshold: typeof parsed.autoCreateThreshold === 'number' ? parsed.autoCreateThreshold : undefined,
224
+ promptRewriter: typeof parsed.promptRewriter === 'boolean' ? parsed.promptRewriter : undefined,
225
+ referenceLookup: typeof parsed.referenceLookup === 'boolean' ? parsed.referenceLookup : undefined,
193
226
  };
194
227
  }
195
228
  catch {
@@ -212,11 +245,20 @@ function loadStoredKeys() {
212
245
  /**
213
246
  * Stores an API key for the given provider in the config directory (mode 0600).
214
247
  *
215
- * @throws {Error} If `provider` is not a recognised provider name.
248
+ * Accepts both built-in providers and custom providers that have been
249
+ * registered via `bernard add-provider`.
250
+ *
251
+ * @throws {Error} If `provider` is neither a built-in nor a known custom provider.
216
252
  */
217
253
  function saveProviderKey(provider, key) {
218
- if (!exports.PROVIDER_ENV_VARS[provider]) {
219
- throw new Error(`Unknown provider "${provider}". Supported: ${Object.keys(exports.PROVIDER_ENV_VARS).join(', ')}`);
254
+ const isBuiltin = !!exports.PROVIDER_ENV_VARS[provider];
255
+ if (!isBuiltin) {
256
+ const customProviders = (0, custom_providers_js_1.loadCustomProviders)();
257
+ if (!Object.hasOwn(customProviders, provider)) {
258
+ const known = [...Object.keys(exports.PROVIDER_ENV_VARS), ...Object.keys(customProviders)];
259
+ throw new Error(`Unknown provider "${provider}". Known: ${known.join(', ') || '(none)'}. ` +
260
+ `Run \`bernard add-provider ${provider} …\` first to register a custom provider.`);
261
+ }
220
262
  }
221
263
  const dir = path.dirname(paths_js_1.KEYS_PATH);
222
264
  if (!fs.existsSync(dir)) {
@@ -232,12 +274,9 @@ function saveProviderKey(provider, key) {
232
274
  *
233
275
  * Deletes `keys.json` entirely when no keys remain.
234
276
  *
235
- * @throws {Error} If `provider` is unrecognised or has no stored key.
277
+ * @throws {Error} If `provider` has no stored key.
236
278
  */
237
279
  function removeProviderKey(provider) {
238
- if (!exports.PROVIDER_ENV_VARS[provider]) {
239
- throw new Error(`Unknown provider "${provider}". Supported: ${Object.keys(exports.PROVIDER_ENV_VARS).join(', ')}`);
240
- }
241
280
  const existing = loadStoredKeys();
242
281
  if (!existing[provider]) {
243
282
  throw new Error(`No stored API key found for "${provider}".`);
@@ -311,9 +350,11 @@ function resetAllOptions() {
311
350
  });
312
351
  }
313
352
  /**
314
- * Returns the API key availability status for every known provider.
353
+ * Returns the API key availability status for every known provider
354
+ * built-in providers plus any registered custom providers.
315
355
  *
316
- * Checks both stored keys and environment variables.
356
+ * Checks both stored keys and environment variables (env vars apply only
357
+ * to the three built-in providers; custom providers always use `keys.json`).
317
358
  */
318
359
  function getProviderKeyStatus() {
319
360
  const cwdEnv = path.join(process.cwd(), '.env');
@@ -329,10 +370,17 @@ function getProviderKeyStatus() {
329
370
  dotenv.config({ path: legacyEnv });
330
371
  }
331
372
  const storedKeys = loadStoredKeys();
332
- return Object.entries(exports.PROVIDER_ENV_VARS).map(([provider, envVar]) => ({
373
+ const customProviders = (0, custom_providers_js_1.loadCustomProviders)();
374
+ const builtin = Object.entries(exports.PROVIDER_ENV_VARS).map(([provider, envVar]) => ({
333
375
  provider,
334
376
  hasKey: !!(storedKeys[provider] || process.env[envVar]),
335
377
  }));
378
+ const custom = Object.keys(customProviders).map((provider) => ({
379
+ provider,
380
+ hasKey: !!storedKeys[provider],
381
+ custom: true,
382
+ }));
383
+ return [...builtin, ...custom];
336
384
  }
337
385
  /** Known model identifiers for each provider, ordered by preference (first = default). */
338
386
  exports.PROVIDER_MODELS = {
@@ -364,31 +412,127 @@ exports.PROVIDER_MODELS = {
364
412
  'grok-3-mini',
365
413
  ],
366
414
  };
367
- /** Returns the first (preferred) model for a provider, falling back to Anthropic's default. */
368
- function getDefaultModel(provider) {
369
- return exports.PROVIDER_MODELS[provider]?.[0] ?? exports.PROVIDER_MODELS[DEFAULT_PROVIDER][0];
415
+ /**
416
+ * Returns the first (preferred) model for a provider.
417
+ *
418
+ * For built-ins this is the first entry in `PROVIDER_MODELS`. For custom
419
+ * providers it is the registered `defaultModel`. Falls back to Anthropic's
420
+ * built-in default when the provider is unknown.
421
+ */
422
+ function getDefaultModel(provider, customProviders) {
423
+ if (exports.PROVIDER_MODELS[provider])
424
+ return exports.PROVIDER_MODELS[provider][0];
425
+ const custom = customProviders ?? (0, custom_providers_js_1.loadCustomProviders)();
426
+ if (custom[provider])
427
+ return custom[provider].defaultModel;
428
+ return exports.PROVIDER_MODELS[DEFAULT_PROVIDER][0];
370
429
  }
371
- /** Returns the API key for the given provider from config, or undefined if not set. */
430
+ /**
431
+ * Returns the API key for the given provider from config, or undefined if not set.
432
+ *
433
+ * Looks up the generic `apiKeys` map first (which carries keys for both
434
+ * built-in and custom providers), then falls back to the legacy named fields
435
+ * (`anthropicApiKey`/`openaiApiKey`/`xaiApiKey`) for backwards compat with
436
+ * older test fixtures.
437
+ */
372
438
  function getProviderApiKey(config, provider) {
373
- const keyMap = {
374
- anthropic: config.anthropicApiKey,
375
- openai: config.openaiApiKey,
376
- xai: config.xaiApiKey,
377
- };
378
- return Object.hasOwn(keyMap, provider) ? keyMap[provider] : undefined;
439
+ if (config.apiKeys && Object.hasOwn(config.apiKeys, provider) && config.apiKeys[provider]) {
440
+ return config.apiKeys[provider];
441
+ }
442
+ switch (provider) {
443
+ case 'anthropic':
444
+ return config.anthropicApiKey;
445
+ case 'openai':
446
+ return config.openaiApiKey;
447
+ case 'xai':
448
+ return config.xaiApiKey;
449
+ default:
450
+ return undefined;
451
+ }
379
452
  }
380
- /** Returns provider names that have an API key present in the given config. */
453
+ /**
454
+ * Returns provider names that have an API key present in the given config.
455
+ * Built-ins precede custom providers in the returned list.
456
+ */
381
457
  function getAvailableProviders(config) {
382
- return Object.keys(exports.PROVIDER_MODELS).filter((p) => !!getProviderApiKey(config, p));
458
+ const builtin = Object.keys(exports.PROVIDER_MODELS).filter((p) => !!getProviderApiKey(config, p));
459
+ const custom = Object.keys(config.customProviders ?? {}).filter((p) => !!getProviderApiKey(config, p));
460
+ return [...builtin, ...custom];
383
461
  }
384
- /** Returns true if the given provider name is a known provider in PROVIDER_MODELS. */
385
- function isValidProvider(provider) {
386
- return Object.hasOwn(exports.PROVIDER_MODELS, provider);
462
+ /**
463
+ * Returns true if `provider` is a known provider — built-in or registered
464
+ * as a custom provider in the supplied (or freshly loaded) registry.
465
+ */
466
+ function isValidProvider(provider, customProviders) {
467
+ if (Object.hasOwn(exports.PROVIDER_MODELS, provider))
468
+ return true;
469
+ const custom = customProviders ?? (0, custom_providers_js_1.loadCustomProviders)();
470
+ return Object.hasOwn(custom, provider);
387
471
  }
388
472
  /** Returns true if the given config has an API key for the specified provider. */
389
473
  function hasProviderKey(config, provider) {
390
474
  return !!getProviderApiKey(config, provider);
391
475
  }
476
+ /**
477
+ * Returns the conventional env-var name for an API key for the given provider.
478
+ * Built-ins return the canonical `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `XAI_API_KEY`;
479
+ * custom providers return `BERNARD_<NAME>_API_KEY` (informational only — custom
480
+ * keys are never read from env, only from `keys.json`).
481
+ */
482
+ function providerEnvVar(provider) {
483
+ return (exports.PROVIDER_ENV_VARS[provider] ?? `BERNARD_${provider.toUpperCase().replace(/-/g, '_')}_API_KEY`);
484
+ }
485
+ /**
486
+ * Coerces an empty or whitespace-only string to undefined, otherwise trims it.
487
+ * Used to normalize provider/model overrides — the model sometimes passes
488
+ * `provider: ""` to mean "use default" and saved specialists may have
489
+ * `"provider": ""`. With `??` chains, empty strings would falsely "win" over
490
+ * the next fallback; this helper makes them fall through.
491
+ */
492
+ function blankToUndefined(v) {
493
+ return v && v.trim() ? v.trim() : undefined;
494
+ }
495
+ /**
496
+ * Resolves the provider and model to use for a sub-agent / specialist /
497
+ * task / tool-wrapper invocation, applying the same precedence rule across
498
+ * all four call sites:
499
+ *
500
+ * 1. Invocation-level override (the model passes `provider`/`model` args).
501
+ * 2. Specialist-level default (when invoking a saved specialist).
502
+ * 3. Global config.
503
+ *
504
+ * Empty/whitespace strings are treated as "not provided". When the resolved
505
+ * provider differs from `config.provider` and no explicit model override is
506
+ * given, `getDefaultModel(provider)` is used to avoid cross-provider model
507
+ * mismatches (e.g. xai provider with an Anthropic model name).
508
+ */
509
+ function resolveProviderAndModel(opts) {
510
+ const provider = blankToUndefined(opts.provider) ??
511
+ blankToUndefined(opts.specialistProvider) ??
512
+ opts.config.provider;
513
+ const explicitModel = blankToUndefined(opts.model) ?? blankToUndefined(opts.specialistModel);
514
+ const model = explicitModel ??
515
+ (provider !== opts.config.provider
516
+ ? getDefaultModel(provider, opts.config.customProviders)
517
+ : opts.config.model);
518
+ if (!hasProviderKey(opts.config, provider)) {
519
+ const isCustom = Object.hasOwn(opts.config.customProviders ?? {}, provider);
520
+ return { ok: false, provider, envVar: providerEnvVar(provider), isCustom };
521
+ }
522
+ return { ok: true, provider, model };
523
+ }
524
+ /**
525
+ * Default error message format for a {@link ProviderResolution} failure.
526
+ * Used by the plain-string callers (specialist-run, subagent). Other callers
527
+ * (task: JSON-wrapped, tool-wrapper-run: shorter format) format their own.
528
+ *
529
+ * For custom providers, omits the env-var suggestion — those keys are not
530
+ * read from `process.env`.
531
+ */
532
+ function defaultProviderErrorMessage(provider, envVar, isCustom = false) {
533
+ const envHint = isCustom ? '' : ` or set ${envVar}`;
534
+ return `No API key found for provider "${provider}". Run: bernard add-key ${provider} <your-api-key>${envHint}.`;
535
+ }
392
536
  /**
393
537
  * Builds a fully-resolved {@link BernardConfig} by merging (in priority order):
394
538
  * CLI overrides, saved preferences, environment variables, and built-in defaults.
@@ -411,31 +555,43 @@ function loadConfig(overrides) {
411
555
  else if (fs.existsSync(legacyEnv)) {
412
556
  dotenv.config({ path: legacyEnv });
413
557
  }
414
- // Stored keys override .env — user explicitly ran `add-key`
558
+ // Stored keys override .env — user explicitly ran `add-key`.
559
+ // Built-in providers also get their key bridged into `process.env` so the
560
+ // AI SDK module-level singletons pick it up. Custom-provider keys live only
561
+ // in `config.apiKeys` and are read directly when constructing the model.
415
562
  const storedKeys = loadStoredKeys();
416
563
  for (const [provider, key] of Object.entries(storedKeys)) {
417
564
  const envVar = exports.PROVIDER_ENV_VARS[provider];
418
565
  if (envVar && key)
419
566
  process.env[envVar] = key;
420
567
  }
568
+ const customProviders = (0, custom_providers_js_1.loadCustomProviders)();
421
569
  const prefs = loadPreferences();
422
570
  const explicitProvider = overrides?.provider || prefs.provider || process.env.BERNARD_PROVIDER;
423
571
  let provider = explicitProvider || DEFAULT_PROVIDER;
424
- let model = overrides?.model || prefs.model || process.env.BERNARD_MODEL || getDefaultModel(provider);
572
+ let model = overrides?.model ||
573
+ prefs.model ||
574
+ process.env.BERNARD_MODEL ||
575
+ getDefaultModel(provider, customProviders);
425
576
  // When provider was not explicitly chosen and the default has no key,
426
- // auto-detect the first provider that does have a key available.
577
+ // auto-detect the first provider (built-in or custom) that does have one.
427
578
  if (!explicitProvider) {
428
- const keyMap = {
579
+ const builtinKeys = {
429
580
  anthropic: process.env.ANTHROPIC_API_KEY,
430
581
  openai: process.env.OPENAI_API_KEY,
431
582
  xai: process.env.XAI_API_KEY,
432
583
  };
433
- if (!keyMap[provider]) {
434
- const available = Object.keys(exports.PROVIDER_ENV_VARS).find((p) => !!keyMap[p]);
584
+ const hasKey = (p) => {
585
+ if (builtinKeys[p])
586
+ return true;
587
+ return !!storedKeys[p];
588
+ };
589
+ if (!hasKey(provider)) {
590
+ const available = Object.keys(exports.PROVIDER_ENV_VARS).find(hasKey) ?? Object.keys(customProviders).find(hasKey);
435
591
  if (available) {
436
592
  provider = available;
437
593
  if (!overrides?.model && !prefs.model && !process.env.BERNARD_MODEL) {
438
- model = getDefaultModel(provider);
594
+ model = getDefaultModel(provider, customProviders);
439
595
  }
440
596
  }
441
597
  }
@@ -451,16 +607,37 @@ function loadConfig(overrides) {
451
607
  const theme = prefs.theme || 'bernard';
452
608
  const criticMode = prefs.criticMode ??
453
609
  (process.env.BERNARD_CRITIC_MODE === 'true' || process.env.BERNARD_CRITIC_MODE === '1');
610
+ const reactMode = prefs.reactMode ??
611
+ (process.env.BERNARD_REACT_MODE === 'true' || process.env.BERNARD_REACT_MODE === '1');
612
+ const toolDetails = prefs.toolDetails ??
613
+ (process.env.BERNARD_TOOL_DETAILS === 'true' || process.env.BERNARD_TOOL_DETAILS === '1');
454
614
  const autoCreateSpecialists = prefs.autoCreateSpecialists ??
455
615
  (process.env.BERNARD_AUTO_CREATE_SPECIALISTS === 'true' ||
456
616
  process.env.BERNARD_AUTO_CREATE_SPECIALISTS === '1'
457
617
  ? true
458
618
  : DEFAULT_AUTO_CREATE_SPECIALISTS);
459
619
  const envAutoCreateThreshold = parseFloat(process.env.BERNARD_AUTO_CREATE_THRESHOLD ?? '');
460
- const autoCreateThreshold = prefs.autoCreateThreshold ??
620
+ const autoCreateThreshold = normalizeThreshold(prefs.autoCreateThreshold ??
461
621
  (Number.isFinite(envAutoCreateThreshold)
462
622
  ? envAutoCreateThreshold
463
- : DEFAULT_AUTO_CREATE_THRESHOLD);
623
+ : DEFAULT_AUTO_CREATE_THRESHOLD));
624
+ // Correction agent runs by default; users can opt out with BERNARD_CORRECTION_ENABLED=false.
625
+ const rawCorrection = process.env.BERNARD_CORRECTION_ENABLED;
626
+ const correctionEnabled = rawCorrection === undefined ? true : !(rawCorrection === 'false' || rawCorrection === '0');
627
+ // Prompt rewriter runs by default; users can opt out with BERNARD_PROMPT_REWRITER=false.
628
+ const rawRewriter = process.env.BERNARD_PROMPT_REWRITER;
629
+ const promptRewriter = prefs.promptRewriter ??
630
+ (rawRewriter === undefined ? true : !(rawRewriter === 'false' || rawRewriter === '0'));
631
+ // Reference tool-lookup runs by default; users can opt out with BERNARD_REFERENCE_LOOKUP=false.
632
+ const rawReferenceLookup = process.env.BERNARD_REFERENCE_LOOKUP;
633
+ const referenceLookup = prefs.referenceLookup ??
634
+ (rawReferenceLookup === undefined
635
+ ? true
636
+ : !(rawReferenceLookup === 'false' || rawReferenceLookup === '0'));
637
+ const referenceLookupTools = (process.env.BERNARD_LOOKUP_TOOLS ?? '')
638
+ .split(',')
639
+ .map((s) => s.trim())
640
+ .filter((s) => s.length > 0);
464
641
  const config = {
465
642
  provider,
466
643
  model,
@@ -471,11 +648,19 @@ function loadConfig(overrides) {
471
648
  ragEnabled,
472
649
  theme,
473
650
  criticMode,
651
+ reactMode,
652
+ toolDetails,
474
653
  autoCreateSpecialists,
475
654
  autoCreateThreshold,
655
+ correctionEnabled,
656
+ promptRewriter,
657
+ referenceLookup,
658
+ referenceLookupTools,
476
659
  anthropicApiKey: process.env.ANTHROPIC_API_KEY,
477
660
  openaiApiKey: process.env.OPENAI_API_KEY,
478
661
  xaiApiKey: process.env.XAI_API_KEY,
662
+ apiKeys: { ...storedKeys },
663
+ customProviders,
479
664
  };
480
665
  validateConfig(config);
481
666
  return config;
@@ -483,10 +668,12 @@ function loadConfig(overrides) {
483
668
  function validateConfig(config) {
484
669
  const key = getProviderApiKey(config, config.provider);
485
670
  if (!key) {
486
- const envVar = exports.PROVIDER_ENV_VARS[config.provider];
487
- throw new Error(`No API key found for provider "${config.provider}". ` +
488
- `Run: bernard add-key ${config.provider} <your-api-key>\n` +
489
- `Or set ${envVar} in your .env file or environment.`);
671
+ const envVar = providerEnvVar(config.provider);
672
+ const isCustom = Object.hasOwn(config.customProviders ?? {}, config.provider);
673
+ const hint = isCustom
674
+ ? `Run: bernard add-key ${config.provider} <your-api-key>`
675
+ : `Run: bernard add-key ${config.provider} <your-api-key>\nOr set ${envVar} in your .env file or environment.`;
676
+ throw new Error(`No API key found for provider "${config.provider}". ${hint}`);
490
677
  }
491
678
  }
492
679
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkGA,0CA0EC;AAOD,0CAoCC;AAoBD,0CAcC;AASD,8CAmBC;AAOD,gCAkBC;AAOD,kCAkBC;AAGD,0CAWC;AAOD,oDAkBC;AAkCD,0CAEC;AAGD,8CAOC;AAGD,sDAEC;AAGD,0CAEC;AAGD,wCAEC;AAWD,gCAgGC;AAthBD,+CAAiC;AACjC,gDAAkC;AAClC,4CAA8B;AAC9B,yCAAyE;AAkCzE,MAAM,gBAAgB,GAAG,WAAW,CAAC;AACrC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAC9C,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAE1C,kFAAkF;AACrE,QAAA,iBAAiB,GAA2B;IACvD,SAAS,EAAE,mBAAmB;IAC9B,MAAM,EAAE,gBAAgB;IACxB,GAAG,EAAE,aAAa;CACnB,CAAC;AAEF;;;;;GAKG;AACU,QAAA,gBAAgB,GAQzB;IACF,YAAY,EAAE;QACZ,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,2DAA2D;QACxE,MAAM,EAAE,oBAAoB;KAC7B;IACD,eAAe,EAAE;QACf,SAAS,EAAE,cAAc;QACzB,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,mEAAmE;QAChF,MAAM,EAAE,uBAAuB;KAChC;IACD,cAAc,EAAE;QACd,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,oBAAoB;QAC7B,WAAW,EAAE,kEAAkE;QAC/E,MAAM,EAAE,sBAAsB;KAC/B;IACD,WAAW,EAAE;QACX,SAAS,EAAE,UAAU;QACrB,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,6EAA6E;QAC1F,MAAM,EAAE,mBAAmB;KAC5B;CACF,CAAC;AAEF;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAY/B;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAU,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,IAAI,GAA4B,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACvF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACpE,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAC7E,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAC1E,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACjE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACvE,IAAI,KAAK,CAAC,qBAAqB,KAAK,SAAS;QAC3C,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,CAAC;IAC3D,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS;QAAE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;IAElG,6GAA6G;IAC7G,IAAI,QAA6C,CAAC;IAClD,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,qBAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACrC,CAAC;SAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAChE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3F,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACxC,CAAC;IAED,6EAA6E;IAC7E,kGAAkG;IAClG,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClF,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IACtC,CAAC;IACD,IAAI,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACxF,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACtF,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IAC1C,CAAC;IACD,IACE,KAAK,CAAC,qBAAqB,KAAK,SAAS;QACzC,QAAQ;QACR,OAAO,QAAQ,CAAC,qBAAqB,KAAK,SAAS,EACnD,CAAC;QACD,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC;IAC9D,CAAC;IACD,IACE,KAAK,CAAC,mBAAmB,KAAK,SAAS;QACvC,QAAQ;QACR,OAAO,QAAQ,CAAC,mBAAmB,KAAK,QAAQ,EAChD,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;IAC1D,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,qBAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe;IAa7B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,qBAAU,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO;YACL,QAAQ,EAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC3E,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAClE,SAAS,EAAE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAC9E,YAAY,EAAE,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YACvF,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YACpF,QAAQ,EAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC3E,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAClE,UAAU,EAAE,OAAO,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAClF,UAAU,EAAE,OAAO,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAClF,qBAAqB,EACnB,OAAO,MAAM,CAAC,qBAAqB,KAAK,SAAS;gBAC/C,CAAC,CAAC,MAAM,CAAC,qBAAqB;gBAC9B,CAAC,CAAC,SAAS;YACf,mBAAmB,EACjB,OAAO,MAAM,CAAC,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;SAC1F,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,oBAAS,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClD,OAAO,MAAgC,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,QAAgB,EAAE,GAAW;IAC3D,IAAI,CAAC,yBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,iBAAiB,MAAM,CAAC,IAAI,CAAC,yBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAS,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IACzB,EAAE,CAAC,aAAa,CAAC,oBAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACtE,EAAE,CAAC,SAAS,CAAC,oBAAS,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC,yBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,iBAAiB,MAAM,CAAC,IAAI,CAAC,yBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1B,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,IAAI,EAAE,CAAC,UAAU,CAAC,oBAAS,CAAC,EAAE,CAAC;YAC7B,EAAE,CAAC,UAAU,CAAC,oBAAS,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,aAAa,CAAC,oBAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACtE,EAAE,CAAC,SAAS,CAAC,oBAAS,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,IAAY,EAAE,KAAa;IACpD,MAAM,KAAK,GAAG,wBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,mBAAmB,IAAI,qBAAqB,MAAM,CAAC,IAAI,CAAC,wBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAC/B,KAAiC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;IAC5D,eAAe,CAAC;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,WAAW;QACvC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC;QACpE,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,wBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,mBAAmB,IAAI,qBAAqB,MAAM,CAAC,IAAI,CAAC,wBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,OAAQ,KAAiC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3D,eAAe,CAAC;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,WAAW;QACvC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC;QACpE,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAC;AACL,CAAC;AAED,sFAAsF;AACtF,SAAgB,eAAe;IAC7B,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,eAAe,CAAC;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,WAAW;QACvC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC;QACpE,SAAS,EAAE,SAAS;QACpB,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,SAAS;QACtB,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,mBAAQ,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAU,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;SAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IAEpC,OAAO,MAAM,CAAC,OAAO,CAAC,yBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,QAAQ;QACR,MAAM,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACxD,CAAC,CAAC,CAAC;AACN,CAAC;AAED,0FAA0F;AAC7E,QAAA,eAAe,GAA6B;IACvD,SAAS,EAAE;QACT,4BAA4B;QAC5B,iBAAiB;QACjB,2BAA2B;QAC3B,wBAAwB;QACxB,0BAA0B;KAC3B;IACD,MAAM,EAAE;QACN,SAAS;QACT,qBAAqB;QACrB,IAAI;QACJ,SAAS;QACT,aAAa;QACb,SAAS;QACT,cAAc;QACd,cAAc;KACf;IACD,GAAG,EAAE;QACH,2BAA2B;QAC3B,uBAAuB;QACvB,6BAA6B;QAC7B,yBAAyB;QACzB,aAAa;QACb,kBAAkB;QAClB,QAAQ;QACR,aAAa;KACd;CACF,CAAC;AAEF,+FAA+F;AAC/F,SAAgB,eAAe,CAAC,QAAgB;IAC9C,OAAO,uBAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,uBAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,uFAAuF;AACvF,SAAgB,iBAAiB,CAAC,MAAqB,EAAE,QAAgB;IACvE,MAAM,MAAM,GAAuC;QACjD,SAAS,EAAE,MAAM,CAAC,eAAe;QACjC,MAAM,EAAE,MAAM,CAAC,YAAY;QAC3B,GAAG,EAAE,MAAM,CAAC,SAAS;KACtB,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC;AAED,+EAA+E;AAC/E,SAAgB,qBAAqB,CAAC,MAAqB;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,uBAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,sFAAsF;AACtF,SAAgB,eAAe,CAAC,QAAgB;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,uBAAe,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,kFAAkF;AAClF,SAAgB,cAAc,CAAC,MAAqB,EAAE,QAAgB;IACpE,OAAO,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,UAAU,CAAC,SAAiD;IAC1E,yEAAyE;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAU,EAAE,MAAM,CAAC,CAAC;IAEhD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;SAAM,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,mBAAQ,EAAE,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,4DAA4D;IAC5D,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,yBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,MAAM,IAAI,GAAG;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,gBAAgB,GAAG,SAAS,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC/F,IAAI,QAAQ,GAAG,gBAAgB,IAAI,gBAAgB,CAAC;IACpD,IAAI,KAAK,GACP,SAAS,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE5F,sEAAsE;IACtE,iEAAiE;IACjE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,MAAM,GAAuC;YACjD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;YACxC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;YAClC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;SAC7B,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,GAAG,SAAS,CAAC;gBACrB,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;oBACpE,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GACb,KAAK,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,CAAC;IAChG,MAAM,YAAY,GAChB,KAAK,CAAC,YAAY;QAClB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC;IACnF,MAAM,WAAW,GACf,KAAK,CAAC,WAAW;QACjB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC;IACjF,MAAM,WAAW,GACf,KAAK,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,CAAC;IAC7F,MAAM,QAAQ,GACZ,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAEjG,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,OAAO,CAAC;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;IACvC,MAAM,UAAU,GACd,KAAK,CAAC,UAAU;QAChB,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,GAAG,CAAC,CAAC;IAE1F,MAAM,qBAAqB,GACzB,KAAK,CAAC,qBAAqB;QAC3B,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,MAAM;YACvD,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,GAAG;YACjD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,+BAA+B,CAAC,CAAC;IAEvC,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;IAC3F,MAAM,mBAAmB,GACvB,KAAK,CAAC,mBAAmB;QACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACtC,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAErC,MAAM,MAAM,GAAkB;QAC5B,QAAQ;QACR,KAAK;QACL,SAAS;QACT,YAAY;QACZ,WAAW;QACX,QAAQ;QACR,UAAU;QACV,KAAK;QACL,UAAU;QACV,qBAAqB;QACrB,mBAAmB;QACnB,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC9C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QACxC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;KACnC,CAAC;IAEF,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,MAAqB;IAC3C,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,MAAM,GAAG,yBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,kCAAkC,MAAM,CAAC,QAAQ,KAAK;YACpD,wBAAwB,MAAM,CAAC,QAAQ,mBAAmB;YAC1D,UAAU,MAAM,oCAAoC,CACvD,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/context.js CHANGED
@@ -17,6 +17,7 @@ const ai_1 = require("ai");
17
17
  const index_js_1 = require("./providers/index.js");
18
18
  const logger_js_1 = require("./logger.js");
19
19
  const domains_js_1 = require("./domains.js");
20
+ const image_js_1 = require("./image.js");
20
21
  /** Model name → context window size in tokens */
21
22
  exports.MODEL_CONTEXT_WINDOWS = {
22
23
  // Anthropic
@@ -148,7 +149,8 @@ async function extractDomainFacts(serializedText, config) {
148
149
  const results = await Promise.allSettled(domainIds.map(async (domainId) => {
149
150
  const domain = domains_js_1.DOMAIN_REGISTRY[domainId];
150
151
  const result = await (0, ai_1.generateText)({
151
- model: (0, index_js_1.getModel)(config.provider, config.model),
152
+ model: (0, index_js_1.getModelForConfig)(config, config.provider, config.model),
153
+ providerOptions: (0, index_js_1.getProviderOptionsForConfig)(config, config.provider),
152
154
  maxTokens: 2048,
153
155
  system: domain.extractionPrompt,
154
156
  messages: [
@@ -219,7 +221,8 @@ async function compressHistory(history, config, ragStore) {
219
221
  try {
220
222
  // Run summarization and domain-specific fact extraction in parallel
221
223
  const summarizePromise = (0, ai_1.generateText)({
222
- model: (0, index_js_1.getModel)(config.provider, config.model),
224
+ model: (0, index_js_1.getModelForConfig)(config, config.provider, config.model),
225
+ providerOptions: (0, index_js_1.getProviderOptionsForConfig)(config, config.provider),
223
226
  maxTokens: 2048,
224
227
  system: exports.SUMMARIZATION_PROMPT,
225
228
  messages: [{ role: 'user', content: `Summarize this conversation:\n\n${serialized}` }],
@@ -291,17 +294,31 @@ function truncateToolResults(messages, maxChars = exports.MAX_TOOL_RESULT_CHARS)
291
294
  return changed ? { ...msg, content: newContent } : msg;
292
295
  });
293
296
  }
297
+ /** Estimates token count for a single message's content. */
298
+ function estimateMessageTokens(msg) {
299
+ if (typeof msg.content === 'string') {
300
+ return Math.ceil(msg.content.length / 3.6);
301
+ }
302
+ if (Array.isArray(msg.content)) {
303
+ let tokens = 0;
304
+ for (const part of msg.content) {
305
+ tokens += (0, image_js_1.estimateContentPartTokens)(part);
306
+ }
307
+ return tokens;
308
+ }
309
+ return Math.ceil(JSON.stringify(msg.content).length / 3.6);
310
+ }
294
311
  /**
295
312
  * Rough-but-safe token estimator for pre-flight checks.
296
313
  * Uses 3.6 chars/token (instead of 4) for a ~10% safety margin,
297
314
  * since tool-result tokens can be denser than natural language.
298
315
  */
299
316
  function estimateHistoryTokens(history) {
300
- let chars = 0;
317
+ let tokens = 0;
301
318
  for (const msg of history) {
302
- chars += JSON.stringify(msg.content).length;
319
+ tokens += estimateMessageTokens(msg);
303
320
  }
304
- return Math.ceil(chars / 3.6);
321
+ return tokens;
305
322
  }
306
323
  /**
307
324
  * Progressively drop oldest messages until estimated tokens fit within budget.
@@ -330,7 +347,7 @@ function emergencyTruncate(history, tokenBudget, systemPrompt, currentUserMessag
330
347
  let accumulated = 0;
331
348
  let cutoff = history.length;
332
349
  for (let i = history.length - 1; i >= 0; i--) {
333
- const msgTokens = Math.ceil(JSON.stringify(history[i].content).length / 3.6);
350
+ const msgTokens = estimateMessageTokens(history[i]);
334
351
  if (accumulated + msgTokens > historyBudget) {
335
352
  cutoff = i + 1;
336
353
  break;