@dexto/core 1.4.0 → 1.5.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 (514) hide show
  1. package/README.md +36 -0
  2. package/dist/agent/DextoAgent.cjs +22 -3
  3. package/dist/agent/DextoAgent.d.ts +19 -2
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +23 -4
  6. package/dist/agent/index.cjs +4 -1
  7. package/dist/agent/index.d.ts +1 -1
  8. package/dist/agent/index.d.ts.map +1 -1
  9. package/dist/agent/index.js +5 -1
  10. package/dist/agent/schemas.cjs +90 -71
  11. package/dist/agent/schemas.d.ts +5959 -96
  12. package/dist/agent/schemas.d.ts.map +1 -1
  13. package/dist/agent/schemas.js +87 -66
  14. package/dist/approval/manager.cjs +165 -1
  15. package/dist/approval/manager.d.ts +91 -2
  16. package/dist/approval/manager.d.ts.map +1 -1
  17. package/dist/approval/manager.js +155 -1
  18. package/dist/approval/schemas.cjs +39 -3
  19. package/dist/approval/schemas.d.ts +238 -1
  20. package/dist/approval/schemas.d.ts.map +1 -1
  21. package/dist/approval/schemas.js +35 -3
  22. package/dist/approval/types.cjs +1 -0
  23. package/dist/approval/types.d.ts +26 -1
  24. package/dist/approval/types.d.ts.map +1 -1
  25. package/dist/approval/types.js +1 -0
  26. package/dist/context/compaction/factory.cjs +57 -0
  27. package/dist/context/compaction/factory.d.ts +17 -0
  28. package/dist/context/compaction/factory.d.ts.map +1 -0
  29. package/dist/context/compaction/factory.js +34 -0
  30. package/dist/context/compaction/index.cjs +49 -0
  31. package/dist/context/compaction/index.d.ts +11 -0
  32. package/dist/context/compaction/index.d.ts.map +1 -0
  33. package/dist/context/compaction/index.js +19 -0
  34. package/dist/context/{compression → compaction}/overflow.cjs +3 -3
  35. package/dist/context/{compression → compaction}/overflow.d.ts +4 -4
  36. package/dist/context/compaction/overflow.d.ts.map +1 -0
  37. package/dist/context/{compression → compaction}/overflow.js +2 -2
  38. package/dist/context/compaction/provider.cjs +16 -0
  39. package/dist/context/compaction/provider.d.ts +48 -0
  40. package/dist/context/compaction/provider.d.ts.map +1 -0
  41. package/dist/context/compaction/providers/noop-provider.cjs +48 -0
  42. package/dist/context/compaction/providers/noop-provider.d.ts +24 -0
  43. package/dist/context/compaction/providers/noop-provider.d.ts.map +1 -0
  44. package/dist/context/compaction/providers/noop-provider.js +24 -0
  45. package/dist/context/compaction/providers/reactive-overflow-provider.cjs +61 -0
  46. package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +36 -0
  47. package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +1 -0
  48. package/dist/context/compaction/providers/reactive-overflow-provider.js +37 -0
  49. package/dist/context/compaction/registry.cjs +39 -0
  50. package/dist/context/compaction/registry.d.ts +19 -0
  51. package/dist/context/compaction/registry.d.ts.map +1 -0
  52. package/dist/context/compaction/registry.js +16 -0
  53. package/dist/context/compaction/schemas.cjs +38 -0
  54. package/dist/context/compaction/schemas.d.ts +24 -0
  55. package/dist/context/compaction/schemas.d.ts.map +1 -0
  56. package/dist/context/compaction/schemas.js +14 -0
  57. package/dist/context/compaction/strategies/noop.cjs +36 -0
  58. package/dist/context/compaction/strategies/noop.d.ts +18 -0
  59. package/dist/context/compaction/strategies/noop.d.ts.map +1 -0
  60. package/dist/context/compaction/strategies/noop.js +13 -0
  61. package/dist/context/{compression → compaction/strategies}/reactive-overflow.cjs +3 -3
  62. package/dist/context/{compression → compaction/strategies}/reactive-overflow.d.ts +6 -6
  63. package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +1 -0
  64. package/dist/context/{compression → compaction/strategies}/reactive-overflow.js +4 -4
  65. package/dist/context/{compression → compaction}/types.d.ts +4 -4
  66. package/dist/context/compaction/types.d.ts.map +1 -0
  67. package/dist/context/compaction/types.js +0 -0
  68. package/dist/context/error-codes.cjs +4 -0
  69. package/dist/context/error-codes.d.ts +4 -0
  70. package/dist/context/error-codes.d.ts.map +1 -1
  71. package/dist/context/error-codes.js +4 -0
  72. package/dist/context/errors.cjs +40 -0
  73. package/dist/context/errors.d.ts +14 -0
  74. package/dist/context/errors.d.ts.map +1 -1
  75. package/dist/context/errors.js +40 -0
  76. package/dist/context/index.cjs +3 -1
  77. package/dist/context/index.d.ts +1 -0
  78. package/dist/context/index.d.ts.map +1 -1
  79. package/dist/context/index.js +1 -0
  80. package/dist/context/types.d.ts +6 -0
  81. package/dist/context/types.d.ts.map +1 -1
  82. package/dist/context/utils.cjs +27 -7
  83. package/dist/context/utils.d.ts.map +1 -1
  84. package/dist/context/utils.js +27 -7
  85. package/dist/errors/result-bridge.cjs +2 -3
  86. package/dist/errors/result-bridge.d.ts.map +1 -1
  87. package/dist/errors/result-bridge.js +2 -3
  88. package/dist/events/index.cjs +6 -3
  89. package/dist/events/index.d.ts +35 -19
  90. package/dist/events/index.d.ts.map +1 -1
  91. package/dist/events/index.js +5 -3
  92. package/dist/filesystem/filesystem-service.cjs +39 -0
  93. package/dist/filesystem/filesystem-service.d.ts +32 -0
  94. package/dist/filesystem/filesystem-service.d.ts.map +1 -1
  95. package/dist/filesystem/filesystem-service.js +39 -0
  96. package/dist/filesystem/index.d.ts +1 -1
  97. package/dist/filesystem/index.d.ts.map +1 -1
  98. package/dist/filesystem/path-validator.cjs +69 -1
  99. package/dist/filesystem/path-validator.d.ts +43 -2
  100. package/dist/filesystem/path-validator.d.ts.map +1 -1
  101. package/dist/filesystem/path-validator.js +69 -1
  102. package/dist/image/define-image.cjs +146 -0
  103. package/dist/image/define-image.d.ts +71 -0
  104. package/dist/image/define-image.d.ts.map +1 -0
  105. package/dist/image/define-image.js +121 -0
  106. package/dist/image/index.cjs +32 -0
  107. package/dist/image/index.d.ts +53 -0
  108. package/dist/image/index.d.ts.map +1 -0
  109. package/dist/image/index.js +7 -0
  110. package/dist/image/types.cjs +16 -0
  111. package/dist/image/types.d.ts +231 -0
  112. package/dist/image/types.d.ts.map +1 -0
  113. package/dist/image/types.js +0 -0
  114. package/dist/index.cjs +5 -1
  115. package/dist/index.d.ts +2 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +2 -0
  118. package/dist/llm/error-codes.cjs +1 -0
  119. package/dist/llm/error-codes.d.ts +1 -0
  120. package/dist/llm/error-codes.d.ts.map +1 -1
  121. package/dist/llm/error-codes.js +1 -0
  122. package/dist/llm/errors.cjs +24 -0
  123. package/dist/llm/errors.d.ts +19 -6
  124. package/dist/llm/errors.d.ts.map +1 -1
  125. package/dist/llm/errors.js +24 -0
  126. package/dist/llm/executor/provider-options.cjs +87 -0
  127. package/dist/llm/executor/provider-options.d.ts +49 -0
  128. package/dist/llm/executor/provider-options.d.ts.map +1 -0
  129. package/dist/llm/executor/provider-options.js +63 -0
  130. package/dist/llm/executor/stream-processor.cjs +22 -11
  131. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  132. package/dist/llm/executor/stream-processor.js +22 -11
  133. package/dist/llm/executor/turn-executor.cjs +60 -23
  134. package/dist/llm/executor/turn-executor.d.ts +7 -5
  135. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  136. package/dist/llm/executor/turn-executor.js +60 -23
  137. package/dist/llm/formatters/vercel.cjs +15 -3
  138. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  139. package/dist/llm/formatters/vercel.js +15 -3
  140. package/dist/llm/index.cjs +18 -1
  141. package/dist/llm/index.d.ts +2 -0
  142. package/dist/llm/index.d.ts.map +1 -1
  143. package/dist/llm/index.js +14 -0
  144. package/dist/llm/providers/local/ai-sdk-adapter.cjs +308 -0
  145. package/dist/llm/providers/local/ai-sdk-adapter.d.ts +29 -0
  146. package/dist/llm/providers/local/ai-sdk-adapter.d.ts.map +1 -0
  147. package/dist/llm/providers/local/ai-sdk-adapter.js +278 -0
  148. package/dist/llm/providers/local/downloader.cjs +291 -0
  149. package/dist/llm/providers/local/downloader.d.ts +82 -0
  150. package/dist/llm/providers/local/downloader.d.ts.map +1 -0
  151. package/dist/llm/providers/local/downloader.js +251 -0
  152. package/dist/llm/providers/local/error-codes.cjs +57 -0
  153. package/dist/llm/providers/local/error-codes.d.ts +66 -0
  154. package/dist/llm/providers/local/error-codes.d.ts.map +1 -0
  155. package/dist/llm/providers/local/error-codes.js +34 -0
  156. package/dist/llm/providers/local/errors.cjs +240 -0
  157. package/dist/llm/providers/local/errors.d.ts +31 -0
  158. package/dist/llm/providers/local/errors.d.ts.map +1 -0
  159. package/dist/llm/providers/local/errors.js +217 -0
  160. package/dist/llm/providers/local/gpu-detector.cjs +214 -0
  161. package/dist/llm/providers/local/gpu-detector.d.ts +28 -0
  162. package/dist/llm/providers/local/gpu-detector.d.ts.map +1 -0
  163. package/dist/llm/providers/local/gpu-detector.js +178 -0
  164. package/dist/llm/providers/local/index.cjs +147 -0
  165. package/dist/llm/providers/local/index.d.ts +21 -0
  166. package/dist/llm/providers/local/index.d.ts.map +1 -0
  167. package/dist/llm/providers/local/index.js +126 -0
  168. package/dist/llm/providers/local/node-llama-provider.cjs +216 -0
  169. package/dist/llm/providers/local/node-llama-provider.d.ts +90 -0
  170. package/dist/llm/providers/local/node-llama-provider.d.ts.map +1 -0
  171. package/dist/llm/providers/local/node-llama-provider.js +176 -0
  172. package/dist/llm/providers/local/ollama-provider.cjs +230 -0
  173. package/dist/llm/providers/local/ollama-provider.d.ts +70 -0
  174. package/dist/llm/providers/local/ollama-provider.d.ts.map +1 -0
  175. package/dist/llm/providers/local/ollama-provider.js +198 -0
  176. package/dist/llm/providers/local/registry.cjs +343 -0
  177. package/dist/llm/providers/local/registry.d.ts +51 -0
  178. package/dist/llm/providers/local/registry.d.ts.map +1 -0
  179. package/dist/llm/providers/local/registry.js +312 -0
  180. package/dist/llm/providers/local/schemas.cjs +169 -0
  181. package/dist/llm/providers/local/schemas.d.ts +395 -0
  182. package/dist/llm/providers/local/schemas.d.ts.map +1 -0
  183. package/dist/llm/providers/local/schemas.js +133 -0
  184. package/dist/llm/providers/local/types.cjs +16 -0
  185. package/dist/llm/providers/local/types.d.ts +219 -0
  186. package/dist/llm/providers/local/types.d.ts.map +1 -0
  187. package/dist/llm/providers/local/types.js +0 -0
  188. package/dist/llm/providers/openrouter-model-registry.cjs +350 -0
  189. package/dist/llm/providers/openrouter-model-registry.d.ts +120 -0
  190. package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -0
  191. package/dist/llm/providers/openrouter-model-registry.js +309 -0
  192. package/dist/llm/registry.cjs +604 -9
  193. package/dist/llm/registry.d.ts +35 -0
  194. package/dist/llm/registry.d.ts.map +1 -1
  195. package/dist/llm/registry.js +600 -9
  196. package/dist/llm/resolver.cjs +63 -5
  197. package/dist/llm/resolver.d.ts +3 -3
  198. package/dist/llm/resolver.d.ts.map +1 -1
  199. package/dist/llm/resolver.js +69 -6
  200. package/dist/llm/schemas.cjs +107 -81
  201. package/dist/llm/schemas.d.ts +181 -22
  202. package/dist/llm/schemas.d.ts.map +1 -1
  203. package/dist/llm/schemas.js +107 -81
  204. package/dist/llm/services/factory.cjs +87 -13
  205. package/dist/llm/services/factory.d.ts +4 -1
  206. package/dist/llm/services/factory.d.ts.map +1 -1
  207. package/dist/llm/services/factory.js +85 -12
  208. package/dist/llm/services/test-utils.integration.cjs +22 -2
  209. package/dist/llm/services/test-utils.integration.d.ts +7 -1
  210. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  211. package/dist/llm/services/test-utils.integration.js +26 -3
  212. package/dist/llm/services/vercel.cjs +8 -3
  213. package/dist/llm/services/vercel.d.ts +3 -2
  214. package/dist/llm/services/vercel.d.ts.map +1 -1
  215. package/dist/llm/services/vercel.js +8 -3
  216. package/dist/llm/types.cjs +11 -1
  217. package/dist/llm/types.d.ts +1 -1
  218. package/dist/llm/types.d.ts.map +1 -1
  219. package/dist/llm/types.js +11 -1
  220. package/dist/logger/logger.cjs +7 -3
  221. package/dist/logger/logger.d.ts.map +1 -1
  222. package/dist/logger/logger.js +7 -3
  223. package/dist/mcp/manager.cjs +8 -0
  224. package/dist/mcp/manager.d.ts +17 -0
  225. package/dist/mcp/manager.d.ts.map +1 -1
  226. package/dist/mcp/manager.js +8 -0
  227. package/dist/mcp/mcp-client.cjs +0 -3
  228. package/dist/mcp/mcp-client.d.ts.map +1 -1
  229. package/dist/mcp/mcp-client.js +0 -3
  230. package/dist/memory/schemas.d.ts +3 -3
  231. package/dist/plugins/error-codes.cjs +3 -0
  232. package/dist/plugins/error-codes.d.ts +7 -1
  233. package/dist/plugins/error-codes.d.ts.map +1 -1
  234. package/dist/plugins/error-codes.js +3 -0
  235. package/dist/plugins/index.cjs +7 -0
  236. package/dist/plugins/index.d.ts +4 -2
  237. package/dist/plugins/index.d.ts.map +1 -1
  238. package/dist/plugins/index.js +6 -1
  239. package/dist/plugins/manager.cjs +92 -7
  240. package/dist/plugins/manager.d.ts +10 -3
  241. package/dist/plugins/manager.d.ts.map +1 -1
  242. package/dist/plugins/manager.js +92 -7
  243. package/dist/plugins/registry.cjs +63 -0
  244. package/dist/plugins/registry.d.ts +101 -0
  245. package/dist/plugins/registry.d.ts.map +1 -0
  246. package/dist/plugins/registry.js +39 -0
  247. package/dist/plugins/schemas.cjs +17 -5
  248. package/dist/plugins/schemas.d.ts +62 -5
  249. package/dist/plugins/schemas.d.ts.map +1 -1
  250. package/dist/plugins/schemas.js +15 -4
  251. package/dist/providers/base-registry.cjs +147 -0
  252. package/dist/providers/base-registry.d.ts +147 -0
  253. package/dist/providers/base-registry.d.ts.map +1 -0
  254. package/dist/providers/base-registry.js +123 -0
  255. package/dist/providers/discovery.cjs +109 -0
  256. package/dist/providers/discovery.d.ts +96 -0
  257. package/dist/providers/discovery.d.ts.map +1 -0
  258. package/dist/providers/discovery.js +84 -0
  259. package/dist/providers/index.cjs +24 -0
  260. package/dist/providers/index.d.ts +32 -0
  261. package/dist/providers/index.d.ts.map +1 -0
  262. package/dist/providers/index.js +2 -0
  263. package/dist/resources/reference-parser.cjs +3 -3
  264. package/dist/resources/reference-parser.d.ts.map +1 -1
  265. package/dist/resources/reference-parser.js +3 -3
  266. package/dist/session/chat-session.cjs +20 -3
  267. package/dist/session/chat-session.d.ts.map +1 -1
  268. package/dist/session/chat-session.js +21 -4
  269. package/dist/session/history/database.cjs +49 -15
  270. package/dist/session/history/database.d.ts.map +1 -1
  271. package/dist/session/history/database.js +49 -15
  272. package/dist/session/session-manager.cjs +2 -1
  273. package/dist/session/session-manager.d.ts.map +1 -1
  274. package/dist/session/session-manager.js +2 -1
  275. package/dist/storage/blob/factory.cjs +8 -11
  276. package/dist/storage/blob/factory.d.ts +32 -6
  277. package/dist/storage/blob/factory.d.ts.map +1 -1
  278. package/dist/storage/blob/factory.js +8 -11
  279. package/dist/storage/blob/index.cjs +56 -0
  280. package/dist/storage/blob/index.d.ts +45 -0
  281. package/dist/storage/blob/index.d.ts.map +1 -0
  282. package/dist/storage/blob/index.js +30 -0
  283. package/dist/storage/blob/provider.cjs +16 -0
  284. package/dist/storage/blob/provider.d.ts +50 -0
  285. package/dist/storage/blob/provider.d.ts.map +1 -0
  286. package/dist/storage/blob/provider.js +0 -0
  287. package/dist/storage/blob/providers/index.cjs +31 -0
  288. package/dist/storage/blob/providers/index.d.ts +8 -0
  289. package/dist/storage/blob/providers/index.d.ts.map +1 -0
  290. package/dist/storage/blob/providers/index.js +7 -0
  291. package/dist/storage/blob/providers/local.cjs +39 -0
  292. package/dist/storage/blob/providers/local.d.ts +17 -0
  293. package/dist/storage/blob/providers/local.d.ts.map +1 -0
  294. package/dist/storage/blob/providers/local.js +16 -0
  295. package/dist/storage/blob/providers/memory.cjs +39 -0
  296. package/dist/storage/blob/providers/memory.d.ts +17 -0
  297. package/dist/storage/blob/providers/memory.d.ts.map +1 -0
  298. package/dist/storage/blob/providers/memory.js +16 -0
  299. package/dist/storage/blob/registry.cjs +50 -0
  300. package/dist/storage/blob/registry.d.ts +42 -0
  301. package/dist/storage/blob/registry.d.ts.map +1 -0
  302. package/dist/storage/blob/registry.js +26 -0
  303. package/dist/storage/blob/schemas.cjs +9 -12
  304. package/dist/storage/blob/schemas.d.ts +39 -34
  305. package/dist/storage/blob/schemas.d.ts.map +1 -1
  306. package/dist/storage/blob/schemas.js +6 -11
  307. package/dist/storage/cache/factory.cjs +8 -36
  308. package/dist/storage/cache/factory.d.ts +32 -7
  309. package/dist/storage/cache/factory.d.ts.map +1 -1
  310. package/dist/storage/cache/factory.js +8 -26
  311. package/dist/storage/cache/index.cjs +53 -0
  312. package/dist/storage/cache/index.d.ts +44 -0
  313. package/dist/storage/cache/index.d.ts.map +1 -0
  314. package/dist/storage/cache/index.js +28 -0
  315. package/dist/storage/cache/provider.cjs +16 -0
  316. package/dist/storage/cache/provider.d.ts +56 -0
  317. package/dist/storage/cache/provider.d.ts.map +1 -0
  318. package/dist/storage/cache/provider.js +0 -0
  319. package/dist/storage/cache/providers/index.cjs +31 -0
  320. package/dist/storage/cache/providers/index.d.ts +8 -0
  321. package/dist/storage/cache/providers/index.d.ts.map +1 -0
  322. package/dist/storage/cache/providers/index.js +7 -0
  323. package/dist/storage/cache/providers/memory.cjs +40 -0
  324. package/dist/storage/cache/providers/memory.d.ts +17 -0
  325. package/dist/storage/cache/providers/memory.d.ts.map +1 -0
  326. package/dist/storage/cache/providers/memory.js +17 -0
  327. package/dist/storage/cache/providers/redis.cjs +66 -0
  328. package/dist/storage/cache/providers/redis.d.ts +20 -0
  329. package/dist/storage/cache/providers/redis.d.ts.map +1 -0
  330. package/dist/storage/cache/providers/redis.js +33 -0
  331. package/dist/storage/cache/registry.cjs +50 -0
  332. package/dist/storage/cache/registry.d.ts +42 -0
  333. package/dist/storage/cache/registry.d.ts.map +1 -0
  334. package/dist/storage/cache/registry.js +26 -0
  335. package/dist/storage/cache/schemas.cjs +6 -2
  336. package/dist/storage/cache/schemas.d.ts +2 -3
  337. package/dist/storage/cache/schemas.d.ts.map +1 -1
  338. package/dist/storage/cache/schemas.js +3 -1
  339. package/dist/storage/database/factory.cjs +8 -47
  340. package/dist/storage/database/factory.d.ts +34 -8
  341. package/dist/storage/database/factory.d.ts.map +1 -1
  342. package/dist/storage/database/factory.js +8 -37
  343. package/dist/storage/database/index.cjs +58 -0
  344. package/dist/storage/database/index.d.ts +45 -0
  345. package/dist/storage/database/index.d.ts.map +1 -0
  346. package/dist/storage/database/index.js +37 -0
  347. package/dist/storage/database/postgres-store.cjs +174 -78
  348. package/dist/storage/database/postgres-store.d.ts +19 -0
  349. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  350. package/dist/storage/database/postgres-store.js +174 -78
  351. package/dist/storage/database/provider.cjs +16 -0
  352. package/dist/storage/database/provider.d.ts +56 -0
  353. package/dist/storage/database/provider.d.ts.map +1 -0
  354. package/dist/storage/database/provider.js +0 -0
  355. package/dist/storage/database/providers/index.cjs +34 -0
  356. package/dist/storage/database/providers/index.d.ts +9 -0
  357. package/dist/storage/database/providers/index.d.ts.map +1 -0
  358. package/dist/storage/database/providers/index.js +9 -0
  359. package/dist/storage/database/providers/memory.cjs +40 -0
  360. package/dist/storage/database/providers/memory.d.ts +16 -0
  361. package/dist/storage/database/providers/memory.d.ts.map +1 -0
  362. package/dist/storage/database/providers/memory.js +17 -0
  363. package/dist/storage/database/providers/postgres.cjs +62 -0
  364. package/dist/storage/database/providers/postgres.d.ts +19 -0
  365. package/dist/storage/database/providers/postgres.d.ts.map +1 -0
  366. package/dist/storage/database/providers/postgres.js +29 -0
  367. package/dist/storage/database/providers/sqlite.cjs +66 -0
  368. package/dist/storage/database/providers/sqlite.d.ts +20 -0
  369. package/dist/storage/database/providers/sqlite.d.ts.map +1 -0
  370. package/dist/storage/database/providers/sqlite.js +33 -0
  371. package/dist/storage/database/registry.cjs +50 -0
  372. package/dist/storage/database/registry.d.ts +42 -0
  373. package/dist/storage/database/registry.d.ts.map +1 -0
  374. package/dist/storage/database/registry.js +26 -0
  375. package/dist/storage/database/schemas.cjs +12 -3
  376. package/dist/storage/database/schemas.d.ts +11 -4
  377. package/dist/storage/database/schemas.d.ts.map +1 -1
  378. package/dist/storage/database/schemas.js +8 -2
  379. package/dist/storage/error-codes.cjs +6 -0
  380. package/dist/storage/error-codes.d.ts +7 -1
  381. package/dist/storage/error-codes.d.ts.map +1 -1
  382. package/dist/storage/error-codes.js +6 -0
  383. package/dist/storage/errors.cjs +80 -0
  384. package/dist/storage/errors.d.ts +24 -0
  385. package/dist/storage/errors.d.ts.map +1 -1
  386. package/dist/storage/errors.js +80 -0
  387. package/dist/storage/index.cjs +47 -4
  388. package/dist/storage/index.d.ts +34 -8
  389. package/dist/storage/index.d.ts.map +1 -1
  390. package/dist/storage/index.js +32 -3
  391. package/dist/storage/schemas.cjs +4 -0
  392. package/dist/storage/schemas.d.ts +24 -50
  393. package/dist/storage/schemas.d.ts.map +1 -1
  394. package/dist/storage/schemas.js +5 -1
  395. package/dist/storage/storage-manager.cjs +6 -6
  396. package/dist/storage/storage-manager.d.ts.map +1 -1
  397. package/dist/storage/storage-manager.js +3 -3
  398. package/dist/systemPrompt/in-built-prompts.cjs +7 -6
  399. package/dist/systemPrompt/in-built-prompts.d.ts +2 -2
  400. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
  401. package/dist/systemPrompt/in-built-prompts.js +6 -5
  402. package/dist/systemPrompt/registry.cjs +2 -2
  403. package/dist/systemPrompt/registry.d.ts +1 -1
  404. package/dist/systemPrompt/registry.d.ts.map +1 -1
  405. package/dist/systemPrompt/registry.js +2 -2
  406. package/dist/systemPrompt/schemas.cjs +2 -2
  407. package/dist/systemPrompt/schemas.d.ts +13 -13
  408. package/dist/systemPrompt/schemas.js +2 -2
  409. package/dist/tools/custom-tool-registry.cjs +64 -0
  410. package/dist/tools/custom-tool-registry.d.ts +126 -0
  411. package/dist/tools/custom-tool-registry.d.ts.map +1 -0
  412. package/dist/tools/custom-tool-registry.js +40 -0
  413. package/dist/tools/custom-tool-schema-registry.cjs +164 -0
  414. package/dist/tools/custom-tool-schema-registry.d.ts +86 -0
  415. package/dist/tools/custom-tool-schema-registry.d.ts.map +1 -0
  416. package/dist/tools/custom-tool-schema-registry.js +140 -0
  417. package/dist/tools/error-codes.cjs +3 -0
  418. package/dist/tools/error-codes.d.ts +4 -1
  419. package/dist/tools/error-codes.d.ts.map +1 -1
  420. package/dist/tools/error-codes.js +3 -0
  421. package/dist/tools/errors.cjs +41 -0
  422. package/dist/tools/errors.d.ts +17 -0
  423. package/dist/tools/errors.d.ts.map +1 -1
  424. package/dist/tools/errors.js +41 -0
  425. package/dist/tools/index.cjs +13 -1
  426. package/dist/tools/index.d.ts +4 -0
  427. package/dist/tools/index.d.ts.map +1 -1
  428. package/dist/tools/index.js +11 -1
  429. package/dist/tools/internal-tools/constants.cjs +3 -9
  430. package/dist/tools/internal-tools/constants.d.ts +1 -1
  431. package/dist/tools/internal-tools/constants.d.ts.map +1 -1
  432. package/dist/tools/internal-tools/constants.js +3 -9
  433. package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +113 -0
  434. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +30 -0
  435. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +1 -0
  436. package/dist/tools/internal-tools/implementations/get-resource-tool.js +90 -0
  437. package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +91 -0
  438. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +24 -0
  439. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +1 -0
  440. package/dist/tools/internal-tools/implementations/list-resources-tool.js +68 -0
  441. package/dist/tools/internal-tools/provider.cjs +153 -23
  442. package/dist/tools/internal-tools/provider.d.ts +55 -10
  443. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  444. package/dist/tools/internal-tools/provider.js +153 -23
  445. package/dist/tools/internal-tools/registry.cjs +18 -43
  446. package/dist/tools/internal-tools/registry.d.ts +4 -4
  447. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  448. package/dist/tools/internal-tools/registry.js +18 -43
  449. package/dist/tools/schemas.cjs +20 -0
  450. package/dist/tools/schemas.d.ts +43 -1
  451. package/dist/tools/schemas.d.ts.map +1 -1
  452. package/dist/tools/schemas.js +16 -0
  453. package/dist/tools/tool-manager.cjs +140 -13
  454. package/dist/tools/tool-manager.d.ts +22 -3
  455. package/dist/tools/tool-manager.d.ts.map +1 -1
  456. package/dist/tools/tool-manager.js +140 -13
  457. package/dist/tools/types.d.ts +43 -0
  458. package/dist/tools/types.d.ts.map +1 -1
  459. package/dist/utils/api-key-resolver.cjs +19 -1
  460. package/dist/utils/api-key-resolver.d.ts.map +1 -1
  461. package/dist/utils/api-key-resolver.js +19 -1
  462. package/dist/utils/index.cjs +0 -2
  463. package/dist/utils/index.d.ts +0 -1
  464. package/dist/utils/index.d.ts.map +1 -1
  465. package/dist/utils/index.js +0 -1
  466. package/dist/utils/redactor.cjs +18 -3
  467. package/dist/utils/redactor.d.ts +0 -7
  468. package/dist/utils/redactor.d.ts.map +1 -1
  469. package/dist/utils/redactor.js +18 -3
  470. package/dist/utils/service-initializer.cjs +9 -35
  471. package/dist/utils/service-initializer.d.ts.map +1 -1
  472. package/dist/utils/service-initializer.js +9 -35
  473. package/package.json +5 -2
  474. package/dist/context/compression/overflow.d.ts.map +0 -1
  475. package/dist/context/compression/reactive-overflow.d.ts.map +0 -1
  476. package/dist/context/compression/types.d.ts.map +0 -1
  477. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +0 -130
  478. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +0 -13
  479. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +0 -1
  480. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +0 -97
  481. package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +0 -49
  482. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +0 -12
  483. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +0 -1
  484. package/dist/tools/internal-tools/implementations/bash-output-tool.js +0 -26
  485. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +0 -127
  486. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +0 -12
  487. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +0 -1
  488. package/dist/tools/internal-tools/implementations/edit-file-tool.js +0 -104
  489. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +0 -70
  490. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +0 -12
  491. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +0 -1
  492. package/dist/tools/internal-tools/implementations/glob-files-tool.js +0 -47
  493. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +0 -86
  494. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +0 -12
  495. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +0 -1
  496. package/dist/tools/internal-tools/implementations/grep-content-tool.js +0 -63
  497. package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +0 -47
  498. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +0 -12
  499. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +0 -1
  500. package/dist/tools/internal-tools/implementations/kill-process-tool.js +0 -24
  501. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +0 -63
  502. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +0 -12
  503. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +0 -1
  504. package/dist/tools/internal-tools/implementations/read-file-tool.js +0 -40
  505. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +0 -124
  506. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +0 -12
  507. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +0 -1
  508. package/dist/tools/internal-tools/implementations/write-file-tool.js +0 -103
  509. package/dist/utils/env-file.cjs +0 -118
  510. package/dist/utils/env-file.d.ts +0 -5
  511. package/dist/utils/env-file.d.ts.map +0 -1
  512. package/dist/utils/env-file.js +0 -85
  513. /package/dist/context/{compression/types.js → compaction/provider.js} +0 -0
  514. /package/dist/context/{compression → compaction}/types.cjs +0 -0
