@framers/agentos 0.10.21 → 0.10.23

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 (125) hide show
  1. package/README.md +1 -1
  2. package/dist/api/embedText.d.ts +9 -4
  3. package/dist/api/embedText.d.ts.map +1 -1
  4. package/dist/api/embedText.js +114 -8
  5. package/dist/api/embedText.js.map +1 -1
  6. package/dist/api/generateText.d.ts +14 -1
  7. package/dist/api/generateText.d.ts.map +1 -1
  8. package/dist/api/generateText.js +165 -20
  9. package/dist/api/generateText.js.map +1 -1
  10. package/dist/api/model.d.ts +25 -1
  11. package/dist/api/model.d.ts.map +1 -1
  12. package/dist/api/model.js +105 -3
  13. package/dist/api/model.js.map +1 -1
  14. package/dist/api/runtime/global-default.d.ts +9 -1
  15. package/dist/api/runtime/global-default.d.ts.map +1 -1
  16. package/dist/api/runtime/global-default.js.map +1 -1
  17. package/dist/api/runtime/provider-defaults.d.ts.map +1 -1
  18. package/dist/api/runtime/provider-defaults.js +11 -4
  19. package/dist/api/runtime/provider-defaults.js.map +1 -1
  20. package/dist/api/runtime/tool-emulation/history.d.ts +16 -0
  21. package/dist/api/runtime/tool-emulation/history.d.ts.map +1 -0
  22. package/dist/api/runtime/tool-emulation/history.js +89 -0
  23. package/dist/api/runtime/tool-emulation/history.js.map +1 -0
  24. package/dist/api/runtime/tool-emulation/index.d.ts +1 -0
  25. package/dist/api/runtime/tool-emulation/index.d.ts.map +1 -1
  26. package/dist/api/runtime/tool-emulation/index.js +1 -0
  27. package/dist/api/runtime/tool-emulation/index.js.map +1 -1
  28. package/dist/api/runtime/tool-emulation/loop.d.ts +6 -0
  29. package/dist/api/runtime/tool-emulation/loop.d.ts.map +1 -1
  30. package/dist/api/runtime/tool-emulation/loop.js +1 -0
  31. package/dist/api/runtime/tool-emulation/loop.js.map +1 -1
  32. package/dist/api/sessionTranscript.d.ts +40 -0
  33. package/dist/api/sessionTranscript.d.ts.map +1 -1
  34. package/dist/api/sessionTranscript.js +61 -1
  35. package/dist/api/sessionTranscript.js.map +1 -1
  36. package/dist/api/streamText.d.ts.map +1 -1
  37. package/dist/api/streamText.js +28 -7
  38. package/dist/api/streamText.js.map +1 -1
  39. package/dist/cognition/substrate/ConversationHistoryManager.d.ts.map +1 -1
  40. package/dist/cognition/substrate/ConversationHistoryManager.js +2 -0
  41. package/dist/cognition/substrate/ConversationHistoryManager.js.map +1 -1
  42. package/dist/cognition/substrate/GMI.d.ts.map +1 -1
  43. package/dist/cognition/substrate/GMI.js +3 -1
  44. package/dist/cognition/substrate/GMI.js.map +1 -1
  45. package/dist/cognition/substrate/IGMI.d.ts +5 -0
  46. package/dist/cognition/substrate/IGMI.d.ts.map +1 -1
  47. package/dist/cognition/substrate/IGMI.js.map +1 -1
  48. package/dist/core/llm/PromptEngine.d.ts.map +1 -1
  49. package/dist/core/llm/PromptEngine.js +1 -0
  50. package/dist/core/llm/PromptEngine.js.map +1 -1
  51. package/dist/core/llm/providers/AIModelProviderManager.d.ts +20 -0
  52. package/dist/core/llm/providers/AIModelProviderManager.d.ts.map +1 -1
  53. package/dist/core/llm/providers/AIModelProviderManager.js +35 -5
  54. package/dist/core/llm/providers/AIModelProviderManager.js.map +1 -1
  55. package/dist/core/llm/providers/IProvider.d.ts +9 -0
  56. package/dist/core/llm/providers/IProvider.d.ts.map +1 -1
  57. package/dist/core/llm/providers/errors/GeminiProviderError.d.ts +11 -0
  58. package/dist/core/llm/providers/errors/GeminiProviderError.d.ts.map +1 -1
  59. package/dist/core/llm/providers/errors/GeminiProviderError.js.map +1 -1
  60. package/dist/core/llm/providers/implementations/AnthropicProvider.d.ts +27 -6
  61. package/dist/core/llm/providers/implementations/AnthropicProvider.d.ts.map +1 -1
  62. package/dist/core/llm/providers/implementations/AnthropicProvider.js +107 -19
  63. package/dist/core/llm/providers/implementations/AnthropicProvider.js.map +1 -1
  64. package/dist/core/llm/providers/implementations/ClaudeCodeProvider.d.ts +1 -1
  65. package/dist/core/llm/providers/implementations/ClaudeCodeProvider.d.ts.map +1 -1
  66. package/dist/core/llm/providers/implementations/ClaudeCodeProvider.js +70 -7
  67. package/dist/core/llm/providers/implementations/ClaudeCodeProvider.js.map +1 -1
  68. package/dist/core/llm/providers/implementations/GeminiCLIBridge.js +1 -1
  69. package/dist/core/llm/providers/implementations/GeminiCLIProvider.d.ts.map +1 -1
  70. package/dist/core/llm/providers/implementations/GeminiCLIProvider.js +56 -4
  71. package/dist/core/llm/providers/implementations/GeminiCLIProvider.js.map +1 -1
  72. package/dist/core/llm/providers/implementations/GeminiProvider.d.ts +20 -4
  73. package/dist/core/llm/providers/implementations/GeminiProvider.d.ts.map +1 -1
  74. package/dist/core/llm/providers/implementations/GeminiProvider.js +352 -56
  75. package/dist/core/llm/providers/implementations/GeminiProvider.js.map +1 -1
  76. package/dist/core/llm/providers/implementations/MistralProvider.d.ts +11 -0
  77. package/dist/core/llm/providers/implementations/MistralProvider.d.ts.map +1 -1
  78. package/dist/core/llm/providers/implementations/MistralProvider.js +32 -2
  79. package/dist/core/llm/providers/implementations/MistralProvider.js.map +1 -1
  80. package/dist/core/llm/providers/implementations/OllamaProvider.js +7 -7
  81. package/dist/core/llm/providers/implementations/OllamaProvider.js.map +1 -1
  82. package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts +61 -0
  83. package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts.map +1 -1
  84. package/dist/core/llm/providers/implementations/OpenAIProvider.js +171 -29
  85. package/dist/core/llm/providers/implementations/OpenAIProvider.js.map +1 -1
  86. package/dist/core/llm/providers/implementations/OpenRouterProvider.d.ts.map +1 -1
  87. package/dist/core/llm/providers/implementations/OpenRouterProvider.js +14 -5
  88. package/dist/core/llm/providers/implementations/OpenRouterProvider.js.map +1 -1
  89. package/dist/core/llm/providers/implementations/TogetherProvider.d.ts +3 -3
  90. package/dist/core/llm/providers/implementations/TogetherProvider.d.ts.map +1 -1
  91. package/dist/core/llm/providers/implementations/TogetherProvider.js +25 -13
  92. package/dist/core/llm/providers/implementations/TogetherProvider.js.map +1 -1
  93. package/dist/core/llm/providers/model-forced-tool-choice.d.ts +32 -15
  94. package/dist/core/llm/providers/model-forced-tool-choice.d.ts.map +1 -1
  95. package/dist/core/llm/providers/model-forced-tool-choice.js +33 -16
  96. package/dist/core/llm/providers/model-forced-tool-choice.js.map +1 -1
  97. package/dist/core/llm/providers/openrouter-only-params.d.ts +26 -7
  98. package/dist/core/llm/providers/openrouter-only-params.d.ts.map +1 -1
  99. package/dist/core/llm/providers/openrouter-only-params.js +58 -9
  100. package/dist/core/llm/providers/openrouter-only-params.js.map +1 -1
  101. package/dist/core/llm/providers/url-secrets.d.ts +42 -0
  102. package/dist/core/llm/providers/url-secrets.d.ts.map +1 -0
  103. package/dist/core/llm/providers/url-secrets.js +64 -0
  104. package/dist/core/llm/providers/url-secrets.js.map +1 -0
  105. package/dist/core/llm/streaming/StreamingBatcher.d.ts.map +1 -1
  106. package/dist/core/llm/streaming/StreamingBatcher.js +3 -0
  107. package/dist/core/llm/streaming/StreamingBatcher.js.map +1 -1
  108. package/dist/core/llm/streaming/StreamingReconstructor.d.ts +2 -0
  109. package/dist/core/llm/streaming/StreamingReconstructor.d.ts.map +1 -1
  110. package/dist/core/llm/streaming/StreamingReconstructor.js +12 -1
  111. package/dist/core/llm/streaming/StreamingReconstructor.js.map +1 -1
  112. package/dist/index.d.ts +1 -1
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +1 -1
  115. package/dist/index.js.map +1 -1
  116. package/dist/io/vision/providers/LLMVisionProvider.d.ts +2 -2
  117. package/dist/io/vision/providers/LLMVisionProvider.js +1 -1
  118. package/dist/io/vision/types.d.ts +1 -1
  119. package/dist/orchestration/pipeline/query/types.d.ts.map +1 -1
  120. package/dist/orchestration/pipeline/query/types.js +5 -4
  121. package/dist/orchestration/pipeline/query/types.js.map +1 -1
  122. package/dist/orchestration/planning/ProviderAssignmentEngine.d.ts.map +1 -1
  123. package/dist/orchestration/planning/ProviderAssignmentEngine.js +4 -3
  124. package/dist/orchestration/planning/ProviderAssignmentEngine.js.map +1 -1
  125. package/package.json +1 -1
