@dexto/core 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) hide show
  1. package/README.md +36 -0
  2. package/dist/agent/DextoAgent.cjs +22 -3
  3. package/dist/agent/DextoAgent.d.ts +19 -2
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +23 -4
  6. package/dist/agent/index.cjs +4 -1
  7. package/dist/agent/index.d.ts +1 -1
  8. package/dist/agent/index.d.ts.map +1 -1
  9. package/dist/agent/index.js +5 -1
  10. package/dist/agent/schemas.cjs +90 -71
  11. package/dist/agent/schemas.d.ts +5959 -96
  12. package/dist/agent/schemas.d.ts.map +1 -1
  13. package/dist/agent/schemas.js +87 -66
  14. package/dist/approval/manager.cjs +165 -1
  15. package/dist/approval/manager.d.ts +91 -2
  16. package/dist/approval/manager.d.ts.map +1 -1
  17. package/dist/approval/manager.js +155 -1
  18. package/dist/approval/schemas.cjs +39 -3
  19. package/dist/approval/schemas.d.ts +238 -1
  20. package/dist/approval/schemas.d.ts.map +1 -1
  21. package/dist/approval/schemas.js +35 -3
  22. package/dist/approval/types.cjs +1 -0
  23. package/dist/approval/types.d.ts +26 -1
  24. package/dist/approval/types.d.ts.map +1 -1
  25. package/dist/approval/types.js +1 -0
  26. package/dist/context/compaction/factory.cjs +57 -0
  27. package/dist/context/compaction/factory.d.ts +17 -0
  28. package/dist/context/compaction/factory.d.ts.map +1 -0
  29. package/dist/context/compaction/factory.js +34 -0
  30. package/dist/context/compaction/index.cjs +49 -0
  31. package/dist/context/compaction/index.d.ts +11 -0
  32. package/dist/context/compaction/index.d.ts.map +1 -0
  33. package/dist/context/compaction/index.js +19 -0
  34. package/dist/context/{compression → compaction}/overflow.cjs +3 -3
  35. package/dist/context/{compression → compaction}/overflow.d.ts +4 -4
  36. package/dist/context/compaction/overflow.d.ts.map +1 -0
  37. package/dist/context/{compression → compaction}/overflow.js +2 -2
  38. package/dist/context/compaction/provider.cjs +16 -0
  39. package/dist/context/compaction/provider.d.ts +48 -0
  40. package/dist/context/compaction/provider.d.ts.map +1 -0
  41. package/dist/context/compaction/providers/noop-provider.cjs +48 -0
  42. package/dist/context/compaction/providers/noop-provider.d.ts +24 -0
  43. package/dist/context/compaction/providers/noop-provider.d.ts.map +1 -0
  44. package/dist/context/compaction/providers/noop-provider.js +24 -0
  45. package/dist/context/compaction/providers/reactive-overflow-provider.cjs +61 -0
  46. package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +36 -0
  47. package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +1 -0
  48. package/dist/context/compaction/providers/reactive-overflow-provider.js +37 -0
  49. package/dist/context/compaction/registry.cjs +39 -0
  50. package/dist/context/compaction/registry.d.ts +19 -0
  51. package/dist/context/compaction/registry.d.ts.map +1 -0
  52. package/dist/context/compaction/registry.js +16 -0
  53. package/dist/context/compaction/schemas.cjs +38 -0
  54. package/dist/context/compaction/schemas.d.ts +24 -0
  55. package/dist/context/compaction/schemas.d.ts.map +1 -0
  56. package/dist/context/compaction/schemas.js +14 -0
  57. package/dist/context/compaction/strategies/noop.cjs +36 -0
  58. package/dist/context/compaction/strategies/noop.d.ts +18 -0
  59. package/dist/context/compaction/strategies/noop.d.ts.map +1 -0
  60. package/dist/context/compaction/strategies/noop.js +13 -0
  61. package/dist/context/{compression → compaction/strategies}/reactive-overflow.cjs +3 -3
  62. package/dist/context/{compression → compaction/strategies}/reactive-overflow.d.ts +6 -6
  63. package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +1 -0
  64. package/dist/context/{compression → compaction/strategies}/reactive-overflow.js +4 -4
  65. package/dist/context/{compression → compaction}/types.d.ts +4 -4
  66. package/dist/context/compaction/types.d.ts.map +1 -0
  67. package/dist/context/compaction/types.js +0 -0
  68. package/dist/context/error-codes.cjs +4 -0
  69. package/dist/context/error-codes.d.ts +4 -0
  70. package/dist/context/error-codes.d.ts.map +1 -1
  71. package/dist/context/error-codes.js +4 -0
  72. package/dist/context/errors.cjs +40 -0
  73. package/dist/context/errors.d.ts +14 -0
  74. package/dist/context/errors.d.ts.map +1 -1
  75. package/dist/context/errors.js +40 -0
  76. package/dist/context/index.cjs +3 -1
  77. package/dist/context/index.d.ts +1 -0
  78. package/dist/context/index.d.ts.map +1 -1
  79. package/dist/context/index.js +1 -0
  80. package/dist/context/types.d.ts +6 -0
  81. package/dist/context/types.d.ts.map +1 -1
  82. package/dist/context/utils.cjs +27 -7
  83. package/dist/context/utils.d.ts.map +1 -1
  84. package/dist/context/utils.js +27 -7
  85. package/dist/errors/result-bridge.cjs +2 -3
  86. package/dist/errors/result-bridge.d.ts.map +1 -1
  87. package/dist/errors/result-bridge.js +2 -3
  88. package/dist/events/index.cjs +6 -3
  89. package/dist/events/index.d.ts +35 -19
  90. package/dist/events/index.d.ts.map +1 -1
  91. package/dist/events/index.js +5 -3
  92. package/dist/filesystem/filesystem-service.cjs +39 -0
  93. package/dist/filesystem/filesystem-service.d.ts +32 -0
  94. package/dist/filesystem/filesystem-service.d.ts.map +1 -1
  95. package/dist/filesystem/filesystem-service.js +39 -0
  96. package/dist/filesystem/index.d.ts +1 -1
  97. package/dist/filesystem/index.d.ts.map +1 -1
  98. package/dist/filesystem/path-validator.cjs +69 -1
  99. package/dist/filesystem/path-validator.d.ts +43 -2
  100. package/dist/filesystem/path-validator.d.ts.map +1 -1
  101. package/dist/filesystem/path-validator.js +69 -1
  102. package/dist/image/define-image.cjs +146 -0
  103. package/dist/image/define-image.d.ts +71 -0
  104. package/dist/image/define-image.d.ts.map +1 -0
  105. package/dist/image/define-image.js +121 -0
  106. package/dist/image/index.cjs +32 -0
  107. package/dist/image/index.d.ts +53 -0
  108. package/dist/image/index.d.ts.map +1 -0
  109. package/dist/image/index.js +7 -0
  110. package/dist/image/types.cjs +16 -0
  111. package/dist/image/types.d.ts +231 -0
  112. package/dist/image/types.d.ts.map +1 -0
  113. package/dist/image/types.js +0 -0
  114. package/dist/index.cjs +5 -1
  115. package/dist/index.d.ts +2 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +2 -0
  118. package/dist/llm/error-codes.cjs +1 -0
  119. package/dist/llm/error-codes.d.ts +1 -0
  120. package/dist/llm/error-codes.d.ts.map +1 -1
  121. package/dist/llm/error-codes.js +1 -0
  122. package/dist/llm/errors.cjs +24 -0
  123. package/dist/llm/errors.d.ts +19 -6
  124. package/dist/llm/errors.d.ts.map +1 -1
  125. package/dist/llm/errors.js +24 -0
  126. package/dist/llm/executor/provider-options.cjs +87 -0
  127. package/dist/llm/executor/provider-options.d.ts +49 -0
  128. package/dist/llm/executor/provider-options.d.ts.map +1 -0
  129. package/dist/llm/executor/provider-options.js +63 -0
  130. package/dist/llm/executor/stream-processor.cjs +22 -11
  131. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  132. package/dist/llm/executor/stream-processor.js +22 -11
  133. package/dist/llm/executor/turn-executor.cjs +60 -23
  134. package/dist/llm/executor/turn-executor.d.ts +7 -5
  135. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  136. package/dist/llm/executor/turn-executor.js +60 -23
  137. package/dist/llm/formatters/vercel.cjs +15 -3
  138. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  139. package/dist/llm/formatters/vercel.js +15 -3
  140. package/dist/llm/index.cjs +18 -1
  141. package/dist/llm/index.d.ts +2 -0
  142. package/dist/llm/index.d.ts.map +1 -1
  143. package/dist/llm/index.js +14 -0
  144. package/dist/llm/providers/local/ai-sdk-adapter.cjs +308 -0
  145. package/dist/llm/providers/local/ai-sdk-adapter.d.ts +29 -0
  146. package/dist/llm/providers/local/ai-sdk-adapter.d.ts.map +1 -0
  147. package/dist/llm/providers/local/ai-sdk-adapter.js +278 -0
  148. package/dist/llm/providers/local/downloader.cjs +291 -0
  149. package/dist/llm/providers/local/downloader.d.ts +82 -0
  150. package/dist/llm/providers/local/downloader.d.ts.map +1 -0
  151. package/dist/llm/providers/local/downloader.js +251 -0
  152. package/dist/llm/providers/local/error-codes.cjs +57 -0
  153. package/dist/llm/providers/local/error-codes.d.ts +66 -0
  154. package/dist/llm/providers/local/error-codes.d.ts.map +1 -0
  155. package/dist/llm/providers/local/error-codes.js +34 -0
  156. package/dist/llm/providers/local/errors.cjs +240 -0
  157. package/dist/llm/providers/local/errors.d.ts +31 -0
  158. package/dist/llm/providers/local/errors.d.ts.map +1 -0
  159. package/dist/llm/providers/local/errors.js +217 -0
  160. package/dist/llm/providers/local/gpu-detector.cjs +214 -0
  161. package/dist/llm/providers/local/gpu-detector.d.ts +28 -0
  162. package/dist/llm/providers/local/gpu-detector.d.ts.map +1 -0
  163. package/dist/llm/providers/local/gpu-detector.js +178 -0
  164. package/dist/llm/providers/local/index.cjs +147 -0
  165. package/dist/llm/providers/local/index.d.ts +21 -0
  166. package/dist/llm/providers/local/index.d.ts.map +1 -0
  167. package/dist/llm/providers/local/index.js +126 -0
  168. package/dist/llm/providers/local/node-llama-provider.cjs +216 -0
  169. package/dist/llm/providers/local/node-llama-provider.d.ts +90 -0
  170. package/dist/llm/providers/local/node-llama-provider.d.ts.map +1 -0
  171. package/dist/llm/providers/local/node-llama-provider.js +176 -0
  172. package/dist/llm/providers/local/ollama-provider.cjs +230 -0
  173. package/dist/llm/providers/local/ollama-provider.d.ts +70 -0
  174. package/dist/llm/providers/local/ollama-provider.d.ts.map +1 -0
  175. package/dist/llm/providers/local/ollama-provider.js +198 -0
  176. package/dist/llm/providers/local/registry.cjs +343 -0
  177. package/dist/llm/providers/local/registry.d.ts +51 -0
  178. package/dist/llm/providers/local/registry.d.ts.map +1 -0
  179. package/dist/llm/providers/local/registry.js +312 -0
  180. package/dist/llm/providers/local/schemas.cjs +169 -0
  181. package/dist/llm/providers/local/schemas.d.ts +395 -0
  182. package/dist/llm/providers/local/schemas.d.ts.map +1 -0
  183. package/dist/llm/providers/local/schemas.js +133 -0
  184. package/dist/llm/providers/local/types.cjs +16 -0
  185. package/dist/llm/providers/local/types.d.ts +219 -0
  186. package/dist/llm/providers/local/types.d.ts.map +1 -0
  187. package/dist/llm/providers/local/types.js +0 -0
  188. package/dist/llm/providers/openrouter-model-registry.cjs +350 -0
  189. package/dist/llm/providers/openrouter-model-registry.d.ts +120 -0
  190. package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -0
  191. package/dist/llm/providers/openrouter-model-registry.js +309 -0
  192. package/dist/llm/registry.cjs +604 -9
  193. package/dist/llm/registry.d.ts +35 -0
  194. package/dist/llm/registry.d.ts.map +1 -1
  195. package/dist/llm/registry.js +600 -9
  196. package/dist/llm/resolver.cjs +63 -5
  197. package/dist/llm/resolver.d.ts +3 -3
  198. package/dist/llm/resolver.d.ts.map +1 -1
  199. package/dist/llm/resolver.js +69 -6
  200. package/dist/llm/schemas.cjs +107 -81
  201. package/dist/llm/schemas.d.ts +181 -22
  202. package/dist/llm/schemas.d.ts.map +1 -1
  203. package/dist/llm/schemas.js +107 -81
  204. package/dist/llm/services/factory.cjs +87 -13
  205. package/dist/llm/services/factory.d.ts +4 -1
  206. package/dist/llm/services/factory.d.ts.map +1 -1
  207. package/dist/llm/services/factory.js +85 -12
  208. package/dist/llm/services/test-utils.integration.cjs +22 -2
  209. package/dist/llm/services/test-utils.integration.d.ts +7 -1
  210. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  211. package/dist/llm/services/test-utils.integration.js +26 -3
  212. package/dist/llm/services/vercel.cjs +8 -3
  213. package/dist/llm/services/vercel.d.ts +3 -2
  214. package/dist/llm/services/vercel.d.ts.map +1 -1
  215. package/dist/llm/services/vercel.js +8 -3
  216. package/dist/llm/types.cjs +11 -1
  217. package/dist/llm/types.d.ts +1 -1
  218. package/dist/llm/types.d.ts.map +1 -1
  219. package/dist/llm/types.js +11 -1
  220. package/dist/logger/logger.cjs +7 -3
  221. package/dist/logger/logger.d.ts.map +1 -1
  222. package/dist/logger/logger.js +7 -3
  223. package/dist/mcp/manager.cjs +8 -0
  224. package/dist/mcp/manager.d.ts +17 -0
  225. package/dist/mcp/manager.d.ts.map +1 -1
  226. package/dist/mcp/manager.js +8 -0
  227. package/dist/mcp/mcp-client.cjs +0 -3
  228. package/dist/mcp/mcp-client.d.ts.map +1 -1
  229. package/dist/mcp/mcp-client.js +0 -3
  230. package/dist/memory/schemas.d.ts +3 -3
  231. package/dist/plugins/error-codes.cjs +3 -0
  232. package/dist/plugins/error-codes.d.ts +7 -1
  233. package/dist/plugins/error-codes.d.ts.map +1 -1
  234. package/dist/plugins/error-codes.js +3 -0
  235. package/dist/plugins/index.cjs +7 -0
  236. package/dist/plugins/index.d.ts +4 -2
  237. package/dist/plugins/index.d.ts.map +1 -1
  238. package/dist/plugins/index.js +6 -1
  239. package/dist/plugins/manager.cjs +92 -7
  240. package/dist/plugins/manager.d.ts +10 -3
  241. package/dist/plugins/manager.d.ts.map +1 -1
  242. package/dist/plugins/manager.js +92 -7
  243. package/dist/plugins/registry.cjs +63 -0
  244. package/dist/plugins/registry.d.ts +101 -0
  245. package/dist/plugins/registry.d.ts.map +1 -0
  246. package/dist/plugins/registry.js +39 -0
  247. package/dist/plugins/schemas.cjs +17 -5
  248. package/dist/plugins/schemas.d.ts +62 -5
  249. package/dist/plugins/schemas.d.ts.map +1 -1
  250. package/dist/plugins/schemas.js +15 -4
  251. package/dist/providers/base-registry.cjs +147 -0
  252. package/dist/providers/base-registry.d.ts +147 -0
  253. package/dist/providers/base-registry.d.ts.map +1 -0
  254. package/dist/providers/base-registry.js +123 -0
  255. package/dist/providers/discovery.cjs +109 -0
  256. package/dist/providers/discovery.d.ts +96 -0
  257. package/dist/providers/discovery.d.ts.map +1 -0
  258. package/dist/providers/discovery.js +84 -0
  259. package/dist/providers/index.cjs +24 -0
  260. package/dist/providers/index.d.ts +32 -0
  261. package/dist/providers/index.d.ts.map +1 -0
  262. package/dist/providers/index.js +2 -0
  263. package/dist/resources/reference-parser.cjs +3 -3
  264. package/dist/resources/reference-parser.d.ts.map +1 -1
  265. package/dist/resources/reference-parser.js +3 -3
  266. package/dist/session/chat-session.cjs +20 -3
  267. package/dist/session/chat-session.d.ts.map +1 -1
  268. package/dist/session/chat-session.js +21 -4
  269. package/dist/session/history/database.cjs +49 -15
  270. package/dist/session/history/database.d.ts.map +1 -1
  271. package/dist/session/history/database.js +49 -15
  272. package/dist/session/session-manager.cjs +2 -1
  273. package/dist/session/session-manager.d.ts.map +1 -1
  274. package/dist/session/session-manager.js +2 -1
  275. package/dist/storage/blob/factory.cjs +8 -11
  276. package/dist/storage/blob/factory.d.ts +32 -6
  277. package/dist/storage/blob/factory.d.ts.map +1 -1
  278. package/dist/storage/blob/factory.js +8 -11
  279. package/dist/storage/blob/index.cjs +56 -0
  280. package/dist/storage/blob/index.d.ts +45 -0
  281. package/dist/storage/blob/index.d.ts.map +1 -0
  282. package/dist/storage/blob/index.js +30 -0
  283. package/dist/storage/blob/provider.cjs +16 -0
  284. package/dist/storage/blob/provider.d.ts +50 -0
  285. package/dist/storage/blob/provider.d.ts.map +1 -0
  286. package/dist/storage/blob/provider.js +0 -0
  287. package/dist/storage/blob/providers/index.cjs +31 -0
  288. package/dist/storage/blob/providers/index.d.ts +8 -0
  289. package/dist/storage/blob/providers/index.d.ts.map +1 -0
  290. package/dist/storage/blob/providers/index.js +7 -0
  291. package/dist/storage/blob/providers/local.cjs +39 -0
  292. package/dist/storage/blob/providers/local.d.ts +17 -0
  293. package/dist/storage/blob/providers/local.d.ts.map +1 -0
  294. package/dist/storage/blob/providers/local.js +16 -0
  295. package/dist/storage/blob/providers/memory.cjs +39 -0
  296. package/dist/storage/blob/providers/memory.d.ts +17 -0
  297. package/dist/storage/blob/providers/memory.d.ts.map +1 -0
  298. package/dist/storage/blob/providers/memory.js +16 -0
  299. package/dist/storage/blob/registry.cjs +50 -0
  300. package/dist/storage/blob/registry.d.ts +42 -0
  301. package/dist/storage/blob/registry.d.ts.map +1 -0
  302. package/dist/storage/blob/registry.js +26 -0
  303. package/dist/storage/blob/schemas.cjs +9 -12
  304. package/dist/storage/blob/schemas.d.ts +39 -34
  305. package/dist/storage/blob/schemas.d.ts.map +1 -1
  306. package/dist/storage/blob/schemas.js +6 -11
  307. package/dist/storage/cache/factory.cjs +8 -36
  308. package/dist/storage/cache/factory.d.ts +32 -7
  309. package/dist/storage/cache/factory.d.ts.map +1 -1
  310. package/dist/storage/cache/factory.js +8 -26
  311. package/dist/storage/cache/index.cjs +53 -0
  312. package/dist/storage/cache/index.d.ts +44 -0
  313. package/dist/storage/cache/index.d.ts.map +1 -0
  314. package/dist/storage/cache/index.js +28 -0
  315. package/dist/storage/cache/provider.cjs +16 -0
  316. package/dist/storage/cache/provider.d.ts +56 -0
  317. package/dist/storage/cache/provider.d.ts.map +1 -0
  318. package/dist/storage/cache/provider.js +0 -0
  319. package/dist/storage/cache/providers/index.cjs +31 -0
  320. package/dist/storage/cache/providers/index.d.ts +8 -0
  321. package/dist/storage/cache/providers/index.d.ts.map +1 -0
  322. package/dist/storage/cache/providers/index.js +7 -0
  323. package/dist/storage/cache/providers/memory.cjs +40 -0
  324. package/dist/storage/cache/providers/memory.d.ts +17 -0
  325. package/dist/storage/cache/providers/memory.d.ts.map +1 -0
  326. package/dist/storage/cache/providers/memory.js +17 -0
  327. package/dist/storage/cache/providers/redis.cjs +66 -0
  328. package/dist/storage/cache/providers/redis.d.ts +20 -0
  329. package/dist/storage/cache/providers/redis.d.ts.map +1 -0
  330. package/dist/storage/cache/providers/redis.js +33 -0
  331. package/dist/storage/cache/registry.cjs +50 -0
  332. package/dist/storage/cache/registry.d.ts +42 -0
  333. package/dist/storage/cache/registry.d.ts.map +1 -0
  334. package/dist/storage/cache/registry.js +26 -0
  335. package/dist/storage/cache/schemas.cjs +6 -2
  336. package/dist/storage/cache/schemas.d.ts +2 -3
  337. package/dist/storage/cache/schemas.d.ts.map +1 -1
  338. package/dist/storage/cache/schemas.js +3 -1
  339. package/dist/storage/database/factory.cjs +8 -47
  340. package/dist/storage/database/factory.d.ts +34 -8
  341. package/dist/storage/database/factory.d.ts.map +1 -1
  342. package/dist/storage/database/factory.js +8 -37
  343. package/dist/storage/database/index.cjs +58 -0
  344. package/dist/storage/database/index.d.ts +45 -0
  345. package/dist/storage/database/index.d.ts.map +1 -0
  346. package/dist/storage/database/index.js +37 -0
  347. package/dist/storage/database/postgres-store.cjs +174 -78
  348. package/dist/storage/database/postgres-store.d.ts +19 -0
  349. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  350. package/dist/storage/database/postgres-store.js +174 -78
  351. package/dist/storage/database/provider.cjs +16 -0
  352. package/dist/storage/database/provider.d.ts +56 -0
  353. package/dist/storage/database/provider.d.ts.map +1 -0
  354. package/dist/storage/database/provider.js +0 -0
  355. package/dist/storage/database/providers/index.cjs +34 -0
  356. package/dist/storage/database/providers/index.d.ts +9 -0
  357. package/dist/storage/database/providers/index.d.ts.map +1 -0
  358. package/dist/storage/database/providers/index.js +9 -0
  359. package/dist/storage/database/providers/memory.cjs +40 -0
  360. package/dist/storage/database/providers/memory.d.ts +16 -0
  361. package/dist/storage/database/providers/memory.d.ts.map +1 -0
  362. package/dist/storage/database/providers/memory.js +17 -0
  363. package/dist/storage/database/providers/postgres.cjs +62 -0
  364. package/dist/storage/database/providers/postgres.d.ts +19 -0
  365. package/dist/storage/database/providers/postgres.d.ts.map +1 -0
  366. package/dist/storage/database/providers/postgres.js +29 -0
  367. package/dist/storage/database/providers/sqlite.cjs +66 -0
  368. package/dist/storage/database/providers/sqlite.d.ts +20 -0
  369. package/dist/storage/database/providers/sqlite.d.ts.map +1 -0
  370. package/dist/storage/database/providers/sqlite.js +33 -0
  371. package/dist/storage/database/registry.cjs +50 -0
  372. package/dist/storage/database/registry.d.ts +42 -0
  373. package/dist/storage/database/registry.d.ts.map +1 -0
  374. package/dist/storage/database/registry.js +26 -0
  375. package/dist/storage/database/schemas.cjs +12 -3
  376. package/dist/storage/database/schemas.d.ts +11 -4
  377. package/dist/storage/database/schemas.d.ts.map +1 -1
  378. package/dist/storage/database/schemas.js +8 -2
  379. package/dist/storage/error-codes.cjs +6 -0
  380. package/dist/storage/error-codes.d.ts +7 -1
  381. package/dist/storage/error-codes.d.ts.map +1 -1
  382. package/dist/storage/error-codes.js +6 -0
  383. package/dist/storage/errors.cjs +80 -0
  384. package/dist/storage/errors.d.ts +24 -0
  385. package/dist/storage/errors.d.ts.map +1 -1
  386. package/dist/storage/errors.js +80 -0
  387. package/dist/storage/index.cjs +47 -4
  388. package/dist/storage/index.d.ts +34 -8
  389. package/dist/storage/index.d.ts.map +1 -1
  390. package/dist/storage/index.js +32 -3
  391. package/dist/storage/schemas.cjs +4 -0
  392. package/dist/storage/schemas.d.ts +24 -50
  393. package/dist/storage/schemas.d.ts.map +1 -1
  394. package/dist/storage/schemas.js +5 -1
  395. package/dist/storage/storage-manager.cjs +6 -6
  396. package/dist/storage/storage-manager.d.ts.map +1 -1
  397. package/dist/storage/storage-manager.js +3 -3
  398. package/dist/systemPrompt/in-built-prompts.cjs +7 -6
  399. package/dist/systemPrompt/in-built-prompts.d.ts +2 -2
  400. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
  401. package/dist/systemPrompt/in-built-prompts.js +6 -5
  402. package/dist/systemPrompt/registry.cjs +2 -2
  403. package/dist/systemPrompt/registry.d.ts +1 -1
  404. package/dist/systemPrompt/registry.d.ts.map +1 -1
  405. package/dist/systemPrompt/registry.js +2 -2
  406. package/dist/systemPrompt/schemas.cjs +2 -2
  407. package/dist/systemPrompt/schemas.d.ts +13 -13
  408. package/dist/systemPrompt/schemas.js +2 -2
  409. package/dist/tools/custom-tool-registry.cjs +64 -0
  410. package/dist/tools/custom-tool-registry.d.ts +126 -0
  411. package/dist/tools/custom-tool-registry.d.ts.map +1 -0
  412. package/dist/tools/custom-tool-registry.js +40 -0
  413. package/dist/tools/custom-tool-schema-registry.cjs +164 -0
  414. package/dist/tools/custom-tool-schema-registry.d.ts +86 -0
  415. package/dist/tools/custom-tool-schema-registry.d.ts.map +1 -0
  416. package/dist/tools/custom-tool-schema-registry.js +140 -0
  417. package/dist/tools/error-codes.cjs +3 -0
  418. package/dist/tools/error-codes.d.ts +4 -1
  419. package/dist/tools/error-codes.d.ts.map +1 -1
  420. package/dist/tools/error-codes.js +3 -0
  421. package/dist/tools/errors.cjs +41 -0
  422. package/dist/tools/errors.d.ts +17 -0
  423. package/dist/tools/errors.d.ts.map +1 -1
  424. package/dist/tools/errors.js +41 -0
  425. package/dist/tools/index.cjs +13 -1
  426. package/dist/tools/index.d.ts +4 -0
  427. package/dist/tools/index.d.ts.map +1 -1
  428. package/dist/tools/index.js +11 -1
  429. package/dist/tools/internal-tools/constants.cjs +3 -9
  430. package/dist/tools/internal-tools/constants.d.ts +1 -1
  431. package/dist/tools/internal-tools/constants.d.ts.map +1 -1
  432. package/dist/tools/internal-tools/constants.js +3 -9
  433. package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +113 -0
  434. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +30 -0
  435. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +1 -0
  436. package/dist/tools/internal-tools/implementations/get-resource-tool.js +90 -0
  437. package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +91 -0
  438. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +24 -0
  439. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +1 -0
  440. package/dist/tools/internal-tools/implementations/list-resources-tool.js +68 -0
  441. package/dist/tools/internal-tools/provider.cjs +153 -23
  442. package/dist/tools/internal-tools/provider.d.ts +55 -10
  443. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  444. package/dist/tools/internal-tools/provider.js +153 -23
  445. package/dist/tools/internal-tools/registry.cjs +18 -43
  446. package/dist/tools/internal-tools/registry.d.ts +4 -4
  447. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  448. package/dist/tools/internal-tools/registry.js +18 -43
  449. package/dist/tools/schemas.cjs +20 -0
  450. package/dist/tools/schemas.d.ts +43 -1
  451. package/dist/tools/schemas.d.ts.map +1 -1
  452. package/dist/tools/schemas.js +16 -0
  453. package/dist/tools/tool-manager.cjs +140 -13
  454. package/dist/tools/tool-manager.d.ts +22 -3
  455. package/dist/tools/tool-manager.d.ts.map +1 -1
  456. package/dist/tools/tool-manager.js +140 -13
  457. package/dist/tools/types.d.ts +43 -0
  458. package/dist/tools/types.d.ts.map +1 -1
  459. package/dist/utils/api-key-resolver.cjs +19 -1
  460. package/dist/utils/api-key-resolver.d.ts.map +1 -1
  461. package/dist/utils/api-key-resolver.js +19 -1
  462. package/dist/utils/index.cjs +0 -2
  463. package/dist/utils/index.d.ts +0 -1
  464. package/dist/utils/index.d.ts.map +1 -1
  465. package/dist/utils/index.js +0 -1
  466. package/dist/utils/redactor.cjs +18 -3
  467. package/dist/utils/redactor.d.ts +0 -7
  468. package/dist/utils/redactor.d.ts.map +1 -1
  469. package/dist/utils/redactor.js +18 -3
  470. package/dist/utils/service-initializer.cjs +9 -35
  471. package/dist/utils/service-initializer.d.ts.map +1 -1
  472. package/dist/utils/service-initializer.js +9 -35
  473. package/package.json +5 -2
  474. package/dist/context/compression/overflow.d.ts.map +0 -1
  475. package/dist/context/compression/reactive-overflow.d.ts.map +0 -1
  476. package/dist/context/compression/types.d.ts.map +0 -1
  477. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +0 -130
  478. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +0 -13
  479. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +0 -1
  480. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +0 -97
  481. package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +0 -49
  482. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +0 -12
  483. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +0 -1
  484. package/dist/tools/internal-tools/implementations/bash-output-tool.js +0 -26
  485. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +0 -127
  486. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +0 -12
  487. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +0 -1
  488. package/dist/tools/internal-tools/implementations/edit-file-tool.js +0 -104
  489. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +0 -70
  490. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +0 -12
  491. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +0 -1
  492. package/dist/tools/internal-tools/implementations/glob-files-tool.js +0 -47
  493. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +0 -86
  494. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +0 -12
  495. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +0 -1
  496. package/dist/tools/internal-tools/implementations/grep-content-tool.js +0 -63
  497. package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +0 -47
  498. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +0 -12
  499. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +0 -1
  500. package/dist/tools/internal-tools/implementations/kill-process-tool.js +0 -24
  501. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +0 -63
  502. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +0 -12
  503. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +0 -1
  504. package/dist/tools/internal-tools/implementations/read-file-tool.js +0 -40
  505. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +0 -124
  506. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +0 -12
  507. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +0 -1
  508. package/dist/tools/internal-tools/implementations/write-file-tool.js +0 -103
  509. package/dist/utils/env-file.cjs +0 -118
  510. package/dist/utils/env-file.d.ts +0 -5
  511. package/dist/utils/env-file.d.ts.map +0 -1
  512. package/dist/utils/env-file.js +0 -85
  513. /package/dist/context/{compression/types.js → compaction/provider.js} +0 -0
  514. /package/dist/context/{compression → compaction}/types.cjs +0 -0
