@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
@@ -28,9 +28,10 @@ var import_types = require("../errors/types.cjs");
28
28
  var import_error_codes = require("./error-codes.js");
29
29
  var import_schemas2 = require("./schemas.js");
30
30
  var import_registry = require("./registry.js");
31
+ var import_openrouter_model_registry = require("./providers/openrouter-model-registry.js");
31
32
  var import_api_key_resolver = require("../utils/api-key-resolver.cjs");
32
- function resolveAndValidateLLMConfig(previous, updates, logger) {
33
- const { candidate, warnings } = resolveLLMConfig(previous, updates, logger);
33
+ async function resolveAndValidateLLMConfig(previous, updates, logger) {
34
+ const { candidate, warnings } = await resolveLLMConfig(previous, updates, logger);
34
35
  if ((0, import_result.hasErrors)(warnings)) {
35
36
  const { errors } = (0, import_result.splitIssues)(warnings);
36
37
  return (0, import_result.fail)(errors);
@@ -38,7 +39,7 @@ function resolveAndValidateLLMConfig(previous, updates, logger) {
38
39
  const result = validateLLMConfig(candidate, warnings);
39
40
  return result;
40
41
  }
41
- function resolveLLMConfig(previous, updates, logger) {
42
+ async function resolveLLMConfig(previous, updates, logger) {
42
43
  const warnings = [];
43
44
  const provider = updates.provider ?? (updates.model ? (() => {
44
45
  try {
@@ -69,7 +70,7 @@ function resolveLLMConfig(previous, updates, logger) {
69
70
  });
70
71
  }
71
72
  let model = updates.model ?? previous.model;
72
- if (provider !== previous.provider && !(0, import_registry.acceptsAnyModel)(provider) && !(0, import_registry.isValidProviderModel)(provider, model)) {
73
+ if (provider !== previous.provider && !(0, import_registry.acceptsAnyModel)(provider) && !(0, import_registry.supportsCustomModels)(provider) && !(0, import_registry.isValidProviderModel)(provider, model)) {
73
74
  model = (0, import_registry.getDefaultModelForProvider)(provider) ?? previous.model;
74
75
  warnings.push({
75
76
  code: import_error_codes.LLMErrorCode.MODEL_INCOMPATIBLE,
@@ -81,12 +82,69 @@ function resolveLLMConfig(previous, updates, logger) {
81
82
  });
82
83
  }
83
84
  const maxInputTokens = updates.maxInputTokens ?? (0, import_registry.getEffectiveMaxInputTokens)({ provider, model, apiKey: apiKey || previous.apiKey }, logger);
85
+ let baseURL;
86
+ if (updates.baseURL) {
87
+ baseURL = updates.baseURL;
88
+ } else if ((0, import_registry.supportsBaseURL)(provider)) {
89
+ baseURL = previous.baseURL;
90
+ } else {
91
+ baseURL = void 0;
92
+ }
93
+ if (provider === "vertex") {
94
+ const projectId = process.env.GOOGLE_VERTEX_PROJECT;
95
+ if (!projectId || !projectId.trim()) {
96
+ warnings.push({
97
+ code: import_error_codes.LLMErrorCode.CONFIG_MISSING,
98
+ message: "GOOGLE_VERTEX_PROJECT environment variable is required for Vertex AI. Set it to your GCP project ID and ensure ADC is configured via `gcloud auth application-default login`",
99
+ severity: "error",
100
+ scope: import_types.ErrorScope.LLM,
101
+ type: import_types.ErrorType.USER,
102
+ context: { provider, model }
103
+ });
104
+ }
105
+ }
106
+ if (provider === "bedrock") {
107
+ const region = process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION;
108
+ if (!region || !region.trim()) {
109
+ warnings.push({
110
+ code: import_error_codes.LLMErrorCode.CONFIG_MISSING,
111
+ message: "AWS_REGION environment variable is required for Amazon Bedrock. Also set either AWS_BEARER_TOKEN_BEDROCK (API key) or AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY (IAM credentials).",
112
+ severity: "error",
113
+ scope: import_types.ErrorScope.LLM,
114
+ type: import_types.ErrorType.USER,
115
+ context: { provider, model }
116
+ });
117
+ }
118
+ }
119
+ if (provider === "openrouter") {
120
+ let lookupStatus = (0, import_openrouter_model_registry.lookupOpenRouterModel)(model);
121
+ if (lookupStatus === "unknown") {
122
+ try {
123
+ await (0, import_openrouter_model_registry.refreshOpenRouterModelCache)({ apiKey });
124
+ lookupStatus = (0, import_openrouter_model_registry.lookupOpenRouterModel)(model);
125
+ } catch {
126
+ logger.debug(
127
+ `OpenRouter model cache refresh failed, allowing model '${model}' without validation`
128
+ );
129
+ }
130
+ }
131
+ if (lookupStatus === "invalid") {
132
+ warnings.push({
133
+ code: import_error_codes.LLMErrorCode.MODEL_INCOMPATIBLE,
134
+ message: `Model '${model}' not found in OpenRouter catalog. Check model ID at https://openrouter.ai/models`,
135
+ severity: "error",
136
+ scope: import_types.ErrorScope.LLM,
137
+ type: import_types.ErrorType.USER,
138
+ context: { provider, model }
139
+ });
140
+ }
141
+ }
84
142
  return {
85
143
  candidate: {
86
144
  provider,
87
145
  model,
88
146
  apiKey,
89
- baseURL: updates.baseURL ?? previous.baseURL,
147
+ baseURL,
90
148
  maxIterations: updates.maxIterations ?? previous.maxIterations,
91
149
  maxInputTokens,
92
150
  maxOutputTokens: updates.maxOutputTokens ?? previous.maxOutputTokens,
@@ -6,16 +6,16 @@ import type { IDextoLogger } from '../logger/v2/types.js';
6
6
  /**
7
7
  * Convenience function that combines resolveLLM and validateLLM
8
8
  */
9
- export declare function resolveAndValidateLLMConfig(previous: ValidatedLLMConfig, updates: LLMUpdates, logger: IDextoLogger): Result<ValidatedLLMConfig, LLMUpdateContext>;
9
+ export declare function resolveAndValidateLLMConfig(previous: ValidatedLLMConfig, updates: LLMUpdates, logger: IDextoLogger): Promise<Result<ValidatedLLMConfig, LLMUpdateContext>>;
10
10
  /**
11
11
  * Infers the LLM config from the provided updates
12
12
  * @param previous - The previous LLM config
13
13
  * @param updates - The updates to the LLM config
14
14
  * @returns The resolved LLM config
15
15
  */
16
- export declare function resolveLLMConfig(previous: ValidatedLLMConfig, updates: LLMUpdates, logger: IDextoLogger): {
16
+ export declare function resolveLLMConfig(previous: ValidatedLLMConfig, updates: LLMUpdates, logger: IDextoLogger): Promise<{
17
17
  candidate: LLMConfig;
18
18
  warnings: Issue<LLMUpdateContext>[];
19
- };
19
+ }>;
20
20
  export declare function validateLLMConfig(candidate: LLMConfig, warnings: Issue<LLMUpdateContext>[]): Result<ValidatedLLMConfig, LLMUpdateContext>;
21
21
  //# sourceMappingURL=resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/llm/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiD,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAyB,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AASxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;GAEG;AACH,wBAAgB,2BAA2B,CACvC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,YAAY,GACrB,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAU9C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,YAAY,GACrB;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAA;CAAE,CA+E/D;AAGD,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,GACpC,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CA0B9C"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/llm/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiD,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAyB,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAexF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM7D;;GAEG;AACH,wBAAsB,2BAA2B,CAC7C,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAUvD;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAClC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAA;CAAE,CAAC,CAkKxE;AAGD,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,GACpC,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CA0B9C"}
@@ -8,11 +8,17 @@ import {
8
8
  acceptsAnyModel,
9
9
  getProviderFromModel,
10
10
  isValidProviderModel,
11
- getEffectiveMaxInputTokens
11
+ getEffectiveMaxInputTokens,
12
+ supportsBaseURL,
13
+ supportsCustomModels
12
14
  } from "./registry.js";
15
+ import {
16
+ lookupOpenRouterModel,
17
+ refreshOpenRouterModelCache
18
+ } from "./providers/openrouter-model-registry.js";
13
19
  import { resolveApiKeyForProvider } from "../utils/api-key-resolver.js";
14
- function resolveAndValidateLLMConfig(previous, updates, logger) {
15
- const { candidate, warnings } = resolveLLMConfig(previous, updates, logger);
20
+ async function resolveAndValidateLLMConfig(previous, updates, logger) {
21
+ const { candidate, warnings } = await resolveLLMConfig(previous, updates, logger);
16
22
  if (hasErrors(warnings)) {
17
23
  const { errors } = splitIssues(warnings);
18
24
  return fail(errors);
@@ -20,7 +26,7 @@ function resolveAndValidateLLMConfig(previous, updates, logger) {
20
26
  const result = validateLLMConfig(candidate, warnings);
21
27
  return result;
22
28
  }
23
- function resolveLLMConfig(previous, updates, logger) {
29
+ async function resolveLLMConfig(previous, updates, logger) {
24
30
  const warnings = [];
25
31
  const provider = updates.provider ?? (updates.model ? (() => {
26
32
  try {
@@ -51,7 +57,7 @@ function resolveLLMConfig(previous, updates, logger) {
51
57
  });
52
58
  }
53
59
  let model = updates.model ?? previous.model;
54
- if (provider !== previous.provider && !acceptsAnyModel(provider) && !isValidProviderModel(provider, model)) {
60
+ if (provider !== previous.provider && !acceptsAnyModel(provider) && !supportsCustomModels(provider) && !isValidProviderModel(provider, model)) {
55
61
  model = getDefaultModelForProvider(provider) ?? previous.model;
56
62
  warnings.push({
57
63
  code: LLMErrorCode.MODEL_INCOMPATIBLE,
@@ -63,12 +69,69 @@ function resolveLLMConfig(previous, updates, logger) {
63
69
  });
64
70
  }
65
71
  const maxInputTokens = updates.maxInputTokens ?? getEffectiveMaxInputTokens({ provider, model, apiKey: apiKey || previous.apiKey }, logger);
72
+ let baseURL;
73
+ if (updates.baseURL) {
74
+ baseURL = updates.baseURL;
75
+ } else if (supportsBaseURL(provider)) {
76
+ baseURL = previous.baseURL;
77
+ } else {
78
+ baseURL = void 0;
79
+ }
80
+ if (provider === "vertex") {
81
+ const projectId = process.env.GOOGLE_VERTEX_PROJECT;
82
+ if (!projectId || !projectId.trim()) {
83
+ warnings.push({
84
+ code: LLMErrorCode.CONFIG_MISSING,
85
+ message: "GOOGLE_VERTEX_PROJECT environment variable is required for Vertex AI. Set it to your GCP project ID and ensure ADC is configured via `gcloud auth application-default login`",
86
+ severity: "error",
87
+ scope: ErrorScope.LLM,
88
+ type: ErrorType.USER,
89
+ context: { provider, model }
90
+ });
91
+ }
92
+ }
93
+ if (provider === "bedrock") {
94
+ const region = process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION;
95
+ if (!region || !region.trim()) {
96
+ warnings.push({
97
+ code: LLMErrorCode.CONFIG_MISSING,
98
+ message: "AWS_REGION environment variable is required for Amazon Bedrock. Also set either AWS_BEARER_TOKEN_BEDROCK (API key) or AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY (IAM credentials).",
99
+ severity: "error",
100
+ scope: ErrorScope.LLM,
101
+ type: ErrorType.USER,
102
+ context: { provider, model }
103
+ });
104
+ }
105
+ }
106
+ if (provider === "openrouter") {
107
+ let lookupStatus = lookupOpenRouterModel(model);
108
+ if (lookupStatus === "unknown") {
109
+ try {
110
+ await refreshOpenRouterModelCache({ apiKey });
111
+ lookupStatus = lookupOpenRouterModel(model);
112
+ } catch {
113
+ logger.debug(
114
+ `OpenRouter model cache refresh failed, allowing model '${model}' without validation`
115
+ );
116
+ }
117
+ }
118
+ if (lookupStatus === "invalid") {
119
+ warnings.push({
120
+ code: LLMErrorCode.MODEL_INCOMPATIBLE,
121
+ message: `Model '${model}' not found in OpenRouter catalog. Check model ID at https://openrouter.ai/models`,
122
+ severity: "error",
123
+ scope: ErrorScope.LLM,
124
+ type: ErrorType.USER,
125
+ context: { provider, model }
126
+ });
127
+ }
128
+ }
66
129
  return {
67
130
  candidate: {
68
131
  provider,
69
132
  model,
70
133
  apiKey,
71
- baseURL: updates.baseURL ?? previous.baseURL,
134
+ baseURL,
72
135
  maxIterations: updates.maxIterations ?? previous.maxIterations,
73
136
  maxInputTokens,
74
137
  maxOutputTokens: updates.maxOutputTokens ?? previous.maxOutputTokens,
@@ -20,7 +20,9 @@ var schemas_exports = {};
20
20
  __export(schemas_exports, {
21
21
  LLMConfigBaseSchema: () => LLMConfigBaseSchema,
22
22
  LLMConfigSchema: () => LLMConfigSchema,
23
- LLMUpdatesSchema: () => LLMUpdatesSchema
23
+ LLMConfigSchemaRelaxed: () => LLMConfigSchemaRelaxed,
24
+ LLMUpdatesSchema: () => LLMUpdatesSchema,
25
+ createLLMConfigSchema: () => createLLMConfigSchema
24
26
  });
25
27
  module.exports = __toCommonJS(schemas_exports);
26
28
  var import_error_codes = require("./error-codes.js");
@@ -35,9 +37,8 @@ const LLMConfigFields = {
35
37
  provider: import_zod.z.enum(import_types2.LLM_PROVIDERS).describe("LLM provider (e.g., 'openai', 'anthropic', 'google', 'groq')"),
36
38
  model: import_result.NonEmptyTrimmed.describe("Specific model name for the selected provider"),
37
39
  // Expand $ENV refs and trim; final validation happens with provider context
38
- apiKey: (0, import_result.EnvExpandedString)().describe(
39
- "API key for provider; can be given directly or via $ENV reference"
40
- ),
40
+ // Optional for providers that don't need API keys (Ollama, vLLM, etc.)
41
+ apiKey: (0, import_result.EnvExpandedString)().optional().describe("API key for provider; can be given directly or via $ENV reference"),
41
42
  maxIterations: import_zod.z.coerce.number().int().positive().describe("Max iterations for agentic loops"),
42
43
  baseURL: import_result.OptionalURL.describe(
43
44
  "Base URL for provider (e.g., https://api.openai.com/v1). Only certain providers support this."
@@ -52,6 +53,7 @@ const LLMConfigFields = {
52
53
  const LLMConfigBaseSchema = import_zod.z.object({
53
54
  provider: LLMConfigFields.provider,
54
55
  model: LLMConfigFields.model,
56
+ // apiKey is optional at schema level - validated based on provider in superRefine
55
57
  apiKey: LLMConfigFields.apiKey,
56
58
  // Apply defaults only for complete config validation
57
59
  maxIterations: import_zod.z.coerce.number().int().positive().default(50),
@@ -61,108 +63,114 @@ const LLMConfigBaseSchema = import_zod.z.object({
61
63
  temperature: LLMConfigFields.temperature,
62
64
  allowedMediaTypes: LLMConfigFields.allowedMediaTypes
63
65
  }).strict();
64
- const LLMConfigSchema = LLMConfigBaseSchema.superRefine((data, ctx) => {
65
- const baseURLIsSet = data.baseURL != null && data.baseURL.trim() !== "";
66
- const maxInputTokensIsSet = data.maxInputTokens != null;
67
- if (!data.apiKey?.trim()) {
68
- const primaryVar = (0, import_api_key_resolver.getPrimaryApiKeyEnvVar)(data.provider);
69
- ctx.addIssue({
70
- code: import_zod.z.ZodIssueCode.custom,
71
- path: ["apiKey"],
72
- message: `Missing API key for provider '${data.provider}' \u2013 set $${primaryVar}`,
73
- params: {
74
- code: import_error_codes.LLMErrorCode.API_KEY_MISSING,
75
- scope: import_types.ErrorScope.LLM,
76
- type: import_types.ErrorType.USER,
77
- provider: data.provider,
78
- envVar: primaryVar
79
- }
80
- });
81
- }
82
- if (baseURLIsSet) {
83
- if (!(0, import_registry.supportsBaseURL)(data.provider)) {
66
+ function createLLMConfigSchema(options = {}) {
67
+ const { strict = true } = options;
68
+ return LLMConfigBaseSchema.superRefine((data, ctx) => {
69
+ const baseURLIsSet = data.baseURL != null && data.baseURL.trim() !== "";
70
+ const maxInputTokensIsSet = data.maxInputTokens != null;
71
+ if (strict && (0, import_registry.requiresApiKey)(data.provider) && !data.apiKey?.trim()) {
72
+ const primaryVar = (0, import_api_key_resolver.getPrimaryApiKeyEnvVar)(data.provider);
84
73
  ctx.addIssue({
85
74
  code: import_zod.z.ZodIssueCode.custom,
86
- path: ["provider"],
87
- message: `Provider '${data.provider}' does not support baseURL. Use an 'openai-compatible' provider if you need a custom base URL.`,
75
+ path: ["apiKey"],
76
+ message: `Missing API key for provider '${data.provider}' \u2013 set $${primaryVar}`,
88
77
  params: {
89
- code: import_error_codes.LLMErrorCode.BASE_URL_INVALID,
78
+ code: import_error_codes.LLMErrorCode.API_KEY_MISSING,
90
79
  scope: import_types.ErrorScope.LLM,
91
- type: import_types.ErrorType.USER
80
+ type: import_types.ErrorType.USER,
81
+ provider: data.provider,
82
+ envVar: primaryVar
92
83
  }
93
84
  });
94
85
  }
95
- } else if ((0, import_registry.requiresBaseURL)(data.provider)) {
96
- ctx.addIssue({
97
- code: import_zod.z.ZodIssueCode.custom,
98
- path: ["baseURL"],
99
- message: `Provider '${data.provider}' requires a 'baseURL'.`,
100
- params: {
101
- code: import_error_codes.LLMErrorCode.BASE_URL_MISSING,
102
- scope: import_types.ErrorScope.LLM,
103
- type: import_types.ErrorType.USER
104
- }
105
- });
106
- } else {
107
- if (!(0, import_registry.acceptsAnyModel)(data.provider)) {
108
- const supportedModelsList = (0, import_registry.getSupportedModels)(data.provider);
109
- if (!(0, import_registry.isValidProviderModel)(data.provider, data.model)) {
86
+ if (baseURLIsSet) {
87
+ if (!(0, import_registry.supportsBaseURL)(data.provider)) {
110
88
  ctx.addIssue({
111
89
  code: import_zod.z.ZodIssueCode.custom,
112
- path: ["model"],
113
- message: `Model '${data.model}' is not supported for provider '${data.provider}'. Supported: ${supportedModelsList.join(", ")}`,
90
+ path: ["provider"],
91
+ message: `Provider '${data.provider}' does not support baseURL. Use an 'openai-compatible' provider if you need a custom base URL.`,
114
92
  params: {
115
- code: import_error_codes.LLMErrorCode.MODEL_INCOMPATIBLE,
93
+ code: import_error_codes.LLMErrorCode.BASE_URL_INVALID,
116
94
  scope: import_types.ErrorScope.LLM,
117
95
  type: import_types.ErrorType.USER
118
96
  }
119
97
  });
120
98
  }
99
+ } else if (strict && (0, import_registry.requiresBaseURL)(data.provider)) {
100
+ ctx.addIssue({
101
+ code: import_zod.z.ZodIssueCode.custom,
102
+ path: ["baseURL"],
103
+ message: `Provider '${data.provider}' requires a 'baseURL'.`,
104
+ params: {
105
+ code: import_error_codes.LLMErrorCode.BASE_URL_MISSING,
106
+ scope: import_types.ErrorScope.LLM,
107
+ type: import_types.ErrorType.USER
108
+ }
109
+ });
121
110
  }
122
- if (maxInputTokensIsSet && !(0, import_registry.acceptsAnyModel)(data.provider)) {
123
- try {
124
- const cap = (0, import_registry.getMaxInputTokensForModel)(data.provider, data.model);
125
- if (data.maxInputTokens > cap) {
111
+ if (!baseURLIsSet || (0, import_registry.supportsBaseURL)(data.provider)) {
112
+ if (!(0, import_registry.acceptsAnyModel)(data.provider) && !(0, import_registry.supportsCustomModels)(data.provider)) {
113
+ const supportedModelsList = (0, import_registry.getSupportedModels)(data.provider);
114
+ if (!(0, import_registry.isValidProviderModel)(data.provider, data.model)) {
126
115
  ctx.addIssue({
127
116
  code: import_zod.z.ZodIssueCode.custom,
128
- path: ["maxInputTokens"],
129
- message: `Max input tokens for model '${data.model}' is ${cap}. You provided ${data.maxInputTokens}`,
117
+ path: ["model"],
118
+ message: `Model '${data.model}' is not supported for provider '${data.provider}'. Supported: ${supportedModelsList.join(", ")}`,
130
119
  params: {
131
- code: import_error_codes.LLMErrorCode.TOKENS_EXCEEDED,
120
+ code: import_error_codes.LLMErrorCode.MODEL_INCOMPATIBLE,
132
121
  scope: import_types.ErrorScope.LLM,
133
122
  type: import_types.ErrorType.USER
134
123
  }
135
124
  });
136
125
  }
137
- } catch (error) {
138
- if (error instanceof import_errors.DextoRuntimeError && error.code === import_error_codes.LLMErrorCode.MODEL_UNKNOWN) {
139
- ctx.addIssue({
140
- code: import_zod.z.ZodIssueCode.custom,
141
- path: ["model"],
142
- message: error.message,
143
- params: {
144
- code: error.code,
145
- scope: error.scope,
146
- type: error.type
147
- }
148
- });
149
- } else {
150
- const message = error instanceof Error ? error.message : "Unknown error occurred";
151
- ctx.addIssue({
152
- code: import_zod.z.ZodIssueCode.custom,
153
- path: ["model"],
154
- message,
155
- params: {
156
- code: import_error_codes.LLMErrorCode.REQUEST_INVALID_SCHEMA,
157
- scope: import_types.ErrorScope.LLM,
158
- type: import_types.ErrorType.SYSTEM
159
- }
160
- });
126
+ }
127
+ if (maxInputTokensIsSet && !(0, import_registry.acceptsAnyModel)(data.provider) && !(0, import_registry.supportsCustomModels)(data.provider)) {
128
+ try {
129
+ const cap = (0, import_registry.getMaxInputTokensForModel)(data.provider, data.model);
130
+ if (data.maxInputTokens > cap) {
131
+ ctx.addIssue({
132
+ code: import_zod.z.ZodIssueCode.custom,
133
+ path: ["maxInputTokens"],
134
+ message: `Max input tokens for model '${data.model}' is ${cap}. You provided ${data.maxInputTokens}`,
135
+ params: {
136
+ code: import_error_codes.LLMErrorCode.TOKENS_EXCEEDED,
137
+ scope: import_types.ErrorScope.LLM,
138
+ type: import_types.ErrorType.USER
139
+ }
140
+ });
141
+ }
142
+ } catch (error) {
143
+ if (error instanceof import_errors.DextoRuntimeError && error.code === import_error_codes.LLMErrorCode.MODEL_UNKNOWN) {
144
+ ctx.addIssue({
145
+ code: import_zod.z.ZodIssueCode.custom,
146
+ path: ["model"],
147
+ message: error.message,
148
+ params: {
149
+ code: error.code,
150
+ scope: error.scope,
151
+ type: error.type
152
+ }
153
+ });
154
+ } else {
155
+ const message = error instanceof Error ? error.message : "Unknown error occurred";
156
+ ctx.addIssue({
157
+ code: import_zod.z.ZodIssueCode.custom,
158
+ path: ["model"],
159
+ message,
160
+ params: {
161
+ code: import_error_codes.LLMErrorCode.REQUEST_INVALID_SCHEMA,
162
+ scope: import_types.ErrorScope.LLM,
163
+ type: import_types.ErrorType.SYSTEM
164
+ }
165
+ });
166
+ }
161
167
  }
162
168
  }
163
169
  }
164
- }
165
- }).brand();
170
+ }).brand();
171
+ }
172
+ const LLMConfigSchema = createLLMConfigSchema({ strict: true });
173
+ const LLMConfigSchemaRelaxed = createLLMConfigSchema({ strict: false });
166
174
  const LLMUpdatesSchema = import_zod.z.object({ ...LLMConfigFields }).partial().superRefine((data, ctx) => {
167
175
  if (!data.model && !data.provider) {
168
176
  ctx.addIssue({
@@ -176,5 +184,7 @@ const LLMUpdatesSchema = import_zod.z.object({ ...LLMConfigFields }).partial().s
176
184
  0 && (module.exports = {
177
185
  LLMConfigBaseSchema,
178
186
  LLMConfigSchema,
179
- LLMUpdatesSchema
187
+ LLMConfigSchemaRelaxed,
188
+ LLMUpdatesSchema,
189
+ createLLMConfigSchema
180
190
  });