@dexto/core 1.4.0 → 1.5.0

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 (497) 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 +5911 -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 +2 -2
  89. package/dist/events/index.d.ts +16 -16
  90. package/dist/events/index.d.ts.map +1 -1
  91. package/dist/events/index.js +2 -2
  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/stream-processor.cjs +11 -3
  127. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  128. package/dist/llm/executor/stream-processor.js +11 -3
  129. package/dist/llm/executor/turn-executor.cjs +50 -23
  130. package/dist/llm/executor/turn-executor.d.ts +6 -5
  131. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  132. package/dist/llm/executor/turn-executor.js +50 -23
  133. package/dist/llm/formatters/vercel.cjs +6 -2
  134. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  135. package/dist/llm/formatters/vercel.js +6 -2
  136. package/dist/llm/index.cjs +18 -1
  137. package/dist/llm/index.d.ts +2 -0
  138. package/dist/llm/index.d.ts.map +1 -1
  139. package/dist/llm/index.js +14 -0
  140. package/dist/llm/providers/local/ai-sdk-adapter.cjs +308 -0
  141. package/dist/llm/providers/local/ai-sdk-adapter.d.ts +29 -0
  142. package/dist/llm/providers/local/ai-sdk-adapter.d.ts.map +1 -0
  143. package/dist/llm/providers/local/ai-sdk-adapter.js +278 -0
  144. package/dist/llm/providers/local/downloader.cjs +291 -0
  145. package/dist/llm/providers/local/downloader.d.ts +82 -0
  146. package/dist/llm/providers/local/downloader.d.ts.map +1 -0
  147. package/dist/llm/providers/local/downloader.js +251 -0
  148. package/dist/llm/providers/local/error-codes.cjs +57 -0
  149. package/dist/llm/providers/local/error-codes.d.ts +66 -0
  150. package/dist/llm/providers/local/error-codes.d.ts.map +1 -0
  151. package/dist/llm/providers/local/error-codes.js +34 -0
  152. package/dist/llm/providers/local/errors.cjs +240 -0
  153. package/dist/llm/providers/local/errors.d.ts +31 -0
  154. package/dist/llm/providers/local/errors.d.ts.map +1 -0
  155. package/dist/llm/providers/local/errors.js +217 -0
  156. package/dist/llm/providers/local/gpu-detector.cjs +214 -0
  157. package/dist/llm/providers/local/gpu-detector.d.ts +28 -0
  158. package/dist/llm/providers/local/gpu-detector.d.ts.map +1 -0
  159. package/dist/llm/providers/local/gpu-detector.js +178 -0
  160. package/dist/llm/providers/local/index.cjs +147 -0
  161. package/dist/llm/providers/local/index.d.ts +21 -0
  162. package/dist/llm/providers/local/index.d.ts.map +1 -0
  163. package/dist/llm/providers/local/index.js +126 -0
  164. package/dist/llm/providers/local/node-llama-provider.cjs +216 -0
  165. package/dist/llm/providers/local/node-llama-provider.d.ts +90 -0
  166. package/dist/llm/providers/local/node-llama-provider.d.ts.map +1 -0
  167. package/dist/llm/providers/local/node-llama-provider.js +176 -0
  168. package/dist/llm/providers/local/ollama-provider.cjs +230 -0
  169. package/dist/llm/providers/local/ollama-provider.d.ts +70 -0
  170. package/dist/llm/providers/local/ollama-provider.d.ts.map +1 -0
  171. package/dist/llm/providers/local/ollama-provider.js +198 -0
  172. package/dist/llm/providers/local/registry.cjs +343 -0
  173. package/dist/llm/providers/local/registry.d.ts +51 -0
  174. package/dist/llm/providers/local/registry.d.ts.map +1 -0
  175. package/dist/llm/providers/local/registry.js +312 -0
  176. package/dist/llm/providers/local/schemas.cjs +169 -0
  177. package/dist/llm/providers/local/schemas.d.ts +395 -0
  178. package/dist/llm/providers/local/schemas.d.ts.map +1 -0
  179. package/dist/llm/providers/local/schemas.js +133 -0
  180. package/dist/llm/providers/local/types.cjs +16 -0
  181. package/dist/llm/providers/local/types.d.ts +219 -0
  182. package/dist/llm/providers/local/types.d.ts.map +1 -0
  183. package/dist/llm/providers/local/types.js +0 -0
  184. package/dist/llm/providers/openrouter-model-registry.cjs +350 -0
  185. package/dist/llm/providers/openrouter-model-registry.d.ts +120 -0
  186. package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -0
  187. package/dist/llm/providers/openrouter-model-registry.js +309 -0
  188. package/dist/llm/registry.cjs +535 -9
  189. package/dist/llm/registry.d.ts +26 -0
  190. package/dist/llm/registry.d.ts.map +1 -1
  191. package/dist/llm/registry.js +532 -9
  192. package/dist/llm/resolver.cjs +63 -5
  193. package/dist/llm/resolver.d.ts +3 -3
  194. package/dist/llm/resolver.d.ts.map +1 -1
  195. package/dist/llm/resolver.js +69 -6
  196. package/dist/llm/schemas.cjs +90 -80
  197. package/dist/llm/schemas.d.ts +158 -22
  198. package/dist/llm/schemas.d.ts.map +1 -1
  199. package/dist/llm/schemas.js +90 -80
  200. package/dist/llm/services/factory.cjs +87 -13
  201. package/dist/llm/services/factory.d.ts +4 -1
  202. package/dist/llm/services/factory.d.ts.map +1 -1
  203. package/dist/llm/services/factory.js +85 -12
  204. package/dist/llm/services/test-utils.integration.cjs +22 -2
  205. package/dist/llm/services/test-utils.integration.d.ts +7 -1
  206. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  207. package/dist/llm/services/test-utils.integration.js +26 -3
  208. package/dist/llm/services/vercel.cjs +5 -2
  209. package/dist/llm/services/vercel.d.ts +3 -2
  210. package/dist/llm/services/vercel.d.ts.map +1 -1
  211. package/dist/llm/services/vercel.js +5 -2
  212. package/dist/llm/types.cjs +11 -1
  213. package/dist/llm/types.d.ts +1 -1
  214. package/dist/llm/types.d.ts.map +1 -1
  215. package/dist/llm/types.js +11 -1
  216. package/dist/mcp/manager.cjs +8 -0
  217. package/dist/mcp/manager.d.ts +17 -0
  218. package/dist/mcp/manager.d.ts.map +1 -1
  219. package/dist/mcp/manager.js +8 -0
  220. package/dist/mcp/mcp-client.cjs +0 -3
  221. package/dist/mcp/mcp-client.d.ts.map +1 -1
  222. package/dist/mcp/mcp-client.js +0 -3
  223. package/dist/memory/schemas.d.ts +1 -1
  224. package/dist/plugins/error-codes.cjs +3 -0
  225. package/dist/plugins/error-codes.d.ts +7 -1
  226. package/dist/plugins/error-codes.d.ts.map +1 -1
  227. package/dist/plugins/error-codes.js +3 -0
  228. package/dist/plugins/index.cjs +7 -0
  229. package/dist/plugins/index.d.ts +4 -2
  230. package/dist/plugins/index.d.ts.map +1 -1
  231. package/dist/plugins/index.js +6 -1
  232. package/dist/plugins/manager.cjs +92 -7
  233. package/dist/plugins/manager.d.ts +10 -3
  234. package/dist/plugins/manager.d.ts.map +1 -1
  235. package/dist/plugins/manager.js +92 -7
  236. package/dist/plugins/registry.cjs +63 -0
  237. package/dist/plugins/registry.d.ts +101 -0
  238. package/dist/plugins/registry.d.ts.map +1 -0
  239. package/dist/plugins/registry.js +39 -0
  240. package/dist/plugins/schemas.cjs +17 -5
  241. package/dist/plugins/schemas.d.ts +62 -5
  242. package/dist/plugins/schemas.d.ts.map +1 -1
  243. package/dist/plugins/schemas.js +15 -4
  244. package/dist/providers/base-registry.cjs +147 -0
  245. package/dist/providers/base-registry.d.ts +147 -0
  246. package/dist/providers/base-registry.d.ts.map +1 -0
  247. package/dist/providers/base-registry.js +123 -0
  248. package/dist/providers/discovery.cjs +95 -0
  249. package/dist/providers/discovery.d.ts +94 -0
  250. package/dist/providers/discovery.d.ts.map +1 -0
  251. package/dist/providers/discovery.js +70 -0
  252. package/dist/providers/index.cjs +24 -0
  253. package/dist/providers/index.d.ts +32 -0
  254. package/dist/providers/index.d.ts.map +1 -0
  255. package/dist/providers/index.js +2 -0
  256. package/dist/resources/reference-parser.cjs +3 -3
  257. package/dist/resources/reference-parser.d.ts.map +1 -1
  258. package/dist/resources/reference-parser.js +3 -3
  259. package/dist/session/chat-session.cjs +20 -3
  260. package/dist/session/chat-session.d.ts.map +1 -1
  261. package/dist/session/chat-session.js +21 -4
  262. package/dist/storage/blob/factory.cjs +8 -11
  263. package/dist/storage/blob/factory.d.ts +32 -6
  264. package/dist/storage/blob/factory.d.ts.map +1 -1
  265. package/dist/storage/blob/factory.js +8 -11
  266. package/dist/storage/blob/index.cjs +56 -0
  267. package/dist/storage/blob/index.d.ts +45 -0
  268. package/dist/storage/blob/index.d.ts.map +1 -0
  269. package/dist/storage/blob/index.js +30 -0
  270. package/dist/storage/blob/provider.cjs +16 -0
  271. package/dist/storage/blob/provider.d.ts +50 -0
  272. package/dist/storage/blob/provider.d.ts.map +1 -0
  273. package/dist/storage/blob/provider.js +0 -0
  274. package/dist/storage/blob/providers/index.cjs +31 -0
  275. package/dist/storage/blob/providers/index.d.ts +8 -0
  276. package/dist/storage/blob/providers/index.d.ts.map +1 -0
  277. package/dist/storage/blob/providers/index.js +7 -0
  278. package/dist/storage/blob/providers/local.cjs +39 -0
  279. package/dist/storage/blob/providers/local.d.ts +17 -0
  280. package/dist/storage/blob/providers/local.d.ts.map +1 -0
  281. package/dist/storage/blob/providers/local.js +16 -0
  282. package/dist/storage/blob/providers/memory.cjs +39 -0
  283. package/dist/storage/blob/providers/memory.d.ts +17 -0
  284. package/dist/storage/blob/providers/memory.d.ts.map +1 -0
  285. package/dist/storage/blob/providers/memory.js +16 -0
  286. package/dist/storage/blob/registry.cjs +50 -0
  287. package/dist/storage/blob/registry.d.ts +42 -0
  288. package/dist/storage/blob/registry.d.ts.map +1 -0
  289. package/dist/storage/blob/registry.js +26 -0
  290. package/dist/storage/blob/schemas.cjs +9 -12
  291. package/dist/storage/blob/schemas.d.ts +39 -34
  292. package/dist/storage/blob/schemas.d.ts.map +1 -1
  293. package/dist/storage/blob/schemas.js +6 -11
  294. package/dist/storage/cache/factory.cjs +8 -36
  295. package/dist/storage/cache/factory.d.ts +32 -7
  296. package/dist/storage/cache/factory.d.ts.map +1 -1
  297. package/dist/storage/cache/factory.js +8 -26
  298. package/dist/storage/cache/index.cjs +53 -0
  299. package/dist/storage/cache/index.d.ts +44 -0
  300. package/dist/storage/cache/index.d.ts.map +1 -0
  301. package/dist/storage/cache/index.js +28 -0
  302. package/dist/storage/cache/provider.cjs +16 -0
  303. package/dist/storage/cache/provider.d.ts +56 -0
  304. package/dist/storage/cache/provider.d.ts.map +1 -0
  305. package/dist/storage/cache/provider.js +0 -0
  306. package/dist/storage/cache/providers/index.cjs +31 -0
  307. package/dist/storage/cache/providers/index.d.ts +8 -0
  308. package/dist/storage/cache/providers/index.d.ts.map +1 -0
  309. package/dist/storage/cache/providers/index.js +7 -0
  310. package/dist/storage/cache/providers/memory.cjs +40 -0
  311. package/dist/storage/cache/providers/memory.d.ts +17 -0
  312. package/dist/storage/cache/providers/memory.d.ts.map +1 -0
  313. package/dist/storage/cache/providers/memory.js +17 -0
  314. package/dist/storage/cache/providers/redis.cjs +66 -0
  315. package/dist/storage/cache/providers/redis.d.ts +20 -0
  316. package/dist/storage/cache/providers/redis.d.ts.map +1 -0
  317. package/dist/storage/cache/providers/redis.js +33 -0
  318. package/dist/storage/cache/registry.cjs +50 -0
  319. package/dist/storage/cache/registry.d.ts +42 -0
  320. package/dist/storage/cache/registry.d.ts.map +1 -0
  321. package/dist/storage/cache/registry.js +26 -0
  322. package/dist/storage/cache/schemas.cjs +6 -2
  323. package/dist/storage/cache/schemas.d.ts +2 -3
  324. package/dist/storage/cache/schemas.d.ts.map +1 -1
  325. package/dist/storage/cache/schemas.js +3 -1
  326. package/dist/storage/database/factory.cjs +8 -47
  327. package/dist/storage/database/factory.d.ts +34 -8
  328. package/dist/storage/database/factory.d.ts.map +1 -1
  329. package/dist/storage/database/factory.js +8 -37
  330. package/dist/storage/database/index.cjs +58 -0
  331. package/dist/storage/database/index.d.ts +45 -0
  332. package/dist/storage/database/index.d.ts.map +1 -0
  333. package/dist/storage/database/index.js +37 -0
  334. package/dist/storage/database/provider.cjs +16 -0
  335. package/dist/storage/database/provider.d.ts +56 -0
  336. package/dist/storage/database/provider.d.ts.map +1 -0
  337. package/dist/storage/database/provider.js +0 -0
  338. package/dist/storage/database/providers/index.cjs +34 -0
  339. package/dist/storage/database/providers/index.d.ts +9 -0
  340. package/dist/storage/database/providers/index.d.ts.map +1 -0
  341. package/dist/storage/database/providers/index.js +9 -0
  342. package/dist/storage/database/providers/memory.cjs +40 -0
  343. package/dist/storage/database/providers/memory.d.ts +16 -0
  344. package/dist/storage/database/providers/memory.d.ts.map +1 -0
  345. package/dist/storage/database/providers/memory.js +17 -0
  346. package/dist/storage/database/providers/postgres.cjs +62 -0
  347. package/dist/storage/database/providers/postgres.d.ts +19 -0
  348. package/dist/storage/database/providers/postgres.d.ts.map +1 -0
  349. package/dist/storage/database/providers/postgres.js +29 -0
  350. package/dist/storage/database/providers/sqlite.cjs +66 -0
  351. package/dist/storage/database/providers/sqlite.d.ts +20 -0
  352. package/dist/storage/database/providers/sqlite.d.ts.map +1 -0
  353. package/dist/storage/database/providers/sqlite.js +33 -0
  354. package/dist/storage/database/registry.cjs +50 -0
  355. package/dist/storage/database/registry.d.ts +42 -0
  356. package/dist/storage/database/registry.d.ts.map +1 -0
  357. package/dist/storage/database/registry.js +26 -0
  358. package/dist/storage/database/schemas.cjs +8 -2
  359. package/dist/storage/database/schemas.d.ts +3 -4
  360. package/dist/storage/database/schemas.d.ts.map +1 -1
  361. package/dist/storage/database/schemas.js +4 -1
  362. package/dist/storage/error-codes.cjs +6 -0
  363. package/dist/storage/error-codes.d.ts +7 -1
  364. package/dist/storage/error-codes.d.ts.map +1 -1
  365. package/dist/storage/error-codes.js +6 -0
  366. package/dist/storage/errors.cjs +80 -0
  367. package/dist/storage/errors.d.ts +24 -0
  368. package/dist/storage/errors.d.ts.map +1 -1
  369. package/dist/storage/errors.js +80 -0
  370. package/dist/storage/index.cjs +47 -4
  371. package/dist/storage/index.d.ts +34 -8
  372. package/dist/storage/index.d.ts.map +1 -1
  373. package/dist/storage/index.js +32 -3
  374. package/dist/storage/schemas.cjs +4 -0
  375. package/dist/storage/schemas.d.ts +17 -50
  376. package/dist/storage/schemas.d.ts.map +1 -1
  377. package/dist/storage/schemas.js +5 -1
  378. package/dist/storage/storage-manager.cjs +6 -6
  379. package/dist/storage/storage-manager.d.ts.map +1 -1
  380. package/dist/storage/storage-manager.js +3 -3
  381. package/dist/systemPrompt/in-built-prompts.cjs +7 -6
  382. package/dist/systemPrompt/in-built-prompts.d.ts +2 -2
  383. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
  384. package/dist/systemPrompt/in-built-prompts.js +6 -5
  385. package/dist/systemPrompt/registry.cjs +2 -2
  386. package/dist/systemPrompt/registry.d.ts +1 -1
  387. package/dist/systemPrompt/registry.d.ts.map +1 -1
  388. package/dist/systemPrompt/registry.js +2 -2
  389. package/dist/systemPrompt/schemas.cjs +2 -2
  390. package/dist/systemPrompt/schemas.d.ts +13 -13
  391. package/dist/systemPrompt/schemas.js +2 -2
  392. package/dist/tools/custom-tool-registry.cjs +64 -0
  393. package/dist/tools/custom-tool-registry.d.ts +120 -0
  394. package/dist/tools/custom-tool-registry.d.ts.map +1 -0
  395. package/dist/tools/custom-tool-registry.js +40 -0
  396. package/dist/tools/custom-tool-schema-registry.cjs +164 -0
  397. package/dist/tools/custom-tool-schema-registry.d.ts +86 -0
  398. package/dist/tools/custom-tool-schema-registry.d.ts.map +1 -0
  399. package/dist/tools/custom-tool-schema-registry.js +140 -0
  400. package/dist/tools/error-codes.cjs +3 -0
  401. package/dist/tools/error-codes.d.ts +4 -1
  402. package/dist/tools/error-codes.d.ts.map +1 -1
  403. package/dist/tools/error-codes.js +3 -0
  404. package/dist/tools/errors.cjs +41 -0
  405. package/dist/tools/errors.d.ts +17 -0
  406. package/dist/tools/errors.d.ts.map +1 -1
  407. package/dist/tools/errors.js +41 -0
  408. package/dist/tools/index.cjs +13 -1
  409. package/dist/tools/index.d.ts +4 -0
  410. package/dist/tools/index.d.ts.map +1 -1
  411. package/dist/tools/index.js +11 -1
  412. package/dist/tools/internal-tools/constants.cjs +3 -9
  413. package/dist/tools/internal-tools/constants.d.ts +1 -1
  414. package/dist/tools/internal-tools/constants.d.ts.map +1 -1
  415. package/dist/tools/internal-tools/constants.js +3 -9
  416. package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +113 -0
  417. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +30 -0
  418. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +1 -0
  419. package/dist/tools/internal-tools/implementations/get-resource-tool.js +90 -0
  420. package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +91 -0
  421. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +24 -0
  422. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +1 -0
  423. package/dist/tools/internal-tools/implementations/list-resources-tool.js +68 -0
  424. package/dist/tools/internal-tools/provider.cjs +150 -23
  425. package/dist/tools/internal-tools/provider.d.ts +55 -10
  426. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  427. package/dist/tools/internal-tools/provider.js +150 -23
  428. package/dist/tools/internal-tools/registry.cjs +18 -43
  429. package/dist/tools/internal-tools/registry.d.ts +4 -4
  430. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  431. package/dist/tools/internal-tools/registry.js +18 -43
  432. package/dist/tools/schemas.cjs +20 -0
  433. package/dist/tools/schemas.d.ts +43 -1
  434. package/dist/tools/schemas.d.ts.map +1 -1
  435. package/dist/tools/schemas.js +16 -0
  436. package/dist/tools/tool-manager.cjs +140 -13
  437. package/dist/tools/tool-manager.d.ts +22 -3
  438. package/dist/tools/tool-manager.d.ts.map +1 -1
  439. package/dist/tools/tool-manager.js +140 -13
  440. package/dist/tools/types.d.ts +43 -0
  441. package/dist/tools/types.d.ts.map +1 -1
  442. package/dist/utils/api-key-resolver.cjs +19 -1
  443. package/dist/utils/api-key-resolver.d.ts.map +1 -1
  444. package/dist/utils/api-key-resolver.js +19 -1
  445. package/dist/utils/index.cjs +0 -2
  446. package/dist/utils/index.d.ts +0 -1
  447. package/dist/utils/index.d.ts.map +1 -1
  448. package/dist/utils/index.js +0 -1
  449. package/dist/utils/redactor.cjs +18 -3
  450. package/dist/utils/redactor.d.ts +0 -7
  451. package/dist/utils/redactor.d.ts.map +1 -1
  452. package/dist/utils/redactor.js +18 -3
  453. package/dist/utils/service-initializer.cjs +9 -35
  454. package/dist/utils/service-initializer.d.ts.map +1 -1
  455. package/dist/utils/service-initializer.js +9 -35
  456. package/package.json +5 -2
  457. package/dist/context/compression/overflow.d.ts.map +0 -1
  458. package/dist/context/compression/reactive-overflow.d.ts.map +0 -1
  459. package/dist/context/compression/types.d.ts.map +0 -1
  460. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +0 -130
  461. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +0 -13
  462. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +0 -1
  463. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +0 -97
  464. package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +0 -49
  465. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +0 -12
  466. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +0 -1
  467. package/dist/tools/internal-tools/implementations/bash-output-tool.js +0 -26
  468. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +0 -127
  469. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +0 -12
  470. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +0 -1
  471. package/dist/tools/internal-tools/implementations/edit-file-tool.js +0 -104
  472. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +0 -70
  473. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +0 -12
  474. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +0 -1
  475. package/dist/tools/internal-tools/implementations/glob-files-tool.js +0 -47
  476. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +0 -86
  477. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +0 -12
  478. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +0 -1
  479. package/dist/tools/internal-tools/implementations/grep-content-tool.js +0 -63
  480. package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +0 -47
  481. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +0 -12
  482. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +0 -1
  483. package/dist/tools/internal-tools/implementations/kill-process-tool.js +0 -24
  484. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +0 -63
  485. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +0 -12
  486. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +0 -1
  487. package/dist/tools/internal-tools/implementations/read-file-tool.js +0 -40
  488. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +0 -124
  489. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +0 -12
  490. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +0 -1
  491. package/dist/tools/internal-tools/implementations/write-file-tool.js +0 -103
  492. package/dist/utils/env-file.cjs +0 -118
  493. package/dist/utils/env-file.d.ts +0 -5
  494. package/dist/utils/env-file.d.ts.map +0 -1
  495. package/dist/utils/env-file.js +0 -85
  496. /package/dist/context/{compression/types.js → compaction/provider.js} +0 -0
  497. /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",
