@dexto/core 1.2.6 → 1.4.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 (515) hide show
  1. package/README.md +55 -13
  2. package/dist/agent/DextoAgent.cjs +627 -228
  3. package/dist/agent/DextoAgent.d.ts +157 -34
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +625 -227
  6. package/dist/agent/agentCard.js +1 -1
  7. package/dist/agent/error-codes.cjs +1 -0
  8. package/dist/agent/error-codes.d.ts +2 -1
  9. package/dist/agent/error-codes.d.ts.map +1 -1
  10. package/dist/agent/error-codes.js +2 -1
  11. package/dist/agent/errors.cjs +13 -0
  12. package/dist/agent/errors.d.ts +4 -0
  13. package/dist/agent/errors.d.ts.map +1 -1
  14. package/dist/agent/errors.js +14 -1
  15. package/dist/agent/index.d.ts +1 -1
  16. package/dist/agent/index.d.ts.map +1 -1
  17. package/dist/agent/index.js +1 -1
  18. package/dist/agent/schemas.cjs +4 -1
  19. package/dist/agent/schemas.d.ts +92 -55
  20. package/dist/agent/schemas.d.ts.map +1 -1
  21. package/dist/agent/schemas.js +7 -3
  22. package/dist/agent/state-manager.cjs +5 -5
  23. package/dist/agent/state-manager.d.ts +4 -4
  24. package/dist/agent/state-manager.js +6 -6
  25. package/dist/agent/types.d.ts +24 -11
  26. package/dist/agent/types.d.ts.map +1 -1
  27. package/dist/approval/error-codes.js +1 -1
  28. package/dist/approval/errors.js +1 -1
  29. package/dist/approval/factory.js +1 -1
  30. package/dist/approval/index.js +1 -1
  31. package/dist/approval/manager.cjs +69 -3
  32. package/dist/approval/manager.d.ts +41 -3
  33. package/dist/approval/manager.d.ts.map +1 -1
  34. package/dist/approval/manager.js +70 -4
  35. package/dist/approval/schemas.cjs +20 -5
  36. package/dist/approval/schemas.d.ts +127 -52
  37. package/dist/approval/schemas.d.ts.map +1 -1
  38. package/dist/approval/schemas.js +21 -6
  39. package/dist/approval/types.d.ts +6 -0
  40. package/dist/approval/types.d.ts.map +1 -1
  41. package/dist/approval/types.js +1 -1
  42. package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
  43. package/dist/{llm/tokenizer/factory.cjs → context/compression/overflow.cjs} +20 -21
  44. package/dist/context/compression/overflow.d.ts +33 -0
  45. package/dist/context/compression/overflow.d.ts.map +1 -0
  46. package/dist/context/compression/overflow.js +19 -0
  47. package/dist/context/compression/reactive-overflow.cjs +201 -0
  48. package/dist/context/compression/reactive-overflow.d.ts +81 -0
  49. package/dist/context/compression/reactive-overflow.d.ts.map +1 -0
  50. package/dist/context/compression/reactive-overflow.js +178 -0
  51. package/dist/context/compression/types.d.ts +9 -7
  52. package/dist/context/compression/types.d.ts.map +1 -1
  53. package/dist/context/error-codes.cjs +3 -0
  54. package/dist/context/error-codes.d.ts +4 -1
  55. package/dist/context/error-codes.d.ts.map +1 -1
  56. package/dist/context/error-codes.js +4 -1
  57. package/dist/context/errors.cjs +28 -0
  58. package/dist/context/errors.d.ts +7 -0
  59. package/dist/context/errors.d.ts.map +1 -1
  60. package/dist/context/errors.js +29 -1
  61. package/dist/context/index.js +1 -1
  62. package/dist/context/manager.cjs +287 -323
  63. package/dist/context/manager.d.ts +65 -111
  64. package/dist/context/manager.d.ts.map +1 -1
  65. package/dist/context/manager.js +287 -328
  66. package/dist/context/media-helpers.js +1 -1
  67. package/dist/context/types.cjs +49 -0
  68. package/dist/context/types.d.ts +185 -72
  69. package/dist/context/types.d.ts.map +1 -1
  70. package/dist/context/types.js +35 -0
  71. package/dist/context/utils.cjs +266 -283
  72. package/dist/context/utils.d.ts +32 -18
  73. package/dist/context/utils.d.ts.map +1 -1
  74. package/dist/context/utils.js +266 -283
  75. package/dist/errors/DextoBaseError.js +1 -1
  76. package/dist/errors/DextoRuntimeError.js +1 -1
  77. package/dist/errors/DextoValidationError.js +1 -1
  78. package/dist/errors/index.js +1 -1
  79. package/dist/errors/result-bridge.js +1 -1
  80. package/dist/errors/types.cjs +1 -0
  81. package/dist/errors/types.d.ts +4 -2
  82. package/dist/errors/types.d.ts.map +1 -1
  83. package/dist/errors/types.js +2 -1
  84. package/dist/events/index.cjs +22 -2
  85. package/dist/events/index.d.ts +170 -62
  86. package/dist/events/index.d.ts.map +1 -1
  87. package/dist/events/index.js +23 -3
  88. package/dist/filesystem/error-codes.js +1 -1
  89. package/dist/filesystem/errors.js +1 -1
  90. package/dist/filesystem/filesystem-service.js +1 -1
  91. package/dist/filesystem/index.js +1 -1
  92. package/dist/filesystem/path-validator.js +1 -1
  93. package/dist/index.browser.cjs +23 -8
  94. package/dist/index.browser.d.ts +4 -3
  95. package/dist/index.browser.d.ts.map +1 -1
  96. package/dist/index.browser.js +20 -3
  97. package/dist/index.js +1 -1
  98. package/dist/llm/error-codes.cjs +0 -1
  99. package/dist/llm/error-codes.d.ts +0 -1
  100. package/dist/llm/error-codes.d.ts.map +1 -1
  101. package/dist/llm/error-codes.js +1 -2
  102. package/dist/llm/errors.cjs +10 -10
  103. package/dist/llm/errors.d.ts +5 -6
  104. package/dist/llm/errors.d.ts.map +1 -1
  105. package/dist/llm/errors.js +12 -12
  106. package/dist/llm/executor/stream-processor.cjs +367 -0
  107. package/dist/llm/executor/stream-processor.d.ts +55 -0
  108. package/dist/llm/executor/stream-processor.d.ts.map +1 -0
  109. package/dist/llm/executor/stream-processor.js +344 -0
  110. package/dist/llm/executor/tool-output-truncator.cjs +75 -0
  111. package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
  112. package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
  113. package/dist/llm/executor/tool-output-truncator.js +48 -0
  114. package/dist/llm/executor/turn-executor.cjs +753 -0
  115. package/dist/llm/executor/turn-executor.d.ts +166 -0
  116. package/dist/llm/executor/turn-executor.d.ts.map +1 -0
  117. package/dist/llm/executor/turn-executor.js +684 -0
  118. package/dist/llm/executor/types.d.ts +27 -0
  119. package/dist/llm/executor/types.d.ts.map +1 -0
  120. package/dist/llm/formatters/vercel.cjs +20 -186
  121. package/dist/llm/formatters/vercel.d.ts +2 -14
  122. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  123. package/dist/llm/formatters/vercel.js +19 -185
  124. package/dist/llm/registry.cjs +36 -45
  125. package/dist/llm/registry.d.ts +53 -39
  126. package/dist/llm/registry.d.ts.map +1 -1
  127. package/dist/llm/registry.js +34 -42
  128. package/dist/llm/resolver.cjs +1 -31
  129. package/dist/llm/resolver.d.ts.map +1 -1
  130. package/dist/llm/resolver.js +2 -34
  131. package/dist/llm/schemas.cjs +2 -17
  132. package/dist/llm/schemas.d.ts +10 -23
  133. package/dist/llm/schemas.d.ts.map +1 -1
  134. package/dist/llm/schemas.js +5 -22
  135. package/dist/llm/services/factory.cjs +3 -92
  136. package/dist/llm/services/factory.d.ts +14 -4
  137. package/dist/llm/services/factory.d.ts.map +1 -1
  138. package/dist/llm/services/factory.js +4 -83
  139. package/dist/llm/services/test-utils.integration.cjs +6 -8
  140. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  141. package/dist/llm/services/test-utils.integration.js +7 -9
  142. package/dist/llm/services/types.d.ts +1 -28
  143. package/dist/llm/services/types.d.ts.map +1 -1
  144. package/dist/llm/services/vercel.cjs +54 -468
  145. package/dist/llm/services/vercel.d.ts +38 -21
  146. package/dist/llm/services/vercel.d.ts.map +1 -1
  147. package/dist/llm/services/vercel.js +56 -475
  148. package/dist/llm/types.cjs +0 -3
  149. package/dist/llm/types.d.ts +8 -8
  150. package/dist/llm/types.d.ts.map +1 -1
  151. package/dist/llm/types.js +1 -3
  152. package/dist/llm/validation.js +1 -1
  153. package/dist/logger/browser.js +1 -1
  154. package/dist/logger/factory.js +1 -1
  155. package/dist/logger/index.js +1 -1
  156. package/dist/logger/logger.js +1 -1
  157. package/dist/logger/v2/dexto-logger.cjs +34 -6
  158. package/dist/logger/v2/dexto-logger.d.ts +20 -2
  159. package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
  160. package/dist/logger/v2/dexto-logger.js +35 -7
  161. package/dist/logger/v2/error-codes.js +1 -1
  162. package/dist/logger/v2/errors.js +1 -1
  163. package/dist/logger/v2/schemas.cjs +1 -1
  164. package/dist/logger/v2/schemas.js +2 -2
  165. package/dist/logger/v2/test-utils.cjs +70 -0
  166. package/dist/logger/v2/test-utils.d.ts +17 -0
  167. package/dist/logger/v2/test-utils.d.ts.map +1 -0
  168. package/dist/logger/v2/test-utils.js +46 -0
  169. package/dist/logger/v2/transport-factory.js +1 -1
  170. package/dist/logger/v2/transports/console-transport.js +1 -1
  171. package/dist/logger/v2/transports/file-transport.cjs +6 -0
  172. package/dist/logger/v2/transports/file-transport.d.ts +4 -0
  173. package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
  174. package/dist/logger/v2/transports/file-transport.js +7 -1
  175. package/dist/logger/v2/types.cjs +1 -0
  176. package/dist/logger/v2/types.d.ts +18 -2
  177. package/dist/logger/v2/types.d.ts.map +1 -1
  178. package/dist/logger/v2/types.js +2 -1
  179. package/dist/mcp/error-codes.cjs +1 -0
  180. package/dist/mcp/error-codes.d.ts +1 -0
  181. package/dist/mcp/error-codes.d.ts.map +1 -1
  182. package/dist/mcp/error-codes.js +2 -1
  183. package/dist/mcp/errors.cjs +13 -0
  184. package/dist/mcp/errors.d.ts +7 -0
  185. package/dist/mcp/errors.d.ts.map +1 -1
  186. package/dist/mcp/errors.js +14 -1
  187. package/dist/mcp/manager.cjs +4 -0
  188. package/dist/mcp/manager.d.ts.map +1 -1
  189. package/dist/mcp/manager.js +5 -1
  190. package/dist/mcp/mcp-client.js +1 -1
  191. package/dist/mcp/resolver.js +1 -1
  192. package/dist/mcp/schemas.cjs +6 -0
  193. package/dist/mcp/schemas.d.ts +52 -0
  194. package/dist/mcp/schemas.d.ts.map +1 -1
  195. package/dist/mcp/schemas.js +6 -1
  196. package/dist/memory/error-codes.js +1 -1
  197. package/dist/memory/errors.js +1 -1
  198. package/dist/memory/index.js +1 -1
  199. package/dist/memory/manager.js +1 -1
  200. package/dist/memory/schemas.d.ts +2 -2
  201. package/dist/memory/schemas.js +1 -1
  202. package/dist/plugins/builtins/content-policy.js +1 -1
  203. package/dist/plugins/builtins/response-sanitizer.js +1 -1
  204. package/dist/plugins/error-codes.cjs +1 -0
  205. package/dist/plugins/error-codes.d.ts +3 -1
  206. package/dist/plugins/error-codes.d.ts.map +1 -1
  207. package/dist/plugins/error-codes.js +2 -1
  208. package/dist/plugins/index.js +1 -1
  209. package/dist/plugins/loader.cjs +25 -5
  210. package/dist/plugins/loader.d.ts.map +1 -1
  211. package/dist/plugins/loader.js +26 -6
  212. package/dist/plugins/manager.js +1 -1
  213. package/dist/plugins/registrations/builtins.js +1 -1
  214. package/dist/plugins/schemas.d.ts +3 -3
  215. package/dist/plugins/schemas.js +1 -1
  216. package/dist/plugins/types.d.ts +0 -1
  217. package/dist/plugins/types.d.ts.map +1 -1
  218. package/dist/process/command-validator.js +1 -1
  219. package/dist/process/error-codes.js +1 -1
  220. package/dist/process/errors.js +1 -1
  221. package/dist/process/index.js +1 -1
  222. package/dist/process/process-service.cjs +78 -26
  223. package/dist/process/process-service.d.ts +6 -1
  224. package/dist/process/process-service.d.ts.map +1 -1
  225. package/dist/process/process-service.js +79 -27
  226. package/dist/process/types.d.ts +2 -2
  227. package/dist/process/types.d.ts.map +1 -1
  228. package/dist/prompts/error-codes.cjs +1 -0
  229. package/dist/prompts/error-codes.d.ts +2 -1
  230. package/dist/prompts/error-codes.d.ts.map +1 -1
  231. package/dist/prompts/error-codes.js +2 -1
  232. package/dist/prompts/errors.cjs +15 -0
  233. package/dist/prompts/errors.d.ts +4 -0
  234. package/dist/prompts/errors.d.ts.map +1 -1
  235. package/dist/prompts/errors.js +16 -1
  236. package/dist/prompts/index.js +1 -1
  237. package/dist/prompts/name-validation.js +1 -1
  238. package/dist/prompts/prompt-manager.cjs +13 -2
  239. package/dist/prompts/prompt-manager.d.ts +7 -0
  240. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  241. package/dist/prompts/prompt-manager.js +14 -3
  242. package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
  243. package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
  244. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  245. package/dist/prompts/providers/config-prompt-provider.js +13 -4
  246. package/dist/prompts/providers/custom-prompt-provider.cjs +2 -2
  247. package/dist/prompts/providers/custom-prompt-provider.d.ts +1 -1
  248. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
  249. package/dist/prompts/providers/custom-prompt-provider.js +3 -3
  250. package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
  251. package/dist/prompts/schemas.d.ts +12 -0
  252. package/dist/prompts/schemas.d.ts.map +1 -1
  253. package/dist/prompts/schemas.js +1 -1
  254. package/dist/prompts/types.d.ts +2 -0
  255. package/dist/prompts/types.d.ts.map +1 -1
  256. package/dist/prompts/utils.js +1 -1
  257. package/dist/resources/error-codes.js +1 -1
  258. package/dist/resources/errors.js +1 -1
  259. package/dist/resources/handlers/blob-handler.js +1 -1
  260. package/dist/resources/handlers/factory.js +1 -1
  261. package/dist/resources/handlers/filesystem-handler.js +1 -1
  262. package/dist/resources/index.js +1 -1
  263. package/dist/resources/internal-provider.js +1 -1
  264. package/dist/resources/manager.js +1 -1
  265. package/dist/resources/reference-parser.js +1 -1
  266. package/dist/resources/schemas.js +1 -1
  267. package/dist/search/index.js +1 -1
  268. package/dist/search/search-service.js +1 -1
  269. package/dist/session/chat-session.cjs +149 -51
  270. package/dist/session/chat-session.d.ts +69 -29
  271. package/dist/session/chat-session.d.ts.map +1 -1
  272. package/dist/session/chat-session.js +150 -52
  273. package/dist/session/error-codes.js +1 -1
  274. package/dist/session/errors.js +1 -1
  275. package/dist/session/history/database.cjs +134 -21
  276. package/dist/session/history/database.d.ts +37 -8
  277. package/dist/session/history/database.d.ts.map +1 -1
  278. package/dist/session/history/database.js +135 -22
  279. package/dist/session/history/factory.js +1 -1
  280. package/dist/session/history/memory.cjs +18 -0
  281. package/dist/session/history/memory.d.ts +8 -0
  282. package/dist/session/history/memory.d.ts.map +1 -1
  283. package/dist/session/history/memory.js +19 -1
  284. package/dist/session/history/types.d.ts +13 -1
  285. package/dist/session/history/types.d.ts.map +1 -1
  286. package/dist/session/index.cjs +3 -0
  287. package/dist/session/index.d.ts +3 -0
  288. package/dist/session/index.d.ts.map +1 -1
  289. package/dist/session/index.js +3 -1
  290. package/dist/session/message-queue.cjs +201 -0
  291. package/dist/session/message-queue.d.ts +114 -0
  292. package/dist/session/message-queue.d.ts.map +1 -0
  293. package/dist/session/message-queue.js +178 -0
  294. package/dist/session/schemas.js +1 -1
  295. package/dist/session/session-manager.cjs +57 -7
  296. package/dist/session/session-manager.d.ts +18 -0
  297. package/dist/session/session-manager.d.ts.map +1 -1
  298. package/dist/session/session-manager.js +58 -8
  299. package/dist/session/title-generator.cjs +4 -8
  300. package/dist/session/title-generator.d.ts +1 -2
  301. package/dist/session/title-generator.d.ts.map +1 -1
  302. package/dist/session/title-generator.js +5 -9
  303. package/dist/session/types.cjs +16 -0
  304. package/dist/session/types.d.ts +14 -0
  305. package/dist/session/types.d.ts.map +1 -0
  306. package/dist/session/types.js +0 -0
  307. package/dist/storage/blob/factory.js +1 -1
  308. package/dist/storage/blob/local-blob-store.js +1 -1
  309. package/dist/storage/blob/memory-blob-store.js +1 -1
  310. package/dist/storage/blob/schemas.js +1 -1
  311. package/dist/storage/cache/factory.cjs +6 -2
  312. package/dist/storage/cache/factory.d.ts +2 -1
  313. package/dist/storage/cache/factory.d.ts.map +1 -1
  314. package/dist/storage/cache/factory.js +7 -3
  315. package/dist/storage/cache/memory-cache-store.js +1 -1
  316. package/dist/storage/cache/redis-store.js +1 -1
  317. package/dist/storage/cache/schemas.js +1 -1
  318. package/dist/storage/database/factory.cjs +11 -17
  319. package/dist/storage/database/factory.d.ts +2 -1
  320. package/dist/storage/database/factory.d.ts.map +1 -1
  321. package/dist/storage/database/factory.js +12 -18
  322. package/dist/storage/database/memory-database-store.js +1 -1
  323. package/dist/storage/database/postgres-store.cjs +12 -0
  324. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  325. package/dist/storage/database/postgres-store.js +13 -1
  326. package/dist/storage/database/schemas.js +1 -1
  327. package/dist/storage/database/sqlite-store.cjs +8 -0
  328. package/dist/storage/database/sqlite-store.d.ts.map +1 -1
  329. package/dist/storage/database/sqlite-store.js +9 -1
  330. package/dist/storage/error-codes.cjs +1 -0
  331. package/dist/storage/error-codes.d.ts +1 -0
  332. package/dist/storage/error-codes.d.ts.map +1 -1
  333. package/dist/storage/error-codes.js +2 -1
  334. package/dist/storage/errors.cjs +17 -0
  335. package/dist/storage/errors.d.ts +9 -0
  336. package/dist/storage/errors.d.ts.map +1 -1
  337. package/dist/storage/errors.js +18 -1
  338. package/dist/storage/index.js +1 -1
  339. package/dist/storage/schemas.js +1 -1
  340. package/dist/storage/storage-manager.js +1 -1
  341. package/dist/systemPrompt/contributors.js +1 -1
  342. package/dist/systemPrompt/error-codes.js +1 -1
  343. package/dist/systemPrompt/errors.js +1 -1
  344. package/dist/systemPrompt/in-built-prompts.js +1 -1
  345. package/dist/systemPrompt/index.js +1 -1
  346. package/dist/systemPrompt/manager.js +1 -1
  347. package/dist/systemPrompt/registry.js +1 -1
  348. package/dist/systemPrompt/schemas.d.ts +5 -5
  349. package/dist/systemPrompt/schemas.js +1 -1
  350. package/dist/telemetry/decorators.js +1 -1
  351. package/dist/{llm/tokenizer/default.cjs → telemetry/error-codes.cjs} +14 -19
  352. package/dist/telemetry/error-codes.d.ts +13 -0
  353. package/dist/telemetry/error-codes.d.ts.map +1 -0
  354. package/dist/telemetry/error-codes.js +13 -0
  355. package/dist/telemetry/errors.cjs +105 -0
  356. package/dist/telemetry/errors.d.ts +28 -0
  357. package/dist/telemetry/errors.d.ts.map +1 -0
  358. package/dist/telemetry/errors.js +82 -0
  359. package/dist/telemetry/exporters.js +1 -1
  360. package/dist/telemetry/index.js +1 -1
  361. package/dist/telemetry/schemas.js +1 -1
  362. package/dist/telemetry/telemetry.cjs +92 -26
  363. package/dist/telemetry/telemetry.d.ts +1 -1
  364. package/dist/telemetry/telemetry.d.ts.map +1 -1
  365. package/dist/telemetry/telemetry.js +75 -19
  366. package/dist/telemetry/utils.js +1 -1
  367. package/dist/tools/bash-pattern-utils.cjs +91 -0
  368. package/dist/tools/bash-pattern-utils.d.ts +58 -0
  369. package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
  370. package/dist/tools/bash-pattern-utils.js +64 -0
  371. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
  372. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
  373. package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
  374. package/dist/tools/display-types.cjs +60 -0
  375. package/dist/tools/display-types.d.ts +133 -0
  376. package/dist/tools/display-types.d.ts.map +1 -0
  377. package/dist/tools/display-types.js +32 -0
  378. package/dist/tools/error-codes.cjs +2 -0
  379. package/dist/tools/error-codes.d.ts +3 -1
  380. package/dist/tools/error-codes.d.ts.map +1 -1
  381. package/dist/tools/error-codes.js +3 -1
  382. package/dist/tools/errors.cjs +30 -0
  383. package/dist/tools/errors.d.ts +16 -0
  384. package/dist/tools/errors.d.ts.map +1 -1
  385. package/dist/tools/errors.js +31 -1
  386. package/dist/tools/index.cjs +2 -0
  387. package/dist/tools/index.d.ts +1 -0
  388. package/dist/tools/index.d.ts.map +1 -1
  389. package/dist/tools/index.js +2 -1
  390. package/dist/tools/internal-tools/constants.js +1 -1
  391. package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
  392. package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
  393. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +42 -18
  394. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +3 -3
  395. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -1
  396. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +43 -19
  397. package/dist/tools/internal-tools/implementations/bash-output-tool.js +1 -1
  398. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
  399. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +66 -1
  400. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -1
  401. package/dist/tools/internal-tools/implementations/edit-file-tool.js +67 -2
  402. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +14 -1
  403. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -1
  404. package/dist/tools/internal-tools/implementations/glob-files-tool.js +15 -2
  405. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +16 -1
  406. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -1
  407. package/dist/tools/internal-tools/implementations/grep-content-tool.js +17 -2
  408. package/dist/tools/internal-tools/implementations/kill-process-tool.js +1 -1
  409. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +9 -1
  410. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -1
  411. package/dist/tools/internal-tools/implementations/read-file-tool.js +10 -2
  412. package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
  413. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +69 -1
  414. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -1
  415. package/dist/tools/internal-tools/implementations/write-file-tool.js +72 -2
  416. package/dist/tools/internal-tools/provider.cjs +27 -10
  417. package/dist/tools/internal-tools/provider.d.ts +8 -5
  418. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  419. package/dist/tools/internal-tools/provider.js +28 -11
  420. package/dist/tools/internal-tools/registry.cjs +4 -3
  421. package/dist/tools/internal-tools/registry.d.ts +28 -7
  422. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  423. package/dist/tools/internal-tools/registry.js +5 -4
  424. package/dist/tools/schemas.cjs +17 -7
  425. package/dist/tools/schemas.d.ts +31 -4
  426. package/dist/tools/schemas.d.ts.map +1 -1
  427. package/dist/tools/schemas.js +15 -7
  428. package/dist/tools/tool-manager.cjs +140 -18
  429. package/dist/tools/tool-manager.d.ts +23 -1
  430. package/dist/tools/tool-manager.d.ts.map +1 -1
  431. package/dist/tools/tool-manager.js +145 -19
  432. package/dist/tools/types.d.ts +20 -11
  433. package/dist/tools/types.d.ts.map +1 -1
  434. package/dist/utils/api-key-resolver.js +1 -1
  435. package/dist/utils/async-context.js +1 -1
  436. package/dist/utils/debug.js +1 -1
  437. package/dist/{llm/tokenizer/types.cjs → utils/defer.cjs} +19 -10
  438. package/dist/utils/defer.d.ts +63 -0
  439. package/dist/utils/defer.d.ts.map +1 -0
  440. package/dist/utils/defer.js +19 -0
  441. package/dist/utils/env-file.js +1 -1
  442. package/dist/utils/error-conversion.js +1 -1
  443. package/dist/utils/execution-context.js +1 -1
  444. package/dist/utils/fs-walk.js +1 -1
  445. package/dist/utils/index.cjs +3 -1
  446. package/dist/utils/index.d.ts +1 -0
  447. package/dist/utils/index.d.ts.map +1 -1
  448. package/dist/utils/index.js +1 -0
  449. package/dist/utils/path.js +1 -1
  450. package/dist/utils/redactor.js +1 -1
  451. package/dist/utils/result.js +1 -1
  452. package/dist/utils/safe-stringify.js +1 -1
  453. package/dist/utils/schema-metadata.js +1 -1
  454. package/dist/utils/schema.d.ts +6 -0
  455. package/dist/utils/schema.d.ts.map +1 -1
  456. package/dist/utils/schema.js +1 -1
  457. package/dist/utils/service-initializer.cjs +6 -2
  458. package/dist/utils/service-initializer.d.ts.map +1 -1
  459. package/dist/utils/service-initializer.js +7 -3
  460. package/dist/utils/user-info.js +1 -1
  461. package/dist/utils/zod-schema-converter.js +1 -1
  462. package/package.json +54 -17
  463. package/dist/context/compression/middle-removal.cjs +0 -95
  464. package/dist/context/compression/middle-removal.d.ts +0 -47
  465. package/dist/context/compression/middle-removal.d.ts.map +0 -1
  466. package/dist/context/compression/middle-removal.js +0 -72
  467. package/dist/context/compression/oldest-removal.cjs +0 -83
  468. package/dist/context/compression/oldest-removal.d.ts +0 -42
  469. package/dist/context/compression/oldest-removal.d.ts.map +0 -1
  470. package/dist/context/compression/oldest-removal.js +0 -60
  471. package/dist/llm/formatters/anthropic.cjs +0 -257
  472. package/dist/llm/formatters/anthropic.d.ts +0 -46
  473. package/dist/llm/formatters/anthropic.d.ts.map +0 -1
  474. package/dist/llm/formatters/anthropic.js +0 -239
  475. package/dist/llm/formatters/factory.cjs +0 -50
  476. package/dist/llm/formatters/factory.d.ts +0 -10
  477. package/dist/llm/formatters/factory.d.ts.map +0 -1
  478. package/dist/llm/formatters/factory.js +0 -27
  479. package/dist/llm/formatters/openai.cjs +0 -196
  480. package/dist/llm/formatters/openai.d.ts +0 -39
  481. package/dist/llm/formatters/openai.d.ts.map +0 -1
  482. package/dist/llm/formatters/openai.js +0 -177
  483. package/dist/llm/formatters/types.d.ts +0 -41
  484. package/dist/llm/formatters/types.d.ts.map +0 -1
  485. package/dist/llm/services/anthropic.cjs +0 -511
  486. package/dist/llm/services/anthropic.d.ts +0 -48
  487. package/dist/llm/services/anthropic.d.ts.map +0 -1
  488. package/dist/llm/services/anthropic.js +0 -447
  489. package/dist/llm/services/openai.cjs +0 -611
  490. package/dist/llm/services/openai.d.ts +0 -48
  491. package/dist/llm/services/openai.d.ts.map +0 -1
  492. package/dist/llm/services/openai.js +0 -547
  493. package/dist/llm/tokenizer/anthropic.cjs +0 -43
  494. package/dist/llm/tokenizer/anthropic.d.ts +0 -19
  495. package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
  496. package/dist/llm/tokenizer/anthropic.js +0 -20
  497. package/dist/llm/tokenizer/default.d.ts +0 -14
  498. package/dist/llm/tokenizer/default.d.ts.map +0 -1
  499. package/dist/llm/tokenizer/default.js +0 -18
  500. package/dist/llm/tokenizer/factory.d.ts +0 -12
  501. package/dist/llm/tokenizer/factory.d.ts.map +0 -1
  502. package/dist/llm/tokenizer/factory.js +0 -21
  503. package/dist/llm/tokenizer/google.cjs +0 -52
  504. package/dist/llm/tokenizer/google.d.ts +0 -29
  505. package/dist/llm/tokenizer/google.d.ts.map +0 -1
  506. package/dist/llm/tokenizer/google.js +0 -29
  507. package/dist/llm/tokenizer/openai.cjs +0 -115
  508. package/dist/llm/tokenizer/openai.d.ts +0 -33
  509. package/dist/llm/tokenizer/openai.d.ts.map +0 -1
  510. package/dist/llm/tokenizer/openai.js +0 -91
  511. package/dist/llm/tokenizer/types.d.ts +0 -18
  512. package/dist/llm/tokenizer/types.d.ts.map +0 -1
  513. package/dist/llm/tokenizer/types.js +0 -10
  514. /package/dist/llm/{formatters → executor}/types.cjs +0 -0
  515. /package/dist/llm/{formatters → executor}/types.js +0 -0
