@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
@@ -5,6 +5,7 @@ import { DextoRuntimeError } from "../errors/DextoRuntimeError.js";
5
5
  import {
6
6
  LLM_PROVIDERS
7
7
  } from "./types.js";
8
+ import { getOpenRouterModelContextLength } from "./providers/openrouter-model-registry.js";
8
9
  const MIME_TYPE_TO_FILE_TYPE = {
9
10
  "application/pdf": "pdf",
10
11
  "audio/mp3": "audio",
@@ -30,6 +31,60 @@ const DEFAULT_MAX_INPUT_TOKENS = 128e3;
30
31
  const LLM_REGISTRY = {
31
32
  openai: {
32
33
  models: [
34
+ // GPT-5.2 series (latest, released Dec 2025)
35
+ {
36
+ name: "gpt-5.2-chat-latest",
37
+ displayName: "GPT-5.2 Instant",
38
+ maxInputTokens: 4e5,
39
+ supportedFileTypes: ["pdf", "image"],
40
+ pricing: {
41
+ inputPerM: 1.75,
42
+ outputPerM: 14,
43
+ cacheReadPerM: 0.175,
44
+ currency: "USD",
45
+ unit: "per_million_tokens"
46
+ }
47
+ },
48
+ {
49
+ name: "gpt-5.2",
50
+ displayName: "GPT-5.2 Thinking",
51
+ maxInputTokens: 4e5,
52
+ supportedFileTypes: ["pdf", "image"],
53
+ pricing: {
54
+ inputPerM: 1.75,
55
+ outputPerM: 14,
56
+ cacheReadPerM: 0.175,
57
+ currency: "USD",
58
+ unit: "per_million_tokens"
59
+ }
60
+ },
61
+ {
62
+ name: "gpt-5.2-pro",
63
+ displayName: "GPT-5.2 Pro",
64
+ maxInputTokens: 4e5,
65
+ supportedFileTypes: ["pdf", "image"],
66
+ pricing: {
67
+ inputPerM: 21,
68
+ outputPerM: 168,
69
+ cacheReadPerM: 2.1,
70
+ currency: "USD",
71
+ unit: "per_million_tokens"
72
+ }
73
+ },
74
+ {
75
+ name: "gpt-5.2-codex",
76
+ displayName: "GPT-5.2 Codex",
77
+ maxInputTokens: 4e5,
78
+ supportedFileTypes: ["pdf", "image"],
79
+ pricing: {
80
+ inputPerM: 1.75,
81
+ outputPerM: 14,
82
+ cacheReadPerM: 0.175,
83
+ currency: "USD",
84
+ unit: "per_million_tokens"
85
+ }
86
+ },
87
+ // GPT-5.1 series
33
88
  {
34
89
  name: "gpt-5.1-chat-latest",
35
90
  displayName: "GPT-5.1 Instant",
@@ -234,6 +289,7 @@ const LLM_REGISTRY = {
234
289
  pricing: {
235
290
  inputPerM: 2.5,
236
291
  outputPerM: 10,
292
+ cacheReadPerM: 1.25,
237
293
  currency: "USD",
238
294
  unit: "per_million_tokens"
239
295
  }
@@ -299,8 +355,9 @@ const LLM_REGISTRY = {
299
355
  models: [],
300
356
  // Empty - accepts any model name for custom endpoints
301
357
  baseURLSupport: "required",
302
- supportedFileTypes: ["pdf", "image", "audio"]
358
+ supportedFileTypes: ["pdf", "image", "audio"],
303
359
  // Allow all types for custom endpoints - user assumes responsibility for model capabilities
360
+ supportsCustomModels: true
304
361
  },
305
362
  anthropic: {
306
363
  models: [
@@ -438,6 +495,20 @@ const LLM_REGISTRY = {
438
495
  },
439
496
  google: {
440
497
  models: [
498
+ {
499
+ name: "gemini-3-flash-preview",
500
+ displayName: "Gemini 3 Flash Preview",
501
+ maxInputTokens: 1048576,
502
+ default: true,
503
+ supportedFileTypes: ["pdf", "image", "audio"],
504
+ pricing: {
505
+ inputPerM: 0.5,
506
+ outputPerM: 3,
507
+ cacheReadPerM: 0.05,
508
+ currency: "USD",
509
+ unit: "per_million_tokens"
510
+ }
511
+ },
441
512
  {
442
513
  name: "gemini-3-pro-preview",
443
514
  displayName: "Gemini 3 Pro Preview",
@@ -446,6 +517,7 @@ const LLM_REGISTRY = {
446
517
  pricing: {
447
518
  inputPerM: 2,
448
519
  outputPerM: 12,
520
+ cacheReadPerM: 0.2,
449
521
  currency: "USD",
450
522
  unit: "per_million_tokens"
451
523
  }
@@ -458,6 +530,7 @@ const LLM_REGISTRY = {
458
530
  pricing: {
459
531
  inputPerM: 2,
460
532
  outputPerM: 120,
533
+ cacheReadPerM: 0.2,
461
534
  currency: "USD",
462
535
  unit: "per_million_tokens"
463
536
  }
@@ -466,7 +539,6 @@ const LLM_REGISTRY = {
466
539
  name: "gemini-2.5-pro",
467
540
  displayName: "Gemini 2.5 Pro",
468
541
  maxInputTokens: 1048576,
469
- default: true,
470
542
  supportedFileTypes: ["pdf", "image", "audio"],
471
543
  pricing: {
472
544
  inputPerM: 1.25,
@@ -484,6 +556,7 @@ const LLM_REGISTRY = {
484
556
  pricing: {
485
557
  inputPerM: 0.3,
486
558
  outputPerM: 2.5,
559
+ cacheReadPerM: 0.03,
487
560
  currency: "USD",
488
561
  unit: "per_million_tokens"
489
562
  }
@@ -523,6 +596,7 @@ const LLM_REGISTRY = {
523
596
  pricing: {
524
597
  inputPerM: 0.075,
525
598
  outputPerM: 0.3,
599
+ cacheReadPerM: 0.01875,
526
600
  currency: "USD",
527
601
  unit: "per_million_tokens"
528
602
  }
@@ -579,6 +653,7 @@ const LLM_REGISTRY = {
579
653
  pricing: {
580
654
  inputPerM: 1,
581
655
  outputPerM: 3,
656
+ cacheReadPerM: 0.5,
582
657
  currency: "USD",
583
658
  unit: "per_million_tokens"
584
659
  }
@@ -767,8 +842,462 @@ const LLM_REGISTRY = {
767
842
  baseURLSupport: "none",
768
843
  supportedFileTypes: []
769
844
  // Cohere currently doesn't support file uploads
845
+ },
846
+ // https://openrouter.ai/docs
847
+ // OpenRouter is a unified API gateway providing access to 100+ models from various providers.
848
+ // Model validation is handled dynamically via openrouter-model-registry.ts
849
+ openrouter: {
850
+ models: [],
851
+ // Empty - accepts any model name (validated against OpenRouter's catalog)
852
+ baseURLSupport: "none",
853
+ // Fixed endpoint - baseURL auto-injected in resolver, no user override allowed
854
+ supportedFileTypes: ["pdf", "image", "audio"],
855
+ // Allow all types - user assumes responsibility for model capabilities
856
+ supportsCustomModels: true
857
+ },
858
+ // https://docs.litellm.ai/
859
+ // LiteLLM is an OpenAI-compatible proxy that unifies 100+ LLM providers.
860
+ // User must host their own LiteLLM proxy and provide the baseURL.
861
+ litellm: {
862
+ models: [],
863
+ // Empty - accepts any model name (user's proxy determines available models)
864
+ baseURLSupport: "required",
865
+ // User must provide their LiteLLM proxy URL
866
+ supportedFileTypes: ["pdf", "image", "audio"],
867
+ // Allow all types - user assumes responsibility for model capabilities
868
+ supportsCustomModels: true
869
+ },
870
+ // https://glama.ai/
871
+ // Glama is an OpenAI-compatible gateway providing unified access to multiple LLM providers.
872
+ // Fixed endpoint: https://glama.ai/api/gateway/openai/v1
873
+ glama: {
874
+ models: [],
875
+ // Empty - accepts any model name (format: provider/model e.g., openai/gpt-4o)
876
+ baseURLSupport: "none",
877
+ // Fixed endpoint - baseURL auto-injected
878
+ supportedFileTypes: ["pdf", "image", "audio"],
879
+ // Allow all types - user assumes responsibility for model capabilities
880
+ supportsCustomModels: true
881
+ },
882
+ // https://cloud.google.com/vertex-ai
883
+ // Google Vertex AI - GCP-hosted gateway for Gemini and Claude models
884
+ // Supports both Google's Gemini models and Anthropic's Claude via partnership
885
+ //
886
+ // Setup instructions:
887
+ // 1. Create a Google Cloud account and project
888
+ // 2. Enable the Vertex AI API: gcloud services enable aiplatform.googleapis.com
889
+ // 3. Enable desired Claude models (requires Anthropic Model Garden)
890
+ // 4. Install Google Cloud CLI: https://cloud.google.com/sdk/docs/install
891
+ // 5. Configure ADC: gcloud auth application-default login
892
+ // 6. Set env vars: GOOGLE_VERTEX_PROJECT (required), GOOGLE_VERTEX_LOCATION (optional)
893
+ //
894
+ // TODO: Add dynamic model fetching via publishers.models.list API
895
+ // - Requires: projectId, region, ADC auth
896
+ // - Endpoints: GET projects/{project}/locations/{location}/publishers/{google,anthropic}/models
897
+ // - Note: API doesn't return aliases (e.g., gemini-2.0-flash), only versioned IDs
898
+ // - Docs: https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.models/list
899
+ // - Models: https://cloud.google.com/vertex-ai/generative-ai/docs/models
900
+ vertex: {
901
+ models: [
902
+ // Gemini 3 models on Vertex AI (Preview)
903
+ {
904
+ name: "gemini-3-flash-preview",
905
+ displayName: "Gemini 3 Flash (Vertex)",
906
+ maxInputTokens: 1048576,
907
+ default: true,
908
+ supportedFileTypes: ["pdf", "image", "audio"],
909
+ pricing: {
910
+ inputPerM: 0.5,
911
+ outputPerM: 3,
912
+ cacheReadPerM: 0.05,
913
+ currency: "USD",
914
+ unit: "per_million_tokens"
915
+ }
916
+ },
917
+ {
918
+ name: "gemini-3-pro-preview",
919
+ displayName: "Gemini 3 Pro (Vertex)",
920
+ maxInputTokens: 1048576,
921
+ supportedFileTypes: ["pdf", "image", "audio"],
922
+ pricing: {
923
+ inputPerM: 2,
924
+ outputPerM: 12,
925
+ cacheReadPerM: 0.2,
926
+ currency: "USD",
927
+ unit: "per_million_tokens"
928
+ }
929
+ },
930
+ // Gemini 2.x models on Vertex AI
931
+ {
932
+ name: "gemini-2.5-pro",
933
+ displayName: "Gemini 2.5 Pro (Vertex)",
934
+ maxInputTokens: 1048576,
935
+ supportedFileTypes: ["pdf", "image", "audio"],
936
+ pricing: {
937
+ inputPerM: 1.25,
938
+ outputPerM: 10,
939
+ cacheReadPerM: 0.31,
940
+ currency: "USD",
941
+ unit: "per_million_tokens"
942
+ }
943
+ },
944
+ {
945
+ name: "gemini-2.5-flash",
946
+ displayName: "Gemini 2.5 Flash (Vertex)",
947
+ maxInputTokens: 1048576,
948
+ supportedFileTypes: ["pdf", "image", "audio"],
949
+ pricing: {
950
+ inputPerM: 0.15,
951
+ outputPerM: 0.6,
952
+ cacheReadPerM: 0.0375,
953
+ currency: "USD",
954
+ unit: "per_million_tokens"
955
+ }
956
+ },
957
+ {
958
+ name: "gemini-2.0-flash",
959
+ displayName: "Gemini 2.0 Flash (Vertex)",
960
+ maxInputTokens: 1048576,
961
+ supportedFileTypes: ["pdf", "image", "audio"],
962
+ pricing: {
963
+ inputPerM: 0.1,
964
+ outputPerM: 0.4,
965
+ cacheReadPerM: 0.025,
966
+ currency: "USD",
967
+ unit: "per_million_tokens"
968
+ }
969
+ },
970
+ // Claude 4.5 models on Vertex AI (via Anthropic partnership)
971
+ // Note: Claude model IDs use @ suffix format on Vertex
972
+ {
973
+ name: "claude-opus-4-5@20251101",
974
+ displayName: "Claude 4.5 Opus (Vertex)",
975
+ maxInputTokens: 2e5,
976
+ supportedFileTypes: ["pdf", "image"],
977
+ pricing: {
978
+ inputPerM: 5,
979
+ outputPerM: 25,
980
+ cacheWritePerM: 6.25,
981
+ cacheReadPerM: 0.5,
982
+ currency: "USD",
983
+ unit: "per_million_tokens"
984
+ }
985
+ },
986
+ {
987
+ name: "claude-sonnet-4-5@20250929",
988
+ displayName: "Claude 4.5 Sonnet (Vertex)",
989
+ maxInputTokens: 2e5,
990
+ supportedFileTypes: ["pdf", "image"],
991
+ pricing: {
992
+ inputPerM: 3,
993
+ outputPerM: 15,
994
+ cacheWritePerM: 3.75,
995
+ cacheReadPerM: 0.3,
996
+ currency: "USD",
997
+ unit: "per_million_tokens"
998
+ }
999
+ },
1000
+ {
1001
+ name: "claude-haiku-4-5@20251001",
1002
+ displayName: "Claude 4.5 Haiku (Vertex)",
1003
+ maxInputTokens: 2e5,
1004
+ supportedFileTypes: ["pdf", "image"],
1005
+ pricing: {
1006
+ inputPerM: 1,
1007
+ outputPerM: 5,
1008
+ cacheWritePerM: 1.25,
1009
+ cacheReadPerM: 0.1,
1010
+ currency: "USD",
1011
+ unit: "per_million_tokens"
1012
+ }
1013
+ },
1014
+ // Claude 4.1 and 4.0 models on Vertex AI
1015
+ {
1016
+ name: "claude-opus-4-1@20250805",
1017
+ displayName: "Claude 4.1 Opus (Vertex)",
1018
+ maxInputTokens: 2e5,
1019
+ supportedFileTypes: ["pdf", "image"],
1020
+ pricing: {
1021
+ inputPerM: 15,
1022
+ outputPerM: 75,
1023
+ cacheWritePerM: 18.75,
1024
+ cacheReadPerM: 1.5,
1025
+ currency: "USD",
1026
+ unit: "per_million_tokens"
1027
+ }
1028
+ },
1029
+ {
1030
+ name: "claude-opus-4@20250514",
1031
+ displayName: "Claude 4 Opus (Vertex)",
1032
+ maxInputTokens: 2e5,
1033
+ supportedFileTypes: ["pdf", "image"],
1034
+ pricing: {
1035
+ inputPerM: 15,
1036
+ outputPerM: 75,
1037
+ cacheWritePerM: 18.75,
1038
+ cacheReadPerM: 1.5,
1039
+ currency: "USD",
1040
+ unit: "per_million_tokens"
1041
+ }
1042
+ },
1043
+ {
1044
+ name: "claude-sonnet-4@20250514",
1045
+ displayName: "Claude 4 Sonnet (Vertex)",
1046
+ maxInputTokens: 2e5,
1047
+ supportedFileTypes: ["pdf", "image"],
1048
+ pricing: {
1049
+ inputPerM: 3,
1050
+ outputPerM: 15,
1051
+ cacheWritePerM: 3.75,
1052
+ cacheReadPerM: 0.3,
1053
+ currency: "USD",
1054
+ unit: "per_million_tokens"
1055
+ }
1056
+ },
1057
+ // Claude 3.x models on Vertex AI
1058
+ {
1059
+ name: "claude-3-7-sonnet@20250219",
1060
+ displayName: "Claude 3.7 Sonnet (Vertex)",
1061
+ maxInputTokens: 2e5,
1062
+ supportedFileTypes: ["pdf", "image"],
1063
+ pricing: {
1064
+ inputPerM: 3,
1065
+ outputPerM: 15,
1066
+ cacheWritePerM: 3.75,
1067
+ cacheReadPerM: 0.3,
1068
+ currency: "USD",
1069
+ unit: "per_million_tokens"
1070
+ }
1071
+ },
1072
+ {
1073
+ name: "claude-3-5-sonnet-v2@20241022",
1074
+ displayName: "Claude 3.5 Sonnet v2 (Vertex)",
1075
+ maxInputTokens: 2e5,
1076
+ supportedFileTypes: ["pdf", "image"],
1077
+ pricing: {
1078
+ inputPerM: 3,
1079
+ outputPerM: 15,
1080
+ cacheWritePerM: 3.75,
1081
+ cacheReadPerM: 0.3,
1082
+ currency: "USD",
1083
+ unit: "per_million_tokens"
1084
+ }
1085
+ },
1086
+ {
1087
+ name: "claude-3-5-haiku@20241022",
1088
+ displayName: "Claude 3.5 Haiku (Vertex)",
1089
+ maxInputTokens: 2e5,
1090
+ supportedFileTypes: ["pdf", "image"],
1091
+ pricing: {
1092
+ inputPerM: 0.8,
1093
+ outputPerM: 4,
1094
+ cacheWritePerM: 1,
1095
+ cacheReadPerM: 0.08,
1096
+ currency: "USD",
1097
+ unit: "per_million_tokens"
1098
+ }
1099
+ }
1100
+ ],
1101
+ baseURLSupport: "none",
1102
+ // Auto-constructed from projectId and region
1103
+ supportedFileTypes: ["pdf", "image", "audio"]
1104
+ },
1105
+ // Amazon Bedrock - AWS-hosted gateway for Claude, Nova, and more
1106
+ // Auth: AWS credentials (env vars) or Bedrock API key (AWS_BEARER_TOKEN_BEDROCK)
1107
+ //
1108
+ // Cross-region inference: Auto-added for anthropic.* and amazon.* models
1109
+ // supportsCustomModels: true allows users to add custom model IDs beyond the fixed list
1110
+ bedrock: {
1111
+ supportsCustomModels: true,
1112
+ models: [
1113
+ // Claude 4.5 models (latest)
1114
+ {
1115
+ name: "anthropic.claude-sonnet-4-5-20250929-v1:0",
1116
+ displayName: "Claude 4.5 Sonnet",
1117
+ maxInputTokens: 2e5,
1118
+ default: true,
1119
+ supportedFileTypes: ["pdf", "image"],
1120
+ pricing: {
1121
+ inputPerM: 3,
1122
+ outputPerM: 15,
1123
+ cacheWritePerM: 3.75,
1124
+ cacheReadPerM: 0.3,
1125
+ currency: "USD",
1126
+ unit: "per_million_tokens"
1127
+ }
1128
+ },
1129
+ {
1130
+ name: "anthropic.claude-haiku-4-5-20251001-v1:0",
1131
+ displayName: "Claude 4.5 Haiku",
1132
+ maxInputTokens: 2e5,
1133
+ supportedFileTypes: ["pdf", "image"],
1134
+ pricing: {
1135
+ inputPerM: 1,
1136
+ outputPerM: 5,
1137
+ cacheWritePerM: 1.25,
1138
+ cacheReadPerM: 0.1,
1139
+ currency: "USD",
1140
+ unit: "per_million_tokens"
1141
+ }
1142
+ },
1143
+ {
1144
+ name: "anthropic.claude-opus-4-5-20251101-v1:0",
1145
+ displayName: "Claude 4.5 Opus",
1146
+ maxInputTokens: 2e5,
1147
+ supportedFileTypes: ["pdf", "image"],
1148
+ pricing: {
1149
+ inputPerM: 5,
1150
+ outputPerM: 25,
1151
+ cacheWritePerM: 6.25,
1152
+ cacheReadPerM: 0.5,
1153
+ currency: "USD",
1154
+ unit: "per_million_tokens"
1155
+ }
1156
+ },
1157
+ // Amazon Nova models
1158
+ {
1159
+ name: "amazon.nova-premier-v1:0",
1160
+ displayName: "Nova Premier",
1161
+ maxInputTokens: 1e6,
1162
+ supportedFileTypes: ["image"],
1163
+ pricing: {
1164
+ inputPerM: 2.5,
1165
+ outputPerM: 12.5,
1166
+ currency: "USD",
1167
+ unit: "per_million_tokens"
1168
+ }
1169
+ },
1170
+ {
1171
+ name: "amazon.nova-pro-v1:0",
1172
+ displayName: "Nova Pro",
1173
+ maxInputTokens: 3e5,
1174
+ supportedFileTypes: ["pdf", "image"],
1175
+ pricing: {
1176
+ inputPerM: 0.8,
1177
+ outputPerM: 3.2,
1178
+ cacheReadPerM: 0.2,
1179
+ currency: "USD",
1180
+ unit: "per_million_tokens"
1181
+ }
1182
+ },
1183
+ {
1184
+ name: "amazon.nova-lite-v1:0",
1185
+ displayName: "Nova Lite",
1186
+ maxInputTokens: 3e5,
1187
+ supportedFileTypes: ["pdf", "image"],
1188
+ pricing: {
1189
+ inputPerM: 0.06,
1190
+ outputPerM: 0.24,
1191
+ cacheReadPerM: 0.015,
1192
+ currency: "USD",
1193
+ unit: "per_million_tokens"
1194
+ }
1195
+ },
1196
+ {
1197
+ name: "amazon.nova-micro-v1:0",
1198
+ displayName: "Nova Micro",
1199
+ maxInputTokens: 128e3,
1200
+ supportedFileTypes: [],
1201
+ pricing: {
1202
+ inputPerM: 0.035,
1203
+ outputPerM: 0.14,
1204
+ cacheReadPerM: 875e-5,
1205
+ currency: "USD",
1206
+ unit: "per_million_tokens"
1207
+ }
1208
+ },
1209
+ // OpenAI GPT-OSS
1210
+ {
1211
+ name: "openai.gpt-oss-120b-1:0",
1212
+ displayName: "GPT-OSS 120B",
1213
+ maxInputTokens: 128e3,
1214
+ supportedFileTypes: [],
1215
+ pricing: {
1216
+ inputPerM: 0.15,
1217
+ outputPerM: 0.6,
1218
+ currency: "USD",
1219
+ unit: "per_million_tokens"
1220
+ }
1221
+ },
1222
+ {
1223
+ name: "openai.gpt-oss-20b-1:0",
1224
+ displayName: "GPT-OSS 20B",
1225
+ maxInputTokens: 128e3,
1226
+ supportedFileTypes: [],
1227
+ pricing: {
1228
+ inputPerM: 0.07,
1229
+ outputPerM: 0.3,
1230
+ currency: "USD",
1231
+ unit: "per_million_tokens"
1232
+ }
1233
+ },
1234
+ // Qwen
1235
+ {
1236
+ name: "qwen.qwen3-coder-30b-a3b-v1:0",
1237
+ displayName: "Qwen3 Coder 30B",
1238
+ maxInputTokens: 262144,
1239
+ supportedFileTypes: [],
1240
+ pricing: {
1241
+ inputPerM: 0.15,
1242
+ outputPerM: 0.6,
1243
+ currency: "USD",
1244
+ unit: "per_million_tokens"
1245
+ }
1246
+ },
1247
+ {
1248
+ name: "qwen.qwen3-coder-480b-a35b-v1:0",
1249
+ displayName: "Qwen3 Coder 480B",
1250
+ maxInputTokens: 262144,
1251
+ supportedFileTypes: [],
1252
+ pricing: {
1253
+ inputPerM: 0.22,
1254
+ outputPerM: 1.8,
1255
+ currency: "USD",
1256
+ unit: "per_million_tokens"
1257
+ }
1258
+ }
1259
+ ],
1260
+ baseURLSupport: "none",
1261
+ // Auto-constructed from region
1262
+ supportedFileTypes: ["pdf", "image"]
1263
+ },
1264
+ // Native local model execution via node-llama-cpp
1265
+ // Runs GGUF models directly on the machine using Metal/CUDA/Vulkan acceleration
1266
+ // Models are downloaded from HuggingFace and stored in ~/.dexto/models/
1267
+ local: {
1268
+ models: [],
1269
+ // Populated dynamically from local model registry
1270
+ baseURLSupport: "none",
1271
+ // No external server needed
1272
+ supportedFileTypes: ["image"],
1273
+ // Vision support depends on model capabilities
1274
+ supportsCustomModels: true
1275
+ // Allow any GGUF model path
1276
+ },
1277
+ // Ollama server integration
1278
+ // Uses Ollama's OpenAI-compatible API for local model inference
1279
+ // Requires Ollama to be installed and running (default: http://localhost:11434)
1280
+ ollama: {
1281
+ models: [],
1282
+ // Populated dynamically from Ollama API
1283
+ baseURLSupport: "optional",
1284
+ // Default: http://localhost:11434, can be customized
1285
+ supportedFileTypes: ["image"],
1286
+ // Vision support depends on model
1287
+ supportsCustomModels: true
1288
+ // Accept any Ollama model name
770
1289
  }
1290
+ // TODO: Add 'dexto' provider (similar to openrouter, uses https://api.dexto.ai/v1)
771
1291
  };
1292
+ function stripBedrockRegionPrefix(model) {
1293
+ if (model.startsWith("eu.") || model.startsWith("us.")) {
1294
+ return model.slice(3);
1295
+ }
1296
+ if (model.startsWith("global.")) {
1297
+ return model.slice(7);
1298
+ }
1299
+ return model;
1300
+ }
772
1301
  function getDefaultModelForProvider(provider) {
773
1302
  const providerInfo = LLM_REGISTRY[provider];
774
1303
  return providerInfo.models.find((m) => m.default)?.name || null;
@@ -782,7 +1311,8 @@ function getSupportedModels(provider) {
782
1311
  }
783
1312
  function getMaxInputTokensForModel(provider, model, logger) {
784
1313
  const providerInfo = LLM_REGISTRY[provider];
785
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1314
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1315
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
786
1316
  if (!modelInfo) {
787
1317
  const supportedModels = getSupportedModels(provider).join(", ");
788
1318
  logger?.error(
@@ -795,13 +1325,14 @@ function getMaxInputTokensForModel(provider, model, logger) {
795
1325
  }
796
1326
  function isValidProviderModel(provider, model) {
797
1327
  const providerInfo = LLM_REGISTRY[provider];
798
- return providerInfo.models.some((m) => m.name.toLowerCase() === model.toLowerCase());
1328
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1329
+ return providerInfo.models.some((m) => m.name.toLowerCase() === normalizedModel);
799
1330
  }
800
1331
  function getProviderFromModel(model) {
801
- const lowerModel = model.toLowerCase();
1332
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
802
1333
  for (const provider of LLM_PROVIDERS) {
803
1334
  const info = LLM_REGISTRY[provider];
804
- if (info.models.some((m) => m.name.toLowerCase() === lowerModel)) {
1335
+ if (info.models.some((m) => m.name.toLowerCase() === normalizedModel)) {
805
1336
  return provider;
806
1337
  }
807
1338
  }
@@ -822,12 +1353,34 @@ function acceptsAnyModel(provider) {
822
1353
  const providerInfo = LLM_REGISTRY[provider];
823
1354
  return providerInfo.models.length === 0;
824
1355
  }
1356
+ function supportsCustomModels(provider) {
1357
+ const providerInfo = LLM_REGISTRY[provider];
1358
+ return providerInfo.supportsCustomModels === true;
1359
+ }
1360
+ const API_KEY_OPTIONAL_PROVIDERS = /* @__PURE__ */ new Set([
1361
+ "local",
1362
+ // Native node-llama-cpp execution - no auth needed
1363
+ "ollama",
1364
+ // Ollama server - no auth needed by default
1365
+ "openai-compatible",
1366
+ // vLLM, LocalAI - often no auth needed
1367
+ "litellm",
1368
+ // Self-hosted proxy - handles auth internally
1369
+ "vertex",
1370
+ // Uses Google Cloud ADC (Application Default Credentials)
1371
+ "bedrock"
1372
+ // Uses AWS credentials (access key + secret or IAM role)
1373
+ ]);
1374
+ function requiresApiKey(provider) {
1375
+ return !API_KEY_OPTIONAL_PROVIDERS.has(provider);
1376
+ }
825
1377
  function getSupportedFileTypesForModel(provider, model) {
826
1378
  const providerInfo = LLM_REGISTRY[provider];
827
1379
  if (acceptsAnyModel(provider)) {
828
1380
  return providerInfo.supportedFileTypes;
829
1381
  }
830
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1382
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1383
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
831
1384
  if (!modelInfo) {
832
1385
  throw LLMError.unknownModel(provider, model);
833
1386
  }
@@ -906,6 +1459,19 @@ function getEffectiveMaxInputTokens(config, logger) {
906
1459
  }
907
1460
  }
908
1461
  }
1462
+ if (config.provider === "openrouter") {
1463
+ const contextLength = getOpenRouterModelContextLength(config.model);
1464
+ if (contextLength !== null) {
1465
+ logger.debug(
1466
+ `Using maxInputTokens from OpenRouter registry for ${config.model}: ${contextLength}`
1467
+ );
1468
+ return contextLength;
1469
+ }
1470
+ logger.warn(
1471
+ `OpenRouter model ${config.model} not found in cache, defaulting to ${DEFAULT_MAX_INPUT_TOKENS} tokens`
1472
+ );
1473
+ return DEFAULT_MAX_INPUT_TOKENS;
1474
+ }
909
1475
  if (config.baseURL) {
910
1476
  logger.warn(
911
1477
  `baseURL is set but maxInputTokens is missing. Defaulting to ${DEFAULT_MAX_INPUT_TOKENS}. Provide 'maxInputTokens' in configuration to avoid default fallback.`
@@ -930,6 +1496,12 @@ function getEffectiveMaxInputTokens(config, logger) {
930
1496
  return registryMaxInputTokens;
931
1497
  } catch (error) {
932
1498
  if (error instanceof DextoRuntimeError && error.code === LLMErrorCode.MODEL_UNKNOWN) {
1499
+ if (supportsCustomModels(config.provider)) {
1500
+ logger.debug(
1501
+ `Custom model ${config.model} not in ${config.provider} registry, defaulting to ${DEFAULT_MAX_INPUT_TOKENS} tokens`
1502
+ );
1503
+ return DEFAULT_MAX_INPUT_TOKENS;
1504
+ }
933
1505
  logger.error(
934
1506
  `Registry lookup failed for ${config.provider}/${config.model}: ${error.message}. Effective maxInputTokens cannot be determined.`
935
1507
  );
@@ -945,7 +1517,8 @@ function getModelPricing(provider, model) {
945
1517
  if (acceptsAnyModel(provider)) {
946
1518
  return void 0;
947
1519
  }
948
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1520
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1521
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
949
1522
  return modelInfo?.pricing;
950
1523
  }
951
1524
  function getModelDisplayName(model, provider) {
@@ -959,9 +1532,23 @@ function getModelDisplayName(model, provider) {
959
1532
  if (!providerInfo || acceptsAnyModel(resolvedProvider)) {
960
1533
  return model;
961
1534
  }
962
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1535
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1536
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
963
1537
  return modelInfo?.displayName ?? model;
964
1538
  }
1539
+ function isReasoningCapableModel(model, provider) {
1540
+ const modelLower = model.toLowerCase();
1541
+ if (modelLower.includes("codex")) {
1542
+ return true;
1543
+ }
1544
+ if (modelLower.startsWith("o1") || modelLower.startsWith("o3") || modelLower.startsWith("o4")) {
1545
+ return true;
1546
+ }
1547
+ if (modelLower.includes("gpt-5") || modelLower.includes("gpt-5.1") || modelLower.includes("gpt-5.2")) {
1548
+ return true;
1549
+ }
1550
+ return false;
1551
+ }
965
1552
  function calculateCost(usage, pricing) {
966
1553
  const inputCost = (usage.inputTokens ?? 0) * pricing.inputPerM / 1e6;
967
1554
  const outputCost = (usage.outputTokens ?? 0) * pricing.outputPerM / 1e6;
@@ -987,9 +1574,13 @@ export {
987
1574
  getSupportedFileTypesForModel,
988
1575
  getSupportedModels,
989
1576
  getSupportedProviders,
1577
+ isReasoningCapableModel,
990
1578
  isValidProviderModel,
991
1579
  modelSupportsFileType,
1580
+ requiresApiKey,
992
1581
  requiresBaseURL,
1582
+ stripBedrockRegionPrefix,
993
1583
  supportsBaseURL,
1584
+ supportsCustomModels,
994
1585
  validateModelFileSupport
995
1586
  };