@od-oneapp/ai-platform 0.1.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 (872) hide show
  1. package/README.md +235 -0
  2. package/dist/agents-base.d.mts +12 -0
  3. package/dist/agents-base.d.mts.map +1 -0
  4. package/dist/agents-base.mjs +20 -0
  5. package/dist/agents-base.mjs.map +1 -0
  6. package/dist/agents-control-flow.d.mts +115 -0
  7. package/dist/agents-control-flow.d.mts.map +1 -0
  8. package/dist/agents-control-flow.mjs +514 -0
  9. package/dist/agents-control-flow.mjs.map +1 -0
  10. package/dist/agents-coordinator.d.mts +11 -0
  11. package/dist/agents-coordinator.d.mts.map +1 -0
  12. package/dist/agents-coordinator.mjs +12 -0
  13. package/dist/agents-coordinator.mjs.map +1 -0
  14. package/dist/agents-experimental.d.mts +153 -0
  15. package/dist/agents-experimental.d.mts.map +1 -0
  16. package/dist/agents-experimental.mjs +580 -0
  17. package/dist/agents-experimental.mjs.map +1 -0
  18. package/dist/agents-fallback.d.mts +10 -0
  19. package/dist/agents-fallback.d.mts.map +1 -0
  20. package/dist/agents-fallback.mjs +15 -0
  21. package/dist/agents-fallback.mjs.map +1 -0
  22. package/dist/agents-multi-swarm.d.mts +9 -0
  23. package/dist/agents-multi-swarm.d.mts.map +1 -0
  24. package/dist/agents-multi-swarm.mjs +44 -0
  25. package/dist/agents-multi-swarm.mjs.map +1 -0
  26. package/dist/agents-multi.d.mts +10 -0
  27. package/dist/agents-multi.d.mts.map +1 -0
  28. package/dist/agents-multi.mjs +44 -0
  29. package/dist/agents-multi.mjs.map +1 -0
  30. package/dist/agents-observability.d.mts +161 -0
  31. package/dist/agents-observability.d.mts.map +1 -0
  32. package/dist/agents-observability.mjs +550 -0
  33. package/dist/agents-observability.mjs.map +1 -0
  34. package/dist/agents-patterns.d.mts +9 -0
  35. package/dist/agents-patterns.d.mts.map +1 -0
  36. package/dist/agents-patterns.mjs +18 -0
  37. package/dist/agents-patterns.mjs.map +1 -0
  38. package/dist/agents-persistence.d.mts +234 -0
  39. package/dist/agents-persistence.d.mts.map +1 -0
  40. package/dist/agents-persistence.mjs +447 -0
  41. package/dist/agents-persistence.mjs.map +1 -0
  42. package/dist/agents-triage.d.mts +11 -0
  43. package/dist/agents-triage.d.mts.map +1 -0
  44. package/dist/agents-triage.mjs +13 -0
  45. package/dist/agents-triage.mjs.map +1 -0
  46. package/dist/agents-workflows.d.mts +9 -0
  47. package/dist/agents-workflows.d.mts.map +1 -0
  48. package/dist/agents-workflows.mjs +9 -0
  49. package/dist/agents-workflows.mjs.map +1 -0
  50. package/dist/agents.d.mts +30 -0
  51. package/dist/agents.d.mts.map +1 -0
  52. package/dist/agents.mjs +50 -0
  53. package/dist/agents.mjs.map +1 -0
  54. package/dist/aggregation-8KJF1uzp.d.mts +276 -0
  55. package/dist/aggregation-8KJF1uzp.d.mts.map +1 -0
  56. package/dist/aggregation-BDop87kL.mjs +1180 -0
  57. package/dist/aggregation-BDop87kL.mjs.map +1 -0
  58. package/dist/ai-runtime-CDzQztTt.mjs +85 -0
  59. package/dist/ai-runtime-CDzQztTt.mjs.map +1 -0
  60. package/dist/ai-runtime-DIwOEc6g.d.mts +56 -0
  61. package/dist/ai-runtime-DIwOEc6g.d.mts.map +1 -0
  62. package/dist/ai-sdk-error-integration-D0GDqrM0.d.mts +553 -0
  63. package/dist/ai-sdk-error-integration-D0GDqrM0.d.mts.map +1 -0
  64. package/dist/approval-queue-BcDDQ4oQ.mjs +104 -0
  65. package/dist/approval-queue-BcDDQ4oQ.mjs.map +1 -0
  66. package/dist/approval-queue-CiKiFT9z.d.mts +21 -0
  67. package/dist/approval-queue-CiKiFT9z.d.mts.map +1 -0
  68. package/dist/audio-BzvN7r10.d.mts +79 -0
  69. package/dist/audio-BzvN7r10.d.mts.map +1 -0
  70. package/dist/audio-vBG_62ME.mjs +226 -0
  71. package/dist/audio-vBG_62ME.mjs.map +1 -0
  72. package/dist/audit-logger-Bb2JIcIk.d.mts +12 -0
  73. package/dist/audit-logger-Bb2JIcIk.d.mts.map +1 -0
  74. package/dist/audit-logger-CHIP8bRO.mjs +596 -0
  75. package/dist/audit-logger-CHIP8bRO.mjs.map +1 -0
  76. package/dist/auto-resume-BpUNbPtp.d.mts +160 -0
  77. package/dist/auto-resume-BpUNbPtp.d.mts.map +1 -0
  78. package/dist/auto-resume-BuFRNvAX.mjs +638 -0
  79. package/dist/auto-resume-BuFRNvAX.mjs.map +1 -0
  80. package/dist/budget-guard-C83KCH9V.d.mts +52 -0
  81. package/dist/budget-guard-C83KCH9V.d.mts.map +1 -0
  82. package/dist/budget-guard-d_b5rq4u.mjs +158 -0
  83. package/dist/budget-guard-d_b5rq4u.mjs.map +1 -0
  84. package/dist/budget-guard-gyhJS00s.mjs +234 -0
  85. package/dist/budget-guard-gyhJS00s.mjs.map +1 -0
  86. package/dist/buffer-BC8mvXHE.d.mts +98 -0
  87. package/dist/buffer-BC8mvXHE.d.mts.map +1 -0
  88. package/dist/buffer-CefJGbRy.mjs +289 -0
  89. package/dist/buffer-CefJGbRy.mjs.map +1 -0
  90. package/dist/caching-adapters.d.mts +5 -0
  91. package/dist/caching-adapters.mjs +3 -0
  92. package/dist/caching-strategies.d.mts +52 -0
  93. package/dist/caching-strategies.d.mts.map +1 -0
  94. package/dist/caching-strategies.mjs +703 -0
  95. package/dist/caching-strategies.mjs.map +1 -0
  96. package/dist/caching.d.mts +14 -0
  97. package/dist/caching.d.mts.map +1 -0
  98. package/dist/caching.mjs +15 -0
  99. package/dist/caching.mjs.map +1 -0
  100. package/dist/catalog.d.mts +19 -0
  101. package/dist/catalog.d.mts.map +1 -0
  102. package/dist/catalog.mjs +1114 -0
  103. package/dist/catalog.mjs.map +1 -0
  104. package/dist/chunk-CkzbjWQW.mjs +20 -0
  105. package/dist/circuit-breaker-DoKWPORd.mjs +262 -0
  106. package/dist/circuit-breaker-DoKWPORd.mjs.map +1 -0
  107. package/dist/circuit-breaker-Mey3E7tW.d.mts +64 -0
  108. package/dist/circuit-breaker-Mey3E7tW.d.mts.map +1 -0
  109. package/dist/citation-generator-C-9RpbHq.mjs +103 -0
  110. package/dist/citation-generator-C-9RpbHq.mjs.map +1 -0
  111. package/dist/citation-generator-CDSymDs_.d.mts +18 -0
  112. package/dist/citation-generator-CDSymDs_.d.mts.map +1 -0
  113. package/dist/client-CpacYDIE.mjs +882 -0
  114. package/dist/client-CpacYDIE.mjs.map +1 -0
  115. package/dist/client.d.mts +103 -0
  116. package/dist/client.d.mts.map +1 -0
  117. package/dist/client.mjs +470 -0
  118. package/dist/client.mjs.map +1 -0
  119. package/dist/compliance-approval-queue-DQGLojAm.mjs +172 -0
  120. package/dist/compliance-approval-queue-DQGLojAm.mjs.map +1 -0
  121. package/dist/compliance-approval-queue-IrMxFfSJ.d.mts +99 -0
  122. package/dist/compliance-approval-queue-IrMxFfSJ.d.mts.map +1 -0
  123. package/dist/compliance-wrapper-CrOMHhHN.mjs +528 -0
  124. package/dist/compliance-wrapper-CrOMHhHN.mjs.map +1 -0
  125. package/dist/conditions-DmQ6Y1Wt.mjs +179 -0
  126. package/dist/conditions-DmQ6Y1Wt.mjs.map +1 -0
  127. package/dist/conditions-zDrKfrc3.d.mts +42 -0
  128. package/dist/conditions-zDrKfrc3.d.mts.map +1 -0
  129. package/dist/console-BGMxxPZN.mjs +181 -0
  130. package/dist/console-BGMxxPZN.mjs.map +1 -0
  131. package/dist/console-DqEqZd4A.d.mts +76 -0
  132. package/dist/console-DqEqZd4A.d.mts.map +1 -0
  133. package/dist/controller-BOy3-xbC.mjs +501 -0
  134. package/dist/controller-BOy3-xbC.mjs.map +1 -0
  135. package/dist/controller-Y0NGosbJ.d.mts +104 -0
  136. package/dist/controller-Y0NGosbJ.d.mts.map +1 -0
  137. package/dist/coordinator-agent-BglqZLwo.d.mts +54 -0
  138. package/dist/coordinator-agent-BglqZLwo.d.mts.map +1 -0
  139. package/dist/coordinator-agent-WFWBRL-G.mjs +236 -0
  140. package/dist/coordinator-agent-WFWBRL-G.mjs.map +1 -0
  141. package/dist/crypto-8ABhc3TD.mjs +40 -0
  142. package/dist/crypto-8ABhc3TD.mjs.map +1 -0
  143. package/dist/environment-CSoJb0SW.mjs +255 -0
  144. package/dist/environment-CSoJb0SW.mjs.map +1 -0
  145. package/dist/error-handling-DNVkm6RY.mjs +1334 -0
  146. package/dist/error-handling-DNVkm6RY.mjs.map +1 -0
  147. package/dist/errors-CQ8tF4dP.mjs +985 -0
  148. package/dist/errors-CQ8tF4dP.mjs.map +1 -0
  149. package/dist/errors-CfYdVeum.d.mts +212 -0
  150. package/dist/errors-CfYdVeum.d.mts.map +1 -0
  151. package/dist/errors-Dtn-UeRi.mjs +61 -0
  152. package/dist/errors-Dtn-UeRi.mjs.map +1 -0
  153. package/dist/evaluator-Cs84qkr8.mjs +91 -0
  154. package/dist/evaluator-Cs84qkr8.mjs.map +1 -0
  155. package/dist/evaluator-optimizer-De67_mJC.mjs +1086 -0
  156. package/dist/evaluator-optimizer-De67_mJC.mjs.map +1 -0
  157. package/dist/evaluator-optimizer-pattern-B5939s2Z.mjs +367 -0
  158. package/dist/evaluator-optimizer-pattern-B5939s2Z.mjs.map +1 -0
  159. package/dist/evaluator-optimizer-pattern-D1AJrzBD.d.mts +72 -0
  160. package/dist/evaluator-optimizer-pattern-D1AJrzBD.d.mts.map +1 -0
  161. package/dist/factory-DP6VSl8C.mjs +307 -0
  162. package/dist/factory-DP6VSl8C.mjs.map +1 -0
  163. package/dist/generative-ui-catalog.d.mts +8 -0
  164. package/dist/generative-ui-catalog.d.mts.map +1 -0
  165. package/dist/generative-ui-catalog.mjs +679 -0
  166. package/dist/generative-ui-catalog.mjs.map +1 -0
  167. package/dist/generative-ui-registry.d.mts +195 -0
  168. package/dist/generative-ui-registry.d.mts.map +1 -0
  169. package/dist/generative-ui-registry.mjs +250 -0
  170. package/dist/generative-ui-registry.mjs.map +1 -0
  171. package/dist/generative-ui-stream.d.mts +23 -0
  172. package/dist/generative-ui-stream.d.mts.map +1 -0
  173. package/dist/generative-ui-stream.mjs +219 -0
  174. package/dist/generative-ui-stream.mjs.map +1 -0
  175. package/dist/generative-ui-types.d.mts +123 -0
  176. package/dist/generative-ui-types.d.mts.map +1 -0
  177. package/dist/generative-ui-types.mjs +1 -0
  178. package/dist/generative-ui.d.mts +13 -0
  179. package/dist/generative-ui.d.mts.map +1 -0
  180. package/dist/generative-ui.mjs +21 -0
  181. package/dist/generative-ui.mjs.map +1 -0
  182. package/dist/governance-audit.d.mts +3 -0
  183. package/dist/governance-audit.mjs +3 -0
  184. package/dist/governance-compliance.d.mts +5 -0
  185. package/dist/governance-compliance.mjs +4 -0
  186. package/dist/governance-policies.d.mts +4 -0
  187. package/dist/governance-policies.mjs +4 -0
  188. package/dist/governance-tenancy.d.mts +3 -0
  189. package/dist/governance-tenancy.mjs +3 -0
  190. package/dist/governance.d.mts +88 -0
  191. package/dist/governance.d.mts.map +1 -0
  192. package/dist/governance.mjs +432 -0
  193. package/dist/governance.mjs.map +1 -0
  194. package/dist/grounding-attribution.d.mts +63 -0
  195. package/dist/grounding-attribution.d.mts.map +1 -0
  196. package/dist/grounding-attribution.mjs +259 -0
  197. package/dist/grounding-attribution.mjs.map +1 -0
  198. package/dist/grounding-citation.d.mts +2 -0
  199. package/dist/grounding-citation.mjs +3 -0
  200. package/dist/grounding-context.d.mts +9 -0
  201. package/dist/grounding-context.d.mts.map +1 -0
  202. package/dist/grounding-context.mjs +19 -0
  203. package/dist/grounding-context.mjs.map +1 -0
  204. package/dist/grounding-embed.d.mts +102 -0
  205. package/dist/grounding-embed.d.mts.map +1 -0
  206. package/dist/grounding-embed.mjs +417 -0
  207. package/dist/grounding-embed.mjs.map +1 -0
  208. package/dist/grounding-hallucination.d.mts +44 -0
  209. package/dist/grounding-hallucination.d.mts.map +1 -0
  210. package/dist/grounding-hallucination.mjs +115 -0
  211. package/dist/grounding-hallucination.mjs.map +1 -0
  212. package/dist/grounding-proof-map.d.mts +9 -0
  213. package/dist/grounding-proof-map.d.mts.map +1 -0
  214. package/dist/grounding-proof-map.mjs +26 -0
  215. package/dist/grounding-proof-map.mjs.map +1 -0
  216. package/dist/grounding-rag.d.mts +10 -0
  217. package/dist/grounding-rag.d.mts.map +1 -0
  218. package/dist/grounding-rag.mjs +27 -0
  219. package/dist/grounding-rag.mjs.map +1 -0
  220. package/dist/grounding-verification.d.mts +48 -0
  221. package/dist/grounding-verification.d.mts.map +1 -0
  222. package/dist/grounding-verification.mjs +224 -0
  223. package/dist/grounding-verification.mjs.map +1 -0
  224. package/dist/grounding.d.mts +24 -0
  225. package/dist/grounding.d.mts.map +1 -0
  226. package/dist/grounding.mjs +77 -0
  227. package/dist/grounding.mjs.map +1 -0
  228. package/dist/hitl-active-learning.d.mts +41 -0
  229. package/dist/hitl-active-learning.d.mts.map +1 -0
  230. package/dist/hitl-active-learning.mjs +178 -0
  231. package/dist/hitl-active-learning.mjs.map +1 -0
  232. package/dist/hitl-annotation.d.mts +74 -0
  233. package/dist/hitl-annotation.d.mts.map +1 -0
  234. package/dist/hitl-annotation.mjs +170 -0
  235. package/dist/hitl-annotation.mjs.map +1 -0
  236. package/dist/hitl-approval.d.mts +2 -0
  237. package/dist/hitl-approval.mjs +3 -0
  238. package/dist/hitl-feedback.d.mts +59 -0
  239. package/dist/hitl-feedback.d.mts.map +1 -0
  240. package/dist/hitl-feedback.mjs +137 -0
  241. package/dist/hitl-feedback.mjs.map +1 -0
  242. package/dist/hitl-review.d.mts +2 -0
  243. package/dist/hitl-review.mjs +3 -0
  244. package/dist/hitl.d.mts +14 -0
  245. package/dist/hitl.d.mts.map +1 -0
  246. package/dist/hitl.mjs +22 -0
  247. package/dist/hitl.mjs.map +1 -0
  248. package/dist/index-B17HT-VL.d.mts +285 -0
  249. package/dist/index-B17HT-VL.d.mts.map +1 -0
  250. package/dist/index-BDwgsK9B.d.mts +101 -0
  251. package/dist/index-BDwgsK9B.d.mts.map +1 -0
  252. package/dist/index-BGgMn_Ev.d.mts +2615 -0
  253. package/dist/index-BGgMn_Ev.d.mts.map +1 -0
  254. package/dist/index-DOqe5r9G.d.mts +318 -0
  255. package/dist/index-DOqe5r9G.d.mts.map +1 -0
  256. package/dist/index-DotINT7o.d.mts +1004 -0
  257. package/dist/index-DotINT7o.d.mts.map +1 -0
  258. package/dist/index-URlW7aD1.d.mts +67 -0
  259. package/dist/index-URlW7aD1.d.mts.map +1 -0
  260. package/dist/index.d.mts +64 -0
  261. package/dist/index.d.mts.map +1 -0
  262. package/dist/index.mjs +46 -0
  263. package/dist/index.mjs.map +1 -0
  264. package/dist/integrations-blob-storage.d.mts +25 -0
  265. package/dist/integrations-blob-storage.d.mts.map +1 -0
  266. package/dist/integrations-blob-storage.mjs +3 -0
  267. package/dist/integrations-notifications.d.mts +2 -0
  268. package/dist/integrations-notifications.mjs +3 -0
  269. package/dist/integrations-rate-limit.d.mts +27 -0
  270. package/dist/integrations-rate-limit.d.mts.map +1 -0
  271. package/dist/integrations-rate-limit.mjs +30 -0
  272. package/dist/integrations-rate-limit.mjs.map +1 -0
  273. package/dist/integrations-redis.d.mts +3 -0
  274. package/dist/integrations-redis.mjs +3 -0
  275. package/dist/integrations-stream.d.mts +14 -0
  276. package/dist/integrations-stream.d.mts.map +1 -0
  277. package/dist/integrations-stream.mjs +3 -0
  278. package/dist/integrations.d.mts +7 -0
  279. package/dist/integrations.mjs +7 -0
  280. package/dist/log-adapter-BLegSZtz.d.mts +16 -0
  281. package/dist/log-adapter-BLegSZtz.d.mts.map +1 -0
  282. package/dist/log-adapter-PPe_2Pwv.mjs +28 -0
  283. package/dist/log-adapter-PPe_2Pwv.mjs.map +1 -0
  284. package/dist/loop-BOYEtr2g.mjs +520 -0
  285. package/dist/loop-BOYEtr2g.mjs.map +1 -0
  286. package/dist/loop-C-tBBOqi.d.mts +219 -0
  287. package/dist/loop-C-tBBOqi.d.mts.map +1 -0
  288. package/dist/middleware-5wQ9bANW.mjs +306 -0
  289. package/dist/middleware-5wQ9bANW.mjs.map +1 -0
  290. package/dist/middleware-C1apSrj0.mjs +613 -0
  291. package/dist/middleware-C1apSrj0.mjs.map +1 -0
  292. package/dist/middleware-C7k0uItW.d.mts +9 -0
  293. package/dist/middleware-C7k0uItW.d.mts.map +1 -0
  294. package/dist/middleware-CZQCTHfl.mjs +366 -0
  295. package/dist/middleware-CZQCTHfl.mjs.map +1 -0
  296. package/dist/models.d.mts +11 -0
  297. package/dist/models.d.mts.map +1 -0
  298. package/dist/models.mjs +32 -0
  299. package/dist/models.mjs.map +1 -0
  300. package/dist/observability-analytics.d.mts +107 -0
  301. package/dist/observability-analytics.d.mts.map +1 -0
  302. package/dist/observability-analytics.mjs +409 -0
  303. package/dist/observability-analytics.mjs.map +1 -0
  304. package/dist/observability-cost.d.mts +10 -0
  305. package/dist/observability-cost.d.mts.map +1 -0
  306. package/dist/observability-cost.mjs +15 -0
  307. package/dist/observability-cost.mjs.map +1 -0
  308. package/dist/observability-telemetry.d.mts +111 -0
  309. package/dist/observability-telemetry.d.mts.map +1 -0
  310. package/dist/observability-telemetry.mjs +343 -0
  311. package/dist/observability-telemetry.mjs.map +1 -0
  312. package/dist/observability-tracing.d.mts +10 -0
  313. package/dist/observability-tracing.d.mts.map +1 -0
  314. package/dist/observability-tracing.mjs +17 -0
  315. package/dist/observability-tracing.mjs.map +1 -0
  316. package/dist/observability.d.mts +15 -0
  317. package/dist/observability.d.mts.map +1 -0
  318. package/dist/observability.mjs +17 -0
  319. package/dist/observability.mjs.map +1 -0
  320. package/dist/optimizer-DhXXpci6.mjs +97 -0
  321. package/dist/optimizer-DhXXpci6.mjs.map +1 -0
  322. package/dist/output-multimodal.d.mts +9 -0
  323. package/dist/output-multimodal.d.mts.map +1 -0
  324. package/dist/output-multimodal.mjs +18 -0
  325. package/dist/output-multimodal.mjs.map +1 -0
  326. package/dist/output.d.mts +11 -0
  327. package/dist/output.d.mts.map +1 -0
  328. package/dist/output.mjs +40 -0
  329. package/dist/output.mjs.map +1 -0
  330. package/dist/pii-filter-3AxmYSiu.d.mts +23 -0
  331. package/dist/pii-filter-3AxmYSiu.d.mts.map +1 -0
  332. package/dist/pipelines.d.mts +448 -0
  333. package/dist/pipelines.d.mts.map +1 -0
  334. package/dist/pipelines.mjs +1534 -0
  335. package/dist/pipelines.mjs.map +1 -0
  336. package/dist/prompt-injection-DQXchzsV.d.mts +8 -0
  337. package/dist/prompt-injection-DQXchzsV.d.mts.map +1 -0
  338. package/dist/prompt-injection-RpoLPwSa.mjs +52 -0
  339. package/dist/prompt-injection-RpoLPwSa.mjs.map +1 -0
  340. package/dist/prompts.d.mts +192 -0
  341. package/dist/prompts.d.mts.map +1 -0
  342. package/dist/prompts.mjs +732 -0
  343. package/dist/prompts.mjs.map +1 -0
  344. package/dist/protocol-DfBiEsnl.d.mts +112 -0
  345. package/dist/protocol-DfBiEsnl.d.mts.map +1 -0
  346. package/dist/quota-manager-0iPMkQWN.d.mts +62 -0
  347. package/dist/quota-manager-0iPMkQWN.d.mts.map +1 -0
  348. package/dist/quota-manager-D_N7FuQ2.mjs +180 -0
  349. package/dist/quota-manager-D_N7FuQ2.mjs.map +1 -0
  350. package/dist/redaction-utils-DcQwsiNh.mjs +438 -0
  351. package/dist/redaction-utils-DcQwsiNh.mjs.map +1 -0
  352. package/dist/redis-CpsSrF8K.mjs +102 -0
  353. package/dist/redis-CpsSrF8K.mjs.map +1 -0
  354. package/dist/redis-CwguYFGh.d.mts +33 -0
  355. package/dist/redis-CwguYFGh.d.mts.map +1 -0
  356. package/dist/registry-CsD3iTIx.mjs +190 -0
  357. package/dist/registry-CsD3iTIx.mjs.map +1 -0
  358. package/dist/registry-DVPWzkXR.d.mts +36 -0
  359. package/dist/registry-DVPWzkXR.d.mts.map +1 -0
  360. package/dist/reranking-BpWYhYzl.d.mts +72 -0
  361. package/dist/reranking-BpWYhYzl.d.mts.map +1 -0
  362. package/dist/reranking-Ck8aKZW7.mjs +331 -0
  363. package/dist/reranking-Ck8aKZW7.mjs.map +1 -0
  364. package/dist/resumable-adapter-CO1HtsgJ.mjs +21 -0
  365. package/dist/resumable-adapter-CO1HtsgJ.mjs.map +1 -0
  366. package/dist/review-trigger-DmAsiQlM.d.mts +24 -0
  367. package/dist/review-trigger-DmAsiQlM.d.mts.map +1 -0
  368. package/dist/review-trigger-DwXfpww9.mjs +112 -0
  369. package/dist/review-trigger-DwXfpww9.mjs.map +1 -0
  370. package/dist/safe-context-BynhkTKR.d.mts +54 -0
  371. package/dist/safe-context-BynhkTKR.d.mts.map +1 -0
  372. package/dist/safe-context-C5A3Wv3b.mjs +143 -0
  373. package/dist/safe-context-C5A3Wv3b.mjs.map +1 -0
  374. package/dist/schema-Bu2noOZ4.mjs +27 -0
  375. package/dist/schema-Bu2noOZ4.mjs.map +1 -0
  376. package/dist/schema-CwFvuCnA.mjs +97 -0
  377. package/dist/schema-CwFvuCnA.mjs.map +1 -0
  378. package/dist/schema-Wz-1-ro9.d.mts +37 -0
  379. package/dist/schema-Wz-1-ro9.d.mts.map +1 -0
  380. package/dist/schemas-CxQtxIga.mjs +62 -0
  381. package/dist/schemas-CxQtxIga.mjs.map +1 -0
  382. package/dist/schemas-DBOhxgW7.d.mts +32 -0
  383. package/dist/schemas-DBOhxgW7.d.mts.map +1 -0
  384. package/dist/schemas-Dp_OCqBt.d.mts +63 -0
  385. package/dist/schemas-Dp_OCqBt.d.mts.map +1 -0
  386. package/dist/schemas-SwCsnT0z.mjs +83 -0
  387. package/dist/schemas-SwCsnT0z.mjs.map +1 -0
  388. package/dist/sdk-errors.d.mts +2 -0
  389. package/dist/sdk-errors.mjs +3 -0
  390. package/dist/sdk-experimental.d.mts +59 -0
  391. package/dist/sdk-experimental.d.mts.map +1 -0
  392. package/dist/sdk-experimental.mjs +193 -0
  393. package/dist/sdk-experimental.mjs.map +1 -0
  394. package/dist/sdk-stop-conditions.d.mts +3 -0
  395. package/dist/sdk-stop-conditions.mjs +3 -0
  396. package/dist/sdk.d.mts +15 -0
  397. package/dist/sdk.d.mts.map +1 -0
  398. package/dist/sdk.mjs +50 -0
  399. package/dist/sdk.mjs.map +1 -0
  400. package/dist/security-guardrails.d.mts +3 -0
  401. package/dist/security-guardrails.mjs +3 -0
  402. package/dist/security-injection.d.mts +2 -0
  403. package/dist/security-injection.mjs +3 -0
  404. package/dist/security.d.mts +12 -0
  405. package/dist/security.d.mts.map +1 -0
  406. package/dist/security.mjs +18 -0
  407. package/dist/security.mjs.map +1 -0
  408. package/dist/server.d.mts +420 -0
  409. package/dist/server.d.mts.map +1 -0
  410. package/dist/server.mjs +2225 -0
  411. package/dist/server.mjs.map +1 -0
  412. package/dist/shared.d.mts +2 -0
  413. package/dist/shared.mjs +3 -0
  414. package/dist/streaming-control.d.mts +2 -0
  415. package/dist/streaming-control.mjs +4 -0
  416. package/dist/streaming-core.d.mts +4 -0
  417. package/dist/streaming-core.mjs +3 -0
  418. package/dist/streaming-infra-resilience.d.mts +120 -0
  419. package/dist/streaming-infra-resilience.d.mts.map +1 -0
  420. package/dist/streaming-infra-resilience.mjs +358 -0
  421. package/dist/streaming-infra-resilience.mjs.map +1 -0
  422. package/dist/streaming-infra-transport.d.mts +57 -0
  423. package/dist/streaming-infra-transport.d.mts.map +1 -0
  424. package/dist/streaming-infra-transport.mjs +488 -0
  425. package/dist/streaming-infra-transport.mjs.map +1 -0
  426. package/dist/streaming-infra.d.mts +5 -0
  427. package/dist/streaming-infra.mjs +5 -0
  428. package/dist/streaming.d.mts +17 -0
  429. package/dist/streaming.d.mts.map +1 -0
  430. package/dist/streaming.mjs +71 -0
  431. package/dist/streaming.mjs.map +1 -0
  432. package/dist/telemetry-2eKMojIb.mjs +1046 -0
  433. package/dist/telemetry-2eKMojIb.mjs.map +1 -0
  434. package/dist/telemetry-C2t03dwD.d.mts +59 -0
  435. package/dist/telemetry-C2t03dwD.d.mts.map +1 -0
  436. package/dist/tool-Btbththq.d.mts +253 -0
  437. package/dist/tool-Btbththq.d.mts.map +1 -0
  438. package/dist/tool-JSf8JXZ8.mjs +1150 -0
  439. package/dist/tool-JSf8JXZ8.mjs.map +1 -0
  440. package/dist/tool-safety-CZO8a4D4.d.mts +60 -0
  441. package/dist/tool-safety-CZO8a4D4.d.mts.map +1 -0
  442. package/dist/tool-safety-DXtYDXod.mjs +319 -0
  443. package/dist/tool-safety-DXtYDXod.mjs.map +1 -0
  444. package/dist/tools-BuS2Uv0q.mjs +1708 -0
  445. package/dist/tools-BuS2Uv0q.mjs.map +1 -0
  446. package/dist/tools-approval.d.mts +99 -0
  447. package/dist/tools-approval.d.mts.map +1 -0
  448. package/dist/tools-approval.mjs +395 -0
  449. package/dist/tools-approval.mjs.map +1 -0
  450. package/dist/tools-compliance.d.mts +67 -0
  451. package/dist/tools-compliance.d.mts.map +1 -0
  452. package/dist/tools-compliance.mjs +330 -0
  453. package/dist/tools-compliance.mjs.map +1 -0
  454. package/dist/tools-computer.d.mts +25 -0
  455. package/dist/tools-computer.d.mts.map +1 -0
  456. package/dist/tools-computer.mjs +64 -0
  457. package/dist/tools-computer.mjs.map +1 -0
  458. package/dist/tools-core.d.mts +3 -0
  459. package/dist/tools-core.mjs +3 -0
  460. package/dist/tools-mcp.d.mts +3 -0
  461. package/dist/tools-mcp.mjs +5 -0
  462. package/dist/tools-superpowers.d.mts +2 -0
  463. package/dist/tools-superpowers.mjs +3 -0
  464. package/dist/tools.d.mts +401 -0
  465. package/dist/tools.d.mts.map +1 -0
  466. package/dist/tools.mjs +1921 -0
  467. package/dist/tools.mjs.map +1 -0
  468. package/dist/transport-selector-D-Ib05X1.mjs +1936 -0
  469. package/dist/transport-selector-D-Ib05X1.mjs.map +1 -0
  470. package/dist/triage-agent-BEsXg5sw.d.mts +63 -0
  471. package/dist/triage-agent-BEsXg5sw.d.mts.map +1 -0
  472. package/dist/triage-agent-CBsfX-HW.mjs +167 -0
  473. package/dist/triage-agent-CBsfX-HW.mjs.map +1 -0
  474. package/dist/types-BPnq3GQo.d.mts +23 -0
  475. package/dist/types-BPnq3GQo.d.mts.map +1 -0
  476. package/dist/types-BjWgimpY.d.mts +16 -0
  477. package/dist/types-BjWgimpY.d.mts.map +1 -0
  478. package/dist/types-BxD-5btB.d.mts +41 -0
  479. package/dist/types-BxD-5btB.d.mts.map +1 -0
  480. package/dist/types-By-r93bE.d.mts +36 -0
  481. package/dist/types-By-r93bE.d.mts.map +1 -0
  482. package/dist/types-CLBWFRZN.d.mts +69 -0
  483. package/dist/types-CLBWFRZN.d.mts.map +1 -0
  484. package/dist/types-CQ0HFd0u.d.mts +62 -0
  485. package/dist/types-CQ0HFd0u.d.mts.map +1 -0
  486. package/dist/types-D3zJb59_.d.mts +47 -0
  487. package/dist/types-D3zJb59_.d.mts.map +1 -0
  488. package/dist/types-DJnugQX0.d.mts +80 -0
  489. package/dist/types-DJnugQX0.d.mts.map +1 -0
  490. package/dist/types-DbUfMCnT.d.mts +70 -0
  491. package/dist/types-DbUfMCnT.d.mts.map +1 -0
  492. package/dist/upstash-adapter-D96Caq2O.mjs +22 -0
  493. package/dist/upstash-adapter-D96Caq2O.mjs.map +1 -0
  494. package/dist/upstash-adapter-DD4433dx.d.mts +8 -0
  495. package/dist/upstash-adapter-DD4433dx.d.mts.map +1 -0
  496. package/dist/utils-BlYhcD6M.mjs +319 -0
  497. package/dist/utils-BlYhcD6M.mjs.map +1 -0
  498. package/dist/utils-DpJGOb3y.d.mts +120 -0
  499. package/dist/utils-DpJGOb3y.d.mts.map +1 -0
  500. package/dist/vercel-blob-adapter-CkOXLT2D.mjs +25 -0
  501. package/dist/vercel-blob-adapter-CkOXLT2D.mjs.map +1 -0
  502. package/dist/xai-CbV_dCnP.mjs +1600 -0
  503. package/dist/xai-CbV_dCnP.mjs.map +1 -0
  504. package/package.json +479 -0
  505. package/src/agents/base/factory.ts +382 -0
  506. package/src/agents/base/index.ts +8 -0
  507. package/src/agents/base/schemas.ts +117 -0
  508. package/src/agents/base/types.ts +192 -0
  509. package/src/agents/control-flow/index.ts +683 -0
  510. package/src/agents/coordinator/coordinator-agent.ts +381 -0
  511. package/src/agents/coordinator/index.ts +6 -0
  512. package/src/agents/default-agent.ts +211 -0
  513. package/src/agents/evaluator-optimizer/README.md +612 -0
  514. package/src/agents/evaluator-optimizer/evaluator-optimizer.example.ts +437 -0
  515. package/src/agents/evaluator-optimizer/evaluator.ts +282 -0
  516. package/src/agents/evaluator-optimizer/index.test.ts +416 -0
  517. package/src/agents/evaluator-optimizer/index.ts +519 -0
  518. package/src/agents/evaluator-optimizer/optimizer.ts +322 -0
  519. package/src/agents/evaluator-optimizer/schema.ts +302 -0
  520. package/src/agents/evaluator-optimizer/utils.ts +42 -0
  521. package/src/agents/experimental/index.ts +1095 -0
  522. package/src/agents/experimental/types.ts +212 -0
  523. package/src/agents/fallback/index.ts +18 -0
  524. package/src/agents/fallback/recovery/circuit-breaker.ts +166 -0
  525. package/src/agents/fallback/strategies/model-fallback.ts +192 -0
  526. package/src/agents/fallback/types.ts +87 -0
  527. package/src/agents/governance-agent.ts +446 -0
  528. package/src/agents/index.ts +79 -0
  529. package/src/agents/multi/coordination/index.ts +6 -0
  530. package/src/agents/multi/coordination/message-bus.ts +144 -0
  531. package/src/agents/multi/index.ts +6 -0
  532. package/src/agents/multi/state/index.ts +162 -0
  533. package/src/agents/multi/supervisor/index.ts +7 -0
  534. package/src/agents/multi/supervisor/supervisor.ts +254 -0
  535. package/src/agents/multi/swarm/aggregation.ts +466 -0
  536. package/src/agents/multi/swarm/communication.ts +388 -0
  537. package/src/agents/multi/swarm/coordination.ts +380 -0
  538. package/src/agents/multi/swarm/index.ts +73 -0
  539. package/src/agents/multi/swarm/swarm-executor.ts +479 -0
  540. package/src/agents/multi/types.ts +181 -0
  541. package/src/agents/observability/index.ts +914 -0
  542. package/src/agents/orchestrator.ts +218 -0
  543. package/src/agents/patterns/README.md +512 -0
  544. package/src/agents/patterns/evaluator-optimizer-pattern.example.ts +455 -0
  545. package/src/agents/patterns/evaluator-optimizer-pattern.ts +653 -0
  546. package/src/agents/patterns/index.ts +26 -0
  547. package/src/agents/persistence/index.ts +726 -0
  548. package/src/agents/tools/index.ts +291 -0
  549. package/src/agents/tools/mcp.ts +188 -0
  550. package/src/agents/triage/index.ts +6 -0
  551. package/src/agents/triage/triage-agent.ts +280 -0
  552. package/src/agents/workflows/index.ts +6 -0
  553. package/src/agents/workflows/interfaces.ts +36 -0
  554. package/src/agents/workflows/schema.ts +20 -0
  555. package/src/caching/adapters/index.ts +7 -0
  556. package/src/caching/adapters/memory.ts +77 -0
  557. package/src/caching/adapters/redis.ts +60 -0
  558. package/src/caching/index.ts +17 -0
  559. package/src/caching/middleware.ts +452 -0
  560. package/src/caching/strategies/index.ts +1008 -0
  561. package/src/caching/types.ts +47 -0
  562. package/src/catalog.ts +921 -0
  563. package/src/client/chat-usage.ts +53 -0
  564. package/src/client/hooks.ts +343 -0
  565. package/src/client/index.ts +36 -0
  566. package/src/client/message-utils.ts +29 -0
  567. package/src/client/use-generative-ui.ts +174 -0
  568. package/src/client/utils.ts +66 -0
  569. package/src/generative-ui/catalog.ts +653 -0
  570. package/src/generative-ui/index.ts +82 -0
  571. package/src/generative-ui/registry.ts +273 -0
  572. package/src/generative-ui/stream.ts +324 -0
  573. package/src/generative-ui/types.ts +376 -0
  574. package/src/governance/audit/audit-logger.ts +239 -0
  575. package/src/governance/audit/audit-schema.ts +82 -0
  576. package/src/governance/audit/index.ts +6 -0
  577. package/src/governance/compliance/abac/policy-engine.ts +175 -0
  578. package/src/governance/compliance/abac/types.ts +40 -0
  579. package/src/governance/compliance/approval/compliance-approval-queue.ts +217 -0
  580. package/src/governance/compliance/index.ts +16 -0
  581. package/src/governance/compliance/schemas.ts +68 -0
  582. package/src/governance/compliance/types.ts +143 -0
  583. package/src/governance/compliance/validators/phi-detector.ts +145 -0
  584. package/src/governance/compliance/validators/redaction-utils.ts +176 -0
  585. package/src/governance/compliance/validators/safe-harbor.ts +135 -0
  586. package/src/governance/entitlements/index.ts +585 -0
  587. package/src/governance/entitlements/middleware.ts +651 -0
  588. package/src/governance/entitlements/rate-limiter.ts +711 -0
  589. package/src/governance/index.ts +32 -0
  590. package/src/governance/policies/guardrails.ts +1121 -0
  591. package/src/governance/policies/index.ts +42 -0
  592. package/src/governance/policies/loop-controls.ts +136 -0
  593. package/src/governance/policies/telemetry.ts +63 -0
  594. package/src/governance/tenancy/index.ts +30 -0
  595. package/src/governance/tenancy/isolation/context.ts +92 -0
  596. package/src/governance/tenancy/isolation/index.ts +13 -0
  597. package/src/governance/tenancy/quotas/index.ts +11 -0
  598. package/src/governance/tenancy/quotas/quota-manager.ts +180 -0
  599. package/src/governance/tenancy/types.ts +66 -0
  600. package/src/governance/types.ts +16 -0
  601. package/src/governance/versioning/index.ts +573 -0
  602. package/src/grounding/attribution/index.ts +424 -0
  603. package/src/grounding/citation/citation-generator.ts +174 -0
  604. package/src/grounding/citation/index.ts +12 -0
  605. package/src/grounding/context/index.ts +32 -0
  606. package/src/grounding/context/safe-context.ts +116 -0
  607. package/src/grounding/context/types.ts +62 -0
  608. package/src/grounding/context-engineering/error-handling.ts +359 -0
  609. package/src/grounding/context-engineering/index.ts +23 -0
  610. package/src/grounding/context-engineering/memory.ts +559 -0
  611. package/src/grounding/context-engineering/tool-masking.ts +338 -0
  612. package/src/grounding/embed/index.ts +704 -0
  613. package/src/grounding/embed/reranking.ts +604 -0
  614. package/src/grounding/hallucination/index.ts +223 -0
  615. package/src/grounding/index.ts +82 -0
  616. package/src/grounding/proof-map/applyPatch.ts +172 -0
  617. package/src/grounding/proof-map/index.ts +41 -0
  618. package/src/grounding/proof-map/loop.ts +275 -0
  619. package/src/grounding/proof-map/schema.ts +217 -0
  620. package/src/grounding/rag/__tests__/pipeline.test.ts +274 -0
  621. package/src/grounding/rag/__tests__/tool.test.ts +202 -0
  622. package/src/grounding/rag/__tests__/trace.test.ts +229 -0
  623. package/src/grounding/rag/circuit-breaker.ts +152 -0
  624. package/src/grounding/rag/index.ts +64 -0
  625. package/src/grounding/rag/pipeline.ts +602 -0
  626. package/src/grounding/rag/tool.ts +281 -0
  627. package/src/grounding/rag/trace.ts +503 -0
  628. package/src/grounding/rag/types.ts +284 -0
  629. package/src/grounding/retrieval/in-memory-store.ts +107 -0
  630. package/src/grounding/sources/index.ts +943 -0
  631. package/src/grounding/tests/applyPatch.test.ts +194 -0
  632. package/src/grounding/tests/loop.test.ts +141 -0
  633. package/src/grounding/tests/schema.test.ts +160 -0
  634. package/src/grounding/types.ts +100 -0
  635. package/src/grounding/verification/index.ts +419 -0
  636. package/src/hitl/active-learning/index.ts +332 -0
  637. package/src/hitl/annotation/index.ts +362 -0
  638. package/src/hitl/approval/approval-queue.ts +132 -0
  639. package/src/hitl/approval/index.ts +5 -0
  640. package/src/hitl/feedback/index.ts +284 -0
  641. package/src/hitl/index.ts +69 -0
  642. package/src/hitl/review/index.ts +6 -0
  643. package/src/hitl/review/review-trigger.ts +162 -0
  644. package/src/hitl/types.ts +126 -0
  645. package/src/index.ts +125 -0
  646. package/src/integrations/blob-storage/index.ts +7 -0
  647. package/src/integrations/blob-storage/types.ts +28 -0
  648. package/src/integrations/blob-storage/vercel-blob-adapter.ts +35 -0
  649. package/src/integrations/index.ts +15 -0
  650. package/src/integrations/notifications/index.ts +7 -0
  651. package/src/integrations/notifications/log-adapter.ts +30 -0
  652. package/src/integrations/notifications/types.ts +27 -0
  653. package/src/integrations/rate-limit/index.ts +7 -0
  654. package/src/integrations/rate-limit/types.ts +26 -0
  655. package/src/integrations/rate-limit/upstash-adapter.ts +45 -0
  656. package/src/integrations/redis/index.ts +7 -0
  657. package/src/integrations/redis/types.ts +67 -0
  658. package/src/integrations/redis/upstash-adapter.ts +18 -0
  659. package/src/integrations/stream/index.ts +7 -0
  660. package/src/integrations/stream/resumable-adapter.ts +20 -0
  661. package/src/integrations/stream/types.ts +21 -0
  662. package/src/internal/__tests__/hallucination.test.ts +162 -0
  663. package/src/internal/__tests__/models.test.ts +104 -0
  664. package/src/internal/__tests__/sdk-errors.test.ts +201 -0
  665. package/src/internal/__tests__/stop-conditions.test.ts +210 -0
  666. package/src/internal/shared/ai-types.ts +942 -0
  667. package/src/internal/testing/evaluators.ts +575 -0
  668. package/src/internal/testing/index.ts +960 -0
  669. package/src/internal/ui/data-parts.ts +511 -0
  670. package/src/internal/ui/type-guards.ts +344 -0
  671. package/src/internal/ui-factories/__tests__/ui-factories.test.ts +548 -0
  672. package/src/internal/ui-factories/artifact-factory.ts +667 -0
  673. package/src/internal/ui-factories/index.ts +82 -0
  674. package/src/internal/ui-factories/shimmer-manager.ts +220 -0
  675. package/src/internal/ui-factories/status-helpers.ts +149 -0
  676. package/src/internal/ui-factories/tool-renderer.ts +167 -0
  677. package/src/internal/ui-factories/types.ts +235 -0
  678. package/src/models/capabilities.ts +88 -0
  679. package/src/models/index.ts +16 -0
  680. package/src/models/provider-factory.ts +229 -0
  681. package/src/models/providers/anthropic.ts +539 -0
  682. package/src/models/providers/google.ts +354 -0
  683. package/src/models/providers/index.ts +21 -0
  684. package/src/models/providers/openai.ts +346 -0
  685. package/src/models/providers/perplexity.ts +276 -0
  686. package/src/models/providers/shared.ts +90 -0
  687. package/src/models/providers/xai.ts +269 -0
  688. package/src/models/registry.ts +208 -0
  689. package/src/models/routing/index.ts +45 -0
  690. package/src/models/routing/intent-router.ts +143 -0
  691. package/src/models/routing/model-router.ts +300 -0
  692. package/src/models/routing/types.ts +106 -0
  693. package/src/models/types.ts +23 -0
  694. package/src/observability/analytics/index.ts +593 -0
  695. package/src/observability/cost/index.ts +16 -0
  696. package/src/observability/cost/tracking/budget-guard.ts +110 -0
  697. package/src/observability/cost/tracking/usage-tracker.ts +120 -0
  698. package/src/observability/cost/types.ts +85 -0
  699. package/src/observability/index.ts +17 -0
  700. package/src/observability/telemetry/index.ts +508 -0
  701. package/src/observability/tracing/index.ts +30 -0
  702. package/src/observability/tracing/otel/ai-instrumentation.ts +193 -0
  703. package/src/observability/tracing/otel/exporters/console.ts +58 -0
  704. package/src/observability/tracing/otel/exporters/index.ts +6 -0
  705. package/src/observability/tracing/provenance.ts +769 -0
  706. package/src/observability/tracing/types.ts +92 -0
  707. package/src/output/__tests__/output.test.ts +737 -0
  708. package/src/output/element-stream.ts +678 -0
  709. package/src/output/errors.ts +108 -0
  710. package/src/output/factories.ts +392 -0
  711. package/src/output/index.ts +98 -0
  712. package/src/output/multimodal/EXPORTS.md +306 -0
  713. package/src/output/multimodal/IMPLEMENTATION_SUMMARY.md +421 -0
  714. package/src/output/multimodal/README.md +349 -0
  715. package/src/output/multimodal/SETUP_GUIDE.md +472 -0
  716. package/src/output/multimodal/audio.ts +650 -0
  717. package/src/output/multimodal/image.ts +22 -0
  718. package/src/output/multimodal/index.ts +32 -0
  719. package/src/output/multimodal/providers.example.ts +375 -0
  720. package/src/output/validator.ts +495 -0
  721. package/src/pipelines/adapters/trace-storage-blob.ts +458 -0
  722. package/src/pipelines/adapters/trace-storage-memory.ts +319 -0
  723. package/src/pipelines/defaults.ts +109 -0
  724. package/src/pipelines/index.ts +24 -0
  725. package/src/pipelines/message-transforms.ts +107 -0
  726. package/src/pipelines/multi-step-wrapper.ts +433 -0
  727. package/src/pipelines/pipeline-presets.ts +339 -0
  728. package/src/pipelines/step-executor.ts +257 -0
  729. package/src/pipelines/storage-factory.ts +85 -0
  730. package/src/pipelines/trace-storage-interface.ts +216 -0
  731. package/src/pipelines/types.ts +255 -0
  732. package/src/pipelines/validation.ts +323 -0
  733. package/src/prompts/index.ts +271 -0
  734. package/src/prompts/model-variants.ts +410 -0
  735. package/src/prompts/templates.ts +327 -0
  736. package/src/sdk/errors/base.ts +296 -0
  737. package/src/sdk/errors/index.ts +31 -0
  738. package/src/sdk/errors/utils.ts +148 -0
  739. package/src/sdk/experimental/index.ts +286 -0
  740. package/src/sdk/index.ts +25 -0
  741. package/src/sdk/middleware/ai-middleware.ts +95 -0
  742. package/src/sdk/middleware/cache.ts +154 -0
  743. package/src/sdk/middleware/circuit-breaker.ts +388 -0
  744. package/src/sdk/middleware/compose.ts +81 -0
  745. package/src/sdk/middleware/deduplication.ts +307 -0
  746. package/src/sdk/middleware/index.ts +660 -0
  747. package/src/sdk/middleware/model-middleware.ts +200 -0
  748. package/src/sdk/stop-conditions/conditions.ts +209 -0
  749. package/src/sdk/stop-conditions/index.ts +35 -0
  750. package/src/sdk/stop-conditions/types.ts +59 -0
  751. package/src/security/guardrails/index.ts +6 -0
  752. package/src/security/guardrails/middleware.ts +465 -0
  753. package/src/security/guardrails/pii-filter.ts +396 -0
  754. package/src/security/index.ts +33 -0
  755. package/src/security/injection/index.ts +5 -0
  756. package/src/security/injection/prompt-injection.ts +64 -0
  757. package/src/security/types.ts +85 -0
  758. package/src/server/cache/crypto.ts +47 -0
  759. package/src/server/cache/performance.ts +79 -0
  760. package/src/server/error-handler.ts +93 -0
  761. package/src/server/errors.ts +73 -0
  762. package/src/server/helpers.ts +944 -0
  763. package/src/server/http.ts +156 -0
  764. package/src/server/index.ts +12 -0
  765. package/src/server/messages/__tests__/messages.test.ts +720 -0
  766. package/src/server/messages/converter.ts +245 -0
  767. package/src/server/messages/data-parts.ts +338 -0
  768. package/src/server/messages/extraction.ts +328 -0
  769. package/src/server/messages/index.ts +126 -0
  770. package/src/server/messages/types.ts +355 -0
  771. package/src/server/messages/window.ts +450 -0
  772. package/src/server/rate-limit/env.ts +8 -0
  773. package/src/server/rate-limit/rate-limit.ts +165 -0
  774. package/src/server/routes/HEALTH_CHECK.md +502 -0
  775. package/src/server/routes/IMPLEMENTATION_SUMMARY.md +432 -0
  776. package/src/server/routes/QUICK_START.md +327 -0
  777. package/src/server/routes/README.md +357 -0
  778. package/src/server/routes/__tests__/routes.test.ts +628 -0
  779. package/src/server/routes/agent-route.ts +224 -0
  780. package/src/server/routes/agent-routes.ts +191 -0
  781. package/src/server/routes/embed-config.ts +181 -0
  782. package/src/server/routes/health-check.example.ts +507 -0
  783. package/src/server/routes/health-check.test.ts +533 -0
  784. package/src/server/routes/health-check.ts +639 -0
  785. package/src/server/routes/health-check.types.ts +217 -0
  786. package/src/server/routes/index.ts +32 -0
  787. package/src/server/routes/types.ts +274 -0
  788. package/src/shared/__tests__/schemas.test.ts +317 -0
  789. package/src/shared/ai-runtime.ts +139 -0
  790. package/src/shared/ai-types.ts +133 -0
  791. package/src/shared/index.ts +30 -0
  792. package/src/shared/sdk-runtime.ts +198 -0
  793. package/src/shared/sdk-types.ts +301 -0
  794. package/src/streaming/control/__tests__/streaming-control.test.ts +708 -0
  795. package/src/streaming/control/budget-guard.ts +264 -0
  796. package/src/streaming/control/controller.ts +255 -0
  797. package/src/streaming/control/index.ts +105 -0
  798. package/src/streaming/control/smoothing.ts +201 -0
  799. package/src/streaming/control/step-limit.ts +215 -0
  800. package/src/streaming/control/types.ts +234 -0
  801. package/src/streaming/core/auto-resume.ts +276 -0
  802. package/src/streaming/core/index.ts +85 -0
  803. package/src/streaming/core/multi-step.ts +471 -0
  804. package/src/streaming/core/protocol.ts +194 -0
  805. package/src/streaming/core/types.ts +182 -0
  806. package/src/streaming/index.ts +97 -0
  807. package/src/streaming/infra/backpressure/buffer.ts +210 -0
  808. package/src/streaming/infra/backpressure/index.ts +6 -0
  809. package/src/streaming/infra/index.ts +75 -0
  810. package/src/streaming/infra/multiplexing/index.ts +311 -0
  811. package/src/streaming/infra/resilience/index.ts +684 -0
  812. package/src/streaming/infra/transform/index.ts +15 -0
  813. package/src/streaming/infra/transform/stream-transforms.ts +166 -0
  814. package/src/streaming/infra/transport/index.ts +774 -0
  815. package/src/streaming/infra/types.ts +118 -0
  816. package/src/streaming/infra-extra/types.ts +118 -0
  817. package/src/tools/advanced/caching.ts +299 -0
  818. package/src/tools/advanced/generator.ts +267 -0
  819. package/src/tools/advanced/hitl.ts +251 -0
  820. package/src/tools/advanced/index.ts +9 -0
  821. package/src/tools/advanced/llm-tool.ts +208 -0
  822. package/src/tools/approval/FILES.md +449 -0
  823. package/src/tools/approval/IMPLEMENTATION_SUMMARY.md +567 -0
  824. package/src/tools/approval/QUICK_START.md +362 -0
  825. package/src/tools/approval/README.md +514 -0
  826. package/src/tools/approval/advanced-approval-queue.ts +7 -0
  827. package/src/tools/approval/approval.example.ts +571 -0
  828. package/src/tools/approval/in-memory-queue.ts +405 -0
  829. package/src/tools/approval/index.ts +737 -0
  830. package/src/tools/approval/middleware.ts +590 -0
  831. package/src/tools/approval/queue-factory.ts +162 -0
  832. package/src/tools/approval/redis-queue.ts +327 -0
  833. package/src/tools/approval/testing.ts +493 -0
  834. package/src/tools/approval/types.ts +221 -0
  835. package/src/tools/approval/with-approval.ts +366 -0
  836. package/src/tools/artifacts/artifact-tools.ts +273 -0
  837. package/src/tools/artifacts/index.ts +6 -0
  838. package/src/tools/compliance/compliance-wrapper.ts +789 -0
  839. package/src/tools/compliance/create-compliant-stream.ts +226 -0
  840. package/src/tools/compliance/index.ts +8 -0
  841. package/src/tools/compliance/phi-redaction.ts +406 -0
  842. package/src/tools/compliance/tool-wrapper.ts +306 -0
  843. package/src/tools/computer/index.ts +99 -0
  844. package/src/tools/computer/types.ts +41 -0
  845. package/src/tools/core/abort.ts +202 -0
  846. package/src/tools/core/factory.ts +197 -0
  847. package/src/tools/core/index.ts +8 -0
  848. package/src/tools/core/tool-safety.ts +112 -0
  849. package/src/tools/generic/index.ts +9 -0
  850. package/src/tools/generic/json-schema-tool.ts +301 -0
  851. package/src/tools/generic/tiptap-context.ts +619 -0
  852. package/src/tools/generic/web-search-tool.ts +82 -0
  853. package/src/tools/generic/web-search.ts +142 -0
  854. package/src/tools/index.ts +36 -0
  855. package/src/tools/mcp/ai-sdk-error-integration.ts +401 -0
  856. package/src/tools/mcp/client.ts +988 -0
  857. package/src/tools/mcp/connection-manager.ts +380 -0
  858. package/src/tools/mcp/connection-pool.ts +408 -0
  859. package/src/tools/mcp/edge-runtime.ts +318 -0
  860. package/src/tools/mcp/environment.ts +310 -0
  861. package/src/tools/mcp/index.ts +20 -0
  862. package/src/tools/mcp/next-pattern.ts +401 -0
  863. package/src/tools/mcp/stream-lifecycle-integration.ts +617 -0
  864. package/src/tools/mcp/tool-cache.ts +359 -0
  865. package/src/tools/mcp/transport-selector.ts +492 -0
  866. package/src/tools/mcp/transports.ts +99 -0
  867. package/src/tools/simple-factory.ts +55 -0
  868. package/src/tools/superpowers/index.ts +122 -0
  869. package/src/tools/superpowers/prompts/index.ts +533 -0
  870. package/src/tools/superpowers/schemas/index.ts +701 -0
  871. package/src/tools/superpowers/tools/index.ts +721 -0
  872. package/src/tools/validation-wrapper.ts +97 -0