@@ -1,611 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
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 });
13
- var __export = (target, all) => {
14
- for (var name in all)
15
- __defProp(target, name, { get: all[name], enumerable: true });
16
- };
17
- var __copyProps = (to, from, except, desc) => {
18
- if (from && typeof from === "object" || typeof from === "function") {
19
- for (let key of __getOwnPropNames(from))
20
- if (!__hasOwnProp.call(to, key) && key !== except)
21
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22
- }
23
- return to;
24
- };
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);
64
- var openai_exports = {};
65
- __export(openai_exports, {
66
- OpenAIService: () => OpenAIService
67
- });
68
- module.exports = __toCommonJS(openai_exports);
69
- var import_types3 = require("../../logger/v2/types.js");
70
- var import_manager = require("../../context/manager.js");
71
- var import_registry = require("../registry.js");
72
- var import_DextoRuntimeError = require("../../errors/DextoRuntimeError.js");
73
- var import_error_codes = require("../error-codes.js");
74
- var import_openai2 = require("../formatters/openai.js");
75
- var import_factory = require("../tokenizer/factory.js");
76
- var import_debug = require("../../utils/debug.js");
77
- var import_decorators = require("../../telemetry/decorators.js");
78
- var import_api = require("@opentelemetry/api");
79
- var _OpenAIService_decorators, _init;
80
- _OpenAIService_decorators = [(0, import_decorators.InstrumentClass)({
81
- prefix: "llm.openai",
82
- excludeMethods: ["getAllTools", "formatToolsForOpenAI", "getConfig", "getContextManager"]
83
- })];
84
- class OpenAIService {
85
- openai;
86
- config;
87
- toolManager;
88
- contextManager;
89
- sessionEventBus;
90
- sessionId;
91
- logger;
92
- constructor(toolManager, openai, systemPromptManager, historyProvider, sessionEventBus, config, sessionId, resourceManager, logger) {
93
- this.logger = logger.createChild(import_types3.DextoLogComponent.LLM);
94
- this.config = config;
95
- this.openai = openai;
96
- this.toolManager = toolManager;
97
- this.sessionEventBus = sessionEventBus;
98
- this.sessionId = sessionId;
99
- const formatter = new import_openai2.OpenAIMessageFormatter(this.logger);
100
- const tokenizer = (0, import_factory.createTokenizer)(config.provider, config.model, this.logger);
101
- const maxInputTokens = (0, import_registry.getEffectiveMaxInputTokens)(config, this.logger);
102
- this.contextManager = new import_manager.ContextManager(
103
- config,
104
- formatter,
105
- systemPromptManager,
106
- maxInputTokens,
107
- tokenizer,
108
- historyProvider,
109
- sessionId,
110
- resourceManager,
111
- this.logger
112
- // compressionStrategies uses default
113
- );
114
- }
115
- getAllTools() {
116
- return this.toolManager.getAllTools();
117
- }
118
- async completeTask(textInput, options, imageData, fileData, stream) {
119
- const activeSpan = import_api.trace.getActiveSpan();
120
- const currentContext = import_api.context.active();
121
- const provider = this.config.provider;
122
- const model = this.config.model;
123
- if (activeSpan) {
124
- activeSpan.setAttribute("llm.provider", provider);
125
- activeSpan.setAttribute("llm.model", model);
126
- }
127
- const existingBaggage = import_api.propagation.getBaggage(currentContext);
128
- const baggageEntries = {};
129
- if (existingBaggage) {
130
- existingBaggage.getAllEntries().forEach(([key, entry]) => {
131
- baggageEntries[key] = entry;
132
- });
133
- }
134
- baggageEntries["llm.provider"] = { value: provider };
135
- baggageEntries["llm.model"] = { value: model };
136
- const updatedContext = import_api.propagation.setBaggage(
137
- currentContext,
138
- import_api.propagation.createBaggage(baggageEntries)
139
- );
140
- return await import_api.context.with(updatedContext, async () => {
141
- await this.contextManager.addUserMessage(textInput, imageData, fileData);
142
- const rawTools = await this.toolManager.getAllTools();
143
- const formattedTools = this.formatToolsForOpenAI(rawTools);
144
- this.logger.silly(`Formatted tools: ${JSON.stringify(formattedTools, null, 2)}`);
145
- this.sessionEventBus.emit("llm:thinking");
146
- let iterationCount = 0;
147
- let totalTokens = 0;
148
- let inputTokens = 0;
149
- let outputTokens = 0;
150
- let reasoningTokens = 0;
151
- let fullResponse = "";
152
- const contextStr = stream ? "OpenAI streaming API call" : "OpenAI API call";
153
- try {
154
- while (iterationCount < this.config.maxIterations) {
155
- if (options?.signal?.aborted) {
156
- throw Object.assign(new Error("Aborted"), {
157
- name: "AbortError",
158
- aborted: true
159
- });
160
- }
161
- iterationCount++;
162
- const { message, usage } = stream ? await this.getAIStreamingResponseWithRetries(
163
- formattedTools,
164
- options?.signal
165
- ) : await this.getAIResponseWithRetries(formattedTools, options?.signal);
166
- if (usage) {
167
- totalTokens += usage.total_tokens ?? 0;
168
- inputTokens += usage.prompt_tokens ?? 0;
169
- outputTokens += usage.completion_tokens ?? 0;
170
- reasoningTokens += usage.completion_tokens_details?.reasoning_tokens ?? 0;
171
- }
172
- if (!message.tool_calls || message.tool_calls.length === 0) {
173
- const responseText = message.content || "";
174
- const finalContent = stream ? fullResponse + responseText : responseText;
175
- await this.contextManager.addAssistantMessage(finalContent, void 0, {
176
- tokenUsage: totalTokens > 0 ? {
177
- totalTokens,
178
- inputTokens,
179
- outputTokens,
180
- reasoningTokens
181
- } : void 0
182
- });
183
- if (totalTokens > 0) {
184
- this.contextManager.updateActualTokenCount(totalTokens);
185
- }
186
- this.sessionEventBus.emit("llm:response", {
187
- content: finalContent,
188
- provider: this.config.provider,
189
- model: this.config.model,
190
- router: "in-built",
191
- tokenUsage: { totalTokens, inputTokens, outputTokens, reasoningTokens }
192
- });
193
- const activeSpan3 = import_api.trace.getActiveSpan();
194
- if (activeSpan3 && totalTokens > 0) {
195
- const attributes = {
196
- "gen_ai.usage.total_tokens": totalTokens
197
- };
198
- if (inputTokens > 0) {
199
- attributes["gen_ai.usage.input_tokens"] = inputTokens;
200
- }
201
- if (outputTokens > 0) {
202
- attributes["gen_ai.usage.output_tokens"] = outputTokens;
203
- }
204
- if (reasoningTokens > 0) {
205
- attributes["gen_ai.usage.reasoning_tokens"] = reasoningTokens;
206
- }
207
- activeSpan3.setAttributes(attributes);
208
- }
209
- return finalContent;
210
- }
211
- const functionToolCalls = message.tool_calls.filter(
212
- (toolCall) => {
213
- this.logger.debug(`Tool call type received: ${toolCall.type}`);
214
- return toolCall.type === "function";
215
- }
216
- );
217
- if (message.tool_calls.length > functionToolCalls.length) {
218
- this.logger.warn(
219
- `Filtered out ${message.tool_calls.length - functionToolCalls.length} non-function tool calls`
220
- );
221
- }
222
- await this.contextManager.addAssistantMessage(
223
- message.content,
224
- functionToolCalls.length > 0 ? functionToolCalls : void 0,
225
- {}
226
- );
227
- if (stream && message.content) {
228
- fullResponse += message.content;
229
- }
230
- for (const toolCall of functionToolCalls) {
231
- if (options?.signal?.aborted) {
232
- throw Object.assign(new Error("Aborted"), {
233
- name: "AbortError",
234
- aborted: true
235
- });
236
- }
237
- this.logger.debug(`Tool call initiated - Type: ${toolCall.type}`);
238
- this.logger.debug(
239
- `Tool call details: ${JSON.stringify(toolCall, null, 2)}`
240
- );
241
- const toolName = toolCall.function.name;
242
- let args = {};
243
- try {
244
- args = JSON.parse(toolCall.function.arguments);
245
- } catch (e) {
246
- this.logger.error(`Error parsing arguments for ${toolName}:`, {
247
- error: e instanceof Error ? e.message : String(e)
248
- });
249
- const sanitized = await this.contextManager.addToolResult(
250
- toolCall.id,
251
- toolName,
252
- { error: `Failed to parse arguments: ${e}` },
253
- { success: false }
254
- );
255
- this.sessionEventBus.emit("llm:tool-result", {
256
- toolName,
257
- callId: toolCall.id,
258
- success: false,
259
- sanitized,
260
- ...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult: { error: `Failed to parse arguments: ${e}` } } : {}
261
- });
262
- continue;
263
- }
264
- this.sessionEventBus.emit("llm:tool-call", {
265
- toolName,
266
- args,
267
- callId: toolCall.id
268
- });
269
- try {
270
- const result = await this.toolManager.executeTool(
271
- toolName,
272
- args,
273
- this.sessionId
274
- );
275
- const sanitized = await this.contextManager.addToolResult(
276
- toolCall.id,
277
- toolName,
278
- result,
279
- { success: true }
280
- );
281
- this.sessionEventBus.emit("llm:tool-result", {
282
- toolName,
283
- callId: toolCall.id,
284
- success: true,
285
- sanitized,
286
- ...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult: result } : {}
287
- });
288
- } catch (error) {
289
- const errorMessage = error instanceof Error ? error.message : String(error);
290
- this.logger.error(
291
- `Tool execution error for ${toolName}: ${errorMessage}`
292
- );
293
- const sanitized = await this.contextManager.addToolResult(
294
- toolCall.id,
295
- toolName,
296
- { error: errorMessage },
297
- { success: false }
298
- );
299
- this.sessionEventBus.emit("llm:tool-result", {
300
- toolName,
301
- callId: toolCall.id,
302
- success: false,
303
- sanitized,
304
- ...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult: { error: errorMessage } } : {}
305
- });
306
- }
307
- }
308
- }
309
- this.logger.warn(
310
- `Reached maximum iterations (${this.config.maxIterations}) for task.`
311
- );
312
- const finalResponse = fullResponse || "Task completed but reached maximum tool call iterations.";
313
- await this.contextManager.addAssistantMessage(finalResponse, void 0, {
314
- tokenUsage: totalTokens > 0 ? {
315
- totalTokens,
316
- inputTokens,
317
- outputTokens,
318
- reasoningTokens
319
- } : void 0
320
- });
321
- if (totalTokens > 0) {
322
- this.contextManager.updateActualTokenCount(totalTokens);
323
- }
324
- this.sessionEventBus.emit("llm:response", {
325
- content: finalResponse,
326
- provider: this.config.provider,
327
- model: this.config.model,
328
- router: "in-built",
329
- tokenUsage: { totalTokens, inputTokens, outputTokens, reasoningTokens }
330
- });
331
- const activeSpan2 = import_api.trace.getActiveSpan();
332
- if (activeSpan2 && totalTokens > 0) {
333
- const attributes = {
334
- "gen_ai.usage.total_tokens": totalTokens
335
- };
336
- if (inputTokens > 0) {
337
- attributes["gen_ai.usage.input_tokens"] = inputTokens;
338
- }
339
- if (outputTokens > 0) {
340
- attributes["gen_ai.usage.output_tokens"] = outputTokens;
341
- }
342
- if (reasoningTokens > 0) {
343
- attributes["gen_ai.usage.reasoning_tokens"] = reasoningTokens;
344
- }
345
- activeSpan2.setAttributes(attributes);
346
- }
347
- return finalResponse;
348
- } catch (error) {
349
- if (error instanceof Error && (error.name === "AbortError" || error.aborted === true)) {
350
- throw error;
351
- }
352
- const errorMessage = error instanceof Error ? error.message : String(error);
353
- this.logger.error(`Error in ${contextStr}: ${errorMessage}`, { error });
354
- if (!stream) {
355
- this.logger.warn(
356
- `If this error is due to token overflow, consider configuring 'maxInputTokens' in your LLMConfig.`
357
- );
358
- }
359
- this.sessionEventBus.emit("llm:error", {
360
- error: error instanceof Error ? error : new Error(errorMessage),
361
- context: contextStr,
362
- recoverable: false
363
- });
364
- const errorResponse = `Error processing ${stream ? "streaming " : ""}request: ${errorMessage}`;
365
- await this.contextManager.addAssistantMessage(errorResponse, void 0, {});
366
- return errorResponse;
367
- }
368
- });
369
- }
370
- /**
371
- * Get configuration information about the LLM service
372
- * @returns Configuration object with provider and model information
373
- */
374
- getConfig() {
375
- const configuredMaxInputTokens = this.contextManager.getMaxInputTokens();
376
- let modelMaxInputTokens;
377
- try {
378
- modelMaxInputTokens = (0, import_registry.getMaxInputTokensForModel)(
379
- this.config.provider,
380
- this.config.model,
381
- this.logger
382
- );
383
- } catch (error) {
384
- if (error instanceof import_DextoRuntimeError.DextoRuntimeError && error.code === import_error_codes.LLMErrorCode.MODEL_UNKNOWN) {
385
- modelMaxInputTokens = configuredMaxInputTokens;
386
- this.logger.debug(
387
- `Could not find model ${this.config.model} in LLM registry to get max tokens. Using configured max tokens: ${configuredMaxInputTokens}.`
388
- );
389
- } else {
390
- throw error;
391
- }
392
- }
393
- return {
394
- router: "in-built",
395
- provider: this.config.provider,
396
- model: this.config.model,
397
- configuredMaxInputTokens,
398
- modelMaxInputTokens
399
- };
400
- }
401
- // Helper methods
402
- async getAIResponseWithRetries(tools, signal) {
403
- let attempts = 0;
404
- const MAX_ATTEMPTS = 3;
405
- this.logger.debug(`Tools size in getAIResponseWithRetries: ${tools.length}`);
406
- while (attempts < MAX_ATTEMPTS) {
407
- attempts++;
408
- try {
409
- const {
410
- formattedMessages,
411
- systemPrompt: _systemPrompt,
412
- tokensUsed
413
- } = await this.contextManager.getFormattedMessagesWithCompression(
414
- { mcpManager: this.toolManager.getMcpManager() },
415
- { provider: this.config.provider, model: this.config.model }
416
- );
417
- this.logger.silly(
418
- `Message history (potentially compressed) in getAIResponseWithRetries: ${JSON.stringify(formattedMessages, null, 2)}`
419
- );
420
- this.logger.debug(`Estimated tokens being sent to OpenAI: ${tokensUsed}`);
421
- const response = await this.openai.chat.completions.create(
422
- {
423
- model: this.config.model,
424
- messages: formattedMessages,
425
- tools: attempts === 1 ? tools : [],
426
- // Only offer tools on first attempt
427
- tool_choice: attempts === 1 ? "auto" : "none"
428
- // Disable tool choice on retry
429
- },
430
- signal ? { signal } : void 0
431
- );
432
- this.logger.silly(
433
- `OPENAI CHAT COMPLETION RESPONSE: ${JSON.stringify(response, null, 2)}`
434
- );
435
- const message = response.choices[0]?.message;
436
- if (!message) {
437
- throw new Error("Received empty message from OpenAI API");
438
- }
439
- const usage = response.usage;
440
- return { message, ...usage && { usage } };
441
- } catch (error) {
442
- if (error instanceof Error && (error.name === "AbortError" || error.aborted === true)) {
443
- throw error;
444
- }
445
- const apiError = error;
446
- this.logger.error(
447
- `Error in OpenAI API call (Attempt ${attempts}/${MAX_ATTEMPTS}): ${apiError.message || JSON.stringify(apiError, null, 2)}`,
448
- { status: apiError.status, headers: apiError.headers }
449
- );
450
- if (apiError.status === 400 && apiError.code === "context_length_exceeded") {
451
- this.logger.warn(
452
- `Context length exceeded. ContextManager compression might not be sufficient. Error details: ${JSON.stringify(apiError.error)}`
453
- );
454
- }
455
- if (attempts >= MAX_ATTEMPTS) {
456
- this.logger.error(
457
- `Failed to get response from OpenAI after ${MAX_ATTEMPTS} attempts.`
458
- );
459
- throw error;
460
- }
461
- await new Promise((resolve) => setTimeout(resolve, 500 * attempts));
462
- }
463
- }
464
- throw new Error("Failed to get response after maximum retry attempts");
465
- }
466
- async getAIStreamingResponseWithRetries(tools, signal) {
467
- let attempts = 0;
468
- const MAX_ATTEMPTS = 3;
469
- while (attempts < MAX_ATTEMPTS) {
470
- attempts++;
471
- try {
472
- const {
473
- formattedMessages,
474
- systemPrompt: _systemPrompt,
475
- tokensUsed
476
- } = await this.contextManager.getFormattedMessagesWithCompression(
477
- { mcpManager: this.toolManager.getMcpManager() },
478
- { provider: this.config.provider, model: this.config.model }
479
- );
480
- this.logger.silly(
481
- `Streaming message history (potentially compressed): ${JSON.stringify(formattedMessages, null, 2)}`
482
- );
483
- this.logger.debug(`Estimated tokens being sent to OpenAI streaming: ${tokensUsed}`);
484
- const stream = await this.openai.chat.completions.create(
485
- {
486
- model: this.config.model,
487
- messages: formattedMessages,
488
- tools: attempts === 1 ? tools : [],
489
- // Only offer tools on first attempt
490
- tool_choice: attempts === 1 ? "auto" : "none",
491
- // Disable tool choice on retry
492
- stream: true,
493
- stream_options: {
494
- include_usage: true
495
- }
496
- },
497
- signal ? { signal } : void 0
498
- );
499
- let content = "";
500
- let toolCalls = [];
501
- let usage;
502
- for await (const chunk of stream) {
503
- if (signal?.aborted) {
504
- throw Object.assign(new Error("Aborted"), {
505
- name: "AbortError",
506
- aborted: true
507
- });
508
- }
509
- const delta = chunk.choices[0]?.delta;
510
- if (delta?.content) {
511
- content += delta.content;
512
- this.sessionEventBus.emit("llm:chunk", {
513
- chunkType: "text",
514
- content: delta.content,
515
- isComplete: false
516
- });
517
- }
518
- if (delta?.tool_calls) {
519
- for (const toolCall of delta.tool_calls) {
520
- const index = toolCall.index;
521
- if (typeof index !== "number") {
522
- continue;
523
- }
524
- if (!toolCalls[index]) {
525
- toolCalls[index] = {
526
- id: `pending-${index}`,
527
- type: "function",
528
- function: { name: "", arguments: "" }
529
- };
530
- }
531
- if (toolCall.id) {
532
- toolCalls[index].id = toolCall.id;
533
- }
534
- const existingToolCall = toolCalls[index];
535
- if (existingToolCall.type === "function" && toolCall.function) {
536
- if (toolCall.function.name) {
537
- existingToolCall.function.name = toolCall.function.name;
538
- }
539
- if (toolCall.function.arguments) {
540
- existingToolCall.function.arguments += toolCall.function.arguments;
541
- }
542
- }
543
- }
544
- }
545
- if (chunk.usage) {
546
- usage = chunk.usage;
547
- }
548
- }
549
- if (content) {
550
- this.sessionEventBus.emit("llm:chunk", {
551
- chunkType: "text",
552
- content: "",
553
- isComplete: true
554
- });
555
- }
556
- const message = {
557
- role: "assistant",
558
- content: content || null,
559
- refusal: null,
560
- ...toolCalls.length > 0 && { tool_calls: toolCalls }
561
- };
562
- this.logger.debug(`OpenAI streaming completed. Usage info: ${usage}`);
563
- return { message, ...usage && { usage } };
564
- } catch (error) {
565
- const apiError = error;
566
- this.logger.error(
567
- `Error in OpenAI streaming API call (Attempt ${attempts}/${MAX_ATTEMPTS}): ${apiError.message || JSON.stringify(apiError, null, 2)}`,
568
- { status: apiError.status, headers: apiError.headers }
569
- );
570
- if (apiError.status === 400 && apiError.message?.includes("maximum context length")) {
571
- this.logger.warn(
572
- `Context length exceeded in streaming. ContextManager compression might not be sufficient. Error details: ${JSON.stringify(apiError.error)}`
573
- );
574
- }
575
- if (attempts >= MAX_ATTEMPTS) {
576
- this.logger.error(
577
- `Failed to get streaming response from OpenAI after ${MAX_ATTEMPTS} attempts.`
578
- );
579
- throw error;
580
- }
581
- await new Promise((resolve) => setTimeout(resolve, 500 * attempts));
582
- }
583
- }
584
- throw new Error("Failed to get streaming response after maximum retry attempts");
585
- }
586
- formatToolsForOpenAI(tools) {
587
- return Object.entries(tools).map(([name, tool]) => {
588
- return {
589
- type: "function",
590
- function: {
591
- name,
592
- description: tool.description || "",
593
- parameters: tool.parameters
594
- }
595
- };
596
- });
597
- }
598
- /**
599
- * Get the context manager for external access
600
- */
601
- getContextManager() {
602
- return this.contextManager;
603
- }
604
- }
605
- _init = __decoratorStart(null);
606
- OpenAIService = __decorateElement(_init, 0, "OpenAIService", _OpenAIService_decorators, OpenAIService);
607
- __runInitializers(_init, 1, OpenAIService);
608
- // Annotate the CommonJS export names for ESM import in node:
609
- 0 && (module.exports = {
610
- OpenAIService
611
- });
@@ -1,48 +0,0 @@
1
- import OpenAI from 'openai';
2
- import { ToolManager } from '../../tools/tool-manager.js';
3
- import { ILLMService, LLMServiceConfig } from './types.js';
4
- import { ToolSet } from '../../tools/types.js';
5
- import type { IDextoLogger } from '../../logger/v2/types.js';
6
- import { ContextManager } from '../../context/manager.js';
7
- import { ImageData, FileData } from '../../context/types.js';
8
- import type { SessionEventBus } from '../../events/index.js';
9
- import type { IConversationHistoryProvider } from '../../session/history/types.js';
10
- import type { SystemPromptManager } from '../../systemPrompt/manager.js';
11
- import type { ValidatedLLMConfig } from '../schemas.js';
12
- /**
13
- * OpenAI implementation of LLMService
14
- * Not actively maintained, so might be buggy or outdated
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
21
- */
22
- export declare class OpenAIService implements ILLMService {
23
- private openai;
24
- private config;
25
- private toolManager;
26
- private contextManager;
27
- private sessionEventBus;
28
- private readonly sessionId;
29
- private logger;
30
- constructor(toolManager: ToolManager, openai: OpenAI, systemPromptManager: SystemPromptManager, historyProvider: IConversationHistoryProvider, sessionEventBus: SessionEventBus, config: ValidatedLLMConfig, sessionId: string, resourceManager: import('../../resources/index.js').ResourceManager, logger: IDextoLogger);
31
- getAllTools(): Promise<ToolSet>;
32
- completeTask(textInput: string, options: {
33
- signal?: AbortSignal;
34
- }, imageData?: ImageData, fileData?: FileData, stream?: boolean): Promise<string>;
35
- /**
36
- * Get configuration information about the LLM service
37
- * @returns Configuration object with provider and model information
38
- */
39
- getConfig(): LLMServiceConfig;
40
- private getAIResponseWithRetries;
41
- private getAIStreamingResponseWithRetries;
42
- private formatToolsForOpenAI;
43
- /**
44
- * Get the context manager for external access
45
- */
46
- getContextManager(): ContextManager<unknown>;
47
- }
48
- //# sourceMappingURL=openai.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/llm/services/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAoB,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,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;AAKxD;;;;;;;;;GASG;AACH,qBAIa,aAAc,YAAW,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,MAAM,CAAe;gBAGzB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,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,EACnE,MAAM,EAAE,YAAY;IA4BxB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzB,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;IAgWlB;;;OAGG;IACH,SAAS,IAAI,gBAAgB;YAmCf,wBAAwB;YA0FxB,iCAAiC;IAqK/C,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,iBAAiB,IAAI,cAAc,CAAC,OAAO,CAAC;CAG/C"}