@@ -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."
@@ -47,11 +48,26 @@ const LLMConfigFields = {
47
48
  temperature: import_zod.z.coerce.number().min(0).max(1).optional().describe("Randomness: 0 deterministic, 1 creative"),
48
49
  allowedMediaTypes: import_zod.z.array(import_zod.z.string()).optional().describe(
49
50
  'MIME type patterns for media expansion (e.g., "image/*", "application/pdf"). If omitted, uses model capabilities from registry. Supports wildcards.'
51
+ ),
52
+ // Provider-specific options
53
+ /**
54
+ * OpenAI reasoning effort level for reasoning-capable models (o1, o3, codex, gpt-5.x).
55
+ * Controls how many reasoning tokens the model generates before producing a response.
56
+ * - 'none': No reasoning, fastest responses
57
+ * - 'minimal': Barely any reasoning, very fast responses
58
+ * - 'low': Light reasoning, fast responses
59
+ * - 'medium': Balanced reasoning (OpenAI's recommended daily driver)
60
+ * - 'high': Thorough reasoning for complex tasks
61
+ * - 'xhigh': Extra high reasoning for quality-critical, non-latency-sensitive tasks
62
+ */
63
+ reasoningEffort: import_zod.z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional().describe(
64
+ "OpenAI reasoning effort level for reasoning models (o1, o3, codex). Options: 'none', 'minimal', 'low', 'medium' (recommended), 'high', 'xhigh'"
50
65
  )
51
66
  };
