@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
@@ -24,17 +24,58 @@ export interface ModelPricing {
24
24
  outputPerM: number;
25
25
  cacheReadPerM?: number;
26
26
  cacheWritePerM?: number;
27
+ reasoningPerM?: number;
28
+ inputAudioPerM?: number;
29
+ outputAudioPerM?: number;
30
+ contextOver200kPerM?: {
31
+ inputPerM: number;
32
+ outputPerM: number;
33
+ };
27
34
  currency?: 'USD';
28
35
  unit?: 'per_million_tokens';
29
36
  }
37
+ export type ModelModality = 'text' | 'audio' | 'image' | 'video' | 'pdf';
38
+ export interface ModelModalities {
39
+ input: ModelModality[];
40
+ output: ModelModality[];
41
+ }
42
+ export interface ModelProviderMetadata {
43
+ npm?: string;
44
+ api?: string;
45
+ }
46
+ export interface ModelInterleavedMetadata {
47
+ field?: string;
48
+ [key: string]: unknown;
49
+ }
30
50
  export interface ModelInfo {
31
51
  name: string;
32
52
  maxInputTokens: number;
33
53
  default?: boolean;
34
54
  supportedFileTypes: SupportedFileType[];
35
55
  displayName?: string;
56
+ /**
57
+ * models.dev capability hints (optional).
58
+ * - reasoning: model is marketed/flagged as a "reasoning" model / supports explicit reasoning mode.
59
+ * - supportsTemperature: model supports a temperature parameter (some reasoning models don't).
60
+ * - supportsInterleaved: model supports interleaved reasoning/content streaming paradigms.
61
+ */
62
+ reasoning?: boolean;
63
+ supportsTemperature?: boolean;
64
+ supportsInterleaved?: boolean;
65
+ releaseDate?: string;
66
+ supportsToolCall?: boolean;
67
+ status?: string;
68
+ modalities?: ModelModalities;
69
+ providerMetadata?: ModelProviderMetadata;
70
+ interleaved?: true | ModelInterleavedMetadata;
36
71
  pricing?: ModelPricing;
37
72
  }
73
+ export interface ModelsDevProviderMetadata {
74
+ env: string[];
75
+ npm?: string;
76
+ api?: string;
77
+ doc?: string;
78
+ }
38
79
  export declare const MIME_TYPE_TO_FILE_TYPE: Record<string, SupportedFileType>;
39
80
  export declare function getAllowedMimeTypes(): string[];
