@dexto/core 1.7.2 → 1.8.1

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 (616) hide show
  1. package/dist/agent/DextoAgent.cjs +163 -77
  2. package/dist/agent/DextoAgent.d.ts +73 -19
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +165 -67
  5. package/dist/agent/agent-options.d.ts +6 -10
  6. package/dist/agent/agent-options.d.ts.map +1 -1
  7. package/dist/agent/agentCard.js +1 -1
  8. package/dist/agent/error-codes.js +1 -1
  9. package/dist/agent/errors.js +1 -1
  10. package/dist/agent/index.d.ts +1 -0
  11. package/dist/agent/index.d.ts.map +1 -1
  12. package/dist/agent/index.js +1 -1
  13. package/dist/agent/schemas.d.ts +2 -2
  14. package/dist/agent/schemas.js +1 -1
  15. package/dist/agent/state-manager.js +1 -1
  16. package/dist/agent/types.d.ts +1 -1
  17. package/dist/agent/types.d.ts.map +1 -1
  18. package/dist/approval/error-codes.cjs +1 -1
  19. package/dist/approval/error-codes.d.ts +1 -1
  20. package/dist/approval/error-codes.d.ts.map +1 -1
  21. package/dist/approval/error-codes.js +2 -2
  22. package/dist/approval/errors.cjs +2 -5
  23. package/dist/approval/errors.d.ts.map +1 -1
  24. package/dist/approval/errors.js +3 -6
  25. package/dist/approval/factory.cjs +19 -4
  26. package/dist/approval/factory.d.ts +4 -1
  27. package/dist/approval/factory.d.ts.map +1 -1
  28. package/dist/approval/factory.js +19 -5
  29. package/dist/approval/index.d.ts +1 -1
  30. package/dist/approval/index.d.ts.map +1 -1
  31. package/dist/approval/index.js +1 -1
  32. package/dist/approval/manager.cjs +168 -26
  33. package/dist/approval/manager.d.ts +46 -12
  34. package/dist/approval/manager.d.ts.map +1 -1
  35. package/dist/approval/manager.js +177 -29
  36. package/dist/approval/schemas.cjs +26 -26
  37. package/dist/approval/schemas.d.ts +29 -29
  38. package/dist/approval/schemas.d.ts.map +1 -1
  39. package/dist/approval/schemas.js +23 -23
  40. package/dist/approval/types.cjs +5 -5
  41. package/dist/approval/types.d.ts +18 -18
  42. package/dist/approval/types.d.ts.map +1 -1
  43. package/dist/approval/types.js +6 -6
  44. package/dist/{chunk-PTJYTZNU.js → chunk-C6A6W6XS.js} +1 -44
  45. package/dist/config/index.cjs +75 -0
  46. package/dist/config/index.d.ts +15 -0
  47. package/dist/config/index.d.ts.map +1 -0
  48. package/dist/config/index.js +50 -0
  49. package/dist/context/compaction/overflow.d.ts +1 -1
  50. package/dist/context/compaction/overflow.d.ts.map +1 -1
  51. package/dist/context/compaction/overflow.js +1 -1
  52. package/dist/context/compaction/strategies/noop.js +1 -1
  53. package/dist/context/compaction/strategies/reactive-overflow-compaction.js +1 -1
  54. package/dist/context/content-clone.cjs +131 -0
  55. package/dist/context/content-clone.d.ts +7 -0
  56. package/dist/context/content-clone.d.ts.map +1 -0
  57. package/dist/context/content-clone.js +104 -0
  58. package/dist/context/error-codes.js +1 -1
  59. package/dist/context/errors.js +1 -1
  60. package/dist/context/index.cjs +2 -0
  61. package/dist/context/index.d.ts +1 -0
  62. package/dist/context/index.d.ts.map +1 -1
  63. package/dist/context/index.js +2 -1
  64. package/dist/context/manager.cjs +52 -41
  65. package/dist/context/manager.d.ts +8 -8
  66. package/dist/context/manager.d.ts.map +1 -1
  67. package/dist/context/manager.js +46 -35
  68. package/dist/context/media-helpers.js +1 -1
  69. package/dist/context/schemas.cjs +77 -0
  70. package/dist/context/schemas.d.ts +5 -0
  71. package/dist/context/schemas.d.ts.map +1 -0
  72. package/dist/context/schemas.js +53 -0
  73. package/dist/context/types.d.ts +1 -1
  74. package/dist/context/types.d.ts.map +1 -1
  75. package/dist/context/types.js +1 -1
  76. package/dist/context/utils.cjs +73 -72
  77. package/dist/context/utils.d.ts +4 -4
  78. package/dist/context/utils.d.ts.map +1 -1
  79. package/dist/context/utils.js +72 -71
  80. package/dist/errors/DextoBaseError.js +1 -1
  81. package/dist/errors/DextoRuntimeError.js +1 -1
  82. package/dist/errors/DextoValidationError.js +1 -1
  83. package/dist/errors/index.js +1 -1
  84. package/dist/errors/result-bridge.js +1 -1
  85. package/dist/errors/types.js +1 -1
  86. package/dist/events/index.cjs +9 -1
  87. package/dist/events/index.d.ts +22 -10
  88. package/dist/events/index.d.ts.map +1 -1
  89. package/dist/events/index.js +10 -2
  90. package/dist/hooks/builtins/content-policy.js +1 -1
  91. package/dist/hooks/builtins/response-sanitizer.js +1 -1
  92. package/dist/hooks/error-codes.js +1 -1
  93. package/dist/hooks/index.js +1 -1
  94. package/dist/hooks/manager.cjs +1 -1
  95. package/dist/hooks/manager.d.ts +2 -2
  96. package/dist/hooks/manager.d.ts.map +1 -1
  97. package/dist/hooks/manager.js +2 -2
  98. package/dist/hooks/types.d.ts +2 -2
  99. package/dist/hooks/types.d.ts.map +1 -1
  100. package/dist/index.browser.cjs +9 -9
  101. package/dist/index.browser.d.ts +4 -4
  102. package/dist/index.browser.d.ts.map +1 -1
  103. package/dist/index.browser.js +2 -2
  104. package/dist/index.cjs +2 -0
  105. package/dist/index.d.ts +1 -0
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +2 -1
  108. package/dist/llm/curation-config.cjs +3 -3
  109. package/dist/llm/curation-config.d.ts +1 -1
  110. package/dist/llm/curation-config.js +4 -4
  111. package/dist/llm/curation.cjs +2 -2
  112. package/dist/llm/curation.d.ts +2 -2
  113. package/dist/llm/curation.d.ts.map +1 -1
  114. package/dist/llm/curation.js +2 -2
  115. package/dist/llm/error-codes.js +1 -1
  116. package/dist/llm/errors.cjs +3 -3
  117. package/dist/llm/errors.d.ts +1 -1
  118. package/dist/llm/errors.d.ts.map +1 -1
  119. package/dist/llm/errors.js +2 -2
  120. package/dist/llm/{reasoning/anthropic-betas.cjs → executor/index.cjs} +10 -9
  121. package/dist/llm/executor/index.d.ts +2 -0
  122. package/dist/llm/executor/index.d.ts.map +1 -0
  123. package/dist/llm/executor/index.js +11 -0
  124. package/dist/llm/executor/provider-options.cjs +22 -25
  125. package/dist/llm/executor/provider-options.d.ts +1 -1
  126. package/dist/llm/executor/provider-options.d.ts.map +1 -1
  127. package/dist/llm/executor/provider-options.js +18 -17
  128. package/dist/llm/executor/stream-processor.cjs +28 -139
  129. package/dist/llm/executor/stream-processor.d.ts +3 -14
  130. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  131. package/dist/llm/executor/stream-processor.js +29 -140
  132. package/dist/llm/{reasoning/profiles/openai.cjs → executor/tool-definitions.cjs} +22 -18
  133. package/dist/llm/executor/tool-definitions.d.ts +4 -0
  134. package/dist/llm/executor/tool-definitions.d.ts.map +1 -0
  135. package/dist/llm/executor/tool-definitions.js +22 -0
  136. package/dist/llm/executor/tool-output-truncator.js +1 -1
  137. package/dist/llm/executor/turn-executor.cjs +1093 -458
  138. package/dist/llm/executor/turn-executor.d.ts +269 -43
  139. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  140. package/dist/llm/executor/turn-executor.js +1079 -405
  141. package/dist/llm/executor/types.d.ts +7 -1
  142. package/dist/llm/executor/types.d.ts.map +1 -1
  143. package/dist/llm/formatters/vercel.cjs +2 -2
  144. package/dist/llm/formatters/vercel.d.ts +1 -1
  145. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  146. package/dist/llm/formatters/vercel.js +1 -1
  147. package/dist/llm/index.cjs +2 -4
  148. package/dist/llm/index.d.ts +1 -2
  149. package/dist/llm/index.d.ts.map +1 -1
  150. package/dist/llm/index.js +2 -3
  151. package/dist/llm/providers/codex-app-server.cjs +22 -2
  152. package/dist/llm/providers/codex-app-server.d.ts.map +1 -1
  153. package/dist/llm/providers/codex-app-server.js +23 -3
  154. package/dist/llm/providers/codex-base-url.js +1 -1
  155. package/dist/llm/providers/local/ai-sdk-adapter.js +1 -1
  156. package/dist/llm/providers/local/downloader.js +1 -1
  157. package/dist/llm/providers/local/error-codes.js +1 -1
  158. package/dist/llm/providers/local/errors.js +1 -1
  159. package/dist/llm/providers/local/gpu-detector.js +1 -1
  160. package/dist/llm/providers/local/index.js +1 -1
  161. package/dist/llm/providers/local/node-llama-provider.js +1 -1
  162. package/dist/llm/providers/local/ollama-provider.js +1 -1
  163. package/dist/llm/providers/local/registry.js +1 -1
  164. package/dist/llm/providers/local/schemas.js +1 -1
  165. package/dist/llm/providers/openrouter-model-registry.js +1 -1
  166. package/dist/llm/registry/auto-update.cjs +5 -5
  167. package/dist/llm/registry/auto-update.d.ts.map +1 -1
  168. package/dist/llm/registry/auto-update.js +3 -3
  169. package/dist/llm/registry/index.cjs +96 -789
  170. package/dist/llm/registry/index.d.ts +4 -323
  171. package/dist/llm/registry/index.d.ts.map +1 -1
  172. package/dist/llm/registry/index.js +100 -763
  173. package/dist/llm/registry/sync.d.ts +2 -2
  174. package/dist/llm/registry/sync.d.ts.map +1 -1
  175. package/dist/llm/registry/sync.js +1 -1
  176. package/dist/llm/resolver.cjs +7 -6
  177. package/dist/llm/resolver.d.ts +1 -1
  178. package/dist/llm/resolver.js +5 -5
  179. package/dist/llm/schemas.cjs +14 -14
  180. package/dist/llm/schemas.d.ts +1 -1
  181. package/dist/llm/schemas.d.ts.map +1 -1
  182. package/dist/llm/schemas.js +6 -5
  183. package/dist/llm/services/factory.cjs +13 -15
  184. package/dist/llm/services/factory.d.ts +3 -3
  185. package/dist/llm/services/factory.d.ts.map +1 -1
  186. package/dist/llm/services/factory.js +16 -16
  187. package/dist/llm/services/types.d.ts +11 -2
  188. package/dist/llm/services/types.d.ts.map +1 -1
  189. package/dist/llm/services/vercel.cjs +23 -8
  190. package/dist/llm/services/vercel.d.ts +11 -7
  191. package/dist/llm/services/vercel.d.ts.map +1 -1
  192. package/dist/llm/services/vercel.js +24 -9
  193. package/dist/llm/usage-metadata.cjs +23 -6
  194. package/dist/llm/usage-metadata.d.ts +3 -2
  195. package/dist/llm/usage-metadata.d.ts.map +1 -1
  196. package/dist/llm/usage-metadata.js +20 -7
  197. package/dist/llm/usage-scope.js +1 -1
  198. package/dist/llm/usage-summary.d.ts +1 -1
  199. package/dist/llm/usage-summary.js +1 -1
  200. package/dist/llm/validation.cjs +4 -4
  201. package/dist/llm/validation.d.ts +1 -1
  202. package/dist/llm/validation.js +2 -2
  203. package/dist/logger/browser.js +1 -1
  204. package/dist/logger/default-logger-factory.js +1 -1
  205. package/dist/logger/factory.js +1 -1
  206. package/dist/logger/index.js +1 -1
  207. package/dist/logger/logger.js +1 -1
  208. package/dist/logger/v2/dexto-logger.js +1 -1
  209. package/dist/logger/v2/error-codes.js +1 -1
  210. package/dist/logger/v2/errors.js +1 -1
  211. package/dist/logger/v2/schemas.js +1 -1
  212. package/dist/logger/v2/test-utils.js +1 -1
  213. package/dist/logger/v2/transport-factory.js +1 -1
  214. package/dist/logger/v2/transports/console-transport.js +1 -1
  215. package/dist/logger/v2/transports/file-transport.js +1 -1
  216. package/dist/logger/v2/transports/silent-transport.js +1 -1
  217. package/dist/logger/v2/types.js +1 -1
  218. package/dist/mcp/bundled-config.js +1 -1
  219. package/dist/mcp/error-codes.js +1 -1
  220. package/dist/mcp/errors.js +1 -1
  221. package/dist/mcp/index.js +1 -1
  222. package/dist/mcp/manager.js +1 -1
  223. package/dist/mcp/mcp-client.js +1 -1
  224. package/dist/mcp/resolver.js +1 -1
  225. package/dist/mcp/schemas.js +1 -1
  226. package/dist/memory/error-codes.js +1 -1
  227. package/dist/memory/errors.js +1 -1
  228. package/dist/memory/index.js +1 -1
  229. package/dist/memory/manager.cjs +7 -27
  230. package/dist/memory/manager.d.ts +4 -12
  231. package/dist/memory/manager.d.ts.map +1 -1
  232. package/dist/memory/manager.js +8 -28
  233. package/dist/memory/schemas.js +1 -1
  234. package/dist/prompts/error-codes.js +1 -1
  235. package/dist/prompts/errors.js +1 -1
  236. package/dist/prompts/index.js +1 -1
  237. package/dist/prompts/name-validation.js +1 -1
  238. package/dist/prompts/prompt-manager.cjs +9 -38
  239. package/dist/prompts/prompt-manager.d.ts +2 -10
  240. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  241. package/dist/prompts/prompt-manager.js +10 -39
  242. package/dist/prompts/providers/config-prompt-provider.cjs +8 -87
  243. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  244. package/dist/prompts/providers/config-prompt-provider.js +9 -88
  245. package/dist/prompts/providers/custom-prompt-provider.cjs +21 -22
  246. package/dist/prompts/providers/custom-prompt-provider.d.ts +19 -4
  247. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
  248. package/dist/prompts/providers/custom-prompt-provider.js +22 -23
  249. package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
  250. package/dist/prompts/schemas.cjs +2 -24
  251. package/dist/prompts/schemas.d.ts +0 -52
  252. package/dist/prompts/schemas.d.ts.map +1 -1
  253. package/dist/prompts/schemas.js +3 -25
  254. package/dist/prompts/types.d.ts +5 -32
  255. package/dist/prompts/types.d.ts.map +1 -1
  256. package/dist/prompts/utils.js +1 -1
  257. package/dist/resources/agent-resources-provider.js +1 -1
  258. package/dist/resources/error-codes.js +1 -1
  259. package/dist/resources/errors.js +1 -1
  260. package/dist/resources/handlers/blob-handler.cjs +14 -11
  261. package/dist/resources/handlers/blob-handler.d.ts +4 -4
  262. package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
  263. package/dist/resources/handlers/blob-handler.js +15 -12
  264. package/dist/resources/handlers/factory.cjs +3 -3
  265. package/dist/resources/handlers/factory.js +4 -4
  266. package/dist/resources/handlers/filesystem-handler.js +1 -1
  267. package/dist/resources/handlers/types.d.ts +2 -2
  268. package/dist/resources/handlers/types.d.ts.map +1 -1
  269. package/dist/resources/index.js +1 -1
  270. package/dist/resources/manager.cjs +10 -7
  271. package/dist/resources/manager.d.ts +4 -4
  272. package/dist/resources/manager.d.ts.map +1 -1
  273. package/dist/resources/manager.js +11 -8
  274. package/dist/resources/reference-parser.js +1 -1
  275. package/dist/resources/schemas.cjs +1 -1
  276. package/dist/resources/schemas.d.ts +2 -2
  277. package/dist/resources/schemas.js +2 -2
  278. package/dist/runtime/host-runtime.js +1 -1
  279. package/dist/runtime/index.cjs +3 -0
  280. package/dist/runtime/index.d.ts +2 -0
  281. package/dist/runtime/index.d.ts.map +1 -1
  282. package/dist/runtime/index.js +3 -1
  283. package/dist/runtime/run-context.js +1 -1
  284. package/dist/search/index.js +1 -1
  285. package/dist/search/search-service.cjs +6 -13
  286. package/dist/search/search-service.d.ts +5 -3
  287. package/dist/search/search-service.d.ts.map +1 -1
  288. package/dist/search/search-service.js +7 -14
  289. package/dist/session/chat-session.cjs +264 -108
  290. package/dist/session/chat-session.d.ts +75 -21
  291. package/dist/session/chat-session.d.ts.map +1 -1
  292. package/dist/session/chat-session.js +268 -108
  293. package/dist/session/error-codes.js +1 -1
  294. package/dist/session/errors.js +1 -1
  295. package/dist/session/index.cjs +19 -2
  296. package/dist/session/index.d.ts +4 -3
  297. package/dist/session/index.d.ts.map +1 -1
  298. package/dist/session/index.js +19 -3
  299. package/dist/session/message-queue.cjs +82 -51
  300. package/dist/session/message-queue.d.ts +13 -8
  301. package/dist/session/message-queue.d.ts.map +1 -1
  302. package/dist/session/message-queue.js +83 -52
  303. package/dist/session/queue-clone.cjs +50 -0
  304. package/dist/session/queue-clone.d.ts +5 -0
  305. package/dist/session/queue-clone.d.ts.map +1 -0
  306. package/dist/session/queue-clone.js +25 -0
  307. package/dist/session/schemas.cjs +74 -2
  308. package/dist/session/schemas.d.ts +94 -0
  309. package/dist/session/schemas.d.ts.map +1 -1
  310. package/dist/session/schemas.js +69 -2
  311. package/dist/session/session-manager.cjs +107 -123
  312. package/dist/session/session-manager.d.ts +8 -7
  313. package/dist/session/session-manager.d.ts.map +1 -1
  314. package/dist/session/session-manager.js +108 -124
  315. package/dist/session/title-generator.cjs +14 -26
  316. package/dist/session/title-generator.d.ts +4 -6
  317. package/dist/session/title-generator.d.ts.map +1 -1
  318. package/dist/session/title-generator.js +16 -28
  319. package/dist/session/types.cjs +28 -0
  320. package/dist/session/types.d.ts +5 -1
  321. package/dist/session/types.d.ts.map +1 -1
  322. package/dist/session/types.js +19 -0
  323. package/dist/{session/history/factory.cjs → skills/index.cjs} +9 -9
  324. package/dist/skills/index.d.ts +4 -0
  325. package/dist/skills/index.d.ts.map +1 -0
  326. package/dist/skills/index.js +7 -0
  327. package/dist/skills/skill-manager.cjs +76 -0
  328. package/dist/skills/skill-manager.d.ts +13 -0
  329. package/dist/skills/skill-manager.d.ts.map +1 -0
  330. package/dist/skills/skill-manager.js +53 -0
  331. package/dist/skills/types.d.ts +24 -0
  332. package/dist/skills/types.d.ts.map +1 -0
  333. package/dist/skills/workspace-skill-source.cjs +120 -0
  334. package/dist/skills/workspace-skill-source.d.ts +16 -0
  335. package/dist/skills/workspace-skill-source.d.ts.map +1 -0
  336. package/dist/skills/workspace-skill-source.js +97 -0
  337. package/dist/{llm → storage/approvals}/types.cjs +13 -30
  338. package/dist/storage/approvals/types.d.ts +54 -0
  339. package/dist/storage/approvals/types.d.ts.map +1 -0
  340. package/dist/storage/approvals/types.js +14 -0
  341. package/dist/storage/artifacts/types.d.ts +73 -0
  342. package/dist/storage/artifacts/types.d.ts.map +1 -0
  343. package/dist/storage/conversation/database.cjs +233 -0
  344. package/dist/storage/conversation/database.d.ts +38 -0
  345. package/dist/storage/conversation/database.d.ts.map +1 -0
  346. package/dist/storage/conversation/database.js +210 -0
  347. package/dist/storage/conversation/types.cjs +16 -0
  348. package/dist/storage/conversation/types.d.ts +21 -0
  349. package/dist/storage/conversation/types.d.ts.map +1 -0
  350. package/dist/storage/conversation/types.js +0 -0
  351. package/dist/storage/database/types.d.ts +4 -0
  352. package/dist/storage/database/types.d.ts.map +1 -1
  353. package/dist/storage/error-codes.js +1 -1
  354. package/dist/storage/errors.cjs +6 -6
  355. package/dist/storage/errors.d.ts +2 -2
  356. package/dist/storage/errors.js +7 -7
  357. package/dist/storage/index.cjs +42 -5
  358. package/dist/storage/index.d.ts +19 -8
  359. package/dist/storage/index.d.ts.map +1 -1
  360. package/dist/storage/index.js +39 -4
  361. package/dist/storage/memories/types.cjs +16 -0
  362. package/dist/storage/memories/types.d.ts +17 -0
  363. package/dist/storage/memories/types.d.ts.map +1 -0
  364. package/dist/storage/memories/types.js +0 -0
  365. package/dist/storage/message-queue/types.cjs +16 -0
  366. package/dist/storage/message-queue/types.d.ts +15 -0
  367. package/dist/storage/message-queue/types.d.ts.map +1 -0
  368. package/dist/storage/message-queue/types.js +0 -0
  369. package/dist/storage/prompts/types.cjs +16 -0
  370. package/dist/storage/prompts/types.d.ts +14 -0
  371. package/dist/storage/prompts/types.d.ts.map +1 -0
  372. package/dist/storage/prompts/types.js +0 -0
  373. package/dist/storage/runtime-events/types.cjs +16 -0
  374. package/dist/storage/runtime-events/types.d.ts +19 -0
  375. package/dist/storage/runtime-events/types.d.ts.map +1 -0
  376. package/dist/storage/runtime-events/types.js +0 -0
  377. package/dist/storage/sessions/types.cjs +16 -0
  378. package/dist/storage/sessions/types.d.ts +19 -0
  379. package/dist/storage/sessions/types.d.ts.map +1 -0
  380. package/dist/storage/sessions/types.js +0 -0
  381. package/dist/storage/stores/backend.cjs +702 -0
  382. package/dist/storage/stores/backend.d.ts +303 -0
  383. package/dist/storage/stores/backend.d.ts.map +1 -0
  384. package/dist/storage/stores/backend.js +677 -0
  385. package/dist/storage/stores/in-memory.cjs +510 -0
  386. package/dist/storage/stores/in-memory.d.ts +11 -0
  387. package/dist/storage/stores/in-memory.d.ts.map +1 -0
  388. package/dist/storage/stores/in-memory.js +487 -0
  389. package/dist/storage/stores/types.cjs +16 -0
  390. package/dist/storage/stores/types.d.ts +36 -0
  391. package/dist/storage/stores/types.d.ts.map +1 -0
  392. package/dist/storage/stores/types.js +0 -0
  393. package/dist/storage/tool-executions/types.cjs +127 -0
  394. package/dist/storage/tool-executions/types.d.ts +193 -0
  395. package/dist/storage/tool-executions/types.d.ts.map +1 -0
  396. package/dist/storage/tool-executions/types.js +96 -0
  397. package/dist/storage/tool-preferences/types.cjs +16 -0
  398. package/dist/storage/tool-preferences/types.d.ts +29 -0
  399. package/dist/storage/tool-preferences/types.d.ts.map +1 -0
  400. package/dist/storage/tool-preferences/types.js +0 -0
  401. package/dist/storage/tool-state/types.cjs +16 -0
  402. package/dist/storage/tool-state/types.d.ts +20 -0
  403. package/dist/storage/tool-state/types.d.ts.map +1 -0
  404. package/dist/storage/tool-state/types.js +0 -0
  405. package/dist/storage/workspaces/types.cjs +16 -0
  406. package/dist/storage/workspaces/types.d.ts +19 -0
  407. package/dist/storage/workspaces/types.d.ts.map +1 -0
  408. package/dist/storage/workspaces/types.js +0 -0
  409. package/dist/systemPrompt/contributors.cjs +10 -14
  410. package/dist/systemPrompt/contributors.d.ts +3 -3
  411. package/dist/systemPrompt/contributors.d.ts.map +1 -1
  412. package/dist/systemPrompt/contributors.js +11 -15
  413. package/dist/systemPrompt/error-codes.js +1 -1
  414. package/dist/systemPrompt/errors.js +1 -1
  415. package/dist/systemPrompt/in-built-prompts.js +1 -1
  416. package/dist/systemPrompt/index.js +1 -1
  417. package/dist/systemPrompt/manager.js +1 -1
  418. package/dist/systemPrompt/registry.js +1 -1
  419. package/dist/systemPrompt/schemas.js +1 -1
  420. package/dist/telemetry/decorators.js +1 -1
  421. package/dist/telemetry/error-codes.js +1 -1
  422. package/dist/telemetry/errors.js +1 -1
  423. package/dist/telemetry/exporters.js +1 -1
  424. package/dist/telemetry/index.js +1 -1
  425. package/dist/telemetry/schemas.js +1 -1
  426. package/dist/telemetry/telemetry.js +1 -1
  427. package/dist/telemetry/utils.js +1 -1
  428. package/dist/test-utils/in-memory-storage.cjs +9 -17
  429. package/dist/test-utils/in-memory-storage.js +9 -16
  430. package/dist/test-utils/session-state-stores.cjs +21 -24
  431. package/dist/test-utils/session-state-stores.js +22 -24
  432. package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.cjs +1 -1
  433. package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.d.ts +2 -2
  434. package/dist/tools/approval/allowed-tools-provider/factory.d.ts.map +1 -0
  435. package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.js +2 -2
  436. package/dist/tools/approval/allowed-tools-provider/in-memory.d.ts.map +1 -0
  437. package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.js +1 -1
  438. package/dist/tools/approval/allowed-tools-provider/storage.cjs +66 -0
  439. package/dist/tools/{confirmation → approval}/allowed-tools-provider/storage.d.ts +4 -10
  440. package/dist/tools/approval/allowed-tools-provider/storage.d.ts.map +1 -0
  441. package/dist/tools/approval/allowed-tools-provider/storage.js +43 -0
  442. package/dist/tools/approval/allowed-tools-provider/types.cjs +16 -0
  443. package/dist/tools/approval/allowed-tools-provider/types.d.ts.map +1 -0
  444. package/dist/tools/approval/allowed-tools-provider/types.js +0 -0
  445. package/dist/tools/approval/session-tool-policy.cjs +269 -0
  446. package/dist/tools/approval/session-tool-policy.d.ts +43 -0
  447. package/dist/tools/approval/session-tool-policy.d.ts.map +1 -0
  448. package/dist/tools/approval/session-tool-policy.js +245 -0
  449. package/dist/tools/define-tool.js +1 -1
  450. package/dist/tools/display-types.js +1 -1
  451. package/dist/tools/error-codes.cjs +3 -3
  452. package/dist/tools/error-codes.d.ts +4 -4
  453. package/dist/tools/error-codes.d.ts.map +1 -1
  454. package/dist/tools/error-codes.js +4 -4
  455. package/dist/tools/errors.cjs +12 -12
  456. package/dist/tools/errors.d.ts +6 -6
  457. package/dist/tools/errors.d.ts.map +1 -1
  458. package/dist/tools/errors.js +13 -13
  459. package/dist/tools/index.cjs +3 -0
  460. package/dist/tools/index.d.ts +3 -0
  461. package/dist/tools/index.d.ts.map +1 -1
  462. package/dist/tools/index.js +3 -1
  463. package/dist/tools/pattern-utils.js +1 -1
  464. package/dist/tools/presentation/tool-presentation.cjs +182 -0
  465. package/dist/tools/presentation/tool-presentation.d.ts +51 -0
  466. package/dist/tools/presentation/tool-presentation.d.ts.map +1 -0
  467. package/dist/tools/presentation/tool-presentation.js +159 -0
  468. package/dist/tools/presentation.js +1 -1
  469. package/dist/tools/schemas.cjs +5 -10
  470. package/dist/tools/schemas.d.ts +1 -4
  471. package/dist/tools/schemas.d.ts.map +1 -1
  472. package/dist/tools/schemas.js +6 -11
  473. package/dist/tools/session-tool-preferences-store.cjs +12 -28
  474. package/dist/tools/session-tool-preferences-store.d.ts +4 -7
  475. package/dist/tools/session-tool-preferences-store.d.ts.map +1 -1
  476. package/dist/tools/session-tool-preferences-store.js +12 -29
  477. package/dist/tools/tool-call-metadata.js +1 -1
  478. package/dist/tools/tool-manager.cjs +871 -834
  479. package/dist/tools/tool-manager.d.ts +94 -96
  480. package/dist/tools/tool-manager.d.ts.map +1 -1
  481. package/dist/tools/tool-manager.js +876 -833
  482. package/dist/tools/types.d.ts +10 -14
  483. package/dist/tools/types.d.ts.map +1 -1
  484. package/dist/utils/api-key-resolver.d.ts +1 -1
  485. package/dist/utils/api-key-resolver.d.ts.map +1 -1
  486. package/dist/utils/api-key-resolver.js +1 -1
  487. package/dist/utils/async-context.js +1 -1
  488. package/dist/utils/debug.js +1 -1
  489. package/dist/utils/defer.js +1 -1
  490. package/dist/utils/env.js +1 -1
  491. package/dist/utils/error-conversion.js +1 -1
  492. package/dist/utils/execution-context.js +1 -1
  493. package/dist/utils/fs-walk.js +1 -1
  494. package/dist/utils/path.js +1 -1
  495. package/dist/utils/redactor.js +1 -1
  496. package/dist/utils/result.js +1 -1
  497. package/dist/utils/safe-stringify.js +1 -1
  498. package/dist/utils/schema.js +1 -1
  499. package/dist/utils/service-initializer.cjs +37 -33
  500. package/dist/utils/service-initializer.d.ts +9 -5
  501. package/dist/utils/service-initializer.d.ts.map +1 -1
  502. package/dist/utils/service-initializer.js +38 -34
  503. package/dist/utils/zod-schema-converter.js +1 -1
  504. package/dist/workspace/error-codes.cjs +5 -1
  505. package/dist/workspace/error-codes.d.ts +4 -0
  506. package/dist/workspace/error-codes.d.ts.map +1 -1
  507. package/dist/workspace/error-codes.js +6 -2
  508. package/dist/workspace/errors.cjs +43 -0
  509. package/dist/workspace/errors.d.ts +9 -0
  510. package/dist/workspace/errors.d.ts.map +1 -1
  511. package/dist/workspace/errors.js +44 -1
  512. package/dist/workspace/index.d.ts +1 -1
  513. package/dist/workspace/index.d.ts.map +1 -1
  514. package/dist/workspace/index.js +1 -1
  515. package/dist/workspace/manager.cjs +21 -29
  516. package/dist/workspace/manager.d.ts +6 -6
  517. package/dist/workspace/manager.d.ts.map +1 -1
  518. package/dist/workspace/manager.js +22 -30
  519. package/dist/workspace/types.d.ts +47 -0
  520. package/dist/workspace/types.d.ts.map +1 -1
  521. package/package.json +116 -3
  522. package/dist/approval/session-approval-store.cjs +0 -91
  523. package/dist/approval/session-approval-store.d.ts +0 -37
  524. package/dist/approval/session-approval-store.d.ts.map +0 -1
  525. package/dist/approval/session-approval-store.js +0 -68
  526. package/dist/llm/reasoning/anthropic-betas.d.ts +0 -3
  527. package/dist/llm/reasoning/anthropic-betas.d.ts.map +0 -1
  528. package/dist/llm/reasoning/anthropic-betas.js +0 -7
  529. package/dist/llm/reasoning/anthropic-thinking.cjs +0 -79
  530. package/dist/llm/reasoning/anthropic-thinking.d.ts +0 -15
  531. package/dist/llm/reasoning/anthropic-thinking.d.ts.map +0 -1
  532. package/dist/llm/reasoning/anthropic-thinking.js +0 -52
  533. package/dist/llm/reasoning/openai-reasoning-effort.cjs +0 -86
  534. package/dist/llm/reasoning/openai-reasoning-effort.d.ts +0 -5
  535. package/dist/llm/reasoning/openai-reasoning-effort.d.ts.map +0 -1
  536. package/dist/llm/reasoning/openai-reasoning-effort.js +0 -61
  537. package/dist/llm/reasoning/profile.cjs +0 -113
  538. package/dist/llm/reasoning/profile.d.ts +0 -13
  539. package/dist/llm/reasoning/profile.d.ts.map +0 -1
  540. package/dist/llm/reasoning/profile.js +0 -92
  541. package/dist/llm/reasoning/profiles/anthropic.cjs +0 -61
  542. package/dist/llm/reasoning/profiles/anthropic.d.ts +0 -8
  543. package/dist/llm/reasoning/profiles/anthropic.d.ts.map +0 -1
  544. package/dist/llm/reasoning/profiles/anthropic.js +0 -45
  545. package/dist/llm/reasoning/profiles/bedrock.cjs +0 -54
  546. package/dist/llm/reasoning/profiles/bedrock.d.ts +0 -3
  547. package/dist/llm/reasoning/profiles/bedrock.d.ts.map +0 -1
  548. package/dist/llm/reasoning/profiles/bedrock.js +0 -36
  549. package/dist/llm/reasoning/profiles/google.cjs +0 -45
  550. package/dist/llm/reasoning/profiles/google.d.ts +0 -9
  551. package/dist/llm/reasoning/profiles/google.d.ts.map +0 -1
  552. package/dist/llm/reasoning/profiles/google.js +0 -21
  553. package/dist/llm/reasoning/profiles/openai-compatible.cjs +0 -39
  554. package/dist/llm/reasoning/profiles/openai-compatible.d.ts +0 -3
  555. package/dist/llm/reasoning/profiles/openai-compatible.d.ts.map +0 -1
  556. package/dist/llm/reasoning/profiles/openai-compatible.js +0 -16
  557. package/dist/llm/reasoning/profiles/openai.d.ts +0 -3
  558. package/dist/llm/reasoning/profiles/openai.d.ts.map +0 -1
  559. package/dist/llm/reasoning/profiles/openai.js +0 -18
  560. package/dist/llm/reasoning/profiles/openrouter.cjs +0 -83
  561. package/dist/llm/reasoning/profiles/openrouter.d.ts +0 -10
  562. package/dist/llm/reasoning/profiles/openrouter.d.ts.map +0 -1
  563. package/dist/llm/reasoning/profiles/openrouter.js +0 -59
  564. package/dist/llm/reasoning/profiles/shared.cjs +0 -80
  565. package/dist/llm/reasoning/profiles/shared.d.ts +0 -25
  566. package/dist/llm/reasoning/profiles/shared.d.ts.map +0 -1
  567. package/dist/llm/reasoning/profiles/shared.js +0 -53
  568. package/dist/llm/reasoning/profiles/vertex.cjs +0 -46
  569. package/dist/llm/reasoning/profiles/vertex.d.ts +0 -3
  570. package/dist/llm/reasoning/profiles/vertex.d.ts.map +0 -1
  571. package/dist/llm/reasoning/profiles/vertex.js +0 -23
  572. package/dist/llm/registry/models.generated.cjs +0 -10741
  573. package/dist/llm/registry/models.generated.d.ts +0 -2945
  574. package/dist/llm/registry/models.generated.d.ts.map +0 -1
  575. package/dist/llm/registry/models.generated.js +0 -10717
  576. package/dist/llm/registry/models.manual.cjs +0 -44
  577. package/dist/llm/registry/models.manual.d.ts +0 -22
  578. package/dist/llm/registry/models.manual.d.ts.map +0 -1
  579. package/dist/llm/registry/models.manual.js +0 -21
  580. package/dist/llm/types.d.ts +0 -39
  581. package/dist/llm/types.d.ts.map +0 -1
  582. package/dist/llm/types.js +0 -30
  583. package/dist/session/history/database.cjs +0 -232
  584. package/dist/session/history/database.d.ts +0 -41
  585. package/dist/session/history/database.d.ts.map +0 -1
  586. package/dist/session/history/database.js +0 -209
  587. package/dist/session/history/factory.d.ts +0 -11
  588. package/dist/session/history/factory.d.ts.map +0 -1
  589. package/dist/session/history/factory.js +0 -8
  590. package/dist/session/history/memory.cjs +0 -57
  591. package/dist/session/history/memory.d.ts +0 -22
  592. package/dist/session/history/memory.d.ts.map +0 -1
  593. package/dist/session/history/memory.js +0 -34
  594. package/dist/session/history/types.d.ts +0 -26
  595. package/dist/session/history/types.d.ts.map +0 -1
  596. package/dist/session/message-queue-store.cjs +0 -75
  597. package/dist/session/message-queue-store.d.ts +0 -16
  598. package/dist/session/message-queue-store.d.ts.map +0 -1
  599. package/dist/session/message-queue-store.js +0 -52
  600. package/dist/storage/storage-manager.cjs +0 -209
  601. package/dist/storage/storage-manager.d.ts +0 -77
  602. package/dist/storage/storage-manager.d.ts.map +0 -1
  603. package/dist/storage/storage-manager.js +0 -186
  604. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +0 -1
  605. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts.map +0 -1
  606. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +0 -69
  607. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +0 -1
  608. package/dist/tools/confirmation/allowed-tools-provider/storage.js +0 -46
  609. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts.map +0 -1
  610. /package/dist/{session/history → skills}/types.cjs +0 -0
  611. /package/dist/{session/history → skills}/types.js +0 -0
  612. /package/dist/{tools/confirmation/allowed-tools-provider → storage/artifacts}/types.cjs +0 -0
  613. /package/dist/{tools/confirmation/allowed-tools-provider → storage/artifacts}/types.js +0 -0
  614. /package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.cjs +0 -0
  615. /package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.d.ts +0 -0
  616. /package/dist/tools/{confirmation → approval}/allowed-tools-provider/types.d.ts +0 -0