@@ -34,10 +34,14 @@ __export(registry_exports, {
34
34
  getSupportedFileTypesForModel: () => getSupportedFileTypesForModel,
35
35
  getSupportedModels: () => getSupportedModels,
36
36
  getSupportedProviders: () => getSupportedProviders,
37
+ isReasoningCapableModel: () => isReasoningCapableModel,
37
38
  isValidProviderModel: () => isValidProviderModel,
38
39
  modelSupportsFileType: () => modelSupportsFileType,
40
+ requiresApiKey: () => requiresApiKey,
39
41
  requiresBaseURL: () => requiresBaseURL,
42
+ stripBedrockRegionPrefix: () => stripBedrockRegionPrefix,
40
43
  supportsBaseURL: () => supportsBaseURL,
44
+ supportsCustomModels: () => supportsCustomModels,
41
45
  validateModelFileSupport: () => validateModelFileSupport
42
46
  });
43
47
  module.exports = __toCommonJS(registry_exports);
@@ -45,6 +49,7 @@ var import_errors = require("./errors.js");
45
49
  var import_error_codes = require("./error-codes.js");
46
50
  var import_DextoRuntimeError = require("../errors/DextoRuntimeError.js");
47
51
  var import_types = require("./types.js");
52
+ var import_openrouter_model_registry = require("./providers/openrouter-model-registry.js");
48
53
  const MIME_TYPE_TO_FILE_TYPE = {
49
54
  "application/pdf": "pdf",
50
55
  "audio/mp3": "audio",
@@ -70,6 +75,60 @@ const DEFAULT_MAX_INPUT_TOKENS = 128e3;
70
75
  const LLM_REGISTRY = {
71
76
  openai: {
72
77
  models: [
78
+ // GPT-5.2 series (latest, released Dec 2025)
79
+ {
80
+ name: "gpt-5.2-chat-latest",
81
+ displayName: "GPT-5.2 Instant",
82
+ maxInputTokens: 4e5,
83
+ supportedFileTypes: ["pdf", "image"],
84
+ pricing: {
85
+ inputPerM: 1.75,
86
+ outputPerM: 14,
87
+ cacheReadPerM: 0.175,
88
+ currency: "USD",
89
+ unit: "per_million_tokens"
90
+ }
91
+ },
92
+ {
93
+ name: "gpt-5.2",
94
+ displayName: "GPT-5.2 Thinking",
95
+ maxInputTokens: 4e5,
96
+ supportedFileTypes: ["pdf", "image"],
97
+ pricing: {
98
+ inputPerM: 1.75,
99
+ outputPerM: 14,
100
+ cacheReadPerM: 0.175,
101
+ currency: "USD",
102
+ unit: "per_million_tokens"
103
+ }
104
+ },
105
+ {
106
+ name: "gpt-5.2-pro",
107
+ displayName: "GPT-5.2 Pro",
108
+ maxInputTokens: 4e5,
109
+ supportedFileTypes: ["pdf", "image"],
110
+ pricing: {
111
+ inputPerM: 21,
112
+ outputPerM: 168,
113
+ cacheReadPerM: 2.1,
114
+ currency: "USD",
115
+ unit: "per_million_tokens"
116
+ }
117
+ },
118
+ {
119
+ name: "gpt-5.2-codex",
120
+ displayName: "GPT-5.2 Codex",
121
+ maxInputTokens: 4e5,
122
+ supportedFileTypes: ["pdf", "image"],
123
+ pricing: {
124
+ inputPerM: 1.75,
125
+ outputPerM: 14,
126
+ cacheReadPerM: 0.175,
127
+ currency: "USD",
128
+ unit: "per_million_tokens"
129
+ }
130
+ },
131
+ // GPT-5.1 series
73
132
  {
74
133
  name: "gpt-5.1-chat-latest",
75
134
  displayName: "GPT-5.1 Instant",
@@ -274,6 +333,7 @@ const LLM_REGISTRY = {
274
333
  pricing: {
275
334
  inputPerM: 2.5,
276
335
  outputPerM: 10,
336
+ cacheReadPerM: 1.25,
277
337
  currency: "USD",
278
338
  unit: "per_million_tokens"
279
339
  }
@@ -339,8 +399,9 @@ const LLM_REGISTRY = {
339
399
  models: [],
340
400
  // Empty - accepts any model name for custom endpoints
341
401
  baseURLSupport: "required",
342
- supportedFileTypes: ["pdf", "image", "audio"]
402
+ supportedFileTypes: ["pdf", "image", "audio"],
343
403
  // Allow all types for custom endpoints - user assumes responsibility for model capabilities
404
+ supportsCustomModels: true
344
405
  },
345
406
  anthropic: {
346
407
  models: [
@@ -478,6 +539,20 @@ const LLM_REGISTRY = {
478
539
  },
479
540
  google: {
480
541
  models: [
542
+ {
543
+ name: "gemini-3-flash-preview",
544
+ displayName: "Gemini 3 Flash Preview",
545
+ maxInputTokens: 1048576,
546
+ default: true,
547
+ supportedFileTypes: ["pdf", "image", "audio"],
548
+ pricing: {
549
+ inputPerM: 0.5,
550
+ outputPerM: 3,
551
+ cacheReadPerM: 0.05,
552
+ currency: "USD",
553
+ unit: "per_million_tokens"
554
+ }
555
+ },
481
556
  {
482
557
  name: "gemini-3-pro-preview",
483
558
  displayName: "Gemini 3 Pro Preview",
@@ -486,6 +561,7 @@ const LLM_REGISTRY = {
486
561
  pricing: {
487
562
  inputPerM: 2,
488
563
  outputPerM: 12,
564
+ cacheReadPerM: 0.2,
489
565
  currency: "USD",
490
566
  unit: "per_million_tokens"
491
567
  }
@@ -498,6 +574,7 @@ const LLM_REGISTRY = {
498
574
  pricing: {
499
575
  inputPerM: 2,
500
576
  outputPerM: 120,
577
+ cacheReadPerM: 0.2,
501
578
  currency: "USD",
502
579
  unit: "per_million_tokens"
503
580
  }
@@ -506,7 +583,6 @@ const LLM_REGISTRY = {
506
583
  name: "gemini-2.5-pro",
507
584
  displayName: "Gemini 2.5 Pro",
508
585
  maxInputTokens: 1048576,
509
- default: true,
510
586
  supportedFileTypes: ["pdf", "image", "audio"],
511
587
  pricing: {
512
588
  inputPerM: 1.25,
@@ -524,6 +600,7 @@ const LLM_REGISTRY = {
524
600
  pricing: {
525
601
  inputPerM: 0.3,
526
602
  outputPerM: 2.5,
603
+ cacheReadPerM: 0.03,
527
604
  currency: "USD",
528
605
  unit: "per_million_tokens"
529
606
  }
@@ -563,6 +640,7 @@ const LLM_REGISTRY = {
563
640
  pricing: {
564
641
  inputPerM: 0.075,
565
642
  outputPerM: 0.3,
643
+ cacheReadPerM: 0.01875,
566
644
  currency: "USD",
567
645
  unit: "per_million_tokens"
568
646
  }
@@ -619,6 +697,7 @@ const LLM_REGISTRY = {
619
697
  pricing: {
620
698
  inputPerM: 1,
621
699
  outputPerM: 3,
700
+ cacheReadPerM: 0.5,
622
701
  currency: "USD",
623
702
  unit: "per_million_tokens"
624
703
  }
@@ -807,8 +886,462 @@ const LLM_REGISTRY = {
807
886
  baseURLSupport: "none",
808
887
  supportedFileTypes: []
809
888
  // Cohere currently doesn't support file uploads
889
+ },
890
+ // https://openrouter.ai/docs
891
+ // OpenRouter is a unified API gateway providing access to 100+ models from various providers.
892
+ // Model validation is handled dynamically via openrouter-model-registry.ts
893
+ openrouter: {
894
+ models: [],
895
+ // Empty - accepts any model name (validated against OpenRouter's catalog)
896
+ baseURLSupport: "none",
897
+ // Fixed endpoint - baseURL auto-injected in resolver, no user override allowed
898
+ supportedFileTypes: ["pdf", "image", "audio"],
899
+ // Allow all types - user assumes responsibility for model capabilities
900
+ supportsCustomModels: true
901
+ },
902
+ // https://docs.litellm.ai/
903
+ // LiteLLM is an OpenAI-compatible proxy that unifies 100+ LLM providers.
904
+ // User must host their own LiteLLM proxy and provide the baseURL.
905
+ litellm: {
906
+ models: [],
907
+ // Empty - accepts any model name (user's proxy determines available models)
908
+ baseURLSupport: "required",
909
+ // User must provide their LiteLLM proxy URL
910
+ supportedFileTypes: ["pdf", "image", "audio"],
911
+ // Allow all types - user assumes responsibility for model capabilities
912
+ supportsCustomModels: true
913
+ },
914
+ // https://glama.ai/
915
+ // Glama is an OpenAI-compatible gateway providing unified access to multiple LLM providers.
916
+ // Fixed endpoint: https://glama.ai/api/gateway/openai/v1
917
+ glama: {
918
+ models: [],
919
+ // Empty - accepts any model name (format: provider/model e.g., openai/gpt-4o)
920
+ baseURLSupport: "none",
921
+ // Fixed endpoint - baseURL auto-injected
922
+ supportedFileTypes: ["pdf", "image", "audio"],
923
+ // Allow all types - user assumes responsibility for model capabilities
924
+ supportsCustomModels: true
925
+ },
926
+ // https://cloud.google.com/vertex-ai
927
+ // Google Vertex AI - GCP-hosted gateway for Gemini and Claude models
928
+ // Supports both Google's Gemini models and Anthropic's Claude via partnership
929
+ //
930
+ // Setup instructions:
931
+ // 1. Create a Google Cloud account and project
932
+ // 2. Enable the Vertex AI API: gcloud services enable aiplatform.googleapis.com
933
+ // 3. Enable desired Claude models (requires Anthropic Model Garden)
934
+ // 4. Install Google Cloud CLI: https://cloud.google.com/sdk/docs/install
935
+ // 5. Configure ADC: gcloud auth application-default login
936
+ // 6. Set env vars: GOOGLE_VERTEX_PROJECT (required), GOOGLE_VERTEX_LOCATION (optional)
937
+ //
938
+ // TODO: Add dynamic model fetching via publishers.models.list API
939
+ // - Requires: projectId, region, ADC auth
940
+ // - Endpoints: GET projects/{project}/locations/{location}/publishers/{google,anthropic}/models
941
+ // - Note: API doesn't return aliases (e.g., gemini-2.0-flash), only versioned IDs
942
+ // - Docs: https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.models/list
943
+ // - Models: https://cloud.google.com/vertex-ai/generative-ai/docs/models
944
+ vertex: {
945
+ models: [
946
+ // Gemini 3 models on Vertex AI (Preview)
947
+ {
948
+ name: "gemini-3-flash-preview",
949
+ displayName: "Gemini 3 Flash (Vertex)",
950
+ maxInputTokens: 1048576,
951
+ default: true,
952
+ supportedFileTypes: ["pdf", "image", "audio"],
953
+ pricing: {
954
+ inputPerM: 0.5,
955
+ outputPerM: 3,
956
+ cacheReadPerM: 0.05,
957
+ currency: "USD",
958
+ unit: "per_million_tokens"
959
+ }
960
+ },
961
+ {
962
+ name: "gemini-3-pro-preview",
963
+ displayName: "Gemini 3 Pro (Vertex)",
964
+ maxInputTokens: 1048576,
965
+ supportedFileTypes: ["pdf", "image", "audio"],
966
+ pricing: {
967
+ inputPerM: 2,
968
+ outputPerM: 12,
969
+ cacheReadPerM: 0.2,
970
+ currency: "USD",
971
+ unit: "per_million_tokens"
972
+ }
973
+ },
974
+ // Gemini 2.x models on Vertex AI
975
+ {
976
+ name: "gemini-2.5-pro",
977
+ displayName: "Gemini 2.5 Pro (Vertex)",
978
+ maxInputTokens: 1048576,
979
+ supportedFileTypes: ["pdf", "image", "audio"],
980
+ pricing: {
981
+ inputPerM: 1.25,
982
+ outputPerM: 10,
983
+ cacheReadPerM: 0.31,
984
+ currency: "USD",
985
+ unit: "per_million_tokens"
986
+ }
987
+ },
988
+ {
989
+ name: "gemini-2.5-flash",
990
+ displayName: "Gemini 2.5 Flash (Vertex)",
991
+ maxInputTokens: 1048576,
992
+ supportedFileTypes: ["pdf", "image", "audio"],
993
+ pricing: {
994
+ inputPerM: 0.15,
995
+ outputPerM: 0.6,
996
+ cacheReadPerM: 0.0375,
997
+ currency: "USD",
998
+ unit: "per_million_tokens"
999
+ }
1000
+ },
1001
+ {
1002
+ name: "gemini-2.0-flash",
1003
+ displayName: "Gemini 2.0 Flash (Vertex)",
1004
+ maxInputTokens: 1048576,
1005
+ supportedFileTypes: ["pdf", "image", "audio"],
1006
+ pricing: {
1007
+ inputPerM: 0.1,
1008
+ outputPerM: 0.4,
1009
+ cacheReadPerM: 0.025,
1010
+ currency: "USD",
1011
+ unit: "per_million_tokens"
1012
+ }
1013
+ },
1014
+ // Claude 4.5 models on Vertex AI (via Anthropic partnership)
1015
+ // Note: Claude model IDs use @ suffix format on Vertex
1016
+ {
1017
+ name: "claude-opus-4-5@20251101",
1018
+ displayName: "Claude 4.5 Opus (Vertex)",
1019
+ maxInputTokens: 2e5,
1020
+ supportedFileTypes: ["pdf", "image"],
1021
+ pricing: {
1022
+ inputPerM: 5,
1023
+ outputPerM: 25,
1024
+ cacheWritePerM: 6.25,
1025
+ cacheReadPerM: 0.5,
1026
+ currency: "USD",
1027
+ unit: "per_million_tokens"
1028
+ }
1029
+ },
1030
+ {
1031
+ name: "claude-sonnet-4-5@20250929",
1032
+ displayName: "Claude 4.5 Sonnet (Vertex)",
1033
+ maxInputTokens: 2e5,
1034
+ supportedFileTypes: ["pdf", "image"],
1035
+ pricing: {
1036
+ inputPerM: 3,
1037
+ outputPerM: 15,
1038
+ cacheWritePerM: 3.75,
1039
+ cacheReadPerM: 0.3,
1040
+ currency: "USD",
1041
+ unit: "per_million_tokens"
1042
+ }
1043
+ },
1044
+ {
1045
+ name: "claude-haiku-4-5@20251001",
1046
+ displayName: "Claude 4.5 Haiku (Vertex)",
1047
+ maxInputTokens: 2e5,
1048
+ supportedFileTypes: ["pdf", "image"],
1049
+ pricing: {
1050
+ inputPerM: 1,
1051
+ outputPerM: 5,
1052
+ cacheWritePerM: 1.25,
1053
+ cacheReadPerM: 0.1,
1054
+ currency: "USD",
1055
+ unit: "per_million_tokens"
1056
+ }
1057
+ },
1058
+ // Claude 4.1 and 4.0 models on Vertex AI
1059
+ {
1060
+ name: "claude-opus-4-1@20250805",
1061
+ displayName: "Claude 4.1 Opus (Vertex)",
1062
+ maxInputTokens: 2e5,
1063
+ supportedFileTypes: ["pdf", "image"],
1064
+ pricing: {
1065
+ inputPerM: 15,
1066
+ outputPerM: 75,
1067
+ cacheWritePerM: 18.75,
1068
+ cacheReadPerM: 1.5,
1069
+ currency: "USD",
1070
+ unit: "per_million_tokens"
1071
+ }
1072
+ },
1073
+ {
1074
+ name: "claude-opus-4@20250514",
1075
+ displayName: "Claude 4 Opus (Vertex)",
1076
+ maxInputTokens: 2e5,
1077
+ supportedFileTypes: ["pdf", "image"],
1078
+ pricing: {
1079
+ inputPerM: 15,
1080
+ outputPerM: 75,
1081
+ cacheWritePerM: 18.75,
1082
+ cacheReadPerM: 1.5,
1083
+ currency: "USD",
1084
+ unit: "per_million_tokens"
1085
+ }
1086
+ },
1087
+ {
1088
+ name: "claude-sonnet-4@20250514",
1089
+ displayName: "Claude 4 Sonnet (Vertex)",
1090
+ maxInputTokens: 2e5,
1091
+ supportedFileTypes: ["pdf", "image"],
1092
+ pricing: {
1093
+ inputPerM: 3,
1094
+ outputPerM: 15,
1095
+ cacheWritePerM: 3.75,
1096
+ cacheReadPerM: 0.3,
1097
+ currency: "USD",
1098
+ unit: "per_million_tokens"
1099
+ }
1100
+ },
1101
+ // Claude 3.x models on Vertex AI
1102
+ {
1103
+ name: "claude-3-7-sonnet@20250219",
1104
+ displayName: "Claude 3.7 Sonnet (Vertex)",
1105
+ maxInputTokens: 2e5,
1106
+ supportedFileTypes: ["pdf", "image"],
1107
+ pricing: {
1108
+ inputPerM: 3,
1109
+ outputPerM: 15,
1110
+ cacheWritePerM: 3.75,
1111
+ cacheReadPerM: 0.3,
1112
+ currency: "USD",
1113
+ unit: "per_million_tokens"
1114
+ }
1115
+ },
1116
+ {
1117
+ name: "claude-3-5-sonnet-v2@20241022",
1118
+ displayName: "Claude 3.5 Sonnet v2 (Vertex)",
1119
+ maxInputTokens: 2e5,
1120
+ supportedFileTypes: ["pdf", "image"],
1121
+ pricing: {
1122
+ inputPerM: 3,
1123
+ outputPerM: 15,
1124
+ cacheWritePerM: 3.75,
1125
+ cacheReadPerM: 0.3,
1126
+ currency: "USD",
1127
+ unit: "per_million_tokens"
1128
+ }
1129
+ },
1130
+ {
1131
+ name: "claude-3-5-haiku@20241022",
1132
+ displayName: "Claude 3.5 Haiku (Vertex)",
1133
+ maxInputTokens: 2e5,
1134
+ supportedFileTypes: ["pdf", "image"],
1135
+ pricing: {
1136
+ inputPerM: 0.8,
1137
+ outputPerM: 4,
1138
+ cacheWritePerM: 1,
1139
+ cacheReadPerM: 0.08,
1140
+ currency: "USD",
1141
+ unit: "per_million_tokens"
1142
+ }
1143
+ }
1144
+ ],
1145
+ baseURLSupport: "none",
1146
+ // Auto-constructed from projectId and region
1147
+ supportedFileTypes: ["pdf", "image", "audio"]
1148
+ },
1149
+ // Amazon Bedrock - AWS-hosted gateway for Claude, Nova, and more
1150
+ // Auth: AWS credentials (env vars) or Bedrock API key (AWS_BEARER_TOKEN_BEDROCK)
1151
+ //
1152
+ // Cross-region inference: Auto-added for anthropic.* and amazon.* models
1153
+ // supportsCustomModels: true allows users to add custom model IDs beyond the fixed list
1154
+ bedrock: {
1155
+ supportsCustomModels: true,
1156
+ models: [
1157
+ // Claude 4.5 models (latest)
1158
+ {
1159
+ name: "anthropic.claude-sonnet-4-5-20250929-v1:0",
1160
+ displayName: "Claude 4.5 Sonnet",
1161
+ maxInputTokens: 2e5,
1162
+ default: true,
1163
+ supportedFileTypes: ["pdf", "image"],
1164
+ pricing: {
1165
+ inputPerM: 3,
1166
+ outputPerM: 15,
1167
+ cacheWritePerM: 3.75,
1168
+ cacheReadPerM: 0.3,
1169
+ currency: "USD",
1170
+ unit: "per_million_tokens"
1171
+ }
1172
+ },
1173
+ {
1174
+ name: "anthropic.claude-haiku-4-5-20251001-v1:0",
1175
+ displayName: "Claude 4.5 Haiku",
1176
+ maxInputTokens: 2e5,
1177
+ supportedFileTypes: ["pdf", "image"],
1178
+ pricing: {
1179
+ inputPerM: 1,
1180
+ outputPerM: 5,
1181
+ cacheWritePerM: 1.25,
1182
+ cacheReadPerM: 0.1,
1183
+ currency: "USD",
1184
+ unit: "per_million_tokens"
1185
+ }
1186
+ },
1187
+ {
1188
+ name: "anthropic.claude-opus-4-5-20251101-v1:0",
1189
+ displayName: "Claude 4.5 Opus",
1190
+ maxInputTokens: 2e5,
1191
+ supportedFileTypes: ["pdf", "image"],
1192
+ pricing: {
1193
+ inputPerM: 5,
1194
+ outputPerM: 25,
1195
+ cacheWritePerM: 6.25,
1196
+ cacheReadPerM: 0.5,
1197
+ currency: "USD",
1198
+ unit: "per_million_tokens"
1199
+ }
1200
+ },
1201
+ // Amazon Nova models
1202
+ {
1203
+ name: "amazon.nova-premier-v1:0",
1204
+ displayName: "Nova Premier",
1205
+ maxInputTokens: 1e6,
1206
+ supportedFileTypes: ["image"],
1207
+ pricing: {
1208
+ inputPerM: 2.5,
1209
+ outputPerM: 12.5,
1210
+ currency: "USD",
1211
+ unit: "per_million_tokens"
1212
+ }
1213
+ },
1214
+ {
1215
+ name: "amazon.nova-pro-v1:0",
1216
+ displayName: "Nova Pro",
1217
+ maxInputTokens: 3e5,
1218
+ supportedFileTypes: ["pdf", "image"],
1219
+ pricing: {
1220
+ inputPerM: 0.8,
1221
+ outputPerM: 3.2,
1222
+ cacheReadPerM: 0.2,
1223
+ currency: "USD",
1224
+ unit: "per_million_tokens"
1225
+ }
1226
+ },
1227
+ {
1228
+ name: "amazon.nova-lite-v1:0",
1229
+ displayName: "Nova Lite",
1230
+ maxInputTokens: 3e5,
1231
+ supportedFileTypes: ["pdf", "image"],
1232
+ pricing: {
1233
+ inputPerM: 0.06,
1234
+ outputPerM: 0.24,
1235
+ cacheReadPerM: 0.015,
1236
+ currency: "USD",
1237
+ unit: "per_million_tokens"
1238
+ }
1239
+ },
1240
+ {
1241
+ name: "amazon.nova-micro-v1:0",
1242
+ displayName: "Nova Micro",
1243
+ maxInputTokens: 128e3,
1244
+ supportedFileTypes: [],
1245
+ pricing: {
1246
+ inputPerM: 0.035,
1247
+ outputPerM: 0.14,
1248
+ cacheReadPerM: 875e-5,
1249
+ currency: "USD",
1250
+ unit: "per_million_tokens"
1251
+ }
1252
+ },
1253
+ // OpenAI GPT-OSS
1254
+ {
1255
+ name: "openai.gpt-oss-120b-1:0",
1256
+ displayName: "GPT-OSS 120B",
1257
+ maxInputTokens: 128e3,
1258
+ supportedFileTypes: [],
1259
+ pricing: {
1260
+ inputPerM: 0.15,
1261
+ outputPerM: 0.6,
1262
+ currency: "USD",
1263
+ unit: "per_million_tokens"
1264
+ }
1265
+ },
1266
+ {
1267
+ name: "openai.gpt-oss-20b-1:0",
1268
+ displayName: "GPT-OSS 20B",
1269
+ maxInputTokens: 128e3,
1270
+ supportedFileTypes: [],
1271
+ pricing: {
1272
+ inputPerM: 0.07,
1273
+ outputPerM: 0.3,
1274
+ currency: "USD",
1275
+ unit: "per_million_tokens"
1276
+ }
1277
+ },
1278
+ // Qwen
1279
+ {
1280
+ name: "qwen.qwen3-coder-30b-a3b-v1:0",
1281
+ displayName: "Qwen3 Coder 30B",
1282
+ maxInputTokens: 262144,
1283
+ supportedFileTypes: [],
1284
+ pricing: {
1285
+ inputPerM: 0.15,
1286
+ outputPerM: 0.6,
1287
+ currency: "USD",
1288
+ unit: "per_million_tokens"
1289
+ }
1290
+ },
1291
+ {
1292
+ name: "qwen.qwen3-coder-480b-a35b-v1:0",
1293
+ displayName: "Qwen3 Coder 480B",
1294
+ maxInputTokens: 262144,
1295
+ supportedFileTypes: [],
1296
+ pricing: {
1297
+ inputPerM: 0.22,
1298
+ outputPerM: 1.8,
1299
+ currency: "USD",
1300
+ unit: "per_million_tokens"
1301
+ }
1302
+ }
1303
+ ],
1304
+ baseURLSupport: "none",
1305
+ // Auto-constructed from region
1306
+ supportedFileTypes: ["pdf", "image"]
1307
+ },
1308
+ // Native local model execution via node-llama-cpp
1309
+ // Runs GGUF models directly on the machine using Metal/CUDA/Vulkan acceleration
1310
+ // Models are downloaded from HuggingFace and stored in ~/.dexto/models/
1311
+ local: {
1312
+ models: [],
1313
+ // Populated dynamically from local model registry
1314
+ baseURLSupport: "none",
1315
+ // No external server needed
1316
+ supportedFileTypes: ["image"],
1317
+ // Vision support depends on model capabilities
1318
+ supportsCustomModels: true
1319
+ // Allow any GGUF model path
1320
+ },
1321
+ // Ollama server integration
1322
+ // Uses Ollama's OpenAI-compatible API for local model inference
1323
+ // Requires Ollama to be installed and running (default: http://localhost:11434)
1324
+ ollama: {
1325
+ models: [],
1326
+ // Populated dynamically from Ollama API
1327
+ baseURLSupport: "optional",
1328
+ // Default: http://localhost:11434, can be customized
1329
+ supportedFileTypes: ["image"],
1330
+ // Vision support depends on model
1331
+ supportsCustomModels: true
1332
+ // Accept any Ollama model name
810
1333
  }
1334
+ // TODO: Add 'dexto' provider (similar to openrouter, uses https://api.dexto.ai/v1)
811
1335
  };
1336
+ function stripBedrockRegionPrefix(model) {
1337
+ if (model.startsWith("eu.") || model.startsWith("us.")) {
1338
+ return model.slice(3);
1339
+ }
1340
+ if (model.startsWith("global.")) {
1341
+ return model.slice(7);
1342
+ }
1343
+ return model;
1344
+ }
812
1345
  function getDefaultModelForProvider(provider) {
813
1346
  const providerInfo = LLM_REGISTRY[provider];
814
1347
  return providerInfo.models.find((m) => m.default)?.name || null;
@@ -822,7 +1355,8 @@ function getSupportedModels(provider) {
822
1355
  }
823
1356
  function getMaxInputTokensForModel(provider, model, logger) {
824
1357
  const providerInfo = LLM_REGISTRY[provider];
825
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1358
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1359
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
826
1360
  if (!modelInfo) {
827
1361
  const supportedModels = getSupportedModels(provider).join(", ");
828
1362
  logger?.error(
@@ -835,13 +1369,14 @@ function getMaxInputTokensForModel(provider, model, logger) {
835
1369
  }
836
1370
  function isValidProviderModel(provider, model) {
837
1371
  const providerInfo = LLM_REGISTRY[provider];
838
- return providerInfo.models.some((m) => m.name.toLowerCase() === model.toLowerCase());
1372
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1373
+ return providerInfo.models.some((m) => m.name.toLowerCase() === normalizedModel);
839
1374
  }
840
1375
  function getProviderFromModel(model) {
841
- const lowerModel = model.toLowerCase();
1376
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
842
1377
  for (const provider of import_types.LLM_PROVIDERS) {
843
1378
  const info = LLM_REGISTRY[provider];
844
- if (info.models.some((m) => m.name.toLowerCase() === lowerModel)) {
1379
+ if (info.models.some((m) => m.name.toLowerCase() === normalizedModel)) {
845
1380
  return provider;
846
1381
  }
847
1382
  }
@@ -862,12 +1397,34 @@ function acceptsAnyModel(provider) {
862
1397
  const providerInfo = LLM_REGISTRY[provider];
863
1398
  return providerInfo.models.length === 0;
864
1399
  }
1400
+ function supportsCustomModels(provider) {
1401
+ const providerInfo = LLM_REGISTRY[provider];
1402
+ return providerInfo.supportsCustomModels === true;
1403
+ }
1404
+ const API_KEY_OPTIONAL_PROVIDERS = /* @__PURE__ */ new Set([
1405
+ "local",
1406
+ // Native node-llama-cpp execution - no auth needed
1407
+ "ollama",
1408
+ // Ollama server - no auth needed by default
1409
+ "openai-compatible",
1410
+ // vLLM, LocalAI - often no auth needed
1411
+ "litellm",
1412
+ // Self-hosted proxy - handles auth internally
1413
+ "vertex",
1414
+ // Uses Google Cloud ADC (Application Default Credentials)
1415
+ "bedrock"
1416
+ // Uses AWS credentials (access key + secret or IAM role)
1417
+ ]);
1418
+ function requiresApiKey(provider) {
1419
+ return !API_KEY_OPTIONAL_PROVIDERS.has(provider);
1420
+ }
865
1421
  function getSupportedFileTypesForModel(provider, model) {
866
1422
  const providerInfo = LLM_REGISTRY[provider];
867
1423
  if (acceptsAnyModel(provider)) {
868
1424
  return providerInfo.supportedFileTypes;
869
1425
  }
870
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1426
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1427
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
871
1428
  if (!modelInfo) {
872
1429
  throw import_errors.LLMError.unknownModel(provider, model);
873
1430
  }
@@ -946,6 +1503,19 @@ function getEffectiveMaxInputTokens(config, logger) {
946
1503
  }
947
1504
  }
948
1505
  }
1506
+ if (config.provider === "openrouter") {
1507
+ const contextLength = (0, import_openrouter_model_registry.getOpenRouterModelContextLength)(config.model);
1508
+ if (contextLength !== null) {
1509
+ logger.debug(
1510
+ `Using maxInputTokens from OpenRouter registry for ${config.model}: ${contextLength}`
1511
+ );
1512
+ return contextLength;
1513
+ }
1514
+ logger.warn(
1515
+ `OpenRouter model ${config.model} not found in cache, defaulting to ${DEFAULT_MAX_INPUT_TOKENS} tokens`
1516
+ );
1517
+ return DEFAULT_MAX_INPUT_TOKENS;
1518
+ }
949
1519
  if (config.baseURL) {
950
1520
  logger.warn(
951
1521
  `baseURL is set but maxInputTokens is missing. Defaulting to ${DEFAULT_MAX_INPUT_TOKENS}. Provide 'maxInputTokens' in configuration to avoid default fallback.`
@@ -970,6 +1540,12 @@ function getEffectiveMaxInputTokens(config, logger) {
970
1540
  return registryMaxInputTokens;
971
1541
  } catch (error) {
972
1542
  if (error instanceof import_DextoRuntimeError.DextoRuntimeError && error.code === import_error_codes.LLMErrorCode.MODEL_UNKNOWN) {
1543
+ if (supportsCustomModels(config.provider)) {
1544
+ logger.debug(
1545
+ `Custom model ${config.model} not in ${config.provider} registry, defaulting to ${DEFAULT_MAX_INPUT_TOKENS} tokens`
1546
+ );
1547
+ return DEFAULT_MAX_INPUT_TOKENS;
1548
+ }
973
1549
  logger.error(
974
1550
  `Registry lookup failed for ${config.provider}/${config.model}: ${error.message}. Effective maxInputTokens cannot be determined.`
975
1551
  );
@@ -985,7 +1561,8 @@ function getModelPricing(provider, model) {
985
1561
  if (acceptsAnyModel(provider)) {
986
1562
  return void 0;
987
1563
  }
988
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1564
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1565
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
989
1566
  return modelInfo?.pricing;
990
1567
  }
991
1568
  function getModelDisplayName(model, provider) {
@@ -999,9 +1576,23 @@ function getModelDisplayName(model, provider) {
999
1576
  if (!providerInfo || acceptsAnyModel(resolvedProvider)) {
1000
1577
  return model;
1001
1578
  }
1002
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1579
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1580
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
1003
1581
  return modelInfo?.displayName ?? model;
1004
1582
  }
1583
+ function isReasoningCapableModel(model, provider) {
1584
+ const modelLower = model.toLowerCase();
1585
+ if (modelLower.includes("codex")) {
1586
+ return true;
1587
+ }
1588
+ if (modelLower.startsWith("o1") || modelLower.startsWith("o3") || modelLower.startsWith("o4")) {
1589
+ return true;
1590
+ }
1591
+ if (modelLower.includes("gpt-5") || modelLower.includes("gpt-5.1") || modelLower.includes("gpt-5.2")) {
1592
+ return true;
1593
+ }
1594
+ return false;
1595
+ }
1005
1596
  function calculateCost(usage, pricing) {
1006
1597
  const inputCost = (usage.inputTokens ?? 0) * pricing.inputPerM / 1e6;
1007
1598
  const outputCost = (usage.outputTokens ?? 0) * pricing.outputPerM / 1e6;
@@ -1028,9 +1619,13 @@ function calculateCost(usage, pricing) {
1028
1619
  getSupportedFileTypesForModel,
1029
1620
  getSupportedModels,
1030
1621
  getSupportedProviders,
1622
+ isReasoningCapableModel,
1031
1623
  isValidProviderModel,
1032
1624
  modelSupportsFileType,
1625
+ requiresApiKey,
1033
1626
  requiresBaseURL,
1627
+ stripBedrockRegionPrefix,
1034
1628
  supportsBaseURL,
1629
+ supportsCustomModels,
1035
1630
  validateModelFileSupport
1036
1631
  });