40
81
  export interface ProviderInfo {
@@ -42,6 +83,7 @@ export interface ProviderInfo {
42
83
  baseURLSupport: 'none' | 'optional' | 'required';
43
84
  supportedFileTypes: SupportedFileType[];
44
85
  supportsCustomModels?: boolean;
86
+ modelsDev?: ModelsDevProviderMetadata;
45
87
  /**
46
88
  * When true, this provider can access all models from all other providers in the registry.
47
89
  * Used for gateway providers like 'dexto-nova' that route to multiple upstream providers.
@@ -260,14 +302,16 @@ export declare function getModelPricing(provider: LLMProvider, model: string): M
260
302
  */
261
303
  export declare function getModelDisplayName(model: string, provider?: LLMProvider): string;
262
304
  /**
263
- * Checks if a model supports configurable reasoning effort.
264
- * Currently only OpenAI reasoning models (o1, o3, codex, gpt-5.x) support this.
305
+ * Checks if a model is flagged as "reasoning-capable" by the registry (models.dev).
306
+ *
307
+ * Note: This is distinct from "supports tunable reasoning knobs". Some providers/models may
308
+ * have reasoning but limited/implicit tuning controls.
265
309
  *
266
310
  * @param model The model name to check.
267
311
  * @param provider Optional provider for context (defaults to detecting from model name).
268
- * @returns True if the model supports reasoning effort configuration.
312
+ * @returns True if the registry marks this model as reasoning-capable.
269
313
  */
270
- export declare function isReasoningCapableModel(model: string, _provider?: LLMProvider): boolean;
314
+ export declare function isReasoningCapableModel(model: string, provider?: LLMProvider): boolean;
271
315
  /**
272
316
  * Calculates the cost for a given token usage based on model pricing.
273
317
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/llm/registry/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/llm/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI1C,OAAO,EAEH,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAoDvD;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,MAAM,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,WAAW,CAAC,EAAE,IAAI,GAAG,wBAAwB,CAAC;IAE9C,OAAO,CAAC,EAAE,YAAY,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACtC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAiBpE,CAAC;AAGF,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IACjD,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,sEAAsE;AACtE,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAI/C;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,CA4Q1D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ9D;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAQ/E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,EAAE,CAErD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,EAAE,CAGlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACrC,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,CAwBR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAIlF;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAe/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAG9D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAG9D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAG9D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAGnE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAG1E;AAoBD,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,WAAW,GAC9B,MAAM,EAAE,CAwBV;AAuID;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,WAAW,GACtB,KAAK,CAAC,SAAS,GAAG;IAAE,gBAAgB,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC,CAmCvD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,6BAA6B,CACzC,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,WAAW,EAC7B,cAAc,EAAE,WAAW,GAC5B,MAAM,CAoBR;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAyBrF;AAmBD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAE7D;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CACzC,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,GACd,iBAAiB,EAAE,CAmBrB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,iBAAiB,GAC5B,OAAO,CAGT;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACjB;IACC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAkCA;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAyGpF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAQ9F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,CAmBjF;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAkDtF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,CAU9E"}
@@ -5,8 +5,16 @@ import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
5
5
  import {
6
6
  LLM_PROVIDERS
7
7
  } from "../types.js";
8
- import { getOpenRouterModelContextLength } from "../providers/openrouter-model-registry.js";
9
- import { MODELS_BY_PROVIDER } from "./models.generated.js";
8
+ import {
9
+ getCachedOpenRouterModelsWithInfo,
10
+ getOpenRouterModelCacheInfo,
11
+ getOpenRouterModelContextLength,
12
+ scheduleOpenRouterModelRefresh
13
+ } from "../providers/openrouter-model-registry.js";
14
+ import {
15
+ MODELS_BY_PROVIDER,
16
+ MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER
17
+ } from "./models.generated.js";
10
18
  import { MANUAL_MODELS_BY_PROVIDER } from "./models.manual.js";
11
19
  const LEGACY_MODEL_ID_ALIASES = {
12
20
  anthropic: {
@@ -67,8 +75,9 @@ const LLM_REGISTRY = {
67
75
  openai: {
68
76
  models: mergeModels(MODELS_BY_PROVIDER.openai, MANUAL_MODELS_BY_PROVIDER.openai),
69
77
  baseURLSupport: "none",
70
- supportedFileTypes: []
78
+ supportedFileTypes: [],
71
79
  // No defaults - models must explicitly specify support
80
+ modelsDev: MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.openai
72
81
  },
73
82
  "openai-compatible": {
74
83
  models: [],
@@ -81,52 +90,59 @@ const LLM_REGISTRY = {
81
90
  anthropic: {
82
91
  models: MODELS_BY_PROVIDER.anthropic,
83
92
  baseURLSupport: "none",
84
- supportedFileTypes: []
93
+ supportedFileTypes: [],
85
94
  // No defaults - models must explicitly specify support
95
+ modelsDev: MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.anthropic
86
96
  },
87
97
  google: {
88
98
  models: MODELS_BY_PROVIDER.google,
89
99
  baseURLSupport: "none",
90
- supportedFileTypes: []
100
+ supportedFileTypes: [],
91
101
  // No defaults - models must explicitly specify support
102
+ modelsDev: MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.google
92
103
  },
93
104
  // https://console.groq.com/docs/models
94
105
  groq: {
95
106
  models: MODELS_BY_PROVIDER.groq,
96
107
  baseURLSupport: "none",
97
- supportedFileTypes: []
108
+ supportedFileTypes: [],
98
109
  // Groq currently doesn't support file uploads
110
+ modelsDev: MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.groq
99
111
  },
100
112
  // https://docs.x.ai/docs/models
101
113
  // Note: XAI API only supports image uploads (JPG/PNG up to 20MB), not PDFs
102
114
  xai: {
103
115
  models: MODELS_BY_PROVIDER.xai,
104
116
  baseURLSupport: "none",
105
- supportedFileTypes: []
117
+ supportedFileTypes: [],
106
118
  // No defaults - models must explicitly specify support
119
+ modelsDev: MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.xai
107
120
  },
108
121
  // https://docs.cohere.com/reference/models
109
122
  cohere: {
110
123
  models: MODELS_BY_PROVIDER.cohere,
111
124
  baseURLSupport: "none",
112
- supportedFileTypes: []
125
+ supportedFileTypes: [],
113
126
  // No defaults - models must explicitly specify support
127
+ modelsDev: MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.cohere
114
128
  },
115
129
  // https://platform.minimax.io/docs/api-reference/text-openai-api
116
130
  // MiniMax provides an OpenAI-compatible endpoint at https://api.minimax.chat/v1
117
131
  minimax: {
118
132
  models: MODELS_BY_PROVIDER.minimax,
119
133
  baseURLSupport: "none",
120
- supportedFileTypes: []
134
+ supportedFileTypes: [],
121
135
  // No defaults - models must explicitly specify support
136
+ modelsDev: MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.minimax
122
137
  },
123
138
  // https://open.bigmodel.cn/dev/api/normal-model/glm-4
124
139
  // GLM (Zhipu AI) provides an OpenAI-compatible endpoint
125
140
  glm: {
126
141
  models: MODELS_BY_PROVIDER.glm,
127
142
  baseURLSupport: "none",
128
- supportedFileTypes: []
143
+ supportedFileTypes: [],
129
144
  // No defaults - models must explicitly specify support
145
+ modelsDev: MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.glm
130
146
  },
131
147
  // https://openrouter.ai/docs
132
148
  // OpenRouter is a unified API gateway providing access to 100+ models from various providers.
@@ -138,8 +154,9 @@ const LLM_REGISTRY = {
138
154
  supportedFileTypes: ["pdf", "image", "audio"],
139
155
  // Allow all types - user assumes responsibility
140
156
  supportsCustomModels: true,
141
- supportsAllRegistryModels: true
157
+ supportsAllRegistryModels: true,
142
158
  // Can serve models from all other providers
159
+ modelsDev: MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.openrouter
143
160
  },
144
161
  // https://docs.litellm.ai/
145
162
  // LiteLLM is an OpenAI-compatible proxy that unifies 100+ LLM providers.
@@ -163,8 +180,9 @@ const LLM_REGISTRY = {
163
180
  vertex: {
164
181
  models: MODELS_BY_PROVIDER.vertex,
165
182
  baseURLSupport: "none",
166
- supportedFileTypes: []
183
+ supportedFileTypes: [],
167
184
  // No defaults - models must explicitly specify support
185
+ modelsDev: MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.vertex
168
186
  },
169
187
  // https://docs.aws.amazon.com/bedrock/latest/userguide/models.html
170
188
  bedrock: {
@@ -172,7 +190,8 @@ const LLM_REGISTRY = {
172
190
  baseURLSupport: "none",
173
191
  supportedFileTypes: [],
174
192
  // No defaults - models must explicitly specify support
175
- supportsCustomModels: true
193
+ supportsCustomModels: true,
194
+ modelsDev: MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.bedrock
176
195
  },
177
196
  // Native local model execution via node-llama-cpp
178
197
  local: {
@@ -200,7 +219,7 @@ const LLM_REGISTRY = {
200
219
  // Claude models (Anthropic via OpenRouter)
201
220
  {
202
221
  name: "anthropic/claude-haiku-4.5",
203
- displayName: "Claude 4.5 Haiku",
222
+ displayName: "Claude Haiku 4.5",
204
223
  maxInputTokens: 2e5,
205
224
  default: true,
206
225
  supportedFileTypes: ["pdf", "image"],
@@ -215,7 +234,7 @@ const LLM_REGISTRY = {
215
234
  },
216
235
  {
217
236
  name: "anthropic/claude-sonnet-4.5",
218
- displayName: "Claude 4.5 Sonnet",
237
+ displayName: "Claude Sonnet 4.5",
219
238
  maxInputTokens: 2e5,
220
239
  supportedFileTypes: ["pdf", "image"],
221
240
  pricing: {
@@ -229,7 +248,7 @@ const LLM_REGISTRY = {
229
248
  },
230
249
  {
231
250
  name: "anthropic/claude-opus-4.5",
232
- displayName: "Claude 4.5 Opus",
251
+ displayName: "Claude Opus 4.5",
233
252
  maxInputTokens: 2e5,
234
253
  supportedFileTypes: ["pdf", "image"],
235
254
  pricing: {
@@ -463,20 +482,91 @@ function pickExistingOpenRouterModelId(candidates) {
463
482
  return null;
464
483
  }
465
484
  function findModelInfo(provider, model) {
485
+ if (provider === "openrouter" && model.includes("/")) {
486
+ const dynamicOpenRouterModel = getOpenRouterGatewayModelById(model);
487
+ if (dynamicOpenRouterModel) return dynamicOpenRouterModel;
488
+ }
466
489
  const providerInfo = LLM_REGISTRY[provider];
467
490
  const normalizedModel = getNormalizedModelIdForLookup(provider, model);
468
491
  const direct = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
469
492
  if (direct) return direct;
470
493
  if (provider !== "openrouter" && hasAllRegistryModelsSupport(provider) && model.includes("/")) {
471
- const openrouterModel = LLM_REGISTRY.openrouter.models.find(
472
- (m) => m.name.toLowerCase() === model.toLowerCase()
473
- );
494
+ const openrouterModel = getOpenRouterGatewayModelById(model);
474
495
  if (openrouterModel) return openrouterModel;
475
496
  }
476
497
  return null;
477
498
  }
499
+ function ensureOpenRouterCatalogRefreshScheduled() {
500
+ const cacheInfo = getOpenRouterModelCacheInfo();
501
+ if (cacheInfo.modelCount === 0) {
502
+ scheduleOpenRouterModelRefresh({ force: true });
503
+ } else if (!cacheInfo.isFresh) {
504
+ scheduleOpenRouterModelRefresh();
505
+ }
506
+ }
507
+ function findOpenRouterSnapshotModelById(modelId) {
508
+ const normalized = modelId.toLowerCase();
509
+ return LLM_REGISTRY.openrouter.models.find((m) => m.name.toLowerCase() === normalized) ?? null;
510
+ }
511
+ function buildOpenRouterGatewayModelInfo(cachedModel, snapshot) {
512
+ const providerDefaults = LLM_REGISTRY.openrouter.supportedFileTypes;
513
+ const displayName = snapshot?.displayName ?? cachedModel.displayName;
514
+ const supportedFileTypes = snapshot?.supportedFileTypes ?? providerDefaults;
515
+ const maxInputTokens = typeof cachedModel.contextLength === "number" && cachedModel.contextLength > 0 ? cachedModel.contextLength : snapshot?.maxInputTokens ?? DEFAULT_MAX_INPUT_TOKENS;
516
+ const inferredReasoning = cachedModel.supportedParameters?.includes("reasoning") === true ? true : void 0;
517
+ const inferredSupportsTemperature = cachedModel.supportedParameters?.includes("temperature") === true ? true : void 0;
518
+ return {
519
+ name: snapshot?.name ?? cachedModel.id,
520
+ maxInputTokens,
521
+ supportedFileTypes,
522
+ ...snapshot?.default ? { default: true } : {},
523
+ ...displayName ? { displayName } : {},
524
+ ...typeof snapshot?.reasoning === "boolean" ? { reasoning: snapshot.reasoning } : typeof inferredReasoning === "boolean" ? { reasoning: inferredReasoning } : {},
525
+ ...typeof snapshot?.supportsTemperature === "boolean" ? { supportsTemperature: snapshot.supportsTemperature } : typeof inferredSupportsTemperature === "boolean" ? { supportsTemperature: inferredSupportsTemperature } : {},
526
+ ...typeof snapshot?.supportsInterleaved === "boolean" ? { supportsInterleaved: snapshot.supportsInterleaved } : {},
527
+ ...snapshot?.releaseDate ? { releaseDate: snapshot.releaseDate } : {},
528
+ ...typeof snapshot?.supportsToolCall === "boolean" ? { supportsToolCall: snapshot.supportsToolCall } : {},
529
+ ...snapshot?.status ? { status: snapshot.status } : {},
530
+ ...snapshot?.modalities ? { modalities: snapshot.modalities } : {},
531
+ ...snapshot?.providerMetadata ? { providerMetadata: snapshot.providerMetadata } : {},
532
+ ...snapshot?.interleaved ? { interleaved: snapshot.interleaved } : {},
533
+ ...snapshot?.pricing ? { pricing: snapshot.pricing } : {}
534
+ };
535
+ }
536
+ function getOpenRouterGatewayModelById(modelId) {
537
+ ensureOpenRouterCatalogRefreshScheduled();
538
+ const snapshot = findOpenRouterSnapshotModelById(modelId);
539
+ const cached = getCachedOpenRouterModelsWithInfo();
540
+ if (!cached || cached.length === 0) {
541
+ return snapshot ? { ...snapshot } : null;
542
+ }
543
+ const normalized = modelId.toLowerCase();
544
+ const cachedModel = cached.find((m) => m.id.toLowerCase() === normalized);
545
+ if (!cachedModel) return snapshot ? { ...snapshot } : null;
546
+ return buildOpenRouterGatewayModelInfo(cachedModel, snapshot);
547
+ }
548
+ function getOpenRouterGatewayCatalogModels() {
549
+ ensureOpenRouterCatalogRefreshScheduled();
550
+ const cached = getCachedOpenRouterModelsWithInfo();
551
+ if (!cached || cached.length === 0) {
552
+ return LLM_REGISTRY.openrouter.models.map((m) => ({ ...m }));
553
+ }
554
+ const models = cached.map(
555
+ (cachedModel) => buildOpenRouterGatewayModelInfo(
556
+ cachedModel,
557
+ findOpenRouterSnapshotModelById(cachedModel.id)
558
+ )
559
+ ).sort((a, b) => a.name.localeCompare(b.name));
560
+ return models;
561
+ }
478
562
  function getAllModelsForProvider(provider) {
479
563
  const providerInfo = LLM_REGISTRY[provider];
564
+ if (provider === "openrouter") {
565
+ return getOpenRouterGatewayCatalogModels().map((m) => ({
566
+ ...m,
567
+ originalProvider: "openrouter"
568
+ }));
569
+ }
480
570
  if (!providerInfo.supportsAllRegistryModels) {
481
571
  return providerInfo.models.map((m) => ({ ...m }));
482
572
  }
@@ -488,13 +578,11 @@ function getAllModelsForProvider(provider) {
488
578
  seen.add(key);
489
579
  allModels.push({ ...model, originalProvider: provider });
490
580
  }
491
- if (provider !== "openrouter") {
492
- for (const model of LLM_REGISTRY.openrouter.models) {
493
- const key = model.name.toLowerCase();
494
- if (seen.has(key)) continue;
495
- seen.add(key);
496
- allModels.push({ ...model, originalProvider: "openrouter" });
497
- }
581
+ for (const model of getOpenRouterGatewayCatalogModels()) {
582
+ const key = model.name.toLowerCase();
583
+ if (seen.has(key)) continue;
584
+ seen.add(key);
585
+ allModels.push({ ...model, originalProvider: "openrouter" });
498
586
  }
499
587
  return allModels;
500
588
  }
@@ -701,8 +789,28 @@ function getModelDisplayName(model, provider) {
701
789
  return model;
702
790
  }
703
791
  }
704
- function isReasoningCapableModel(model, _provider) {
705
- const modelLower = model.toLowerCase();
792
+ function isReasoningCapableModel(model, provider) {
793
+ const registryProvider = (() => {
794
+ if (model.includes("/")) return "openrouter";
795
+ if (provider) return provider;
796
+ try {
797
+ return getProviderFromModel(model);
798
+ } catch {
799
+ return void 0;
800
+ }
801
+ })();
802
+ if (registryProvider === "openrouter" && model.includes("/")) {
803
+ const dynamicModel = getOpenRouterGatewayModelById(model);
804
+ if (dynamicModel?.reasoning === true) return true;
805
+ if (dynamicModel?.reasoning === false) return false;
806
+ }
807
+ if (registryProvider) {
808
+ const modelInfo = findModelInfo(registryProvider, model);
809
+ if (modelInfo?.reasoning === true) return true;
810
+ if (modelInfo?.reasoning === false) return false;
811
+ }
812
+ const modelIdForHeuristics = model.includes("/") ? model.split("/").pop() ?? model : model;
813
+ const modelLower = modelIdForHeuristics.toLowerCase();
706
814
  if (modelLower.includes("codex")) {
707
815
  return true;
708
816
  }