@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,988 @@
1
+ /**
2
+ * @fileoverview client.ts
3
+ */
4
+
5
+ import {
6
+ createMCPClient,
7
+ type OAuthClientProvider,
8
+ type MCPClient as SDKMCPClient,
9
+ } from '@ai-sdk/mcp';
10
+ import { Experimental_StdioMCPTransport } from '@ai-sdk/mcp/mcp-stdio';
11
+ import { logError, logWarn } from '@repo/shared/logs';
12
+
13
+ import { getErrorCode } from '../../server/errors';
14
+
15
+ import {
16
+ AISDKCompatibleMCPError,
17
+ MCPErrorHandlerFactory,
18
+ MCPErrorUtils,
19
+ } from './ai-sdk-error-integration';
20
+
21
+ import type { SDKToolSet } from '../../shared';
22
+ import type { IOType } from 'node:child_process';
23
+ import type { Stream } from 'node:stream';
24
+
25
+
26
+
27
+ export interface MCPClientConfig {
28
+ name: string;
29
+ transport: MCPTransportConfig;
30
+ retry?: MCPRetryConfig;
31
+ timeoutMs?: number;
32
+ gracefulDegradation?: boolean;
33
+ healthCheck?: MCPHealthCheckConfig;
34
+ }
35
+
36
+ export interface MCPTransportConfig {
37
+ type: 'stdio' | 'sse' | 'http';
38
+ // For stdio transport
39
+ command?: string;
40
+ args?: string[];
41
+ env?: Record<string, string>;
42
+ cwd?: string;
43
+ stderr?: IOType | Stream | number;
44
+ // For SSE transport
45
+ url?: string;
46
+ headers?: Record<string, string>;
47
+ // For HTTP transport
48
+ httpUrl?: string;
49
+ sessionId?: string;
50
+ authProvider?: OAuthClientProvider;
51
+ }
52
+
53
+ /**
54
+ * MCP Client wrapper with proper typing
55
+ * Uses AI SDK tool format instead of MCP SDK format
56
+ */
57
+ export type MCPClient = SDKMCPClient;
58
+
59
+ /**
60
+ * MCP Transport union type for better type safety
61
+ */
62
+ type MCPRemoteTransport = {
63
+ type: 'sse' | 'http';
64
+ url: string;
65
+ headers?: Record<string, string>;
66
+ authProvider?: OAuthClientProvider;
67
+ };
68
+
69
+ export type MCPTransport = Experimental_StdioMCPTransport | MCPRemoteTransport;
70
+
71
+ /**
72
+ * Retry configuration for MCP operations
73
+ */
74
+ export interface MCPRetryConfig {
75
+ maxAttempts: number;
76
+ initialDelayMs: number;
77
+ maxDelayMs: number;
78
+ backoffMultiplier: number;
79
+ retryableErrors: string[];
80
+ }
81
+
82
+ /**
83
+ * Default retry configuration
84
+ */
85
+ export const DEFAULT_RETRY_CONFIG: MCPRetryConfig = {
86
+ maxAttempts: 3,
87
+ initialDelayMs: 1000,
88
+ maxDelayMs: 10000,
89
+ backoffMultiplier: 2,
90
+ retryableErrors: ['ECONNREFUSED', 'ENOTFOUND', 'TIMEOUT', 'NETWORK_ERROR', 'CONNECTION_LOST'],
91
+ };
92
+
93
+ /**
94
+ * Health check configuration for MCP servers
95
+ */
96
+ export interface MCPHealthCheckConfig {
97
+ enabled: boolean;
98
+ intervalMs: number;
99
+ timeoutMs: number;
100
+ failureThreshold: number;
101
+ recoveryThreshold: number;
102
+ }
103
+
104
+ /**
105
+ * Default health check configuration
106
+ */
107
+ export const DEFAULT_HEALTH_CHECK_CONFIG: MCPHealthCheckConfig = {
108
+ enabled: true,
109
+ intervalMs: 60000, // 1 minute
110
+ timeoutMs: 5000, // 5 seconds
111
+ failureThreshold: 3,
112
+ recoveryThreshold: 2,
113
+ };
114
+
115
+ /**
116
+ * Health status for MCP servers
117
+ */
118
+ export enum MCPHealthStatus {
119
+ HEALTHY = 'healthy',
120
+ DEGRADED = 'degraded',
121
+ UNHEALTHY = 'unhealthy',
122
+ UNKNOWN = 'unknown',
123
+ }
124
+
125
+ /**
126
+ * Health check result
127
+ */
128
+ export interface MCPHealthCheckResult {
129
+ status: MCPHealthStatus;
130
+ lastCheck: Date;
131
+ consecutiveFailures: number;
132
+ consecutiveSuccesses: number;
133
+ responseTimeMs?: number;
134
+ error?: string;
135
+ }
136
+
137
+ /**
138
+ * Result type for MCP client creation
139
+ */
140
+ export interface MCPClientResult {
141
+ client: MCPClient;
142
+ toolSet: SDKToolSet;
143
+ config: MCPClientConfig;
144
+ }
145
+
146
+ /**
147
+ * MCP Error types for better error handling
148
+ */
149
+ export class MCPConnectionError extends Error {
150
+ constructor(
151
+ message: string,
152
+ public readonly clientName: string,
153
+ public readonly transportType: string,
154
+ public readonly originalError?: Error,
155
+ ) {
156
+ super(message);
157
+ this.name = 'MCPConnectionError';
158
+ }
159
+ }
160
+
161
+ export class MCPTransportError extends Error {
162
+ constructor(
163
+ message: string,
164
+ public readonly transportType: string,
165
+ public readonly originalError?: Error,
166
+ ) {
167
+ super(message);
168
+ this.name = 'MCPTransportError';
169
+ }
170
+ }
171
+
172
+ export class MCPRetryableError extends Error {
173
+ constructor(
174
+ message: string,
175
+ public readonly attempt: number,
176
+ public readonly maxAttempts: number,
177
+ public readonly originalError?: Error,
178
+ ) {
179
+ super(message);
180
+ this.name = 'MCPRetryableError';
181
+ }
182
+ }
183
+
184
+ /**
185
+ * Utility function to check if an error is retryable
186
+ */
187
+ function isRetryableError(error: Error, retryableErrors: string[]): boolean {
188
+ // Check error message for known patterns
189
+ const errorMessage = error.message.toUpperCase();
190
+ const errorCode = getErrorCode(error);
191
+
192
+ return retryableErrors.some(
193
+ pattern => errorMessage.includes(pattern.toUpperCase()) || errorCode === pattern,
194
+ );
195
+ }
196
+
197
+ /**
198
+ * Utility function to calculate exponential backoff delay
199
+ */
200
+ function calculateDelay(attempt: number, config: MCPRetryConfig): number {
201
+ const delay = config.initialDelayMs * Math.pow(config.backoffMultiplier, attempt - 1);
202
+ return Math.min(delay, config.maxDelayMs);
203
+ }
204
+
205
+ /**
206
+ * Utility function to sleep for a given duration
207
+ */
208
+ function sleep(ms: number): Promise<void> {
209
+ return new Promise(resolve => setTimeout(resolve, ms));
210
+ }
211
+
212
+ /**
213
+ * Timeout wrapper that cancels operations after a specified duration
214
+ */
215
+ async function withTimeout<T>(
216
+ operation: () => Promise<T>,
217
+ timeoutMs: number,
218
+ context: string = 'MCP operation',
219
+ ): Promise<T> {
220
+ const timeoutPromise = new Promise<never>((resolve, reject) => {
221
+ void resolve;
222
+ setTimeout(() => {
223
+ reject(new Error(`${context} timed out after ${timeoutMs}ms`));
224
+ }, timeoutMs);
225
+ });
226
+
227
+ return Promise.race([operation(), timeoutPromise]);
228
+ }
229
+
230
+ /**
231
+ * Enhanced retry wrapper with exponential backoff
232
+ */
233
+ async function withRetry<T>(
234
+ operation: () => Promise<T>,
235
+ config: MCPRetryConfig = DEFAULT_RETRY_CONFIG,
236
+ context: string = 'MCP operation',
237
+ ): Promise<T> {
238
+ let lastError: Error | undefined;
239
+
240
+ for (let attempt = 1; attempt <= config.maxAttempts; attempt++) {
241
+ try {
242
+ return await operation();
243
+ } catch (error) {
244
+ lastError = error instanceof Error ? error : new Error(String(error));
245
+
246
+ // If this is the last attempt or error is not retryable, throw
247
+ if (attempt === config.maxAttempts || !isRetryableError(lastError, config.retryableErrors)) {
248
+ logError(`${context} failed after ${attempt} attempts`, {
249
+ operation: 'mcp_retry_exhausted',
250
+ metadata: {
251
+ context,
252
+ attempt,
253
+ maxAttempts: config.maxAttempts,
254
+ error: lastError.message,
255
+ },
256
+ error: lastError,
257
+ });
258
+ throw lastError;
259
+ }
260
+
261
+ // Calculate delay and wait before retry
262
+ const delay = calculateDelay(attempt, config);
263
+ logWarn(
264
+ `${context} failed, retrying in ${delay}ms (attempt ${attempt}/${config.maxAttempts})`,
265
+ {
266
+ operation: 'mcp_retry_attempt',
267
+ metadata: {
268
+ context,
269
+ attempt,
270
+ maxAttempts: config.maxAttempts,
271
+ delayMs: delay,
272
+ error: lastError.message,
273
+ },
274
+ },
275
+ );
276
+
277
+ await sleep(delay);
278
+ }
279
+ }
280
+
281
+ // This should never be reached, but TypeScript needs this
282
+ throw lastError || new Error(`${context} failed after all retry attempts`);
283
+ }
284
+
285
+ /**
286
+ * Combined retry and timeout wrapper
287
+ */
288
+ export async function withRetryAndTimeout<T>(
289
+ operation: () => Promise<T>,
290
+ retryConfig: MCPRetryConfig = DEFAULT_RETRY_CONFIG,
291
+ timeoutMs?: number,
292
+ context: string = 'MCP operation',
293
+ ): Promise<T> {
294
+ const wrappedOperation = timeoutMs ? () => withTimeout(operation, timeoutMs, context) : operation;
295
+
296
+ return withRetry(wrappedOperation, retryConfig, context);
297
+ }
298
+
299
+ /**
300
+ * MCP Server Health Monitor
301
+ * Tracks health status of MCP servers and provides graceful degradation
302
+ */
303
+ export class MCPHealthMonitor {
304
+ private healthStatuses = new Map<string, MCPHealthCheckResult>();
305
+ private healthCheckIntervals = new Map<string, NodeJS.Timeout>();
306
+
307
+ /**
308
+ * Start health monitoring for a client configuration
309
+ */
310
+ startMonitoring(config: MCPClientConfig): void {
311
+ const healthConfig = config.healthCheck ?? DEFAULT_HEALTH_CHECK_CONFIG;
312
+ if (!healthConfig.enabled) return;
313
+
314
+ // Initialize health status
315
+ this.healthStatuses.set(config.name, {
316
+ status: MCPHealthStatus.UNKNOWN,
317
+ lastCheck: new Date(),
318
+ consecutiveFailures: 0,
319
+ consecutiveSuccesses: 0,
320
+ });
321
+
322
+ // Set up periodic health checks
323
+ const intervalId = setInterval(() => {
324
+ void this.performHealthCheck(config);
325
+ }, healthConfig.intervalMs);
326
+
327
+ this.healthCheckIntervals.set(config.name, intervalId);
328
+
329
+ // Perform initial health check
330
+ void this.performHealthCheck(config);
331
+ }
332
+
333
+ /**
334
+ * Stop health monitoring for a client
335
+ */
336
+ stopMonitoring(clientName: string): void {
337
+ const intervalId = this.healthCheckIntervals.get(clientName);
338
+ if (intervalId) {
339
+ clearInterval(intervalId);
340
+ this.healthCheckIntervals.delete(clientName);
341
+ }
342
+ this.healthStatuses.delete(clientName);
343
+ }
344
+
345
+ /**
346
+ * Get current health status for a client
347
+ */
348
+ getHealthStatus(clientName: string): MCPHealthCheckResult | undefined {
349
+ return this.healthStatuses.get(clientName);
350
+ }
351
+
352
+ /**
353
+ * Check if a client is currently healthy
354
+ */
355
+ isHealthy(clientName: string): boolean {
356
+ const status = this.healthStatuses.get(clientName);
357
+ return status?.status === MCPHealthStatus.HEALTHY;
358
+ }
359
+
360
+ /**
361
+ * Check if a client should be excluded due to poor health
362
+ */
363
+ shouldExclude(clientName: string): boolean {
364
+ const status = this.healthStatuses.get(clientName);
365
+ return status?.status === MCPHealthStatus.UNHEALTHY;
366
+ }
367
+
368
+ /**
369
+ * Perform a health check for a specific client
370
+ */
371
+ private async performHealthCheck(config: MCPClientConfig): Promise<void> {
372
+ const healthConfig = config.healthCheck ?? DEFAULT_HEALTH_CHECK_CONFIG;
373
+ const startTime = Date.now();
374
+ let result: MCPHealthCheckResult;
375
+
376
+ try {
377
+ // Attempt to create a temporary client and get tools
378
+ await withTimeout(
379
+ async () => {
380
+ const transport = createTransportFromConfig(config.transport);
381
+ const tempClient = await createMCPClient({ transport });
382
+
383
+ try {
384
+ await tempClient.tools();
385
+ await tempClient.close();
386
+ } catch (toolError) {
387
+ await tempClient.close();
388
+ throw toolError;
389
+ }
390
+ },
391
+ healthConfig.timeoutMs,
392
+ `Health check for ${config.name}`,
393
+ );
394
+
395
+ // Health check succeeded
396
+ const responseTime = Date.now() - startTime;
397
+ const currentStatus = this.healthStatuses.get(config.name);
398
+
399
+ result = {
400
+ status: MCPHealthStatus.HEALTHY,
401
+ lastCheck: new Date(),
402
+ consecutiveFailures: 0,
403
+ consecutiveSuccesses: (currentStatus?.consecutiveSuccesses ?? 0) + 1,
404
+ responseTimeMs: responseTime,
405
+ };
406
+ } catch (error) {
407
+ // Health check failed
408
+ const currentStatus = this.healthStatuses.get(config.name);
409
+ const consecutiveFailures = (currentStatus?.consecutiveFailures ?? 0) + 1;
410
+
411
+ let newStatus: MCPHealthStatus;
412
+ if (consecutiveFailures >= healthConfig.failureThreshold) {
413
+ newStatus = MCPHealthStatus.UNHEALTHY;
414
+ } else if (consecutiveFailures > 1) {
415
+ newStatus = MCPHealthStatus.DEGRADED;
416
+ } else {
417
+ newStatus = MCPHealthStatus.DEGRADED;
418
+ }
419
+
420
+ result = {
421
+ status: newStatus,
422
+ lastCheck: new Date(),
423
+ consecutiveFailures,
424
+ consecutiveSuccesses: 0,
425
+ error: error instanceof Error ? error.message : String(error),
426
+ };
427
+
428
+ logWarn(`Health check failed for MCP client '${config.name}'`, {
429
+ operation: 'mcp_health_check_failed',
430
+ metadata: {
431
+ clientName: config.name,
432
+ consecutiveFailures,
433
+ status: newStatus,
434
+ error: result.error,
435
+ },
436
+ });
437
+ }
438
+
439
+ // Log health status changes
440
+ const previousStatus = this.healthStatuses.get(config.name);
441
+
442
+ // Update health status
443
+ this.healthStatuses.set(config.name, result);
444
+ if (previousStatus && previousStatus.status !== result.status) {
445
+ logWarn(
446
+ `MCP client '${config.name}' health status changed: ${previousStatus.status} → ${result.status}`,
447
+ {
448
+ operation: 'mcp_health_status_change',
449
+ metadata: {
450
+ clientName: config.name,
451
+ previousStatus: previousStatus.status,
452
+ newStatus: result.status,
453
+ consecutiveFailures: result.consecutiveFailures,
454
+ consecutiveSuccesses: result.consecutiveSuccesses,
455
+ },
456
+ },
457
+ );
458
+ }
459
+ }
460
+
461
+ /**
462
+ * Get summary of all client health statuses
463
+ */
464
+ getHealthSummary(): Record<string, MCPHealthCheckResult> {
465
+ return Object.fromEntries(this.healthStatuses);
466
+ }
467
+
468
+ /**
469
+ * Cleanup all monitoring
470
+ */
471
+ cleanup(): void {
472
+ // Clear all intervals
473
+ for (const intervalId of this.healthCheckIntervals.values()) {
474
+ clearInterval(intervalId);
475
+ }
476
+ this.healthCheckIntervals.clear();
477
+ this.healthStatuses.clear();
478
+ }
479
+ }
480
+
481
+ /**
482
+ * Global health monitor instance
483
+ */
484
+ export const globalMCPHealthMonitor = new MCPHealthMonitor();
485
+
486
+ /**
487
+ * Validate transport configuration at runtime
488
+ */
489
+ function validateTransportConfig(transportConfig: MCPTransportConfig): void {
490
+ switch (transportConfig.type) {
491
+ case 'stdio':
492
+ if (!transportConfig.command) {
493
+ throw new MCPTransportError('Command is required for stdio transport', 'stdio');
494
+ }
495
+ break;
496
+ case 'sse': {
497
+ const url = resolveRemoteUrl(transportConfig);
498
+ if (!url) {
499
+ throw new MCPTransportError('URL is required for SSE transport', 'sse');
500
+ }
501
+ try {
502
+ new URL(url);
503
+ } catch {
504
+ throw new MCPTransportError('Invalid URL format for SSE transport', 'sse');
505
+ }
506
+ break;
507
+ }
508
+ case 'http': {
509
+ const url = resolveRemoteUrl(transportConfig);
510
+ if (!url) {
511
+ throw new MCPTransportError('HTTP URL is required for HTTP transport', 'http');
512
+ }
513
+ try {
514
+ new URL(url);
515
+ } catch {
516
+ throw new MCPTransportError('Invalid HTTP URL format for HTTP transport', 'http');
517
+ }
518
+ break;
519
+ }
520
+ default:
521
+ throw new MCPTransportError(
522
+ `Unsupported transport type: ${getTransportTypeLabel(transportConfig)}`,
523
+ 'unknown',
524
+ );
525
+ }
526
+ }
527
+
528
+ /**
529
+ * Create transport instance from configuration with proper typing and validation
530
+ */
531
+ export function createTransportFromConfig(transportConfig: MCPTransportConfig): MCPTransport {
532
+ // Validate configuration first
533
+ validateTransportConfig(transportConfig);
534
+
535
+ switch (transportConfig.type) {
536
+ case 'stdio':
537
+ const baseEnv = Object.entries(process.env).reduce<Record<string, string>>(
538
+ (acc, [key, value]) => {
539
+ if (typeof value === 'string') {
540
+ acc[key] = value;
541
+ }
542
+ return acc;
543
+ },
544
+ {},
545
+ );
546
+
547
+ return new Experimental_StdioMCPTransport({
548
+ command: transportConfig.command ?? 'node',
549
+ args: transportConfig.args ?? [],
550
+ cwd: transportConfig.cwd,
551
+ stderr: transportConfig.stderr,
552
+ env: {
553
+ ...baseEnv,
554
+ // Ensure API keys are passed to child processes
555
+ ...(process.env.PERPLEXITY_API_KEY && {
556
+ PERPLEXITY_API_KEY: process.env.PERPLEXITY_API_KEY,
557
+ }),
558
+ ...(process.env.OPENAI_API_KEY && {
559
+ OPENAI_API_KEY: process.env.OPENAI_API_KEY,
560
+ }),
561
+ ...(process.env.ANTHROPIC_API_KEY && {
562
+ ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY,
563
+ }),
564
+ ...transportConfig.env,
565
+ },
566
+ });
567
+
568
+ case 'sse':
569
+ return buildRemoteTransport('sse', transportConfig);
570
+
571
+ case 'http':
572
+ return buildRemoteTransport('http', transportConfig);
573
+
574
+ default:
575
+ // TypeScript should catch this, but runtime safety
576
+ throw new MCPTransportError(
577
+ `Unsupported transport type: ${getTransportTypeLabel(transportConfig)}`,
578
+ 'unknown',
579
+ );
580
+ }
581
+ }
582
+
583
+ function resolveRemoteUrl(transportConfig: MCPTransportConfig): string | undefined {
584
+ return transportConfig.url ?? transportConfig.httpUrl;
585
+ }
586
+
587
+ function getTransportTypeLabel(transportConfig: MCPTransportConfig): string {
588
+ return typeof transportConfig.type === 'string' ? transportConfig.type : 'unknown';
589
+ }
590
+
591
+ function buildRemoteTransport(
592
+ type: 'sse' | 'http',
593
+ transportConfig: MCPTransportConfig,
594
+ ): MCPRemoteTransport {
595
+ const url = resolveRemoteUrl(transportConfig);
596
+ if (!url) {
597
+ throw new MCPTransportError(`URL is required for ${type} transport`, type);
598
+ }
599
+
600
+ const headers = { ...transportConfig.headers };
601
+ if (type === 'http' && transportConfig.sessionId) {
602
+ headers['x-mcp-session-id'] = transportConfig.sessionId;
603
+ }
604
+
605
+ return {
606
+ type,
607
+ url,
608
+ headers: Object.keys(headers).length > 0 ? headers : undefined,
609
+ authProvider: transportConfig.authProvider,
610
+ };
611
+ }
612
+
613
+ /**
614
+ * Per-request MCP client manager following Next.js documentation pattern with AI SDK v6 integration
615
+ * Creates clients per request and cleans them up automatically with proper error handling
616
+ */
617
+ export class MCPRequestManager {
618
+ public clients: MCPClient[] = [];
619
+ private tools: SDKToolSet = {};
620
+ private errorHandlers: Map<string, MCPErrorHandlerFactory> = new Map();
621
+
622
+ async addClient(config: MCPClientConfig): Promise<void> {
623
+ const retryConfig = config.retry ?? DEFAULT_RETRY_CONFIG;
624
+ const timeoutMs = config.timeoutMs || 30000; // 30 second default timeout
625
+ const context = `MCP client creation (${config.name})`;
626
+
627
+ // Create AI SDK error handler for this client
628
+ const errorHandler = new MCPErrorHandlerFactory(config.name, context);
629
+ this.errorHandlers.set(config.name, errorHandler);
630
+
631
+ // Check health status if health monitoring is enabled
632
+ if (globalMCPHealthMonitor.shouldExclude(config.name)) {
633
+ if (config.gracefulDegradation) {
634
+ logWarn(`Skipping unhealthy MCP client '${config.name}'`, {
635
+ operation: 'mcp_skip_unhealthy',
636
+ metadata: {
637
+ clientName: config.name,
638
+ healthStatus: globalMCPHealthMonitor.getHealthStatus(config.name),
639
+ },
640
+ });
641
+ return;
642
+ } else {
643
+ throw new AISDKCompatibleMCPError(
644
+ `MCP client '${config.name}' is marked as unhealthy`,
645
+ 'connection-error',
646
+ undefined,
647
+ {
648
+ clientName: config.name,
649
+ transportType: config.transport.type,
650
+ healthStatus: globalMCPHealthMonitor.getHealthStatus(config.name),
651
+ },
652
+ true, // This is recoverable - health might improve
653
+ );
654
+ }
655
+ }
656
+
657
+ try {
658
+ await withRetryAndTimeout(
659
+ async () => {
660
+ const transport = createTransportFromConfig(config.transport);
661
+ const client = await createMCPClient({ transport });
662
+ this.clients.push(client);
663
+
664
+ // Get tools from this client and merge them with retry
665
+ const clientTools = await withRetryAndTimeout<SDKToolSet>(
666
+ () => client.tools(),
667
+ retryConfig,
668
+ timeoutMs,
669
+ `MCP tools retrieval (${config.name})`,
670
+ );
671
+
672
+ // Merge tools directly (later tools override earlier ones with same name)
673
+ Object.assign(this.tools, clientTools);
674
+
675
+ // Start health monitoring for this client
676
+ globalMCPHealthMonitor.startMonitoring(config);
677
+ },
678
+ retryConfig,
679
+ timeoutMs,
680
+ context,
681
+ );
682
+ } catch (error) {
683
+ const originalError = error instanceof Error ? error : new Error(String(error));
684
+ const aiError = new AISDKCompatibleMCPError(
685
+ `Failed to create MCP client '${config.name}' after retries`,
686
+ 'connection-error',
687
+ originalError,
688
+ {
689
+ clientName: config.name,
690
+ transportType: config.transport.type,
691
+ retryAttempts: retryConfig.maxAttempts,
692
+ timeoutMs,
693
+ },
694
+ MCPErrorUtils.isRecoverableError(originalError),
695
+ );
696
+
697
+ // If graceful degradation is enabled, log and continue
698
+ if (config.gracefulDegradation) {
699
+ logWarn(`MCP client '${config.name}' failed, continuing with degraded functionality`, {
700
+ operation: 'mcp_graceful_degradation',
701
+ metadata: {
702
+ clientName: config.name,
703
+ transportType: config.transport.type,
704
+ error: aiError.message,
705
+ errorType: aiError.errorType,
706
+ recoverable: aiError.recoverable,
707
+ ...MCPErrorUtils.extractErrorMetadata(originalError),
708
+ },
709
+ });
710
+ return;
711
+ }
712
+
713
+ throw aiError;
714
+ }
715
+ }
716
+
717
+ getTools(): SDKToolSet {
718
+ return this.tools;
719
+ }
720
+
721
+ async close(): Promise<void> {
722
+ const closePromises = this.clients.map(async (client, index) => {
723
+ try {
724
+ await client.close();
725
+ } catch (error) {
726
+ logWarn(`Failed to close MCP client ${index}`, {
727
+ operation: 'mcp_client_close',
728
+ metadata: {
729
+ clientIndex: index,
730
+ error: error instanceof Error ? error.message : String(error),
731
+ },
732
+ });
733
+ }
734
+ });
735
+
736
+ await Promise.all(closePromises);
737
+ this.clients = [];
738
+ this.tools = {};
739
+ }
740
+
741
+ /**
742
+ * Get health summary for all managed clients
743
+ */
744
+ getHealthSummary(): Record<string, MCPHealthCheckResult> {
745
+ return globalMCPHealthMonitor.getHealthSummary();
746
+ }
747
+
748
+ /**
749
+ * Create AI SDK v6 compatible error handlers for all managed clients
750
+ */
751
+ createAISDKErrorHandlers(): {
752
+ onUncaughtError: (error: Error) => void;
753
+ onFinish: () => Promise<void>;
754
+ onStreamError: (error: Error) => void;
755
+ } {
756
+ const onUncaughtError = (error: Error) => {
757
+ // Create a composite error handler that handles all clients
758
+ for (const [, errorHandler] of this.errorHandlers.entries()) {
759
+ const handler = errorHandler.createUncaughtErrorHandler(() => this.close(), {
760
+ enableRecovery: true,
761
+ maxRecoveryAttempts: 1,
762
+ });
763
+ handler(error);
764
+ }
765
+ };
766
+
767
+ const onFinish = async () => {
768
+ try {
769
+ await this.close();
770
+ } catch (error) {
771
+ // Convert to AI SDK compatible error
772
+ const aiError = new AISDKCompatibleMCPError(
773
+ 'Failed to close MCP clients on finish',
774
+ 'resource-exhausted',
775
+ error instanceof Error ? error : new Error(String(error)),
776
+ {
777
+ clientCount: this.clients.length,
778
+ operation: 'finish_cleanup',
779
+ },
780
+ false,
781
+ );
782
+ throw aiError;
783
+ }
784
+ };
785
+
786
+ const onStreamError = (error: Error) => {
787
+ // Handle stream errors for all clients
788
+ for (const [, errorHandler] of this.errorHandlers.entries()) {
789
+ const handler = errorHandler.createStreamErrorHandler(() => this.close());
790
+ handler(error);
791
+ }
792
+ };
793
+
794
+ return {
795
+ onUncaughtError,
796
+ onFinish,
797
+ onStreamError,
798
+ };
799
+ }
800
+ }
801
+
802
+ /**
803
+ * Create MCP tools for a single request (following Next.js docs pattern)
804
+ * This creates clients per request and returns cleanup functions
805
+ */
806
+ export async function createMCPToolsForRequest(configs: MCPClientConfig[]): Promise<{
807
+ tools: SDKToolSet;
808
+ clients: MCPClient[];
809
+ cleanup: () => Promise<void>;
810
+ }> {
811
+ const manager = new MCPRequestManager();
812
+
813
+ for (const config of configs) {
814
+ await manager.addClient(config);
815
+ }
816
+
817
+ return {
818
+ tools: manager.getTools(),
819
+ clients: manager.clients,
820
+ cleanup: () => manager.close(),
821
+ };
822
+ }
823
+
824
+ /**
825
+ * Create MCP tools following the exact Next.js documentation pattern
826
+ * This function matches the pattern shown in the official AI SDK docs:
827
+ * https://sdk.vercel.ai/docs/ai-sdk-ui/mcp-tools (Next.js usage)
828
+ * https://sdk.vercel.ai/docs/ai-sdk-core/mcp-tools (Node.js usage)
829
+ *
830
+ * Next.js streamText example from official docs:
831
+ * ```typescript
832
+ * const toolSetOne = await stdioClient.tools();
833
+ * const toolSetTwo = await sseClient.tools();
834
+ * const toolSetThree = await customClient.tools();
835
+ * const tools = {
836
+ * ...toolSetOne,
837
+ * ...toolSetTwo,
838
+ * ...toolSetThree, // note: this approach causes subsequent tool sets to override tools with the same name
839
+ * };
840
+ *
841
+ * const response = streamText({
842
+ * model: openai('gpt-4o'),
843
+ * tools,
844
+ * prompt,
845
+ * onFinish: async () => {
846
+ * await stdioClient.close();
847
+ * await sseClient.close();
848
+ * await customClient.close();
849
+ * },
850
+ * });
851
+ * ```
852
+ */
853
+ export async function createMCPToolsFromConfigs(
854
+ configs: MCPClientConfig[],
855
+ options: { gracefulDegradation?: boolean } = {},
856
+ ): Promise<{
857
+ tools: SDKToolSet;
858
+ clients: MCPClient[];
859
+ closeAllClients: () => Promise<void>;
860
+ }> {
861
+ const clients: MCPClient[] = [];
862
+ const toolSets: SDKToolSet[] = [];
863
+
864
+ // Create all clients in parallel for better performance
865
+ const clientPromises = configs.map(async (config): Promise<MCPClientResult | null> => {
866
+ const retryConfig = config.retry ?? DEFAULT_RETRY_CONFIG;
867
+ const timeoutMs = config.timeoutMs || 30000;
868
+ const enableGracefulDegradation =
869
+ config.gracefulDegradation ?? options.gracefulDegradation ?? false;
870
+
871
+ try {
872
+ const result = await withRetryAndTimeout(
873
+ async (): Promise<MCPClientResult> => {
874
+ const transport = createTransportFromConfig(config.transport);
875
+
876
+ // Create MCP client with transport (following official docs pattern)
877
+ const client = await createMCPClient({ transport });
878
+
879
+ try {
880
+ const toolSet = await withRetryAndTimeout<SDKToolSet>(
881
+ () => client.tools(),
882
+ retryConfig,
883
+ timeoutMs,
884
+ `MCP tools retrieval (${config.name})`,
885
+ );
886
+
887
+ return { client, toolSet, config };
888
+ } catch (error) {
889
+ try {
890
+ await client.close();
891
+ } catch (closeError) {
892
+ logError(`Failed to close failed client ${config.name}`, {
893
+ operation: 'mcp_client_cleanup',
894
+ metadata: { clientName: config.name },
895
+ error: closeError instanceof Error ? closeError : new Error(String(closeError)),
896
+ });
897
+ }
898
+
899
+ throw error;
900
+ }
901
+ },
902
+ retryConfig,
903
+ timeoutMs,
904
+ `MCP client creation (${config.name})`,
905
+ );
906
+
907
+ return result;
908
+ } catch (error) {
909
+ const mcpError = new MCPConnectionError(
910
+ `Failed to create MCP client '${config.name}' after retries`,
911
+ config.name,
912
+ config.transport.type,
913
+ error instanceof Error ? error : new Error(String(error)),
914
+ );
915
+
916
+ if (enableGracefulDegradation) {
917
+ logWarn(
918
+ `Failed to create MCP client ${config.name}, continuing with degraded functionality`,
919
+ {
920
+ operation: 'mcp_client_creation_degraded',
921
+ metadata: {
922
+ clientName: config.name,
923
+ transportType: config.transport.type,
924
+ retryAttempts: retryConfig.maxAttempts,
925
+ timeoutMs,
926
+ error: mcpError.message,
927
+ },
928
+ },
929
+ );
930
+ // Return null to filter out later
931
+ return null;
932
+ } else {
933
+ // Re-throw error if not using graceful degradation
934
+ throw mcpError;
935
+ }
936
+ }
937
+ });
938
+
939
+ // Wait for all clients to be created
940
+ const results = await Promise.all(clientPromises);
941
+
942
+ // Filter out failed clients and populate arrays
943
+ for (const result of results) {
944
+ if (result) {
945
+ clients.push(result.client);
946
+ toolSets.push(result.toolSet);
947
+ }
948
+ }
949
+
950
+ // Merge all tool sets using explicit spread operator (following Next.js docs pattern)
951
+ // Note: this approach causes subsequent tool sets to override tools with the same name
952
+ const tools = mergeToolSets(toolSets);
953
+
954
+ // Enhanced cleanup function with better error handling
955
+ const closeAllClients = async (): Promise<void> => {
956
+ const closePromises = clients.map(async (client, index) => {
957
+ try {
958
+ await client.close();
959
+ } catch (error) {
960
+ logWarn(`Failed to close MCP client ${index}`, {
961
+ operation: 'mcp_client_close',
962
+ metadata: {
963
+ clientIndex: index,
964
+ error: error instanceof Error ? error.message : String(error),
965
+ },
966
+ });
967
+ }
968
+ });
969
+
970
+ await Promise.all(closePromises);
971
+ };
972
+
973
+ return {
974
+ tools,
975
+ clients,
976
+ closeAllClients,
977
+ };
978
+ }
979
+
980
+ function mergeToolSets(toolSets: SDKToolSet[]): SDKToolSet {
981
+ const merged: SDKToolSet = {};
982
+
983
+ for (const toolSet of toolSets) {
984
+ Object.assign(merged, toolSet);
985
+ }
986
+
987
+ return merged;
988
+ }