@@ -18,584 +18,60 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var registry_exports = {};
20
20
  __export(registry_exports, {
21
- DEFAULT_MAX_INPUT_TOKENS: () => DEFAULT_MAX_INPUT_TOKENS,
22
- LLM_REGISTRY: () => LLM_REGISTRY,
23
- MIME_TYPE_TO_FILE_TYPE: () => MIME_TYPE_TO_FILE_TYPE,
24
- acceptsAnyModel: () => acceptsAnyModel,
25
- calculateCost: () => calculateCost,
26
- calculateCostBreakdown: () => calculateCostBreakdown,
27
21
  getAllModelsForProvider: () => getAllModelsForProvider,
28
- getAllSupportedModels: () => getAllSupportedModels,
29
- getAllowedMimeTypes: () => getAllowedMimeTypes,
30
- getDefaultModelForProvider: () => getDefaultModelForProvider,
31
22
  getEffectiveMaxInputTokens: () => getEffectiveMaxInputTokens,
32
23
  getMaxInputTokensForModel: () => getMaxInputTokensForModel,
33
- getModelDisplayName: () => getModelDisplayName,
34
- getModelPricing: () => getModelPricing,
35
- getOpenRouterCandidateModelIds: () => getOpenRouterCandidateModelIds,
36
24
  getProviderFromModel: () => getProviderFromModel,
37
25
  getSupportedFileTypesForModel: () => getSupportedFileTypesForModel,
38
- getSupportedModels: () => getSupportedModels,
39
- getSupportedProviders: () => getSupportedProviders,
40
- hasAllRegistryModelsSupport: () => hasAllRegistryModelsSupport,
41
- isModelValidForProvider: () => isModelValidForProvider,
42
- isReasoningCapableModel: () => isReasoningCapableModel,
43
- isValidProviderModel: () => isValidProviderModel,
44
- modelSupportsFileType: () => modelSupportsFileType,
45
- requiresApiKey: () => requiresApiKey,
46
- requiresBaseURL: () => requiresBaseURL,
47
- stripBedrockRegionPrefix: () => stripBedrockRegionPrefix,
48
- supportsBaseURL: () => supportsBaseURL,
49
- supportsCustomModels: () => supportsCustomModels,
50
- transformModelNameForProvider: () => transformModelNameForProvider,
51
- validateModelFileSupport: () => validateModelFileSupport
26
+ modelSupportsFileType: () => modelSupportsFileType
52
27
  });