@@ -234,6 +235,7 @@ const LLM_REGISTRY = {
234
235
  pricing: {
235
236
  inputPerM: 2.5,
236
237
  outputPerM: 10,
238
+ cacheReadPerM: 1.25,
237
239
  currency: "USD",
238
240
  unit: "per_million_tokens"
239
241
  }
@@ -299,8 +301,9 @@ const LLM_REGISTRY = {
299
301
  models: [],
300
302
  // Empty - accepts any model name for custom endpoints
301
303
  baseURLSupport: "required",
302
- supportedFileTypes: ["pdf", "image", "audio"]
304
+ supportedFileTypes: ["pdf", "image", "audio"],
303
305
  // Allow all types for custom endpoints - user assumes responsibility for model capabilities
306
+ supportsCustomModels: true
304
307
  },
305
308
  anthropic: {
306
309
  models: [
@@ -438,6 +441,20 @@ const LLM_REGISTRY = {
438
441
  },
439
442
  google: {
440
443
  models: [
444
+ {
445
+ name: "gemini-3-flash-preview",
446
+ displayName: "Gemini 3 Flash Preview",
447
+ maxInputTokens: 1048576,
448
+ default: true,
449
+ supportedFileTypes: ["pdf", "image", "audio"],
450
+ pricing: {
451
+ inputPerM: 0.5,
452
+ outputPerM: 3,
453
+ cacheReadPerM: 0.05,
454
+ currency: "USD",
455
+ unit: "per_million_tokens"
456
+ }
457
+ },
441
458
  {
442
459
  name: "gemini-3-pro-preview",
443
460
  displayName: "Gemini 3 Pro Preview",
@@ -446,6 +463,7 @@ const LLM_REGISTRY = {
446
463
  pricing: {
447
464
  inputPerM: 2,
448
465
  outputPerM: 12,
466
+ cacheReadPerM: 0.2,
449
467
  currency: "USD",
450
468
  unit: "per_million_tokens"
451
469
  }
@@ -458,6 +476,7 @@ const LLM_REGISTRY = {
458
476
  pricing: {
459
477
  inputPerM: 2,
460
478
  outputPerM: 120,
479
+ cacheReadPerM: 0.2,
461
480
  currency: "USD",
462
481
  unit: "per_million_tokens"
463
482
  }
@@ -466,7 +485,6 @@ const LLM_REGISTRY = {
466
485
  name: "gemini-2.5-pro",
467
486
  displayName: "Gemini 2.5 Pro",
468
487
  maxInputTokens: 1048576,
469
- default: true,
470
488
  supportedFileTypes: ["pdf", "image", "audio"],
471
489
  pricing: {
472
490
  inputPerM: 1.25,
@@ -484,6 +502,7 @@ const LLM_REGISTRY = {
484
502
  pricing: {
485
503
  inputPerM: 0.3,
486
504
  outputPerM: 2.5,
505
+ cacheReadPerM: 0.03,
487
506
  currency: "USD",
488
507
  unit: "per_million_tokens"
489
508
  }
@@ -523,6 +542,7 @@ const LLM_REGISTRY = {
523
542
  pricing: {
524
543
  inputPerM: 0.075,
525
544
  outputPerM: 0.3,
545
+ cacheReadPerM: 0.01875,
526
546
  currency: "USD",
527
547
  unit: "per_million_tokens"
528
548
  }
@@ -579,6 +599,7 @@ const LLM_REGISTRY = {
579
599
  pricing: {
580
600
  inputPerM: 1,
581
601
  outputPerM: 3,
602
+ cacheReadPerM: 0.5,
582
603
  currency: "USD",
583
604
  unit: "per_million_tokens"
584
605
  }
@@ -767,8 +788,462 @@ const LLM_REGISTRY = {
767
788
  baseURLSupport: "none",
768
789
  supportedFileTypes: []
769
790
  // Cohere currently doesn't support file uploads
791
+ },
792
+ // https://openrouter.ai/docs
793
+ // OpenRouter is a unified API gateway providing access to 100+ models from various providers.
794
+ // Model validation is handled dynamically via openrouter-model-registry.ts
795
+ openrouter: {
796
+ models: [],
797
+ // Empty - accepts any model name (validated against OpenRouter's catalog)
798
+ baseURLSupport: "none",
799
+ // Fixed endpoint - baseURL auto-injected in resolver, no user override allowed
800
+ supportedFileTypes: ["pdf", "image", "audio"],
801
+ // Allow all types - user assumes responsibility for model capabilities
802
+ supportsCustomModels: true
803
+ },
804
+ // https://docs.litellm.ai/
805
+ // LiteLLM is an OpenAI-compatible proxy that unifies 100+ LLM providers.
806
+ // User must host their own LiteLLM proxy and provide the baseURL.
807
+ litellm: {
808
+ models: [],
809
+ // Empty - accepts any model name (user's proxy determines available models)
810
+ baseURLSupport: "required",
811
+ // User must provide their LiteLLM proxy URL
812
+ supportedFileTypes: ["pdf", "image", "audio"],
813
+ // Allow all types - user assumes responsibility for model capabilities
814
+ supportsCustomModels: true
815
+ },
816
+ // https://glama.ai/
817
+ // Glama is an OpenAI-compatible gateway providing unified access to multiple LLM providers.
818
+ // Fixed endpoint: https://glama.ai/api/gateway/openai/v1
819
+ glama: {
820
+ models: [],
821
+ // Empty - accepts any model name (format: provider/model e.g., openai/gpt-4o)
822
+ baseURLSupport: "none",
823
+ // Fixed endpoint - baseURL auto-injected
824
+ supportedFileTypes: ["pdf", "image", "audio"],
825
+ // Allow all types - user assumes responsibility for model capabilities
826
+ supportsCustomModels: true
827
+ },
828
+ // https://cloud.google.com/vertex-ai
829
+ // Google Vertex AI - GCP-hosted gateway for Gemini and Claude models
830
+ // Supports both Google's Gemini models and Anthropic's Claude via partnership
831
+ //
832
+ // Setup instructions:
833
+ // 1. Create a Google Cloud account and project
834
+ // 2. Enable the Vertex AI API: gcloud services enable aiplatform.googleapis.com
835
+ // 3. Enable desired Claude models (requires Anthropic Model Garden)
836
+ // 4. Install Google Cloud CLI: https://cloud.google.com/sdk/docs/install
837
+ // 5. Configure ADC: gcloud auth application-default login
838
+ // 6. Set env vars: GOOGLE_VERTEX_PROJECT (required), GOOGLE_VERTEX_LOCATION (optional)
839
+ //
840
+ // TODO: Add dynamic model fetching via publishers.models.list API
841
+ // - Requires: projectId, region, ADC auth
842
+ // - Endpoints: GET projects/{project}/locations/{location}/publishers/{google,anthropic}/models
843
+ // - Note: API doesn't return aliases (e.g., gemini-2.0-flash), only versioned IDs
844
+ // - Docs: https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.models/list
845
+ // - Models: https://cloud.google.com/vertex-ai/generative-ai/docs/models
846
+ vertex: {
847
+ models: [
848
+ // Gemini 3 models on Vertex AI (Preview)
849
+ {
850
+ name: "gemini-3-flash-preview",
851
+ displayName: "Gemini 3 Flash (Vertex)",
852
+ maxInputTokens: 1048576,
853
+ default: true,
854
+ supportedFileTypes: ["pdf", "image", "audio"],
855
+ pricing: {
856
+ inputPerM: 0.5,
857
+ outputPerM: 3,
858
+ cacheReadPerM: 0.05,
859
+ currency: "USD",
860
+ unit: "per_million_tokens"
861
+ }
862
+ },
863
+ {
864
+ name: "gemini-3-pro-preview",
865
+ displayName: "Gemini 3 Pro (Vertex)",
866
+ maxInputTokens: 1048576,
867
+ supportedFileTypes: ["pdf", "image", "audio"],
868
+ pricing: {
869
+ inputPerM: 2,
870
+ outputPerM: 12,
871
+ cacheReadPerM: 0.2,
872
+ currency: "USD",
873
+ unit: "per_million_tokens"
874
+ }
875
+ },
876
+ // Gemini 2.x models on Vertex AI
877
+ {
878
+ name: "gemini-2.5-pro",
879
+ displayName: "Gemini 2.5 Pro (Vertex)",
880
+ maxInputTokens: 1048576,
881
+ supportedFileTypes: ["pdf", "image", "audio"],
882
+ pricing: {
883
+ inputPerM: 1.25,
884
+ outputPerM: 10,
885
+ cacheReadPerM: 0.31,
886
+ currency: "USD",
887
+ unit: "per_million_tokens"
888
+ }
889
+ },
890
+ {
891
+ name: "gemini-2.5-flash",
892
+ displayName: "Gemini 2.5 Flash (Vertex)",
893
+ maxInputTokens: 1048576,
894
+ supportedFileTypes: ["pdf", "image", "audio"],
895
+ pricing: {
896
+ inputPerM: 0.15,
897
+ outputPerM: 0.6,
898
+ cacheReadPerM: 0.0375,
899
+ currency: "USD",
900
+ unit: "per_million_tokens"
901
+ }
902
+ },
903
+ {
904
+ name: "gemini-2.0-flash",
905
+ displayName: "Gemini 2.0 Flash (Vertex)",
906
+ maxInputTokens: 1048576,
907
+ supportedFileTypes: ["pdf", "image", "audio"],
908
+ pricing: {
909
+ inputPerM: 0.1,
910
+ outputPerM: 0.4,
911
+ cacheReadPerM: 0.025,
912
+ currency: "USD",
913
+ unit: "per_million_tokens"
914
+ }
915
+ },
916
+ // Claude 4.5 models on Vertex AI (via Anthropic partnership)
917
+ // Note: Claude model IDs use @ suffix format on Vertex
918
+ {
919
+ name: "claude-opus-4-5@20251101",
920
+ displayName: "Claude 4.5 Opus (Vertex)",
921
+ maxInputTokens: 2e5,
922
+ supportedFileTypes: ["pdf", "image"],
923
+ pricing: {
924
+ inputPerM: 5,
925
+ outputPerM: 25,
926
+ cacheWritePerM: 6.25,
927
+ cacheReadPerM: 0.5,
928
+ currency: "USD",
929
+ unit: "per_million_tokens"
930
+ }
931
+ },
932
+ {
933
+ name: "claude-sonnet-4-5@20250929",
934
+ displayName: "Claude 4.5 Sonnet (Vertex)",
935
+ maxInputTokens: 2e5,
936
+ supportedFileTypes: ["pdf", "image"],
937
+ pricing: {
938
+ inputPerM: 3,
939
+ outputPerM: 15,
940
+ cacheWritePerM: 3.75,
941
+ cacheReadPerM: 0.3,
942
+ currency: "USD",
943
+ unit: "per_million_tokens"
944
+ }
945
+ },
946
+ {
947
+ name: "claude-haiku-4-5@20251001",
948
+ displayName: "Claude 4.5 Haiku (Vertex)",
949
+ maxInputTokens: 2e5,
950
+ supportedFileTypes: ["pdf", "image"],
951
+ pricing: {
952
+ inputPerM: 1,
953
+ outputPerM: 5,
954
+ cacheWritePerM: 1.25,
955
+ cacheReadPerM: 0.1,
956
+ currency: "USD",
957
+ unit: "per_million_tokens"
958
+ }
959
+ },
960
+ // Claude 4.1 and 4.0 models on Vertex AI
961
+ {
962
+ name: "claude-opus-4-1@20250805",
963
+ displayName: "Claude 4.1 Opus (Vertex)",
964
+ maxInputTokens: 2e5,
965
+ supportedFileTypes: ["pdf", "image"],
966
+ pricing: {
967
+ inputPerM: 15,
968
+ outputPerM: 75,
969
+ cacheWritePerM: 18.75,
970
+ cacheReadPerM: 1.5,
971
+ currency: "USD",
972
+ unit: "per_million_tokens"
973
+ }
974
+ },
975
+ {
976
+ name: "claude-opus-4@20250514",
977
+ displayName: "Claude 4 Opus (Vertex)",
978
+ maxInputTokens: 2e5,
979
+ supportedFileTypes: ["pdf", "image"],
980
+ pricing: {
981
+ inputPerM: 15,
982
+ outputPerM: 75,
983
+ cacheWritePerM: 18.75,
984
+ cacheReadPerM: 1.5,
985
+ currency: "USD",
986
+ unit: "per_million_tokens"
987
+ }
988
+ },
989
+ {
990
+ name: "claude-sonnet-4@20250514",
991
+ displayName: "Claude 4 Sonnet (Vertex)",
992
+ maxInputTokens: 2e5,
993
+ supportedFileTypes: ["pdf", "image"],
994
+ pricing: {
995
+ inputPerM: 3,
996
+ outputPerM: 15,
997
+ cacheWritePerM: 3.75,
998
+ cacheReadPerM: 0.3,
999
+ currency: "USD",
1000
+ unit: "per_million_tokens"
1001
+ }
1002
+ },
1003
+ // Claude 3.x models on Vertex AI
1004
+ {
1005
+ name: "claude-3-7-sonnet@20250219",
1006
+ displayName: "Claude 3.7 Sonnet (Vertex)",
1007
+ maxInputTokens: 2e5,
1008
+ supportedFileTypes: ["pdf", "image"],
1009
+ pricing: {
1010
+ inputPerM: 3,
1011
+ outputPerM: 15,
1012
+ cacheWritePerM: 3.75,
1013
+ cacheReadPerM: 0.3,
1014
+ currency: "USD",
1015
+ unit: "per_million_tokens"
1016
+ }
1017
+ },
1018
+ {
1019
+ name: "claude-3-5-sonnet-v2@20241022",
1020
+ displayName: "Claude 3.5 Sonnet v2 (Vertex)",
1021
+ maxInputTokens: 2e5,
1022
+ supportedFileTypes: ["pdf", "image"],
1023
+ pricing: {
1024
+ inputPerM: 3,
1025
+ outputPerM: 15,
1026
+ cacheWritePerM: 3.75,
1027
+ cacheReadPerM: 0.3,
1028
+ currency: "USD",
1029
+ unit: "per_million_tokens"
1030
+ }
1031
+ },
1032
+ {
1033
+ name: "claude-3-5-haiku@20241022",
1034
+ displayName: "Claude 3.5 Haiku (Vertex)",
1035
+ maxInputTokens: 2e5,
1036
+ supportedFileTypes: ["pdf", "image"],
1037
+ pricing: {
1038
+ inputPerM: 0.8,
1039
+ outputPerM: 4,
1040
+ cacheWritePerM: 1,
1041
+ cacheReadPerM: 0.08,
1042
+ currency: "USD",
1043
+ unit: "per_million_tokens"
1044
+ }
1045
+ }
1046
+ ],
1047
+ baseURLSupport: "none",
1048
+ // Auto-constructed from projectId and region
1049
+ supportedFileTypes: ["pdf", "image", "audio"]
1050
+ },
1051
+ // Amazon Bedrock - AWS-hosted gateway for Claude, Nova, and more
1052
+ // Auth: AWS credentials (env vars) or Bedrock API key (AWS_BEARER_TOKEN_BEDROCK)
1053
+ //
1054
+ // Cross-region inference: Auto-added for anthropic.* and amazon.* models
1055
+ // supportsCustomModels: true allows users to add custom model IDs beyond the fixed list
1056
+ bedrock: {
1057
+ supportsCustomModels: true,
1058
+ models: [
1059
+ // Claude 4.5 models (latest)
1060
+ {
1061
+ name: "anthropic.claude-sonnet-4-5-20250929-v1:0",
1062
+ displayName: "Claude 4.5 Sonnet",
1063
+ maxInputTokens: 2e5,
1064
+ default: true,
1065
+ supportedFileTypes: ["pdf", "image"],
1066
+ pricing: {
1067
+ inputPerM: 3,
1068
+ outputPerM: 15,
1069
+ cacheWritePerM: 3.75,
1070
+ cacheReadPerM: 0.3,
1071
+ currency: "USD",
1072
+ unit: "per_million_tokens"
1073
+ }
1074
+ },
1075
+ {
1076
+ name: "anthropic.claude-haiku-4-5-20251001-v1:0",
1077
+ displayName: "Claude 4.5 Haiku",
1078
+ maxInputTokens: 2e5,
1079
+ supportedFileTypes: ["pdf", "image"],
1080
+ pricing: {
1081
+ inputPerM: 1,
1082
+ outputPerM: 5,
1083
+ cacheWritePerM: 1.25,
1084
+ cacheReadPerM: 0.1,
1085
+ currency: "USD",
1086
+ unit: "per_million_tokens"
1087
+ }
1088
+ },
1089
+ {
1090
+ name: "anthropic.claude-opus-4-5-20251101-v1:0",
1091
+ displayName: "Claude 4.5 Opus",
1092
+ maxInputTokens: 2e5,
1093
+ supportedFileTypes: ["pdf", "image"],
1094
+ pricing: {
1095
+ inputPerM: 5,
1096
+ outputPerM: 25,
1097
+ cacheWritePerM: 6.25,
1098
+ cacheReadPerM: 0.5,
1099
+ currency: "USD",
1100
+ unit: "per_million_tokens"
1101
+ }
1102
+ },
1103
+ // Amazon Nova models
1104
+ {
1105
+ name: "amazon.nova-premier-v1:0",
1106
+ displayName: "Nova Premier",
1107
+ maxInputTokens: 1e6,
1108
+ supportedFileTypes: ["image"],
1109
+ pricing: {
1110
+ inputPerM: 2.5,
1111
+ outputPerM: 12.5,
1112
+ currency: "USD",
1113
+ unit: "per_million_tokens"
1114
+ }
1115
+ },
1116
+ {
1117
+ name: "amazon.nova-pro-v1:0",
1118
+ displayName: "Nova Pro",
1119
+ maxInputTokens: 3e5,
1120
+ supportedFileTypes: ["pdf", "image"],
1121
+ pricing: {
1122
+ inputPerM: 0.8,
1123
+ outputPerM: 3.2,
1124
+ cacheReadPerM: 0.2,
1125
+ currency: "USD",
1126
+ unit: "per_million_tokens"
1127
+ }
1128
+ },
1129
+ {
1130
+ name: "amazon.nova-lite-v1:0",
1131
+ displayName: "Nova Lite",
1132
+ maxInputTokens: 3e5,
1133
+ supportedFileTypes: ["pdf", "image"],
1134
+ pricing: {
1135
+ inputPerM: 0.06,
1136
+ outputPerM: 0.24,
1137
+ cacheReadPerM: 0.015,
1138
+ currency: "USD",
1139
+ unit: "per_million_tokens"
1140
+ }
1141
+ },
1142
+ {
1143
+ name: "amazon.nova-micro-v1:0",
1144
+ displayName: "Nova Micro",
1145
+ maxInputTokens: 128e3,
1146
+ supportedFileTypes: [],
1147
+ pricing: {
1148
+ inputPerM: 0.035,
1149
+ outputPerM: 0.14,
1150
+ cacheReadPerM: 875e-5,
1151
+ currency: "USD",
1152
+ unit: "per_million_tokens"
1153
+ }
1154
+ },
1155
+ // OpenAI GPT-OSS
1156
+ {
1157
+ name: "openai.gpt-oss-120b-1:0",
1158
+ displayName: "GPT-OSS 120B",
1159
+ maxInputTokens: 128e3,
1160
+ supportedFileTypes: [],
1161
+ pricing: {
1162
+ inputPerM: 0.15,
1163
+ outputPerM: 0.6,
1164
+ currency: "USD",
1165
+ unit: "per_million_tokens"
1166
+ }
1167
+ },
1168
+ {
1169
+ name: "openai.gpt-oss-20b-1:0",
1170
+ displayName: "GPT-OSS 20B",
1171
+ maxInputTokens: 128e3,
1172
+ supportedFileTypes: [],
1173
+ pricing: {
1174
+ inputPerM: 0.07,
1175
+ outputPerM: 0.3,
1176
+ currency: "USD",
1177
+ unit: "per_million_tokens"
1178
+ }
1179
+ },
1180
+ // Qwen
1181
+ {
1182
+ name: "qwen.qwen3-coder-30b-a3b-v1:0",
1183
+ displayName: "Qwen3 Coder 30B",
1184
+ maxInputTokens: 262144,
1185
+ supportedFileTypes: [],
1186
+ pricing: {
1187
+ inputPerM: 0.15,
1188
+ outputPerM: 0.6,
1189
+ currency: "USD",
1190
+ unit: "per_million_tokens"
1191
+ }
1192
+ },
1193
+ {
1194
+ name: "qwen.qwen3-coder-480b-a35b-v1:0",
1195
+ displayName: "Qwen3 Coder 480B",
1196
+ maxInputTokens: 262144,
1197
+ supportedFileTypes: [],
1198
+ pricing: {
1199
+ inputPerM: 0.22,
1200
+ outputPerM: 1.8,
1201
+ currency: "USD",
1202
+ unit: "per_million_tokens"
1203
+ }
1204
+ }
1205
+ ],
1206
+ baseURLSupport: "none",
1207
+ // Auto-constructed from region
1208
+ supportedFileTypes: ["pdf", "image"]
1209
+ },
1210
+ // Native local model execution via node-llama-cpp
1211
+ // Runs GGUF models directly on the machine using Metal/CUDA/Vulkan acceleration
1212
+ // Models are downloaded from HuggingFace and stored in ~/.dexto/models/
1213
+ local: {
1214
+ models: [],
1215
+ // Populated dynamically from local model registry
1216
+ baseURLSupport: "none",
1217
+ // No external server needed
1218
+ supportedFileTypes: ["image"],
1219
+ // Vision support depends on model capabilities
1220
+ supportsCustomModels: true
1221
+ // Allow any GGUF model path
1222
+ },
1223
+ // Ollama server integration
1224
+ // Uses Ollama's OpenAI-compatible API for local model inference
1225
+ // Requires Ollama to be installed and running (default: http://localhost:11434)
1226
+ ollama: {
1227
+ models: [],
1228
+ // Populated dynamically from Ollama API
1229
+ baseURLSupport: "optional",
1230
+ // Default: http://localhost:11434, can be customized
1231
+ supportedFileTypes: ["image"],
1232
+ // Vision support depends on model
1233
+ supportsCustomModels: true
1234
+ // Accept any Ollama model name
770
1235
  }
1236
+ // TODO: Add 'dexto' provider (similar to openrouter, uses https://api.dexto.ai/v1)
771
1237
  };
1238
+ function stripBedrockRegionPrefix(model) {
1239
+ if (model.startsWith("eu.") || model.startsWith("us.")) {
1240
+ return model.slice(3);
1241
+ }
1242
+ if (model.startsWith("global.")) {
1243
+ return model.slice(7);
1244
+ }
1245
+ return model;
1246
+ }
772
1247
  function getDefaultModelForProvider(provider) {
773
1248
  const providerInfo = LLM_REGISTRY[provider];
774
1249
  return providerInfo.models.find((m) => m.default)?.name || null;
@@ -782,7 +1257,8 @@ function getSupportedModels(provider) {
782
1257
  }
783
1258
  function getMaxInputTokensForModel(provider, model, logger) {
784
1259
  const providerInfo = LLM_REGISTRY[provider];
785
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1260
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1261
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
786
1262
  if (!modelInfo) {
787
1263
  const supportedModels = getSupportedModels(provider).join(", ");
788
1264
  logger?.error(
@@ -795,13 +1271,14 @@ function getMaxInputTokensForModel(provider, model, logger) {
795
1271
  }
796
1272
  function isValidProviderModel(provider, model) {
797
1273
  const providerInfo = LLM_REGISTRY[provider];
798
- return providerInfo.models.some((m) => m.name.toLowerCase() === model.toLowerCase());
1274
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1275
+ return providerInfo.models.some((m) => m.name.toLowerCase() === normalizedModel);
799
1276
  }
800
1277
  function getProviderFromModel(model) {
801
- const lowerModel = model.toLowerCase();
1278
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
802
1279
  for (const provider of LLM_PROVIDERS) {
803
1280
  const info = LLM_REGISTRY[provider];
804
- if (info.models.some((m) => m.name.toLowerCase() === lowerModel)) {
1281
+ if (info.models.some((m) => m.name.toLowerCase() === normalizedModel)) {
805
1282
  return provider;
806
1283
  }
807
1284
  }
@@ -822,12 +1299,34 @@ function acceptsAnyModel(provider) {
822
1299
  const providerInfo = LLM_REGISTRY[provider];
823
1300
  return providerInfo.models.length === 0;
824
1301
  }
1302
+ function supportsCustomModels(provider) {
1303
+ const providerInfo = LLM_REGISTRY[provider];
1304
+ return providerInfo.supportsCustomModels === true;
1305
+ }
1306
+ const API_KEY_OPTIONAL_PROVIDERS = /* @__PURE__ */ new Set([
1307
+ "local",
1308
+ // Native node-llama-cpp execution - no auth needed
1309
+ "ollama",
1310
+ // Ollama server - no auth needed by default
1311
+ "openai-compatible",
1312
+ // vLLM, LocalAI - often no auth needed
1313
+ "litellm",
1314
+ // Self-hosted proxy - handles auth internally
1315
+ "vertex",
1316
+ // Uses Google Cloud ADC (Application Default Credentials)
1317
+ "bedrock"
1318
+ // Uses AWS credentials (access key + secret or IAM role)
1319
+ ]);
1320
+ function requiresApiKey(provider) {
1321
+ return !API_KEY_OPTIONAL_PROVIDERS.has(provider);
1322
+ }
825
1323
  function getSupportedFileTypesForModel(provider, model) {
826
1324
  const providerInfo = LLM_REGISTRY[provider];
827
1325
  if (acceptsAnyModel(provider)) {
828
1326
  return providerInfo.supportedFileTypes;
829
1327
  }
830
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1328
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1329
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
831
1330
  if (!modelInfo) {
832
1331
  throw LLMError.unknownModel(provider, model);
833
1332
  }
@@ -906,6 +1405,19 @@ function getEffectiveMaxInputTokens(config, logger) {
906
1405
  }
907
1406
  }
908
1407
  }
1408
+ if (config.provider === "openrouter") {
1409
+ const contextLength = getOpenRouterModelContextLength(config.model);
1410
+ if (contextLength !== null) {
1411
+ logger.debug(
1412
+ `Using maxInputTokens from OpenRouter registry for ${config.model}: ${contextLength}`
1413
+ );
1414
+ return contextLength;
1415
+ }
1416
+ logger.warn(
1417
+ `OpenRouter model ${config.model} not found in cache, defaulting to ${DEFAULT_MAX_INPUT_TOKENS} tokens`
1418
+ );
1419
+ return DEFAULT_MAX_INPUT_TOKENS;
1420
+ }
909
1421
  if (config.baseURL) {
910
1422
  logger.warn(
911
1423
  `baseURL is set but maxInputTokens is missing. Defaulting to ${DEFAULT_MAX_INPUT_TOKENS}. Provide 'maxInputTokens' in configuration to avoid default fallback.`
@@ -930,6 +1442,12 @@ function getEffectiveMaxInputTokens(config, logger) {
930
1442
  return registryMaxInputTokens;
931
1443
  } catch (error) {
932
1444
  if (error instanceof DextoRuntimeError && error.code === LLMErrorCode.MODEL_UNKNOWN) {
1445
+ if (supportsCustomModels(config.provider)) {
1446
+ logger.debug(
1447
+ `Custom model ${config.model} not in ${config.provider} registry, defaulting to ${DEFAULT_MAX_INPUT_TOKENS} tokens`
1448
+ );
1449
+ return DEFAULT_MAX_INPUT_TOKENS;
1450
+ }
933
1451
  logger.error(
934
1452
  `Registry lookup failed for ${config.provider}/${config.model}: ${error.message}. Effective maxInputTokens cannot be determined.`
935
1453
  );
@@ -945,7 +1463,8 @@ function getModelPricing(provider, model) {
945
1463
  if (acceptsAnyModel(provider)) {
946
1464
  return void 0;
947
1465
  }
948
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1466
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1467
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
949
1468
  return modelInfo?.pricing;
950
1469
  }
951
1470
  function getModelDisplayName(model, provider) {
@@ -959,7 +1478,8 @@ function getModelDisplayName(model, provider) {
959
1478
  if (!providerInfo || acceptsAnyModel(resolvedProvider)) {
960
1479
  return model;
961
1480
  }
962
- const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
1481
+ const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
1482
+ const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
963
1483
  return modelInfo?.displayName ?? model;
964
1484
  }
965
1485
  function calculateCost(usage, pricing) {
@@ -989,7 +1509,10 @@ export {
989
1509
  getSupportedProviders,
990
1510
  isValidProviderModel,
991
1511
  modelSupportsFileType,
1512
+ requiresApiKey,
992
1513
  requiresBaseURL,
1514
+ stripBedrockRegionPrefix,
993
1515
  supportsBaseURL,
1516
+ supportsCustomModels,
994
1517
  validateModelFileSupport
995
1518
  };