@@ -0,0 +1,580 @@
1
+ import { t as __exportAll } from "./chunk-CkzbjWQW.mjs";
2
+ import { Ft as tool, Z as generateId, et as generateText, n as convertFromSDKUsage, o as resolveModelId } from "./ai-runtime-CDzQztTt.mjs";
3
+ import { logWarn } from "@od-oneapp/shared/logs";
4
+
5
+ //#region src/agents/experimental/index.ts
6
+ /**
7
+ * Experimental Agent Module
8
+ *
9
+ * AI SDK v6 Agent patterns with enhanced control:
10
+ * - prepareStep hook for dynamic model escalation and context trimming
11
+ * - toolChoice control (auto/required/none/specific)
12
+ * - InferAgentUIMessage for end-to-end type safety
13
+ * - Step-based execution with configurable stop conditions
14
+ *
15
+ * @module agents/experimental
16
+ */
17
+ var experimental_exports = /* @__PURE__ */ __exportAll({
18
+ ExperimentalAgent: () => ExperimentalAgent,
19
+ createExperimentalAgent: () => createExperimentalAgent,
20
+ createModelEscalation: () => createModelEscalation,
21
+ createPhasedTools: () => createPhasedTools,
22
+ generateId: () => generateId,
23
+ getModelId: () => resolveModelId
24
+ });
25
+ /**
26
+ * Experimental Agent with enhanced control patterns.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const agent = new ExperimentalAgent({
31
+ * model: openai('gpt-4o'),
32
+ * system: 'You are a research assistant.',
33
+ * tools: { search, analyze, summarize },
34
+ * maxSteps: 15,
35
+ *
36
+ * prepareStep: async ({ stepNumber, messages, usage }) => {
37
+ * // Escalate to better model after step 5
38
+ * if (stepNumber >= 5) {
39
+ * return {
40
+ * model: openai('gpt-4-turbo'),
41
+ * messages: messages.slice(-10), // Trim history
42
+ * };
43
+ * }
44
+ * return {};
45
+ * },
46
+ * });
47
+ *
48
+ * const result = await agent.generate({ prompt: 'Research quantum computing' });
49
+ * ```
50
+ */
51
+ var ExperimentalAgent = class {
52
+ config;
53
+ stepHistory = [];
54
+ totalUsage = {
55
+ promptTokens: 0,
56
+ completionTokens: 0,
57
+ totalTokens: 0
58
+ };
59
+ aborted = false;
60
+ constructor(config) {
61
+ this.config = {
62
+ maxSteps: 10,
63
+ toolChoice: "auto",
64
+ ...config
65
+ };
66
+ }
67
+ /** Get all executed steps */
68
+ get steps() {
69
+ return [...this.stepHistory];
70
+ }
71
+ /** Get total token usage */
72
+ get usage() {
73
+ return { ...this.totalUsage };
74
+ }
75
+ /**
76
+ * Generate a response for the given prompt.
77
+ */
78
+ async generate(options) {
79
+ this.stepHistory = [];
80
+ this.totalUsage = {
81
+ promptTokens: 0,
82
+ completionTokens: 0,
83
+ totalTokens: 0
84
+ };
85
+ this.aborted = false;
86
+ const { prompt, messages: initialMessages = [] } = options;
87
+ let messages = [...initialMessages, {
88
+ id: generateId(),
89
+ role: "user",
90
+ content: prompt,
91
+ createdAt: /* @__PURE__ */ new Date()
92
+ }];
93
+ const maxSteps = this.config.maxSteps ?? 10;
94
+ let stepNumber = 0;
95
+ let finishReason = "stop";
96
+ while (stepNumber < maxSteps && !this.aborted) {
97
+ if (this.config.abortSignal?.aborted) {
98
+ this.aborted = true;
99
+ finishReason = "abort";
100
+ break;
101
+ }
102
+ stepNumber++;
103
+ let stepConfig = {};
104
+ if (this.config.prepareStep) {
105
+ stepConfig = await this.config.prepareStep({
106
+ stepNumber,
107
+ messages,
108
+ usage: this.stepHistory.map((s) => s.usage).filter(Boolean),
109
+ toolHistory: this.stepHistory.flatMap((s) => (s.toolCalls ?? []).map((tc) => ({
110
+ toolName: tc.toolName,
111
+ output: tc.output
112
+ })))
113
+ });
114
+ const { messages: preparedMessages } = stepConfig;
115
+ if (preparedMessages) messages = preparedMessages;
116
+ }
117
+ const tools = this.getActiveTools(stepConfig.activeTools);
118
+ const toolChoice = stepConfig.toolChoice ?? this.config.toolChoice ?? "auto";
119
+ const model = stepConfig.model ?? this.config.model;
120
+ const stepResult = await this.executeStep({
121
+ stepNumber,
122
+ messages,
123
+ tools,
124
+ toolChoice,
125
+ model,
126
+ appendSystem: stepConfig.appendSystem
127
+ });
128
+ this.stepHistory.push(stepResult);
129
+ this.updateUsage(stepResult.usage);
130
+ if (this.config.onStepComplete) await this.config.onStepComplete(stepResult);
131
+ messages = [...messages, stepResult.message];
132
+ if (stepResult.finishReason === "stop") {
133
+ finishReason = "stop";
134
+ break;
135
+ }
136
+ if (stepResult.toolCalls && stepResult.toolCalls.length > 0) for (const toolCall of stepResult.toolCalls) messages = [...messages, {
137
+ id: generateId(),
138
+ role: "tool",
139
+ content: [{
140
+ type: "tool-result",
141
+ toolCallId: toolCall.toolCallId,
142
+ toolName: toolCall.toolName,
143
+ output: toolCall.output
144
+ }]
145
+ }];
146
+ }
147
+ if (stepNumber >= maxSteps && finishReason !== "abort") finishReason = "max-steps";
148
+ const lastStep = this.stepHistory[this.stepHistory.length - 1];
149
+ return {
150
+ text: this.extractText(lastStep?.message),
151
+ steps: this.stepHistory,
152
+ usage: this.totalUsage,
153
+ finishReason
154
+ };
155
+ }
156
+ /**
157
+ * Stream a response (returns async generator).
158
+ */
159
+ async *stream(options) {
160
+ this.stepHistory = [];
161
+ this.totalUsage = {
162
+ promptTokens: 0,
163
+ completionTokens: 0,
164
+ totalTokens: 0
165
+ };
166
+ this.aborted = false;
167
+ const { prompt, messages: initialMessages = [] } = options;
168
+ let messages = [...initialMessages, {
169
+ id: generateId(),
170
+ role: "user",
171
+ content: prompt,
172
+ createdAt: /* @__PURE__ */ new Date()
173
+ }];
174
+ const maxSteps = this.config.maxSteps ?? 10;
175
+ let stepNumber = 0;
176
+ while (stepNumber < maxSteps && !this.aborted) {
177
+ if (this.config.abortSignal?.aborted) {
178
+ this.aborted = true;
179
+ break;
180
+ }
181
+ stepNumber++;
182
+ let stepConfig = {};
183
+ if (this.config.prepareStep) {
184
+ stepConfig = await this.config.prepareStep({
185
+ stepNumber,
186
+ messages,
187
+ usage: this.stepHistory.map((s) => s.usage).filter(Boolean),
188
+ toolHistory: this.stepHistory.flatMap((s) => (s.toolCalls ?? []).map((tc) => ({
189
+ toolName: tc.toolName,
190
+ output: tc.output
191
+ })))
192
+ });
193
+ const { messages: preparedMessages } = stepConfig;
194
+ if (preparedMessages) messages = preparedMessages;
195
+ }
196
+ const tools = this.getActiveTools(stepConfig.activeTools);
197
+ const toolChoice = stepConfig.toolChoice ?? this.config.toolChoice ?? "auto";
198
+ const model = stepConfig.model ?? this.config.model;
199
+ const stepResult = await this.executeStep({
200
+ stepNumber,
201
+ messages,
202
+ tools,
203
+ toolChoice,
204
+ model,
205
+ appendSystem: stepConfig.appendSystem
206
+ });
207
+ this.stepHistory.push(stepResult);
208
+ this.updateUsage(stepResult.usage);
209
+ yield {
210
+ type: "step",
211
+ data: stepResult
212
+ };
213
+ if (stepResult.toolCalls) for (const tc of stepResult.toolCalls) yield {
214
+ type: "tool-call",
215
+ data: tc
216
+ };
217
+ const text = this.extractText(stepResult.message);
218
+ if (text) yield {
219
+ type: "text",
220
+ data: text
221
+ };
222
+ if (this.config.onStepComplete) await this.config.onStepComplete(stepResult);
223
+ messages = [...messages, stepResult.message];
224
+ if (stepResult.finishReason === "stop") break;
225
+ if (stepResult.toolCalls?.length) for (const tc of stepResult.toolCalls) messages = [...messages, {
226
+ id: generateId(),
227
+ role: "tool",
228
+ content: [{
229
+ type: "tool-result",
230
+ toolCallId: tc.toolCallId,
231
+ toolName: tc.toolName,
232
+ output: tc.output
233
+ }]
234
+ }];
235
+ }
236
+ yield {
237
+ type: "done",
238
+ data: {
239
+ steps: this.stepHistory,
240
+ usage: this.totalUsage,
241
+ finishReason: this.aborted ? "abort" : stepNumber >= maxSteps ? "max-steps" : "stop"
242
+ }
243
+ };
244
+ }
245
+ /**
246
+ * Abort the current execution.
247
+ */
248
+ abort() {
249
+ this.aborted = true;
250
+ }
251
+ getActiveTools(activeToolNames) {
252
+ if (!this.config.tools) return {};
253
+ if (!activeToolNames) return this.config.tools;
254
+ const result = {};
255
+ for (const name of activeToolNames) {
256
+ const tool = this.config.tools[name];
257
+ if (tool) result[name] = tool;
258
+ }
259
+ return result;
260
+ }
261
+ async executeStep(options) {
262
+ const { stepNumber, messages, tools, toolChoice, model, appendSystem } = options;
263
+ if (typeof model === "string" || typeof model === "object" && model !== null && "modelId" in model && !("doGenerate" in model)) throw new Error("Model must be a LanguageModel instance (e.g., from openai(\"gpt-4o\")), not a plain string or object with modelId");
264
+ const languageModel = model;
265
+ const sdkMessages = this.convertMessagesToSDK(messages);
266
+ let systemPrompt = this.config.system;
267
+ if (appendSystem) systemPrompt = systemPrompt ? `${systemPrompt}\n\n${appendSystem}` : appendSystem;
268
+ const sdkTools = this.convertToolsToSDK(tools);
269
+ const sdkToolChoice = this.convertToolChoiceToSDK(toolChoice);
270
+ const result = await generateText({
271
+ model: languageModel,
272
+ system: systemPrompt,
273
+ messages: sdkMessages,
274
+ tools: sdkTools,
275
+ toolChoice: sdkToolChoice,
276
+ abortSignal: this.config.abortSignal
277
+ });
278
+ const toolCalls = [];
279
+ if (result.toolCalls && result.toolCalls.length > 0) for (const toolCall of result.toolCalls) {
280
+ const { toolName } = toolCall;
281
+ const tool = tools[toolName];
282
+ if (!tool) {
283
+ logWarn(`[ExperimentalAgent] Unknown tool "${toolName}" requested by model`);
284
+ continue;
285
+ }
286
+ const startTime = Date.now();
287
+ let approved = true;
288
+ const input = toolCall.input ?? {};
289
+ let needsApprovalCheck = false;
290
+ if (tool.needsApproval) if (typeof tool.needsApproval === "function") needsApprovalCheck = await tool.needsApproval(input);
291
+ else needsApprovalCheck = tool.needsApproval;
292
+ if (needsApprovalCheck) {
293
+ if (!this.config.onToolApproval) throw new Error(`Tool "${toolName}" requires approval but no onToolApproval handler is configured. Either provide an onToolApproval callback or set needsApproval: false for this tool.`);
294
+ const { approved: approvedResult } = await this.config.onToolApproval(toolName, input);
295
+ approved = approvedResult;
296
+ }
297
+ if (approved) {
298
+ const { toolCallId } = toolCall;
299
+ const toolResult = await this.executeToolCall(tool, input, {
300
+ toolCallId,
301
+ messages,
302
+ abortSignal: this.config.abortSignal,
303
+ context: this.config.context
304
+ });
305
+ const output = this.toToolOutput(toolResult);
306
+ toolCalls.push({
307
+ toolName,
308
+ toolCallId,
309
+ input,
310
+ output,
311
+ duration: Date.now() - startTime
312
+ });
313
+ } else {
314
+ const { toolCallId } = toolCall;
315
+ const output = this.toToolOutput("Tool call denied by approval handler");
316
+ toolCalls.push({
317
+ toolName,
318
+ toolCallId,
319
+ input,
320
+ output,
321
+ duration: Date.now() - startTime
322
+ });
323
+ }
324
+ }
325
+ const message = {
326
+ id: generateId(),
327
+ role: "assistant",
328
+ content: toolCalls.length > 0 ? toolCalls.map((tc) => ({
329
+ type: "tool-call",
330
+ toolCallId: tc.toolCallId,
331
+ toolName: tc.toolName,
332
+ input: tc.input
333
+ })) : result.text,
334
+ createdAt: /* @__PURE__ */ new Date()
335
+ };
336
+ const usage = result.usage ? convertFromSDKUsage(result.usage) : {
337
+ promptTokens: 0,
338
+ completionTokens: 0,
339
+ totalTokens: 0
340
+ };
341
+ let finishReason = "stop";
342
+ if (result.finishReason === "tool-calls") finishReason = "tool-calls";
343
+ else if (result.finishReason === "length") finishReason = "length";
344
+ else if (result.finishReason === "content-filter") finishReason = "content-filter";
345
+ return {
346
+ stepNumber,
347
+ message,
348
+ toolCalls: toolCalls.length > 0 ? toolCalls : void 0,
349
+ usage,
350
+ finishReason
351
+ };
352
+ }
353
+ async executeToolCall(tool, input, context) {
354
+ const parsedInput = tool.inputSchema.parse(input);
355
+ const result = tool.execute(parsedInput, context);
356
+ if (isAsyncIterable(result)) {
357
+ const values = [];
358
+ for await (const value of result) values.push(value);
359
+ return values.length === 1 ? values[0] : values;
360
+ }
361
+ return result;
362
+ }
363
+ extractText(message) {
364
+ if (!message) return "";
365
+ if (typeof message.content === "string") return message.content;
366
+ return message.content.filter((p) => p.type === "text").map((p) => p.text).join("");
367
+ }
368
+ updateUsage(usage) {
369
+ if (!usage) return;
370
+ this.totalUsage = {
371
+ promptTokens: this.totalUsage.promptTokens + usage.promptTokens,
372
+ completionTokens: this.totalUsage.completionTokens + usage.completionTokens,
373
+ totalTokens: this.totalUsage.totalTokens + usage.totalTokens
374
+ };
375
+ }
376
+ isTextPart(part) {
377
+ return part.type === "text";
378
+ }
379
+ isFilePart(part) {
380
+ return part.type === "file";
381
+ }
382
+ isAssistantPart(part) {
383
+ return part.type !== "tool-approval-response";
384
+ }
385
+ partsToText(parts) {
386
+ return parts.filter((part) => this.isTextPart(part)).map((part) => part.text).join("\n");
387
+ }
388
+ isJsonValue(value) {
389
+ if (value === null) return true;
390
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") return true;
391
+ if (Array.isArray(value)) return value.every((item) => this.isJsonValue(item));
392
+ if (typeof value === "object") return Object.values(value).every((item) => this.isJsonValue(item));
393
+ return false;
394
+ }
395
+ convertMessagesToSDK(messages) {
396
+ return messages.map((msg) => {
397
+ if (msg.role === "tool") {
398
+ if (typeof msg.content === "string") return {
399
+ role: "tool",
400
+ content: [{
401
+ type: "tool-result",
402
+ toolCallId: "unknown",
403
+ toolName: "unknown",
404
+ output: this.toToolOutput(msg.content)
405
+ }]
406
+ };
407
+ return {
408
+ role: "tool",
409
+ content: this.normalizeToolContent(msg.content)
410
+ };
411
+ }
412
+ if (msg.role === "system") return {
413
+ role: "system",
414
+ content: typeof msg.content === "string" ? msg.content : this.partsToText(msg.content)
415
+ };
416
+ if (msg.role === "user") {
417
+ if (typeof msg.content === "string") return {
418
+ role: "user",
419
+ content: msg.content
420
+ };
421
+ const userParts = msg.content.filter((part) => this.isTextPart(part) || this.isFilePart(part));
422
+ if (userParts.length === msg.content.length) return {
423
+ role: "user",
424
+ content: userParts
425
+ };
426
+ return {
427
+ role: "user",
428
+ content: this.partsToText(msg.content)
429
+ };
430
+ }
431
+ if (typeof msg.content === "string") return {
432
+ role: "assistant",
433
+ content: msg.content
434
+ };
435
+ const assistantParts = msg.content.filter(this.isAssistantPart).map((part) => {
436
+ if (part.type === "tool-call") return {
437
+ ...part,
438
+ input: part.input
439
+ };
440
+ return part;
441
+ });
442
+ return {
443
+ role: "assistant",
444
+ content: assistantParts.length > 0 ? assistantParts : ""
445
+ };
446
+ });
447
+ }
448
+ normalizeToolContent(parts) {
449
+ const toolContent = parts.filter((part) => part.type === "tool-result" || part.type === "tool-approval-response");
450
+ if (toolContent.length === parts.length && toolContent.length > 0) return toolContent.map((part) => {
451
+ if (part.type !== "tool-result") return part;
452
+ return {
453
+ ...part,
454
+ output: this.toToolOutput(part.output)
455
+ };
456
+ });
457
+ const textValue = parts.filter((part) => part.type === "text").map((part) => part.text).join("\n");
458
+ return [{
459
+ type: "tool-result",
460
+ toolCallId: "unknown",
461
+ toolName: "unknown",
462
+ output: this.toToolOutput(textValue || "")
463
+ }];
464
+ }
465
+ toToolOutput(value) {
466
+ if (value && typeof value === "object" && "type" in value) {
467
+ const output = value;
468
+ if (typeof output.type === "string") return output;
469
+ }
470
+ if (value instanceof Error) return {
471
+ type: "error-text",
472
+ value: value.message
473
+ };
474
+ if (typeof value === "string") return {
475
+ type: "text",
476
+ value
477
+ };
478
+ if (value === void 0) return {
479
+ type: "json",
480
+ value: null
481
+ };
482
+ if (this.isJsonValue(value)) return {
483
+ type: "json",
484
+ value
485
+ };
486
+ return {
487
+ type: "text",
488
+ value: JSON.stringify(value) ?? String(value)
489
+ };
490
+ }
491
+ convertToolsToSDK(tools) {
492
+ const sdkTools = {};
493
+ for (const [name, toolDef] of Object.entries(tools)) {
494
+ const inputSchema = toolDef.inputSchema;
495
+ sdkTools[name] = tool({
496
+ description: toolDef.description,
497
+ inputSchema,
498
+ execute: async (input, options) => {
499
+ return { placeholder: true };
500
+ }
501
+ });
502
+ }
503
+ return sdkTools;
504
+ }
505
+ convertToolChoiceToSDK(toolChoice) {
506
+ if (toolChoice === "auto" || toolChoice === "required" || toolChoice === "none") return toolChoice;
507
+ if (typeof toolChoice === "object" && toolChoice.type === "tool") return {
508
+ type: "tool",
509
+ toolName: toolChoice.toolName
510
+ };
511
+ return "auto";
512
+ }
513
+ };
514
+ /**
515
+ * Create an experimental agent with simplified configuration.
516
+ *
517
+ * @example
518
+ * ```typescript
519
+ * const agent = createExperimentalAgent({
520
+ * model: openai('gpt-4o'),
521
+ * system: 'You are helpful.',
522
+ * tools: { search, analyze },
523
+ * });
524
+ * ```
525
+ */
526
+ function createExperimentalAgent(config) {
527
+ return new ExperimentalAgent(config);
528
+ }
529
+ /**
530
+ * Create a prepareStep hook for model escalation.
531
+ *
532
+ * @example
533
+ * ```typescript
534
+ * const prepareStep = createModelEscalation({
535
+ * defaultModel: openai('gpt-4o-mini'),
536
+ * escalateAfterStep: 5,
537
+ * escalatedModel: openai('gpt-4o'),
538
+ * trimMessagesTo: 10,
539
+ * });
540
+ * ```
541
+ */
542
+ function createModelEscalation(options) {
543
+ const { defaultModel, escalateAfterStep, escalatedModel, trimMessagesTo } = options;
544
+ return ({ stepNumber, messages }) => {
545
+ return {
546
+ model: stepNumber >= escalateAfterStep ? escalatedModel : defaultModel,
547
+ messages: trimMessagesTo ? messages.slice(-trimMessagesTo) : messages
548
+ };
549
+ };
550
+ }
551
+ /**
552
+ * Create a prepareStep hook for phased tool availability.
553
+ *
554
+ * @example
555
+ * ```typescript
556
+ * const prepareStep = createPhasedTools({
557
+ * phases: [
558
+ * { steps: [1, 2, 3], activeTools: ['search'], toolChoice: 'required' },
559
+ * { steps: [4, 5, 6], activeTools: ['analyze'], toolChoice: 'required' },
560
+ * { steps: [7, 8, 9, 10], activeTools: ['summarize', 'report'], toolChoice: 'auto' },
561
+ * ],
562
+ * });
563
+ * ```
564
+ */
565
+ function createPhasedTools(options) {
566
+ return ({ stepNumber }) => {
567
+ for (const phase of options.phases) if (phase.steps.includes(stepNumber)) return {
568
+ activeTools: phase.activeTools,
569
+ toolChoice: phase.toolChoice
570
+ };
571
+ return {};
572
+ };
573
+ }
574
+ function isAsyncIterable(value) {
575
+ return value != null && typeof value[Symbol.asyncIterator] === "function";
576
+ }
577
+
578
+ //#endregion
579
+ export { ExperimentalAgent, createExperimentalAgent, createModelEscalation, createPhasedTools, generateId, resolveModelId as getModelId, experimental_exports as t };
580
+ //# sourceMappingURL=agents-experimental.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-experimental.mjs","names":[],"sources":["../src/agents/experimental/index.ts"],"sourcesContent":["/**\n * Experimental Agent Module\n *\n * AI SDK v6 Agent patterns with enhanced control:\n * - prepareStep hook for dynamic model escalation and context trimming\n * - toolChoice control (auto/required/none/specific)\n * - InferAgentUIMessage for end-to-end type safety\n * - Step-based execution with configurable stop conditions\n *\n * @module agents/experimental\n */\n\nimport { logWarn } from '@repo/shared/logs';\n\nimport { generateText, tool } from '../../shared';\nimport {\n convertFromSDKUsage,\n generateId,\n resolveModelId as getModelId,\n type TokenUsage,\n type ModelRef,\n type SDKToolChoice,\n type SDKTextPart,\n type SDKFilePart,\n type SDKToolCallPart,\n type SDKToolResultPart,\n type SDKToolApprovalResponse,\n type SDKModelMessage,\n type SDKUserMessage,\n type SDKSystemMessage,\n type SDKAssistantMessage,\n type SDKToolMessage,\n type SDKLanguageModel,\n type SDKToolSet,\n type SDKFlexibleSchema,\n type MessageRole,\n type CoreMessageRole,\n type StepFinishReason,\n type AgentFinishReason,\n} from '../../shared';\n\nimport type { z } from 'zod';\n\n// -----------------------------------------------------------------------------\n// Types (SDK-Aligned)\n// -----------------------------------------------------------------------------\n\n/**\n * Model reference - LanguageModel instance from AI SDK.\n * Re-exported from ai-types for convenience.\n */\nexport type { ModelRef };\n\n/**\n * Tool choice options.\n * Aligned with AI SDK v6's ToolChoice type.\n * @see SDKToolChoice for the SDK's native type\n */\nexport type ToolChoice = SDKToolChoice<SDKToolSet>;\n\n/**\n * Token usage tracking.\n * Re-exported from ai-types for convenience.\n * @see TokenUsage in ai-types.ts\n */\nexport type { TokenUsage };\n\n/**\n * Text part - SDK-aligned type for text content in messages.\n */\nexport type TextPart = SDKTextPart;\n\n/**\n * Tool call part - SDK-aligned type for tool invocations.\n */\nexport type ToolCallPart = SDKToolCallPart;\n\n/**\n * Tool result part - SDK-aligned type for tool execution results.\n */\nexport type ToolResultPart = SDKToolResultPart;\n\n/**\n * Message part types union.\n * Directly uses AI SDK v6 part types for full compatibility.\n */\nexport type MessagePart =\n | TextPart\n | SDKFilePart\n | ToolCallPart\n | ToolResultPart\n | SDKToolApprovalResponse;\n\ntype JsonValue = string | number | boolean | null | { [key: string]: JsonValue } | JsonValue[];\n\ntype AssistantPart = Exclude<MessagePart, SDKToolApprovalResponse>;\n\n/** Tool definition */\nexport interface ToolDefinition<TInput = unknown, TOutput = unknown> {\n readonly description: string;\n readonly inputSchema: z.ZodSchema<TInput>;\n readonly execute: (\n input: TInput,\n context: ToolExecutionContext,\n ) => Promise<TOutput> | AsyncIterable<TOutput>;\n readonly strict?: boolean;\n readonly inputExamples?: Array<{ input: TInput }>;\n readonly needsApproval?: boolean | ((input: TInput) => Promise<boolean>);\n}\n\n/** Tool execution context */\nexport interface ToolExecutionContext {\n readonly toolCallId: string;\n readonly messages: AgentMessage[];\n readonly abortSignal?: AbortSignal;\n readonly context?: Record<string, unknown>;\n}\n\n/**\n * Agent message (SDK-aligned).\n * Uses SDK message part types for content and MessageRole type.\n */\nexport interface AgentMessage {\n readonly id: string;\n readonly role: MessageRole;\n readonly content: string | MessagePart[];\n readonly createdAt?: Date;\n}\n\n/**\n * Step result from agent execution.\n * Uses SDK-aligned StepFinishReason type.\n */\nexport interface AgentStepResult {\n readonly stepNumber: number;\n readonly message: AgentMessage;\n readonly toolCalls?: Array<{\n toolName: string;\n toolCallId: string;\n input: unknown;\n output: ToolResultPart['output'];\n duration?: number;\n }>;\n readonly usage?: TokenUsage;\n readonly finishReason?: StepFinishReason;\n}\n\n/** Base agent configuration for experimental agent */\nexport interface ExperimentalAgentBaseConfig<\n TTools extends Record<string, ToolDefinition> = Record<string, ToolDefinition>,\n> {\n /** Primary model for agent */\n readonly model: ModelRef;\n /** System prompt */\n readonly system?: string;\n /** Available tools */\n readonly tools?: TTools;\n /** Default tool choice behavior */\n readonly toolChoice?: ToolChoice;\n /** Maximum generation steps (default: 10) */\n readonly maxSteps?: number;\n /** Custom context passed to tools */\n readonly context?: Record<string, unknown>;\n /** Abort signal for cancellation */\n readonly abortSignal?: AbortSignal;\n}\n\n/** PrepareStep hook input */\nexport interface PrepareStepInput {\n readonly stepNumber: number;\n readonly messages: AgentMessage[];\n readonly usage?: TokenUsage[];\n readonly toolHistory?: Array<{ toolName: string; output: unknown }>;\n}\n\n/** PrepareStep hook output */\nexport interface PrepareStepOutput {\n /** Override model for this step */\n readonly model?: ModelRef;\n /** Trimmed/modified messages */\n readonly messages?: AgentMessage[];\n /** Override tool choice for this step */\n readonly toolChoice?: ToolChoice;\n /** Active tools (subset of available tools) */\n readonly activeTools?: string[];\n /** Additional system prompt */\n readonly appendSystem?: string;\n}\n\n/** Agent with prepareStep hook */\nexport interface ExperimentalAgentConfig<\n TTools extends Record<string, ToolDefinition> = Record<string, ToolDefinition>,\n> extends ExperimentalAgentBaseConfig<TTools> {\n /** Hook called before each generation step */\n readonly prepareStep?: (\n input: PrepareStepInput,\n ) => Promise<PrepareStepOutput> | PrepareStepOutput;\n /** Callback after each step completes */\n readonly onStepComplete?: (result: AgentStepResult) => Promise<void> | void;\n /** Callback when tool needs approval */\n readonly onToolApproval?: (\n toolName: string,\n input: unknown,\n ) => Promise<{ approved: boolean; reason?: string }>;\n}\n\n/**\n * Agent execution result.\n * Uses SDK-aligned AgentFinishReason type.\n */\nexport interface AgentResult {\n readonly text: string;\n readonly steps: AgentStepResult[];\n readonly usage: TokenUsage;\n readonly finishReason: AgentFinishReason;\n}\n\n// -----------------------------------------------------------------------------\n// Experimental Agent Class\n// -----------------------------------------------------------------------------\n\n/**\n * Experimental Agent with enhanced control patterns.\n *\n * @example\n * ```typescript\n * const agent = new ExperimentalAgent({\n * model: openai('gpt-4o'),\n * system: 'You are a research assistant.',\n * tools: { search, analyze, summarize },\n * maxSteps: 15,\n *\n * prepareStep: async ({ stepNumber, messages, usage }) => {\n * // Escalate to better model after step 5\n * if (stepNumber >= 5) {\n * return {\n * model: openai('gpt-4-turbo'),\n * messages: messages.slice(-10), // Trim history\n * };\n * }\n * return {};\n * },\n * });\n *\n * const result = await agent.generate({ prompt: 'Research quantum computing' });\n * ```\n */\nexport class ExperimentalAgent<\n TTools extends Record<string, ToolDefinition> = Record<string, ToolDefinition>,\n> {\n private readonly config: ExperimentalAgentConfig<TTools>;\n private stepHistory: AgentStepResult[] = [];\n private totalUsage: TokenUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };\n private aborted = false;\n\n constructor(config: ExperimentalAgentConfig<TTools>) {\n this.config = {\n maxSteps: 10,\n toolChoice: 'auto',\n ...config,\n };\n }\n\n /** Get all executed steps */\n get steps(): AgentStepResult[] {\n return [...this.stepHistory];\n }\n\n /** Get total token usage */\n get usage(): TokenUsage {\n return { ...this.totalUsage };\n }\n\n /**\n * Generate a response for the given prompt.\n */\n async generate(options: { prompt: string; messages?: AgentMessage[] }): Promise<AgentResult> {\n this.stepHistory = [];\n this.totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };\n this.aborted = false;\n\n const { prompt, messages: initialMessages = [] } = options;\n\n // Build initial messages\n let messages: AgentMessage[] = [\n ...initialMessages,\n {\n id: generateId(),\n role: 'user',\n content: prompt,\n createdAt: new Date(),\n },\n ];\n\n const maxSteps = this.config.maxSteps ?? 10;\n let stepNumber = 0;\n let finishReason: AgentResult['finishReason'] = 'stop';\n\n // Main agent loop\n while (stepNumber < maxSteps && !this.aborted) {\n // Check abort signal\n if (this.config.abortSignal?.aborted) {\n this.aborted = true;\n finishReason = 'abort';\n break;\n }\n\n stepNumber++;\n\n // Run prepareStep hook\n let stepConfig: PrepareStepOutput = {};\n if (this.config.prepareStep) {\n stepConfig = await this.config.prepareStep({\n stepNumber,\n messages,\n usage: this.stepHistory.map(s => s.usage).filter(Boolean) as TokenUsage[],\n toolHistory: this.stepHistory.flatMap(s =>\n (s.toolCalls ?? []).map(tc => ({ toolName: tc.toolName, output: tc.output })),\n ),\n });\n\n // Apply message trimming if provided\n const { messages: preparedMessages } = stepConfig;\n if (preparedMessages) {\n messages = preparedMessages;\n }\n }\n\n // Determine active tools\n const tools = this.getActiveTools(stepConfig.activeTools);\n const toolChoice = stepConfig.toolChoice ?? this.config.toolChoice ?? 'auto';\n const model = stepConfig.model ?? this.config.model;\n\n // Execute step (simulated - in real implementation would call AI SDK)\n const stepResult = await this.executeStep({\n stepNumber,\n messages,\n tools,\n toolChoice,\n model,\n appendSystem: stepConfig.appendSystem,\n });\n\n // Track step\n this.stepHistory.push(stepResult);\n this.updateUsage(stepResult.usage);\n\n // Callback\n if (this.config.onStepComplete) {\n await this.config.onStepComplete(stepResult);\n }\n\n // Add assistant message to history\n messages = [...messages, stepResult.message];\n\n // Check if we should stop\n if (stepResult.finishReason === 'stop') {\n finishReason = 'stop';\n break;\n }\n\n // Process tool calls\n if (stepResult.toolCalls && stepResult.toolCalls.length > 0) {\n for (const toolCall of stepResult.toolCalls) {\n // Add tool result to messages\n messages = [\n ...messages,\n {\n id: generateId(),\n role: 'tool',\n content: [\n {\n type: 'tool-result',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n output: toolCall.output,\n },\n ],\n },\n ];\n }\n }\n }\n\n // If we hit max steps\n if (stepNumber >= maxSteps && finishReason !== 'abort') {\n finishReason = 'max-steps';\n }\n\n // Extract final text from last assistant message\n const lastStep = this.stepHistory[this.stepHistory.length - 1];\n const text = this.extractText(lastStep?.message);\n\n return {\n text,\n steps: this.stepHistory,\n usage: this.totalUsage,\n finishReason,\n };\n }\n\n /**\n * Stream a response (returns async generator).\n */\n async *stream(options: {\n prompt: string;\n messages?: AgentMessage[];\n }): AsyncGenerator<{ type: 'step' | 'text' | 'tool-call' | 'done'; data: unknown }> {\n // Similar to generate but yields intermediate results\n this.stepHistory = [];\n this.totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };\n this.aborted = false;\n\n const { prompt, messages: initialMessages = [] } = options;\n\n let messages: AgentMessage[] = [\n ...initialMessages,\n { id: generateId(), role: 'user', content: prompt, createdAt: new Date() },\n ];\n\n const maxSteps = this.config.maxSteps ?? 10;\n let stepNumber = 0;\n\n while (stepNumber < maxSteps && !this.aborted) {\n if (this.config.abortSignal?.aborted) {\n this.aborted = true;\n break;\n }\n\n stepNumber++;\n\n let stepConfig: PrepareStepOutput = {};\n if (this.config.prepareStep) {\n stepConfig = await this.config.prepareStep({\n stepNumber,\n messages,\n usage: this.stepHistory.map(s => s.usage).filter(Boolean) as TokenUsage[],\n toolHistory: this.stepHistory.flatMap(s =>\n (s.toolCalls ?? []).map(tc => ({ toolName: tc.toolName, output: tc.output })),\n ),\n });\n const { messages: preparedMessages } = stepConfig;\n if (preparedMessages) {\n messages = preparedMessages;\n }\n }\n\n const tools = this.getActiveTools(stepConfig.activeTools);\n const toolChoice = stepConfig.toolChoice ?? this.config.toolChoice ?? 'auto';\n const model = stepConfig.model ?? this.config.model;\n\n const stepResult = await this.executeStep({\n stepNumber,\n messages,\n tools,\n toolChoice,\n model,\n appendSystem: stepConfig.appendSystem,\n });\n\n this.stepHistory.push(stepResult);\n this.updateUsage(stepResult.usage);\n\n yield { type: 'step', data: stepResult };\n\n if (stepResult.toolCalls) {\n for (const tc of stepResult.toolCalls) {\n yield { type: 'tool-call', data: tc };\n }\n }\n\n const text = this.extractText(stepResult.message);\n if (text) {\n yield { type: 'text', data: text };\n }\n\n if (this.config.onStepComplete) {\n await this.config.onStepComplete(stepResult);\n }\n\n messages = [...messages, stepResult.message];\n\n if (stepResult.finishReason === 'stop') break;\n\n if (stepResult.toolCalls?.length) {\n for (const tc of stepResult.toolCalls) {\n messages = [\n ...messages,\n {\n id: generateId(),\n role: 'tool',\n content: [\n {\n type: 'tool-result',\n toolCallId: tc.toolCallId,\n toolName: tc.toolName,\n output: tc.output,\n },\n ],\n },\n ];\n }\n }\n }\n\n yield {\n type: 'done',\n data: {\n steps: this.stepHistory,\n usage: this.totalUsage,\n finishReason: this.aborted ? 'abort' : stepNumber >= maxSteps ? 'max-steps' : 'stop',\n },\n };\n }\n\n /**\n * Abort the current execution.\n */\n abort(): void {\n this.aborted = true;\n }\n\n // ---------------------------------------------------------------------------\n // Private Methods\n // ---------------------------------------------------------------------------\n\n private getActiveTools(activeToolNames?: string[]): Record<string, ToolDefinition> {\n if (!this.config.tools) return {};\n\n if (!activeToolNames) {\n return this.config.tools as Record<string, ToolDefinition>;\n }\n\n const result: Record<string, ToolDefinition> = {};\n for (const name of activeToolNames) {\n const tool = (this.config.tools as Record<string, ToolDefinition>)[name];\n if (tool) {\n result[name] = tool;\n }\n }\n return result;\n }\n\n private async executeStep(options: {\n stepNumber: number;\n messages: AgentMessage[];\n tools: Record<string, ToolDefinition>;\n toolChoice: ToolChoice;\n model: ModelRef;\n appendSystem?: string;\n }): Promise<AgentStepResult> {\n const { stepNumber, messages, tools, toolChoice, model, appendSystem } = options;\n\n // Validate model is a proper LanguageModel instance\n // ModelRef allows string | { modelId: string } but we need LanguageModel\n if (\n typeof model === 'string' ||\n (typeof model === 'object' &&\n model !== null &&\n 'modelId' in model &&\n !('doGenerate' in model))\n ) {\n throw new Error(\n 'Model must be a LanguageModel instance (e.g., from openai(\"gpt-4o\")), not a plain string or object with modelId',\n );\n }\n const languageModel = model as SDKLanguageModel;\n\n // Convert AgentMessage[] to AI SDK format\n const sdkMessages = this.convertMessagesToSDK(messages);\n\n // Build system prompt\n let systemPrompt = this.config.system;\n if (appendSystem) {\n systemPrompt = systemPrompt ? `${systemPrompt}\\n\\n${appendSystem}` : appendSystem;\n }\n\n // Convert tools to AI SDK format\n const sdkTools = this.convertToolsToSDK(tools);\n\n // Convert toolChoice to AI SDK format\n const sdkToolChoice = this.convertToolChoiceToSDK(toolChoice);\n\n // Call AI SDK generateText\n const result = await generateText({\n model: languageModel,\n system: systemPrompt,\n messages: sdkMessages,\n tools: sdkTools,\n toolChoice: sdkToolChoice,\n abortSignal: this.config.abortSignal,\n });\n\n // Process tool calls\n const toolCalls: AgentStepResult['toolCalls'] = [];\n\n if (result.toolCalls && result.toolCalls.length > 0) {\n for (const toolCall of result.toolCalls) {\n const { toolName } = toolCall;\n const tool = tools[toolName];\n\n if (!tool) {\n // Log warning for observability - tool name from model doesn't match registered tools\n logWarn(`[ExperimentalAgent] Unknown tool \"${toolName}\" requested by model`);\n continue;\n }\n\n const startTime = Date.now();\n\n // Check approval if needed\n let approved = true;\n const input = toolCall.input ?? {};\n let needsApprovalCheck = false;\n if (tool.needsApproval) {\n if (typeof tool.needsApproval === 'function') {\n needsApprovalCheck = await tool.needsApproval(input);\n } else {\n needsApprovalCheck = tool.needsApproval;\n }\n }\n if (needsApprovalCheck) {\n if (!this.config.onToolApproval) {\n // HITL approval required but no handler configured - reject tool execution\n throw new Error(\n `Tool \"${toolName}\" requires approval but no onToolApproval handler is configured. ` +\n `Either provide an onToolApproval callback or set needsApproval: false for this tool.`,\n );\n }\n const approvalResult = await this.config.onToolApproval(toolName, input);\n const { approved: approvedResult } = approvalResult;\n approved = approvedResult;\n }\n\n if (approved) {\n const { toolCallId } = toolCall;\n\n const toolResult = await this.executeToolCall(tool, input, {\n toolCallId,\n messages,\n abortSignal: this.config.abortSignal,\n context: this.config.context,\n });\n const output = this.toToolOutput(toolResult);\n\n toolCalls.push({\n toolName,\n toolCallId,\n input,\n output,\n duration: Date.now() - startTime,\n });\n } else {\n // Add denied tool result to message history so model knows the call was rejected\n const { toolCallId } = toolCall;\n const output = this.toToolOutput('Tool call denied by approval handler');\n toolCalls.push({\n toolName,\n toolCallId,\n input,\n output,\n duration: Date.now() - startTime,\n });\n }\n }\n }\n\n // Convert result to AgentMessage format\n const message: AgentMessage = {\n id: generateId(),\n role: 'assistant',\n content:\n toolCalls.length > 0\n ? toolCalls.map(tc => ({\n type: 'tool-call' as const,\n toolCallId: tc.toolCallId,\n toolName: tc.toolName,\n input: tc.input,\n }))\n : result.text,\n createdAt: new Date(),\n };\n\n // Convert usage\n const usage = result.usage\n ? convertFromSDKUsage(result.usage)\n : {\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n };\n\n // Determine finish reason\n let finishReason: AgentStepResult['finishReason'] = 'stop';\n if (result.finishReason === 'tool-calls') {\n finishReason = 'tool-calls';\n } else if (result.finishReason === 'length') {\n finishReason = 'length';\n } else if (result.finishReason === 'content-filter') {\n finishReason = 'content-filter';\n }\n\n return {\n stepNumber,\n message,\n toolCalls: toolCalls.length > 0 ? toolCalls : undefined,\n usage,\n finishReason,\n };\n }\n\n private async executeToolCall(\n tool: ToolDefinition,\n input: unknown,\n context: ToolExecutionContext,\n ): Promise<unknown> {\n // Validate input against schema before execution\n const parsedInput = tool.inputSchema.parse(input);\n const result = tool.execute(parsedInput, context);\n\n if (isAsyncIterable(result)) {\n // Collect all yielded values - return all values for async iterables\n const values: unknown[] = [];\n for await (const value of result) {\n values.push(value);\n }\n // Return single value if only one, otherwise return all values\n return values.length === 1 ? values[0] : values;\n }\n\n return result;\n }\n\n private extractText(message?: AgentMessage): string {\n if (!message) return '';\n if (typeof message.content === 'string') return message.content;\n const textParts = message.content.filter(\n (p): p is { type: 'text'; text: string } => p.type === 'text',\n );\n return textParts.map(p => p.text).join('');\n }\n\n private updateUsage(usage?: TokenUsage): void {\n if (!usage) return;\n this.totalUsage = {\n promptTokens: this.totalUsage.promptTokens + usage.promptTokens,\n completionTokens: this.totalUsage.completionTokens + usage.completionTokens,\n totalTokens: this.totalUsage.totalTokens + usage.totalTokens,\n };\n }\n\n private isTextPart(part: MessagePart): part is TextPart {\n return part.type === 'text';\n }\n\n private isFilePart(part: MessagePart): part is SDKFilePart {\n return part.type === 'file';\n }\n\n private isAssistantPart(part: MessagePart): part is AssistantPart {\n return part.type !== 'tool-approval-response';\n }\n\n private partsToText(parts: MessagePart[]): string {\n return parts\n .filter(part => this.isTextPart(part))\n .map(part => part.text)\n .join('\\n');\n }\n\n private isJsonValue(value: unknown): value is JsonValue {\n if (value === null) return true;\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return true;\n }\n if (Array.isArray(value)) {\n return value.every(item => this.isJsonValue(item));\n }\n if (typeof value === 'object') {\n return Object.values(value).every(item => this.isJsonValue(item));\n }\n return false;\n }\n\n private convertMessagesToSDK(messages: AgentMessage[]): SDKModelMessage[] {\n return messages.map<SDKModelMessage>(msg => {\n if (msg.role === 'tool') {\n if (typeof msg.content === 'string') {\n const toolMessage: SDKToolMessage = {\n role: 'tool',\n content: [\n {\n type: 'tool-result',\n toolCallId: 'unknown',\n toolName: 'unknown',\n output: this.toToolOutput(msg.content),\n },\n ],\n };\n return toolMessage;\n }\n const toolMessage: SDKToolMessage = {\n role: 'tool',\n content: this.normalizeToolContent(msg.content),\n };\n return toolMessage;\n }\n\n if (msg.role === 'system') {\n const systemMessage: SDKSystemMessage = {\n role: 'system',\n content: typeof msg.content === 'string' ? msg.content : this.partsToText(msg.content),\n };\n return systemMessage;\n }\n\n if (msg.role === 'user') {\n if (typeof msg.content === 'string') {\n const userMessage: SDKUserMessage = { role: 'user', content: msg.content };\n return userMessage;\n }\n const userParts = msg.content.filter(\n part => this.isTextPart(part) || this.isFilePart(part),\n );\n if (userParts.length === msg.content.length) {\n const userMessage: SDKUserMessage = { role: 'user', content: userParts };\n return userMessage;\n }\n const userMessage: SDKUserMessage = {\n role: 'user',\n content: this.partsToText(msg.content),\n };\n return userMessage;\n }\n\n if (typeof msg.content === 'string') {\n const assistantMessage: SDKAssistantMessage = {\n role: 'assistant',\n content: msg.content,\n };\n return assistantMessage;\n }\n\n const assistantParts = msg.content.filter(this.isAssistantPart).map(part => {\n if (part.type === 'tool-call') {\n return { ...part, input: part.input };\n }\n return part;\n });\n\n const assistantMessage: SDKAssistantMessage = {\n role: 'assistant',\n content: assistantParts.length > 0 ? assistantParts : '',\n };\n return assistantMessage;\n });\n }\n\n private normalizeToolContent(\n parts: MessagePart[],\n ): Array<ToolResultPart | SDKToolApprovalResponse> {\n const toolContent = parts.filter(\n (part): part is ToolResultPart | SDKToolApprovalResponse =>\n part.type === 'tool-result' || part.type === 'tool-approval-response',\n );\n if (toolContent.length === parts.length && toolContent.length > 0) {\n return toolContent.map(part => {\n if (part.type !== 'tool-result') {\n return part;\n }\n return {\n ...part,\n output: this.toToolOutput(part.output),\n };\n });\n }\n\n const textValue = parts\n .filter((part): part is TextPart => part.type === 'text')\n .map(part => part.text)\n .join('\\n');\n return [\n {\n type: 'tool-result',\n toolCallId: 'unknown',\n toolName: 'unknown',\n output: this.toToolOutput(textValue || ''),\n },\n ];\n }\n\n private toToolOutput(value: unknown): ToolResultPart['output'] {\n if (value && typeof value === 'object' && 'type' in value) {\n const output = value as ToolResultPart['output'];\n if (typeof output.type === 'string') {\n return output;\n }\n }\n if (value instanceof Error) {\n return { type: 'error-text', value: value.message };\n }\n if (typeof value === 'string') {\n return { type: 'text', value };\n }\n if (value === undefined) {\n return { type: 'json', value: null };\n }\n if (this.isJsonValue(value)) {\n return { type: 'json', value };\n }\n const serialized = JSON.stringify(value);\n return { type: 'text', value: serialized ?? String(value) };\n }\n\n private convertToolsToSDK(tools: Record<string, ToolDefinition>): SDKToolSet {\n const sdkTools: SDKToolSet = {};\n\n for (const [name, toolDef] of Object.entries(tools)) {\n // Create placeholder tools for SDK - actual execution happens manually\n // with proper ToolExecutionContext after we get toolCallId from result\n const inputSchema = toolDef.inputSchema as SDKFlexibleSchema;\n sdkTools[name] = tool<unknown, { placeholder: boolean }>({\n description: toolDef.description,\n inputSchema,\n execute: async (input, options) => {\n // Placeholder - actual execution happens manually in executeStep\n // This allows SDK to decide which tools to call, but we control execution\n void input;\n void options;\n return { placeholder: true };\n },\n });\n }\n\n return sdkTools;\n }\n\n private convertToolChoiceToSDK(\n toolChoice: ToolChoice,\n ): 'auto' | 'required' | 'none' | { type: 'tool'; toolName: string } {\n if (toolChoice === 'auto' || toolChoice === 'required' || toolChoice === 'none') {\n return toolChoice;\n }\n\n if (typeof toolChoice === 'object' && toolChoice.type === 'tool') {\n return { type: 'tool', toolName: toolChoice.toolName };\n }\n\n return 'auto';\n }\n}\n\n// -----------------------------------------------------------------------------\n// Type Inference Helpers\n// -----------------------------------------------------------------------------\n\n/**\n * Infer UI message type from agent definition.\n *\n * @example\n * ```typescript\n * const agent = new ExperimentalAgent({\n * model: openai('gpt-4o'),\n * tools: { search, analyze },\n * });\n *\n * type MyUIMessage = InferAgentUIMessage<typeof agent>;\n * // MyUIMessage includes tool call types for 'search' and 'analyze'\n * ```\n */\nexport type InferAgentUIMessage<TAgent extends ExperimentalAgent<Record<string, ToolDefinition>>> =\n TAgent extends ExperimentalAgent<infer TTools>\n ? {\n id: string;\n role: CoreMessageRole;\n content: string;\n toolInvocations?: Array<{\n toolCallId: string;\n toolName: keyof TTools;\n state: 'pending' | 'running' | 'completed' | 'failed';\n input: unknown;\n output?: unknown;\n }>;\n }\n : never;\n\n/**\n * Infer tool types from agent.\n */\nexport type InferAgentTools<TAgent extends ExperimentalAgent<Record<string, ToolDefinition>>> =\n TAgent extends ExperimentalAgent<infer TTools> ? TTools : never;\n\n// -----------------------------------------------------------------------------\n// Factory Functions\n// -----------------------------------------------------------------------------\n\n/**\n * Create an experimental agent with simplified configuration.\n *\n * @example\n * ```typescript\n * const agent = createExperimentalAgent({\n * model: openai('gpt-4o'),\n * system: 'You are helpful.',\n * tools: { search, analyze },\n * });\n * ```\n */\nexport function createExperimentalAgent<TTools extends Record<string, ToolDefinition>>(\n config: ExperimentalAgentConfig<TTools>,\n): ExperimentalAgent<TTools> {\n return new ExperimentalAgent(config);\n}\n\n/**\n * Create a prepareStep hook for model escalation.\n *\n * @example\n * ```typescript\n * const prepareStep = createModelEscalation({\n * defaultModel: openai('gpt-4o-mini'),\n * escalateAfterStep: 5,\n * escalatedModel: openai('gpt-4o'),\n * trimMessagesTo: 10,\n * });\n * ```\n */\nexport function createModelEscalation(options: {\n defaultModel: ModelRef;\n escalateAfterStep: number;\n escalatedModel: ModelRef;\n trimMessagesTo?: number;\n}): (input: PrepareStepInput) => PrepareStepOutput {\n const { defaultModel, escalateAfterStep, escalatedModel, trimMessagesTo } = options;\n\n return ({ stepNumber, messages }) => {\n const model = stepNumber >= escalateAfterStep ? escalatedModel : defaultModel;\n const trimmedMessages = trimMessagesTo ? messages.slice(-trimMessagesTo) : messages;\n\n return {\n model,\n messages: trimmedMessages,\n };\n };\n}\n\n/**\n * Create a prepareStep hook for phased tool availability.\n *\n * @example\n * ```typescript\n * const prepareStep = createPhasedTools({\n * phases: [\n * { steps: [1, 2, 3], activeTools: ['search'], toolChoice: 'required' },\n * { steps: [4, 5, 6], activeTools: ['analyze'], toolChoice: 'required' },\n * { steps: [7, 8, 9, 10], activeTools: ['summarize', 'report'], toolChoice: 'auto' },\n * ],\n * });\n * ```\n */\nexport function createPhasedTools(options: {\n phases: Array<{\n steps: number[];\n activeTools: string[];\n toolChoice?: ToolChoice;\n }>;\n}): (input: PrepareStepInput) => PrepareStepOutput {\n return ({ stepNumber }) => {\n for (const phase of options.phases) {\n if (phase.steps.includes(stepNumber)) {\n return {\n activeTools: phase.activeTools,\n toolChoice: phase.toolChoice,\n };\n }\n }\n return {};\n };\n}\n\n// -----------------------------------------------------------------------------\n// Utilities\n// -----------------------------------------------------------------------------\n\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return (\n value != null && typeof (value as AsyncIterable<unknown>)[Symbol.asyncIterator] === 'function'\n );\n}\n\n// -----------------------------------------------------------------------------\n// Re-exports\n// -----------------------------------------------------------------------------\n\nexport { generateId, getModelId };\nexport type { MessageRole, CoreMessageRole, StepFinishReason, AgentFinishReason };\n"],"mappings":"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"}