@@ -136,6 +136,25 @@ export interface ModelOption {
136
136
  * or the provider has no default model for the requested task.
137
137
  */
138
138
  export declare function resolveModelOption(opts: ModelOption, task?: TaskType): ParsedModel;
139
+ /**
140
+ * Thrown by {@link createProviderManager} when the requested provider did not
141
+ * initialize: a rejected or revoked API key (the provider's model listing
142
+ * answers 401), an unreachable endpoint, or a provider id the manager does
143
+ * not know. The fallback walker treats it as retryable, so a primary whose
144
+ * key stopped working fails over like one that answers 401 on the call.
145
+ *
146
+ * `httpStatus` repeats the cause's HTTP status when it has one, which the
147
+ * provider health registry uses to pick its cooldown.
148
+ */
149
+ export declare class ProviderInitializationError extends Error {
150
+ /** Provider that failed to initialize. */
151
+ readonly providerId: string;
152
+ /** HTTP status of the underlying failure, when it had one. */
153
+ readonly httpStatus?: number;
154
+ /** The error the provider threw during initialization, when there was one. */
155
+ readonly cause?: unknown;
156
+ constructor(providerId: string, cause?: unknown);
157
+ }
139
158
  /**
140
159
  * Instantiates and initialises an {@link AIModelProviderManager} for a single provider.
141
160
  *
@@ -145,11 +164,16 @@ export declare function resolveModelOption(opts: ModelOption, task?: TaskType):
145
164
  *
146
165
  * The manager is cached process-wide by resolved key + base URL, so repeated
147
166
  * calls with the same credentials reuse one manager instead of allocating
148
- * a new one per LLM call.
167
+ * a new one per LLM call. A provider that fails to initialize is not cached:
168
+ * the call throws and the next call with the same credentials initializes
169
+ * again, so a transient failure (a network blip, a 503 from the model
170
+ * listing) does not disable the provider for the life of the process.
149
171
  *
150
172
  * @param resolved - A `ResolvedProvider` produced by {@link resolveProvider}
151
173
  * or `resolveMediaProvider()`.
152
174
  * @returns A fully initialised {@link AIModelProviderManager} instance.
175
+ * @throws {ProviderInitializationError} When the requested provider did not
176
+ * initialize.
153
177
  */
154
178
  export declare function createProviderManager(resolved: ResolvedProvider): Promise<AIModelProviderManager>;
155
179
  //# sourceMappingURL=model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/api/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAIzF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA0BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAY3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,gBAAgB,CAsDlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,gBAAgB,CA8BlB;AAMD;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,GAAE,QAAiB,GAAG,WAAW,CAgE1F;AAmBD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAkCjC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/api/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAIzF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA0BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAY3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,gBAAgB,CAsDlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,gBAAgB,CAsClB;AAMD;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,GAAE,QAAiB,GAAG,WAAW,CAgF1F;AAmDD;;;;;;;;;GASG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,0CAA0C;IAC1C,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,8DAA8D;IAC9D,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpC,8EAA8E;IAC9E,SAAgB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEpB,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAchD;AAgBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CA4CjC"}
package/dist/api/model.js CHANGED
@@ -132,9 +132,17 @@ export function resolveProvider(providerId, modelId, overrides) {
132
132
  * @throws {Error} When a known provider is missing its required API key or base URL.
133
133
  */
134
134
  export function resolveMediaProvider(providerId, modelId, overrides) {
135
+ // The global default's credentials apply when it names this provider, as
136
+ // in resolveProvider. A default without a provider does not lend its key
137
+ // here: media calls auto-detect across vendors (Stability, Replicate, ...)
138
+ // and would send that key to the wrong one.
139
+ const def = getDefaultProvider();
140
+ const defAppliesToThisProvider = def?.provider === providerId;
135
141
  const apiKey = overrides?.apiKey ??
142
+ (defAppliesToThisProvider ? def?.apiKey : undefined) ??
136
143
  (ENV_KEY_MAP[providerId] ? process.env[ENV_KEY_MAP[providerId]] : undefined);
137
144
  const baseUrl = overrides?.baseUrl ??
145
+ (defAppliesToThisProvider ? def?.baseUrl : undefined) ??
138
146
  (ENV_URL_MAP[providerId] ? process.env[ENV_URL_MAP[providerId]] : undefined);
139
147
  if (providerId === 'ollama') {
140
148
  if (!baseUrl) {
@@ -177,11 +185,25 @@ export function resolveModelOption(opts, task = 'text') {
177
185
  // Apply global default for `provider` / `model` when neither is inlined.
178
186
  // Inline opts always win; the default kicks in only when the caller
179
187
  // supplied nothing. Env-var auto-detect happens later as a final
180
- // fallback if the default also doesn't pin a provider.
188
+ // fallback if the default also doesn't pin a provider. The default's
189
+ // model applies only to a task it can serve (see globalModelForTask);
190
+ // otherwise the provider's default model for the task is used.
181
191
  if (!opts.provider && !opts.model) {
182
192
  const def = getDefaultProvider();
183
193
  if (def?.provider) {
184
- opts = { ...opts, provider: def.provider, model: opts.model ?? def.model };
194
+ // A custom endpoint (the default's baseUrl, an inline baseUrl on
195
+ // callers such as embedText, or the provider's base-URL env var) may
196
+ // serve any model under any name, so the default's model stays.
197
+ const inlineBaseUrl = opts.baseUrl;
198
+ const envBaseUrlVar = def.provider ? ENV_URL_MAP[def.provider] : undefined;
199
+ const customEndpoint = Boolean(def.baseUrl ||
200
+ (typeof inlineBaseUrl === 'string' && inlineBaseUrl) ||
201
+ (envBaseUrlVar && process.env[envBaseUrlVar]));
202
+ opts = {
203
+ ...opts,
204
+ provider: def.provider,
205
+ model: customEndpoint ? def.model : globalModelForTask(def, task),
206
+ };
185
207
  }
186
208
  }
187
209
  // 1. Explicit model string (backwards compat and direct override)
@@ -230,6 +252,38 @@ export function resolveModelOption(opts, task = 'text') {
230
252
  }
231
253
  throw new Error('Either "provider" or "model" is required. Or configure a supported runtime (API key env var, Claude Code CLI, Gemini CLI, etc.).');
232
254
  }
255
+ /**
256
+ * Chat model families, optionally behind a gateway prefix such as `openai/`
257
+ * or `meta-llama/`.
258
+ */
259
+ const CHAT_MODEL_FAMILY = /^(?:[\w.-]+\/)?(?:gpt-|chatgpt|o\d|claude|gemini|gemma|llama|mistral|mixtral|codestral|ministral|magistral|grok|deepseek|qwen|command|phi-|sonar|kimi|glm)/i;
260
+ /** Names that mark a non-chat model inside a chat family (gpt-image-1, gemini-embedding-2). */
261
+ const NON_CHAT_MODEL_MARKER = /embed|image|dall-e|imagen|tts|whisper|transcri|audio|realtime|moderation/i;
262
+ /**
263
+ * The global default's model when it can serve `task` on the provider's own
264
+ * endpoint (a custom endpoint keeps the default's model; see
265
+ * resolveModelOption). The default model is the text model (`generateText`,
266
+ * agents). An embedding or image call drops it only when it is recognizably
267
+ * a chat model, which would fail there (the provider's default model for the
268
+ * task applies instead); any other name is kept, since it may be an embedding
269
+ * or image model. An embedding call on Ollama keeps any model: Ollama embeds
270
+ * with whatever model is pulled, and forcing nomic-embed-text would break
271
+ * hosts that never pulled it.
272
+ *
273
+ * @param def - The global default provider config.
274
+ * @param task - The task being resolved.
275
+ * @returns The model to apply, or undefined to use the provider's task default.
276
+ */
277
+ function globalModelForTask(def, task) {
278
+ if (!def.model)
279
+ return undefined;
280
+ if (task === 'text')
281
+ return def.model;
282
+ if (task === 'embedding' && def.provider === 'ollama')
283
+ return def.model;
284
+ const isChatModel = CHAT_MODEL_FAMILY.test(def.model) && !NON_CHAT_MODEL_MARKER.test(def.model);
285
+ return isChatModel ? undefined : def.model;
286
+ }
233
287
  // ---------------------------------------------------------------------------
234
288
  /**
235
289
  * Process-scoped cache of initialised {@link AIModelProviderManager}
@@ -241,6 +295,43 @@ export function resolveModelOption(opts, task = 'text') {
241
295
  * configs reuse the same one for the life of the process.
242
296
  */
243
297
  const managerCache = new Map();
298
+ /**
299
+ * Thrown by {@link createProviderManager} when the requested provider did not
300
+ * initialize: a rejected or revoked API key (the provider's model listing
301
+ * answers 401), an unreachable endpoint, or a provider id the manager does
302
+ * not know. The fallback walker treats it as retryable, so a primary whose
303
+ * key stopped working fails over like one that answers 401 on the call.
304
+ *
305
+ * `httpStatus` repeats the cause's HTTP status when it has one, which the
306
+ * provider health registry uses to pick its cooldown.
307
+ */
308
+ export class ProviderInitializationError extends Error {
309
+ constructor(providerId, cause) {
310
+ const detail = cause instanceof Error
311
+ ? cause.message
312
+ : cause !== undefined
313
+ ? String(cause)
314
+ : 'the provider was not registered';
315
+ super(`Provider '${providerId}' failed to initialize: ${detail}`);
316
+ this.name = 'ProviderInitializationError';
317
+ this.providerId = providerId;
318
+ this.cause = cause;
319
+ const status = httpStatusOf(cause);
320
+ if (status !== undefined)
321
+ this.httpStatus = status;
322
+ }
323
+ }
324
+ /** Reads a numeric HTTP status from the fields provider errors use. */
325
+ function httpStatusOf(error) {
326
+ if (!error || typeof error !== 'object')
327
+ return undefined;
328
+ const e = error;
329
+ for (const value of [e.httpStatus, e.status, e.statusCode]) {
330
+ if (typeof value === 'number' && Number.isFinite(value))
331
+ return value;
332
+ }
333
+ return undefined;
334
+ }
244
335
  function buildCacheKey(resolved) {
245
336
  return `${resolved.providerId}::${resolved.apiKey ?? ''}::${resolved.baseUrl ?? ''}`;
246
337
  }
@@ -253,11 +344,16 @@ function buildCacheKey(resolved) {
253
344
  *
254
345
  * The manager is cached process-wide by resolved key + base URL, so repeated
255
346
  * calls with the same credentials reuse one manager instead of allocating
256
- * a new one per LLM call.
347
+ * a new one per LLM call. A provider that fails to initialize is not cached:
348
+ * the call throws and the next call with the same credentials initializes
349
+ * again, so a transient failure (a network blip, a 503 from the model
350
+ * listing) does not disable the provider for the life of the process.
257
351
  *
258
352
  * @param resolved - A `ResolvedProvider` produced by {@link resolveProvider}
259
353
  * or `resolveMediaProvider()`.
260
354
  * @returns A fully initialised {@link AIModelProviderManager} instance.
355
+ * @throws {ProviderInitializationError} When the requested provider did not
356
+ * initialize.
261
357
  */
262
358
  export async function createProviderManager(resolved) {
263
359
  const key = buildCacheKey(resolved);
@@ -283,6 +379,12 @@ export async function createProviderManager(resolved) {
283
379
  },
284
380
  ],
285
381
  });
382
+ // initialize() logs a provider's failure and leaves it unregistered.
383
+ // Surface it with its cause so callers can fail over, and reject so the
384
+ // handler below drops this manager from the cache.
385
+ if (!manager.getProvider(resolved.providerId)) {
386
+ throw new ProviderInitializationError(resolved.providerId, manager.getProviderInitError(resolved.providerId));
387
+ }
286
388
  return manager;
287
389
  })();
288
390
  // Drop from cache if init rejected so the next call retries cleanly
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/api/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/api/model.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,15 @@
27
27
  export interface GlobalDefaultProvider {
28
28
  /** Provider identifier (e.g. `"openai"`, `"anthropic"`, `"openrouter"`, `"ollama"`). */
29
29
  provider?: string;
30
- /** Default model identifier for this provider (e.g. `"gpt-4o-mini"`). */
30
+ /**
31
+ * Default text model for this provider (e.g. `"gpt-4o-mini"`), used by
32
+ * `generateText`, `streamText` and agents. Embedding and image calls use it
33
+ * too unless it is recognizably a chat model (GPT, Claude, Gemini, Llama and
34
+ * similar families) sent to the provider's own endpoint, in which case the
35
+ * provider's default model for the task applies. With a custom endpoint
36
+ * (`baseUrl` here, inline, or the provider's base-URL env var), and for
37
+ * `embedText` on Ollama, it is always used.
38
+ */
31
39
  model?: string;
32
40
  /** API key used when no inline override is supplied. */
33
41
  apiKey?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"global-default.d.ts","sourceRoot":"","sources":["../../../src/api/runtime/global-default.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAEvE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,qBAAqB,GAAG,SAAS,CAEtE;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
1
+ {"version":3,"file":"global-default.d.ts","sourceRoot":"","sources":["../../../src/api/runtime/global-default.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAEvE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,qBAAqB,GAAG,SAAS,CAEtE;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"global-default.js","sourceRoot":"","sources":["../../../src/api/runtime/global-default.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAoBH,IAAI,cAAiD,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA8B;IAC/D,cAAc,GAAG,MAAM,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,oBAAoB;IAClC,cAAc,GAAG,SAAS,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"global-default.js","sourceRoot":"","sources":["../../../src/api/runtime/global-default.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA4BH,IAAI,cAAiD,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA8B;IAC/D,cAAc,GAAG,MAAM,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,oBAAoB;IAClC,cAAc,GAAG,SAAS,CAAC;AAC7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-defaults.d.ts","sourceRoot":"","sources":["../../../src/api/runtime/provider-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,yDAAyD;AACzD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEjE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAgE9D,CAAC;AAwDF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAmBjF"}
1
+ {"version":3,"file":"provider-defaults.d.ts","sourceRoot":"","sources":["../../../src/api/runtime/provider-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,yDAAyD;AACzD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEjE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAuE9D,CAAC;AAwDF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAmBjF"}
@@ -37,7 +37,9 @@ export const PROVIDER_DEFAULTS = {
37
37
  },
38
38
  gemini: {
39
39
  text: 'gemini-2.5-flash',
40
- cheap: 'gemini-2.0-flash',
40
+ // gemini-2.0-flash returns HTTP 404 "no longer available" (probed
41
+ // 2026-09-29). gemini-2.5-flash-lite is the cheapest Gemini model served.
42
+ cheap: 'gemini-2.5-flash-lite',
41
43
  },
42
44
  'claude-code-cli': {
43
45
  text: 'claude-sonnet-4-6',
@@ -45,7 +47,9 @@ export const PROVIDER_DEFAULTS = {
45
47
  },
46
48
  'gemini-cli': {
47
49
  text: 'gemini-2.5-flash',
48
- cheap: 'gemini-2.0-flash-lite',
50
+ // gemini-2.0-flash-lite fails in the CLI with ModelNotFoundError (probed
51
+ // 2026-09-29), while gemini-2.5-flash-lite is served as requested.
52
+ cheap: 'gemini-2.5-flash-lite',
49
53
  },
50
54
  stability: {
51
55
  image: 'stable-diffusion-xl-1024-v1-0',
@@ -67,8 +71,11 @@ export const PROVIDER_DEFAULTS = {
67
71
  cheap: 'gemma2-9b-it',
68
72
  },
69
73
  together: {
70
- text: 'meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo',
71
- cheap: 'meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo',
74
+ // The Llama 3.1 Turbo ids left Together serverless in 2026-02/03. The
75
+ // cheap slot stays on a non-reasoning model: the cheaper served picks
76
+ // reason by default and can spend a small maxTokens budget on the trace.
77
+ text: 'meta-llama/Llama-3.3-70B-Instruct-Turbo',
78
+ cheap: 'meta-llama/Llama-3.3-70B-Instruct-Turbo',
72
79
  },
73
80
  mistral: {
74
81
  text: 'mistral-large-latest',
@@ -1 +1 @@
1
- {"version":3,"file":"provider-defaults.js","sourceRoot":"","sources":["../../../src/api/runtime/provider-defaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-defaults.js","sourceRoot":"","sources":["../../../src/api/runtime/provider-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAoB7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAqC;IACjE,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,aAAa;QACpB,SAAS,EAAE,wBAAwB;QACnC,KAAK,EAAE,aAAa;KACrB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,2BAA2B;KACnC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,kBAAkB;QACzB,SAAS,EAAE,kBAAkB;QAC7B,KAAK,EAAE,UAAU;KAClB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,oBAAoB;KAC5B;IACD,MAAM,EAAE;QACN,IAAI,EAAE,kBAAkB;QACxB,kEAAkE;QAClE,0EAA0E;QAC1E,KAAK,EAAE,uBAAuB;KAC/B;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,2BAA2B;KACnC;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,kBAAkB;QACxB,yEAAyE;QACzE,mEAAmE;QACnE,KAAK,EAAE,uBAAuB;KAC/B;IACD,SAAS,EAAE;QACT,KAAK,EAAE,+BAA+B;KACvC;IACD,SAAS,EAAE;QACT,KAAK,EAAE,gCAAgC;KACxC;IACD,wBAAwB,EAAE;QACxB,KAAK,EAAE,qBAAqB;KAC7B;IACD,GAAG,EAAE;QACH,KAAK,EAAE,cAAc;KACtB;IACD,GAAG,EAAE;QACH,KAAK,EAAE,iBAAiB;KACzB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,cAAc;KACtB;IACD,QAAQ,EAAE;QACR,sEAAsE;QACtE,sEAAsE;QACtE,yEAAyE;QACzE,IAAI,EAAE,yCAAyC;QAC/C,KAAK,EAAE,yCAAyC;KACjD;IACD,OAAO,EAAE;QACP,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,sBAAsB;KAC9B;IACD,GAAG,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,aAAa;KACrB;CACF,CAAC;AAOF;;;;;;;;;;GAUG;AACH,MAAM,iBAAiB,GAAsB;IAC3C,iEAAiE;IACjE,iEAAiE;IACjE,oEAAoE;IACpE,oEAAoE;IACpE,mEAAmE;IACnE,YAAY;IACZ,EAAE,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,YAAY,EAAE;IACxD,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAChD,EAAE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE;IACtD,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAChD,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC5C,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE;IACpD,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE;IAClD,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC1C,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE;IACrD,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE;IAChD,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACjD,EAAE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE;IACtD,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,WAAW,EAAE;IACxD,EAAE,MAAM,EAAE,iCAAiC,EAAE,QAAQ,EAAE,wBAAwB,EAAE;IACjF,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC1C,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE;CAC3C,CAAC;AAEF,SAAS,cAAc,CAAC,UAAkB;IACxC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACvE,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,sEAAsE;AACtE,sEAAsE;AACtE,kDAAkD;AAClD,MAAM,iBAAiB,GAAoC,MAAM,CAAC,WAAW,CAC3E,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAC1D,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA0B;IAC3D,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAsB,WAAW;QAC1C,CAAC,CAAC,WAAW;aACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;aAChC,MAAM,CAAC,CAAC,KAAK,EAA4B,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC,CAAC,iBAAiB,CAAC;IAEtB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,QAAQ,IAAI,KAAK;YACjC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAC3B,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;YAAE,SAAS;QAC3D,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { EmulatedLoopMessage } from './loop';
2
+ /**
3
+ * Renders a chat history for the prompt-tool shim, which sends plain
4
+ * role/content text. An assistant turn's native tool calls become
5
+ * `<tool_call>` blocks after its text, and each run of tool results becomes
6
+ * one user turn of `<tool_response>` blocks, the shape the shim records for
7
+ * its own rounds. A history that holds native tool turns (a session
8
+ * transcript, or a failover that continues after completed tool rounds)
9
+ * otherwise reaches the model as `tool` messages with nothing to pair with,
10
+ * which OpenAI-compatible APIs reject.
11
+ *
12
+ * @param messages Request messages in the native chat shape.
13
+ * @returns The same conversation as shim messages.
14
+ */
15
+ export declare function toShimMessages(messages: ReadonlyArray<Record<string, unknown>>): EmulatedLoopMessage[];
16
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../../src/api/runtime/tool-emulation/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAElD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC/C,mBAAmB,EAAE,CAoCvB"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Renders a chat history for the prompt-tool shim, which sends plain
3
+ * role/content text. An assistant turn's native tool calls become
4
+ * `<tool_call>` blocks after its text, and each run of tool results becomes
5
+ * one user turn of `<tool_response>` blocks, the shape the shim records for
6
+ * its own rounds. A history that holds native tool turns (a session
7
+ * transcript, or a failover that continues after completed tool rounds)
8
+ * otherwise reaches the model as `tool` messages with nothing to pair with,
9
+ * which OpenAI-compatible APIs reject.
10
+ *
11
+ * @param messages Request messages in the native chat shape.
12
+ * @returns The same conversation as shim messages.
13
+ */
14
+ export function toShimMessages(messages) {
15
+ const out = [];
16
+ // Tool names by call id, so a result without a name still names its call.
17
+ const toolNameByCallId = new Map();
18
+ let openToolResponses;
19
+ for (const m of messages) {
20
+ const text = contentText(m.content);
21
+ if (m.role === 'tool') {
22
+ const callId = typeof m.tool_call_id === 'string' ? m.tool_call_id : undefined;
23
+ const name = (typeof m.name === 'string' && m.name) || (callId ? toolNameByCallId.get(callId) : undefined) || '';
24
+ // The call id and name travel in the envelope, so results that arrive
25
+ // in a different order than their calls stay matched.
26
+ const block = `<tool_response>${JSON.stringify({ id: callId, name, output: parsedOrText(text) })}</tool_response>`;
27
+ if (openToolResponses) {
28
+ openToolResponses.content += `\n${block}`;
29
+ }
30
+ else {
31
+ openToolResponses = { role: 'user', content: block };
32
+ out.push(openToolResponses);
33
+ }
34
+ continue;
35
+ }
36
+ openToolResponses = undefined;
37
+ const toolCalls = m.role === 'assistant' && Array.isArray(m.tool_calls) ? m.tool_calls : [];
38
+ if (toolCalls.length > 0) {
39
+ const blocks = toolCalls.map((tc) => {
40
+ const payload = toolCallPayload(tc);
41
+ if (payload.id)
42
+ toolNameByCallId.set(payload.id, payload.name);
43
+ return `<tool_call>${JSON.stringify(payload)}</tool_call>`;
44
+ });
45
+ out.push({ role: 'assistant', content: [text, ...blocks].filter(Boolean).join('\n') });
46
+ continue;
47
+ }
48
+ out.push({ role: String(m.role), content: text });
49
+ }
50
+ return out;
51
+ }
52
+ /** Text of a message's content: strings as they are, other values as JSON. */
53
+ function contentText(content) {
54
+ if (typeof content === 'string')
55
+ return content;
56
+ if (content === null || content === undefined)
57
+ return '';
58
+ return JSON.stringify(content);
59
+ }
60
+ /**
61
+ * The `{name, arguments, id}` payload of a native tool call, arguments parsed
62
+ * when they are JSON. The shim's parser reads `name` and `arguments`; `id`
63
+ * pairs the call with its result.
64
+ */
65
+ function toolCallPayload(toolCall) {
66
+ const tc = toolCall;
67
+ const fn = tc?.function;
68
+ const name = typeof fn?.name === 'string' ? fn.name : '';
69
+ let args = fn?.arguments ?? {};
70
+ if (typeof args === 'string') {
71
+ try {
72
+ args = JSON.parse(args);
73
+ }
74
+ catch {
75
+ // Keep the raw argument text; the model still sees what was called.
76
+ }
77
+ }
78
+ return { name, arguments: args, ...(typeof tc?.id === 'string' ? { id: tc.id } : {}) };
79
+ }
80
+ /** A tool result's JSON value when its text is JSON, else the text. */
81
+ function parsedOrText(text) {
82
+ try {
83
+ return JSON.parse(text);
84
+ }
85
+ catch {
86
+ return text;
87
+ }
88
+ }
89
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../../../src/api/runtime/tool-emulation/history.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@ export * from './parser';
2
2
  export * from './renderer';
3
3
  export * from './activation';
4
4
  export * from './loop';
5
+ export * from './history';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/runtime/tool-emulation/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/runtime/tool-emulation/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
@@ -2,4 +2,5 @@ export * from './parser.js';
2
2
  export * from './renderer.js';
3
3
  export * from './activation.js';
4
4
  export * from './loop.js';
5
+ export * from './history.js';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/runtime/tool-emulation/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/runtime/tool-emulation/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
@@ -21,6 +21,12 @@ export interface RunEmulatedToolLoopOptions {
21
21
  maxRoundtrips: number;
22
22
  /** Execution context passed to each tool.execute(). */
23
23
  toolContext?: ToolExecutionContext;
24
+ /**
25
+ * Called with the tool's name right before a parsed call runs the tool.
26
+ * Callers use it to learn that a tool had side effects, for example to
27
+ * refuse a failover that would run the call again.
28
+ */
29
+ onToolExecute?: (toolName: string) => void;
24
30
  }
25
31
  export interface EmulatedToolLoopResult {
26
32
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../../src/api/runtime/tool-emulation/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAK7E,MAAM,WAAW,mBAAmB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAEvE,MAAM,WAAW,sBAAsB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAAE;AAExG,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,oEAAoE;IACpE,SAAS,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAC5G,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,sBAAsB,EAAE,CAAC;IACpC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAgDjC"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../../src/api/runtime/tool-emulation/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAK7E,MAAM,WAAW,mBAAmB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAEvE,MAAM,WAAW,sBAAsB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAAE;AAExG,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,oEAAoE;IACpE,SAAS,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAC5G,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,sBAAsB,EAAE,CAAC;IACpC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAiDjC"}
@@ -34,6 +34,7 @@ export async function runEmulatedToolLoop(opts) {
34
34
  return formatToolResponse(call.name, { success: false, error: `unknown tool "${call.name}"` });
35
35
  }
36
36
  try {
37
+ opts.onToolExecute?.(call.name);
37
38
  const result = await tool.execute(call.arguments, opts.toolContext);
38
39
  toolCalls.push({ name: call.name, args: call.arguments });
39
40
  return formatToolResponse(call.name, result);
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../../src/api/runtime/tool-emulation/loop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAuBlD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAgC;IAEhC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAA0B;QACtC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC9D,GAAG,IAAI,CAAC,QAAQ;KACjB,CAAC;IACF,MAAM,SAAS,GAA6B,EAAE,CAAC;IAC/C,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC;QACrD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvD,WAAW,IAAI,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC;QACvC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAEjE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAC7E,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAC5F,CAAC;QACD,oEAAoE;QACpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YACjG,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAmC,CAAC,CAAC;gBAC5F,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC1D,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9E,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,0EAA0E;IAC1E,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../../src/api/runtime/tool-emulation/loop.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@
8
8
  * tool_result follows its tool_use, and signed thinking blocks replay
9
9
  * byte-exact (Anthropic rejects edited signatures).
10
10
  */
11
+ import type { ThinkingBlock } from '../core/llm/providers/IProvider.js';
11
12
  /** One function tool call recorded on an assistant turn. */
12
13
  export interface TranscriptToolCall {
13
14
  id: string;
@@ -16,6 +17,12 @@ export interface TranscriptToolCall {
16
17
  name: string;
17
18
  arguments: string;
18
19
  };
20
+ /**
21
+ * Gemini thought signature for this call, recorded with the call so a
22
+ * checkpoint and `reseed` keep it. Gemini 3 requires the signature back when
23
+ * the call is replayed to it.
24
+ */
25
+ thoughtSignature?: string;
19
26
  }
20
27
  /** Opaque provider thinking payload; replayed verbatim, never edited. */
21
28
  export interface TranscriptThinking {
@@ -33,6 +40,12 @@ export type SessionTranscriptMessage = {
33
40
  content: unknown;
34
41
  tool_calls?: TranscriptToolCall[];
35
42
  thinking?: TranscriptThinking;
43
+ /**
44
+ * Provider thinking blocks as `generateText` recorded them (Anthropic
45
+ * extended thinking, signatures intact). Replayed verbatim; takes
46
+ * precedence over `thinking` when both are present.
47
+ */
48
+ thinkingBlocks?: ThinkingBlock[];
36
49
  } | {
37
50
  role: 'tool';
38
51
  tool_call_id: string;
@@ -60,4 +73,31 @@ export declare function validateTranscriptPairing(messages: readonly SessionTran
60
73
  * histories.
61
74
  */
62
75
  export declare function transcriptTokenText(messages: readonly SessionTranscriptMessage[]): string;
76
+ /**
77
+ * Builds the provider request message for one caller-supplied history entry.
78
+ *
79
+ * `generateText` and `streamText` copy caller messages into the request. A
80
+ * session replays its transcript through that path, so the copy must keep the
81
+ * fields that pair a tool result with its call: the assistant turn's
82
+ * `tool_calls` (each with its Gemini `thoughtSignature`), the tool turn's
83
+ * `tool_call_id`, and the assistant turn's thinking. Without them the request
84
+ * after a tool round holds an orphaned tool result, which OpenAI, Anthropic
85
+ * and Gemini reject with HTTP 400.
86
+ *
87
+ * Thinking arrives in one of two shapes. A transcript recorded by
88
+ * `generateText` carries the provider's `thinkingBlocks` array, which is
89
+ * copied as is. A caller-built snapshot (for `reseed`) uses the documented
90
+ * {@link TranscriptThinking}: a `redacted` payload becomes a
91
+ * `redacted_thinking` block, and signed text becomes a `thinking` block.
92
+ * Unsigned thinking is dropped, because Anthropic only accepts thinking it
93
+ * signed and the other providers ignore it.
94
+ *
95
+ * @param message - A public `Message` or a {@link SessionTranscriptMessage}.
96
+ * @returns The request message, with replay fields present only when the
97
+ * entry carried them.
98
+ */
99
+ export declare function toProviderReplayMessage(message: {
100
+ role: string;
101
+ content?: unknown;
102
+ }): Record<string, unknown>;
63
103
  //# sourceMappingURL=sessionTranscript.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessionTranscript.d.ts","sourceRoot":"","sources":["../../src/api/sessionTranscript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,yEAAyE;AACzE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAClC;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,GAC5C,cAAc,CA4BhB;AAKD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,GAAG,MAAM,CAsBzF"}
1
+ {"version":3,"file":"sessionTranscript.d.ts","sourceRoot":"","sources":["../../src/api/sessionTranscript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAExE,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,yEAAyE;AACzE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAClC;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,GAC5C,cAAc,CA4BhB;AAKD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,GAAG,MAAM,CAwBzF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAa1B"}