@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,54 @@
1
+ import { Nr as SDKLanguageModel } from "./ai-runtime-DIwOEc6g.mjs";
2
+ import { a as AgentExecutionOptions, c as BaseAgentState, n as AgentConfig, t as Agent } from "./types-DbUfMCnT.mjs";
3
+ import { z } from "zod";
4
+
5
+ //#region src/agents/coordinator/coordinator-agent.d.ts
6
+ interface Task {
7
+ id: string;
8
+ description: string;
9
+ agentId: string;
10
+ dependencies?: string[];
11
+ priority?: number;
12
+ input?: unknown;
13
+ }
14
+ interface TaskResult {
15
+ taskId: string;
16
+ status: 'pending' | 'running' | 'completed' | 'failed';
17
+ result?: unknown;
18
+ error?: string;
19
+ executionTimeMs?: number;
20
+ }
21
+ declare const ExecutionPlanSchema: z.ZodObject<{
22
+ description: z.ZodString;
23
+ tasks: z.ZodArray<z.ZodObject<{
24
+ id: z.ZodString;
25
+ description: z.ZodString;
26
+ agentId: z.ZodString;
27
+ dependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
28
+ priority: z.ZodOptional<z.ZodNumber>;
29
+ }, z.core.$strip>>;
30
+ estimatedTimeMs: z.ZodOptional<z.ZodNumber>;
31
+ }, z.core.$strip>;
32
+ type ExecutionPlan = z.infer<typeof ExecutionPlanSchema>;
33
+ interface CoordinatorConfig extends Omit<AgentConfig, 'systemPrompt'> {
34
+ agents: Map<string, Agent>;
35
+ maxParallel?: number;
36
+ taskTimeoutMs?: number;
37
+ planningPrompt?: string;
38
+ }
39
+ declare function createCoordinatorAgent(config: CoordinatorConfig): {
40
+ config: AgentConfig;
41
+ agents: Map<string, Agent>;
42
+ plan(goal: string, options: {
43
+ model: SDKLanguageModel;
44
+ context?: AgentExecutionOptions["context"];
45
+ }): Promise<ExecutionPlan>;
46
+ executePlan(plan: ExecutionPlan, options: AgentExecutionOptions): Promise<Map<string, TaskResult>>;
47
+ execute(prompt: string, options: AgentExecutionOptions): Promise<BaseAgentState & {
48
+ plan: ExecutionPlan;
49
+ taskResults: Map<string, TaskResult>;
50
+ }>;
51
+ };
52
+ //#endregion
53
+ export { TaskResult as a, Task as i, ExecutionPlan as n, createCoordinatorAgent as o, ExecutionPlanSchema as r, CoordinatorConfig as t };
54
+ //# sourceMappingURL=coordinator-agent-BglqZLwo.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator-agent-BglqZLwo.d.mts","names":[],"sources":["../src/agents/coordinator/coordinator-agent.ts"],"mappings":";;;;;UAkBiB,IAAA;EAEf,EAAA;EAEA,WAAA;EAEA,OAAA;EAEA,YAAA;EAEA,QAAA;EAEA,KAAA;AAAA;AAAA,UAMe,UAAA;EAEf,MAAA;EAEA,MAAA;EAEA,MAAA;EAEA,KAAA;EAEA,eAAA;AAAA;AAAA,cAMW,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;;;;;;KAiBpB,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,UAK1B,iBAAA,SAA0B,IAAA,CAAK,WAAA;EAE9C,MAAA,EAAQ,GAAA,SAAY,KAAA;EAEpB,WAAA;EAEA,aAAA;EAEA,cAAA;AAAA;AAAA,iBA4Bc,sBAAA,CAAuB,MAAA,EAAQ,iBAAA;UAWJ,WAAA;;qBAOzB,OAAA;IACD,KAAA,EAAO,gBAAA;IAAkB,OAAA,GAAU,qBAAA;EAAA,IAC7C,OAAA,CAAQ,aAAA;oBAgBH,aAAA,EAAa,OAAA,EACV,qBAAA,GACR,OAAA,CAAQ,GAAA,SAAY,UAAA;0BAkJP,OAAA,EACL,qBAAA,GACR,OAAA,CAAQ,cAAA;IAAmB,IAAA,EAAM,aAAA;IAAe,WAAA,EAAa,GAAA,SAAY,UAAA;EAAA;AAAA"}
@@ -0,0 +1,236 @@
1
+ import { $ as generateObject } from "./ai-runtime-CDzQztTt.mjs";
2
+ import { n as createInitialState } from "./factory-DP6VSl8C.mjs";
3
+ import { z } from "zod";
4
+ import { withTimeout } from "@od-oneapp/core-utils/shared/timeout";
5
+
6
+ //#region src/agents/coordinator/coordinator-agent.ts
7
+ /**
8
+ * @fileoverview Coordinator agent for multi-agent orchestration.
9
+ * @module @od-oneapp/ai-platform/agents/coordinator
10
+ */
11
+ /**
12
+ * Execution plan schema.
13
+ */
14
+ const ExecutionPlanSchema = z.object({
15
+ description: z.string(),
16
+ tasks: z.array(z.object({
17
+ id: z.string(),
18
+ description: z.string(),
19
+ agentId: z.string(),
20
+ dependencies: z.array(z.string()).optional(),
21
+ priority: z.number().optional()
22
+ })),
23
+ estimatedTimeMs: z.number().optional()
24
+ });
25
+ /**
26
+ * Creates a coordinator agent that orchestrates multiple agents.
27
+ *
28
+ * @param config - Coordinator configuration
29
+ * @returns Coordinator agent
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const coordinator = createCoordinatorAgent({
34
+ * id: 'coordinator',
35
+ * name: 'Task Coordinator',
36
+ * description: 'Coordinates multi-agent workflows',
37
+ * agents: new Map([
38
+ * ['research', researchAgent],
39
+ * ['code', codeAgent],
40
+ * ['review', reviewAgent],
41
+ * ]),
42
+ * maxParallel: 3,
43
+ * });
44
+ *
45
+ * const result = await coordinator.execute('Build a todo app with tests', {
46
+ * model: openai('gpt-4o'),
47
+ * });
48
+ * ```
49
+ */
50
+ function createCoordinatorAgent(config) {
51
+ const { agents, maxParallel = 3, taskTimeoutMs = 6e4, planningPrompt } = config;
52
+ if (maxParallel < 1) throw new Error(`maxParallel must be at least 1, got ${maxParallel}`);
53
+ const systemPrompt = planningPrompt ?? buildPlanningPrompt(agents);
54
+ return {
55
+ config: {
56
+ ...config,
57
+ systemPrompt
58
+ },
59
+ agents,
60
+ async plan(goal, options) {
61
+ const { object } = await generateObject({
62
+ model: options.model,
63
+ system: systemPrompt,
64
+ prompt: `Create an execution plan for this goal:\n\n"${goal}"`,
65
+ schema: ExecutionPlanSchema,
66
+ abortSignal: options.context?.abortSignal
67
+ });
68
+ return object;
69
+ },
70
+ async executePlan(plan, options) {
71
+ const taskIds = plan.tasks.map((t) => t.id);
72
+ if (new Set(taskIds).size !== taskIds.length) {
73
+ const duplicates = taskIds.filter((id, idx) => taskIds.indexOf(id) !== idx);
74
+ throw new Error(`Duplicate task IDs detected: ${[...new Set(duplicates)].join(", ")}`);
75
+ }
76
+ const results = /* @__PURE__ */ new Map();
77
+ const pending = new Set(plan.tasks.map((t) => t.id));
78
+ const running = /* @__PURE__ */ new Set();
79
+ const runningPromises = /* @__PURE__ */ new Map();
80
+ for (const task of plan.tasks) results.set(task.id, {
81
+ taskId: task.id,
82
+ status: "pending"
83
+ });
84
+ while (pending.size > 0 || running.size > 0) {
85
+ const availableSlots = maxParallel - running.size;
86
+ const readyTasks = plan.tasks.filter((task) => {
87
+ if (!pending.has(task.id)) return false;
88
+ return (task.dependencies ?? []).every((depId) => {
89
+ return results.get(depId)?.status === "completed";
90
+ });
91
+ }).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0)).slice(0, Math.max(0, availableSlots));
92
+ if (readyTasks.length === 0 && running.size === 0) {
93
+ const missingDeps = plan.tasks.filter((task) => pending.has(task.id)).flatMap((task) => {
94
+ return (task.dependencies ?? []).filter((depId) => !results.has(depId)).map((depId) => ({
95
+ taskId: task.id,
96
+ depId
97
+ }));
98
+ });
99
+ if (missingDeps.length > 0) {
100
+ const missingDep = missingDeps[0];
101
+ if (missingDep) throw new Error(`Task "${missingDep.taskId}" references non-existent dependency "${missingDep.depId}"`);
102
+ }
103
+ if (plan.tasks.some((task) => {
104
+ if (!pending.has(task.id)) return false;
105
+ return (task.dependencies ?? []).some((depId) => results.get(depId)?.status === "failed");
106
+ })) {
107
+ for (const taskId of pending) results.set(taskId, {
108
+ taskId,
109
+ status: "failed",
110
+ error: "Dependency failed"
111
+ });
112
+ break;
113
+ }
114
+ throw new Error("Circular dependency detected in task plan");
115
+ }
116
+ for (const task of readyTasks) {
117
+ pending.delete(task.id);
118
+ running.add(task.id);
119
+ results.set(task.id, {
120
+ taskId: task.id,
121
+ status: "running"
122
+ });
123
+ const taskPromise = (async () => {
124
+ const startTime = Date.now();
125
+ const agent = agents.get(task.agentId);
126
+ if (!agent) {
127
+ results.set(task.id, {
128
+ taskId: task.id,
129
+ status: "failed",
130
+ error: `Agent not found: ${task.agentId}`
131
+ });
132
+ running.delete(task.id);
133
+ runningPromises.delete(task.id);
134
+ return;
135
+ }
136
+ try {
137
+ const depResults = {};
138
+ for (const depId of task.dependencies ?? []) depResults[depId] = results.get(depId)?.result;
139
+ const prompt = buildTaskPrompt(task, depResults);
140
+ const agentResult = await withTimeout(agent.execute(prompt, options), taskTimeoutMs, { name: `Task ${task.id}` });
141
+ results.set(task.id, {
142
+ taskId: task.id,
143
+ status: "completed",
144
+ result: agentResult.result,
145
+ executionTimeMs: Date.now() - startTime
146
+ });
147
+ } catch (error) {
148
+ results.set(task.id, {
149
+ taskId: task.id,
150
+ status: "failed",
151
+ error: error instanceof Error ? error.message : String(error),
152
+ executionTimeMs: Date.now() - startTime
153
+ });
154
+ } finally {
155
+ running.delete(task.id);
156
+ runningPromises.delete(task.id);
157
+ }
158
+ })();
159
+ runningPromises.set(task.id, taskPromise);
160
+ }
161
+ if (runningPromises.size > 0) await Promise.race(runningPromises.values());
162
+ }
163
+ return results;
164
+ },
165
+ async execute(prompt, options) {
166
+ const state = createInitialState(options.messages);
167
+ try {
168
+ const plan = await this.plan(prompt, {
169
+ model: options.model,
170
+ context: options.context
171
+ });
172
+ state.metadata.plan = plan;
173
+ const taskResults = await this.executePlan(plan, options);
174
+ const completedTasks = Array.from(taskResults.values()).filter((r) => r.status === "completed");
175
+ state.isComplete = true;
176
+ state.result = {
177
+ plan,
178
+ taskResults: Object.fromEntries(taskResults),
179
+ completedCount: completedTasks.length,
180
+ totalCount: plan.tasks.length
181
+ };
182
+ return {
183
+ ...state,
184
+ plan,
185
+ taskResults
186
+ };
187
+ } catch (error) {
188
+ state.error = error instanceof Error ? error : new Error(String(error));
189
+ state.isComplete = true;
190
+ return {
191
+ ...state,
192
+ plan: {
193
+ description: "",
194
+ tasks: []
195
+ },
196
+ taskResults: /* @__PURE__ */ new Map()
197
+ };
198
+ }
199
+ }
200
+ };
201
+ }
202
+ /**
203
+ * Builds the planning system prompt.
204
+ */
205
+ function buildPlanningPrompt(agents) {
206
+ return `You are a task planning coordinator. Your job is to break down complex goals into tasks that can be executed by specialized agents.
207
+
208
+ Available Agents:
209
+ ${Array.from(agents.entries()).map(([id, agent]) => `- ${id}: ${agent.config.description}`).join("\n")}
210
+
211
+ Instructions:
212
+ 1. Analyze the goal to identify required sub-tasks
213
+ 2. Assign each task to the most appropriate agent
214
+ 3. Define dependencies between tasks (which must complete before others can start)
215
+ 4. Prioritize tasks when possible (higher priority = execute first when ready)
216
+ 5. Keep tasks focused and atomic
217
+
218
+ Output your plan in the specified JSON format.`;
219
+ }
220
+ /**
221
+ * Builds a task prompt including dependency results.
222
+ */
223
+ function buildTaskPrompt(task, depResults) {
224
+ let prompt = task.description;
225
+ if (task.input) prompt += `\n\nInput: ${JSON.stringify(task.input)}`;
226
+ const deps = Object.entries(depResults);
227
+ if (deps.length > 0) {
228
+ prompt += "\n\nResults from previous tasks:";
229
+ for (const [depId, result] of deps) prompt += `\n- ${depId}: ${JSON.stringify(result)}`;
230
+ }
231
+ return prompt;
232
+ }
233
+
234
+ //#endregion
235
+ export { createCoordinatorAgent as n, ExecutionPlanSchema as t };
236
+ //# sourceMappingURL=coordinator-agent-WFWBRL-G.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator-agent-WFWBRL-G.mjs","names":[],"sources":["../src/agents/coordinator/coordinator-agent.ts"],"sourcesContent":["/**\n * @fileoverview Coordinator agent for multi-agent orchestration.\n * @module @od-oneapp/ai-platform/agents/coordinator\n */\n\nimport { withTimeout } from '@repo/core-utils/shared/timeout';\nimport { z } from 'zod';\n\nimport { generateObject } from '../../shared';\nimport { createInitialState } from '../base/factory';\n\nimport type { SDKLanguageModel } from '../../shared';\nimport type { Agent, AgentConfig, BaseAgentState, AgentExecutionOptions } from '../base/types';\n\n\n/**\n * Task definition for coordinator.\n */\nexport interface Task {\n /** Task ID */\n id: string;\n /** Task description */\n description: string;\n /** Agent ID to execute task */\n agentId: string;\n /** Dependencies (task IDs that must complete first) */\n dependencies?: string[];\n /** Priority (higher = more urgent) */\n priority?: number;\n /** Input data for the task */\n input?: unknown;\n}\n\n/**\n * Task result.\n */\nexport interface TaskResult {\n /** Task ID */\n taskId: string;\n /** Task status */\n status: 'pending' | 'running' | 'completed' | 'failed';\n /** Result data */\n result?: unknown;\n /** Error if failed */\n error?: string;\n /** Execution time in ms */\n executionTimeMs?: number;\n}\n\n/**\n * Execution plan schema.\n */\nexport const ExecutionPlanSchema = z.object({\n /** Plan description */\n description: z.string(),\n /** Tasks to execute */\n tasks: z.array(\n z.object({\n id: z.string(),\n description: z.string(),\n agentId: z.string(),\n dependencies: z.array(z.string()).optional(),\n priority: z.number().optional(),\n }),\n ),\n /** Estimated total time */\n estimatedTimeMs: z.number().optional(),\n});\n\nexport type ExecutionPlan = z.infer<typeof ExecutionPlanSchema>;\n\n/**\n * Coordinator agent configuration.\n */\nexport interface CoordinatorConfig extends Omit<AgentConfig, 'systemPrompt'> {\n /** Available agents */\n agents: Map<string, Agent>;\n /** Maximum parallel tasks */\n maxParallel?: number;\n /** Task timeout in ms */\n taskTimeoutMs?: number;\n /** Custom planning prompt */\n planningPrompt?: string;\n}\n\n/**\n * Creates a coordinator agent that orchestrates multiple agents.\n *\n * @param config - Coordinator configuration\n * @returns Coordinator agent\n *\n * @example\n * ```ts\n * const coordinator = createCoordinatorAgent({\n * id: 'coordinator',\n * name: 'Task Coordinator',\n * description: 'Coordinates multi-agent workflows',\n * agents: new Map([\n * ['research', researchAgent],\n * ['code', codeAgent],\n * ['review', reviewAgent],\n * ]),\n * maxParallel: 3,\n * });\n *\n * const result = await coordinator.execute('Build a todo app with tests', {\n * model: openai('gpt-4o'),\n * });\n * ```\n */\nexport function createCoordinatorAgent(config: CoordinatorConfig) {\n const { agents, maxParallel = 3, taskTimeoutMs = 60000, planningPrompt } = config;\n\n // Validate maxParallel to avoid misleading failures\n if (maxParallel < 1) {\n throw new Error(`maxParallel must be at least 1, got ${maxParallel}`);\n }\n\n const systemPrompt = planningPrompt ?? buildPlanningPrompt(agents);\n\n return {\n config: { ...config, systemPrompt } as AgentConfig,\n agents,\n\n /**\n * Creates an execution plan for a goal.\n */\n async plan(\n goal: string,\n options: { model: SDKLanguageModel; context?: AgentExecutionOptions['context'] },\n ): Promise<ExecutionPlan> {\n const { object } = await generateObject({\n model: options.model,\n system: systemPrompt,\n prompt: `Create an execution plan for this goal:\\n\\n\"${goal}\"`,\n schema: ExecutionPlanSchema,\n abortSignal: options.context?.abortSignal,\n });\n\n return object;\n },\n\n /**\n * Executes a plan with dependency management.\n */\n async executePlan(\n plan: ExecutionPlan,\n options: AgentExecutionOptions,\n ): Promise<Map<string, TaskResult>> {\n // Validate unique task IDs to prevent silent task skipping\n const taskIds = plan.tasks.map(t => t.id);\n const uniqueIds = new Set(taskIds);\n if (uniqueIds.size !== taskIds.length) {\n const duplicates = taskIds.filter((id, idx) => taskIds.indexOf(id) !== idx);\n throw new Error(`Duplicate task IDs detected: ${[...new Set(duplicates)].join(', ')}`);\n }\n\n const results = new Map<string, TaskResult>();\n const pending = new Set(plan.tasks.map(t => t.id));\n const running = new Set<string>();\n const runningPromises = new Map<string, Promise<void>>();\n\n // Initialize all tasks as pending\n for (const task of plan.tasks) {\n results.set(task.id, { taskId: task.id, status: 'pending' });\n }\n\n while (pending.size > 0 || running.size > 0) {\n // Find ready tasks (dependencies completed), sorted by priority descending\n const availableSlots = maxParallel - running.size;\n const readyTasks = plan.tasks\n .filter(task => {\n if (!pending.has(task.id)) return false;\n\n const deps = task.dependencies ?? [];\n return deps.every(depId => {\n const depResult = results.get(depId);\n return depResult?.status === 'completed';\n });\n })\n .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0))\n .slice(0, Math.max(0, availableSlots));\n\n if (readyTasks.length === 0 && running.size === 0) {\n // Check for missing dependencies first\n const missingDeps = plan.tasks\n .filter(task => pending.has(task.id))\n .flatMap(task => {\n const deps = task.dependencies ?? [];\n return deps\n .filter(depId => !results.has(depId))\n .map(depId => ({ taskId: task.id, depId }));\n });\n\n if (missingDeps.length > 0) {\n const missingDep = missingDeps[0];\n if (missingDep) {\n throw new Error(\n `Task \"${missingDep.taskId}\" references non-existent dependency \"${missingDep.depId}\"`,\n );\n }\n }\n\n // Check for failed dependencies\n const hasFailedDeps = plan.tasks.some(task => {\n if (!pending.has(task.id)) return false;\n const deps = task.dependencies ?? [];\n return deps.some(depId => results.get(depId)?.status === 'failed');\n });\n\n if (hasFailedDeps) {\n // Mark remaining tasks as failed due to dependency failure\n for (const taskId of pending) {\n results.set(taskId, {\n taskId,\n status: 'failed',\n error: 'Dependency failed',\n });\n }\n break;\n }\n\n // Circular dependency\n throw new Error('Circular dependency detected in task plan');\n }\n\n // Start ready tasks\n for (const task of readyTasks) {\n pending.delete(task.id);\n running.add(task.id);\n results.set(task.id, { taskId: task.id, status: 'running' });\n\n const taskPromise = (async () => {\n const startTime = Date.now();\n const agent = agents.get(task.agentId);\n\n if (!agent) {\n results.set(task.id, {\n taskId: task.id,\n status: 'failed',\n error: `Agent not found: ${task.agentId}`,\n });\n running.delete(task.id);\n runningPromises.delete(task.id);\n return;\n }\n\n try {\n // Build context with dependency results\n const depResults: Record<string, unknown> = {};\n for (const depId of task.dependencies ?? []) {\n depResults[depId] = results.get(depId)?.result;\n }\n\n const prompt = buildTaskPrompt(task, depResults);\n const agentResult = await withTimeout(agent.execute(prompt, options), taskTimeoutMs, {\n name: `Task ${task.id}`,\n });\n\n results.set(task.id, {\n taskId: task.id,\n status: 'completed',\n result: agentResult.result,\n executionTimeMs: Date.now() - startTime,\n });\n } catch (error) {\n results.set(task.id, {\n taskId: task.id,\n status: 'failed',\n error: error instanceof Error ? error.message : String(error),\n executionTimeMs: Date.now() - startTime,\n });\n } finally {\n running.delete(task.id);\n runningPromises.delete(task.id);\n }\n })();\n\n runningPromises.set(task.id, taskPromise);\n }\n\n // Wait for at least one task to complete if there are any running\n if (runningPromises.size > 0) {\n await Promise.race(runningPromises.values());\n }\n }\n\n return results;\n },\n\n /**\n * Full execution: plan + execute.\n */\n async execute(\n prompt: string,\n options: AgentExecutionOptions,\n ): Promise<BaseAgentState & { plan: ExecutionPlan; taskResults: Map<string, TaskResult> }> {\n const state = createInitialState(options.messages);\n\n try {\n // Create plan\n const plan = await this.plan(prompt, {\n model: options.model,\n context: options.context,\n });\n\n state.metadata.plan = plan;\n\n // Execute plan\n const taskResults = await this.executePlan(plan, options);\n\n // Aggregate results\n const completedTasks = Array.from(taskResults.values()).filter(\n r => r.status === 'completed',\n );\n\n state.isComplete = true;\n state.result = {\n plan,\n taskResults: Object.fromEntries(taskResults),\n completedCount: completedTasks.length,\n totalCount: plan.tasks.length,\n };\n\n return { ...state, plan, taskResults };\n } catch (error) {\n state.error = error instanceof Error ? error : new Error(String(error));\n state.isComplete = true;\n return {\n ...state,\n plan: { description: '', tasks: [] },\n taskResults: new Map(),\n };\n }\n },\n };\n}\n\n/**\n * Builds the planning system prompt.\n */\nfunction buildPlanningPrompt(agents: Map<string, Agent>): string {\n const agentList = Array.from(agents.entries())\n .map(([id, agent]) => `- ${id}: ${agent.config.description}`)\n .join('\\n');\n\n return `You are a task planning coordinator. Your job is to break down complex goals into tasks that can be executed by specialized agents.\n\nAvailable Agents:\n${agentList}\n\nInstructions:\n1. Analyze the goal to identify required sub-tasks\n2. Assign each task to the most appropriate agent\n3. Define dependencies between tasks (which must complete before others can start)\n4. Prioritize tasks when possible (higher priority = execute first when ready)\n5. Keep tasks focused and atomic\n\nOutput your plan in the specified JSON format.`;\n}\n\n/**\n * Builds a task prompt including dependency results.\n */\nfunction buildTaskPrompt(task: Task, depResults: Record<string, unknown>): string {\n let prompt = task.description;\n\n if (task.input) {\n prompt += `\\n\\nInput: ${JSON.stringify(task.input)}`;\n }\n\n const deps = Object.entries(depResults);\n if (deps.length > 0) {\n prompt += '\\n\\nResults from previous tasks:';\n for (const [depId, result] of deps) {\n prompt += `\\n- ${depId}: ${JSON.stringify(result)}`;\n }\n }\n\n return prompt;\n}\n"],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { createHash, createHmac } from "node:crypto";
2
+
3
+ //#region src/server/cache/crypto.ts
4
+ /**
5
+ * @fileoverview Cryptographic helper functions for audit logging and data integrity
6
+ * Provides hashing and signature generation for security-critical operations
7
+ */
8
+ /**
9
+ * Generate a hash of the input data using SHA-256
10
+ * @param input - Data to hash (string or object)
11
+ * @returns Hex-encoded hash
12
+ */
13
+ function hashInput(input) {
14
+ const data = typeof input === "string" ? input : JSON.stringify(input);
15
+ return createHash("sha256").update(data).digest("hex");
16
+ }
17
+ /**
18
+ * Generate an HMAC signature for the input data
19
+ * @param input - Data to sign
20
+ * @param secret - Secret key for HMAC (defaults to env var or empty string)
21
+ * @returns Hex-encoded HMAC signature
22
+ */
23
+ function generateSignature(input, secret) {
24
+ const data = typeof input === "string" ? input : JSON.stringify(input);
25
+ return createHmac("sha256", secret || process.env.AUDIT_SECRET_KEY || "").update(data).digest("hex");
26
+ }
27
+ /**
28
+ * Verify an HMAC signature
29
+ * @param input - Original data that was signed
30
+ * @param signature - Signature to verify
31
+ * @param secret - Secret key for HMAC (defaults to env var or empty string)
32
+ * @returns True if signature is valid
33
+ */
34
+ function verifySignature(input, signature, secret) {
35
+ return generateSignature(input, secret) === signature;
36
+ }
37
+
38
+ //#endregion
39
+ export { hashInput as n, verifySignature as r, generateSignature as t };
40
+ //# sourceMappingURL=crypto-8ABhc3TD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-8ABhc3TD.mjs","names":[],"sources":["../src/server/cache/crypto.ts"],"sourcesContent":["/**\n * @fileoverview Cryptographic helper functions for audit logging and data integrity\n * Provides hashing and signature generation for security-critical operations\n */\n\nimport { createHash, createHmac } from 'node:crypto';\n\n/**\n * Generate a hash of the input data using SHA-256\n * @param input - Data to hash (string or object)\n * @returns Hex-encoded hash\n */\nexport function hashInput(input: string | Record<string, unknown>): string {\n const data = typeof input === 'string' ? input : JSON.stringify(input);\n return createHash('sha256').update(data).digest('hex');\n}\n\n/**\n * Generate an HMAC signature for the input data\n * @param input - Data to sign\n * @param secret - Secret key for HMAC (defaults to env var or empty string)\n * @returns Hex-encoded HMAC signature\n */\nexport function generateSignature(\n input: string | Record<string, unknown>,\n secret?: string,\n): string {\n const data = typeof input === 'string' ? input : JSON.stringify(input);\n const key = secret || process.env.AUDIT_SECRET_KEY || '';\n return createHmac('sha256', key).update(data).digest('hex');\n}\n\n/**\n * Verify an HMAC signature\n * @param input - Original data that was signed\n * @param signature - Signature to verify\n * @param secret - Secret key for HMAC (defaults to env var or empty string)\n * @returns True if signature is valid\n */\nexport function verifySignature(\n input: string | Record<string, unknown>,\n signature: string,\n secret?: string,\n): boolean {\n const expected = generateSignature(input, secret);\n return expected === signature;\n}\n"],"mappings":";;;;;;;;;;;;AAYA,SAAgB,UAAU,OAAiD;CACzE,MAAM,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,MAAM;AACtE,QAAO,WAAW,SAAS,CAAC,OAAO,KAAK,CAAC,OAAO,MAAM;;;;;;;;AASxD,SAAgB,kBACd,OACA,QACQ;CACR,MAAM,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,MAAM;AAEtE,QAAO,WAAW,UADN,UAAU,QAAQ,IAAI,oBAAoB,GACtB,CAAC,OAAO,KAAK,CAAC,OAAO,MAAM;;;;;;;;;AAU7D,SAAgB,gBACd,OACA,WACA,QACS;AAET,QADiB,kBAAkB,OAAO,OAAO,KAC7B"}
@@ -0,0 +1,255 @@
1
+ import { t as __exportAll } from "./chunk-CkzbjWQW.mjs";
2
+ import { logWarn } from "@od-oneapp/shared/logs";
3
+
4
+ //#region src/tools/mcp/transports.ts
5
+ /**
6
+ * Pre-configured MCP transports for common use cases
7
+ */
8
+ const mcpTransports = {
9
+ filesystem: (rootPath = process.cwd()) => ({
10
+ name: "filesystem",
11
+ transport: {
12
+ type: "stdio",
13
+ command: "npx",
14
+ args: [
15
+ "-y",
16
+ "@modelcontextprotocol/server-filesystem",
17
+ rootPath
18
+ ]
19
+ }
20
+ }),
21
+ sqlite: (dbPath) => ({
22
+ name: "sqlite",
23
+ transport: {
24
+ type: "stdio",
25
+ command: "npx",
26
+ args: [
27
+ "-y",
28
+ "@modelcontextprotocol/server-sqlite",
29
+ dbPath
30
+ ]
31
+ }
32
+ }),
33
+ git: (repoPath = process.cwd()) => ({
34
+ name: "git",
35
+ transport: {
36
+ type: "stdio",
37
+ command: "npx",
38
+ args: [
39
+ "-y",
40
+ "@modelcontextprotocol/server-git",
41
+ repoPath
42
+ ]
43
+ }
44
+ }),
45
+ sse: (name, url) => ({
46
+ name,
47
+ transport: {
48
+ type: "sse",
49
+ url
50
+ }
51
+ }),
52
+ stdio: (name, command, args = []) => ({
53
+ name,
54
+ transport: {
55
+ type: "stdio",
56
+ command,
57
+ args
58
+ }
59
+ }),
60
+ http: (name, httpUrl, sessionId) => ({
61
+ name,
62
+ transport: {
63
+ type: "http",
64
+ url: httpUrl,
65
+ sessionId
66
+ }
67
+ }),
68
+ perplexityAsk: () => ({
69
+ name: "perplexity-ask",
70
+ transport: {
71
+ type: "stdio",
72
+ command: "npx",
73
+ args: ["-y", "server-perplexity-ask"]
74
+ }
75
+ })
76
+ };
77
+
78
+ //#endregion
79
+ //#region src/tools/mcp/environment.ts
80
+ /**
81
+ * @fileoverview environment.ts
82
+ */
83
+ var environment_exports = /* @__PURE__ */ __exportAll({
84
+ discoverMCPServersFromEnvironment: () => discoverMCPServersFromEnvironment,
85
+ getMCPServers: () => getMCPServers,
86
+ validateMCPEnvironment: () => validateMCPEnvironment
87
+ });
88
+ /**
89
+ * Discover MCP servers from environment variables
90
+ *
91
+ * Environment variable format:
92
+ * - MCP_SERVERS=filesystem,git,perplexity # Enable specific servers
93
+ * - MCP_FILESYSTEM_PATH=/workspace # Configure filesystem path
94
+ * - MCP_CUSTOM_SQLITE_DB=/data/app.db # Configure sqlite database
95
+ * - MCP_CUSTOM_SSE_URL=http://example.com # Configure SSE server
96
+ * - MCP_CUSTOM_HTTP_URL=http://example.com # Configure HTTP server
97
+ */
98
+ function discoverMCPServersFromEnvironment(config = {}) {
99
+ const { prefix = "MCP_", includeDefaults = true, basePath = process.cwd() } = config;
100
+ const allowDefaults = !(process.env.NODE_ENV === "production") || process.env[`${prefix}ALLOW_DEFAULTS`] === "true";
101
+ const servers = [];
102
+ const enabledServers = getEnabledServers(prefix);
103
+ if (includeDefaults && !allowDefaults) logWarn("MCP default servers are disabled in production unless MCP_ALLOW_DEFAULTS=true", { operation: "mcp_default_servers_blocked" });
104
+ if (includeDefaults && allowDefaults) {
105
+ if (enabledServers.includes("filesystem")) {
106
+ const fsPath = process.env[`${prefix}FILESYSTEM_PATH`] || basePath;
107
+ servers.push(mcpTransports.filesystem(fsPath));
108
+ }
109
+ if (enabledServers.includes("git")) {
110
+ const gitPath = process.env[`${prefix}GIT_PATH`] || basePath;
111
+ servers.push(mcpTransports.git(gitPath));
112
+ }
113
+ if (enabledServers.includes("perplexity") && process.env.PERPLEXITY_API_KEY) servers.push(mcpTransports.perplexityAsk());
114
+ if (enabledServers.includes("sqlite")) {
115
+ const dbPath = process.env[`${prefix}SQLITE_DB`];
116
+ if (dbPath) servers.push(mcpTransports.sqlite(dbPath));
117
+ }
118
+ }
119
+ const customServers = discoverCustomServers(prefix, enabledServers);
120
+ servers.push(...customServers);
121
+ return servers;
122
+ }
123
+ /**
124
+ * Get list of enabled servers from environment
125
+ */
126
+ function getEnabledServers(prefix) {
127
+ const serversEnv = process.env[`${prefix}SERVERS`];
128
+ if (!serversEnv) return [];
129
+ return serversEnv.split(",").map((s) => s.trim().toLowerCase()).filter((s) => s.length > 0);
130
+ }
131
+ /**
132
+ * Discover custom MCP servers from environment variables
133
+ */
134
+ function discoverCustomServers(prefix, enabledServers) {
135
+ const servers = [];
136
+ const processed = /* @__PURE__ */ new Set();
137
+ for (const [envKey, envValue] of Object.entries(process.env)) {
138
+ if (!envKey.startsWith(prefix) || !envValue) continue;
139
+ const match = envKey.match(new RegExp(`^${prefix}CUSTOM_(.+)_(URL|COMMAND|DB)$`));
140
+ if (!match) continue;
141
+ const [, serverName, configType] = match;
142
+ if (!serverName || !configType) continue;
143
+ const name = serverName.toLowerCase();
144
+ if (!enabledServers.includes(name) && !enabledServers.includes("*")) continue;
145
+ if (processed.has(name)) continue;
146
+ processed.add(name);
147
+ const server = createCustomServer(prefix, name, configType.toLowerCase(), envValue);
148
+ if (server) servers.push(server);
149
+ }
150
+ return servers;
151
+ }
152
+ /**
153
+ * Create custom server configuration
154
+ */
155
+ function createCustomServer(prefix, name, type, value) {
156
+ const envPrefix = `${prefix}CUSTOM_${name.toUpperCase()}_`;
157
+ switch (type) {
158
+ case "url": if (process.env[`${envPrefix}TYPE`]?.toLowerCase() === "sse" || value.includes("/sse")) return {
159
+ name: `custom-${name}`,
160
+ transport: {
161
+ type: "sse",
162
+ url: value,
163
+ headers: parseHeaders(process.env[`${envPrefix}HEADERS`])
164
+ }
165
+ };
166
+ else {
167
+ const sessionId = process.env[`${envPrefix}SESSION_ID`];
168
+ return {
169
+ name: `custom-${name}`,
170
+ transport: {
171
+ type: "http",
172
+ url: value,
173
+ sessionId
174
+ }
175
+ };
176
+ }
177
+ case "command": {
178
+ const args = process.env[`${envPrefix}ARGS`];
179
+ return {
180
+ name: `custom-${name}`,
181
+ transport: {
182
+ type: "stdio",
183
+ command: value,
184
+ args: args ? args.split(",").map((arg) => arg.trim()) : []
185
+ }
186
+ };
187
+ }
188
+ case "db": return mcpTransports.sqlite(value);
189
+ default:
190
+ logWarn(`Unknown custom server type: ${type} for server: ${name}`, {
191
+ serverType: type,
192
+ serverName: name,
193
+ operation: "mcp_environment_config"
194
+ });
195
+ return null;
196
+ }
197
+ }
198
+ /**
199
+ * Parse headers from environment variable
200
+ */
201
+ function parseHeaders(headersStr) {
202
+ if (!headersStr) return void 0;
203
+ try {
204
+ return JSON.parse(headersStr);
205
+ } catch {
206
+ const headers = {};
207
+ for (const pair of headersStr.split(",")) {
208
+ const [key, value] = pair.split("=").map((s) => s.trim());
209
+ if (key && value) headers[key] = value;
210
+ }
211
+ return Object.keys(headers).length > 0 ? headers : void 0;
212
+ }
213
+ }
214
+ /**
215
+ * Get MCP server configurations with environment discovery
216
+ * This combines explicit configs with environment-discovered servers
217
+ */
218
+ function getMCPServers(explicitConfigs = [], envConfig = {}) {
219
+ const discoveredConfigs = discoverMCPServersFromEnvironment(envConfig);
220
+ const allConfigs = [...explicitConfigs];
221
+ const explicitNames = new Set(explicitConfigs.map((c) => c.name));
222
+ for (const discovered of discoveredConfigs) if (!explicitNames.has(discovered.name)) allConfigs.push(discovered);
223
+ return allConfigs;
224
+ }
225
+ /**
226
+ * Validate environment configuration and provide helpful error messages
227
+ */
228
+ async function validateMCPEnvironment() {
229
+ const errors = [];
230
+ const warnings = [];
231
+ const recommendations = [];
232
+ const enabledServers = getEnabledServers("MCP_");
233
+ if (enabledServers.includes("perplexity") && !process.env.PERPLEXITY_API_KEY) errors.push("Perplexity server enabled but PERPLEXITY_API_KEY not set");
234
+ if (enabledServers.includes("sqlite") && !process.env.MCP_SQLITE_DB) warnings.push("SQLite server enabled but MCP_SQLITE_DB not set");
235
+ if (enabledServers.includes("filesystem")) {
236
+ const fsPath = process.env.MCP_FILESYSTEM_PATH || process.cwd();
237
+ try {
238
+ (await import("node:fs")).accessSync(fsPath);
239
+ } catch {
240
+ errors.push(`Filesystem server enabled but path not accessible: ${fsPath}`);
241
+ }
242
+ }
243
+ if (enabledServers.length === 0) recommendations.push("Consider enabling at least one MCP server via MCP_SERVERS environment variable");
244
+ if (!process.env.MCP_SERVERS) recommendations.push("Set MCP_SERVERS to control which servers are enabled (e.g., MCP_SERVERS=filesystem,git)");
245
+ return {
246
+ isValid: errors.length === 0,
247
+ errors,
248
+ warnings,
249
+ recommendations
250
+ };
251
+ }
252
+
253
+ //#endregion
254
+ export { mcpTransports as a, validateMCPEnvironment as i, environment_exports as n, getMCPServers as r, discoverMCPServersFromEnvironment as t };
255
+ //# sourceMappingURL=environment-CSoJb0SW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-CSoJb0SW.mjs","names":[],"sources":["../src/tools/mcp/transports.ts","../src/tools/mcp/environment.ts"],"sourcesContent":["/**\n * @fileoverview transports.ts\n */\n\nimport type { MCPClientConfig } from './client';\n\n/**\n * Pre-configured MCP transports for common use cases\n */\nexport const mcpTransports = {\n /**\n * Filesystem MCP server\n * Allows AI to read/write files in specified directory\n */\n filesystem: (rootPath: string = process.cwd()): MCPClientConfig => ({\n name: 'filesystem',\n transport: {\n type: 'stdio',\n command: 'npx',\n args: ['-y', '@modelcontextprotocol/server-filesystem', rootPath],\n },\n }),\n\n /**\n * SQLite MCP server\n * Allows AI to query SQLite databases\n */\n sqlite: (dbPath: string): MCPClientConfig => ({\n name: 'sqlite',\n transport: {\n type: 'stdio',\n command: 'npx',\n args: ['-y', '@modelcontextprotocol/server-sqlite', dbPath],\n },\n }),\n\n /**\n * Git MCP server\n * Allows AI to read git repository information\n */\n git: (repoPath: string = process.cwd()): MCPClientConfig => ({\n name: 'git',\n transport: {\n type: 'stdio',\n command: 'npx',\n args: ['-y', '@modelcontextprotocol/server-git', repoPath],\n },\n }),\n\n /**\n * Custom SSE transport\n */\n sse: (name: string, url: string): MCPClientConfig => ({\n name,\n transport: {\n type: 'sse',\n url,\n },\n }),\n\n /**\n * Custom stdio transport\n */\n stdio: (name: string, command: string, args: string[] = []): MCPClientConfig => ({\n name,\n transport: {\n type: 'stdio',\n command,\n args,\n },\n }),\n\n /**\n * HTTP transport using StreamableHTTPClientTransport\n */\n http: (name: string, httpUrl: string, sessionId?: string): MCPClientConfig => ({\n name,\n transport: {\n type: 'http',\n url: httpUrl,\n sessionId,\n },\n }),\n\n /**\n * Perplexity Ask MCP server\n * Allows AI to perform live web searches using Perplexity's Sonar API\n * Requires PERPLEXITY_API_KEY environment variable\n */\n perplexityAsk: (): MCPClientConfig => ({\n name: 'perplexity-ask',\n transport: {\n type: 'stdio',\n command: 'npx',\n // Use locally installed package if available, otherwise download with -y flag\n args: ['-y', 'server-perplexity-ask'],\n },\n }),\n};\n","/**\n * @fileoverview environment.ts\n */\n\nimport { logWarn } from '@repo/shared/logs';\n\nimport { mcpTransports } from './transports';\n\nimport type { MCPClientConfig } from './client';\n\n/**\n * Environment variable patterns for MCP server discovery\n */\nexport interface MCPEnvironmentConfig {\n /** Environment variable prefix for MCP servers (default: 'MCP_') */\n prefix?: string;\n /** Whether to include default servers (filesystem, git, etc.) */\n includeDefaults?: boolean;\n /** Base path for filesystem server (default: process.cwd()) */\n basePath?: string;\n}\n\n/**\n * Parsed MCP server configuration from environment\n */\nexport interface ParsedMCPServer {\n name: string;\n type: 'stdio' | 'sse' | 'http';\n url?: string;\n command?: string;\n args?: string[];\n enabled: boolean;\n}\n\n/**\n * Discover MCP servers from environment variables\n *\n * Environment variable format:\n * - MCP_SERVERS=filesystem,git,perplexity # Enable specific servers\n * - MCP_FILESYSTEM_PATH=/workspace # Configure filesystem path\n * - MCP_CUSTOM_SQLITE_DB=/data/app.db # Configure sqlite database\n * - MCP_CUSTOM_SSE_URL=http://example.com # Configure SSE server\n * - MCP_CUSTOM_HTTP_URL=http://example.com # Configure HTTP server\n */\nexport function discoverMCPServersFromEnvironment(\n config: MCPEnvironmentConfig = {},\n): MCPClientConfig[] {\n const { prefix = 'MCP_', includeDefaults = true, basePath = process.cwd() } = config;\n const isProduction = process.env.NODE_ENV === 'production';\n const allowDefaults = !isProduction || process.env[`${prefix}ALLOW_DEFAULTS`] === 'true';\n\n const servers: MCPClientConfig[] = [];\n const enabledServers = getEnabledServers(prefix);\n\n // Add default servers if enabled\n if (includeDefaults && !allowDefaults) {\n logWarn('MCP default servers are disabled in production unless MCP_ALLOW_DEFAULTS=true', {\n operation: 'mcp_default_servers_blocked',\n });\n }\n\n if (includeDefaults && allowDefaults) {\n if (enabledServers.includes('filesystem')) {\n const fsPath = process.env[`${prefix}FILESYSTEM_PATH`] || basePath;\n servers.push(mcpTransports.filesystem(fsPath));\n }\n\n if (enabledServers.includes('git')) {\n const gitPath = process.env[`${prefix}GIT_PATH`] || basePath;\n servers.push(mcpTransports.git(gitPath));\n }\n\n if (enabledServers.includes('perplexity') && process.env.PERPLEXITY_API_KEY) {\n servers.push(mcpTransports.perplexityAsk());\n }\n\n if (enabledServers.includes('sqlite')) {\n const dbPath = process.env[`${prefix}SQLITE_DB`];\n if (dbPath) {\n servers.push(mcpTransports.sqlite(dbPath));\n }\n }\n }\n\n // Discover custom servers from environment\n const customServers = discoverCustomServers(prefix, enabledServers);\n servers.push(...customServers);\n\n return servers;\n}\n\n/**\n * Get list of enabled servers from environment\n */\nfunction getEnabledServers(prefix: string): string[] {\n const serversEnv = process.env[`${prefix}SERVERS`];\n if (!serversEnv) {\n return [];\n }\n\n return serversEnv\n .split(',')\n .map(s => s.trim().toLowerCase())\n .filter(s => s.length > 0);\n}\n\n/**\n * Discover custom MCP servers from environment variables\n */\nfunction discoverCustomServers(prefix: string, enabledServers: string[]): MCPClientConfig[] {\n const servers: MCPClientConfig[] = [];\n const processed = new Set<string>();\n\n // Look for custom server definitions\n for (const [envKey, envValue] of Object.entries(process.env)) {\n if (!envKey.startsWith(prefix) || !envValue) continue;\n\n // Parse pattern: MCP_CUSTOM_<NAME>_<TYPE>\n\n const match = envKey.match(new RegExp(`^${prefix}CUSTOM_(.+)_(URL|COMMAND|DB)$`));\n if (!match) continue;\n\n const [, serverName, configType] = match;\n if (!serverName || !configType) continue;\n const name = serverName.toLowerCase();\n\n // Skip if not enabled\n if (!enabledServers.includes(name) && !enabledServers.includes('*')) {\n continue;\n }\n\n // Skip if already processed\n if (processed.has(name)) continue;\n processed.add(name);\n\n const server = createCustomServer(prefix, name, configType.toLowerCase(), envValue);\n if (server) {\n servers.push(server);\n }\n }\n\n return servers;\n}\n\n/**\n * Create custom server configuration\n */\nfunction createCustomServer(\n prefix: string,\n name: string,\n type: string,\n value: string,\n): MCPClientConfig | null {\n const envPrefix = `${prefix}CUSTOM_${name.toUpperCase()}_`;\n\n switch (type) {\n case 'url': {\n // Determine if SSE or HTTP based on URL or explicit type\n const transportType = process.env[`${envPrefix}TYPE`]?.toLowerCase();\n\n if (transportType === 'sse' || value.includes('/sse')) {\n return {\n name: `custom-${name}`,\n transport: {\n type: 'sse',\n url: value,\n headers: parseHeaders(process.env[`${envPrefix}HEADERS`]),\n },\n };\n } else {\n // Default to HTTP transport\n const sessionId = process.env[`${envPrefix}SESSION_ID`];\n return {\n name: `custom-${name}`,\n transport: {\n type: 'http',\n url: value,\n sessionId,\n },\n };\n }\n }\n\n case 'command': {\n const args = process.env[`${envPrefix}ARGS`];\n return {\n name: `custom-${name}`,\n transport: {\n type: 'stdio',\n command: value,\n args: args ? args.split(',').map(arg => arg.trim()) : [],\n },\n };\n }\n\n case 'db': {\n // Assume SQLite for database paths\n return mcpTransports.sqlite(value);\n }\n\n default:\n logWarn(`Unknown custom server type: ${type} for server: ${name}`, {\n serverType: type,\n serverName: name,\n operation: 'mcp_environment_config',\n });\n return null;\n }\n}\n\n/**\n * Parse headers from environment variable\n */\nfunction parseHeaders(headersStr?: string): Record<string, string> | undefined {\n if (!headersStr) return undefined;\n\n try {\n return JSON.parse(headersStr);\n } catch {\n // Try simple key=value,key=value format\n const headers: Record<string, string> = {};\n for (const pair of headersStr.split(',')) {\n const [key, value] = pair.split('=').map(s => s.trim());\n if (key && value) {\n headers[key] = value;\n }\n }\n return Object.keys(headers).length > 0 ? headers : undefined;\n }\n}\n\n/**\n * Get MCP server configurations with environment discovery\n * This combines explicit configs with environment-discovered servers\n */\nexport function getMCPServers(\n explicitConfigs: MCPClientConfig[] = [],\n envConfig: MCPEnvironmentConfig = {},\n): MCPClientConfig[] {\n const discoveredConfigs = discoverMCPServersFromEnvironment(envConfig);\n\n // Merge explicit and discovered configs, with explicit taking precedence\n const allConfigs = [...explicitConfigs];\n const explicitNames = new Set(explicitConfigs.map(c => c.name));\n\n for (const discovered of discoveredConfigs) {\n if (!explicitNames.has(discovered.name)) {\n allConfigs.push(discovered);\n }\n }\n\n return allConfigs;\n}\n\n/**\n * Validate environment configuration and provide helpful error messages\n */\nexport async function validateMCPEnvironment(): Promise<{\n isValid: boolean;\n errors: string[];\n warnings: string[];\n recommendations: string[];\n}> {\n const errors: string[] = [];\n const warnings: string[] = [];\n const recommendations: string[] = [];\n\n // Check for required environment variables\n const enabledServers = getEnabledServers('MCP_');\n\n if (enabledServers.includes('perplexity') && !process.env.PERPLEXITY_API_KEY) {\n errors.push('Perplexity server enabled but PERPLEXITY_API_KEY not set');\n }\n\n if (enabledServers.includes('sqlite') && !process.env.MCP_SQLITE_DB) {\n warnings.push('SQLite server enabled but MCP_SQLITE_DB not set');\n }\n\n // Check for filesystem access\n if (enabledServers.includes('filesystem')) {\n const fsPath = process.env.MCP_FILESYSTEM_PATH || process.cwd();\n try {\n // Use dynamic import for Node.js 22 async compatibility\n const fs = await import('node:fs');\n fs.accessSync(fsPath);\n } catch {\n errors.push(`Filesystem server enabled but path not accessible: ${fsPath}`);\n }\n }\n\n // Provide recommendations\n if (enabledServers.length === 0) {\n recommendations.push(\n 'Consider enabling at least one MCP server via MCP_SERVERS environment variable',\n );\n }\n\n if (!process.env.MCP_SERVERS) {\n recommendations.push(\n 'Set MCP_SERVERS to control which servers are enabled (e.g., MCP_SERVERS=filesystem,git)',\n );\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings,\n recommendations,\n };\n}\n"],"mappings":"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"}