@dexto/core 1.1.11 → 1.2.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 (416) hide show
  1. package/README.md +24 -4
  2. package/dist/Dexto.cjs +4 -14
  3. package/dist/Dexto.d.ts +8 -29
  4. package/dist/Dexto.d.ts.map +1 -1
  5. package/dist/Dexto.js +4 -12
  6. package/dist/agent/DextoAgent.cjs +92 -3
  7. package/dist/agent/DextoAgent.d.ts +12 -4
  8. package/dist/agent/DextoAgent.d.ts.map +1 -1
  9. package/dist/agent/DextoAgent.js +52 -3
  10. package/dist/agent/agentCard.js +1 -0
  11. package/dist/agent/error-codes.cjs +1 -0
  12. package/dist/agent/error-codes.d.ts +1 -0
  13. package/dist/agent/error-codes.d.ts.map +1 -1
  14. package/dist/agent/error-codes.js +2 -0
  15. package/dist/agent/errors.cjs +13 -0
  16. package/dist/agent/errors.d.ts +4 -0
  17. package/dist/agent/errors.d.ts.map +1 -1
  18. package/dist/agent/errors.js +14 -0
  19. package/dist/agent/index.js +1 -0
  20. package/dist/agent/registry/error-codes.js +1 -0
  21. package/dist/agent/registry/errors.js +1 -0
  22. package/dist/agent/registry/registry.js +1 -0
  23. package/dist/agent/registry/types.js +1 -0
  24. package/dist/agent/registry/user-registry.js +1 -0
  25. package/dist/agent/schemas.cjs +6 -1
  26. package/dist/agent/schemas.d.ts +113 -3
  27. package/dist/agent/schemas.d.ts.map +1 -1
  28. package/dist/agent/schemas.js +7 -1
  29. package/dist/agent/state-manager.js +1 -0
  30. package/dist/approval/error-codes.js +1 -0
  31. package/dist/approval/errors.js +1 -0
  32. package/dist/approval/index.js +1 -0
  33. package/dist/approval/manager.cjs +30 -0
  34. package/dist/approval/manager.d.ts +23 -1
  35. package/dist/approval/manager.d.ts.map +1 -1
  36. package/dist/approval/manager.js +31 -0
  37. package/dist/approval/providers/event-based-approval-provider.js +1 -0
  38. package/dist/approval/providers/factory.js +1 -0
  39. package/dist/approval/providers/noop-approval-provider.js +1 -0
  40. package/dist/approval/schemas.cjs +36 -0
  41. package/dist/approval/schemas.d.ts +173 -0
  42. package/dist/approval/schemas.d.ts.map +1 -1
  43. package/dist/approval/schemas.js +33 -0
  44. package/dist/approval/types.cjs +1 -0
  45. package/dist/approval/types.d.ts +27 -1
  46. package/dist/approval/types.d.ts.map +1 -1
  47. package/dist/approval/types.js +2 -0
  48. package/dist/chunk-C6A6W6XS.js +53 -0
  49. package/dist/config/agent-resolver.js +1 -0
  50. package/dist/config/error-codes.js +1 -0
  51. package/dist/config/errors.js +1 -0
  52. package/dist/config/loader.js +1 -0
  53. package/dist/config/writer.js +1 -0
  54. package/dist/context/compression/middle-removal.js +1 -0
  55. package/dist/context/compression/oldest-removal.js +1 -0
  56. package/dist/context/error-codes.js +1 -0
  57. package/dist/context/errors.js +1 -0
  58. package/dist/context/index.js +1 -0
  59. package/dist/context/manager.cjs +36 -1
  60. package/dist/context/manager.d.ts.map +1 -1
  61. package/dist/context/manager.js +27 -1
  62. package/dist/context/media-helpers.js +1 -0
  63. package/dist/context/utils.cjs +102 -6
  64. package/dist/context/utils.d.ts +35 -2
  65. package/dist/context/utils.d.ts.map +1 -1
  66. package/dist/context/utils.js +100 -6
  67. package/dist/errors/DextoBaseError.js +1 -0
  68. package/dist/errors/DextoRuntimeError.js +1 -0
  69. package/dist/errors/DextoValidationError.js +1 -0
  70. package/dist/errors/index.js +1 -0
  71. package/dist/errors/result-bridge.js +1 -0
  72. package/dist/errors/types.cjs +3 -0
  73. package/dist/errors/types.d.ts +7 -2
  74. package/dist/errors/types.d.ts.map +1 -1
  75. package/dist/errors/types.js +4 -0
  76. package/dist/events/index.cjs +1 -0
  77. package/dist/events/index.d.ts +6 -2
  78. package/dist/events/index.d.ts.map +1 -1
  79. package/dist/events/index.js +2 -0
  80. package/dist/filesystem/error-codes.cjs +53 -0
  81. package/dist/filesystem/error-codes.d.ts +31 -0
  82. package/dist/filesystem/error-codes.d.ts.map +1 -0
  83. package/dist/filesystem/error-codes.js +30 -0
  84. package/dist/filesystem/errors.cjs +303 -0
  85. package/dist/filesystem/errors.d.ts +109 -0
  86. package/dist/filesystem/errors.d.ts.map +1 -0
  87. package/dist/filesystem/errors.js +280 -0
  88. package/dist/filesystem/filesystem-service.cjs +482 -0
  89. package/dist/filesystem/filesystem-service.d.ts +57 -0
  90. package/dist/filesystem/filesystem-service.d.ts.map +1 -0
  91. package/dist/filesystem/filesystem-service.js +449 -0
  92. package/dist/filesystem/index.cjs +37 -0
  93. package/dist/filesystem/index.d.ts +11 -0
  94. package/dist/filesystem/index.d.ts.map +1 -0
  95. package/dist/filesystem/index.js +11 -0
  96. package/dist/filesystem/path-validator.cjs +172 -0
  97. package/dist/filesystem/path-validator.d.ts +53 -0
  98. package/dist/filesystem/path-validator.d.ts.map +1 -0
  99. package/dist/filesystem/path-validator.js +139 -0
  100. package/dist/filesystem/types.cjs +16 -0
  101. package/dist/filesystem/types.d.ts +171 -0
  102. package/dist/filesystem/types.d.ts.map +1 -0
  103. package/dist/filesystem/types.js +0 -0
  104. package/dist/index.browser.js +1 -0
  105. package/dist/index.cjs +3 -3
  106. package/dist/index.d.ts +2 -1
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +3 -2
  109. package/dist/llm/error-codes.js +1 -0
  110. package/dist/llm/errors.js +1 -0
  111. package/dist/llm/formatters/anthropic.js +1 -0
  112. package/dist/llm/formatters/factory.js +1 -0
  113. package/dist/llm/formatters/openai.js +1 -0
  114. package/dist/llm/formatters/vercel.js +1 -0
  115. package/dist/llm/registry.cjs +15 -15
  116. package/dist/llm/registry.d.ts +1 -1
  117. package/dist/llm/registry.js +16 -15
  118. package/dist/llm/resolver.js +1 -0
  119. package/dist/llm/schemas.cjs +6 -2
  120. package/dist/llm/schemas.d.ts +10 -0
  121. package/dist/llm/schemas.d.ts.map +1 -1
  122. package/dist/llm/schemas.js +7 -2
  123. package/dist/llm/services/anthropic.cjs +67 -0
  124. package/dist/llm/services/anthropic.d.ts +6 -0
  125. package/dist/llm/services/anthropic.d.ts.map +1 -1
  126. package/dist/llm/services/anthropic.js +27 -0
  127. package/dist/llm/services/factory.js +1 -0
  128. package/dist/llm/services/openai.cjs +87 -0
  129. package/dist/llm/services/openai.d.ts +6 -0
  130. package/dist/llm/services/openai.d.ts.map +1 -1
  131. package/dist/llm/services/openai.js +47 -0
  132. package/dist/llm/services/test-utils.integration.cjs +1 -1
  133. package/dist/llm/services/test-utils.integration.js +2 -1
  134. package/dist/llm/services/vercel.cjs +144 -97
  135. package/dist/llm/services/vercel.d.ts +6 -1
  136. package/dist/llm/services/vercel.d.ts.map +1 -1
  137. package/dist/llm/services/vercel.js +105 -98
  138. package/dist/llm/tokenizer/anthropic.js +1 -0
  139. package/dist/llm/tokenizer/default.js +1 -0
  140. package/dist/llm/tokenizer/factory.js +1 -0
  141. package/dist/llm/tokenizer/google.js +1 -0
  142. package/dist/llm/tokenizer/openai.cjs +1 -1
  143. package/dist/llm/tokenizer/openai.d.ts +1 -1
  144. package/dist/llm/tokenizer/openai.js +2 -1
  145. package/dist/llm/tokenizer/types.js +1 -0
  146. package/dist/llm/types.d.ts +2 -2
  147. package/dist/llm/types.d.ts.map +1 -1
  148. package/dist/llm/types.js +1 -0
  149. package/dist/llm/validation.js +1 -0
  150. package/dist/logger/browser.js +1 -0
  151. package/dist/logger/logger.d.ts +42 -0
  152. package/dist/logger/logger.d.ts.map +1 -1
  153. package/dist/logger/logger.js +1 -0
  154. package/dist/mcp/error-codes.cjs +1 -0
  155. package/dist/mcp/error-codes.d.ts +1 -0
  156. package/dist/mcp/error-codes.d.ts.map +1 -1
  157. package/dist/mcp/error-codes.js +2 -0
  158. package/dist/mcp/errors.cjs +12 -0
  159. package/dist/mcp/errors.d.ts +7 -0
  160. package/dist/mcp/errors.d.ts.map +1 -1
  161. package/dist/mcp/errors.js +13 -0
  162. package/dist/mcp/manager.cjs +66 -16
  163. package/dist/mcp/manager.d.ts +7 -0
  164. package/dist/mcp/manager.d.ts.map +1 -1
  165. package/dist/mcp/manager.js +67 -16
  166. package/dist/mcp/mcp-client.js +1 -0
  167. package/dist/mcp/resolver.js +1 -0
  168. package/dist/mcp/schemas.js +1 -0
  169. package/dist/mcp/types.d.ts +1 -1
  170. package/dist/mcp/types.d.ts.map +1 -1
  171. package/dist/memory/error-codes.js +1 -0
  172. package/dist/memory/errors.js +1 -0
  173. package/dist/memory/index.js +1 -0
  174. package/dist/memory/manager.js +1 -0
  175. package/dist/memory/schemas.js +1 -0
  176. package/dist/plugins/builtins/content-policy.js +1 -0
  177. package/dist/plugins/builtins/response-sanitizer.js +1 -0
  178. package/dist/plugins/error-codes.js +1 -0
  179. package/dist/plugins/index.js +1 -0
  180. package/dist/plugins/loader.js +1 -0
  181. package/dist/plugins/manager.js +1 -0
  182. package/dist/plugins/registrations/builtins.js +1 -0
  183. package/dist/plugins/schemas.js +1 -0
  184. package/dist/preferences/constants.js +1 -0
  185. package/dist/preferences/error-codes.js +1 -0
  186. package/dist/preferences/errors.js +1 -0
  187. package/dist/preferences/index.js +1 -0
  188. package/dist/preferences/loader.cjs +3 -1
  189. package/dist/preferences/loader.d.ts +10 -1
  190. package/dist/preferences/loader.d.ts.map +1 -1
  191. package/dist/preferences/loader.js +4 -1
  192. package/dist/preferences/schemas.cjs +2 -1
  193. package/dist/preferences/schemas.d.ts +8 -0
  194. package/dist/preferences/schemas.d.ts.map +1 -1
  195. package/dist/preferences/schemas.js +3 -1
  196. package/dist/process/command-validator.cjs +544 -0
  197. package/dist/process/command-validator.d.ts +46 -0
  198. package/dist/process/command-validator.d.ts.map +1 -0
  199. package/dist/process/command-validator.js +521 -0
  200. package/dist/process/error-codes.cjs +47 -0
  201. package/dist/process/error-codes.d.ts +25 -0
  202. package/dist/process/error-codes.d.ts.map +1 -0
  203. package/dist/process/error-codes.js +24 -0
  204. package/dist/process/errors.cjs +244 -0
  205. package/dist/process/errors.d.ts +87 -0
  206. package/dist/process/errors.d.ts.map +1 -0
  207. package/dist/process/errors.js +221 -0
  208. package/dist/process/index.cjs +37 -0
  209. package/dist/process/index.d.ts +11 -0
  210. package/dist/process/index.d.ts.map +1 -0
  211. package/dist/process/index.js +11 -0
  212. package/dist/process/process-service.cjs +443 -0
  213. package/dist/process/process-service.d.ts +62 -0
  214. package/dist/process/process-service.d.ts.map +1 -0
  215. package/dist/process/process-service.js +410 -0
  216. package/dist/process/types.cjs +16 -0
  217. package/dist/process/types.d.ts +107 -0
  218. package/dist/process/types.d.ts.map +1 -0
  219. package/dist/process/types.js +0 -0
  220. package/dist/prompts/error-codes.js +1 -0
  221. package/dist/prompts/errors.js +1 -0
  222. package/dist/prompts/index.js +1 -0
  223. package/dist/prompts/name-validation.js +1 -0
  224. package/dist/prompts/prompt-manager.js +1 -0
  225. package/dist/prompts/providers/custom-prompt-provider.js +1 -0
  226. package/dist/prompts/providers/file-prompt-provider.js +1 -0
  227. package/dist/prompts/providers/mcp-prompt-provider.js +1 -0
  228. package/dist/prompts/providers/starter-prompt-provider.js +1 -0
  229. package/dist/prompts/schemas.js +1 -0
  230. package/dist/prompts/utils.js +1 -0
  231. package/dist/resources/error-codes.js +1 -0
  232. package/dist/resources/errors.js +1 -0
  233. package/dist/resources/handlers/blob-handler.js +1 -0
  234. package/dist/resources/handlers/factory.js +1 -0
  235. package/dist/resources/handlers/filesystem-handler.cjs +1 -1
  236. package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
  237. package/dist/resources/handlers/filesystem-handler.js +2 -1
  238. package/dist/resources/index.js +1 -0
  239. package/dist/resources/internal-provider.js +1 -0
  240. package/dist/resources/manager.js +1 -0
  241. package/dist/resources/reference-parser.js +1 -0
  242. package/dist/resources/schemas.js +1 -0
  243. package/dist/search/index.js +1 -0
  244. package/dist/search/search-service.js +1 -0
  245. package/dist/session/chat-session.cjs +2 -2
  246. package/dist/session/chat-session.d.ts +2 -2
  247. package/dist/session/chat-session.js +3 -2
  248. package/dist/session/error-codes.js +1 -0
  249. package/dist/session/errors.js +1 -0
  250. package/dist/session/history/database.js +1 -0
  251. package/dist/session/history/factory.js +1 -0
  252. package/dist/session/history/memory.js +1 -0
  253. package/dist/session/index.js +1 -0
  254. package/dist/session/schemas.js +1 -0
  255. package/dist/session/session-manager.d.ts +6 -0
  256. package/dist/session/session-manager.d.ts.map +1 -1
  257. package/dist/session/session-manager.js +1 -0
  258. package/dist/session/title-generator.js +1 -0
  259. package/dist/storage/blob/factory.cjs +3 -3
  260. package/dist/storage/blob/factory.d.ts +3 -1
  261. package/dist/storage/blob/factory.d.ts.map +1 -1
  262. package/dist/storage/blob/factory.js +4 -3
  263. package/dist/storage/blob/local-blob-store.cjs +18 -2
  264. package/dist/storage/blob/local-blob-store.d.ts +2 -1
  265. package/dist/storage/blob/local-blob-store.d.ts.map +1 -1
  266. package/dist/storage/blob/local-blob-store.js +19 -2
  267. package/dist/storage/blob/schemas.js +1 -0
  268. package/dist/storage/cache/factory.js +1 -0
  269. package/dist/storage/cache/memory-cache-store.js +1 -0
  270. package/dist/storage/cache/redis-store.js +1 -0
  271. package/dist/storage/cache/schemas.js +1 -0
  272. package/dist/storage/database/factory.cjs +7 -5
  273. package/dist/storage/database/factory.d.ts +3 -1
  274. package/dist/storage/database/factory.d.ts.map +1 -1
  275. package/dist/storage/database/factory.js +8 -5
  276. package/dist/storage/database/memory-database-store.js +1 -0
  277. package/dist/storage/database/postgres-store.js +1 -0
  278. package/dist/storage/database/schemas.cjs +1 -1
  279. package/dist/storage/database/schemas.js +2 -1
  280. package/dist/storage/database/sqlite-store.cjs +20 -2
  281. package/dist/storage/database/sqlite-store.d.ts +2 -1
  282. package/dist/storage/database/sqlite-store.d.ts.map +1 -1
  283. package/dist/storage/database/sqlite-store.js +21 -2
  284. package/dist/storage/error-codes.cjs +1 -0
  285. package/dist/storage/error-codes.d.ts +1 -0
  286. package/dist/storage/error-codes.d.ts.map +1 -1
  287. package/dist/storage/error-codes.js +2 -0
  288. package/dist/storage/errors.cjs +15 -0
  289. package/dist/storage/errors.d.ts +4 -0
  290. package/dist/storage/errors.d.ts.map +1 -1
  291. package/dist/storage/errors.js +16 -0
  292. package/dist/storage/index.js +1 -0
  293. package/dist/storage/schemas.js +1 -0
  294. package/dist/storage/storage-manager.cjs +7 -5
  295. package/dist/storage/storage-manager.d.ts +5 -2
  296. package/dist/storage/storage-manager.d.ts.map +1 -1
  297. package/dist/storage/storage-manager.js +8 -5
  298. package/dist/systemPrompt/contributors.js +1 -0
  299. package/dist/systemPrompt/error-codes.js +1 -0
  300. package/dist/systemPrompt/errors.js +1 -0
  301. package/dist/systemPrompt/in-built-prompts.js +1 -0
  302. package/dist/systemPrompt/index.js +1 -0
  303. package/dist/systemPrompt/manager.js +1 -0
  304. package/dist/systemPrompt/registry.js +1 -0
  305. package/dist/systemPrompt/schemas.js +1 -0
  306. package/dist/telemetry/decorators.cjs +175 -0
  307. package/dist/telemetry/decorators.d.ts +17 -0
  308. package/dist/telemetry/decorators.d.ts.map +1 -0
  309. package/dist/telemetry/decorators.js +157 -0
  310. package/dist/telemetry/exporters.cjs +108 -0
  311. package/dist/telemetry/exporters.d.ts +29 -0
  312. package/dist/telemetry/exporters.d.ts.map +1 -0
  313. package/dist/telemetry/exporters.js +85 -0
  314. package/dist/telemetry/index.cjs +28 -0
  315. package/dist/telemetry/index.d.ts +2 -0
  316. package/dist/telemetry/index.d.ts.map +1 -0
  317. package/dist/telemetry/index.js +5 -0
  318. package/dist/telemetry/schemas.cjs +71 -0
  319. package/dist/telemetry/schemas.d.ts +54 -0
  320. package/dist/telemetry/schemas.d.ts.map +1 -0
  321. package/dist/telemetry/schemas.js +48 -0
  322. package/dist/telemetry/telemetry.cjs +228 -0
  323. package/dist/telemetry/telemetry.d.ts +74 -0
  324. package/dist/telemetry/telemetry.d.ts.map +1 -0
  325. package/dist/telemetry/telemetry.js +205 -0
  326. package/dist/telemetry/types.cjs +16 -0
  327. package/dist/telemetry/types.d.ts +22 -0
  328. package/dist/telemetry/types.d.ts.map +1 -0
  329. package/dist/telemetry/types.js +0 -0
  330. package/dist/telemetry/utils.cjs +87 -0
  331. package/dist/telemetry/utils.d.ts +21 -0
  332. package/dist/telemetry/utils.d.ts.map +1 -0
  333. package/dist/telemetry/utils.js +62 -0
  334. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -0
  335. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -0
  336. package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -0
  337. package/dist/tools/error-codes.js +1 -0
  338. package/dist/tools/errors.js +1 -0
  339. package/dist/tools/index.js +1 -0
  340. package/dist/tools/internal-tools/constants.cjs +39 -0
  341. package/dist/tools/internal-tools/constants.d.ts +12 -0
  342. package/dist/tools/internal-tools/constants.d.ts.map +1 -0
  343. package/dist/tools/internal-tools/constants.js +16 -0
  344. package/dist/tools/internal-tools/implementations/ask-user-tool.js +1 -0
  345. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +106 -0
  346. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +13 -0
  347. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -0
  348. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +73 -0
  349. package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +49 -0
  350. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +12 -0
  351. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +1 -0
  352. package/dist/tools/internal-tools/implementations/bash-output-tool.js +26 -0
  353. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +62 -0
  354. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +12 -0
  355. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -0
  356. package/dist/tools/internal-tools/implementations/edit-file-tool.js +39 -0
  357. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +57 -0
  358. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +12 -0
  359. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -0
  360. package/dist/tools/internal-tools/implementations/glob-files-tool.js +34 -0
  361. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +71 -0
  362. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +12 -0
  363. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -0
  364. package/dist/tools/internal-tools/implementations/grep-content-tool.js +48 -0
  365. package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +47 -0
  366. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +12 -0
  367. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +1 -0
  368. package/dist/tools/internal-tools/implementations/kill-process-tool.js +24 -0
  369. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +55 -0
  370. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +12 -0
  371. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -0
  372. package/dist/tools/internal-tools/implementations/read-file-tool.js +32 -0
  373. package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -0
  374. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +56 -0
  375. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +12 -0
  376. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -0
  377. package/dist/tools/internal-tools/implementations/write-file-tool.js +33 -0
  378. package/dist/tools/internal-tools/index.cjs +3 -1
  379. package/dist/tools/internal-tools/index.d.ts +1 -0
  380. package/dist/tools/internal-tools/index.d.ts.map +1 -1
  381. package/dist/tools/internal-tools/index.js +1 -0
  382. package/dist/tools/internal-tools/provider.js +1 -0
  383. package/dist/tools/internal-tools/registry.cjs +40 -4
  384. package/dist/tools/internal-tools/registry.d.ts +5 -9
  385. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  386. package/dist/tools/internal-tools/registry.js +41 -3
  387. package/dist/tools/schemas.cjs +18 -5
  388. package/dist/tools/schemas.d.ts +30 -1
  389. package/dist/tools/schemas.d.ts.map +1 -1
  390. package/dist/tools/schemas.js +15 -2
  391. package/dist/tools/tool-manager.cjs +158 -19
  392. package/dist/tools/tool-manager.d.ts +48 -2
  393. package/dist/tools/tool-manager.d.ts.map +1 -1
  394. package/dist/tools/tool-manager.js +118 -19
  395. package/dist/utils/api-key-resolver.js +1 -0
  396. package/dist/utils/api-key-store.js +1 -0
  397. package/dist/utils/async-context.js +1 -0
  398. package/dist/utils/debug.js +1 -0
  399. package/dist/utils/env.js +1 -0
  400. package/dist/utils/error-conversion.js +1 -0
  401. package/dist/utils/execution-context.js +1 -0
  402. package/dist/utils/fs-walk.js +1 -0
  403. package/dist/utils/path.js +1 -0
  404. package/dist/utils/port-utils.js +1 -0
  405. package/dist/utils/redactor.js +1 -0
  406. package/dist/utils/result.js +1 -0
  407. package/dist/utils/safe-stringify.js +1 -0
  408. package/dist/utils/schema-metadata.js +1 -0
  409. package/dist/utils/schema.js +1 -0
  410. package/dist/utils/service-initializer.cjs +42 -4
  411. package/dist/utils/service-initializer.d.ts +2 -1
  412. package/dist/utils/service-initializer.d.ts.map +1 -1
  413. package/dist/utils/service-initializer.js +33 -4
  414. package/dist/utils/user-info.js +1 -0
  415. package/dist/utils/zod-schema-converter.js +1 -0
  416. package/package.json +11 -1
