@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
package/dist/tools.mjs ADDED
@@ -0,0 +1,1921 @@
1
+ import { t as __exportAll } from "./chunk-CkzbjWQW.mjs";
2
+ import { $ as generateObject, Ft as tool, et as generateText } from "./ai-runtime-CDzQztTt.mjs";
3
+ import { a as createTimeoutAbort, c as createToolFactory, d as wrapToolHandler, i as combineAbortSignals, l as createToolWithContext, n as executeWithFallback, o as isAbortError, r as ToolAbortError, s as withAbortHandling, t as executeToolSafely, u as createTools } from "./tool-safety-DXtYDXod.mjs";
4
+ import { createBashTool, createComputerTool } from "./tools-computer.mjs";
5
+ import { _ as MCPErrorUtils, a as MCPHealthStatus, c as MCPTransportError, d as createMCPToolsFromConfigs, f as createTransportFromConfig, g as MCPErrorHandlerFactory, h as AISDKCompatibleMCPError, i as MCPHealthMonitor, m as withRetryAndTimeout, n as DEFAULT_RETRY_CONFIG, o as MCPRequestManager, p as globalMCPHealthMonitor, r as MCPConnectionError, s as MCPRetryableError, t as DEFAULT_HEALTH_CHECK_CONFIG, u as createMCPToolsForRequest } from "./client-CpacYDIE.mjs";
6
+ import { C as testMCPConnectivity, D as createMCPStreamLifecycleManager, E as StreamLifecyclePhase, S as createMCPToolsWithStreamLifecycle, T as MCPStreamLifecycleManager, _ as MCPConnectionManager, a as createEdgeMCPTools, b as createMCPToolsForStreamText, c as edgeMCPTransports, d as DEFAULT_POOL_CONFIG, f as MCPConnectionPool, g as globalMCPToolCache, h as MCPToolCache, i as selectTransportForUseCase, l as getEdgeCompatibleConfigs, m as DEFAULT_CACHE_CONFIG, n as globalTransportSelector, o as createSmartMCPTools, p as globalMCPConnectionPool, r as selectOptimalTransport, s as discoverEdgeMCPServers, t as MCPTransportSelector, u as isEdgeRuntime, v as createPooledMCPTools, w as DEFAULT_STREAM_LIFECYCLE_CONFIG, x as createMCPToolsWithDefaults, y as getGlobalConnectionManager } from "./transport-selector-D-Ib05X1.mjs";
7
+ import { a as mcpTransports, i as validateMCPEnvironment, r as getMCPServers, t as discoverMCPServersFromEnvironment } from "./environment-CSoJb0SW.mjs";
8
+ import { $ as AgentDispatchOutputSchema, A as writeSkill, B as FINISHING_BRANCH_SYSTEM_PROMPT, C as runSubagentDev, D as testSkill, E as systematicDebug, F as CONDITION_BASED_WAITING_SYSTEM_PROMPT, G as SHARING_SKILLS_SYSTEM_PROMPT, H as PLANNER_SYSTEM_PROMPT, I as DEFENSE_IN_DEPTH_SYSTEM_PROMPT, J as TDD_SYSTEM_PROMPT, K as SUBAGENT_DRIVEN_DEV_SYSTEM_PROMPT, L as DESIGN_REVIEW_SYSTEM_PROMPT, M as BRAINSTORM_SYSTEM_PROMPT, N as CODE_REVIEW_SYSTEM_PROMPT, O as traceRootCause, P as COMMIT_ANALYSIS_SYSTEM_PROMPT, Q as systemPrompts, R as DISPATCHING_AGENTS_SYSTEM_PROMPT, S as reviewDesign, T as shareSkill, U as RECEIVING_CODE_REVIEW_SYSTEM_PROMPT, V as GIT_WORKTREE_SYSTEM_PROMPT, W as ROOT_CAUSE_TRACING_SYSTEM_PROMPT, X as USING_SUPERPOWERS_SYSTEM_PROMPT, Y as TESTING_SKILLS_SYSTEM_PROMPT, Z as WRITING_SKILLS_SYSTEM_PROMPT, _ as planningTools, _t as SystematicDebuggingOutputSchema, a as codeReviewTools, at as CodeReviewResponseOutputSchema, b as refineRequirements, c as detectAntiPatterns, ct as DesignReviewOutputSchema, d as finishBranch, dt as RootCauseTracingOutputSchema, et as AntiPatternOutputSchema, f as gitTools, ft as SkillShareOutputSchema, g as metaTools, gt as SuperpowersIntroOutputSchema, h as manageWorktree, ht as SubagentDevOutputSchema, i as analyzeDefenseInDepth, it as CodeReviewOutputSchema, j as ANTI_PATTERN_SYSTEM_PROMPT, k as workflowTools, l as dispatchAgents, lt as PlanExecutionOutputSchema, m as introduceSuperpowers, mt as SkillWriteOutputSchema, n as analyzeAsyncPatterns, nt as BrainstormOutputSchema, o as consultArchitect, ot as CommitAnalysisOutputSchema, p as initSuperpowers, pt as SkillTestOutputSchema, q as SYSTEMATIC_DEBUGGING_SYSTEM_PROMPT, r as analyzeCommit, rt as BranchFinishOutputSchema, s as debuggingTools, st as DefenseInDepthOutputSchema, t as allSuperpowerTools, tt as AsyncPatternsOutputSchema, u as executePlan, ut as PlanOutputSchema, v as processCodeReview, vt as TDDOutputSchema, w as runTDDCycle, x as reviewCode, y as qualityTools, yt as WorktreeOutputSchema, z as EXECUTING_PLANS_SYSTEM_PROMPT } from "./tools-BuS2Uv0q.mjs";
9
+ import { z } from "zod";
10
+ import { z as z$1 } from "zod/v4";
11
+ import { existsSync, promises } from "node:fs";
12
+ import path from "node:path";
13
+ import "server-only";
14
+
15
+ //#region src/tools/simple-factory.ts
16
+ /**
17
+ * @fileoverview Simple Tool Factory
18
+ *
19
+ * Utilities for creating tools with pre-built Zod schemas.
20
+ * For JSON-to-Zod schema conversion, use {@link createJsonSchemaTool} from `tools/generic/json-schema-tool`.
21
+ *
22
+ * @module @od-oneapp/ai-platform/tools/simple-factory
23
+ */
24
+ /**
25
+ * Creates a tool from a pre-built Zod schema.
26
+ *
27
+ * For creating tools from JSON-style schema definitions,
28
+ * use {@link createJsonSchemaTool} from `tools/generic/json-schema-tool`.
29
+ *
30
+ * @param description - Tool description.
31
+ * @param schema - Zod schema instance.
32
+ * @param execute - Execution function.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * const searchTool = createToolFromZodSchema(
37
+ * 'Search the web for information',
38
+ * z.object({ query: z.string() }),
39
+ * async ({ query }) => fetch(`/search?q=${query}`)
40
+ * );
41
+ * ```
42
+ */
43
+ function createToolFromZodSchema(description, schema, execute) {
44
+ return tool({
45
+ description,
46
+ inputSchema: schema,
47
+ execute
48
+ });
49
+ }
50
+ /**
51
+ * @deprecated Use `createToolFromZodSchema` instead.
52
+ * This alias exists for backward compatibility.
53
+ */
54
+ const createSimpleTool = createToolFromZodSchema;
55
+
56
+ //#endregion
57
+ //#region src/tools/validation-wrapper.ts
58
+ /**
59
+ * Wraps a tool with an additional runtime validation step.
60
+ *
61
+ * Vercel AI SDK v6 tools already validate input against Zod schemas.
62
+ * Use this wrapper when you need custom business-rule validation
63
+ * (e.g., authorization checks, rate limiting, cross-field constraints)
64
+ * that runs before the tool's execute function.
65
+ *
66
+ * @param t - The tool to wrap
67
+ * @param options - Validation options
68
+ * @param options.validate - Custom validator returning true/false (sync or async)
69
+ * @returns A new tool that validates input before executing
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * const safeTool = withValidation(deleteTool, {
74
+ * validate: (input) => input.userId === currentUser.id,
75
+ * });
76
+ * ```
77
+ */
78
+ function withValidation(t, options = {}) {
79
+ if (!options.validate) return t;
80
+ const wrappedTool = { ...t };
81
+ const wrappedExecute = (input, executionOptions) => {
82
+ const { validate } = options;
83
+ const run = () => {
84
+ if (!t.execute) throw new Error("Strict tool wrapper requires a tool execute function");
85
+ return t.execute(input, executionOptions);
86
+ };
87
+ const isAsyncIterable = (value) => {
88
+ return typeof value === "object" && value !== null && Symbol.asyncIterator in value;
89
+ };
90
+ if (!validate) return run();
91
+ const validationResult = validate(input);
92
+ const isPromiseLike = (value) => typeof value?.then === "function";
93
+ if (isPromiseLike(validationResult)) return (async () => {
94
+ if (!await validationResult) throw new Error(`Strict validation failed for tool ${t.description?.slice(0, 20)}...`);
95
+ const result = run();
96
+ if (isAsyncIterable(result)) throw new Error("Async validation is not supported for streaming tool results");
97
+ return result;
98
+ })();
99
+ if (!validationResult) throw new Error(`Strict validation failed for tool ${t.description?.slice(0, 20)}...`);
100
+ const result = run();
101
+ if (isAsyncIterable(result)) return result;
102
+ return result;
103
+ };
104
+ wrappedTool.execute = wrappedExecute;
105
+ return wrappedTool;
106
+ }
107
+
108
+ //#endregion
109
+ //#region src/tools/generic/json-schema-tool.ts
110
+ /**
111
+ * @fileoverview JSON Schema tool creation utilities.
112
+ *
113
+ * Creates AI SDK tools from plain JSON-style schema definitions
114
+ * (as opposed to pre-built Zod schemas). Useful for tools defined
115
+ * at runtime or loaded from configuration files.
116
+ *
117
+ * @module @od-oneapp/ai-platform/tools/generic/json-schema-tool
118
+ */
119
+ /**
120
+ * Creates a Zod schema from a parameter definition.
121
+ */
122
+ function parameterToZod(param) {
123
+ let schema;
124
+ switch (param.type) {
125
+ case "string":
126
+ if (param.enum) schema = z.enum(param.enum);
127
+ else schema = z.string();
128
+ break;
129
+ case "number": {
130
+ let numSchema = z.number();
131
+ if (param.minimum !== void 0) numSchema = numSchema.min(param.minimum);
132
+ if (param.maximum !== void 0) numSchema = numSchema.max(param.maximum);
133
+ schema = numSchema;
134
+ break;
135
+ }
136
+ case "boolean":
137
+ schema = z.boolean();
138
+ break;
139
+ case "array":
140
+ schema = z.array(param.items ? parameterToZod(param.items) : z.unknown());
141
+ break;
142
+ case "object":
143
+ if (param.properties) {
144
+ const shape = {};
145
+ for (const [key, prop] of Object.entries(param.properties)) shape[key] = parameterToZod(prop);
146
+ schema = z.object(shape);
147
+ } else schema = z.record(z.string(), z.unknown());
148
+ break;
149
+ default: schema = z.unknown();
150
+ }
151
+ return schema.describe(param.description);
152
+ }
153
+ /**
154
+ * Creates a Zod schema from a dynamic tool schema.
155
+ */
156
+ function schemaToZod(schema) {
157
+ const shape = {};
158
+ for (const [name, param] of Object.entries(schema.parameters)) {
159
+ const zodParam = parameterToZod(param);
160
+ shape[name] = schema.required?.includes(name) ? zodParam : zodParam.optional();
161
+ }
162
+ return z.object(shape);
163
+ }
164
+ /**
165
+ * Creates an AI SDK tool from a JSON-style schema definition.
166
+ *
167
+ * Converts the plain-object schema to Zod internally, so callers
168
+ * don't need to depend on Zod directly. For pre-built Zod schemas,
169
+ * use {@link createToolFromZodSchema} from `tools/simple-factory` instead.
170
+ *
171
+ * @param schema - Tool schema with name, description, and parameter definitions
172
+ * @param execute - Async function that receives validated params and returns a result
173
+ * @returns AI SDK tool instance
174
+ *
175
+ * @example
176
+ * ```ts
177
+ * const calcTool = createJsonSchemaTool({
178
+ * name: 'calculate',
179
+ * description: 'Perform calculations',
180
+ * parameters: {
181
+ * operation: { type: 'string', description: 'Operation', enum: ['add', 'sub'] },
182
+ * a: { type: 'number', description: 'First number' },
183
+ * b: { type: 'number', description: 'Second number' },
184
+ * },
185
+ * required: ['operation', 'a', 'b'],
186
+ * }, async ({ operation, a, b }) => {
187
+ * return operation === 'add' ? a + b : a - b;
188
+ * });
189
+ * ```
190
+ */
191
+ function createJsonSchemaTool(schema, execute) {
192
+ return tool({
193
+ description: schema.description,
194
+ inputSchema: schemaToZod(schema),
195
+ execute: async (params) => execute(params)
196
+ });
197
+ }
198
+ /**
199
+ * Registry for managing tools created from JSON schema definitions.
200
+ *
201
+ * Stores tools and their schemas by name, supporting lookup, filtering,
202
+ * and bulk retrieval. For tools created from Zod schemas, use them directly
203
+ * without a registry.
204
+ */
205
+ var JsonSchemaToolRegistry = class {
206
+ tools = /* @__PURE__ */ new Map();
207
+ schemas = /* @__PURE__ */ new Map();
208
+ /**
209
+ * Registers a tool with schema.
210
+ */
211
+ register(schema, execute) {
212
+ const t = createJsonSchemaTool(schema, execute);
213
+ this.tools.set(schema.name, t);
214
+ this.schemas.set(schema.name, schema);
215
+ }
216
+ /**
217
+ * Gets a tool by name.
218
+ */
219
+ get(name) {
220
+ return this.tools.get(name);
221
+ }
222
+ /**
223
+ * Gets schema by name.
224
+ */
225
+ getSchema(name) {
226
+ return this.schemas.get(name);
227
+ }
228
+ /**
229
+ * Gets all tools.
230
+ */
231
+ all() {
232
+ return Object.fromEntries(this.tools);
233
+ }
234
+ /**
235
+ * Gets all schemas.
236
+ */
237
+ allSchemas() {
238
+ return Array.from(this.schemas.values());
239
+ }
240
+ /**
241
+ * Filters tools by pattern.
242
+ * Note: String patterns are escaped to prevent ReDoS attacks.
243
+ * To use regex patterns, pass a RegExp object directly.
244
+ */
245
+ filter(pattern) {
246
+ const regex = typeof pattern === "string" ? new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")) : pattern;
247
+ const filtered = {};
248
+ for (const [name, t] of this.tools) if (regex.test(name)) filtered[name] = t;
249
+ return filtered;
250
+ }
251
+ /**
252
+ * Removes a tool.
253
+ */
254
+ remove(name) {
255
+ this.schemas.delete(name);
256
+ return this.tools.delete(name);
257
+ }
258
+ /**
259
+ * Clears all tools.
260
+ */
261
+ clear() {
262
+ this.tools.clear();
263
+ this.schemas.clear();
264
+ }
265
+ };
266
+ /**
267
+ * Creates a tool that can be dynamically enabled/disabled.
268
+ *
269
+ * @param baseTool - The base tool
270
+ * @param isEnabled - Function to check if tool is enabled
271
+ * @returns Conditional tool
272
+ */
273
+ function createConditionalTool(baseTool, isEnabled) {
274
+ const { execute } = baseTool;
275
+ return {
276
+ ...baseTool,
277
+ execute: execute ? async (...args) => {
278
+ if (!await isEnabled()) return { error: "Tool is currently disabled" };
279
+ return execute(...args);
280
+ } : void 0
281
+ };
282
+ }
283
+ /**
284
+ * Composes multiple tools into a single tool with routing.
285
+ *
286
+ * @param tools - Map of route patterns to tools
287
+ * @param router - Function to determine route from input
288
+ * @returns Composed tool
289
+ */
290
+ function composeTools(tools, router) {
291
+ return tool({
292
+ description: `Composed tool with routes: ${Object.keys(tools).join(", ")}`,
293
+ inputSchema: z.object({}).passthrough(),
294
+ execute: async (input, options) => {
295
+ const typedInput = input;
296
+ const route = router(typedInput);
297
+ const selectedTool = tools[route];
298
+ if (!selectedTool) return { error: `Unknown route: ${route}` };
299
+ return selectedTool.execute?.(typedInput, options);
300
+ }
301
+ });
302
+ }
303
+
304
+ //#endregion
305
+ //#region src/tools/generic/web-search.ts
306
+ /**
307
+ * Create a web search tool using an Exa API client.
308
+ *
309
+ * @param config - Exa search configuration
310
+ * @param exaClient - Exa client instance (from `exa-js`)
311
+ * @returns AI SDK tool for web search via Exa
312
+ *
313
+ * @example
314
+ * ```ts
315
+ * import Exa from 'exa-js';
316
+ * import { createExaSearchTool } from '@od-oneapp/ai-platform/tools';
317
+ *
318
+ * const exa = new Exa(process.env.EXA_API_KEY!);
319
+ * const searchTool = createExaSearchTool(
320
+ * { apiKey: process.env.EXA_API_KEY!, numResults: 5 },
321
+ * exa,
322
+ * );
323
+ * ```
324
+ */
325
+ function createExaSearchTool(config, exaClient) {
326
+ return tool({
327
+ description: "Search the web for up-to-date information using Exa",
328
+ inputSchema: z$1.object({ query: z$1.string().min(1).max(100).describe("The search query") }),
329
+ execute: async ({ query }) => {
330
+ const { results } = await exaClient.searchAndContents(query, {
331
+ livecrawl: config.livecrawl ?? "always",
332
+ numResults: config.numResults ?? 3
333
+ });
334
+ return results.map((result) => ({
335
+ title: result.title,
336
+ url: result.url,
337
+ content: result.text?.slice(0, 1e3) ?? result.title ?? "",
338
+ publishedDate: result.publishedDate
339
+ }));
340
+ }
341
+ });
342
+ }
343
+ /**
344
+ * Create a generic web search tool with a custom search function.
345
+ *
346
+ * @param searchFunction - Custom search implementation
347
+ * @returns AI SDK tool for web search
348
+ *
349
+ * @example
350
+ * ```ts
351
+ * import { createWebSearchTool } from '@od-oneapp/ai-platform/tools';
352
+ *
353
+ * const tool = createWebSearchTool(async (query) => {
354
+ * const resp = await fetch(`https://api.search.com?q=${query}`);
355
+ * return resp.json();
356
+ * });
357
+ * ```
358
+ */
359
+ function createWebSearchTool(searchFunction) {
360
+ return tool({
361
+ description: "Search the web for up-to-date information",
362
+ inputSchema: z$1.object({ query: z$1.string().min(1).max(100).describe("The search query") }),
363
+ execute: async ({ query }) => {
364
+ return searchFunction(query);
365
+ }
366
+ });
367
+ }
368
+ /**
369
+ * Pre-configured search tool factories for common APIs.
370
+ */
371
+ const webSearchTools = {
372
+ exa: (exaClient, options) => createExaSearchTool(options ?? { apiKey: "" }, exaClient),
373
+ custom: (searchFunction) => createWebSearchTool(searchFunction)
374
+ };
375
+
376
+ //#endregion
377
+ //#region src/tools/generic/web-search-tool.ts
378
+ /**
379
+ * @fileoverview Pre-configured web search tool.
380
+ *
381
+ * Drop-in replacement for the legacy @od-oneapp/ai webSearchTool.
382
+ * Auto-configures from environment (EXA_API_KEY).
383
+ */
384
+ let cachedExaTool = null;
385
+ const webSearchInputSchema = z.object({
386
+ query: z.string().min(1).describe("Search query"),
387
+ maxResults: z.number().int().positive().default(5).describe("Maximum results"),
388
+ timeRange: z.string().optional().describe("Time range filter"),
389
+ region: z.string().optional().describe("Geographic region")
390
+ });
391
+ /**
392
+ * Pre-configured web search tool that auto-detects Exa API key from environment.
393
+ *
394
+ * @example
395
+ * ```ts
396
+ * import { webSearchTool } from '@od-oneapp/ai-platform/tools';
397
+ *
398
+ * const result = await generateText({
399
+ * model,
400
+ * tools: { webSearch: webSearchTool },
401
+ * prompt: 'Search for...',
402
+ * });
403
+ * ```
404
+ */
405
+ const webSearchTool = tool({
406
+ description: "Search the web using Exa when configured",
407
+ inputSchema: webSearchInputSchema,
408
+ execute: async ({ query, maxResults, timeRange, region }) => {
409
+ const apiKey = process.env.EXA_API_KEY;
410
+ if (apiKey) {
411
+ if (!cachedExaTool) cachedExaTool = createExaSearchTool({
412
+ apiKey,
413
+ numResults: maxResults ?? 5
414
+ }, void 0);
415
+ try {
416
+ const timeoutMs = Number(process.env.AI_WEBSEARCH_TIMEOUT_MS) || 15e3;
417
+ const result = await Promise.race([cachedExaTool.execute?.({ query }, {}), new Promise((_resolve, reject) => setTimeout(() => reject(/* @__PURE__ */ new Error("Web search timeout")), timeoutMs))]);
418
+ const results = Array.isArray(result) ? result : [];
419
+ return {
420
+ query,
421
+ results,
422
+ totalResults: results.length,
423
+ timeRange,
424
+ region,
425
+ source: "exa"
426
+ };
427
+ } catch {}
428
+ }
429
+ return {
430
+ query,
431
+ results: [],
432
+ totalResults: 0,
433
+ timeRange,
434
+ region,
435
+ source: "none"
436
+ };
437
+ }
438
+ });
439
+
440
+ //#endregion
441
+ //#region src/tools/generic/tiptap-context.ts
442
+ const WORKSPACE_ROOT = process.cwd();
443
+ function resolveDocPath(relativePath) {
444
+ let current = WORKSPACE_ROOT;
445
+ while (true) {
446
+ const candidate = path.resolve(current, relativePath);
447
+ if (existsSync(candidate)) return candidate;
448
+ const parent = path.dirname(current);
449
+ if (parent === current) break;
450
+ current = parent;
451
+ }
452
+ return path.resolve(WORKSPACE_ROOT, relativePath);
453
+ }
454
+ const TIPTAP_DOC_PATH = resolveDocPath("docs/llms/tiptap.txt");
455
+ const DEFAULT_CHUNK_TOKEN_TARGET = 500;
456
+ const MAX_KEYWORDS = 12;
457
+ const MAX_RESULTS = 4;
458
+ const STOP_WORDS = new Set([
459
+ "the",
460
+ "and",
461
+ "for",
462
+ "with",
463
+ "that",
464
+ "this",
465
+ "from",
466
+ "your",
467
+ "into",
468
+ "when",
469
+ "tiptap",
470
+ "editor",
471
+ "docs",
472
+ "learn",
473
+ "guide",
474
+ "using",
475
+ "about",
476
+ "more",
477
+ "how",
478
+ "api",
479
+ "overview",
480
+ "getting",
481
+ "started"
482
+ ]);
483
+ const SYNONYM_MAP = {
484
+ react: [
485
+ "next",
486
+ "nextjs",
487
+ "jsx"
488
+ ],
489
+ next: ["nextjs", "react"],
490
+ collaboration: [
491
+ "yjs",
492
+ "multiplayer",
493
+ "awareness"
494
+ ],
495
+ ai: [
496
+ "assistant",
497
+ "generation",
498
+ "content"
499
+ ],
500
+ export: [
501
+ "conversion",
502
+ "markdown",
503
+ "html",
504
+ "json",
505
+ "docx"
506
+ ],
507
+ import: [
508
+ "conversion",
509
+ "docx",
510
+ "odt"
511
+ ],
512
+ formatting: [
513
+ "style",
514
+ "styling",
515
+ "theme",
516
+ "css"
517
+ ],
518
+ extension: [
519
+ "node",
520
+ "mark",
521
+ "custom extension"
522
+ ],
523
+ command: [
524
+ "keyboard",
525
+ "shortcut",
526
+ "action"
527
+ ],
528
+ schema: [
529
+ "nodes",
530
+ "marks",
531
+ "structure"
532
+ ]
533
+ };
534
+ const CODE_EXAMPLES = [
535
+ {
536
+ id: "react-basic-editor",
537
+ title: "Initialize TipTap in React",
538
+ description: "Create a basic TipTap editor using StarterKit and controlled content.",
539
+ language: "tsx",
540
+ keywords: [
541
+ "react",
542
+ "starterkit",
543
+ "basic"
544
+ ],
545
+ code: `import { useEditor, EditorContent } from '@tiptap/react';
546
+ import StarterKit from '@tiptap/starter-kit';
547
+
548
+ export function BasicEditor() {
549
+ const editor = useEditor({
550
+ extensions: [StarterKit],
551
+ content: '<p>Hello TipTap!</p>',
552
+ });
553
+
554
+ if (!editor) return null;
555
+
556
+ return <EditorContent editor={editor} />;
557
+ }`
558
+ },
559
+ {
560
+ id: "nextjs-ssr-setup",
561
+ title: "Use TipTap inside Next.js App Router",
562
+ description: "Wrap the TipTap editor in a Client Component and load configuration from the server.",
563
+ language: "tsx",
564
+ keywords: [
565
+ "next",
566
+ "react",
567
+ "app-router"
568
+ ],
569
+ code: `'use client';
570
+
571
+ import { Suspense } from 'react';
572
+ import dynamic from 'next/dynamic';
573
+
574
+ const RichEditor = dynamic(() => import('./RichEditor').then(m => m.RichEditor), {
575
+ ssr: false,
576
+ loading: () => <p>Loading editor\u2026</p>,
577
+ });
578
+
579
+ export default function TiptapCanvas() {
580
+ return (
581
+ <section className="space-y-6">
582
+ <h1 className="text-xl font-semibold">Canvas Document</h1>
583
+ <Suspense fallback={<p>Preparing TipTap\u2026</p>}>
584
+ <RichEditor enableAI enableToolbar />
585
+ </Suspense>
586
+ </section>
587
+ );
588
+ }
589
+ `
590
+ },
591
+ {
592
+ id: "collaboration-setup",
593
+ title: "Enable Collaboration Extensions",
594
+ description: "Configure the Collaboration and CollaborationCursor extensions with a shared Yjs document.",
595
+ language: "ts",
596
+ keywords: [
597
+ "collaboration",
598
+ "yjs",
599
+ "multiplayer"
600
+ ],
601
+ code: `import Collaboration from '@tiptap/extension-collaboration';
602
+ import CollaborationCursor from '@tiptap/extension-collaboration-cursor';
603
+ import { Doc } from 'yjs';
604
+
605
+ const ydoc = new Doc();
606
+
607
+ const editor = new Editor({
608
+ extensions: [
609
+ StarterKit,
610
+ Collaboration.configure({ document: ydoc }),
611
+ CollaborationCursor.configure({
612
+ provider: providerInstance,
613
+ user: { name: userName, color: userColor },
614
+ }),
615
+ ],
616
+ });
617
+ `
618
+ },
619
+ {
620
+ id: "content-export",
621
+ title: "Convert TipTap JSON to Markdown",
622
+ description: "Serialize the editor state to Markdown for downstream systems.",
623
+ language: "ts",
624
+ keywords: [
625
+ "export",
626
+ "markdown",
627
+ "json"
628
+ ],
629
+ code: `import { generateJSON } from '@tiptap/html';
630
+ import StarterKit from '@tiptap/starter-kit';
631
+
632
+ export function toMarkdown(html: string) {
633
+ const json = generateJSON(html, [StarterKit]);
634
+ return json.content?.map(block => block.text).join('\\n') ?? '';
635
+ }
636
+ `
637
+ }
638
+ ];
639
+ const CATEGORY_EXAMPLE_MAP = {
640
+ Overview: ["react-basic-editor"],
641
+ Docs: ["react-basic-editor", "nextjs-ssr-setup"],
642
+ "Editor Docs": ["react-basic-editor", "nextjs-ssr-setup"],
643
+ "Editor Extensions Docs": ["collaboration-setup"],
644
+ "Content AI Docs": ["react-basic-editor"],
645
+ "Import / Export Docs": ["content-export"],
646
+ "Commands Docs": ["react-basic-editor"]
647
+ };
648
+ let cachedIndexPromise = null;
649
+ function normalizeHeading(rawHeading) {
650
+ return rawHeading.replace(/^#+\s*/, "").trim();
651
+ }
652
+ function slugify(value) {
653
+ return value.toLowerCase().trim().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
654
+ }
655
+ function tokenize(text) {
656
+ return text.toLowerCase().replace(/[^a-z0-9\s]/g, " ").split(/\s+/).filter(Boolean);
657
+ }
658
+ function countTokens(text) {
659
+ return tokenize(text).length;
660
+ }
661
+ function extractKeywords(text, maxKeywords = MAX_KEYWORDS) {
662
+ const frequencies = /* @__PURE__ */ new Map();
663
+ for (const token of tokenize(text)) {
664
+ if (STOP_WORDS.has(token)) continue;
665
+ const synonyms = SYNONYM_MAP[token] ?? [];
666
+ frequencies.set(token, (frequencies.get(token) ?? 0) + 1);
667
+ for (const synonym of synonyms) frequencies.set(synonym, (frequencies.get(synonym) ?? 0) + .5);
668
+ }
669
+ return Array.from(frequencies.entries()).sort((a, b) => b[1] - a[1]).slice(0, maxKeywords).map(([token]) => token);
670
+ }
671
+ function createSummary(content) {
672
+ const bulletHighlights = content.split("\n").map((line) => line.trim()).filter(Boolean).filter((line) => /^[-*]/.test(line)).map((line) => line.replace(/^[-*]\s*/, "")).slice(0, 3);
673
+ if (bulletHighlights.length > 0) return bulletHighlights.join(" ");
674
+ return content.split(/(?<=[.!?])\s+/).map((sentence) => sentence.trim()).filter(Boolean).slice(0, 2).join(" ");
675
+ }
676
+ function parseTiptapSections(doc) {
677
+ const sections = [];
678
+ const lines = doc.split("\n");
679
+ let currentCategory = "Overview";
680
+ let currentTitle = "Overview";
681
+ let buffer = [];
682
+ function flush() {
683
+ if (buffer.length === 0) return;
684
+ const content = buffer.join("\n").trim();
685
+ if (!content) {
686
+ buffer = [];
687
+ return;
688
+ }
689
+ sections.push({
690
+ category: currentCategory,
691
+ title: currentTitle,
692
+ content: [content]
693
+ });
694
+ buffer = [];
695
+ }
696
+ for (const rawLine of lines) {
697
+ const line = rawLine.trimEnd();
698
+ if (/^#\s/.test(line)) {
699
+ flush();
700
+ currentCategory = "Overview";
701
+ currentTitle = normalizeHeading(line);
702
+ continue;
703
+ }
704
+ if (/^##\s/.test(line)) {
705
+ flush();
706
+ currentCategory = normalizeHeading(line);
707
+ currentTitle = currentCategory;
708
+ continue;
709
+ }
710
+ if (/^###\s/.test(line)) {
711
+ flush();
712
+ currentTitle = normalizeHeading(line);
713
+ continue;
714
+ }
715
+ buffer.push(line);
716
+ }
717
+ flush();
718
+ return sections;
719
+ }
720
+ function chunkSection(section, chunkTokenTarget = DEFAULT_CHUNK_TOKEN_TARGET) {
721
+ const chunks = [];
722
+ const paragraphs = section.content.join("\n").split(/\n{2,}/).map((paragraph) => paragraph.trim()).filter(Boolean);
723
+ let currentChunk = [];
724
+ let currentTokens = 0;
725
+ let chunkIndex = 0;
726
+ const pushChunk = () => {
727
+ if (currentChunk.length === 0) return;
728
+ const content = currentChunk.join("\n\n");
729
+ const tokens = countTokens(content);
730
+ const summary = createSummary(content);
731
+ const keywords = extractKeywords(content);
732
+ chunks.push({
733
+ id: `${slugify(section.category)}-${slugify(section.title)}-${chunkIndex}`,
734
+ category: section.category,
735
+ title: section.title,
736
+ content,
737
+ summary,
738
+ keywords,
739
+ tokens
740
+ });
741
+ chunkIndex += 1;
742
+ currentChunk = [];
743
+ currentTokens = 0;
744
+ };
745
+ for (const paragraph of paragraphs) {
746
+ const paragraphTokens = countTokens(paragraph);
747
+ if (currentTokens + paragraphTokens > chunkTokenTarget && currentChunk.length > 0) pushChunk();
748
+ currentChunk.push(paragraph);
749
+ currentTokens += paragraphTokens;
750
+ }
751
+ pushChunk();
752
+ return chunks;
753
+ }
754
+ async function buildTiptapDocIndex() {
755
+ const chunks = parseTiptapSections(await promises.readFile(TIPTAP_DOC_PATH, "utf8")).flatMap((section) => chunkSection(section));
756
+ const categories = {};
757
+ for (const chunk of chunks) {
758
+ const categoryEntry = categories[chunk.category] ?? {
759
+ chunkCount: 0,
760
+ keywords: []
761
+ };
762
+ categoryEntry.chunkCount += 1;
763
+ categoryEntry.keywords = Array.from(new Set([...categoryEntry.keywords, ...chunk.keywords])).slice(0, MAX_KEYWORDS);
764
+ categories[chunk.category] = categoryEntry;
765
+ }
766
+ return {
767
+ chunks,
768
+ categories
769
+ };
770
+ }
771
+ async function getTiptapDocIndex() {
772
+ if (!cachedIndexPromise) cachedIndexPromise = (async () => {
773
+ try {
774
+ return await buildTiptapDocIndex();
775
+ } catch (error) {
776
+ cachedIndexPromise = null;
777
+ throw error;
778
+ }
779
+ })();
780
+ return cachedIndexPromise;
781
+ }
782
+ function expandQueryTokens(tokens) {
783
+ const expanded = new Set(tokens);
784
+ for (const token of tokens) {
785
+ const synonyms = SYNONYM_MAP[token];
786
+ if (synonyms) for (const synonym of synonyms) expanded.add(synonym);
787
+ }
788
+ return expanded;
789
+ }
790
+ function scoreChunk(query, chunk) {
791
+ const expandedTokens = expandQueryTokens(tokenize(query).filter((token) => !STOP_WORDS.has(token)));
792
+ const chunkTokens = new Set(chunk.keywords);
793
+ let overlapScore = 0;
794
+ for (const token of expandedTokens) {
795
+ if (chunkTokens.has(token)) overlapScore += 2;
796
+ if (chunk.content.toLowerCase().includes(token)) overlapScore += 1;
797
+ if (chunk.title.toLowerCase().includes(token)) overlapScore += 1.5;
798
+ if (chunk.category.toLowerCase().includes(token)) overlapScore += 1.5;
799
+ }
800
+ const lengthPenalty = Math.max(1, chunk.tokens / DEFAULT_CHUNK_TOKEN_TARGET);
801
+ return overlapScore / lengthPenalty;
802
+ }
803
+ function rankChunks(query, chunks) {
804
+ return chunks.map((chunk) => ({
805
+ ...chunk,
806
+ score: scoreChunk(query, chunk)
807
+ })).filter((match) => match.score > 0).sort((a, b) => b.score - a.score);
808
+ }
809
+ function createAnswer(query, matches) {
810
+ if (matches.length === 0) return `No TipTap documentation matches were found for "${query}". Try broadening the query or referencing supported features like React integration, collaboration, or conversions.`;
811
+ return matches.map((match) => {
812
+ return `\u2022 ${match.title} (${match.category}): ${match.summary}`;
813
+ }).join("\n");
814
+ }
815
+ function selectCodeExamples(includeExamples, query, matches) {
816
+ if (!includeExamples) return [];
817
+ const matchedCategories = new Set(matches.map((match) => match.category));
818
+ const queryTokens = new Set(tokenize(query));
819
+ const suggestedExampleIds = /* @__PURE__ */ new Set();
820
+ for (const category of matchedCategories) {
821
+ const exampleIds = CATEGORY_EXAMPLE_MAP[category];
822
+ if (exampleIds) exampleIds.forEach((id) => suggestedExampleIds.add(id));
823
+ }
824
+ for (const example of CODE_EXAMPLES) if (example.keywords.some((keyword) => queryTokens.has(keyword))) suggestedExampleIds.add(example.id);
825
+ return CODE_EXAMPLES.filter((example) => suggestedExampleIds.has(example.id)).slice(0, 3);
826
+ }
827
+ /**
828
+ * TipTap documentation context tool.
829
+ *
830
+ * Answers questions about TipTap v3 capabilities by searching curated
831
+ * documentation chunks with semantic keyword matching.
832
+ *
833
+ * @example
834
+ * ```ts
835
+ * import { tiptapContextTool } from '@od-oneapp/ai-platform/tools';
836
+ *
837
+ * const result = await streamText({
838
+ * model,
839
+ * tools: { tiptapContext: tiptapContextTool },
840
+ * messages,
841
+ * });
842
+ * ```
843
+ */
844
+ const tiptapContextTool = tool({
845
+ description: "Answer questions about TipTap v3 capabilities by searching curated documentation chunks with semantic keyword matching.",
846
+ inputSchema: z$1.object({
847
+ query: z$1.string().min(1, "query is required"),
848
+ context: z$1.string().optional(),
849
+ includeExamples: z$1.boolean().optional().default(true),
850
+ limit: z$1.number().int().min(1).max(MAX_RESULTS).optional().default(3)
851
+ }),
852
+ execute: async ({ query, context, includeExamples = true, limit = 3 }) => {
853
+ const index = await getTiptapDocIndex();
854
+ const searchQuery = [query, context].filter(Boolean).join("\n");
855
+ const ranked = rankChunks(searchQuery, index.chunks);
856
+ const topMatches = ranked.slice(0, limit);
857
+ return {
858
+ answer: createAnswer(searchQuery, topMatches),
859
+ query,
860
+ matchedCount: ranked.length,
861
+ relevantSections: topMatches.map((match) => ({
862
+ id: match.id,
863
+ category: match.category,
864
+ title: match.title,
865
+ summary: match.summary,
866
+ keywords: match.keywords,
867
+ score: Number(match.score.toFixed(3)),
868
+ content: match.content
869
+ })),
870
+ codeExamples: selectCodeExamples(includeExamples, searchQuery, topMatches),
871
+ metadata: {
872
+ categories: topMatches.map((match) => match.category),
873
+ indexSize: index.chunks.length
874
+ }
875
+ };
876
+ }
877
+ });
878
+
879
+ //#endregion
880
+ //#region src/tools/advanced/llm-tool.ts
881
+ /**
882
+ * @fileoverview LLM-powered tool utilities.
883
+ * @module @od-oneapp/ai-platform/tools/advanced
884
+ */
885
+ const validationInputSchema = z.object({ content: z.string().describe("Content to validate") });
886
+ const validationOutputSchema = z.object({
887
+ isValid: z.boolean(),
888
+ score: z.number().min(0).max(100),
889
+ violations: z.array(z.object({
890
+ criterion: z.string(),
891
+ issue: z.string(),
892
+ severity: z.enum([
893
+ "low",
894
+ "medium",
895
+ "high"
896
+ ])
897
+ })),
898
+ suggestions: z.array(z.string())
899
+ });
900
+ /**
901
+ * Creates a tool powered by an LLM with structured output.
902
+ *
903
+ * @param config - LLM tool configuration
904
+ * @returns AI SDK tool
905
+ *
906
+ * @example
907
+ * ```ts
908
+ * const summarizeTool = createLLMTool({
909
+ * name: 'summarize',
910
+ * description: 'Summarize text',
911
+ * parameters: z.object({ text: z.string() }),
912
+ * outputSchema: z.object({ summary: z.string(), keyPoints: z.array(z.string()) }),
913
+ * systemPrompt: 'You are a summarization assistant.',
914
+ * userPromptTemplate: 'Summarize: {{text}}',
915
+ * model: openai('gpt-4o-mini'),
916
+ * });
917
+ * ```
918
+ */
919
+ function createLLMTool(config) {
920
+ const { description, parameters, outputSchema, systemPrompt, userPromptTemplate, model, maxTokens, temperature } = config;
921
+ return tool({
922
+ description,
923
+ inputSchema: parameters,
924
+ execute: async (input) => {
925
+ return (await generateObject({
926
+ model,
927
+ system: systemPrompt,
928
+ prompt: interpolatePrompt(userPromptTemplate, input),
929
+ schema: outputSchema,
930
+ ...maxTokens && { maxOutputTokens: maxTokens },
931
+ ...temperature !== void 0 && { temperature }
932
+ })).object;
933
+ }
934
+ });
935
+ }
936
+ /**
937
+ * Creates an LLM-powered validation tool.
938
+ *
939
+ * @param config - Validation tool configuration
940
+ * @returns SDKTool that validates input against criteria
941
+ *
942
+ * @example
943
+ * ```ts
944
+ * const validateTool = createValidationTool({
945
+ * name: 'validateContent',
946
+ * description: 'Validate content against guidelines',
947
+ * criteria: ['No harmful content', 'Proper formatting', 'Factually accurate'],
948
+ * model: openai('gpt-4o-mini'),
949
+ * });
950
+ * ```
951
+ */
952
+ function createValidationTool(config) {
953
+ return tool({
954
+ description: config.description,
955
+ inputSchema: validationInputSchema,
956
+ execute: async (input) => {
957
+ const { content } = input;
958
+ return (await generateObject({
959
+ model: config.model,
960
+ system: `You are a content validator. Validate content against these criteria:
961
+ ${config.criteria.map((c, i) => `${i + 1}. ${c}`).join("\n")}
962
+
963
+ Respond with JSON matching this schema:
964
+ - isValid: boolean
965
+ - score: 0-100
966
+ - violations: array of {criterion, issue, severity: low|medium|high}
967
+ - suggestions: array of improvement suggestions`,
968
+ prompt: `Validate this content:\n\n${content}`,
969
+ schema: validationOutputSchema,
970
+ ...config.maxTokens && { maxOutputTokens: config.maxTokens }
971
+ })).object;
972
+ }
973
+ });
974
+ }
975
+ /**
976
+ * Creates an LLM-powered transformation tool.
977
+ *
978
+ * @param config - Transformation tool configuration
979
+ * @returns SDKTool that transforms input text
980
+ *
981
+ * @example
982
+ * ```ts
983
+ * const rewriteTool = createTransformTool({
984
+ * name: 'rewrite',
985
+ * description: 'Rewrite text in a different style',
986
+ * styles: ['formal', 'casual', 'technical'],
987
+ * model: openai('gpt-4o-mini'),
988
+ * });
989
+ * ```
990
+ */
991
+ function createTransformTool(config) {
992
+ const transformInputSchema = z.object({
993
+ text: z.string().describe("Text to transform"),
994
+ style: z.enum(config.styles).describe("Target style"),
995
+ preserveLength: z.boolean().optional().describe("Keep similar length")
996
+ });
997
+ return tool({
998
+ description: config.description,
999
+ inputSchema: transformInputSchema,
1000
+ execute: async (input) => {
1001
+ const { text, style, preserveLength } = input;
1002
+ const { text: result } = await generateText({
1003
+ model: config.model,
1004
+ system: `You are a text transformation assistant. Transform text to the requested style.${preserveLength ? " Keep the output approximately the same length as the input." : ""}`,
1005
+ prompt: `Transform this text to ${style} style:\n\n${text}`
1006
+ });
1007
+ return {
1008
+ original: text,
1009
+ transformed: result,
1010
+ style
1011
+ };
1012
+ }
1013
+ });
1014
+ }
1015
+ /**
1016
+ * Interpolates template strings with values.
1017
+ */
1018
+ function interpolatePrompt(template, values) {
1019
+ return template.replace(/\{\{(\w+)\}\}/g, (_, key) => {
1020
+ const value = values[key];
1021
+ return value !== void 0 ? String(value) : `{{${key}}}`;
1022
+ });
1023
+ }
1024
+
1025
+ //#endregion
1026
+ //#region src/tools/advanced/hitl.ts
1027
+ /**
1028
+ * Creates a tool that requires human approval before execution.
1029
+ *
1030
+ * @param config - HITL tool configuration
1031
+ * @returns Tool with approval gate
1032
+ *
1033
+ * @example
1034
+ * ```ts
1035
+ * const deleteFileTool = createHITLTool({
1036
+ * name: 'deleteFile',
1037
+ * description: 'Delete a file from the system',
1038
+ * parameters: z.object({ path: z.string() }),
1039
+ * execute: async ({ path }) => deleteFile(path),
1040
+ * requestApproval: async ({ path }) => {
1041
+ * return await showApprovalModal({
1042
+ * title: 'Delete File?',
1043
+ * message: `Are you sure you want to delete ${path}?`,
1044
+ * });
1045
+ * },
1046
+ * riskLevel: 'high',
1047
+ * });
1048
+ * ```
1049
+ */
1050
+ function createHITLTool(config) {
1051
+ return tool({
1052
+ description: `${config.description} (Requires approval${config.riskLevel ? ` - ${config.riskLevel} risk` : ""})`,
1053
+ inputSchema: config.parameters,
1054
+ execute: async (params) => {
1055
+ const typedParams = params;
1056
+ const decision = await config.requestApproval(typedParams);
1057
+ if (!decision.approved) {
1058
+ if (config.onDenied) await config.onDenied(typedParams, decision.reason);
1059
+ return {
1060
+ success: false,
1061
+ error: "Action denied by user",
1062
+ reason: decision.reason
1063
+ };
1064
+ }
1065
+ const finalParams = decision.modifiedParams ? {
1066
+ ...params,
1067
+ ...decision.modifiedParams
1068
+ } : params;
1069
+ return {
1070
+ success: true,
1071
+ result: await config.execute(finalParams)
1072
+ };
1073
+ }
1074
+ });
1075
+ }
1076
+ /**
1077
+ * Creates an approval policy checker.
1078
+ *
1079
+ * @param policies - Array of approval policies
1080
+ * @returns Function to check if params satisfy any policy
1081
+ *
1082
+ * @example
1083
+ * ```ts
1084
+ * const checkPolicy = createPolicyChecker([
1085
+ * {
1086
+ * name: 'safe-paths',
1087
+ * toolPatterns: ['deleteFile', 'moveFile'],
1088
+ * conditions: [
1089
+ * { paramPath: 'path', operator: 'contains', value: '/tmp/' },
1090
+ * ],
1091
+ * maxRiskLevel: 'medium',
1092
+ * },
1093
+ * ]);
1094
+ *
1095
+ * const canAutoApprove = checkPolicy('deleteFile', { path: '/tmp/test.txt' }, 'low');
1096
+ * ```
1097
+ */
1098
+ function createPolicyChecker(policies) {
1099
+ return function checkPolicy(toolName, params, riskLevel) {
1100
+ const riskOrder = {
1101
+ low: 1,
1102
+ medium: 2,
1103
+ high: 3,
1104
+ critical: 4
1105
+ };
1106
+ const currentRisk = riskOrder[riskLevel];
1107
+ for (const policy of policies) {
1108
+ if (!policy.toolPatterns.some((pattern) => {
1109
+ if (pattern === "*") return true;
1110
+ if (pattern.endsWith("*")) return toolName.startsWith(pattern.slice(0, -1));
1111
+ return toolName === pattern;
1112
+ })) continue;
1113
+ if (currentRisk > riskOrder[policy.maxRiskLevel]) continue;
1114
+ if (policy.conditions.every((condition) => {
1115
+ return evaluateCondition(getNestedValue(params, condition.paramPath), condition.operator, condition.value);
1116
+ })) return {
1117
+ approved: true,
1118
+ policy: policy.name
1119
+ };
1120
+ }
1121
+ return { approved: false };
1122
+ };
1123
+ }
1124
+ /**
1125
+ * Gets a nested value from an object using dot notation.
1126
+ */
1127
+ function getNestedValue(obj, path) {
1128
+ return path.split(".").reduce((curr, key) => {
1129
+ if (curr && typeof curr === "object" && key in curr) return curr[key];
1130
+ }, obj);
1131
+ }
1132
+ /**
1133
+ * Evaluates a condition against a value.
1134
+ */
1135
+ function evaluateCondition(value, operator, target) {
1136
+ switch (operator) {
1137
+ case "equals": return value === target;
1138
+ case "contains": return typeof value === "string" && typeof target === "string" && value.includes(target);
1139
+ case "matches": return typeof value === "string" && typeof target === "string" && new RegExp(target).test(value);
1140
+ case "lessThan": return typeof value === "number" && typeof target === "number" && value < target;
1141
+ case "greaterThan": return typeof value === "number" && typeof target === "number" && value > target;
1142
+ default: return false;
1143
+ }
1144
+ }
1145
+ /**
1146
+ * Creates a batch approval request for multiple tool calls.
1147
+ *
1148
+ * @param requests - Array of tool call requests
1149
+ * @param batchApproval - Function to approve batch
1150
+ * @returns Filtered array of approved requests
1151
+ */
1152
+ async function batchApproval(requests, batchApprovalFn) {
1153
+ const result = await batchApprovalFn(requests);
1154
+ if (!result.approved) return [];
1155
+ return result.approvedIndices.map((i) => requests[i]).filter((item) => item !== void 0);
1156
+ }
1157
+
1158
+ //#endregion
1159
+ //#region src/tools/advanced/caching.ts
1160
+ /**
1161
+ * In-memory cache for tool results.
1162
+ */
1163
+ var ToolCache = class {
1164
+ cache = /* @__PURE__ */ new Map();
1165
+ maxSize;
1166
+ defaultTTL;
1167
+ constructor(options = {}) {
1168
+ this.maxSize = options.maxSize ?? 1e3;
1169
+ this.defaultTTL = options.defaultTTL ?? 6e4;
1170
+ }
1171
+ /**
1172
+ * Gets a value from cache.
1173
+ */
1174
+ get(key) {
1175
+ const entry = this.cache.get(key);
1176
+ if (!entry) return void 0;
1177
+ if (Date.now() > entry.expiresAt) {
1178
+ this.cache.delete(key);
1179
+ return;
1180
+ }
1181
+ entry.hits++;
1182
+ return entry.value;
1183
+ }
1184
+ /**
1185
+ * Sets a value in cache.
1186
+ */
1187
+ set(key, value, ttl) {
1188
+ if (this.cache.size >= this.maxSize) this.evictLeastUsed();
1189
+ this.cache.set(key, {
1190
+ value,
1191
+ expiresAt: Date.now() + (ttl ?? this.defaultTTL),
1192
+ hits: 0
1193
+ });
1194
+ }
1195
+ /**
1196
+ * Removes expired entries.
1197
+ */
1198
+ prune() {
1199
+ const now = Date.now();
1200
+ let pruned = 0;
1201
+ for (const [key, entry] of this.cache.entries()) if (now > entry.expiresAt) {
1202
+ this.cache.delete(key);
1203
+ pruned++;
1204
+ }
1205
+ return pruned;
1206
+ }
1207
+ /**
1208
+ * Clears the entire cache.
1209
+ */
1210
+ clear() {
1211
+ this.cache.clear();
1212
+ }
1213
+ /**
1214
+ * Gets cache statistics.
1215
+ */
1216
+ stats() {
1217
+ let totalHits = 0;
1218
+ for (const entry of this.cache.values()) totalHits += entry.hits;
1219
+ return {
1220
+ size: this.cache.size,
1221
+ maxSize: this.maxSize,
1222
+ totalHits
1223
+ };
1224
+ }
1225
+ evictLeastUsed() {
1226
+ let minHits = Infinity;
1227
+ let minKey;
1228
+ for (const [key, entry] of this.cache.entries()) if (entry.hits < minHits) {
1229
+ minHits = entry.hits;
1230
+ minKey = key;
1231
+ }
1232
+ if (minKey) this.cache.delete(minKey);
1233
+ }
1234
+ };
1235
+ /**
1236
+ * Wraps a tool handler with caching.
1237
+ *
1238
+ * @param handler - Original handler
1239
+ * @param options - Cache options
1240
+ * @returns Cached handler
1241
+ *
1242
+ * @example
1243
+ * ```ts
1244
+ * const cache = new ToolCache<SearchResult>({ ttl: 300000 });
1245
+ *
1246
+ * const cachedSearch = withCaching(
1247
+ * async ({ query }) => searchDocs(query),
1248
+ * { cache, keyGenerator: ({ query }) => `search:${query}` }
1249
+ * );
1250
+ * ```
1251
+ */
1252
+ function withCaching(handler, options = {}) {
1253
+ const cache = options.cache ?? new ToolCache();
1254
+ const keyGen = options.keyGenerator ?? defaultKeyGenerator;
1255
+ return async (input, context) => {
1256
+ if (options.skipCache?.(input, context)) return handler(input, context);
1257
+ const key = keyGen(input, context);
1258
+ const cached = cache.get(key);
1259
+ if (cached !== void 0) return cached;
1260
+ try {
1261
+ const result = await handler(input, context);
1262
+ cache.set(key, result, options.ttl);
1263
+ return result;
1264
+ } catch (error) {
1265
+ if (options.cacheErrors) {
1266
+ const errorResult = { error: String(error) };
1267
+ cache.set(key, errorResult, options.ttl);
1268
+ return errorResult;
1269
+ }
1270
+ throw error;
1271
+ }
1272
+ };
1273
+ }
1274
+ /**
1275
+ * Default key generator using JSON.stringify.
1276
+ */
1277
+ function defaultKeyGenerator(input, context) {
1278
+ return JSON.stringify({
1279
+ input,
1280
+ userId: context.userId
1281
+ });
1282
+ }
1283
+ /**
1284
+ * Creates a cache key builder with prefixing.
1285
+ *
1286
+ * @param prefix - Cache key prefix
1287
+ * @returns Key generator function
1288
+ *
1289
+ * @example
1290
+ * ```ts
1291
+ * const keyGen = createKeyBuilder('search');
1292
+ * keyGen({ query: 'test' }, ctx); // => 'search:{"query":"test"}'
1293
+ * ```
1294
+ */
1295
+ function createKeyBuilder(prefix) {
1296
+ return function(input, context) {
1297
+ return `${prefix}:${JSON.stringify({
1298
+ input,
1299
+ userId: context.userId
1300
+ })}`;
1301
+ };
1302
+ }
1303
+ /**
1304
+ * Creates a selective key generator that only uses specified fields.
1305
+ *
1306
+ * @param prefix - Cache key prefix
1307
+ * @param fields - Fields to include in key
1308
+ * @returns Key generator function
1309
+ *
1310
+ * @example
1311
+ * ```ts
1312
+ * const keyGen = createSelectiveKeyBuilder('search', ['query', 'limit']);
1313
+ * keyGen({ query: 'test', limit: 10, page: 1 }, ctx); // => 'search:test:10'
1314
+ * ```
1315
+ */
1316
+ function createSelectiveKeyBuilder(prefix, fields) {
1317
+ return function(input, context) {
1318
+ return `${prefix}:${fields.map((f) => String(input[f] ?? "")).join(":")}`;
1319
+ };
1320
+ }
1321
+ /**
1322
+ * Creates a stale-while-revalidate cache wrapper.
1323
+ *
1324
+ * @param handler - Original handler
1325
+ * @param options - SWR options
1326
+ * @returns Handler with SWR caching
1327
+ *
1328
+ * @example
1329
+ * ```ts
1330
+ * const swrSearch = withSWRCaching(searchHandler, {
1331
+ * staleTTL: 60000, // 1 minute stale
1332
+ * maxTTL: 300000, // 5 minute max
1333
+ * });
1334
+ * ```
1335
+ */
1336
+ function withSWRCaching(handler, options) {
1337
+ const cache = new ToolCache();
1338
+ const keyGen = options.keyGenerator ?? defaultKeyGenerator;
1339
+ return async (input, context) => {
1340
+ const key = keyGen(input, context);
1341
+ const cached = cache.get(key);
1342
+ const now = Date.now();
1343
+ if (cached && now - cached.fetchedAt < options.staleTTL) return cached.value;
1344
+ if (cached && now - cached.fetchedAt < options.maxTTL) {
1345
+ (async () => {
1346
+ try {
1347
+ const fresh = await handler(input, context);
1348
+ cache.set(key, {
1349
+ value: fresh,
1350
+ fetchedAt: Date.now()
1351
+ }, options.maxTTL);
1352
+ } catch {}
1353
+ })();
1354
+ return cached.value;
1355
+ }
1356
+ const result = await handler(input, context);
1357
+ cache.set(key, {
1358
+ value: result,
1359
+ fetchedAt: now
1360
+ }, options.maxTTL);
1361
+ return result;
1362
+ };
1363
+ }
1364
+
1365
+ //#endregion
1366
+ //#region src/tools/advanced/generator.ts
1367
+ /**
1368
+ * Creates a tool that streams results via async generator.
1369
+ *
1370
+ * Note: The tool collects all chunks and returns the final result.
1371
+ * For true streaming, use with streamText's onToolCall.
1372
+ *
1373
+ * @param config - Generator tool configuration
1374
+ * @returns AI SDK tool
1375
+ *
1376
+ * @example
1377
+ * ```ts
1378
+ * const processFileTool = createGeneratorTool({
1379
+ * name: 'processFile',
1380
+ * description: 'Process a large file in chunks',
1381
+ * parameters: z.object({ path: z.string() }),
1382
+ * generator: async function* ({ path }) {
1383
+ * const chunks = await readFileChunks(path);
1384
+ * for (const chunk of chunks) {
1385
+ * yield { processed: processChunk(chunk) };
1386
+ * }
1387
+ * return { totalChunks: chunks.length };
1388
+ * },
1389
+ * });
1390
+ * ```
1391
+ */
1392
+ function createGeneratorTool(config) {
1393
+ return tool({
1394
+ description: config.description,
1395
+ inputSchema: config.parameters,
1396
+ execute: async (input) => {
1397
+ const typedInput = input;
1398
+ const chunks = [];
1399
+ let index = 0;
1400
+ let finalResult;
1401
+ const gen = config.generator(typedInput);
1402
+ for (;;) {
1403
+ const { value, done } = await gen.next();
1404
+ if (done) {
1405
+ finalResult = value;
1406
+ break;
1407
+ }
1408
+ const chunk = value;
1409
+ chunks.push(chunk);
1410
+ if (config.transformChunk) config.transformChunk(chunk, index);
1411
+ index++;
1412
+ }
1413
+ if (config.transformFinal && finalResult !== void 0) return config.transformFinal(finalResult, chunks);
1414
+ return {
1415
+ chunks,
1416
+ final: finalResult
1417
+ };
1418
+ }
1419
+ });
1420
+ }
1421
+ /**
1422
+ * Creates a paginated tool that fetches results in pages.
1423
+ *
1424
+ * @param config - Pagination tool configuration
1425
+ * @returns AI SDK tool
1426
+ *
1427
+ * @example
1428
+ * ```ts
1429
+ * const listUsersTool = createPaginatedTool({
1430
+ * name: 'listUsers',
1431
+ * description: 'List users with pagination',
1432
+ * parameters: z.object({ filter: z.string().optional() }),
1433
+ * pageSize: 100,
1434
+ * maxPages: 10,
1435
+ * fetchPage: async ({ filter }, page, pageSize) => {
1436
+ * return fetchUsers({ filter, page, pageSize });
1437
+ * },
1438
+ * });
1439
+ * ```
1440
+ */
1441
+ function createPaginatedTool(config) {
1442
+ const { pageSize, maxPages = 10 } = config;
1443
+ return tool({
1444
+ description: config.description,
1445
+ inputSchema: config.parameters,
1446
+ execute: async (input) => {
1447
+ const typedInput = input;
1448
+ const allItems = [];
1449
+ let page = 0;
1450
+ let hasMore = true;
1451
+ while (hasMore && page < maxPages) {
1452
+ const { items, hasMore: pageHasMore } = await config.fetchPage(typedInput, page, pageSize);
1453
+ allItems.push(...items);
1454
+ hasMore = pageHasMore;
1455
+ page++;
1456
+ }
1457
+ return {
1458
+ items: allItems,
1459
+ totalPages: page,
1460
+ truncated: hasMore
1461
+ };
1462
+ }
1463
+ });
1464
+ }
1465
+ /**
1466
+ * Creates a tool that retries on failure with exponential backoff.
1467
+ *
1468
+ * @param config - Retry tool configuration
1469
+ * @returns AI SDK tool
1470
+ *
1471
+ * @example
1472
+ * ```ts
1473
+ * const fetchDataTool = createRetryTool({
1474
+ * name: 'fetchData',
1475
+ * description: 'Fetch data with retry',
1476
+ * parameters: z.object({ url: z.string() }),
1477
+ * maxRetries: 3,
1478
+ * baseDelay: 1000,
1479
+ * execute: async ({ url }) => fetch(url).then(r => r.json()),
1480
+ * });
1481
+ * ```
1482
+ */
1483
+ function createRetryTool(config) {
1484
+ const { maxRetries, baseDelay = 1e3, maxDelay = 3e4, shouldRetry = () => true } = config;
1485
+ return tool({
1486
+ description: config.description,
1487
+ inputSchema: config.parameters,
1488
+ execute: async (input) => {
1489
+ const typedInput = input;
1490
+ let lastError;
1491
+ for (let attempt = 0; attempt <= maxRetries; attempt++) try {
1492
+ return await config.execute(typedInput);
1493
+ } catch (e) {
1494
+ lastError = e instanceof Error ? e : new Error(String(e));
1495
+ if (attempt < maxRetries && shouldRetry(lastError, attempt)) await sleep(Math.min(baseDelay * Math.pow(2, attempt), maxDelay));
1496
+ }
1497
+ throw lastError;
1498
+ }
1499
+ });
1500
+ }
1501
+ /**
1502
+ * Helper to create a polling tool that waits for a condition.
1503
+ *
1504
+ * @param config - Polling tool configuration
1505
+ * @returns AI SDK tool
1506
+ *
1507
+ * @example
1508
+ * ```ts
1509
+ * const waitForJobTool = createPollingTool({
1510
+ * name: 'waitForJob',
1511
+ * description: 'Wait for a job to complete',
1512
+ * parameters: z.object({ jobId: z.string() }),
1513
+ * poll: async ({ jobId }) => getJobStatus(jobId),
1514
+ * isComplete: (status) => status.state === 'complete',
1515
+ * interval: 2000,
1516
+ * timeout: 60000,
1517
+ * });
1518
+ * ```
1519
+ */
1520
+ function createPollingTool(config) {
1521
+ const { interval = 1e3, timeout = 3e4 } = config;
1522
+ return tool({
1523
+ description: config.description,
1524
+ inputSchema: config.parameters,
1525
+ execute: async (input) => {
1526
+ const typedInput = input;
1527
+ const startTime = Date.now();
1528
+ while (Date.now() - startTime < timeout) {
1529
+ const status = await config.poll(typedInput);
1530
+ if (config.isComplete(status)) return {
1531
+ complete: true,
1532
+ status
1533
+ };
1534
+ await sleep(interval);
1535
+ }
1536
+ return {
1537
+ complete: false,
1538
+ timedOut: true
1539
+ };
1540
+ }
1541
+ });
1542
+ }
1543
+ /**
1544
+ * Sleep helper.
1545
+ */
1546
+ function sleep(ms) {
1547
+ return new Promise((resolve) => setTimeout(resolve, ms));
1548
+ }
1549
+
1550
+ //#endregion
1551
+ //#region src/tools/artifacts/artifact-tools.ts
1552
+ /**
1553
+ * @fileoverview Artifact-specific tool factories.
1554
+ * @module @od-oneapp/ai-platform/tools/artifacts
1555
+ */
1556
+ /**
1557
+ * Artifact types supported by the system.
1558
+ */
1559
+ const ArtifactType = z.enum([
1560
+ "document",
1561
+ "code",
1562
+ "presentation",
1563
+ "spreadsheet",
1564
+ "canvas",
1565
+ "image",
1566
+ "diagram"
1567
+ ]);
1568
+ /**
1569
+ * Base artifact metadata.
1570
+ */
1571
+ const ArtifactMetadataSchema = z.object({
1572
+ id: z.string(),
1573
+ type: ArtifactType,
1574
+ title: z.string(),
1575
+ createdAt: z.string().datetime(),
1576
+ updatedAt: z.string().datetime(),
1577
+ version: z.number()
1578
+ });
1579
+ /**
1580
+ * Creates a tool for creating artifacts.
1581
+ *
1582
+ * @param config - Creation tool configuration
1583
+ * @returns AI SDK tool
1584
+ *
1585
+ * @example
1586
+ * ```ts
1587
+ * const createDocTool = createArtifactCreationTool({
1588
+ * artifactType: 'document',
1589
+ * description: 'Create a new document',
1590
+ * handler: async ({ title, content }) => {
1591
+ * const doc = await createDocument({ title, content });
1592
+ * return { success: true, artifact: doc.metadata, data: doc };
1593
+ * },
1594
+ * });
1595
+ * ```
1596
+ */
1597
+ function createArtifactCreationTool(config) {
1598
+ const contentSchema = config.contentSchema ?? z.unknown();
1599
+ return tool({
1600
+ description: config.description,
1601
+ inputSchema: z.object({
1602
+ title: z.string().describe("Artifact title"),
1603
+ content: contentSchema.describe("Artifact content")
1604
+ }),
1605
+ execute: async (input) => {
1606
+ return config.handler(input);
1607
+ }
1608
+ });
1609
+ }
1610
+ /**
1611
+ * Creates a tool for updating artifacts.
1612
+ *
1613
+ * @param config - Update tool configuration
1614
+ * @returns AI SDK tool
1615
+ */
1616
+ function createArtifactUpdateTool(config) {
1617
+ const updateSchema = config.updateSchema ?? z.unknown();
1618
+ return tool({
1619
+ description: config.description,
1620
+ inputSchema: z.object({
1621
+ id: z.string().describe("Artifact ID"),
1622
+ update: updateSchema.describe("Update payload")
1623
+ }),
1624
+ execute: async (input) => {
1625
+ return config.handler(input);
1626
+ }
1627
+ });
1628
+ }
1629
+ /**
1630
+ * Creates a tool for reading artifacts.
1631
+ *
1632
+ * @param config - Read tool configuration
1633
+ * @returns AI SDK tool
1634
+ */
1635
+ function createArtifactReadTool(config) {
1636
+ return tool({
1637
+ description: config.description,
1638
+ inputSchema: z.object({ id: z.string().describe("Artifact ID") }),
1639
+ execute: async (input) => {
1640
+ return config.handler(input);
1641
+ }
1642
+ });
1643
+ }
1644
+ /**
1645
+ * Creates a tool for deleting artifacts.
1646
+ *
1647
+ * @param config - Delete tool configuration
1648
+ * @returns AI SDK tool
1649
+ */
1650
+ function createArtifactDeleteTool(config) {
1651
+ return tool({
1652
+ description: config.description,
1653
+ inputSchema: z.object({ id: z.string().describe("Artifact ID") }),
1654
+ execute: async (input) => {
1655
+ return config.handler(input);
1656
+ }
1657
+ });
1658
+ }
1659
+ /**
1660
+ * Creates a complete CRUD tool set for an artifact type.
1661
+ *
1662
+ * @param config - CRUD configuration
1663
+ * @returns Record of CRUD tools
1664
+ *
1665
+ * @example
1666
+ * ```ts
1667
+ * const docTools = createArtifactCRUDTools({
1668
+ * artifactType: 'document',
1669
+ * handlers: {
1670
+ * create: async ({ title, content }) => createDoc(title, content),
1671
+ * read: async ({ id }) => readDoc(id),
1672
+ * update: async ({ id, update }) => updateDoc(id, update),
1673
+ * delete: async ({ id }) => deleteDoc(id),
1674
+ * },
1675
+ * });
1676
+ * ```
1677
+ */
1678
+ function createArtifactCRUDTools(config) {
1679
+ const { artifactType, handlers } = config;
1680
+ const typeLabel = artifactType.charAt(0).toUpperCase() + artifactType.slice(1);
1681
+ return {
1682
+ [`create${typeLabel}`]: createArtifactCreationTool({
1683
+ artifactType,
1684
+ description: `Create a new ${artifactType}`,
1685
+ contentSchema: config.contentSchema,
1686
+ handler: handlers.create
1687
+ }),
1688
+ [`read${typeLabel}`]: createArtifactReadTool({
1689
+ artifactType,
1690
+ description: `Read a ${artifactType} by ID`,
1691
+ handler: handlers.read
1692
+ }),
1693
+ [`update${typeLabel}`]: createArtifactUpdateTool({
1694
+ artifactType,
1695
+ description: `Update a ${artifactType}`,
1696
+ updateSchema: config.updateSchema,
1697
+ handler: handlers.update
1698
+ }),
1699
+ [`delete${typeLabel}`]: createArtifactDeleteTool({
1700
+ artifactType,
1701
+ description: `Delete a ${artifactType}`,
1702
+ handler: handlers.delete
1703
+ })
1704
+ };
1705
+ }
1706
+ /**
1707
+ * Creates tools for artifact versioning.
1708
+ */
1709
+ function createVersioningTools(config) {
1710
+ const { artifactType, handlers } = config;
1711
+ const typeLabel = artifactType.charAt(0).toUpperCase() + artifactType.slice(1);
1712
+ return {
1713
+ [`list${typeLabel}Versions`]: tool({
1714
+ description: `List all versions of a ${artifactType}`,
1715
+ inputSchema: z.object({ id: z.string().describe("Artifact ID") }),
1716
+ execute: async (input) => {
1717
+ const { id } = input;
1718
+ return handlers.listVersions(id);
1719
+ }
1720
+ }),
1721
+ [`get${typeLabel}Version`]: tool({
1722
+ description: `Get a specific version of a ${artifactType}`,
1723
+ inputSchema: z.object({
1724
+ id: z.string().describe("Artifact ID"),
1725
+ version: z.number().describe("Version number")
1726
+ }),
1727
+ execute: async (input) => {
1728
+ const { id, version } = input;
1729
+ return handlers.getVersion(id, version);
1730
+ }
1731
+ }),
1732
+ [`revert${typeLabel}`]: tool({
1733
+ description: `Revert a ${artifactType} to a previous version`,
1734
+ inputSchema: z.object({
1735
+ id: z.string().describe("Artifact ID"),
1736
+ version: z.number().describe("Version to revert to")
1737
+ }),
1738
+ execute: async (input) => {
1739
+ const { id, version } = input;
1740
+ return handlers.revertToVersion(id, version);
1741
+ }
1742
+ })
1743
+ };
1744
+ }
1745
+
1746
+ //#endregion
1747
+ //#region src/tools/index.ts
1748
+ var tools_exports = /* @__PURE__ */ __exportAll({
1749
+ AISDKCompatibleMCPError: () => AISDKCompatibleMCPError,
1750
+ ANTI_PATTERN_SYSTEM_PROMPT: () => ANTI_PATTERN_SYSTEM_PROMPT,
1751
+ AgentDispatchOutputSchema: () => AgentDispatchOutputSchema,
1752
+ AntiPatternOutputSchema: () => AntiPatternOutputSchema,
1753
+ ArtifactMetadataSchema: () => ArtifactMetadataSchema,
1754
+ ArtifactType: () => ArtifactType,
1755
+ AsyncPatternsOutputSchema: () => AsyncPatternsOutputSchema,
1756
+ BRAINSTORM_SYSTEM_PROMPT: () => BRAINSTORM_SYSTEM_PROMPT,
1757
+ BrainstormOutputSchema: () => BrainstormOutputSchema,
1758
+ BranchFinishOutputSchema: () => BranchFinishOutputSchema,
1759
+ CODE_REVIEW_SYSTEM_PROMPT: () => CODE_REVIEW_SYSTEM_PROMPT,
1760
+ COMMIT_ANALYSIS_SYSTEM_PROMPT: () => COMMIT_ANALYSIS_SYSTEM_PROMPT,
1761
+ CONDITION_BASED_WAITING_SYSTEM_PROMPT: () => CONDITION_BASED_WAITING_SYSTEM_PROMPT,
1762
+ CodeReviewOutputSchema: () => CodeReviewOutputSchema,
1763
+ CodeReviewResponseOutputSchema: () => CodeReviewResponseOutputSchema,
1764
+ CommitAnalysisOutputSchema: () => CommitAnalysisOutputSchema,
1765
+ DEFAULT_CACHE_CONFIG: () => DEFAULT_CACHE_CONFIG,
1766
+ DEFAULT_HEALTH_CHECK_CONFIG: () => DEFAULT_HEALTH_CHECK_CONFIG,
1767
+ DEFAULT_POOL_CONFIG: () => DEFAULT_POOL_CONFIG,
1768
+ DEFAULT_RETRY_CONFIG: () => DEFAULT_RETRY_CONFIG,
1769
+ DEFAULT_STREAM_LIFECYCLE_CONFIG: () => DEFAULT_STREAM_LIFECYCLE_CONFIG,
1770
+ DEFENSE_IN_DEPTH_SYSTEM_PROMPT: () => DEFENSE_IN_DEPTH_SYSTEM_PROMPT,
1771
+ DESIGN_REVIEW_SYSTEM_PROMPT: () => DESIGN_REVIEW_SYSTEM_PROMPT,
1772
+ DISPATCHING_AGENTS_SYSTEM_PROMPT: () => DISPATCHING_AGENTS_SYSTEM_PROMPT,
1773
+ DefenseInDepthOutputSchema: () => DefenseInDepthOutputSchema,
1774
+ DesignReviewOutputSchema: () => DesignReviewOutputSchema,
1775
+ EXECUTING_PLANS_SYSTEM_PROMPT: () => EXECUTING_PLANS_SYSTEM_PROMPT,
1776
+ FINISHING_BRANCH_SYSTEM_PROMPT: () => FINISHING_BRANCH_SYSTEM_PROMPT,
1777
+ GIT_WORKTREE_SYSTEM_PROMPT: () => GIT_WORKTREE_SYSTEM_PROMPT,
1778
+ JsonSchemaToolRegistry: () => JsonSchemaToolRegistry,
1779
+ MCPConnectionError: () => MCPConnectionError,
1780
+ MCPConnectionManager: () => MCPConnectionManager,
1781
+ MCPConnectionPool: () => MCPConnectionPool,
1782
+ MCPErrorHandlerFactory: () => MCPErrorHandlerFactory,
1783
+ MCPErrorUtils: () => MCPErrorUtils,
1784
+ MCPHealthMonitor: () => MCPHealthMonitor,
1785
+ MCPHealthStatus: () => MCPHealthStatus,
1786
+ MCPRequestManager: () => MCPRequestManager,
1787
+ MCPRetryableError: () => MCPRetryableError,
1788
+ MCPStreamLifecycleManager: () => MCPStreamLifecycleManager,
1789
+ MCPToolCache: () => MCPToolCache,
1790
+ MCPTransportError: () => MCPTransportError,
1791
+ MCPTransportSelector: () => MCPTransportSelector,
1792
+ PLANNER_SYSTEM_PROMPT: () => PLANNER_SYSTEM_PROMPT,
1793
+ PlanExecutionOutputSchema: () => PlanExecutionOutputSchema,
1794
+ PlanOutputSchema: () => PlanOutputSchema,
1795
+ RECEIVING_CODE_REVIEW_SYSTEM_PROMPT: () => RECEIVING_CODE_REVIEW_SYSTEM_PROMPT,
1796
+ ROOT_CAUSE_TRACING_SYSTEM_PROMPT: () => ROOT_CAUSE_TRACING_SYSTEM_PROMPT,
1797
+ RootCauseTracingOutputSchema: () => RootCauseTracingOutputSchema,
1798
+ SHARING_SKILLS_SYSTEM_PROMPT: () => SHARING_SKILLS_SYSTEM_PROMPT,
1799
+ SUBAGENT_DRIVEN_DEV_SYSTEM_PROMPT: () => SUBAGENT_DRIVEN_DEV_SYSTEM_PROMPT,
1800
+ SYSTEMATIC_DEBUGGING_SYSTEM_PROMPT: () => SYSTEMATIC_DEBUGGING_SYSTEM_PROMPT,
1801
+ SkillShareOutputSchema: () => SkillShareOutputSchema,
1802
+ SkillTestOutputSchema: () => SkillTestOutputSchema,
1803
+ SkillWriteOutputSchema: () => SkillWriteOutputSchema,
1804
+ StreamLifecyclePhase: () => StreamLifecyclePhase,
1805
+ SubagentDevOutputSchema: () => SubagentDevOutputSchema,
1806
+ SuperpowersIntroOutputSchema: () => SuperpowersIntroOutputSchema,
1807
+ SystematicDebuggingOutputSchema: () => SystematicDebuggingOutputSchema,
1808
+ TDDOutputSchema: () => TDDOutputSchema,
1809
+ TDD_SYSTEM_PROMPT: () => TDD_SYSTEM_PROMPT,
1810
+ TESTING_SKILLS_SYSTEM_PROMPT: () => TESTING_SKILLS_SYSTEM_PROMPT,
1811
+ ToolAbortError: () => ToolAbortError,
1812
+ ToolCache: () => ToolCache,
1813
+ USING_SUPERPOWERS_SYSTEM_PROMPT: () => USING_SUPERPOWERS_SYSTEM_PROMPT,
1814
+ WRITING_SKILLS_SYSTEM_PROMPT: () => WRITING_SKILLS_SYSTEM_PROMPT,
1815
+ WorktreeOutputSchema: () => WorktreeOutputSchema,
1816
+ allSuperpowerTools: () => allSuperpowerTools,
1817
+ analyzeAsyncPatterns: () => analyzeAsyncPatterns,
1818
+ analyzeCommit: () => analyzeCommit,
1819
+ analyzeDefenseInDepth: () => analyzeDefenseInDepth,
1820
+ batchApproval: () => batchApproval,
1821
+ codeReviewTools: () => codeReviewTools,
1822
+ combineAbortSignals: () => combineAbortSignals,
1823
+ composeTools: () => composeTools,
1824
+ consultArchitect: () => consultArchitect,
1825
+ createArtifactCRUDTools: () => createArtifactCRUDTools,
1826
+ createArtifactCreationTool: () => createArtifactCreationTool,
1827
+ createArtifactDeleteTool: () => createArtifactDeleteTool,
1828
+ createArtifactReadTool: () => createArtifactReadTool,
1829
+ createArtifactUpdateTool: () => createArtifactUpdateTool,
1830
+ createBashTool: () => createBashTool,
1831
+ createComputerTool: () => createComputerTool,
1832
+ createConditionalTool: () => createConditionalTool,
1833
+ createEdgeMCPTools: () => createEdgeMCPTools,
1834
+ createExaSearchTool: () => createExaSearchTool,
1835
+ createGeneratorTool: () => createGeneratorTool,
1836
+ createHITLTool: () => createHITLTool,
1837
+ createJsonSchemaTool: () => createJsonSchemaTool,
1838
+ createKeyBuilder: () => createKeyBuilder,
1839
+ createLLMTool: () => createLLMTool,
1840
+ createMCPStreamLifecycleManager: () => createMCPStreamLifecycleManager,
1841
+ createMCPToolsForRequest: () => createMCPToolsForRequest,
1842
+ createMCPToolsForStreamText: () => createMCPToolsForStreamText,
1843
+ createMCPToolsFromConfigs: () => createMCPToolsFromConfigs,
1844
+ createMCPToolsWithDefaults: () => createMCPToolsWithDefaults,
1845
+ createMCPToolsWithStreamLifecycle: () => createMCPToolsWithStreamLifecycle,
1846
+ createPaginatedTool: () => createPaginatedTool,
1847
+ createPolicyChecker: () => createPolicyChecker,
1848
+ createPollingTool: () => createPollingTool,
1849
+ createPooledMCPTools: () => createPooledMCPTools,
1850
+ createRetryTool: () => createRetryTool,
1851
+ createSelectiveKeyBuilder: () => createSelectiveKeyBuilder,
1852
+ createSimpleTool: () => createSimpleTool,
1853
+ createSmartMCPTools: () => createSmartMCPTools,
1854
+ createTimeoutAbort: () => createTimeoutAbort,
1855
+ createToolFactory: () => createToolFactory,
1856
+ createToolFromZodSchema: () => createToolFromZodSchema,
1857
+ createToolWithContext: () => createToolWithContext,
1858
+ createTools: () => createTools,
1859
+ createTransformTool: () => createTransformTool,
1860
+ createTransportFromConfig: () => createTransportFromConfig,
1861
+ createValidationTool: () => createValidationTool,
1862
+ createVersioningTools: () => createVersioningTools,
1863
+ createWebSearchTool: () => createWebSearchTool,
1864
+ debuggingTools: () => debuggingTools,
1865
+ detectAntiPatterns: () => detectAntiPatterns,
1866
+ discoverEdgeMCPServers: () => discoverEdgeMCPServers,
1867
+ discoverMCPServersFromEnvironment: () => discoverMCPServersFromEnvironment,
1868
+ dispatchAgents: () => dispatchAgents,
1869
+ edgeMCPTransports: () => edgeMCPTransports,
1870
+ executePlan: () => executePlan,
1871
+ executeToolSafely: () => executeToolSafely,
1872
+ executeWithFallback: () => executeWithFallback,
1873
+ finishBranch: () => finishBranch,
1874
+ getEdgeCompatibleConfigs: () => getEdgeCompatibleConfigs,
1875
+ getGlobalConnectionManager: () => getGlobalConnectionManager,
1876
+ getMCPServers: () => getMCPServers,
1877
+ gitTools: () => gitTools,
1878
+ globalMCPConnectionPool: () => globalMCPConnectionPool,
1879
+ globalMCPHealthMonitor: () => globalMCPHealthMonitor,
1880
+ globalMCPToolCache: () => globalMCPToolCache,
1881
+ globalTransportSelector: () => globalTransportSelector,
1882
+ initSuperpowers: () => initSuperpowers,
1883
+ introduceSuperpowers: () => introduceSuperpowers,
1884
+ isAbortError: () => isAbortError,
1885
+ isEdgeRuntime: () => isEdgeRuntime,
1886
+ manageWorktree: () => manageWorktree,
1887
+ mcpTransports: () => mcpTransports,
1888
+ metaTools: () => metaTools,
1889
+ planningTools: () => planningTools,
1890
+ processCodeReview: () => processCodeReview,
1891
+ qualityTools: () => qualityTools,
1892
+ refineRequirements: () => refineRequirements,
1893
+ reviewCode: () => reviewCode,
1894
+ reviewDesign: () => reviewDesign,
1895
+ runSubagentDev: () => runSubagentDev,
1896
+ runTDDCycle: () => runTDDCycle,
1897
+ selectOptimalTransport: () => selectOptimalTransport,
1898
+ selectTransportForUseCase: () => selectTransportForUseCase,
1899
+ shareSkill: () => shareSkill,
1900
+ systemPrompts: () => systemPrompts,
1901
+ systematicDebug: () => systematicDebug,
1902
+ testMCPConnectivity: () => testMCPConnectivity,
1903
+ testSkill: () => testSkill,
1904
+ tiptapContextTool: () => tiptapContextTool,
1905
+ traceRootCause: () => traceRootCause,
1906
+ validateMCPEnvironment: () => validateMCPEnvironment,
1907
+ webSearchTool: () => webSearchTool,
1908
+ webSearchTools: () => webSearchTools,
1909
+ withAbortHandling: () => withAbortHandling,
1910
+ withCaching: () => withCaching,
1911
+ withRetryAndTimeout: () => withRetryAndTimeout,
1912
+ withSWRCaching: () => withSWRCaching,
1913
+ withValidation: () => withValidation,
1914
+ workflowTools: () => workflowTools,
1915
+ wrapToolHandler: () => wrapToolHandler,
1916
+ writeSkill: () => writeSkill
1917
+ });
1918
+
1919
+ //#endregion
1920
+ export { AISDKCompatibleMCPError, ANTI_PATTERN_SYSTEM_PROMPT, AgentDispatchOutputSchema, AntiPatternOutputSchema, ArtifactMetadataSchema, ArtifactType, AsyncPatternsOutputSchema, BRAINSTORM_SYSTEM_PROMPT, BrainstormOutputSchema, BranchFinishOutputSchema, CODE_REVIEW_SYSTEM_PROMPT, COMMIT_ANALYSIS_SYSTEM_PROMPT, CONDITION_BASED_WAITING_SYSTEM_PROMPT, CodeReviewOutputSchema, CodeReviewResponseOutputSchema, CommitAnalysisOutputSchema, DEFAULT_CACHE_CONFIG, DEFAULT_HEALTH_CHECK_CONFIG, DEFAULT_POOL_CONFIG, DEFAULT_RETRY_CONFIG, DEFAULT_STREAM_LIFECYCLE_CONFIG, DEFENSE_IN_DEPTH_SYSTEM_PROMPT, DESIGN_REVIEW_SYSTEM_PROMPT, DISPATCHING_AGENTS_SYSTEM_PROMPT, DefenseInDepthOutputSchema, DesignReviewOutputSchema, EXECUTING_PLANS_SYSTEM_PROMPT, FINISHING_BRANCH_SYSTEM_PROMPT, GIT_WORKTREE_SYSTEM_PROMPT, JsonSchemaToolRegistry, MCPConnectionError, MCPConnectionManager, MCPConnectionPool, MCPErrorHandlerFactory, MCPErrorUtils, MCPHealthMonitor, MCPHealthStatus, MCPRequestManager, MCPRetryableError, MCPStreamLifecycleManager, MCPToolCache, MCPTransportError, MCPTransportSelector, PLANNER_SYSTEM_PROMPT, PlanExecutionOutputSchema, PlanOutputSchema, RECEIVING_CODE_REVIEW_SYSTEM_PROMPT, ROOT_CAUSE_TRACING_SYSTEM_PROMPT, RootCauseTracingOutputSchema, SHARING_SKILLS_SYSTEM_PROMPT, SUBAGENT_DRIVEN_DEV_SYSTEM_PROMPT, SYSTEMATIC_DEBUGGING_SYSTEM_PROMPT, SkillShareOutputSchema, SkillTestOutputSchema, SkillWriteOutputSchema, StreamLifecyclePhase, SubagentDevOutputSchema, SuperpowersIntroOutputSchema, SystematicDebuggingOutputSchema, TDDOutputSchema, TDD_SYSTEM_PROMPT, TESTING_SKILLS_SYSTEM_PROMPT, ToolAbortError, ToolCache, USING_SUPERPOWERS_SYSTEM_PROMPT, WRITING_SKILLS_SYSTEM_PROMPT, WorktreeOutputSchema, allSuperpowerTools, analyzeAsyncPatterns, analyzeCommit, analyzeDefenseInDepth, batchApproval, codeReviewTools, combineAbortSignals, composeTools, consultArchitect, createArtifactCRUDTools, createArtifactCreationTool, createArtifactDeleteTool, createArtifactReadTool, createArtifactUpdateTool, createBashTool, createComputerTool, createConditionalTool, createEdgeMCPTools, createExaSearchTool, createGeneratorTool, createHITLTool, createJsonSchemaTool, createKeyBuilder, createLLMTool, createMCPStreamLifecycleManager, createMCPToolsForRequest, createMCPToolsForStreamText, createMCPToolsFromConfigs, createMCPToolsWithDefaults, createMCPToolsWithStreamLifecycle, createPaginatedTool, createPolicyChecker, createPollingTool, createPooledMCPTools, createRetryTool, createSelectiveKeyBuilder, createSimpleTool, createSmartMCPTools, createTimeoutAbort, createToolFactory, createToolFromZodSchema, createToolWithContext, createTools, createTransformTool, createTransportFromConfig, createValidationTool, createVersioningTools, createWebSearchTool, debuggingTools, detectAntiPatterns, discoverEdgeMCPServers, discoverMCPServersFromEnvironment, dispatchAgents, edgeMCPTransports, executePlan, executeToolSafely, executeWithFallback, finishBranch, getEdgeCompatibleConfigs, getGlobalConnectionManager, getMCPServers, gitTools, globalMCPConnectionPool, globalMCPHealthMonitor, globalMCPToolCache, globalTransportSelector, initSuperpowers, introduceSuperpowers, isAbortError, isEdgeRuntime, manageWorktree, mcpTransports, metaTools, planningTools, processCodeReview, qualityTools, refineRequirements, reviewCode, reviewDesign, runSubagentDev, runTDDCycle, selectOptimalTransport, selectTransportForUseCase, shareSkill, systemPrompts, systematicDebug, tools_exports as t, testMCPConnectivity, testSkill, tiptapContextTool, traceRootCause, validateMCPEnvironment, webSearchTool, webSearchTools, withAbortHandling, withCaching, withRetryAndTimeout, withSWRCaching, withValidation, workflowTools, wrapToolHandler, writeSkill };
1921
+ //# sourceMappingURL=tools.mjs.map