@dexto/core 1.6.0 → 1.6.2

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 (188) hide show
  1. package/dist/agent/DextoAgent.cjs +79 -5
  2. package/dist/agent/DextoAgent.d.ts +24 -2
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +79 -5
  5. package/dist/agent/agent-options.d.ts +6 -1
  6. package/dist/agent/agent-options.d.ts.map +1 -1
  7. package/dist/agent/schemas.d.ts +18 -18
  8. package/dist/approval/manager.cjs +87 -27
  9. package/dist/approval/manager.d.ts +10 -1
  10. package/dist/approval/manager.d.ts.map +1 -1
  11. package/dist/approval/manager.js +87 -27
  12. package/dist/approval/schemas.cjs +22 -8
  13. package/dist/approval/schemas.d.ts +276 -102
  14. package/dist/approval/schemas.d.ts.map +1 -1
  15. package/dist/approval/schemas.js +22 -8
  16. package/dist/context/manager.cjs +2 -2
  17. package/dist/context/manager.d.ts +2 -1
  18. package/dist/context/manager.d.ts.map +1 -1
  19. package/dist/context/manager.js +2 -2
  20. package/dist/context/types.d.ts +3 -2
  21. package/dist/context/types.d.ts.map +1 -1
  22. package/dist/events/index.d.ts +26 -13
  23. package/dist/events/index.d.ts.map +1 -1
  24. package/dist/hooks/index.d.ts +1 -1
  25. package/dist/hooks/index.d.ts.map +1 -1
  26. package/dist/hooks/types.d.ts +1 -22
  27. package/dist/hooks/types.d.ts.map +1 -1
  28. package/dist/llm/executor/provider-options.cjs +223 -28
  29. package/dist/llm/executor/provider-options.d.ts +3 -37
  30. package/dist/llm/executor/provider-options.d.ts.map +1 -1
  31. package/dist/llm/executor/provider-options.js +227 -27
  32. package/dist/llm/executor/stream-processor.cjs +57 -34
  33. package/dist/llm/executor/stream-processor.d.ts +12 -4
  34. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  35. package/dist/llm/executor/stream-processor.js +55 -32
  36. package/dist/llm/executor/turn-executor.cjs +66 -44
  37. package/dist/llm/executor/turn-executor.d.ts +3 -3
  38. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  39. package/dist/llm/executor/turn-executor.js +56 -34
  40. package/dist/llm/formatters/vercel.cjs +15 -3
  41. package/dist/llm/formatters/vercel.d.ts +1 -0
  42. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  43. package/dist/llm/formatters/vercel.js +15 -3
  44. package/dist/llm/index.cjs +8 -0
  45. package/dist/llm/index.d.ts +2 -1
  46. package/dist/llm/index.d.ts.map +1 -1
  47. package/dist/llm/index.js +7 -0
  48. package/dist/llm/providers/local/schemas.d.ts +2 -2
  49. package/dist/llm/providers/openrouter-model-registry.cjs +66 -11
  50. package/dist/llm/providers/openrouter-model-registry.d.ts +26 -0
  51. package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -1
  52. package/dist/llm/providers/openrouter-model-registry.js +65 -11
  53. package/dist/llm/reasoning/anthropic-betas.cjs +31 -0
  54. package/dist/llm/reasoning/anthropic-betas.d.ts +3 -0
  55. package/dist/llm/reasoning/anthropic-betas.d.ts.map +1 -0
  56. package/dist/llm/reasoning/anthropic-betas.js +7 -0
  57. package/dist/llm/reasoning/anthropic-thinking.cjs +79 -0
  58. package/dist/llm/reasoning/anthropic-thinking.d.ts +15 -0
  59. package/dist/llm/reasoning/anthropic-thinking.d.ts.map +1 -0
  60. package/dist/llm/reasoning/anthropic-thinking.js +52 -0
  61. package/dist/llm/reasoning/openai-reasoning-effort.cjs +86 -0
  62. package/dist/llm/reasoning/openai-reasoning-effort.d.ts +5 -0
  63. package/dist/llm/reasoning/openai-reasoning-effort.d.ts.map +1 -0
  64. package/dist/llm/reasoning/openai-reasoning-effort.js +61 -0
  65. package/dist/llm/reasoning/profile.cjs +113 -0
  66. package/dist/llm/reasoning/profile.d.ts +13 -0
  67. package/dist/llm/reasoning/profile.d.ts.map +1 -0
  68. package/dist/llm/reasoning/profile.js +92 -0
  69. package/dist/llm/reasoning/profiles/anthropic.cjs +61 -0
  70. package/dist/llm/reasoning/profiles/anthropic.d.ts +8 -0
  71. package/dist/llm/reasoning/profiles/anthropic.d.ts.map +1 -0
  72. package/dist/llm/reasoning/profiles/anthropic.js +45 -0
  73. package/dist/llm/reasoning/profiles/bedrock.cjs +54 -0
  74. package/dist/llm/reasoning/profiles/bedrock.d.ts +3 -0
  75. package/dist/llm/reasoning/profiles/bedrock.d.ts.map +1 -0
  76. package/dist/llm/reasoning/profiles/bedrock.js +36 -0
  77. package/dist/llm/reasoning/profiles/google.cjs +45 -0
  78. package/dist/llm/reasoning/profiles/google.d.ts +9 -0
  79. package/dist/llm/reasoning/profiles/google.d.ts.map +1 -0
  80. package/dist/llm/reasoning/profiles/google.js +21 -0
  81. package/dist/llm/reasoning/profiles/openai-compatible.cjs +39 -0
  82. package/dist/llm/reasoning/profiles/openai-compatible.d.ts +3 -0
  83. package/dist/llm/reasoning/profiles/openai-compatible.d.ts.map +1 -0
  84. package/dist/llm/reasoning/profiles/openai-compatible.js +16 -0
  85. package/dist/llm/reasoning/profiles/openai.cjs +41 -0
  86. package/dist/llm/reasoning/profiles/openai.d.ts +3 -0
  87. package/dist/llm/reasoning/profiles/openai.d.ts.map +1 -0
  88. package/dist/llm/reasoning/profiles/openai.js +18 -0
  89. package/dist/llm/reasoning/profiles/openrouter.cjs +83 -0
  90. package/dist/llm/reasoning/profiles/openrouter.d.ts +10 -0
  91. package/dist/llm/reasoning/profiles/openrouter.d.ts.map +1 -0
  92. package/dist/llm/reasoning/profiles/openrouter.js +59 -0
  93. package/dist/llm/reasoning/profiles/shared.cjs +80 -0
  94. package/dist/llm/reasoning/profiles/shared.d.ts +25 -0
  95. package/dist/llm/reasoning/profiles/shared.d.ts.map +1 -0
  96. package/dist/llm/reasoning/profiles/shared.js +53 -0
  97. package/dist/llm/reasoning/profiles/vertex.cjs +46 -0
  98. package/dist/llm/reasoning/profiles/vertex.d.ts +3 -0
  99. package/dist/llm/reasoning/profiles/vertex.d.ts.map +1 -0
  100. package/dist/llm/reasoning/profiles/vertex.js +23 -0
  101. package/dist/llm/registry/auto-update.cjs +18 -0
  102. package/dist/llm/registry/auto-update.d.ts.map +1 -1
  103. package/dist/llm/registry/auto-update.js +18 -0
  104. package/dist/llm/registry/index.cjs +126 -26
  105. package/dist/llm/registry/index.d.ts +48 -4
  106. package/dist/llm/registry/index.d.ts.map +1 -1
  107. package/dist/llm/registry/index.js +136 -28
  108. package/dist/llm/registry/models.generated.cjs +5198 -59
  109. package/dist/llm/registry/models.generated.d.ts +1893 -76
  110. package/dist/llm/registry/models.generated.d.ts.map +1 -1
  111. package/dist/llm/registry/models.generated.js +5196 -58
  112. package/dist/llm/registry/sync.cjs +72 -1
  113. package/dist/llm/registry/sync.d.ts +21 -1
  114. package/dist/llm/registry/sync.d.ts.map +1 -1
  115. package/dist/llm/registry/sync.js +72 -1
  116. package/dist/llm/resolver.cjs +13 -1
  117. package/dist/llm/resolver.d.ts.map +1 -1
  118. package/dist/llm/resolver.js +13 -1
  119. package/dist/llm/schemas.cjs +75 -14
  120. package/dist/llm/schemas.d.ts +84 -27
  121. package/dist/llm/schemas.d.ts.map +1 -1
  122. package/dist/llm/schemas.js +75 -14
  123. package/dist/llm/services/factory.cjs +55 -8
  124. package/dist/llm/services/factory.d.ts +1 -1
  125. package/dist/llm/services/factory.d.ts.map +1 -1
  126. package/dist/llm/services/factory.js +58 -8
  127. package/dist/llm/services/vercel.cjs +2 -2
  128. package/dist/llm/services/vercel.js +2 -2
  129. package/dist/llm/types.d.ts +9 -0
  130. package/dist/llm/types.d.ts.map +1 -1
  131. package/dist/logger/default-logger-factory.d.ts +12 -12
  132. package/dist/logger/v2/dexto-logger.cjs +35 -0
  133. package/dist/logger/v2/dexto-logger.d.ts +19 -0
  134. package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
  135. package/dist/logger/v2/dexto-logger.js +35 -0
  136. package/dist/logger/v2/schemas.d.ts +6 -6
  137. package/dist/logger/v2/test-utils.cjs +2 -0
  138. package/dist/logger/v2/test-utils.d.ts.map +1 -1
  139. package/dist/logger/v2/test-utils.js +2 -0
  140. package/dist/logger/v2/types.d.ts +14 -1
  141. package/dist/logger/v2/types.d.ts.map +1 -1
  142. package/dist/mcp/schemas.d.ts +15 -15
  143. package/dist/memory/schemas.d.ts +4 -4
  144. package/dist/prompts/index.cjs +9 -0
  145. package/dist/prompts/index.d.ts +1 -0
  146. package/dist/prompts/index.d.ts.map +1 -1
  147. package/dist/prompts/index.js +10 -0
  148. package/dist/prompts/prompt-manager.cjs +2 -0
  149. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  150. package/dist/prompts/prompt-manager.js +2 -0
  151. package/dist/prompts/providers/config-prompt-provider.cjs +11 -1
  152. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  153. package/dist/prompts/providers/config-prompt-provider.js +11 -1
  154. package/dist/prompts/schemas.cjs +2 -2
  155. package/dist/prompts/schemas.d.ts +7 -7
  156. package/dist/prompts/schemas.js +2 -2
  157. package/dist/prompts/types.d.ts +6 -2
  158. package/dist/prompts/types.d.ts.map +1 -1
  159. package/dist/systemPrompt/in-built-prompts.cjs +5 -5
  160. package/dist/systemPrompt/in-built-prompts.d.ts +1 -1
  161. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
  162. package/dist/systemPrompt/in-built-prompts.js +5 -5
  163. package/dist/systemPrompt/schemas.d.ts +5 -5
  164. package/dist/systemPrompt/types.d.ts +11 -0
  165. package/dist/systemPrompt/types.d.ts.map +1 -1
  166. package/dist/tools/display-types.d.ts +10 -0
  167. package/dist/tools/display-types.d.ts.map +1 -1
  168. package/dist/tools/index.cjs +3 -1
  169. package/dist/tools/index.d.ts +1 -0
  170. package/dist/tools/index.d.ts.map +1 -1
  171. package/dist/tools/index.js +1 -0
  172. package/dist/tools/presentation.cjs +49 -0
  173. package/dist/tools/presentation.d.ts +11 -0
  174. package/dist/tools/presentation.d.ts.map +1 -0
  175. package/dist/tools/presentation.js +24 -0
  176. package/dist/tools/tool-manager.cjs +389 -136
  177. package/dist/tools/tool-manager.d.ts +36 -24
  178. package/dist/tools/tool-manager.d.ts.map +1 -1
  179. package/dist/tools/tool-manager.js +389 -136
  180. package/dist/tools/types.d.ts +134 -55
  181. package/dist/tools/types.d.ts.map +1 -1
  182. package/dist/utils/path.cjs +10 -1
  183. package/dist/utils/path.d.ts +5 -2
  184. package/dist/utils/path.d.ts.map +1 -1
  185. package/dist/utils/path.js +10 -1
  186. package/dist/utils/service-initializer.d.ts +1 -0
  187. package/dist/utils/service-initializer.d.ts.map +1 -1
  188. package/package.json +7 -5