@@ -1,8 +1,15 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
8
+ var __typeError = (msg) => {
9
+ throw TypeError(msg);
10
+ };
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
13
  var __export = (target, all) => {
7
14
  for (var name in all)
8
15
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,6 +23,44 @@ var __copyProps = (to, from, except, desc) => {
16
23
  return to;
17
24
  };
18
25
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
+ var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
27
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
28
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
29
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
30
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
31
+ var __runInitializers = (array, flags, self, value) => {
32
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
33
+ return value;
34
+ };
35
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
36
+ var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
37
+ var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
38
+ var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
39
+ var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
40
+ return __privateGet(this, extra);
41
+ }, set [name](x) {
42
+ return __privateSet(this, extra, x);
43
+ } }, name));
44
+ k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
45
+ for (var i = decorators.length - 1; i >= 0; i--) {
46
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
47
+ if (k) {
48
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
49
+ if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
50
+ if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
51
+ }
52
+ it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
53
+ if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
54
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
55
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
56
+ }
57
+ return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
58
+ };
59
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
60
+ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
61
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
62
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
63
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
19
64
  var vercel_exports = {};
20
65
  __export(vercel_exports, {
21
66
  VercelLLMService: () => VercelLLMService
@@ -35,6 +80,13 @@ var import_error_conversion = require("../../utils/error-conversion.js");
35
80
  var import_error_codes2 = require("../../tools/error-codes.js");
36
81
  var import_vercel = require("../formatters/vercel.js");
37
82
  var import_factory = require("../tokenizer/factory.js");
83
+ var import_decorators = require("../../telemetry/decorators.js");
84
+ var import_api = require("@opentelemetry/api");
85
+ var _VercelLLMService_decorators, _init;
86
+ _VercelLLMService_decorators = [(0, import_decorators.InstrumentClass)({
87
+ prefix: "llm.vercel",
88
+ excludeMethods: ["getModelId", "getAllTools", "formatTools", "validateToolSupport"]
89
+ })];
38
90
  class VercelLLMService {
39
91
  model;
40
92
  config;
@@ -43,8 +95,6 @@ class VercelLLMService {
43
95
  sessionEventBus;
44
96
  sessionId;
45
97
  toolSupportCache = /* @__PURE__ */ new Map();
46
- // Map of toolCallId -> queue of raw results to emit with that callId
47
- rawResultsByCallId = /* @__PURE__ */ new Map();
48
98
  /**
49
99
  * Helper to extract model ID from LanguageModel union type (string | LanguageModelV2)
50
100
  */
@@ -86,28 +136,72 @@ class VercelLLMService {
86
136
  acc[toolName] = {
87
137
  inputSchema: (0, import_ai2.jsonSchema)(tool.parameters),
88
138
  execute: async (args, options) => {
139
+ const callId = options.toolCallId;
89
140
  try {
141
+ import_logger.logger.debug(
142
+ `[vercel] Emitting toolCall event for ${toolName} with callId ${callId}`
143
+ );
144
+ this.sessionEventBus.emit("llmservice:toolCall", {
145
+ toolName,
146
+ args,
147
+ callId
148
+ });
90
149
  const rawResult = await this.toolManager.executeTool(
91
150
  toolName,
92
151
  args,
93
152
  this.sessionId
94
153
  );
95
- const callId = options.toolCallId;
96
- const queue = this.rawResultsByCallId.get(callId) ?? [];
97
- queue.push(rawResult);
98
- this.rawResultsByCallId.set(callId, queue);
99
- const normalized = await (0, import_utils.normalizeToolResult)(rawResult);
100
- const summaryText = (0, import_utils.summarizeToolContentForText)(normalized.parts);
154
+ const persisted = await this.contextManager.addToolResult(
155
+ callId,
156
+ toolName,
157
+ rawResult,
158
+ { success: true }
159
+ );
160
+ import_logger.logger.debug(
161
+ `[vercel] Emitting toolResult event for ${toolName} with callId ${callId}`
162
+ );
163
+ this.sessionEventBus.emit("llmservice:toolResult", {
164
+ toolName,
165
+ callId,
166
+ success: true,
167
+ sanitized: persisted,
168
+ ...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult } : {}
169
+ });
170
+ const summaryText = (0, import_utils.summarizeToolContentForText)(persisted.content);
101
171
  return summaryText;
102
172
  } catch (err) {
173
+ let errorResult;
174
+ let errorFlags = "";
103
175
  if (err instanceof import_DextoRuntimeError.DextoRuntimeError && err.code === import_error_codes2.ToolErrorCode.EXECUTION_DENIED) {
104
- return { error: err.message, denied: true };
176
+ errorResult = { error: err.message, denied: true };
177
+ errorFlags = " (denied)";
178
+ } else if (err instanceof import_DextoRuntimeError.DextoRuntimeError && err.code === import_error_codes2.ToolErrorCode.CONFIRMATION_TIMEOUT) {
179
+ errorResult = { error: err.message, denied: true, timeout: true };
180
+ errorFlags = " (timeout)";
181
+ } else {
182
+ const message = err instanceof Error ? err.message : String(err);
183
+ errorResult = { error: message };
105
184
  }
106
- if (err instanceof import_DextoRuntimeError.DextoRuntimeError && err.code === import_error_codes2.ToolErrorCode.CONFIRMATION_TIMEOUT) {
107
- return { error: err.message, denied: true, timeout: true };
185
+ try {
186
+ const persisted = await this.contextManager.addToolResult(
187
+ callId,
188
+ toolName,
189
+ errorResult,
190
+ { success: false }
191
+ );
192
+ this.sessionEventBus.emit("llmservice:toolResult", {
193
+ toolName,
194
+ callId,
195
+ success: false,
196
+ sanitized: persisted,
197
+ ...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult: errorResult } : {}
198
+ });
199
+ } catch (persistErr) {
200
+ import_logger.logger.error(
201
+ `Failed to persist error result for ${toolName}: ${String(persistErr)}`
202
+ );
108
203
  }
109
- const message = err instanceof Error ? err.message : String(err);
110
- return { error: message };
204
+ return `Tool ${toolName} failed${errorFlags}: ${errorResult.error}`;
111
205
  }
112
206
  },
113
207
  ...tool.description && { description: tool.description }
@@ -241,48 +335,6 @@ class VercelLLMService {
241
335
  import_logger.logger.debug(
242
336
  `Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
243
337
  );
244
- if (step.toolCalls && step.toolCalls.length > 0) {
245
- for (const toolCall of step.toolCalls) {
246
- this.sessionEventBus.emit("llmservice:toolCall", {
247
- toolName: toolCall.toolName,
248
- args: toolCall.input,
249
- callId: toolCall.toolCallId
250
- });
251
- }
252
- }
253
- if (step.toolResults && step.toolResults.length > 0) {
254
- for (const toolResult of step.toolResults) {
255
- const callId = toolResult.toolCallId;
256
- const sanitizedFromSdk = toolResult.output;
257
- let raw;
258
- if (callId) {
259
- const q = this.rawResultsByCallId.get(callId) ?? [];
260
- raw = q.shift();
261
- if (q.length > 0) this.rawResultsByCallId.set(callId, q);
262
- else this.rawResultsByCallId.delete(callId);
263
- }
264
- try {
265
- const effectiveCallId = callId ?? `${toolResult.toolName}-${Date.now()}`;
266
- const persisted = await this.contextManager.addToolResult(
267
- effectiveCallId,
268
- toolResult.toolName,
269
- raw ?? sanitizedFromSdk,
270
- { success: true }
271
- );
272
- this.sessionEventBus.emit("llmservice:toolResult", {
273
- toolName: toolResult.toolName,
274
- callId: effectiveCallId,
275
- success: true,
276
- sanitized: persisted,
277
- ...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult: raw ?? sanitizedFromSdk } : {}
278
- });
279
- } catch (err) {
280
- import_logger.logger.error(
281
- `Failed to persist tool result for ${toolResult.toolName}: ${String(err)}`
282
- );
283
- }
284
- }
285
- }
286
338
  },
287
339
  stopWhen: (0, import_ai.stepCountIs)(maxSteps),
288
340
  ...includeMaxOutputTokens ? { maxOutputTokens } : {},
@@ -309,6 +361,23 @@ class VercelLLMService {
309
361
  }
310
362
  }
311
363
  });
364
+ const activeSpan = import_api.trace.getActiveSpan();
365
+ if (activeSpan) {
366
+ const attributes = {};
367
+ if (response.totalUsage.inputTokens !== void 0) {
368
+ attributes["gen_ai.usage.input_tokens"] = response.totalUsage.inputTokens;
369
+ }
370
+ if (response.totalUsage.outputTokens !== void 0) {
371
+ attributes["gen_ai.usage.output_tokens"] = response.totalUsage.outputTokens;
372
+ }
373
+ if (response.totalUsage.totalTokens !== void 0) {
374
+ attributes["gen_ai.usage.total_tokens"] = response.totalUsage.totalTokens;
375
+ }
376
+ if (response.totalUsage.reasoningTokens !== void 0) {
377
+ attributes["gen_ai.usage.reasoning_tokens"] = response.totalUsage.reasoningTokens;
378
+ }
379
+ activeSpan.setAttributes(attributes);
380
+ }
312
381
  await this.contextManager.processLLMResponse(response);
313
382
  if (typeof response.totalUsage.totalTokens === "number") {
314
383
  this.contextManager.updateActualTokenCount(response.totalUsage.totalTokens);
@@ -432,48 +501,6 @@ class VercelLLMService {
432
501
  import_logger.logger.debug(
433
502
  `Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
434
503
  );
435
- if (step.toolCalls && step.toolCalls.length > 0) {
436
- for (const toolCall of step.toolCalls) {
437
- this.sessionEventBus.emit("llmservice:toolCall", {
438
- toolName: toolCall.toolName,
439
- args: toolCall.input,
440
- callId: toolCall.toolCallId
441
- });
442
- }
443
- }
444
- if (step.toolResults && step.toolResults.length > 0) {
445
- for (const toolResult of step.toolResults) {
446
- const callId = toolResult.toolCallId;
447
- const sanitizedFromSdk = toolResult.output;
448
- let raw;
449
- if (callId) {
450
- const q = this.rawResultsByCallId.get(callId) ?? [];
451
- raw = q.shift();
452
- if (q.length > 0) this.rawResultsByCallId.set(callId, q);
453
- else this.rawResultsByCallId.delete(callId);
454
- }
455
- try {
456
- const effectiveCallId = callId ?? `${toolResult.toolName}-${Date.now()}`;
457
- const persisted = await this.contextManager.addToolResult(
458
- effectiveCallId,
459
- toolResult.toolName,
460
- raw ?? sanitizedFromSdk,
461
- { success: true }
462
- );
463
- this.sessionEventBus.emit("llmservice:toolResult", {
464
- toolName: toolResult.toolName,
465
- callId: effectiveCallId,
466
- success: true,
467
- sanitized: persisted,
468
- ...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult: raw ?? sanitizedFromSdk } : {}
469
- });
470
- } catch (err) {
471
- import_logger.logger.error(
472
- `Failed to persist tool result for ${toolResult.toolName}: ${String(err)}`
473
- );
474
- }
475
- }
476
- }
477
504
  },
478
505
  // No onFinish: we finalize after the stream completes below.
479
506
  stopWhen: (0, import_ai.stepCountIs)(maxSteps),
@@ -504,6 +531,23 @@ class VercelLLMService {
504
531
  ...usage.totalTokens !== void 0 && { totalTokens: usage.totalTokens }
505
532
  }
506
533
  });
534
+ const activeSpan = import_api.trace.getActiveSpan();
535
+ if (activeSpan) {
536
+ const attributes = {};
537
+ if (usage.inputTokens !== void 0) {
538
+ attributes["gen_ai.usage.input_tokens"] = usage.inputTokens;
539
+ }
540
+ if (usage.outputTokens !== void 0) {
541
+ attributes["gen_ai.usage.output_tokens"] = usage.outputTokens;
542
+ }
543
+ if (usage.totalTokens !== void 0) {
544
+ attributes["gen_ai.usage.total_tokens"] = usage.totalTokens;
545
+ }
546
+ if (usage.reasoningTokens !== void 0) {
547
+ attributes["gen_ai.usage.reasoning_tokens"] = usage.reasoningTokens;
548
+ }
549
+ activeSpan.setAttributes(attributes);
550
+ }
507
551
  if (typeof usage.totalTokens === "number") {
508
552
  this.contextManager.updateActualTokenCount(usage.totalTokens);
509
553
  }
@@ -550,6 +594,9 @@ class VercelLLMService {
550
594
  return this.contextManager;
551
595
  }
552
596
  }
597
+ _init = __decoratorStart(null);
598
+ VercelLLMService = __decorateElement(_init, 0, "VercelLLMService", _VercelLLMService_decorators, VercelLLMService);
599
+ __runInitializers(_init, 1, VercelLLMService);
553
600
  // Annotate the CommonJS export names for ESM import in node:
554
601
  0 && (module.exports = {
555
602
  VercelLLMService
@@ -12,6 +12,12 @@ import type { ValidatedLLMConfig } from '../schemas.js';
12
12
  /**
13
13
  * Vercel AI SDK implementation of LLMService
14
14
  * TODO: improve token counting logic across all LLM services - approximation isn't matching vercel actual token count properly
15
+ * TODO (Telemetry): Add OpenTelemetry metrics collection
16
+ * - LLM call counters (by provider/model)
17
+ * - Token usage histograms (input/output/total/reasoning)
18
+ * - Request latency histograms
19
+ * - Error rate counters
20
+ * See feature-plans/telemetry.md for details
15
21
  */
16
22
  export declare class VercelLLMService implements ILLMService {
17
23
  private model;
@@ -21,7 +27,6 @@ export declare class VercelLLMService implements ILLMService {
21
27
  private sessionEventBus;
22
28
  private readonly sessionId;
23
29
  private toolSupportCache;
24
- private rawResultsByCallId;
25
30
  /**
26
31
  * Helper to extract model ID from LanguageModel union type (string | LanguageModelV2)
27
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/llm/services/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,aAAa,EAEb,KAAK,YAAY,EAGpB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAc,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAI7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,WAAW;IAChD,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAAmC;IAE3D,OAAO,CAAC,kBAAkB,CAAqC;IAE/D;;OAEG;IACH,OAAO,CAAC,UAAU;gBAKd,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,aAAa,EACpB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,4BAA4B,EAC7C,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,OAAO,0BAA0B,EAAE,eAAe;IAgCvE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa;YAoD5B,mBAAmB;IA4D3B,YAAY,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,EACjC,SAAS,CAAC,EAAE,SAAS,EACrB,QAAQ,CAAC,EAAE,QAAQ,EACnB,MAAM,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,MAAM,CAAC;IAgEZ,YAAY,CACd,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,aAAa,EACpB,QAAQ,GAAE,MAAW,EACrB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC;IAiIlB,OAAO,CAAC,gBAAgB;IAgElB,UAAU,CACZ,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,aAAa,EACpB,QAAQ,GAAE,MAAW,EACrB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC;IA4KlB;;;OAGG;IACH,SAAS,IAAI,gBAAgB;IAgC7B;;OAEG;IACH,iBAAiB,IAAI,cAAc,CAAC,OAAO,CAAC;CAG/C"}
1
+ {"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/llm/services/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,aAAa,EAEb,KAAK,YAAY,EAGpB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAc,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAI7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAIxD;;;;;;;;;GASG;AACH,qBAIa,gBAAiB,YAAW,WAAW;IAChD,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAAmC;IAE3D;;OAEG;IACH,OAAO,CAAC,UAAU;gBAKd,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,aAAa,EACpB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,4BAA4B,EAC7C,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,OAAO,0BAA0B,EAAE,eAAe;IAgCvE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa;YA6G5B,mBAAmB;IA4D3B,YAAY,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,EACjC,SAAS,CAAC,EAAE,SAAS,EACrB,QAAQ,CAAC,EAAE,QAAQ,EACnB,MAAM,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,MAAM,CAAC;IAgEZ,YAAY,CACd,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,aAAa,EACpB,QAAQ,GAAE,MAAW,EACrB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC;IAuGlB,OAAO,CAAC,gBAAgB;IAgElB,UAAU,CACZ,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,aAAa,EACpB,QAAQ,GAAE,MAAW,EACrB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC;IA8IlB;;;OAGG;IACH,SAAS,IAAI,gBAAgB;IAgC7B;;OAEG;IACH,iBAAiB,IAAI,cAAc,CAAC,OAAO,CAAC;CAG/C"}
@@ -1,3 +1,9 @@
1
+ import {
2
+ __decorateElement,
3
+ __decoratorStart,
4
+ __runInitializers
5
+ } from "../../chunk-C6A6W6XS.js";
6
+ var _VercelLLMService_decorators, _init;
1
7
  import {
2
8
  generateText,
3
9
  streamText,
@@ -7,7 +13,7 @@ import {
7
13
  import { logger } from "../../logger/index.js";
8
14
  import { jsonSchema } from "ai";
9
15
  import { ContextManager } from "../../context/manager.js";
10
- import { summarizeToolContentForText, normalizeToolResult } from "../../context/utils.js";
16
+ import { summarizeToolContentForText } from "../../context/utils.js";
11
17
  import { shouldIncludeRawToolResult } from "../../utils/debug.js";
12
18
  import { getMaxInputTokensForModel, getEffectiveMaxInputTokens } from "../registry.js";
13
19
  import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
@@ -17,6 +23,12 @@ import { toError } from "../../utils/error-conversion.js";
17
23
  import { ToolErrorCode } from "../../tools/error-codes.js";
18
24
  import { VercelMessageFormatter } from "../formatters/vercel.js";
19
25
  import { createTokenizer } from "../tokenizer/factory.js";
26
+ import { InstrumentClass } from "../../telemetry/decorators.js";
27
+ import { trace } from "@opentelemetry/api";
28
+ _VercelLLMService_decorators = [InstrumentClass({
29
+ prefix: "llm.vercel",
30
+ excludeMethods: ["getModelId", "getAllTools", "formatTools", "validateToolSupport"]
31
+ })];
20
32
  class VercelLLMService {
21
33
  model;
22
34
  config;
@@ -25,8 +37,6 @@ class VercelLLMService {
25
37
  sessionEventBus;
26
38
  sessionId;
27
39
  toolSupportCache = /* @__PURE__ */ new Map();
28
- // Map of toolCallId -> queue of raw results to emit with that callId
29
- rawResultsByCallId = /* @__PURE__ */ new Map();
30
40
  /**
31
41
  * Helper to extract model ID from LanguageModel union type (string | LanguageModelV2)
32
42
  */
@@ -68,28 +78,72 @@ class VercelLLMService {
68
78
  acc[toolName] = {
69
79
  inputSchema: jsonSchema(tool.parameters),
70
80
  execute: async (args, options) => {
81
+ const callId = options.toolCallId;
71
82
  try {
83
+ logger.debug(
84
+ `[vercel] Emitting toolCall event for ${toolName} with callId ${callId}`
85
+ );
86
+ this.sessionEventBus.emit("llmservice:toolCall", {
87
+ toolName,
88
+ args,
89
+ callId
90
+ });
72
91
  const rawResult = await this.toolManager.executeTool(
73
92
  toolName,
74
93
  args,
75
94
  this.sessionId
76
95
  );
77
- const callId = options.toolCallId;
78
- const queue = this.rawResultsByCallId.get(callId) ?? [];
79
- queue.push(rawResult);
80
- this.rawResultsByCallId.set(callId, queue);
81
- const normalized = await normalizeToolResult(rawResult);
82
- const summaryText = summarizeToolContentForText(normalized.parts);
96
+ const persisted = await this.contextManager.addToolResult(
97
+ callId,
98
+ toolName,
99
+ rawResult,
100
+ { success: true }
101
+ );
102
+ logger.debug(
103
+ `[vercel] Emitting toolResult event for ${toolName} with callId ${callId}`
104
+ );
105
+ this.sessionEventBus.emit("llmservice:toolResult", {
106
+ toolName,
107
+ callId,
108
+ success: true,
109
+ sanitized: persisted,
110
+ ...shouldIncludeRawToolResult() ? { rawResult } : {}
111
+ });
112
+ const summaryText = summarizeToolContentForText(persisted.content);
83
113
  return summaryText;
84
114
  } catch (err) {
115
+ let errorResult;
116
+ let errorFlags = "";
85
117
  if (err instanceof DextoRuntimeError && err.code === ToolErrorCode.EXECUTION_DENIED) {
86
- return { error: err.message, denied: true };
118
+ errorResult = { error: err.message, denied: true };
119
+ errorFlags = " (denied)";
120
+ } else if (err instanceof DextoRuntimeError && err.code === ToolErrorCode.CONFIRMATION_TIMEOUT) {
121
+ errorResult = { error: err.message, denied: true, timeout: true };
122
+ errorFlags = " (timeout)";
123
+ } else {
124
+ const message = err instanceof Error ? err.message : String(err);
125
+ errorResult = { error: message };
87
126
  }
88
- if (err instanceof DextoRuntimeError && err.code === ToolErrorCode.CONFIRMATION_TIMEOUT) {
89
- return { error: err.message, denied: true, timeout: true };
127
+ try {
128
+ const persisted = await this.contextManager.addToolResult(
129
+ callId,
130
+ toolName,
131
+ errorResult,
132
+ { success: false }
133
+ );
134
+ this.sessionEventBus.emit("llmservice:toolResult", {
135
+ toolName,
136
+ callId,
137
+ success: false,
138
+ sanitized: persisted,
139
+ ...shouldIncludeRawToolResult() ? { rawResult: errorResult } : {}
140
+ });
141
+ } catch (persistErr) {
142
+ logger.error(
143
+ `Failed to persist error result for ${toolName}: ${String(persistErr)}`
144
+ );
90
145
  }
91
- const message = err instanceof Error ? err.message : String(err);
92
- return { error: message };
146
+ return `Tool ${toolName} failed${errorFlags}: ${errorResult.error}`;
93
147
  }
94
148
  },
95
149
  ...tool.description && { description: tool.description }
@@ -223,48 +277,6 @@ class VercelLLMService {
223
277
  logger.debug(
224
278
  `Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
225
279
  );
226
- if (step.toolCalls && step.toolCalls.length > 0) {
227
- for (const toolCall of step.toolCalls) {
228
- this.sessionEventBus.emit("llmservice:toolCall", {
229
- toolName: toolCall.toolName,
230
- args: toolCall.input,
231
- callId: toolCall.toolCallId
232
- });
233
- }
234
- }
235
- if (step.toolResults && step.toolResults.length > 0) {
236
- for (const toolResult of step.toolResults) {
237
- const callId = toolResult.toolCallId;
238
- const sanitizedFromSdk = toolResult.output;
239
- let raw;
240
- if (callId) {
241
- const q = this.rawResultsByCallId.get(callId) ?? [];
242
- raw = q.shift();
243
- if (q.length > 0) this.rawResultsByCallId.set(callId, q);
244
- else this.rawResultsByCallId.delete(callId);
245
- }
246
- try {
247
- const effectiveCallId = callId ?? `${toolResult.toolName}-${Date.now()}`;
248
- const persisted = await this.contextManager.addToolResult(
249
- effectiveCallId,
250
- toolResult.toolName,
251
- raw ?? sanitizedFromSdk,
252
- { success: true }
253
- );
254
- this.sessionEventBus.emit("llmservice:toolResult", {
255
- toolName: toolResult.toolName,
256
- callId: effectiveCallId,
257
- success: true,
258
- sanitized: persisted,
259
- ...shouldIncludeRawToolResult() ? { rawResult: raw ?? sanitizedFromSdk } : {}
260
- });
261
- } catch (err) {
262
- logger.error(
263
- `Failed to persist tool result for ${toolResult.toolName}: ${String(err)}`
264
- );
265
- }
266
- }
267
- }
268
280
  },
269
281
  stopWhen: stepCountIs(maxSteps),
270
282
  ...includeMaxOutputTokens ? { maxOutputTokens } : {},
@@ -291,6 +303,23 @@ class VercelLLMService {
291
303
  }
292
304
  }
293
305
  });
306
+ const activeSpan = trace.getActiveSpan();
307
+ if (activeSpan) {
308
+ const attributes = {};
309
+ if (response.totalUsage.inputTokens !== void 0) {
310
+ attributes["gen_ai.usage.input_tokens"] = response.totalUsage.inputTokens;
311
+ }
312
+ if (response.totalUsage.outputTokens !== void 0) {
313
+ attributes["gen_ai.usage.output_tokens"] = response.totalUsage.outputTokens;
314
+ }
315
+ if (response.totalUsage.totalTokens !== void 0) {
316
+ attributes["gen_ai.usage.total_tokens"] = response.totalUsage.totalTokens;
317
+ }
318
+ if (response.totalUsage.reasoningTokens !== void 0) {
319
+ attributes["gen_ai.usage.reasoning_tokens"] = response.totalUsage.reasoningTokens;
320
+ }
321
+ activeSpan.setAttributes(attributes);
322
+ }
294
323
  await this.contextManager.processLLMResponse(response);
295
324
  if (typeof response.totalUsage.totalTokens === "number") {
296
325
  this.contextManager.updateActualTokenCount(response.totalUsage.totalTokens);
@@ -414,48 +443,6 @@ class VercelLLMService {
414
443
  logger.debug(
415
444
  `Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
416
445
  );
417
- if (step.toolCalls && step.toolCalls.length > 0) {
418
- for (const toolCall of step.toolCalls) {
419
- this.sessionEventBus.emit("llmservice:toolCall", {
420
- toolName: toolCall.toolName,
421
- args: toolCall.input,
422
- callId: toolCall.toolCallId
423
- });
424
- }
425
- }
426
- if (step.toolResults && step.toolResults.length > 0) {
427
- for (const toolResult of step.toolResults) {
428
- const callId = toolResult.toolCallId;
429
- const sanitizedFromSdk = toolResult.output;
430
- let raw;
431
- if (callId) {
432
- const q = this.rawResultsByCallId.get(callId) ?? [];
433
- raw = q.shift();
434
- if (q.length > 0) this.rawResultsByCallId.set(callId, q);
435
- else this.rawResultsByCallId.delete(callId);
436
- }
437
- try {
438
- const effectiveCallId = callId ?? `${toolResult.toolName}-${Date.now()}`;
439
- const persisted = await this.contextManager.addToolResult(
440
- effectiveCallId,
441
- toolResult.toolName,
442
- raw ?? sanitizedFromSdk,
443
- { success: true }
444
- );
445
- this.sessionEventBus.emit("llmservice:toolResult", {
446
- toolName: toolResult.toolName,
447
- callId: effectiveCallId,
448
- success: true,
449
- sanitized: persisted,
450
- ...shouldIncludeRawToolResult() ? { rawResult: raw ?? sanitizedFromSdk } : {}
451
- });
452
- } catch (err) {
453
- logger.error(
454
- `Failed to persist tool result for ${toolResult.toolName}: ${String(err)}`
455
- );
456
- }
457
- }
458
- }
459
446
  },
460
447
  // No onFinish: we finalize after the stream completes below.
461
448
  stopWhen: stepCountIs(maxSteps),
@@ -486,6 +473,23 @@ class VercelLLMService {
486
473
  ...usage.totalTokens !== void 0 && { totalTokens: usage.totalTokens }
487
474
  }
488
475
  });
476
+ const activeSpan = trace.getActiveSpan();
477
+ if (activeSpan) {
478
+ const attributes = {};
479
+ if (usage.inputTokens !== void 0) {
480
+ attributes["gen_ai.usage.input_tokens"] = usage.inputTokens;
481
+ }
482
+ if (usage.outputTokens !== void 0) {
483
+ attributes["gen_ai.usage.output_tokens"] = usage.outputTokens;
484
+ }
485
+ if (usage.totalTokens !== void 0) {
486
+ attributes["gen_ai.usage.total_tokens"] = usage.totalTokens;
487
+ }
488
+ if (usage.reasoningTokens !== void 0) {
489
+ attributes["gen_ai.usage.reasoning_tokens"] = usage.reasoningTokens;
490
+ }
491
+ activeSpan.setAttributes(attributes);
492
+ }
489
493
  if (typeof usage.totalTokens === "number") {
490
494
  this.contextManager.updateActualTokenCount(usage.totalTokens);
491
495
  }
@@ -532,6 +536,9 @@ class VercelLLMService {
532
536
  return this.contextManager;
533
537
  }
534
538
  }
539
+ _init = __decoratorStart(null);
540
+ VercelLLMService = __decorateElement(_init, 0, "VercelLLMService", _VercelLLMService_decorators, VercelLLMService);
541
+ __runInitializers(_init, 1, VercelLLMService);
535
542
  export {
536
543
  VercelLLMService
537
544
  };
@@ -1,3 +1,4 @@
1
+ import "../../chunk-C6A6W6XS.js";
1
2
  class AnthropicTokenizer {
2
3
  /**
3
4
  * TODO: Replace with a better implementation for anthropic
@@ -1,3 +1,4 @@
1
+ import "../../chunk-C6A6W6XS.js";
1
2
  class DefaultTokenizer {
2
3
  /**
3
4
  * Assumes roughly 4 characters per token.
@@ -1,3 +1,4 @@
1
+ import "../../chunk-C6A6W6XS.js";
1
2
  import { OpenAITokenizer } from "./openai.js";
2
3
  import { AnthropicTokenizer } from "./anthropic.js";
3
4
  import { GoogleTokenizer } from "./google.js";
@@ -1,3 +1,4 @@
1
+ import "../../chunk-C6A6W6XS.js";
1
2
  class GoogleTokenizer {
2
3
  modelName;
3
4
  /**
@@ -33,7 +33,7 @@ class OpenAITokenizer {
33
33
  // Tiktoken encoding instance
34
34
  /**
35
35
  * Initializes the tokenizer for a specific OpenAI model or compatible model.
36
- * @param model The OpenAI model name (e.g., 'gpt-4o') or a custom model name.
36
+ * @param model The OpenAI model name (e.g., 'gpt-5') or a custom model name.
37
37
  * @throws TokenizationError if tiktoken initialization fails for both specific model and fallback.
38
38
  */
39
39
  constructor(model) {