52
67
  const LLMConfigBaseSchema = import_zod.z.object({
53
68
  provider: LLMConfigFields.provider,
54
69
  model: LLMConfigFields.model,
70
+ // apiKey is optional at schema level - validated based on provider in superRefine
55
71
  apiKey: LLMConfigFields.apiKey,
56
72
  // Apply defaults only for complete config validation
57
73
  maxIterations: import_zod.z.coerce.number().int().positive().default(50),
@@ -59,110 +75,118 @@ const LLMConfigBaseSchema = import_zod.z.object({
59
75
  maxInputTokens: LLMConfigFields.maxInputTokens,
60
76
  maxOutputTokens: LLMConfigFields.maxOutputTokens,
61
77
  temperature: LLMConfigFields.temperature,
62
- allowedMediaTypes: LLMConfigFields.allowedMediaTypes
78
+ allowedMediaTypes: LLMConfigFields.allowedMediaTypes,
79
+ // Provider-specific options
80
+ reasoningEffort: LLMConfigFields.reasoningEffort
63
81
  }).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)) {
82
+ function createLLMConfigSchema(options = {}) {
83
+ const { strict = true } = options;
84
+ return LLMConfigBaseSchema.superRefine((data, ctx) => {
85
+ const baseURLIsSet = data.baseURL != null && data.baseURL.trim() !== "";
86
+ const maxInputTokensIsSet = data.maxInputTokens != null;
87
+ if (strict && (0, import_registry.requiresApiKey)(data.provider) && !data.apiKey?.trim()) {
88
+ const primaryVar = (0, import_api_key_resolver.getPrimaryApiKeyEnvVar)(data.provider);
84
89
  ctx.addIssue({
85
90
  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.`,
91
+ path: ["apiKey"],
92
+ message: `Missing API key for provider '${data.provider}' \u2013 set $${primaryVar}`,
88
93
  params: {
89
- code: import_error_codes.LLMErrorCode.BASE_URL_INVALID,
94
+ code: import_error_codes.LLMErrorCode.API_KEY_MISSING,
90
95
  scope: import_types.ErrorScope.LLM,
91
- type: import_types.ErrorType.USER
96
+ type: import_types.ErrorType.USER,
97
+ provider: data.provider,
98
+ envVar: primaryVar
92
99
  }
93
100
  });
94
101
  }
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)) {
102
+ if (baseURLIsSet) {
103
+ if (!(0, import_registry.supportsBaseURL)(data.provider)) {
110
104
  ctx.addIssue({
111
105
  code: import_zod.z.ZodIssueCode.custom,
112
- path: ["model"],
113
- message: `Model '${data.model}' is not supported for provider '${data.provider}'. Supported: ${supportedModelsList.join(", ")}`,
106
+ path: ["provider"],
107
+ message: `Provider '${data.provider}' does not support baseURL. Use an 'openai-compatible' provider if you need a custom base URL.`,
114
108
  params: {
115
- code: import_error_codes.LLMErrorCode.MODEL_INCOMPATIBLE,
109
+ code: import_error_codes.LLMErrorCode.BASE_URL_INVALID,
116
110
  scope: import_types.ErrorScope.LLM,
117
111
  type: import_types.ErrorType.USER
118
112
  }
119
113
  });
120
114
  }
115
+ } else if (strict && (0, import_registry.requiresBaseURL)(data.provider)) {
116
+ ctx.addIssue({
117
+ code: import_zod.z.ZodIssueCode.custom,
118
+ path: ["baseURL"],
119
+ message: `Provider '${data.provider}' requires a 'baseURL'.`,
120
+ params: {
121
+ code: import_error_codes.LLMErrorCode.BASE_URL_MISSING,
122
+ scope: import_types.ErrorScope.LLM,
123
+ type: import_types.ErrorType.USER
124
+ }
125
+ });
121
126
  }
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) {
127
+ if (!baseURLIsSet || (0, import_registry.supportsBaseURL)(data.provider)) {
128
+ if (!(0, import_registry.acceptsAnyModel)(data.provider) && !(0, import_registry.supportsCustomModels)(data.provider)) {
129
+ const supportedModelsList = (0, import_registry.getSupportedModels)(data.provider);
130
+ if (!(0, import_registry.isValidProviderModel)(data.provider, data.model)) {
126
131
  ctx.addIssue({
127
132
  code: import_zod.z.ZodIssueCode.custom,
128
- path: ["maxInputTokens"],
129
- message: `Max input tokens for model '${data.model}' is ${cap}. You provided ${data.maxInputTokens}`,
133
+ path: ["model"],
134
+ message: `Model '${data.model}' is not supported for provider '${data.provider}'. Supported: ${supportedModelsList.join(", ")}`,
130
135
  params: {
131
- code: import_error_codes.LLMErrorCode.TOKENS_EXCEEDED,
136
+ code: import_error_codes.LLMErrorCode.MODEL_INCOMPATIBLE,
132
137
  scope: import_types.ErrorScope.LLM,
133
138
  type: import_types.ErrorType.USER
134
139
  }
135
140
  });
136
141
  }
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
- });
142
+ }
143
+ if (maxInputTokensIsSet && !(0, import_registry.acceptsAnyModel)(data.provider) && !(0, import_registry.supportsCustomModels)(data.provider)) {
144
+ try {
145
+ const cap = (0, import_registry.getMaxInputTokensForModel)(data.provider, data.model);
146
+ if (data.maxInputTokens > cap) {
147
+ ctx.addIssue({
148
+ code: import_zod.z.ZodIssueCode.custom,
149
+ path: ["maxInputTokens"],
150
+ message: `Max input tokens for model '${data.model}' is ${cap}. You provided ${data.maxInputTokens}`,
151
+ params: {
152
+ code: import_error_codes.LLMErrorCode.TOKENS_EXCEEDED,
153
+ scope: import_types.ErrorScope.LLM,
154
+ type: import_types.ErrorType.USER
155
+ }
156
+ });
157
+ }
158
+ } catch (error) {
159
+ if (error instanceof import_errors.DextoRuntimeError && error.code === import_error_codes.LLMErrorCode.MODEL_UNKNOWN) {
160
+ ctx.addIssue({
161
+ code: import_zod.z.ZodIssueCode.custom,
162
+ path: ["model"],
163
+ message: error.message,
164
+ params: {
165
+ code: error.code,
166
+ scope: error.scope,
167
+ type: error.type
168
+ }
169
+ });
170
+ } else {
171
+ const message = error instanceof Error ? error.message : "Unknown error occurred";
172
+ ctx.addIssue({
173
+ code: import_zod.z.ZodIssueCode.custom,
174
+ path: ["model"],
175
+ message,
176
+ params: {
177
+ code: import_error_codes.LLMErrorCode.REQUEST_INVALID_SCHEMA,
178
+ scope: import_types.ErrorScope.LLM,
179
+ type: import_types.ErrorType.SYSTEM
180
+ }
181
+ });
182
+ }
161
183
  }
162
184
  }
163
185
  }
164
- }
165
- }).brand();
186
+ }).brand();
187
+ }
188
+ const LLMConfigSchema = createLLMConfigSchema({ strict: true });
189
+ const LLMConfigSchemaRelaxed = createLLMConfigSchema({ strict: false });
166
190
  const LLMUpdatesSchema = import_zod.z.object({ ...LLMConfigFields }).partial().superRefine((data, ctx) => {
167
191
  if (!data.model && !data.provider) {
168
192
  ctx.addIssue({
@@ -176,5 +200,7 @@ const LLMUpdatesSchema = import_zod.z.object({ ...LLMConfigFields }).partial().s
176
200
  0 && (module.exports = {
177
201
  LLMConfigBaseSchema,
178
202
  LLMConfigSchema,
179
- LLMUpdatesSchema
203
+ LLMConfigSchemaRelaxed,
204
+ LLMUpdatesSchema,
205
+ createLLMConfigSchema
180
206
  });