@@ -11,7 +11,7 @@ import {
11
11
  } from "ai";
12
12
  import { trace } from "@opentelemetry/api";
13
13
  import { StreamProcessor } from "./stream-processor.js";
14
- import { buildProviderOptions } from "./provider-options.js";
14
+ import { buildProviderOptions, getEffectiveReasoningBudgetTokens } from "./provider-options.js";
15
15
  import { DextoLogComponent } from "../../logger/v2/types.js";
16
16
  import { defer } from "../../utils/defer.js";
17
17
  import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
@@ -46,18 +46,24 @@ class TurnExecutor {
46
46
  compactionStrategy = null;
47
47
  /**
48
48
  * Map to track tool-call metadata by toolCallId.
49
- * Used to pass execution-time info (approval + display name) to result persistence.
49
+ * Used to pass execution-time info (approval + presentation snapshot) to result persistence.
50
50
  */
51
51
  toolCallMetadata = /* @__PURE__ */ new Map();
52
52
  /**
53
53
  * Get StreamProcessor config from TurnExecutor state.
54
54
  * @param estimatedInputTokens Optional estimated input tokens for analytics
55
55
  */
56
- getStreamProcessorConfig(estimatedInputTokens) {
56
+ getStreamProcessorConfig(estimatedInputTokens, reasoning) {
57
57
  return {
58
58
  provider: this.llmContext.provider,
59
59
  model: this.llmContext.model,
60
- ...estimatedInputTokens !== void 0 && { estimatedInputTokens }
60
+ ...estimatedInputTokens !== void 0 && { estimatedInputTokens },
61
+ ...reasoning?.reasoningVariant !== void 0 && {
62
+ reasoningVariant: reasoning.reasoningVariant
63
+ },
64
+ ...reasoning?.reasoningBudgetTokens !== void 0 && {
65
+ reasoningBudgetTokens: reasoning.reasoningBudgetTokens
66
+ }
61
67
  };
62
68
  }
63
69
  /**
@@ -153,43 +159,59 @@ class TurnExecutor {
153
159
  }
154
160
  this.logger.debug(`Step ${stepCount}: Starting`);
155
161
  const tools = supportsTools ? await this.createTools() : {};
162
+ const providerOptions = buildProviderOptions({
163
+ provider: this.llmContext.provider,
164
+ model: this.llmContext.model,
165
+ reasoning: this.config.reasoning
166
+ });
167
+ this.logger.debug("LLM request options", {
168
+ provider: this.llmContext.provider,
169
+ model: this.llmContext.model,
170
+ requestedReasoning: {
171
+ variant: this.config.reasoning?.variant,
172
+ budgetTokens: this.config.reasoning?.budgetTokens
173
+ },
174
+ providerOptions
175
+ });
176
+ const reasoningVariant = this.config.reasoning?.variant;
177
+ const reasoningBudgetTokens = getEffectiveReasoningBudgetTokens(providerOptions);
178
+ const reasoningForStream = reasoningVariant !== void 0 || reasoningBudgetTokens !== void 0 ? {
179
+ ...reasoningVariant !== void 0 && { reasoningVariant },
180
+ ...reasoningBudgetTokens !== void 0 && { reasoningBudgetTokens }
181
+ } : void 0;
156
182
  const streamProcessor = new StreamProcessor(
157
183
  this.contextManager,
158
184
  this.eventBus,
159
185
  this.resourceManager,
160
186
  this.stepAbortController.signal,
161
- this.getStreamProcessorConfig(estimatedTokens),
187
+ this.getStreamProcessorConfig(estimatedTokens, reasoningForStream),
162
188
  this.logger,
163
189
  streaming,
164
190
  this.toolCallMetadata
165
191
  );
166
- const providerOptions = buildProviderOptions({
167
- provider: this.llmContext.provider,
168
- model: this.llmContext.model,
169
- reasoningEffort: this.config.reasoningEffort
170
- });
171
- const streamOptions = {
172
- model: this.model,
173
- stopWhen: stepCountIs(1),
174
- tools,
175
- abortSignal: this.stepAbortController.signal,
176
- messages: prepared.formattedMessages,
177
- ...this.config.maxOutputTokens !== void 0 && {
178
- maxOutputTokens: this.config.maxOutputTokens
179
- },
180
- ...this.config.temperature !== void 0 && {
181
- temperature: this.config.temperature
182
- },
183
- // Provider-specific options (caching, reasoning, etc.)
184
- ...providerOptions !== void 0 && {
185
- providerOptions
186
- },
187
- // Log stream-level errors (tool errors, API errors during streaming)
188
- onError: (error) => {
189
- this.logger.error("Stream error", { error });
190
- }
191
- };
192
- const result = await streamProcessor.process(() => streamText(streamOptions));
192
+ const result = await streamProcessor.process(
193
+ () => streamText({
194
+ model: this.model,
195
+ stopWhen: stepCountIs(1),
196
+ tools,
197
+ abortSignal: this.stepAbortController.signal,
198
+ messages: prepared.formattedMessages,
199
+ ...this.config.maxOutputTokens !== void 0 && {
200
+ maxOutputTokens: this.config.maxOutputTokens
201
+ },
202
+ ...this.config.temperature !== void 0 && {
203
+ temperature: this.config.temperature
204
+ },
205
+ // Provider-specific options (caching, reasoning, etc.)
206
+ ...providerOptions !== void 0 && {
207
+ providerOptions
208
+ },
209
+ // Log stream-level errors (tool errors, API errors during streaming)
210
+ onError: (error) => {
211
+ this.logger.error("Stream error", { error });
212
+ }
213
+ })
214
+ );
193
215
  lastStepTokens = result.usage;
194
216
  lastFinishReason = result.finishReason;
195
217
  lastText = result.text;
@@ -433,8 +455,8 @@ class TurnExecutor {
433
455
  );
434
456
  const metadata = (() => {
435
457
  const meta = {};
436
- if (executionResult.toolDisplayName !== void 0) {
437
- meta.toolDisplayName = executionResult.toolDisplayName;
458
+ if (executionResult.presentationSnapshot !== void 0) {
459
+ meta.presentationSnapshot = executionResult.presentationSnapshot;
438
460
  }
439
461
  if (executionResult.requireApproval !== void 0) {
440
462
  meta.requireApproval = executionResult.requireApproval;
@@ -113,7 +113,15 @@ class VercelMessageFormatter {
113
113
  }
114
114
  break;
115
115
  case "assistant":
116
- formatted.push({ role: "assistant", ...this.formatAssistantMessage(msg) });
116
+ formatted.push({
117
+ role: "assistant",
118
+ ...this.formatAssistantMessage(msg, {
119
+ // OpenAI/OpenRouter reasoning items can require strict output-item replay.
120
+ // Keep those providers on "no reasoning replay" to avoid invalid_request errors.
121
+ // For other providers we continue to round-trip reasoning where available.
122
+ includeReasoning: this.shouldRoundTripReasoning(context)
123
+ })
124
+ });
117
125
  if (msg.toolCalls && msg.toolCalls.length > 0) {
118
126
  for (const toolCall of msg.toolCalls) {
119
127
  pendingToolCalls.set(toolCall.id, toolCall.function.name);
@@ -166,10 +174,14 @@ class VercelMessageFormatter {
166
174
  formatSystemPrompt() {
167
175
  return null;
168
176
  }
177
+ shouldRoundTripReasoning(context) {
178
+ return context.provider !== "openai" && context.provider !== "openai-compatible" && context.provider !== "openrouter" && context.provider !== "dexto-nova";
179
+ }
169
180
  // Helper to format Assistant messages (with optional tool calls and reasoning)
170
- formatAssistantMessage(msg) {
181
+ formatAssistantMessage(msg, config) {
171
182
  const contentParts = [];
172
- if (msg.reasoning) {
183
+ const includeReasoning = config?.includeReasoning ?? false;
184
+ if (includeReasoning && msg.reasoning) {
173
185
  const reasoningPart = {
174
186
  type: "reasoning",
175
187
  text: msg.reasoning,
@@ -32,6 +32,7 @@ export declare class VercelMessageFormatter {
32
32
  * @returns null as Vercel doesn't need a separate system prompt
33
33
  */
34
34
  formatSystemPrompt(): null;
35
+ private shouldRoundTripReasoning;
35
36
  private formatAssistantMessage;
36
37
  private formatToolMessage;
37
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/llm/formatters/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAiD,MAAM,IAAI,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAiC,MAAM,wBAAwB,CAAC;AAE7F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAmBvD;;;;;;;;;;GAUG;AACH,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAG1B;;;;;;OAMG;IACH,MAAM,CACF,OAAO,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,EACpC,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC5B,YAAY,EAAE;IAsJjB;;;;;;OAMG;IACH,kBAAkB,IAAI,IAAI;IAK1B,OAAO,CAAC,sBAAsB;IA0F9B,OAAO,CAAC,iBAAiB;CAoE5B"}
1
+ {"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/llm/formatters/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAiD,MAAM,IAAI,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAiC,MAAM,wBAAwB,CAAC;AAE7F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAmBvD;;;;;;;;;;GAUG;AACH,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAG1B;;;;;;OAMG;IACH,MAAM,CACF,OAAO,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,EACpC,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC5B,YAAY,EAAE;IA8JjB;;;;;;OAMG;IACH,kBAAkB,IAAI,IAAI;IAI1B,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,sBAAsB;IAmG9B,OAAO,CAAC,iBAAiB;CAoE5B"}
@@ -91,7 +91,15 @@ class VercelMessageFormatter {
91
91
  }
92
92
  break;
93
93
  case "assistant":
94
- formatted.push({ role: "assistant", ...this.formatAssistantMessage(msg) });
94
+ formatted.push({
95
+ role: "assistant",
96
+ ...this.formatAssistantMessage(msg, {
97
+ // OpenAI/OpenRouter reasoning items can require strict output-item replay.
98
+ // Keep those providers on "no reasoning replay" to avoid invalid_request errors.
99
+ // For other providers we continue to round-trip reasoning where available.
100
+ includeReasoning: this.shouldRoundTripReasoning(context)
101
+ })
102
+ });
95
103
  if (msg.toolCalls && msg.toolCalls.length > 0) {
96
104
  for (const toolCall of msg.toolCalls) {
97
105
  pendingToolCalls.set(toolCall.id, toolCall.function.name);
@@ -144,10 +152,14 @@ class VercelMessageFormatter {
144
152
  formatSystemPrompt() {
145
153
  return null;
146
154
  }
155
+ shouldRoundTripReasoning(context) {
156
+ return context.provider !== "openai" && context.provider !== "openai-compatible" && context.provider !== "openrouter" && context.provider !== "dexto-nova";
157
+ }
147
158
  // Helper to format Assistant messages (with optional tool calls and reasoning)
148
- formatAssistantMessage(msg) {
159
+ formatAssistantMessage(msg, config) {
149
160
  const contentParts = [];
150
- if (msg.reasoning) {
161
+ const includeReasoning = config?.includeReasoning ?? false;
162
+ if (includeReasoning && msg.reasoning) {
151
163
  const reasoningPart = {
152
164
  type: "reasoning",
153
165
  text: msg.reasoning,
@@ -19,13 +19,16 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
19
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
20
  var llm_exports = {};
21
21
  __export(llm_exports, {
22
+ getCachedOpenRouterModelsWithInfo: () => import_openrouter_model_registry.getCachedOpenRouterModelsWithInfo,
22
23
  getLlmRegistryAutoUpdateStatus: () => import_auto_update.getLlmRegistryAutoUpdateStatus,
24
+ getOpenRouterModelCacheInfo: () => import_openrouter_model_registry.getOpenRouterModelCacheInfo,
23
25
  getOpenRouterModelContextLength: () => import_openrouter_model_registry.getOpenRouterModelContextLength,
24
26
  getOpenRouterModelInfo: () => import_openrouter_model_registry.getOpenRouterModelInfo,
25
27
  loadLlmRegistryCache: () => import_auto_update.loadLlmRegistryCache,
26
28
  lookupOpenRouterModel: () => import_openrouter_model_registry.lookupOpenRouterModel,
27
29
  refreshLlmRegistryCache: () => import_auto_update.refreshLlmRegistryCache,
28
30
  refreshOpenRouterModelCache: () => import_openrouter_model_registry.refreshOpenRouterModelCache,
31
+ scheduleOpenRouterModelRefresh: () => import_openrouter_model_registry.scheduleOpenRouterModelRefresh,
29
32
  startLlmRegistryAutoUpdate: () => import_auto_update.startLlmRegistryAutoUpdate
30
33
  });
31
34
  module.exports = __toCommonJS(llm_exports);
@@ -35,6 +38,7 @@ __reExport(llm_exports, require("./registry/index.js"), module.exports);
35
38
  __reExport(llm_exports, require("./curation.js"), module.exports);
36
39
  __reExport(llm_exports, require("./validation.js"), module.exports);
37
40
  __reExport(llm_exports, require("./types.js"), module.exports);
41
+ __reExport(llm_exports, require("./reasoning/profile.js"), module.exports);
38
42
  __reExport(llm_exports, require("./services/index.js"), module.exports);
39
43
  __reExport(llm_exports, require("./schemas.js"), module.exports);
40
44
  var import_openrouter_model_registry = require("./providers/openrouter-model-registry.js");
@@ -42,13 +46,16 @@ var import_auto_update = require("./registry/auto-update.js");
42
46
  __reExport(llm_exports, require("./providers/local/index.js"), module.exports);
43
47
  // Annotate the CommonJS export names for ESM import in node:
44
48
  0 && (module.exports = {
49
+ getCachedOpenRouterModelsWithInfo,
45
50
  getLlmRegistryAutoUpdateStatus,
51
+ getOpenRouterModelCacheInfo,
46
52
  getOpenRouterModelContextLength,
47
53
  getOpenRouterModelInfo,
48
54
  loadLlmRegistryCache,
49
55
  lookupOpenRouterModel,
50
56
  refreshLlmRegistryCache,
51
57
  refreshOpenRouterModelCache,
58
+ scheduleOpenRouterModelRefresh,
52
59
  startLlmRegistryAutoUpdate,
53
60
  ...require("./errors.js"),
54
61
  ...require("./error-codes.js"),
@@ -56,6 +63,7 @@ __reExport(llm_exports, require("./providers/local/index.js"), module.exports);
56
63
  ...require("./curation.js"),
57
64
  ...require("./validation.js"),
58
65
  ...require("./types.js"),
66
+ ...require("./reasoning/profile.js"),
59
67
  ...require("./services/index.js"),
60
68
  ...require("./schemas.js"),
61
69
  ...require("./providers/local/index.js")
@@ -4,9 +4,10 @@ export * from './registry/index.js';
4
4
  export * from './curation.js';
5
5
  export * from './validation.js';
6
6
  export * from './types.js';
7
+ export * from './reasoning/profile.js';
7
8
  export * from './services/index.js';
8
9
  export * from './schemas.js';
9
- export { lookupOpenRouterModel, refreshOpenRouterModelCache, getOpenRouterModelContextLength, getOpenRouterModelInfo, type LookupStatus, type OpenRouterModelInfo, } from './providers/openrouter-model-registry.js';
10
+ export { getCachedOpenRouterModelsWithInfo, lookupOpenRouterModel, scheduleOpenRouterModelRefresh, refreshOpenRouterModelCache, getOpenRouterModelCacheInfo, getOpenRouterModelContextLength, getOpenRouterModelInfo, type LookupStatus, type OpenRouterModelInfo, } from './providers/openrouter-model-registry.js';
10
11
  export { startLlmRegistryAutoUpdate, refreshLlmRegistryCache, loadLlmRegistryCache, getLlmRegistryAutoUpdateStatus, type LlmRegistryAutoUpdateStatus, } from './registry/auto-update.js';
11
12
  export * from './providers/local/index.js';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,OAAO,EACH,qBAAqB,EACrB,2BAA2B,EAC3B,+BAA+B,EAC/B,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GAC3B,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EACH,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,8BAA8B,EAC9B,KAAK,2BAA2B,GACnC,MAAM,2BAA2B,CAAC;AAGnC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,OAAO,EACH,iCAAiC,EACjC,qBAAqB,EACrB,8BAA8B,EAC9B,2BAA2B,EAC3B,2BAA2B,EAC3B,+BAA+B,EAC/B,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GAC3B,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EACH,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,8BAA8B,EAC9B,KAAK,2BAA2B,GACnC,MAAM,2BAA2B,CAAC;AAGnC,cAAc,4BAA4B,CAAC"}
package/dist/llm/index.js CHANGED
@@ -5,11 +5,15 @@ export * from "./registry/index.js";
5
5
  export * from "./curation.js";
6
6
  export * from "./validation.js";
7
7
  export * from "./types.js";
8
+ export * from "./reasoning/profile.js";
8
9
  export * from "./services/index.js";
9
10
  export * from "./schemas.js";
10
11
  import {
12
+ getCachedOpenRouterModelsWithInfo,
11
13
  lookupOpenRouterModel,
14
+ scheduleOpenRouterModelRefresh,
12
15
  refreshOpenRouterModelCache,
16
+ getOpenRouterModelCacheInfo,
13
17
  getOpenRouterModelContextLength,
14
18
  getOpenRouterModelInfo
15
19
  } from "./providers/openrouter-model-registry.js";
@@ -21,12 +25,15 @@ import {
21
25
  } from "./registry/auto-update.js";
22
26
  export * from "./providers/local/index.js";
23
27
  export {
28
+ getCachedOpenRouterModelsWithInfo,
24
29
  getLlmRegistryAutoUpdateStatus,
30
+ getOpenRouterModelCacheInfo,
25
31
  getOpenRouterModelContextLength,
26
32
  getOpenRouterModelInfo,
27
33
  loadLlmRegistryCache,
28
34
  lookupOpenRouterModel,
29
35
  refreshLlmRegistryCache,
30
36
  refreshOpenRouterModelCache,
37
+ scheduleOpenRouterModelRefresh,
31
38
  startLlmRegistryAutoUpdate
32
39
  };
@@ -51,7 +51,7 @@ export declare const LocalModelInfoSchema: z.ZodObject<{
51
51
  quantization: "Q2_K" | "Q3_K_S" | "Q3_K_M" | "Q3_K_L" | "Q4_0" | "Q4_K_S" | "Q4_K_M" | "Q5_0" | "Q5_K_S" | "Q5_K_M" | "Q6_K" | "Q8_0" | "F16" | "F32";
52
52
  sizeBytes: number;
53
53
  contextLength: number;
54
- categories: ("reasoning" | "small" | "general" | "coding" | "vision")[];
54
+ categories: ("small" | "reasoning" | "general" | "coding" | "vision")[];
55
55
  license?: string | undefined;
56
56
  supportsVision?: boolean | undefined;
57
57
  supportsTools?: boolean | undefined;
@@ -68,7 +68,7 @@ export declare const LocalModelInfoSchema: z.ZodObject<{
68
68
  quantization: "Q2_K" | "Q3_K_S" | "Q3_K_M" | "Q3_K_L" | "Q4_0" | "Q4_K_S" | "Q4_K_M" | "Q5_0" | "Q5_K_S" | "Q5_K_M" | "Q6_K" | "Q8_0" | "F16" | "F32";
69
69
  sizeBytes: number;
70
70
  contextLength: number;
71
- categories: ("reasoning" | "small" | "general" | "coding" | "vision")[];
71
+ categories: ("small" | "reasoning" | "general" | "coding" | "vision")[];
72
72
  license?: string | undefined;
73
73
  supportsVision?: boolean | undefined;
74
74
  supportsTools?: boolean | undefined;
@@ -30,6 +30,7 @@ var openrouter_model_registry_exports = {};
30
30
  __export(openrouter_model_registry_exports, {
31
31
  __TEST_ONLY__: () => __TEST_ONLY__,
32
32
  getCachedOpenRouterModels: () => getCachedOpenRouterModels,
33
+ getCachedOpenRouterModelsWithInfo: () => getCachedOpenRouterModelsWithInfo,
33
34
  getOpenRouterModelCacheInfo: () => getOpenRouterModelCacheInfo,
34
35
  getOpenRouterModelContextLength: () => getOpenRouterModelContextLength,
35
36
  getOpenRouterModelInfo: () => getOpenRouterModelInfo,
@@ -61,6 +62,23 @@ class OpenRouterModelRegistry {
61
62
  refreshPromise = null;
62
63
  lastRefreshAttemptAt = null;
63
64
  lastUsedApiKey;
65
+ parseExpirationDateEndUtc(expirationDate) {
66
+ const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(expirationDate.trim());
67
+ if (!match) return null;
68
+ const year = Number(match[1]);
69
+ const monthIndex = Number(match[2]) - 1;
70
+ const day = Number(match[3]);
71
+ if (!Number.isFinite(year) || !Number.isFinite(monthIndex) || !Number.isFinite(day)) {
72
+ return null;
73
+ }
74
+ return Date.UTC(year, monthIndex, day, 23, 59, 59, 999);
75
+ }
76
+ isExpired(model) {
77
+ if (!model.expirationDate) return false;
78
+ const expiresAt = this.parseExpirationDateEndUtc(model.expirationDate);
79
+ if (!expiresAt) return false;
80
+ return Date.now() > expiresAt;
81
+ }
64
82
  /**
65
83
  * Look up a model ID against the OpenRouter catalog.
66
84
  * @returns 'valid' if model exists, 'invalid' if not found, 'unknown' if cache is stale/empty
@@ -78,7 +96,11 @@ class OpenRouterModelRegistry {
78
96
  this.scheduleRefresh();
79
97
  return "unknown";
80
98
  }
81
- return this.models.has(normalized) ? "valid" : "invalid";
99
+ const info = this.models.get(normalized);
100
+ if (info && this.isExpired(info)) {
101
+ return "invalid";
102
+ }
103
+ return info ? "valid" : "invalid";
82
104
  }
83
105
  /**
84
106
  * Get context length for a model ID.
@@ -93,6 +115,7 @@ class OpenRouterModelRegistry {
93
115
  return null;
94
116
  }
95
117
  const info = this.models.get(normalized);
118
+ if (info && this.isExpired(info)) return null;
96
119
  return info?.contextLength ?? null;
97
120
  }
98
121
  /**
@@ -107,7 +130,9 @@ class OpenRouterModelRegistry {
107
130
  if (!this.models || this.models.size === 0 || !this.isCacheFresh()) {
108
131
  return null;
109
132
  }
110
- return this.models.get(normalized) ?? null;
133
+ const info = this.models.get(normalized) ?? null;
134
+ if (info && this.isExpired(info)) return null;
135
+ return info;
111
136
  }
112
137
  /**
113
138
  * Schedule a non-blocking background refresh of the model cache.
@@ -117,6 +142,9 @@ class OpenRouterModelRegistry {
117
142
  if (apiKey) {
118
143
  this.lastUsedApiKey = apiKey;
119
144
  }
145
+ if ((process.env.NODE_ENV === "test" || process.env.VITEST) && options?.allowInTests !== true) {
146
+ return;
147
+ }
120
148
  if (this.refreshPromise) {
121
149
  return;
122
150
  }
@@ -125,7 +153,7 @@ class OpenRouterModelRegistry {
125
153
  return;
126
154
  }
127
155
  this.lastRefreshAttemptAt = now;
128
- this.refreshPromise = this.refreshInternal(apiKey).catch((error) => {
156
+ this.refreshPromise = this.refreshInternal(apiKey, options?.timeoutMs).catch((error) => {
129
157
  import_logger.logger.warn(
130
158
  `Failed to refresh OpenRouter model registry: ${error instanceof Error ? error.message : String(error)}`
131
159
  );
@@ -141,6 +169,9 @@ class OpenRouterModelRegistry {
141
169
  if (apiKey) {
142
170
  this.lastUsedApiKey = apiKey;
143
171
  }
172
+ if ((process.env.NODE_ENV === "test" || process.env.VITEST) && options?.allowInTests !== true) {
173
+ return;
174
+ }
144
175
  if (!options?.force && this.refreshPromise) {
145
176
  await this.refreshPromise;
146
177
  return;
@@ -157,7 +188,7 @@ class OpenRouterModelRegistry {
157
188
  } else {
158
189
  this.lastRefreshAttemptAt = Date.now();
159
190
  }
160
- const promise = this.refreshInternal(apiKey).finally(() => {
191
+ const promise = this.refreshInternal(apiKey, options?.timeoutMs).finally(() => {
161
192
  this.refreshPromise = null;
162
193
  });
163
194
  this.refreshPromise = promise;
@@ -170,7 +201,12 @@ class OpenRouterModelRegistry {
170
201
  if (!this.models || this.models.size === 0) {
171
202
  return null;
172
203
  }
173
- return Array.from(this.models.keys());
204
+ const ids = [];
205
+ for (const info of this.models.values()) {
206
+ if (this.isExpired(info)) continue;
207
+ ids.push(info.id);
208
+ }
209
+ return ids;
174
210
  }
175
211
  /**
176
212
  * Get all cached model info (or null if cache is empty).
@@ -179,19 +215,20 @@ class OpenRouterModelRegistry {
179
215
  if (!this.models || this.models.size === 0) {
180
216
  return null;
181
217
  }
182
- return Array.from(this.models.values());
218
+ return Array.from(this.models.values()).filter((info) => !this.isExpired(info));
183
219
  }
184
220
  /**
185
221
  * Get cache metadata for debugging/monitoring.
186
222
  */
187
223
  getCacheMetadata() {
224
+ const modelCount = this.models ? Array.from(this.models.values()).filter((info) => !this.isExpired(info)).length : 0;
188
225
  return {
189
226
  lastFetchedAt: this.lastFetchedAt ? new Date(this.lastFetchedAt) : null,
190
- modelCount: this.models ? this.models.size : 0,
227
+ modelCount,
191
228
  isFresh: this.isCacheFresh()
192
229
  };
193
230
  }
194
- async refreshInternal(apiKey) {
231
+ async refreshInternal(apiKey, timeoutMs) {
195
232
  try {
196
233
  const headers = {
197
234
  Accept: "application/json"
@@ -200,7 +237,10 @@ class OpenRouterModelRegistry {
200
237
  headers.Authorization = `Bearer ${apiKey}`;
201
238
  }
202
239
  import_logger.logger.debug("Refreshing OpenRouter model registry from remote source");
203
- const response = await fetch(OPENROUTER_MODELS_ENDPOINT, { headers });
240
+ const response = await fetch(OPENROUTER_MODELS_ENDPOINT, {
241
+ headers,
242
+ signal: AbortSignal.timeout(timeoutMs ?? 3e4)
243
+ });
204
244
  if (!response.ok) {
205
245
  const body = await response.text();
206
246
  throw new Error(`HTTP ${response.status}: ${body}`);
@@ -229,7 +269,7 @@ class OpenRouterModelRegistry {
229
269
  }
230
270
  this.models = /* @__PURE__ */ new Map();
231
271
  for (const model of parsed.models) {
232
- if (typeof model === "object" && model.id && typeof model.contextLength === "number") {
272
+ if (typeof model === "object" && typeof model.id === "string" && model.id.trim().length > 0 && typeof model.contextLength === "number") {
233
273
  this.models.set(model.id.toLowerCase(), model);
234
274
  }
235
275
  }
@@ -294,7 +334,18 @@ class OpenRouterModelRegistry {
294
334
  } else if (record.top_provider && typeof record.top_provider === "object" && typeof record.top_provider.context_length === "number") {
295
335
  contextLength = record.top_provider.context_length;
296
336
  }
297
- models.push({ id, contextLength });
337
+ const displayName = typeof record.name === "string" && record.name.trim().length > 0 ? record.name : void 0;
338
+ const expirationDate = typeof record.expiration_date === "string" && record.expiration_date.trim().length > 0 ? record.expiration_date : void 0;
339
+ const supportedParameters = Array.isArray(record.supported_parameters) ? record.supported_parameters.filter(
340
+ (p) => typeof p === "string" && p.trim().length > 0
341
+ ) : void 0;
342
+ models.push({
343
+ id,
344
+ contextLength,
345
+ ...displayName ? { displayName } : {},
346
+ ...expirationDate ? { expirationDate } : {},
347
+ ...supportedParameters ? { supportedParameters } : {}
348
+ });
298
349
  }
299
350
  }
300
351
  }
@@ -323,6 +374,9 @@ async function refreshOpenRouterModelCache(options) {
323
374
  function getCachedOpenRouterModels() {
324
375
  return openRouterModelRegistry.getCachedModels();
325
376
  }
377
+ function getCachedOpenRouterModelsWithInfo() {
378
+ return openRouterModelRegistry.getCachedModelsWithInfo();
379
+ }
326
380
  function getOpenRouterModelContextLength(modelId) {
327
381
  return openRouterModelRegistry.getContextLength(modelId);
328
382
  }
@@ -340,6 +394,7 @@ const __TEST_ONLY__ = {
340
394
  0 && (module.exports = {
341
395
  __TEST_ONLY__,
342
396
  getCachedOpenRouterModels,
397
+ getCachedOpenRouterModelsWithInfo,
343
398
  getOpenRouterModelCacheInfo,
344
399
  getOpenRouterModelContextLength,
345
400
  getOpenRouterModelInfo,
@@ -15,10 +15,29 @@ export type LookupStatus = 'valid' | 'invalid' | 'unknown';
15
15
  export interface OpenRouterModelInfo {
16
16
  id: string;
17
17
  contextLength: number;
18
+ /**
19
+ * Human-friendly model name from OpenRouter (e.g. "Claude Sonnet 4.5").
20
+ */
21
+ displayName?: string;
22
+ /**
23
+ * OpenRouter expiration date (YYYY-MM-DD) when present.
24
+ * Models past this date should be treated as invalid/deprecated.
25
+ */
26
+ expirationDate?: string;
27
+ /**
28
+ * OpenRouter supported parameters (e.g. includes "reasoning" for reasoning-capable models).
29
+ */
30
+ supportedParameters?: string[];
18
31
  }
19
32
  interface RefreshOptions {
20
33
  apiKey?: string;
21
34
  force?: boolean;
35
+ timeoutMs?: number;
36
+ /**
37
+ * Test-only escape hatch for unit tests that want to validate refresh behavior.
38
+ * Network fetch is disabled by default when NODE_ENV === 'test' or VITEST is set.
39
+ */
40
+ allowInTests?: boolean;
22
41
  }
23
42
  declare class OpenRouterModelRegistry {
24
43
  private readonly cachePath;
@@ -29,6 +48,8 @@ declare class OpenRouterModelRegistry {
29
48
  private lastRefreshAttemptAt;
30
49
  private lastUsedApiKey?;
31
50
  constructor(cachePath: string);
51
+ private parseExpirationDateEndUtc;
52
+ private isExpired;
32
53
  /**
33
54
  * Look up a model ID against the OpenRouter catalog.
34
55
  * @returns 'valid' if model exists, 'invalid' if not found, 'unknown' if cache is stale/empty
@@ -94,6 +115,11 @@ export declare function refreshOpenRouterModelCache(options?: RefreshOptions): P
94
115
  * Get all cached OpenRouter model IDs (or null if cache is empty).
95
116
  */
96
117
  export declare function getCachedOpenRouterModels(): string[] | null;
118
+ /**
119
+ * Get all cached OpenRouter model info (or null if cache is empty).
120
+ * Expired models are filtered out.
121
+ */
122
+ export declare function getCachedOpenRouterModelsWithInfo(): OpenRouterModelInfo[] | null;
97
123
  /**
98
124
  * Get context length for an OpenRouter model.
99
125
  * @returns context length if model is in cache, null if not found or cache is stale
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter-model-registry.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/openrouter-model-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAE3D,iCAAiC;AACjC,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;CACzB;AAOD,UAAU,cAAc;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAKD,cAAM,uBAAuB;IAQb,OAAO,CAAC,QAAQ,CAAC,SAAS;IAPtC,iDAAiD;IACjD,OAAO,CAAC,MAAM,CAAiD;IAC/D,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,cAAc,CAAC,CAAS;gBAEH,SAAS,EAAE,MAAM;IAI9C;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAqBrC;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAchD;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAazD;;OAEG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IA+B/C;;OAEG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCtD;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE,GAAG,IAAI;IAOlC;;OAEG;IACH,uBAAuB,IAAI,mBAAmB,EAAE,GAAG,IAAI;IAOvD;;OAEG;IACH,gBAAgB,IAAI;QAAE,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;YAQ1E,eAAe;IA6B7B,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,YAAY;YAON,UAAU;IAwBxB,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,WAAW;CAQtB;AAID,eAAO,MAAM,uBAAuB,yBAAyC,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAEnE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAE7E;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,GAAG,IAAI,CAE3D;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE9E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAElF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI;IAC3C,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CACpB,CAEA;AAGD,eAAO,MAAM,aAAa;;;CAGzB,CAAC"}
1
+ {"version":3,"file":"openrouter-model-registry.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/openrouter-model-registry.ts"],"names":[],"mappings":"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"}