53
28
  module.exports = __toCommonJS(registry_exports);
29
+ var import_llm = require("@dexto/llm");
54
30
  var import_errors = require("../errors.js");
55
31
  var import_error_codes = require("../error-codes.js");
56
32
  var import_DextoRuntimeError = require("../../errors/DextoRuntimeError.js");
57
- var import_types = require("../types.js");
58
33
  var import_openrouter_model_registry = require("../providers/openrouter-model-registry.js");
59
- var import_models_generated = require("./models.generated.js");
60
- var import_models_manual = require("./models.manual.js");
61
- const LEGACY_MODEL_ID_ALIASES = {
62
- anthropic: {
63
- // Older Dexto configs/tests used "claude-4-{tier}-{date}".
64
- // models.dev (and our generated snapshot) use "claude-{tier}-4-{date}".
65
- "claude-4-sonnet-20250514": "claude-sonnet-4-20250514",
66
- "claude-4-opus-20250514": "claude-opus-4-20250514"
67
- }
68
- };
69
- function getNormalizedModelIdForLookup(provider, model) {
70
- const stripped = stripBedrockRegionPrefix(model);
71
- const lower = stripped.toLowerCase();
72
- const aliases = LEGACY_MODEL_ID_ALIASES[provider];
73
- return aliases?.[lower] ?? lower;
74
- }
75
- function mergeModels(base, extra) {
76
- if (!extra || extra.length === 0) return base;
77
- const merged = [...base];
78
- const indexByName = /* @__PURE__ */ new Map();
79
- for (let i = 0; i < merged.length; i++) {
80
- indexByName.set(merged[i].name.toLowerCase(), i);
81
- }
82
- for (const m of extra) {
83
- const key = m.name.toLowerCase();
84
- const existingIndex = indexByName.get(key);
85
- if (existingIndex != null) {
86
- merged[existingIndex] = m;
87
- } else {
88
- indexByName.set(key, merged.length);
89
- merged.push(m);
90
- }
91
- }
92
- return merged;
93
- }
94
- const MIME_TYPE_TO_FILE_TYPE = {
95
- "application/pdf": "pdf",
96
- "audio/mp3": "audio",
97
- "audio/mpeg": "audio",
98
- "audio/wav": "audio",
99
- "audio/x-wav": "audio",
100
- "audio/wave": "audio",
101
- "audio/webm": "audio",
102
- "audio/ogg": "audio",
103
- "audio/m4a": "audio",
104
- "audio/aac": "audio",
105
- "video/mp4": "video",
106
- "video/webm": "video",
107
- "video/ogg": "video",
108
- "video/quicktime": "video",
109
- "video/x-msvideo": "video",
110
- "video/x-matroska": "video",
111
- // Common image MIME types
112
- "image/jpeg": "image",
113
- "image/jpg": "image",
114
- "image/png": "image",
115
- "image/webp": "image",
116
- "image/gif": "image",
117
- // Common document, presentation, and spreadsheet MIME types
118
- "text/plain": "document",
119
- "text/markdown": "document",
120
- "text/html": "document",
121
- "text/xml": "document",
122
- "text/csv": "document",
123
- "text/tab-separated-values": "document",
124
- "application/json": "document",
125
- "application/xml": "document",
126
- "application/msword": "document",
127
- "application/rtf": "document",
128
- "text/rtf": "document",
129
- "application/vnd.oasis.opendocument.text": "document",
130
- "application/vnd.ms-powerpoint": "document",
131
- "application/vnd.openxmlformats-officedocument.presentationml.presentation": "document",
132
- "application/vnd.ms-excel": "document",
133
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "document",
134
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "document"
135
- };
136
- const GENERIC_UPLOAD_FILE_TYPES = [
137
- "pdf",
138
- "image",
139
- "audio",
140
- "video",
141
- "document"
142
- ];
143
- function getAllowedMimeTypes() {
144
- return Object.keys(MIME_TYPE_TO_FILE_TYPE);
34
+ function isUnknownCatalogModelError(error) {
35
+ return error instanceof import_llm.LlmCatalogError && error.code === "MODEL_UNKNOWN";
145
36
  }
146
- const DEFAULT_MAX_INPUT_TOKENS = 128e3;
147
- const LLM_REGISTRY = {
148
- openai: {
149
- models: mergeModels(import_models_generated.MODELS_BY_PROVIDER.openai, import_models_manual.MANUAL_MODELS_BY_PROVIDER.openai),
150
- baseURLSupport: "none",
151
- supportedFileTypes: [],
152
- // No defaults - models must explicitly specify support
153
- modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.openai
154
- },
155
- "openai-compatible": {
156
- models: [],
157
- // Empty - accepts any model name for custom endpoints
158
- baseURLSupport: "required",
159
- supportedFileTypes: GENERIC_UPLOAD_FILE_TYPES,
160
- // Allow all generic file categories for custom endpoints
161
- supportsCustomModels: true
162
- },
163
- anthropic: {
164
- models: import_models_generated.MODELS_BY_PROVIDER.anthropic,
165
- baseURLSupport: "none",
166
- supportedFileTypes: [],
167
- // No defaults - models must explicitly specify support
168
- modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.anthropic
169
- },
170
- google: {
171
- models: import_models_generated.MODELS_BY_PROVIDER.google,
172
- baseURLSupport: "none",
173
- supportedFileTypes: [],
174
- // No defaults - models must explicitly specify support
175
- modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.google
176
- },
177
- // https://console.groq.com/docs/models
178
- groq: {
179
- models: import_models_generated.MODELS_BY_PROVIDER.groq,
180
- baseURLSupport: "none",
181
- supportedFileTypes: [],
182
- // Groq currently doesn't support file uploads
183
- modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.groq
184
- },
185
- // https://docs.x.ai/docs/models
186
- // Note: XAI API only supports image uploads (JPG/PNG up to 20MB), not PDFs
187
- xai: {
188
- models: import_models_generated.MODELS_BY_PROVIDER.xai,
189
- baseURLSupport: "none",
190
- supportedFileTypes: [],
191
- // No defaults - models must explicitly specify support
192
- modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.xai
193
- },
194
- // https://docs.cohere.com/reference/models
195
- cohere: {
196
- models: import_models_generated.MODELS_BY_PROVIDER.cohere,
197
- baseURLSupport: "none",
198
- supportedFileTypes: [],
199
- // No defaults - models must explicitly specify support
200
- modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.cohere
201
- },
202
- // https://platform.minimax.io/docs/api-reference/text-openai-api
203
- // MiniMax provides an OpenAI-compatible endpoint at https://api.minimax.chat/v1
204
- minimax: {
205
- models: import_models_generated.MODELS_BY_PROVIDER.minimax,
206
- baseURLSupport: "none",
207
- supportedFileTypes: [],
208
- // No defaults - models must explicitly specify support
209
- modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.minimax
210
- },
211
- // https://open.bigmodel.cn/dev/api/normal-model/glm-4
212
- // GLM (Zhipu AI) provides an OpenAI-compatible endpoint
213
- glm: {
214
- models: import_models_generated.MODELS_BY_PROVIDER.glm,
215
- baseURLSupport: "none",
216
- supportedFileTypes: [],
217
- // No defaults - models must explicitly specify support
218
- modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.glm
219
- },
220
- // https://openrouter.ai/docs
221
- // OpenRouter is a unified API gateway providing access to 100+ models from various providers.
222
- // Model validation is handled dynamically via openrouter-model-registry.ts
223
- openrouter: {
224
- models: import_models_generated.MODELS_BY_PROVIDER.openrouter,
225
- baseURLSupport: "none",
226
- // Fixed endpoint - baseURL auto-injected in resolver, no user override allowed
227
- supportedFileTypes: GENERIC_UPLOAD_FILE_TYPES,
228
- // Allow all generic file categories - user assumes responsibility
229
- supportsCustomModels: true,
230
- supportsAllRegistryModels: true,
231
- // Can serve models from all other providers
232
- modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.openrouter
233
- },
234
- // https://docs.litellm.ai/
235
- // LiteLLM is an OpenAI-compatible proxy that unifies 100+ LLM providers.
236
- // User must host their own LiteLLM proxy and provide the baseURL.
237
- litellm: {
238
- models: [],
239
- baseURLSupport: "required",
240
- supportedFileTypes: GENERIC_UPLOAD_FILE_TYPES,
241
- supportsCustomModels: true
242
- },
243
- // https://glama.ai/
244
- // Glama is an OpenAI-compatible gateway providing unified access to multiple LLM providers.
245
- // Fixed endpoint: https://glama.ai/api/gateway/openai/v1
246
- glama: {
247
- models: [],
248
- baseURLSupport: "none",
249
- supportedFileTypes: GENERIC_UPLOAD_FILE_TYPES,
250
- supportsCustomModels: true
251
- },
252
- // https://cloud.google.com/vertex-ai
253
- vertex: {
254
- models: import_models_generated.MODELS_BY_PROVIDER.vertex,
255
- baseURLSupport: "none",
256
- supportedFileTypes: [],
257
- // No defaults - models must explicitly specify support
258
- modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.vertex
259
- },
260
- // https://docs.aws.amazon.com/bedrock/latest/userguide/models.html
261
- bedrock: {
262
- models: import_models_generated.MODELS_BY_PROVIDER.bedrock,
263
- baseURLSupport: "none",
264
- supportedFileTypes: [],
265
- // No defaults - models must explicitly specify support
266
- supportsCustomModels: true,
267
- modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.bedrock
268
- },
269
- // Native local model execution via node-llama-cpp
270
- local: {
271
- models: [],
272
- // Populated dynamically from local model registry
273
- baseURLSupport: "none",
274
- supportedFileTypes: ["image"],
275
- supportsCustomModels: true
276
- },
277
- // Ollama server integration
278
- ollama: {
279
- models: [],
280
- // Populated dynamically from Ollama API
281
- baseURLSupport: "optional",
282
- supportedFileTypes: ["image"],
283
- supportsCustomModels: true
284
- },
285
- // Dexto Gateway - OpenAI-compatible proxy through api.dexto.ai
286
- // Routes to OpenRouter with per-request billing (balance decrement)
287
- // Requires DEXTO_API_KEY from dexto login
288
- //
289
- // Model IDs are in OpenRouter format (e.g., 'anthropic/claude-sonnet-4.5')
290
- "dexto-nova": {
291
- models: [
292
- // Claude models (Anthropic via OpenRouter)
293
- {
294
- name: "anthropic/claude-haiku-4.5",
295
- displayName: "Claude Haiku 4.5",
296
- maxInputTokens: 2e5,
297
- default: true,
298
- supportedFileTypes: ["pdf", "image"],
299
- pricing: {
300
- inputPerM: 1,
301
- outputPerM: 5,
302
- cacheWritePerM: 1.25,
303
- cacheReadPerM: 0.1,
304
- currency: "USD",
305
- unit: "per_million_tokens"
306
- }
307
- },
308
- {
309
- name: "anthropic/claude-sonnet-4.5",
310
- displayName: "Claude Sonnet 4.5",
311
- maxInputTokens: 2e5,
312
- supportedFileTypes: ["pdf", "image"],
313
- pricing: {
314
- inputPerM: 3,
315
- outputPerM: 15,
316
- cacheWritePerM: 3.75,
317
- cacheReadPerM: 0.3,
318
- currency: "USD",
319
- unit: "per_million_tokens"
320
- }
321
- },
322
- {
323
- name: "anthropic/claude-opus-4.5",
324
- displayName: "Claude Opus 4.5",
325
- maxInputTokens: 2e5,
326
- supportedFileTypes: ["pdf", "image"],
327
- pricing: {
328
- inputPerM: 5,
329
- outputPerM: 25,
330
- cacheWritePerM: 6.25,
331
- cacheReadPerM: 0.5,
332
- currency: "USD",
333
- unit: "per_million_tokens"
334
- }
335
- },
336
- // OpenAI models (via OpenRouter)
337
- {
338
- name: "openai/gpt-5.2",
339
- displayName: "GPT-5.2",
340
- maxInputTokens: 4e5,
341
- supportedFileTypes: ["pdf", "image", "document"],
342
- pricing: {
343
- inputPerM: 1.75,
344
- outputPerM: 14,
345
- cacheReadPerM: 0.175,
346
- currency: "USD",
347
- unit: "per_million_tokens"
348
- }
349
- },
350
- {
351
- name: "openai/gpt-5.2-codex",
352
- displayName: "GPT-5.2 Codex",
353
- maxInputTokens: 4e5,
354
- supportedFileTypes: ["pdf", "image", "document"],
355
- pricing: {
356
- inputPerM: 1.75,
357
- outputPerM: 14,
358
- cacheReadPerM: 0.175,
359
- currency: "USD",
360
- unit: "per_million_tokens"
361
- }
362
- },
363
- // Google models (via OpenRouter)
364
- {
365
- name: "google/gemini-3-pro-preview",
366
- displayName: "Gemini 3 Pro",
367
- maxInputTokens: 1048576,
368
- supportedFileTypes: ["pdf", "image", "audio", "video", "document"]
369
- },
370
- {
371
- name: "google/gemini-3-flash-preview",
372
- displayName: "Gemini 3 Flash",
373
- maxInputTokens: 1048576,
374
- supportedFileTypes: ["pdf", "image", "audio", "video", "document"]
375
- },
376
- // Free models (via OpenRouter)
377
- {
378
- name: "qwen/qwen3-coder:free",
379
- displayName: "Qwen3 Coder (Free)",
380
- maxInputTokens: 262e3,
381
- supportedFileTypes: []
382
- },
383
- {
384
- name: "deepseek/deepseek-r1-0528:free",
385
- displayName: "DeepSeek R1 (Free)",
386
- maxInputTokens: 163840,
387
- supportedFileTypes: []
388
- },
389
- // Other models (via OpenRouter)
390
- {
391
- name: "z-ai/glm-4.7",
392
- displayName: "GLM 4.7",
393
- maxInputTokens: 202752,
394
- supportedFileTypes: [],
395
- pricing: {
396
- inputPerM: 0.27,
397
- outputPerM: 1.1,
398
- currency: "USD",
399
- unit: "per_million_tokens"
400
- }
401
- },
402
- {
403
- name: "minimax/minimax-m2.5",
404
- displayName: "MiniMax M2.5",
405
- maxInputTokens: 204800,
406
- supportedFileTypes: [],
407
- pricing: {
408
- inputPerM: 0.3,
409
- outputPerM: 1.2,
410
- currency: "USD",
411
- unit: "per_million_tokens"
412
- }
413
- },
414
- {
415
- name: "moonshotai/kimi-k2.5",
416
- displayName: "Kimi K2.5",
417
- maxInputTokens: 262144,
418
- supportedFileTypes: ["image"],
419
- pricing: {
420
- inputPerM: 0.5,
421
- outputPerM: 2.5,
422
- currency: "USD",
423
- unit: "per_million_tokens"
424
- }
37
+ function cloneModel(model) {
38
+ return {
39
+ ...model,
40
+ supportedFileTypes: [...model.supportedFileTypes],
41
+ ...model.modalities ? {
42
+ modalities: {
43
+ input: [...model.modalities.input],
44
+ output: [...model.modalities.output]
425
45
  }
426
- ],
427
- baseURLSupport: "optional",
428
- supportedFileTypes: GENERIC_UPLOAD_FILE_TYPES,
429
- supportsCustomModels: true,
430
- supportsAllRegistryModels: true
431
- }
432
- };
433
- function stripBedrockRegionPrefix(model) {
434
- if (model.startsWith("eu.") || model.startsWith("us.")) {
435
- return model.slice(3);
436
- }
437
- if (model.startsWith("global.")) {
438
- return model.slice(7);
439
- }
440
- return model;
441
- }
442
- function getDefaultModelForProvider(provider) {
443
- const providerInfo = LLM_REGISTRY[provider];
444
- const explicit = providerInfo.models.find((m) => m.default)?.name;
445
- if (explicit) return explicit;
446
- if (providerInfo.models.length === 0) return null;
447
- const sorted = [...providerInfo.models].sort((a, b) => a.name.localeCompare(b.name));
448
- return sorted[0]?.name ?? null;
449
- }
450
- function getSupportedProviders() {
451
- return [...import_types.LLM_PROVIDERS];
452
- }
453
- function getSupportedModels(provider) {
454
- const providerInfo = LLM_REGISTRY[provider];
455
- return providerInfo.models.map((m) => m.name);
456
- }
457
- function getMaxInputTokensForModel(provider, model, logger) {
458
- const modelInfo = findModelInfo(provider, model);
459
- if (!modelInfo) {
460
- if ((provider === "openrouter" || provider === "dexto-nova") && model.includes("/")) {
461
- const contextLength = (0, import_openrouter_model_registry.getOpenRouterModelContextLength)(model);
462
- if (typeof contextLength === "number") {
463
- logger?.debug(
464
- `Using max tokens from OpenRouter cache for ${provider}/${model}: ${contextLength}`
465
- );
466
- return contextLength;
46
+ } : {},
47
+ ...model.pricing ? {
48
+ pricing: {
49
+ ...model.pricing,
50
+ ...model.pricing.contextOver200kPerM ? { contextOver200kPerM: { ...model.pricing.contextOver200kPerM } } : {}
467
51
  }
468
- }
469
- const supportedModels = getSupportedModels(provider).join(", ");
470
- logger?.error(
471
- `Model '${model}' not found for provider '${provider}' in LLM registry. Supported models: ${supportedModels}`
472
- );
473
- throw import_errors.LLMError.unknownModel(provider, model);
474
- }
475
- logger?.debug(`Found max tokens for ${provider}/${model}: ${modelInfo.maxInputTokens}`);
476
- return modelInfo.maxInputTokens;
477
- }
478
- function isValidProviderModel(provider, model) {
479
- const providerInfo = LLM_REGISTRY[provider];
480
- const normalizedModel = getNormalizedModelIdForLookup(provider, model);
481
- return providerInfo.models.some((m) => m.name.toLowerCase() === normalizedModel);
482
- }
483
- function getProviderFromModel(model) {
484
- if (model.includes("/")) {
485
- throw import_errors.LLMError.modelProviderUnknown(model);
486
- }
487
- for (const provider of import_types.LLM_PROVIDERS) {
488
- const info = LLM_REGISTRY[provider];
489
- const normalizedModel = getNormalizedModelIdForLookup(provider, model);
490
- if (info.models.some((m) => m.name.toLowerCase() === normalizedModel)) {
491
- return provider;
492
- }
493
- }
494
- throw import_errors.LLMError.modelProviderUnknown(model);
495
- }
496
- function getAllSupportedModels() {
497
- return Object.values(LLM_REGISTRY).flatMap((info) => info.models.map((m) => m.name));
498
- }
499
- function supportsBaseURL(provider) {
500
- const providerInfo = LLM_REGISTRY[provider];
501
- return providerInfo.baseURLSupport !== "none";
502
- }
503
- function requiresBaseURL(provider) {
504
- const providerInfo = LLM_REGISTRY[provider];
505
- return providerInfo.baseURLSupport === "required";
506
- }
507
- function acceptsAnyModel(provider) {
508
- const providerInfo = LLM_REGISTRY[provider];
509
- return providerInfo.models.length === 0;
510
- }
511
- function supportsCustomModels(provider) {
512
- const providerInfo = LLM_REGISTRY[provider];
513
- return providerInfo.supportsCustomModels === true;
514
- }
515
- function hasAllRegistryModelsSupport(provider) {
516
- const providerInfo = LLM_REGISTRY[provider];
517
- return providerInfo.supportsAllRegistryModels === true;
518
- }
519
- const OPENROUTER_PREFIX_BY_PROVIDER = {
520
- openai: "openai",
521
- anthropic: "anthropic",
522
- google: "google",
523
- xai: "x-ai",
524
- cohere: "cohere",
525
- minimax: "minimax",
526
- glm: "z-ai"
527
- };
528
- function getOpenRouterModelIdSet() {
529
- return new Set(LLM_REGISTRY.openrouter.models.map((m) => m.name.toLowerCase()));
530
- }
531
- function getOpenRouterCandidateModelIds(model, originalProvider) {
532
- if (model.includes("/")) return [model];
533
- const prefix = OPENROUTER_PREFIX_BY_PROVIDER[originalProvider];
534
- if (!prefix) return [];
535
- if (originalProvider === "anthropic") {
536
- const noDate = model.replace(/-\d{8}.*$/i, "");
537
- const dotted = noDate.replace(/-(\d)-(\d)\b/g, "-$1.$2");
538
- return [`${prefix}/${dotted}`, `${prefix}/${noDate}`, `${prefix}/${model}`];
539
- }
540
- if (originalProvider === "google") {
541
- if (!/^gemini-/i.test(model)) {
542
- return [`${prefix}/${model}`];
543
- }
544
- return [`${prefix}/${model}`, `${prefix}/${model}-001`];
545
- }
546
- return [`${prefix}/${model}`];
547
- }
548
- function pickExistingOpenRouterModelId(candidates) {
549
- const openrouterSet = getOpenRouterModelIdSet();
550
- for (const candidate of candidates) {
551
- if (openrouterSet.has(candidate.toLowerCase())) {
552
- return candidate;
553
- }
554
- }
555
- return null;
556
- }
557
- function findModelInfo(provider, model) {
558
- if (provider === "openrouter" && model.includes("/")) {
559
- const dynamicOpenRouterModel = getOpenRouterGatewayModelById(model);
560
- if (dynamicOpenRouterModel) return dynamicOpenRouterModel;
561
- }
562
- const providerInfo = LLM_REGISTRY[provider];
563
- const normalizedModel = getNormalizedModelIdForLookup(provider, model);
564
- const direct = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
565
- if (direct) return direct;
566
- if (provider !== "openrouter" && hasAllRegistryModelsSupport(provider) && model.includes("/")) {
567
- const openrouterModel = getOpenRouterGatewayModelById(model);
568
- if (openrouterModel) return openrouterModel;
569
- }
570
- return null;
571
- }
572
- function ensureOpenRouterCatalogRefreshScheduled() {
573
- const cacheInfo = (0, import_openrouter_model_registry.getOpenRouterModelCacheInfo)();
574
- if (cacheInfo.modelCount === 0) {
575
- (0, import_openrouter_model_registry.scheduleOpenRouterModelRefresh)({ force: true });
576
- } else if (!cacheInfo.isFresh) {
577
- (0, import_openrouter_model_registry.scheduleOpenRouterModelRefresh)();
578
- }
52
+ } : {},
53
+ ...model.providerMetadata ? { providerMetadata: { ...model.providerMetadata } } : {},
54
+ ...model.interleaved && model.interleaved !== true ? { interleaved: { ...model.interleaved } } : {}
55
+ };
579
56
  }
580
57
  function findOpenRouterSnapshotModelById(modelId) {
581
58
  const normalized = modelId.toLowerCase();
582
- return LLM_REGISTRY.openrouter.models.find((m) => m.name.toLowerCase() === normalized) ?? null;
59
+ return import_llm.LLM_REGISTRY.openrouter.models.find((m) => m.name.toLowerCase() === normalized) ?? null;
583
60
  }
584
61
  function buildOpenRouterGatewayModelInfo(cachedModel, snapshot) {
585
- const providerDefaults = LLM_REGISTRY.openrouter.supportedFileTypes;
586
62
  const displayName = snapshot?.displayName ?? cachedModel.displayName;
587
- const supportedFileTypes = snapshot?.supportedFileTypes ?? providerDefaults;
588
- const maxInputTokens = typeof cachedModel.contextLength === "number" && cachedModel.contextLength > 0 ? cachedModel.contextLength : snapshot?.maxInputTokens ?? DEFAULT_MAX_INPUT_TOKENS;
589
- const inferredReasoning = cachedModel.supportedParameters?.includes("reasoning") === true ? true : void 0;
590
- const inferredSupportsTemperature = cachedModel.supportedParameters?.includes("temperature") === true ? true : void 0;
591
- return {
63
+ const supportedFileTypes = snapshot?.supportedFileTypes ?? import_llm.LLM_REGISTRY.openrouter.supportedFileTypes;
64
+ const maxInputTokens = cachedModel.contextLength > 0 ? cachedModel.contextLength : snapshot?.maxInputTokens ?? import_llm.DEFAULT_MAX_INPUT_TOKENS;
65
+ const inferredReasoning = cachedModel.supportedParameters?.includes("reasoning");
66
+ const inferredSupportsTemperature = cachedModel.supportedParameters?.includes("temperature");
67
+ return cloneModel({
592
68
  name: snapshot?.name ?? cachedModel.id,
593
69
  maxInputTokens,
594
70
  supportedFileTypes,
595
71
  ...snapshot?.default ? { default: true } : {},
596
72
  ...displayName ? { displayName } : {},
597
- ...typeof snapshot?.reasoning === "boolean" ? { reasoning: snapshot.reasoning } : typeof inferredReasoning === "boolean" ? { reasoning: inferredReasoning } : {},
598
- ...typeof snapshot?.supportsTemperature === "boolean" ? { supportsTemperature: snapshot.supportsTemperature } : typeof inferredSupportsTemperature === "boolean" ? { supportsTemperature: inferredSupportsTemperature } : {},
73
+ ...typeof snapshot?.reasoning === "boolean" ? { reasoning: snapshot.reasoning } : inferredReasoning === true ? { reasoning: true } : {},
74
+ ...typeof snapshot?.supportsTemperature === "boolean" ? { supportsTemperature: snapshot.supportsTemperature } : inferredSupportsTemperature === true ? { supportsTemperature: true } : {},
599
75
  ...typeof snapshot?.supportsInterleaved === "boolean" ? { supportsInterleaved: snapshot.supportsInterleaved } : {},
600
76
  ...snapshot?.releaseDate ? { releaseDate: snapshot.releaseDate } : {},
601
77
  ...typeof snapshot?.supportsToolCall === "boolean" ? { supportsToolCall: snapshot.supportsToolCall } : {},
@@ -604,155 +80,89 @@ function buildOpenRouterGatewayModelInfo(cachedModel, snapshot) {
604
80
  ...snapshot?.providerMetadata ? { providerMetadata: snapshot.providerMetadata } : {},
605
81
  ...snapshot?.interleaved ? { interleaved: snapshot.interleaved } : {},
606
82
  ...snapshot?.pricing ? { pricing: snapshot.pricing } : {}
607
- };
608
- }
609
- function getOpenRouterGatewayModelById(modelId) {
610
- ensureOpenRouterCatalogRefreshScheduled();
611
- const snapshot = findOpenRouterSnapshotModelById(modelId);
612
- const cached = (0, import_openrouter_model_registry.getCachedOpenRouterModelsWithInfo)();
613
- if (!cached || cached.length === 0) {
614
- return snapshot ? { ...snapshot } : null;
615
- }
616
- const normalized = modelId.toLowerCase();
617
- const cachedModel = cached.find((m) => m.id.toLowerCase() === normalized);
618
- if (!cachedModel) return snapshot ? { ...snapshot } : null;
619
- return buildOpenRouterGatewayModelInfo(cachedModel, snapshot);
83
+ });
620
84
  }
621
85
  function getOpenRouterGatewayCatalogModels() {
622
- ensureOpenRouterCatalogRefreshScheduled();
623
86
  const cached = (0, import_openrouter_model_registry.getCachedOpenRouterModelsWithInfo)();
624
87
  if (!cached || cached.length === 0) {
625
- return LLM_REGISTRY.openrouter.models.map((m) => ({ ...m }));
88
+ return import_llm.LLM_REGISTRY.openrouter.models.map(cloneModel);
626
89
  }
627
- const models = cached.map(
90
+ return cached.map(
628
91
  (cachedModel) => buildOpenRouterGatewayModelInfo(
629
92
  cachedModel,
630
93
  findOpenRouterSnapshotModelById(cachedModel.id)
631
94
  )
632
95
  ).sort((a, b) => a.name.localeCompare(b.name));
633
- return models;
634
96
  }
635
97
  function getAllModelsForProvider(provider) {
636
- const providerInfo = LLM_REGISTRY[provider];
637
98
  if (provider === "openrouter") {
638
- return getOpenRouterGatewayCatalogModels().map((m) => ({
639
- ...m,
99
+ return getOpenRouterGatewayCatalogModels().map((model) => ({
100
+ ...model,
640
101
  originalProvider: "openrouter"
641
102
  }));
642
103
  }
643
- if (!providerInfo.supportsAllRegistryModels) {
644
- return providerInfo.models.map((m) => ({ ...m }));
104
+ if (!(0, import_llm.hasAllRegistryModelsSupport)(provider)) {
105
+ return (0, import_llm.getAllModelsForProvider)(provider);
645
106
  }
646
107
  const allModels = [];
647
108
  const seen = /* @__PURE__ */ new Set();
648
- for (const model of providerInfo.models) {
109
+ for (const model of import_llm.LLM_REGISTRY[provider].models) {
649
110
  const key = model.name.toLowerCase();
650
111
  if (seen.has(key)) continue;
651
112
  seen.add(key);
652
- allModels.push({ ...model, originalProvider: provider });
113
+ allModels.push({ ...cloneModel(model), originalProvider: provider });
653
114
  }
654
115
  for (const model of getOpenRouterGatewayCatalogModels()) {
655
116
  const key = model.name.toLowerCase();
656
117
  if (seen.has(key)) continue;
657
118
  seen.add(key);
658
- allModels.push({ ...model, originalProvider: "openrouter" });
119
+ allModels.push({ ...cloneModel(model), originalProvider: "openrouter" });
659
120
  }
660
121
  return allModels;
661
122
  }
662
- function transformModelNameForProvider(model, originalProvider, targetProvider) {
663
- if (!hasAllRegistryModelsSupport(targetProvider)) {
664
- return model;
665
- }
666
- if (hasAllRegistryModelsSupport(originalProvider)) {
667
- return model;
668
- }
669
- if (model.includes("/")) {
670
- return model;
671
- }
672
- const candidates = getOpenRouterCandidateModelIds(model, originalProvider);
673
- if (candidates.length === 0) return model;
674
- return pickExistingOpenRouterModelId(candidates) ?? candidates[0];
675
- }
676
- function isModelValidForProvider(provider, model) {
677
- const providerInfo = LLM_REGISTRY[provider];
678
- const normalizedModel = getNormalizedModelIdForLookup(provider, model);
679
- if (providerInfo.models.some((m) => m.name.toLowerCase() === normalizedModel)) {
680
- return true;
681
- }
682
- if (providerInfo.supportsAllRegistryModels && !model.includes("/")) {
683
- return false;
684
- }
685
- if (providerInfo.supportsCustomModels) {
686
- return true;
687
- }
688
- if (providerInfo.supportsAllRegistryModels) {
689
- return findModelInfo(provider, model) !== null;
123
+ function getProviderFromModel(model) {
124
+ try {
125
+ return (0, import_llm.getProviderFromModel)(model);
126
+ } catch (error) {
127
+ if (isUnknownCatalogModelError(error)) {
128
+ throw import_errors.LLMError.modelProviderUnknown(model);
129
+ }
130
+ throw error;
690
131
  }
691
- return false;
692
- }
693
- const API_KEY_OPTIONAL_PROVIDERS = /* @__PURE__ */ new Set([
694
- "local",
695
- // Native node-llama-cpp execution - no auth needed
696
- "ollama",
697
- // Ollama server - no auth needed by default
698
- "openai-compatible",
699
- // vLLM, LocalAI - often no auth needed
700
- "litellm",
701
- // Self-hosted proxy - handles auth internally
702
- "vertex",
703
- // Uses Google Cloud ADC (Application Default Credentials)
704
- "bedrock"
705
- // Uses AWS credentials (access key + secret or IAM role)
706
- ]);
707
- function requiresApiKey(provider) {
708
- return !API_KEY_OPTIONAL_PROVIDERS.has(provider);
709
132
  }
710
133
  function getSupportedFileTypesForModel(provider, model) {
711
- const providerInfo = LLM_REGISTRY[provider];
712
- if (acceptsAnyModel(provider)) {
713
- return providerInfo.supportedFileTypes;
714
- }
715
- const modelInfo = findModelInfo(provider, model);
716
- if (modelInfo) {
717
- return modelInfo.supportedFileTypes;
718
- }
719
- if (supportsCustomModels(provider)) {
720
- return providerInfo.supportedFileTypes;
134
+ try {
135
+ return (0, import_llm.getSupportedFileTypesForModel)(provider, model);
136
+ } catch (error) {
137
+ if (isUnknownCatalogModelError(error)) {
138
+ throw import_errors.LLMError.unknownModel(provider, model);
139
+ }
140
+ throw error;
721
141
  }
722
- throw import_errors.LLMError.unknownModel(provider, model);
723
142
  }
724
143
  function modelSupportsFileType(provider, model, fileType) {
725
- const supportedTypes = getSupportedFileTypesForModel(provider, model);
726
- return supportedTypes.includes(fileType);
144
+ return getSupportedFileTypesForModel(provider, model).includes(fileType);
727
145
  }
728
- function validateModelFileSupport(provider, model, mimeType) {
729
- const baseMimeType = mimeType.toLowerCase().split(";")[0]?.trim() || mimeType.toLowerCase();
730
- const fileType = MIME_TYPE_TO_FILE_TYPE[baseMimeType];
731
- if (!fileType) {
732
- return {
733
- isSupported: false,
734
- error: `Unsupported file type: ${mimeType}`
735
- };
736
- }
737
- try {
738
- if (!modelSupportsFileType(provider, model, fileType)) {
739
- return {
740
- isSupported: false,
741
- fileType,
742
- error: `Model '${model}' (${provider}) does not support ${fileType} files`
743
- };
146
+ function getMaxInputTokensForModel(provider, model, logger) {
147
+ const modelInfo = (0, import_llm.getModel)(provider, model);
148
+ if (modelInfo !== null) {
149
+ logger?.debug(`Found max tokens for ${provider}/${model}: ${modelInfo.maxInputTokens}`);
150
+ return modelInfo.maxInputTokens;
151
+ }
152
+ if ((provider === "openrouter" || provider === "dexto-nova") && model.includes("/")) {
153
+ const contextLength = (0, import_openrouter_model_registry.getOpenRouterModelContextLength)(model);
154
+ if (typeof contextLength === "number") {
155
+ logger?.debug(
156
+ `Using max tokens from OpenRouter cache for ${provider}/${model}: ${contextLength}`
157
+ );
158
+ return contextLength;
744
159
  }
745
- return {
746
- isSupported: true,
747
- fileType
748
- };
749
- } catch (error) {
750
- return {
751
- isSupported: false,
752
- fileType,
753
- error: error instanceof Error ? error.message : "Unknown error validating model file support"
754
- };
755
160
  }
161
+ const supportedModels = (0, import_llm.getSupportedModels)(provider).join(", ");
162
+ logger?.error(
163
+ `Model '${model}' not found for provider '${provider}' in LLM registry. Supported models: ${supportedModels}`
164
+ );
165
+ throw import_errors.LLMError.unknownModel(provider, model);
756
166
  }
757
167
  function getEffectiveMaxInputTokens(config, logger) {
758
168
  const configuredMaxInputTokens = config.maxInputTokens;
@@ -774,38 +184,36 @@ function getEffectiveMaxInputTokens(config, logger) {
774
184
  `Provided maxInputTokens (${configuredMaxInputTokens}) for ${config.provider}/${config.model} exceeds the known limit (${registryMaxInputTokens}) for model ${config.model}. Capping to registry limit.`
775
185
  );
776
186
  return registryMaxInputTokens;
777
- } else {
778
- logger.debug(
779
- `Using valid maxInputTokens override from configuration: ${configuredMaxInputTokens} (Registry limit: ${registryMaxInputTokens})`
780
- );
781
- return configuredMaxInputTokens;
782
187
  }
188
+ logger.debug(
189
+ `Using valid maxInputTokens override from configuration: ${configuredMaxInputTokens} (Registry limit: ${registryMaxInputTokens})`
190
+ );
191
+ return configuredMaxInputTokens;
783
192
  } catch (error) {
784
193
  if (error instanceof import_DextoRuntimeError.DextoRuntimeError && error.code === import_error_codes.LLMErrorCode.MODEL_UNKNOWN) {
785
194
  logger.warn(
786
195
  `Registry lookup failed during maxInputTokens override check for ${config.provider}/${config.model}: ${error.message}. Proceeding with the provided maxInputTokens value (${configuredMaxInputTokens}), but it might be invalid.`
787
196
  );
788
197
  return configuredMaxInputTokens;
789
- } else {
790
- const errorMessage = error instanceof Error ? error.message : String(error);
791
- logger.error(
792
- `getEffectiveMaxInputTokens: unexpected error during maxInputTokens override check: ${errorMessage}`
793
- );
794
- throw error;
795
198
  }
199
+ const errorMessage = error instanceof Error ? error.message : String(error);
200
+ logger.error(
201
+ `getEffectiveMaxInputTokens: unexpected error during maxInputTokens override check: ${errorMessage}`
202
+ );
203
+ throw error;
796
204
  }
797
205
  }
798
206
  if (config.baseURL) {
799
207
  logger.warn(
800
- `baseURL is set but maxInputTokens is missing. Defaulting to ${DEFAULT_MAX_INPUT_TOKENS}. Provide 'maxInputTokens' in configuration to avoid default fallback.`
208
+ `baseURL is set but maxInputTokens is missing. Defaulting to ${import_llm.DEFAULT_MAX_INPUT_TOKENS}. Provide 'maxInputTokens' in configuration to avoid default fallback.`
801
209
  );
802
- return DEFAULT_MAX_INPUT_TOKENS;
210
+ return import_llm.DEFAULT_MAX_INPUT_TOKENS;
803
211
  }
804
- if (acceptsAnyModel(config.provider)) {
212
+ if ((0, import_llm.acceptsAnyModel)(config.provider)) {
805
213
  logger.debug(
806
- `Provider ${config.provider} accepts any model, defaulting to ${DEFAULT_MAX_INPUT_TOKENS} tokens`
214
+ `Provider ${config.provider} accepts any model, defaulting to ${import_llm.DEFAULT_MAX_INPUT_TOKENS} tokens`
807
215
  );
808
- return DEFAULT_MAX_INPUT_TOKENS;
216
+ return import_llm.DEFAULT_MAX_INPUT_TOKENS;
809
217
  }
810
218
  try {
811
219
  const registryMaxInputTokens = getMaxInputTokensForModel(
@@ -819,131 +227,30 @@ function getEffectiveMaxInputTokens(config, logger) {
819
227
  return registryMaxInputTokens;
820
228
  } catch (error) {
821
229
  if (error instanceof import_DextoRuntimeError.DextoRuntimeError && error.code === import_error_codes.LLMErrorCode.MODEL_UNKNOWN) {
822
- if (supportsCustomModels(config.provider)) {
230
+ if ((0, import_llm.supportsCustomModels)(config.provider)) {
823
231
  logger.debug(
824
- `Custom model ${config.model} not in ${config.provider} registry, defaulting to ${DEFAULT_MAX_INPUT_TOKENS} tokens`
232
+ `Custom model ${config.model} not in ${config.provider} registry, defaulting to ${import_llm.DEFAULT_MAX_INPUT_TOKENS} tokens`
825
233
  );
826
- return DEFAULT_MAX_INPUT_TOKENS;
234
+ return import_llm.DEFAULT_MAX_INPUT_TOKENS;
827
235
  }
828
236
  logger.error(
829
237
  `Registry lookup failed for ${config.provider}/${config.model}: ${error.message}. Effective maxInputTokens cannot be determined.`
830
238
  );
831
239
  throw import_errors.LLMError.unknownModel(config.provider, config.model);
832
- } else {
833
- const errorMessage = error instanceof Error ? error.message : String(error);
834
- logger.error(
835
- `getEffectiveMaxInputTokens: unexpected error during registry lookup for maxInputTokens: ${errorMessage}`
836
- );
837
- throw error;
838
- }
839
- }
840
- }
841
- function getModelPricing(provider, model) {
842
- if (acceptsAnyModel(provider)) {
843
- return void 0;
844
- }
845
- const modelInfo = findModelInfo(provider, model);
846
- return modelInfo?.pricing;
847
- }
848
- function getModelDisplayName(model, provider) {
849
- if (provider) {
850
- const modelInfo = findModelInfo(provider, model);
851
- return modelInfo?.displayName ?? model;
852
- }
853
- if (model.includes("/")) {
854
- const modelInfo = findModelInfo("openrouter", model);
855
- return modelInfo?.displayName ?? model;
856
- }
857
- try {
858
- const inferredProvider = getProviderFromModel(model);
859
- const modelInfo = findModelInfo(inferredProvider, model);
860
- return modelInfo?.displayName ?? model;
861
- } catch {
862
- return model;
863
- }
864
- }
865
- function isReasoningCapableModel(model, provider) {
866
- const registryProvider = (() => {
867
- if (model.includes("/")) return "openrouter";
868
- if (provider) return provider;
869
- try {
870
- return getProviderFromModel(model);
871
- } catch {
872
- return void 0;
873
240
  }
874
- })();
875
- if (registryProvider === "openrouter" && model.includes("/")) {
876
- const dynamicModel = getOpenRouterGatewayModelById(model);
877
- if (dynamicModel?.reasoning === true) return true;
878
- if (dynamicModel?.reasoning === false) return false;
879
- }
880
- if (registryProvider) {
881
- const modelInfo = findModelInfo(registryProvider, model);
882
- if (modelInfo?.reasoning === true) return true;
883
- if (modelInfo?.reasoning === false) return false;
884
- }
885
- const modelIdForHeuristics = model.includes("/") ? model.split("/").pop() ?? model : model;
886
- const modelLower = modelIdForHeuristics.toLowerCase();
887
- if (modelLower.includes("codex")) {
888
- return true;
889
- }
890
- if (modelLower.startsWith("o1") || modelLower.startsWith("o3") || modelLower.startsWith("o4")) {
891
- return true;
892
- }
893
- if (modelLower.includes("gpt-5") || modelLower.includes("gpt-5.1") || modelLower.includes("gpt-5.2")) {
894
- return true;
241
+ const errorMessage = error instanceof Error ? error.message : String(error);
242
+ logger.error(
243
+ `getEffectiveMaxInputTokens: unexpected error during registry lookup for maxInputTokens: ${errorMessage}`
244
+ );
245
+ throw error;
895
246
  }
896
- return false;
897
- }
898
- function calculateCost(usage, pricing) {
899
- return calculateCostBreakdown(usage, pricing).totalUsd;
900
- }
901
- function calculateCostBreakdown(usage, pricing) {
902
- const inputUsd = (usage.inputTokens ?? 0) * pricing.inputPerM / 1e6;
903
- const outputUsd = (usage.outputTokens ?? 0) * pricing.outputPerM / 1e6;
904
- const cacheReadUsd = (usage.cacheReadTokens ?? 0) * (pricing.cacheReadPerM ?? 0) / 1e6;
905
- const cacheWriteUsd = (usage.cacheWriteTokens ?? 0) * (pricing.cacheWritePerM ?? 0) / 1e6;
906
- const reasoningUsd = (usage.reasoningTokens ?? 0) * (pricing.reasoningPerM ?? pricing.outputPerM) / 1e6;
907
- return {
908
- inputUsd,
909
- outputUsd,
910
- reasoningUsd,
911
- cacheReadUsd,
912
- cacheWriteUsd,
913
- totalUsd: inputUsd + outputUsd + cacheReadUsd + cacheWriteUsd + reasoningUsd
914
- };
915
247
  }
916
248
  // Annotate the CommonJS export names for ESM import in node:
917
249
  0 && (module.exports = {
918
- DEFAULT_MAX_INPUT_TOKENS,
919
- LLM_REGISTRY,
920
- MIME_TYPE_TO_FILE_TYPE,
921
- acceptsAnyModel,
922
- calculateCost,
923
- calculateCostBreakdown,
924
250
  getAllModelsForProvider,
925
- getAllSupportedModels,
926
- getAllowedMimeTypes,
927
- getDefaultModelForProvider,
928
251
  getEffectiveMaxInputTokens,
929
252
  getMaxInputTokensForModel,
930
- getModelDisplayName,
931
- getModelPricing,
932
- getOpenRouterCandidateModelIds,
933
253
  getProviderFromModel,
934
254
  getSupportedFileTypesForModel,
935
- getSupportedModels,
936
- getSupportedProviders,
937
- hasAllRegistryModelsSupport,
938
- isModelValidForProvider,
939
- isReasoningCapableModel,
940
- isValidProviderModel,
941
- modelSupportsFileType,
942
- requiresApiKey,
943
- requiresBaseURL,
944
- stripBedrockRegionPrefix,
945
- supportsBaseURL,
946
- supportsCustomModels,
947
- transformModelNameForProvider,
948
- validateModelFileSupport
255
+ modelSupportsFileType
949
256
  });