@od-oneapp/ai-platform 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (872) hide show
  1. package/README.md +235 -0
  2. package/dist/agents-base.d.mts +12 -0
  3. package/dist/agents-base.d.mts.map +1 -0
  4. package/dist/agents-base.mjs +20 -0
  5. package/dist/agents-base.mjs.map +1 -0
  6. package/dist/agents-control-flow.d.mts +115 -0
  7. package/dist/agents-control-flow.d.mts.map +1 -0
  8. package/dist/agents-control-flow.mjs +514 -0
  9. package/dist/agents-control-flow.mjs.map +1 -0
  10. package/dist/agents-coordinator.d.mts +11 -0
  11. package/dist/agents-coordinator.d.mts.map +1 -0
  12. package/dist/agents-coordinator.mjs +12 -0
  13. package/dist/agents-coordinator.mjs.map +1 -0
  14. package/dist/agents-experimental.d.mts +153 -0
  15. package/dist/agents-experimental.d.mts.map +1 -0
  16. package/dist/agents-experimental.mjs +580 -0
  17. package/dist/agents-experimental.mjs.map +1 -0
  18. package/dist/agents-fallback.d.mts +10 -0
  19. package/dist/agents-fallback.d.mts.map +1 -0
  20. package/dist/agents-fallback.mjs +15 -0
  21. package/dist/agents-fallback.mjs.map +1 -0
  22. package/dist/agents-multi-swarm.d.mts +9 -0
  23. package/dist/agents-multi-swarm.d.mts.map +1 -0
  24. package/dist/agents-multi-swarm.mjs +44 -0
  25. package/dist/agents-multi-swarm.mjs.map +1 -0
  26. package/dist/agents-multi.d.mts +10 -0
  27. package/dist/agents-multi.d.mts.map +1 -0
  28. package/dist/agents-multi.mjs +44 -0
  29. package/dist/agents-multi.mjs.map +1 -0
  30. package/dist/agents-observability.d.mts +161 -0
  31. package/dist/agents-observability.d.mts.map +1 -0
  32. package/dist/agents-observability.mjs +550 -0
  33. package/dist/agents-observability.mjs.map +1 -0
  34. package/dist/agents-patterns.d.mts +9 -0
  35. package/dist/agents-patterns.d.mts.map +1 -0
  36. package/dist/agents-patterns.mjs +18 -0
  37. package/dist/agents-patterns.mjs.map +1 -0
  38. package/dist/agents-persistence.d.mts +234 -0
  39. package/dist/agents-persistence.d.mts.map +1 -0
  40. package/dist/agents-persistence.mjs +447 -0
  41. package/dist/agents-persistence.mjs.map +1 -0
  42. package/dist/agents-triage.d.mts +11 -0
  43. package/dist/agents-triage.d.mts.map +1 -0
  44. package/dist/agents-triage.mjs +13 -0
  45. package/dist/agents-triage.mjs.map +1 -0
  46. package/dist/agents-workflows.d.mts +9 -0
  47. package/dist/agents-workflows.d.mts.map +1 -0
  48. package/dist/agents-workflows.mjs +9 -0
  49. package/dist/agents-workflows.mjs.map +1 -0
  50. package/dist/agents.d.mts +30 -0
  51. package/dist/agents.d.mts.map +1 -0
  52. package/dist/agents.mjs +50 -0
  53. package/dist/agents.mjs.map +1 -0
  54. package/dist/aggregation-8KJF1uzp.d.mts +276 -0
  55. package/dist/aggregation-8KJF1uzp.d.mts.map +1 -0
  56. package/dist/aggregation-BDop87kL.mjs +1180 -0
  57. package/dist/aggregation-BDop87kL.mjs.map +1 -0
  58. package/dist/ai-runtime-CDzQztTt.mjs +85 -0
  59. package/dist/ai-runtime-CDzQztTt.mjs.map +1 -0
  60. package/dist/ai-runtime-DIwOEc6g.d.mts +56 -0
  61. package/dist/ai-runtime-DIwOEc6g.d.mts.map +1 -0
  62. package/dist/ai-sdk-error-integration-D0GDqrM0.d.mts +553 -0
  63. package/dist/ai-sdk-error-integration-D0GDqrM0.d.mts.map +1 -0
  64. package/dist/approval-queue-BcDDQ4oQ.mjs +104 -0
  65. package/dist/approval-queue-BcDDQ4oQ.mjs.map +1 -0
  66. package/dist/approval-queue-CiKiFT9z.d.mts +21 -0
  67. package/dist/approval-queue-CiKiFT9z.d.mts.map +1 -0
  68. package/dist/audio-BzvN7r10.d.mts +79 -0
  69. package/dist/audio-BzvN7r10.d.mts.map +1 -0
  70. package/dist/audio-vBG_62ME.mjs +226 -0
  71. package/dist/audio-vBG_62ME.mjs.map +1 -0
  72. package/dist/audit-logger-Bb2JIcIk.d.mts +12 -0
  73. package/dist/audit-logger-Bb2JIcIk.d.mts.map +1 -0
  74. package/dist/audit-logger-CHIP8bRO.mjs +596 -0
  75. package/dist/audit-logger-CHIP8bRO.mjs.map +1 -0
  76. package/dist/auto-resume-BpUNbPtp.d.mts +160 -0
  77. package/dist/auto-resume-BpUNbPtp.d.mts.map +1 -0
  78. package/dist/auto-resume-BuFRNvAX.mjs +638 -0
  79. package/dist/auto-resume-BuFRNvAX.mjs.map +1 -0
  80. package/dist/budget-guard-C83KCH9V.d.mts +52 -0
  81. package/dist/budget-guard-C83KCH9V.d.mts.map +1 -0
  82. package/dist/budget-guard-d_b5rq4u.mjs +158 -0
  83. package/dist/budget-guard-d_b5rq4u.mjs.map +1 -0
  84. package/dist/budget-guard-gyhJS00s.mjs +234 -0
  85. package/dist/budget-guard-gyhJS00s.mjs.map +1 -0
  86. package/dist/buffer-BC8mvXHE.d.mts +98 -0
  87. package/dist/buffer-BC8mvXHE.d.mts.map +1 -0
  88. package/dist/buffer-CefJGbRy.mjs +289 -0
  89. package/dist/buffer-CefJGbRy.mjs.map +1 -0
  90. package/dist/caching-adapters.d.mts +5 -0
  91. package/dist/caching-adapters.mjs +3 -0
  92. package/dist/caching-strategies.d.mts +52 -0
  93. package/dist/caching-strategies.d.mts.map +1 -0
  94. package/dist/caching-strategies.mjs +703 -0
  95. package/dist/caching-strategies.mjs.map +1 -0
  96. package/dist/caching.d.mts +14 -0
  97. package/dist/caching.d.mts.map +1 -0
  98. package/dist/caching.mjs +15 -0
  99. package/dist/caching.mjs.map +1 -0
  100. package/dist/catalog.d.mts +19 -0
  101. package/dist/catalog.d.mts.map +1 -0
  102. package/dist/catalog.mjs +1114 -0
  103. package/dist/catalog.mjs.map +1 -0
  104. package/dist/chunk-CkzbjWQW.mjs +20 -0
  105. package/dist/circuit-breaker-DoKWPORd.mjs +262 -0
  106. package/dist/circuit-breaker-DoKWPORd.mjs.map +1 -0
  107. package/dist/circuit-breaker-Mey3E7tW.d.mts +64 -0
  108. package/dist/circuit-breaker-Mey3E7tW.d.mts.map +1 -0
  109. package/dist/citation-generator-C-9RpbHq.mjs +103 -0
  110. package/dist/citation-generator-C-9RpbHq.mjs.map +1 -0
  111. package/dist/citation-generator-CDSymDs_.d.mts +18 -0
  112. package/dist/citation-generator-CDSymDs_.d.mts.map +1 -0
  113. package/dist/client-CpacYDIE.mjs +882 -0
  114. package/dist/client-CpacYDIE.mjs.map +1 -0
  115. package/dist/client.d.mts +103 -0
  116. package/dist/client.d.mts.map +1 -0
  117. package/dist/client.mjs +470 -0
  118. package/dist/client.mjs.map +1 -0
  119. package/dist/compliance-approval-queue-DQGLojAm.mjs +172 -0
  120. package/dist/compliance-approval-queue-DQGLojAm.mjs.map +1 -0
  121. package/dist/compliance-approval-queue-IrMxFfSJ.d.mts +99 -0
  122. package/dist/compliance-approval-queue-IrMxFfSJ.d.mts.map +1 -0
  123. package/dist/compliance-wrapper-CrOMHhHN.mjs +528 -0
  124. package/dist/compliance-wrapper-CrOMHhHN.mjs.map +1 -0
  125. package/dist/conditions-DmQ6Y1Wt.mjs +179 -0
  126. package/dist/conditions-DmQ6Y1Wt.mjs.map +1 -0
  127. package/dist/conditions-zDrKfrc3.d.mts +42 -0
  128. package/dist/conditions-zDrKfrc3.d.mts.map +1 -0
  129. package/dist/console-BGMxxPZN.mjs +181 -0
  130. package/dist/console-BGMxxPZN.mjs.map +1 -0
  131. package/dist/console-DqEqZd4A.d.mts +76 -0
  132. package/dist/console-DqEqZd4A.d.mts.map +1 -0
  133. package/dist/controller-BOy3-xbC.mjs +501 -0
  134. package/dist/controller-BOy3-xbC.mjs.map +1 -0
  135. package/dist/controller-Y0NGosbJ.d.mts +104 -0
  136. package/dist/controller-Y0NGosbJ.d.mts.map +1 -0
  137. package/dist/coordinator-agent-BglqZLwo.d.mts +54 -0
  138. package/dist/coordinator-agent-BglqZLwo.d.mts.map +1 -0
  139. package/dist/coordinator-agent-WFWBRL-G.mjs +236 -0
  140. package/dist/coordinator-agent-WFWBRL-G.mjs.map +1 -0
  141. package/dist/crypto-8ABhc3TD.mjs +40 -0
  142. package/dist/crypto-8ABhc3TD.mjs.map +1 -0
  143. package/dist/environment-CSoJb0SW.mjs +255 -0
  144. package/dist/environment-CSoJb0SW.mjs.map +1 -0
  145. package/dist/error-handling-DNVkm6RY.mjs +1334 -0
  146. package/dist/error-handling-DNVkm6RY.mjs.map +1 -0
  147. package/dist/errors-CQ8tF4dP.mjs +985 -0
  148. package/dist/errors-CQ8tF4dP.mjs.map +1 -0
  149. package/dist/errors-CfYdVeum.d.mts +212 -0
  150. package/dist/errors-CfYdVeum.d.mts.map +1 -0
  151. package/dist/errors-Dtn-UeRi.mjs +61 -0
  152. package/dist/errors-Dtn-UeRi.mjs.map +1 -0
  153. package/dist/evaluator-Cs84qkr8.mjs +91 -0
  154. package/dist/evaluator-Cs84qkr8.mjs.map +1 -0
  155. package/dist/evaluator-optimizer-De67_mJC.mjs +1086 -0
  156. package/dist/evaluator-optimizer-De67_mJC.mjs.map +1 -0
  157. package/dist/evaluator-optimizer-pattern-B5939s2Z.mjs +367 -0
  158. package/dist/evaluator-optimizer-pattern-B5939s2Z.mjs.map +1 -0
  159. package/dist/evaluator-optimizer-pattern-D1AJrzBD.d.mts +72 -0
  160. package/dist/evaluator-optimizer-pattern-D1AJrzBD.d.mts.map +1 -0
  161. package/dist/factory-DP6VSl8C.mjs +307 -0
  162. package/dist/factory-DP6VSl8C.mjs.map +1 -0
  163. package/dist/generative-ui-catalog.d.mts +8 -0
  164. package/dist/generative-ui-catalog.d.mts.map +1 -0
  165. package/dist/generative-ui-catalog.mjs +679 -0
  166. package/dist/generative-ui-catalog.mjs.map +1 -0
  167. package/dist/generative-ui-registry.d.mts +195 -0
  168. package/dist/generative-ui-registry.d.mts.map +1 -0
  169. package/dist/generative-ui-registry.mjs +250 -0
  170. package/dist/generative-ui-registry.mjs.map +1 -0
  171. package/dist/generative-ui-stream.d.mts +23 -0
  172. package/dist/generative-ui-stream.d.mts.map +1 -0
  173. package/dist/generative-ui-stream.mjs +219 -0
  174. package/dist/generative-ui-stream.mjs.map +1 -0
  175. package/dist/generative-ui-types.d.mts +123 -0
  176. package/dist/generative-ui-types.d.mts.map +1 -0
  177. package/dist/generative-ui-types.mjs +1 -0
  178. package/dist/generative-ui.d.mts +13 -0
  179. package/dist/generative-ui.d.mts.map +1 -0
  180. package/dist/generative-ui.mjs +21 -0
  181. package/dist/generative-ui.mjs.map +1 -0
  182. package/dist/governance-audit.d.mts +3 -0
  183. package/dist/governance-audit.mjs +3 -0
  184. package/dist/governance-compliance.d.mts +5 -0
  185. package/dist/governance-compliance.mjs +4 -0
  186. package/dist/governance-policies.d.mts +4 -0
  187. package/dist/governance-policies.mjs +4 -0
  188. package/dist/governance-tenancy.d.mts +3 -0
  189. package/dist/governance-tenancy.mjs +3 -0
  190. package/dist/governance.d.mts +88 -0
  191. package/dist/governance.d.mts.map +1 -0
  192. package/dist/governance.mjs +432 -0
  193. package/dist/governance.mjs.map +1 -0
  194. package/dist/grounding-attribution.d.mts +63 -0
  195. package/dist/grounding-attribution.d.mts.map +1 -0
  196. package/dist/grounding-attribution.mjs +259 -0
  197. package/dist/grounding-attribution.mjs.map +1 -0
  198. package/dist/grounding-citation.d.mts +2 -0
  199. package/dist/grounding-citation.mjs +3 -0
  200. package/dist/grounding-context.d.mts +9 -0
  201. package/dist/grounding-context.d.mts.map +1 -0
  202. package/dist/grounding-context.mjs +19 -0
  203. package/dist/grounding-context.mjs.map +1 -0
  204. package/dist/grounding-embed.d.mts +102 -0
  205. package/dist/grounding-embed.d.mts.map +1 -0
  206. package/dist/grounding-embed.mjs +417 -0
  207. package/dist/grounding-embed.mjs.map +1 -0
  208. package/dist/grounding-hallucination.d.mts +44 -0
  209. package/dist/grounding-hallucination.d.mts.map +1 -0
  210. package/dist/grounding-hallucination.mjs +115 -0
  211. package/dist/grounding-hallucination.mjs.map +1 -0
  212. package/dist/grounding-proof-map.d.mts +9 -0
  213. package/dist/grounding-proof-map.d.mts.map +1 -0
  214. package/dist/grounding-proof-map.mjs +26 -0
  215. package/dist/grounding-proof-map.mjs.map +1 -0
  216. package/dist/grounding-rag.d.mts +10 -0
  217. package/dist/grounding-rag.d.mts.map +1 -0
  218. package/dist/grounding-rag.mjs +27 -0
  219. package/dist/grounding-rag.mjs.map +1 -0
  220. package/dist/grounding-verification.d.mts +48 -0
  221. package/dist/grounding-verification.d.mts.map +1 -0
  222. package/dist/grounding-verification.mjs +224 -0
  223. package/dist/grounding-verification.mjs.map +1 -0
  224. package/dist/grounding.d.mts +24 -0
  225. package/dist/grounding.d.mts.map +1 -0
  226. package/dist/grounding.mjs +77 -0
  227. package/dist/grounding.mjs.map +1 -0
  228. package/dist/hitl-active-learning.d.mts +41 -0
  229. package/dist/hitl-active-learning.d.mts.map +1 -0
  230. package/dist/hitl-active-learning.mjs +178 -0
  231. package/dist/hitl-active-learning.mjs.map +1 -0
  232. package/dist/hitl-annotation.d.mts +74 -0
  233. package/dist/hitl-annotation.d.mts.map +1 -0
  234. package/dist/hitl-annotation.mjs +170 -0
  235. package/dist/hitl-annotation.mjs.map +1 -0
  236. package/dist/hitl-approval.d.mts +2 -0
  237. package/dist/hitl-approval.mjs +3 -0
  238. package/dist/hitl-feedback.d.mts +59 -0
  239. package/dist/hitl-feedback.d.mts.map +1 -0
  240. package/dist/hitl-feedback.mjs +137 -0
  241. package/dist/hitl-feedback.mjs.map +1 -0
  242. package/dist/hitl-review.d.mts +2 -0
  243. package/dist/hitl-review.mjs +3 -0
  244. package/dist/hitl.d.mts +14 -0
  245. package/dist/hitl.d.mts.map +1 -0
  246. package/dist/hitl.mjs +22 -0
  247. package/dist/hitl.mjs.map +1 -0
  248. package/dist/index-B17HT-VL.d.mts +285 -0
  249. package/dist/index-B17HT-VL.d.mts.map +1 -0
  250. package/dist/index-BDwgsK9B.d.mts +101 -0
  251. package/dist/index-BDwgsK9B.d.mts.map +1 -0
  252. package/dist/index-BGgMn_Ev.d.mts +2615 -0
  253. package/dist/index-BGgMn_Ev.d.mts.map +1 -0
  254. package/dist/index-DOqe5r9G.d.mts +318 -0
  255. package/dist/index-DOqe5r9G.d.mts.map +1 -0
  256. package/dist/index-DotINT7o.d.mts +1004 -0
  257. package/dist/index-DotINT7o.d.mts.map +1 -0
  258. package/dist/index-URlW7aD1.d.mts +67 -0
  259. package/dist/index-URlW7aD1.d.mts.map +1 -0
  260. package/dist/index.d.mts +64 -0
  261. package/dist/index.d.mts.map +1 -0
  262. package/dist/index.mjs +46 -0
  263. package/dist/index.mjs.map +1 -0
  264. package/dist/integrations-blob-storage.d.mts +25 -0
  265. package/dist/integrations-blob-storage.d.mts.map +1 -0
  266. package/dist/integrations-blob-storage.mjs +3 -0
  267. package/dist/integrations-notifications.d.mts +2 -0
  268. package/dist/integrations-notifications.mjs +3 -0
  269. package/dist/integrations-rate-limit.d.mts +27 -0
  270. package/dist/integrations-rate-limit.d.mts.map +1 -0
  271. package/dist/integrations-rate-limit.mjs +30 -0
  272. package/dist/integrations-rate-limit.mjs.map +1 -0
  273. package/dist/integrations-redis.d.mts +3 -0
  274. package/dist/integrations-redis.mjs +3 -0
  275. package/dist/integrations-stream.d.mts +14 -0
  276. package/dist/integrations-stream.d.mts.map +1 -0
  277. package/dist/integrations-stream.mjs +3 -0
  278. package/dist/integrations.d.mts +7 -0
  279. package/dist/integrations.mjs +7 -0
  280. package/dist/log-adapter-BLegSZtz.d.mts +16 -0
  281. package/dist/log-adapter-BLegSZtz.d.mts.map +1 -0
  282. package/dist/log-adapter-PPe_2Pwv.mjs +28 -0
  283. package/dist/log-adapter-PPe_2Pwv.mjs.map +1 -0
  284. package/dist/loop-BOYEtr2g.mjs +520 -0
  285. package/dist/loop-BOYEtr2g.mjs.map +1 -0
  286. package/dist/loop-C-tBBOqi.d.mts +219 -0
  287. package/dist/loop-C-tBBOqi.d.mts.map +1 -0
  288. package/dist/middleware-5wQ9bANW.mjs +306 -0
  289. package/dist/middleware-5wQ9bANW.mjs.map +1 -0
  290. package/dist/middleware-C1apSrj0.mjs +613 -0
  291. package/dist/middleware-C1apSrj0.mjs.map +1 -0
  292. package/dist/middleware-C7k0uItW.d.mts +9 -0
  293. package/dist/middleware-C7k0uItW.d.mts.map +1 -0
  294. package/dist/middleware-CZQCTHfl.mjs +366 -0
  295. package/dist/middleware-CZQCTHfl.mjs.map +1 -0
  296. package/dist/models.d.mts +11 -0
  297. package/dist/models.d.mts.map +1 -0
  298. package/dist/models.mjs +32 -0
  299. package/dist/models.mjs.map +1 -0
  300. package/dist/observability-analytics.d.mts +107 -0
  301. package/dist/observability-analytics.d.mts.map +1 -0
  302. package/dist/observability-analytics.mjs +409 -0
  303. package/dist/observability-analytics.mjs.map +1 -0
  304. package/dist/observability-cost.d.mts +10 -0
  305. package/dist/observability-cost.d.mts.map +1 -0
  306. package/dist/observability-cost.mjs +15 -0
  307. package/dist/observability-cost.mjs.map +1 -0
  308. package/dist/observability-telemetry.d.mts +111 -0
  309. package/dist/observability-telemetry.d.mts.map +1 -0
  310. package/dist/observability-telemetry.mjs +343 -0
  311. package/dist/observability-telemetry.mjs.map +1 -0
  312. package/dist/observability-tracing.d.mts +10 -0
  313. package/dist/observability-tracing.d.mts.map +1 -0
  314. package/dist/observability-tracing.mjs +17 -0
  315. package/dist/observability-tracing.mjs.map +1 -0
  316. package/dist/observability.d.mts +15 -0
  317. package/dist/observability.d.mts.map +1 -0
  318. package/dist/observability.mjs +17 -0
  319. package/dist/observability.mjs.map +1 -0
  320. package/dist/optimizer-DhXXpci6.mjs +97 -0
  321. package/dist/optimizer-DhXXpci6.mjs.map +1 -0
  322. package/dist/output-multimodal.d.mts +9 -0
  323. package/dist/output-multimodal.d.mts.map +1 -0
  324. package/dist/output-multimodal.mjs +18 -0
  325. package/dist/output-multimodal.mjs.map +1 -0
  326. package/dist/output.d.mts +11 -0
  327. package/dist/output.d.mts.map +1 -0
  328. package/dist/output.mjs +40 -0
  329. package/dist/output.mjs.map +1 -0
  330. package/dist/pii-filter-3AxmYSiu.d.mts +23 -0
  331. package/dist/pii-filter-3AxmYSiu.d.mts.map +1 -0
  332. package/dist/pipelines.d.mts +448 -0
  333. package/dist/pipelines.d.mts.map +1 -0
  334. package/dist/pipelines.mjs +1534 -0
  335. package/dist/pipelines.mjs.map +1 -0
  336. package/dist/prompt-injection-DQXchzsV.d.mts +8 -0
  337. package/dist/prompt-injection-DQXchzsV.d.mts.map +1 -0
  338. package/dist/prompt-injection-RpoLPwSa.mjs +52 -0
  339. package/dist/prompt-injection-RpoLPwSa.mjs.map +1 -0
  340. package/dist/prompts.d.mts +192 -0
  341. package/dist/prompts.d.mts.map +1 -0
  342. package/dist/prompts.mjs +732 -0
  343. package/dist/prompts.mjs.map +1 -0
  344. package/dist/protocol-DfBiEsnl.d.mts +112 -0
  345. package/dist/protocol-DfBiEsnl.d.mts.map +1 -0
  346. package/dist/quota-manager-0iPMkQWN.d.mts +62 -0
  347. package/dist/quota-manager-0iPMkQWN.d.mts.map +1 -0
  348. package/dist/quota-manager-D_N7FuQ2.mjs +180 -0
  349. package/dist/quota-manager-D_N7FuQ2.mjs.map +1 -0
  350. package/dist/redaction-utils-DcQwsiNh.mjs +438 -0
  351. package/dist/redaction-utils-DcQwsiNh.mjs.map +1 -0
  352. package/dist/redis-CpsSrF8K.mjs +102 -0
  353. package/dist/redis-CpsSrF8K.mjs.map +1 -0
  354. package/dist/redis-CwguYFGh.d.mts +33 -0
  355. package/dist/redis-CwguYFGh.d.mts.map +1 -0
  356. package/dist/registry-CsD3iTIx.mjs +190 -0
  357. package/dist/registry-CsD3iTIx.mjs.map +1 -0
  358. package/dist/registry-DVPWzkXR.d.mts +36 -0
  359. package/dist/registry-DVPWzkXR.d.mts.map +1 -0
  360. package/dist/reranking-BpWYhYzl.d.mts +72 -0
  361. package/dist/reranking-BpWYhYzl.d.mts.map +1 -0
  362. package/dist/reranking-Ck8aKZW7.mjs +331 -0
  363. package/dist/reranking-Ck8aKZW7.mjs.map +1 -0
  364. package/dist/resumable-adapter-CO1HtsgJ.mjs +21 -0
  365. package/dist/resumable-adapter-CO1HtsgJ.mjs.map +1 -0
  366. package/dist/review-trigger-DmAsiQlM.d.mts +24 -0
  367. package/dist/review-trigger-DmAsiQlM.d.mts.map +1 -0
  368. package/dist/review-trigger-DwXfpww9.mjs +112 -0
  369. package/dist/review-trigger-DwXfpww9.mjs.map +1 -0
  370. package/dist/safe-context-BynhkTKR.d.mts +54 -0
  371. package/dist/safe-context-BynhkTKR.d.mts.map +1 -0
  372. package/dist/safe-context-C5A3Wv3b.mjs +143 -0
  373. package/dist/safe-context-C5A3Wv3b.mjs.map +1 -0
  374. package/dist/schema-Bu2noOZ4.mjs +27 -0
  375. package/dist/schema-Bu2noOZ4.mjs.map +1 -0
  376. package/dist/schema-CwFvuCnA.mjs +97 -0
  377. package/dist/schema-CwFvuCnA.mjs.map +1 -0
  378. package/dist/schema-Wz-1-ro9.d.mts +37 -0
  379. package/dist/schema-Wz-1-ro9.d.mts.map +1 -0
  380. package/dist/schemas-CxQtxIga.mjs +62 -0
  381. package/dist/schemas-CxQtxIga.mjs.map +1 -0
  382. package/dist/schemas-DBOhxgW7.d.mts +32 -0
  383. package/dist/schemas-DBOhxgW7.d.mts.map +1 -0
  384. package/dist/schemas-Dp_OCqBt.d.mts +63 -0
  385. package/dist/schemas-Dp_OCqBt.d.mts.map +1 -0
  386. package/dist/schemas-SwCsnT0z.mjs +83 -0
  387. package/dist/schemas-SwCsnT0z.mjs.map +1 -0
  388. package/dist/sdk-errors.d.mts +2 -0
  389. package/dist/sdk-errors.mjs +3 -0
  390. package/dist/sdk-experimental.d.mts +59 -0
  391. package/dist/sdk-experimental.d.mts.map +1 -0
  392. package/dist/sdk-experimental.mjs +193 -0
  393. package/dist/sdk-experimental.mjs.map +1 -0
  394. package/dist/sdk-stop-conditions.d.mts +3 -0
  395. package/dist/sdk-stop-conditions.mjs +3 -0
  396. package/dist/sdk.d.mts +15 -0
  397. package/dist/sdk.d.mts.map +1 -0
  398. package/dist/sdk.mjs +50 -0
  399. package/dist/sdk.mjs.map +1 -0
  400. package/dist/security-guardrails.d.mts +3 -0
  401. package/dist/security-guardrails.mjs +3 -0
  402. package/dist/security-injection.d.mts +2 -0
  403. package/dist/security-injection.mjs +3 -0
  404. package/dist/security.d.mts +12 -0
  405. package/dist/security.d.mts.map +1 -0
  406. package/dist/security.mjs +18 -0
  407. package/dist/security.mjs.map +1 -0
  408. package/dist/server.d.mts +420 -0
  409. package/dist/server.d.mts.map +1 -0
  410. package/dist/server.mjs +2225 -0
  411. package/dist/server.mjs.map +1 -0
  412. package/dist/shared.d.mts +2 -0
  413. package/dist/shared.mjs +3 -0
  414. package/dist/streaming-control.d.mts +2 -0
  415. package/dist/streaming-control.mjs +4 -0
  416. package/dist/streaming-core.d.mts +4 -0
  417. package/dist/streaming-core.mjs +3 -0
  418. package/dist/streaming-infra-resilience.d.mts +120 -0
  419. package/dist/streaming-infra-resilience.d.mts.map +1 -0
  420. package/dist/streaming-infra-resilience.mjs +358 -0
  421. package/dist/streaming-infra-resilience.mjs.map +1 -0
  422. package/dist/streaming-infra-transport.d.mts +57 -0
  423. package/dist/streaming-infra-transport.d.mts.map +1 -0
  424. package/dist/streaming-infra-transport.mjs +488 -0
  425. package/dist/streaming-infra-transport.mjs.map +1 -0
  426. package/dist/streaming-infra.d.mts +5 -0
  427. package/dist/streaming-infra.mjs +5 -0
  428. package/dist/streaming.d.mts +17 -0
  429. package/dist/streaming.d.mts.map +1 -0
  430. package/dist/streaming.mjs +71 -0
  431. package/dist/streaming.mjs.map +1 -0
  432. package/dist/telemetry-2eKMojIb.mjs +1046 -0
  433. package/dist/telemetry-2eKMojIb.mjs.map +1 -0
  434. package/dist/telemetry-C2t03dwD.d.mts +59 -0
  435. package/dist/telemetry-C2t03dwD.d.mts.map +1 -0
  436. package/dist/tool-Btbththq.d.mts +253 -0
  437. package/dist/tool-Btbththq.d.mts.map +1 -0
  438. package/dist/tool-JSf8JXZ8.mjs +1150 -0
  439. package/dist/tool-JSf8JXZ8.mjs.map +1 -0
  440. package/dist/tool-safety-CZO8a4D4.d.mts +60 -0
  441. package/dist/tool-safety-CZO8a4D4.d.mts.map +1 -0
  442. package/dist/tool-safety-DXtYDXod.mjs +319 -0
  443. package/dist/tool-safety-DXtYDXod.mjs.map +1 -0
  444. package/dist/tools-BuS2Uv0q.mjs +1708 -0
  445. package/dist/tools-BuS2Uv0q.mjs.map +1 -0
  446. package/dist/tools-approval.d.mts +99 -0
  447. package/dist/tools-approval.d.mts.map +1 -0
  448. package/dist/tools-approval.mjs +395 -0
  449. package/dist/tools-approval.mjs.map +1 -0
  450. package/dist/tools-compliance.d.mts +67 -0
  451. package/dist/tools-compliance.d.mts.map +1 -0
  452. package/dist/tools-compliance.mjs +330 -0
  453. package/dist/tools-compliance.mjs.map +1 -0
  454. package/dist/tools-computer.d.mts +25 -0
  455. package/dist/tools-computer.d.mts.map +1 -0
  456. package/dist/tools-computer.mjs +64 -0
  457. package/dist/tools-computer.mjs.map +1 -0
  458. package/dist/tools-core.d.mts +3 -0
  459. package/dist/tools-core.mjs +3 -0
  460. package/dist/tools-mcp.d.mts +3 -0
  461. package/dist/tools-mcp.mjs +5 -0
  462. package/dist/tools-superpowers.d.mts +2 -0
  463. package/dist/tools-superpowers.mjs +3 -0
  464. package/dist/tools.d.mts +401 -0
  465. package/dist/tools.d.mts.map +1 -0
  466. package/dist/tools.mjs +1921 -0
  467. package/dist/tools.mjs.map +1 -0
  468. package/dist/transport-selector-D-Ib05X1.mjs +1936 -0
  469. package/dist/transport-selector-D-Ib05X1.mjs.map +1 -0
  470. package/dist/triage-agent-BEsXg5sw.d.mts +63 -0
  471. package/dist/triage-agent-BEsXg5sw.d.mts.map +1 -0
  472. package/dist/triage-agent-CBsfX-HW.mjs +167 -0
  473. package/dist/triage-agent-CBsfX-HW.mjs.map +1 -0
  474. package/dist/types-BPnq3GQo.d.mts +23 -0
  475. package/dist/types-BPnq3GQo.d.mts.map +1 -0
  476. package/dist/types-BjWgimpY.d.mts +16 -0
  477. package/dist/types-BjWgimpY.d.mts.map +1 -0
  478. package/dist/types-BxD-5btB.d.mts +41 -0
  479. package/dist/types-BxD-5btB.d.mts.map +1 -0
  480. package/dist/types-By-r93bE.d.mts +36 -0
  481. package/dist/types-By-r93bE.d.mts.map +1 -0
  482. package/dist/types-CLBWFRZN.d.mts +69 -0
  483. package/dist/types-CLBWFRZN.d.mts.map +1 -0
  484. package/dist/types-CQ0HFd0u.d.mts +62 -0
  485. package/dist/types-CQ0HFd0u.d.mts.map +1 -0
  486. package/dist/types-D3zJb59_.d.mts +47 -0
  487. package/dist/types-D3zJb59_.d.mts.map +1 -0
  488. package/dist/types-DJnugQX0.d.mts +80 -0
  489. package/dist/types-DJnugQX0.d.mts.map +1 -0
  490. package/dist/types-DbUfMCnT.d.mts +70 -0
  491. package/dist/types-DbUfMCnT.d.mts.map +1 -0
  492. package/dist/upstash-adapter-D96Caq2O.mjs +22 -0
  493. package/dist/upstash-adapter-D96Caq2O.mjs.map +1 -0
  494. package/dist/upstash-adapter-DD4433dx.d.mts +8 -0
  495. package/dist/upstash-adapter-DD4433dx.d.mts.map +1 -0
  496. package/dist/utils-BlYhcD6M.mjs +319 -0
  497. package/dist/utils-BlYhcD6M.mjs.map +1 -0
  498. package/dist/utils-DpJGOb3y.d.mts +120 -0
  499. package/dist/utils-DpJGOb3y.d.mts.map +1 -0
  500. package/dist/vercel-blob-adapter-CkOXLT2D.mjs +25 -0
  501. package/dist/vercel-blob-adapter-CkOXLT2D.mjs.map +1 -0
  502. package/dist/xai-CbV_dCnP.mjs +1600 -0
  503. package/dist/xai-CbV_dCnP.mjs.map +1 -0
  504. package/package.json +479 -0
  505. package/src/agents/base/factory.ts +382 -0
  506. package/src/agents/base/index.ts +8 -0
  507. package/src/agents/base/schemas.ts +117 -0
  508. package/src/agents/base/types.ts +192 -0
  509. package/src/agents/control-flow/index.ts +683 -0
  510. package/src/agents/coordinator/coordinator-agent.ts +381 -0
  511. package/src/agents/coordinator/index.ts +6 -0
  512. package/src/agents/default-agent.ts +211 -0
  513. package/src/agents/evaluator-optimizer/README.md +612 -0
  514. package/src/agents/evaluator-optimizer/evaluator-optimizer.example.ts +437 -0
  515. package/src/agents/evaluator-optimizer/evaluator.ts +282 -0
  516. package/src/agents/evaluator-optimizer/index.test.ts +416 -0
  517. package/src/agents/evaluator-optimizer/index.ts +519 -0
  518. package/src/agents/evaluator-optimizer/optimizer.ts +322 -0
  519. package/src/agents/evaluator-optimizer/schema.ts +302 -0
  520. package/src/agents/evaluator-optimizer/utils.ts +42 -0
  521. package/src/agents/experimental/index.ts +1095 -0
  522. package/src/agents/experimental/types.ts +212 -0
  523. package/src/agents/fallback/index.ts +18 -0
  524. package/src/agents/fallback/recovery/circuit-breaker.ts +166 -0
  525. package/src/agents/fallback/strategies/model-fallback.ts +192 -0
  526. package/src/agents/fallback/types.ts +87 -0
  527. package/src/agents/governance-agent.ts +446 -0
  528. package/src/agents/index.ts +79 -0
  529. package/src/agents/multi/coordination/index.ts +6 -0
  530. package/src/agents/multi/coordination/message-bus.ts +144 -0
  531. package/src/agents/multi/index.ts +6 -0
  532. package/src/agents/multi/state/index.ts +162 -0
  533. package/src/agents/multi/supervisor/index.ts +7 -0
  534. package/src/agents/multi/supervisor/supervisor.ts +254 -0
  535. package/src/agents/multi/swarm/aggregation.ts +466 -0
  536. package/src/agents/multi/swarm/communication.ts +388 -0
  537. package/src/agents/multi/swarm/coordination.ts +380 -0
  538. package/src/agents/multi/swarm/index.ts +73 -0
  539. package/src/agents/multi/swarm/swarm-executor.ts +479 -0
  540. package/src/agents/multi/types.ts +181 -0
  541. package/src/agents/observability/index.ts +914 -0
  542. package/src/agents/orchestrator.ts +218 -0
  543. package/src/agents/patterns/README.md +512 -0
  544. package/src/agents/patterns/evaluator-optimizer-pattern.example.ts +455 -0
  545. package/src/agents/patterns/evaluator-optimizer-pattern.ts +653 -0
  546. package/src/agents/patterns/index.ts +26 -0
  547. package/src/agents/persistence/index.ts +726 -0
  548. package/src/agents/tools/index.ts +291 -0
  549. package/src/agents/tools/mcp.ts +188 -0
  550. package/src/agents/triage/index.ts +6 -0
  551. package/src/agents/triage/triage-agent.ts +280 -0
  552. package/src/agents/workflows/index.ts +6 -0
  553. package/src/agents/workflows/interfaces.ts +36 -0
  554. package/src/agents/workflows/schema.ts +20 -0
  555. package/src/caching/adapters/index.ts +7 -0
  556. package/src/caching/adapters/memory.ts +77 -0
  557. package/src/caching/adapters/redis.ts +60 -0
  558. package/src/caching/index.ts +17 -0
  559. package/src/caching/middleware.ts +452 -0
  560. package/src/caching/strategies/index.ts +1008 -0
  561. package/src/caching/types.ts +47 -0
  562. package/src/catalog.ts +921 -0
  563. package/src/client/chat-usage.ts +53 -0
  564. package/src/client/hooks.ts +343 -0
  565. package/src/client/index.ts +36 -0
  566. package/src/client/message-utils.ts +29 -0
  567. package/src/client/use-generative-ui.ts +174 -0
  568. package/src/client/utils.ts +66 -0
  569. package/src/generative-ui/catalog.ts +653 -0
  570. package/src/generative-ui/index.ts +82 -0
  571. package/src/generative-ui/registry.ts +273 -0
  572. package/src/generative-ui/stream.ts +324 -0
  573. package/src/generative-ui/types.ts +376 -0
  574. package/src/governance/audit/audit-logger.ts +239 -0
  575. package/src/governance/audit/audit-schema.ts +82 -0
  576. package/src/governance/audit/index.ts +6 -0
  577. package/src/governance/compliance/abac/policy-engine.ts +175 -0
  578. package/src/governance/compliance/abac/types.ts +40 -0
  579. package/src/governance/compliance/approval/compliance-approval-queue.ts +217 -0
  580. package/src/governance/compliance/index.ts +16 -0
  581. package/src/governance/compliance/schemas.ts +68 -0
  582. package/src/governance/compliance/types.ts +143 -0
  583. package/src/governance/compliance/validators/phi-detector.ts +145 -0
  584. package/src/governance/compliance/validators/redaction-utils.ts +176 -0
  585. package/src/governance/compliance/validators/safe-harbor.ts +135 -0
  586. package/src/governance/entitlements/index.ts +585 -0
  587. package/src/governance/entitlements/middleware.ts +651 -0
  588. package/src/governance/entitlements/rate-limiter.ts +711 -0
  589. package/src/governance/index.ts +32 -0
  590. package/src/governance/policies/guardrails.ts +1121 -0
  591. package/src/governance/policies/index.ts +42 -0
  592. package/src/governance/policies/loop-controls.ts +136 -0
  593. package/src/governance/policies/telemetry.ts +63 -0
  594. package/src/governance/tenancy/index.ts +30 -0
  595. package/src/governance/tenancy/isolation/context.ts +92 -0
  596. package/src/governance/tenancy/isolation/index.ts +13 -0
  597. package/src/governance/tenancy/quotas/index.ts +11 -0
  598. package/src/governance/tenancy/quotas/quota-manager.ts +180 -0
  599. package/src/governance/tenancy/types.ts +66 -0
  600. package/src/governance/types.ts +16 -0
  601. package/src/governance/versioning/index.ts +573 -0
  602. package/src/grounding/attribution/index.ts +424 -0
  603. package/src/grounding/citation/citation-generator.ts +174 -0
  604. package/src/grounding/citation/index.ts +12 -0
  605. package/src/grounding/context/index.ts +32 -0
  606. package/src/grounding/context/safe-context.ts +116 -0
  607. package/src/grounding/context/types.ts +62 -0
  608. package/src/grounding/context-engineering/error-handling.ts +359 -0
  609. package/src/grounding/context-engineering/index.ts +23 -0
  610. package/src/grounding/context-engineering/memory.ts +559 -0
  611. package/src/grounding/context-engineering/tool-masking.ts +338 -0
  612. package/src/grounding/embed/index.ts +704 -0
  613. package/src/grounding/embed/reranking.ts +604 -0
  614. package/src/grounding/hallucination/index.ts +223 -0
  615. package/src/grounding/index.ts +82 -0
  616. package/src/grounding/proof-map/applyPatch.ts +172 -0
  617. package/src/grounding/proof-map/index.ts +41 -0
  618. package/src/grounding/proof-map/loop.ts +275 -0
  619. package/src/grounding/proof-map/schema.ts +217 -0
  620. package/src/grounding/rag/__tests__/pipeline.test.ts +274 -0
  621. package/src/grounding/rag/__tests__/tool.test.ts +202 -0
  622. package/src/grounding/rag/__tests__/trace.test.ts +229 -0
  623. package/src/grounding/rag/circuit-breaker.ts +152 -0
  624. package/src/grounding/rag/index.ts +64 -0
  625. package/src/grounding/rag/pipeline.ts +602 -0
  626. package/src/grounding/rag/tool.ts +281 -0
  627. package/src/grounding/rag/trace.ts +503 -0
  628. package/src/grounding/rag/types.ts +284 -0
  629. package/src/grounding/retrieval/in-memory-store.ts +107 -0
  630. package/src/grounding/sources/index.ts +943 -0
  631. package/src/grounding/tests/applyPatch.test.ts +194 -0
  632. package/src/grounding/tests/loop.test.ts +141 -0
  633. package/src/grounding/tests/schema.test.ts +160 -0
  634. package/src/grounding/types.ts +100 -0
  635. package/src/grounding/verification/index.ts +419 -0
  636. package/src/hitl/active-learning/index.ts +332 -0
  637. package/src/hitl/annotation/index.ts +362 -0
  638. package/src/hitl/approval/approval-queue.ts +132 -0
  639. package/src/hitl/approval/index.ts +5 -0
  640. package/src/hitl/feedback/index.ts +284 -0
  641. package/src/hitl/index.ts +69 -0
  642. package/src/hitl/review/index.ts +6 -0
  643. package/src/hitl/review/review-trigger.ts +162 -0
  644. package/src/hitl/types.ts +126 -0
  645. package/src/index.ts +125 -0
  646. package/src/integrations/blob-storage/index.ts +7 -0
  647. package/src/integrations/blob-storage/types.ts +28 -0
  648. package/src/integrations/blob-storage/vercel-blob-adapter.ts +35 -0
  649. package/src/integrations/index.ts +15 -0
  650. package/src/integrations/notifications/index.ts +7 -0
  651. package/src/integrations/notifications/log-adapter.ts +30 -0
  652. package/src/integrations/notifications/types.ts +27 -0
  653. package/src/integrations/rate-limit/index.ts +7 -0
  654. package/src/integrations/rate-limit/types.ts +26 -0
  655. package/src/integrations/rate-limit/upstash-adapter.ts +45 -0
  656. package/src/integrations/redis/index.ts +7 -0
  657. package/src/integrations/redis/types.ts +67 -0
  658. package/src/integrations/redis/upstash-adapter.ts +18 -0
  659. package/src/integrations/stream/index.ts +7 -0
  660. package/src/integrations/stream/resumable-adapter.ts +20 -0
  661. package/src/integrations/stream/types.ts +21 -0
  662. package/src/internal/__tests__/hallucination.test.ts +162 -0
  663. package/src/internal/__tests__/models.test.ts +104 -0
  664. package/src/internal/__tests__/sdk-errors.test.ts +201 -0
  665. package/src/internal/__tests__/stop-conditions.test.ts +210 -0
  666. package/src/internal/shared/ai-types.ts +942 -0
  667. package/src/internal/testing/evaluators.ts +575 -0
  668. package/src/internal/testing/index.ts +960 -0
  669. package/src/internal/ui/data-parts.ts +511 -0
  670. package/src/internal/ui/type-guards.ts +344 -0
  671. package/src/internal/ui-factories/__tests__/ui-factories.test.ts +548 -0
  672. package/src/internal/ui-factories/artifact-factory.ts +667 -0
  673. package/src/internal/ui-factories/index.ts +82 -0
  674. package/src/internal/ui-factories/shimmer-manager.ts +220 -0
  675. package/src/internal/ui-factories/status-helpers.ts +149 -0
  676. package/src/internal/ui-factories/tool-renderer.ts +167 -0
  677. package/src/internal/ui-factories/types.ts +235 -0
  678. package/src/models/capabilities.ts +88 -0
  679. package/src/models/index.ts +16 -0
  680. package/src/models/provider-factory.ts +229 -0
  681. package/src/models/providers/anthropic.ts +539 -0
  682. package/src/models/providers/google.ts +354 -0
  683. package/src/models/providers/index.ts +21 -0
  684. package/src/models/providers/openai.ts +346 -0
  685. package/src/models/providers/perplexity.ts +276 -0
  686. package/src/models/providers/shared.ts +90 -0
  687. package/src/models/providers/xai.ts +269 -0
  688. package/src/models/registry.ts +208 -0
  689. package/src/models/routing/index.ts +45 -0
  690. package/src/models/routing/intent-router.ts +143 -0
  691. package/src/models/routing/model-router.ts +300 -0
  692. package/src/models/routing/types.ts +106 -0
  693. package/src/models/types.ts +23 -0
  694. package/src/observability/analytics/index.ts +593 -0
  695. package/src/observability/cost/index.ts +16 -0
  696. package/src/observability/cost/tracking/budget-guard.ts +110 -0
  697. package/src/observability/cost/tracking/usage-tracker.ts +120 -0
  698. package/src/observability/cost/types.ts +85 -0
  699. package/src/observability/index.ts +17 -0
  700. package/src/observability/telemetry/index.ts +508 -0
  701. package/src/observability/tracing/index.ts +30 -0
  702. package/src/observability/tracing/otel/ai-instrumentation.ts +193 -0
  703. package/src/observability/tracing/otel/exporters/console.ts +58 -0
  704. package/src/observability/tracing/otel/exporters/index.ts +6 -0
  705. package/src/observability/tracing/provenance.ts +769 -0
  706. package/src/observability/tracing/types.ts +92 -0
  707. package/src/output/__tests__/output.test.ts +737 -0
  708. package/src/output/element-stream.ts +678 -0
  709. package/src/output/errors.ts +108 -0
  710. package/src/output/factories.ts +392 -0
  711. package/src/output/index.ts +98 -0
  712. package/src/output/multimodal/EXPORTS.md +306 -0
  713. package/src/output/multimodal/IMPLEMENTATION_SUMMARY.md +421 -0
  714. package/src/output/multimodal/README.md +349 -0
  715. package/src/output/multimodal/SETUP_GUIDE.md +472 -0
  716. package/src/output/multimodal/audio.ts +650 -0
  717. package/src/output/multimodal/image.ts +22 -0
  718. package/src/output/multimodal/index.ts +32 -0
  719. package/src/output/multimodal/providers.example.ts +375 -0
  720. package/src/output/validator.ts +495 -0
  721. package/src/pipelines/adapters/trace-storage-blob.ts +458 -0
  722. package/src/pipelines/adapters/trace-storage-memory.ts +319 -0
  723. package/src/pipelines/defaults.ts +109 -0
  724. package/src/pipelines/index.ts +24 -0
  725. package/src/pipelines/message-transforms.ts +107 -0
  726. package/src/pipelines/multi-step-wrapper.ts +433 -0
  727. package/src/pipelines/pipeline-presets.ts +339 -0
  728. package/src/pipelines/step-executor.ts +257 -0
  729. package/src/pipelines/storage-factory.ts +85 -0
  730. package/src/pipelines/trace-storage-interface.ts +216 -0
  731. package/src/pipelines/types.ts +255 -0
  732. package/src/pipelines/validation.ts +323 -0
  733. package/src/prompts/index.ts +271 -0
  734. package/src/prompts/model-variants.ts +410 -0
  735. package/src/prompts/templates.ts +327 -0
  736. package/src/sdk/errors/base.ts +296 -0
  737. package/src/sdk/errors/index.ts +31 -0
  738. package/src/sdk/errors/utils.ts +148 -0
  739. package/src/sdk/experimental/index.ts +286 -0
  740. package/src/sdk/index.ts +25 -0
  741. package/src/sdk/middleware/ai-middleware.ts +95 -0
  742. package/src/sdk/middleware/cache.ts +154 -0
  743. package/src/sdk/middleware/circuit-breaker.ts +388 -0
  744. package/src/sdk/middleware/compose.ts +81 -0
  745. package/src/sdk/middleware/deduplication.ts +307 -0
  746. package/src/sdk/middleware/index.ts +660 -0
  747. package/src/sdk/middleware/model-middleware.ts +200 -0
  748. package/src/sdk/stop-conditions/conditions.ts +209 -0
  749. package/src/sdk/stop-conditions/index.ts +35 -0
  750. package/src/sdk/stop-conditions/types.ts +59 -0
  751. package/src/security/guardrails/index.ts +6 -0
  752. package/src/security/guardrails/middleware.ts +465 -0
  753. package/src/security/guardrails/pii-filter.ts +396 -0
  754. package/src/security/index.ts +33 -0
  755. package/src/security/injection/index.ts +5 -0
  756. package/src/security/injection/prompt-injection.ts +64 -0
  757. package/src/security/types.ts +85 -0
  758. package/src/server/cache/crypto.ts +47 -0
  759. package/src/server/cache/performance.ts +79 -0
  760. package/src/server/error-handler.ts +93 -0
  761. package/src/server/errors.ts +73 -0
  762. package/src/server/helpers.ts +944 -0
  763. package/src/server/http.ts +156 -0
  764. package/src/server/index.ts +12 -0
  765. package/src/server/messages/__tests__/messages.test.ts +720 -0
  766. package/src/server/messages/converter.ts +245 -0
  767. package/src/server/messages/data-parts.ts +338 -0
  768. package/src/server/messages/extraction.ts +328 -0
  769. package/src/server/messages/index.ts +126 -0
  770. package/src/server/messages/types.ts +355 -0
  771. package/src/server/messages/window.ts +450 -0
  772. package/src/server/rate-limit/env.ts +8 -0
  773. package/src/server/rate-limit/rate-limit.ts +165 -0
  774. package/src/server/routes/HEALTH_CHECK.md +502 -0
  775. package/src/server/routes/IMPLEMENTATION_SUMMARY.md +432 -0
  776. package/src/server/routes/QUICK_START.md +327 -0
  777. package/src/server/routes/README.md +357 -0
  778. package/src/server/routes/__tests__/routes.test.ts +628 -0
  779. package/src/server/routes/agent-route.ts +224 -0
  780. package/src/server/routes/agent-routes.ts +191 -0
  781. package/src/server/routes/embed-config.ts +181 -0
  782. package/src/server/routes/health-check.example.ts +507 -0
  783. package/src/server/routes/health-check.test.ts +533 -0
  784. package/src/server/routes/health-check.ts +639 -0
  785. package/src/server/routes/health-check.types.ts +217 -0
  786. package/src/server/routes/index.ts +32 -0
  787. package/src/server/routes/types.ts +274 -0
  788. package/src/shared/__tests__/schemas.test.ts +317 -0
  789. package/src/shared/ai-runtime.ts +139 -0
  790. package/src/shared/ai-types.ts +133 -0
  791. package/src/shared/index.ts +30 -0
  792. package/src/shared/sdk-runtime.ts +198 -0
  793. package/src/shared/sdk-types.ts +301 -0
  794. package/src/streaming/control/__tests__/streaming-control.test.ts +708 -0
  795. package/src/streaming/control/budget-guard.ts +264 -0
  796. package/src/streaming/control/controller.ts +255 -0
  797. package/src/streaming/control/index.ts +105 -0
  798. package/src/streaming/control/smoothing.ts +201 -0
  799. package/src/streaming/control/step-limit.ts +215 -0
  800. package/src/streaming/control/types.ts +234 -0
  801. package/src/streaming/core/auto-resume.ts +276 -0
  802. package/src/streaming/core/index.ts +85 -0
  803. package/src/streaming/core/multi-step.ts +471 -0
  804. package/src/streaming/core/protocol.ts +194 -0
  805. package/src/streaming/core/types.ts +182 -0
  806. package/src/streaming/index.ts +97 -0
  807. package/src/streaming/infra/backpressure/buffer.ts +210 -0
  808. package/src/streaming/infra/backpressure/index.ts +6 -0
  809. package/src/streaming/infra/index.ts +75 -0
  810. package/src/streaming/infra/multiplexing/index.ts +311 -0
  811. package/src/streaming/infra/resilience/index.ts +684 -0
  812. package/src/streaming/infra/transform/index.ts +15 -0
  813. package/src/streaming/infra/transform/stream-transforms.ts +166 -0
  814. package/src/streaming/infra/transport/index.ts +774 -0
  815. package/src/streaming/infra/types.ts +118 -0
  816. package/src/streaming/infra-extra/types.ts +118 -0
  817. package/src/tools/advanced/caching.ts +299 -0
  818. package/src/tools/advanced/generator.ts +267 -0
  819. package/src/tools/advanced/hitl.ts +251 -0
  820. package/src/tools/advanced/index.ts +9 -0
  821. package/src/tools/advanced/llm-tool.ts +208 -0
  822. package/src/tools/approval/FILES.md +449 -0
  823. package/src/tools/approval/IMPLEMENTATION_SUMMARY.md +567 -0
  824. package/src/tools/approval/QUICK_START.md +362 -0
  825. package/src/tools/approval/README.md +514 -0
  826. package/src/tools/approval/advanced-approval-queue.ts +7 -0
  827. package/src/tools/approval/approval.example.ts +571 -0
  828. package/src/tools/approval/in-memory-queue.ts +405 -0
  829. package/src/tools/approval/index.ts +737 -0
  830. package/src/tools/approval/middleware.ts +590 -0
  831. package/src/tools/approval/queue-factory.ts +162 -0
  832. package/src/tools/approval/redis-queue.ts +327 -0
  833. package/src/tools/approval/testing.ts +493 -0
  834. package/src/tools/approval/types.ts +221 -0
  835. package/src/tools/approval/with-approval.ts +366 -0
  836. package/src/tools/artifacts/artifact-tools.ts +273 -0
  837. package/src/tools/artifacts/index.ts +6 -0
  838. package/src/tools/compliance/compliance-wrapper.ts +789 -0
  839. package/src/tools/compliance/create-compliant-stream.ts +226 -0
  840. package/src/tools/compliance/index.ts +8 -0
  841. package/src/tools/compliance/phi-redaction.ts +406 -0
  842. package/src/tools/compliance/tool-wrapper.ts +306 -0
  843. package/src/tools/computer/index.ts +99 -0
  844. package/src/tools/computer/types.ts +41 -0
  845. package/src/tools/core/abort.ts +202 -0
  846. package/src/tools/core/factory.ts +197 -0
  847. package/src/tools/core/index.ts +8 -0
  848. package/src/tools/core/tool-safety.ts +112 -0
  849. package/src/tools/generic/index.ts +9 -0
  850. package/src/tools/generic/json-schema-tool.ts +301 -0
  851. package/src/tools/generic/tiptap-context.ts +619 -0
  852. package/src/tools/generic/web-search-tool.ts +82 -0
  853. package/src/tools/generic/web-search.ts +142 -0
  854. package/src/tools/index.ts +36 -0
  855. package/src/tools/mcp/ai-sdk-error-integration.ts +401 -0
  856. package/src/tools/mcp/client.ts +988 -0
  857. package/src/tools/mcp/connection-manager.ts +380 -0
  858. package/src/tools/mcp/connection-pool.ts +408 -0
  859. package/src/tools/mcp/edge-runtime.ts +318 -0
  860. package/src/tools/mcp/environment.ts +310 -0
  861. package/src/tools/mcp/index.ts +20 -0
  862. package/src/tools/mcp/next-pattern.ts +401 -0
  863. package/src/tools/mcp/stream-lifecycle-integration.ts +617 -0
  864. package/src/tools/mcp/tool-cache.ts +359 -0
  865. package/src/tools/mcp/transport-selector.ts +492 -0
  866. package/src/tools/mcp/transports.ts +99 -0
  867. package/src/tools/simple-factory.ts +55 -0
  868. package/src/tools/superpowers/index.ts +122 -0
  869. package/src/tools/superpowers/prompts/index.ts +533 -0
  870. package/src/tools/superpowers/schemas/index.ts +701 -0
  871. package/src/tools/superpowers/tools/index.ts +721 -0
  872. package/src/tools/validation-wrapper.ts +97 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.mjs","names":["z","fs","z"],"sources":["../src/tools/simple-factory.ts","../src/tools/validation-wrapper.ts","../src/tools/generic/json-schema-tool.ts","../src/tools/generic/web-search.ts","../src/tools/generic/web-search-tool.ts","../src/tools/generic/tiptap-context.ts","../src/tools/advanced/llm-tool.ts","../src/tools/advanced/hitl.ts","../src/tools/advanced/caching.ts","../src/tools/advanced/generator.ts","../src/tools/artifacts/artifact-tools.ts","../src/tools/index.ts"],"sourcesContent":["/**\n * @fileoverview Simple Tool Factory\n *\n * Utilities for creating tools with pre-built Zod schemas.\n * For JSON-to-Zod schema conversion, use {@link createJsonSchemaTool} from `tools/generic/json-schema-tool`.\n *\n * @module @od-oneapp/ai-platform/tools/simple-factory\n */\n\nimport { tool } from '../shared';\n\nimport type {\n SDKFlexibleSchema as FlexibleSchema,\n SDKTool as Tool,\n SDKToolExecuteFunction as ToolExecuteFunction,\n} from '../shared';\nimport type { ZodType } from 'zod';\n\n/**\n * Creates a tool from a pre-built Zod schema.\n *\n * For creating tools from JSON-style schema definitions,\n * use {@link createJsonSchemaTool} from `tools/generic/json-schema-tool`.\n *\n * @param description - Tool description.\n * @param schema - Zod schema instance.\n * @param execute - Execution function.\n *\n * @example\n * ```ts\n * const searchTool = createToolFromZodSchema(\n * 'Search the web for information',\n * z.object({ query: z.string() }),\n * async ({ query }) => fetch(`/search?q=${query}`)\n * );\n * ```\n */\nexport function createToolFromZodSchema<TInput, TOutput>(\n description: string,\n schema: ZodType<TInput>,\n execute: ToolExecuteFunction<TInput, TOutput>,\n): Tool<TInput, TOutput> {\n const inputSchema = schema as FlexibleSchema;\n return tool<TInput, unknown>({\n description,\n inputSchema,\n execute: execute as ToolExecuteFunction<TInput, unknown>,\n }) as Tool<TInput, TOutput>;\n}\n\n/**\n * @deprecated Use `createToolFromZodSchema` instead.\n * This alias exists for backward compatibility.\n */\nexport const createSimpleTool = createToolFromZodSchema;\n","/**\n * @fileoverview Tool Validation Wrapper\n *\n * Provides utilities for adding custom runtime validation to AI SDK tools.\n * Useful for enforcing business rules beyond what Zod schemas express.\n *\n * @module @od-oneapp/ai-platform/tools/validation-wrapper\n */\n\nimport type { SDKTool, SDKToolExecuteFunction, SDKToolExecutionOptions } from '../shared';\n\n/**\n * Wraps a tool with an additional runtime validation step.\n *\n * Vercel AI SDK v6 tools already validate input against Zod schemas.\n * Use this wrapper when you need custom business-rule validation\n * (e.g., authorization checks, rate limiting, cross-field constraints)\n * that runs before the tool's execute function.\n *\n * @param t - The tool to wrap\n * @param options - Validation options\n * @param options.validate - Custom validator returning true/false (sync or async)\n * @returns A new tool that validates input before executing\n *\n * @example\n * ```ts\n * const safeTool = withValidation(deleteTool, {\n * validate: (input) => input.userId === currentUser.id,\n * });\n * ```\n */\nexport function withValidation<TInput = unknown, TOutput = unknown>(\n t: SDKTool<TInput, TOutput>,\n options: {\n validate?: (input: TInput) => boolean | Promise<boolean>;\n } = {},\n): SDKTool<TInput, TOutput> {\n // If no extra validation, return as is\n if (!options.validate) return t;\n\n const wrappedTool = { ...t };\n const wrappedExecute: SDKToolExecuteFunction<TInput, TOutput> = (\n input: TInput,\n executionOptions: SDKToolExecutionOptions,\n ) => {\n const { validate } = options;\n const run = (): ReturnType<SDKToolExecuteFunction<TInput, TOutput>> => {\n if (!t.execute) {\n throw new Error('Strict tool wrapper requires a tool execute function');\n }\n return t.execute(input, executionOptions);\n };\n\n const isAsyncIterable = (value: unknown): value is AsyncIterable<TOutput> => {\n return (\n typeof value === 'object' &&\n value !== null &&\n Symbol.asyncIterator in (value as Record<string, unknown>)\n );\n };\n\n if (!validate) {\n return run();\n }\n\n const validationResult = validate(input);\n const isPromiseLike = (value: unknown): value is PromiseLike<boolean> =>\n typeof (value as { then?: unknown })?.then === 'function';\n\n if (isPromiseLike(validationResult)) {\n return (async () => {\n const valid = await validationResult;\n if (!valid) {\n throw new Error(`Strict validation failed for tool ${t.description?.slice(0, 20)}...`);\n }\n\n const result = run();\n if (isAsyncIterable(result)) {\n throw new Error('Async validation is not supported for streaming tool results');\n }\n return result;\n })();\n }\n\n if (!validationResult) {\n throw new Error(`Strict validation failed for tool ${t.description?.slice(0, 20)}...`);\n }\n\n const result = run();\n if (isAsyncIterable(result)) {\n return result;\n }\n return result;\n };\n wrappedTool.execute = wrappedExecute;\n return wrappedTool;\n}\n","/**\n * @fileoverview JSON Schema tool creation utilities.\n *\n * Creates AI SDK tools from plain JSON-style schema definitions\n * (as opposed to pre-built Zod schemas). Useful for tools defined\n * at runtime or loaded from configuration files.\n *\n * @module @od-oneapp/ai-platform/tools/generic/json-schema-tool\n */\n\nimport { z } from 'zod';\n\nimport { tool } from '../../shared';\n\nimport type { SDKTool as Tool } from '../../shared';\n\n/**\n * Schema definition for dynamic tools.\n */\nexport interface DynamicToolSchema {\n /** Tool name */\n name: string;\n /** Tool description */\n description: string;\n /** Parameter definitions */\n parameters: Record<string, ParameterDefinition>;\n /** Required parameters */\n required?: string[];\n}\n\n/**\n * Parameter definition for dynamic tools.\n */\nexport interface ParameterDefinition {\n /** Parameter type */\n type: 'string' | 'number' | 'boolean' | 'array' | 'object';\n /** Parameter description */\n description: string;\n /** Enum values (for string type) */\n enum?: string[];\n /** Default value */\n default?: unknown;\n /** Minimum (for number type) */\n minimum?: number;\n /** Maximum (for number type) */\n maximum?: number;\n /** Items schema (for array type) */\n items?: ParameterDefinition;\n /** Properties (for object type) */\n properties?: Record<string, ParameterDefinition>;\n}\n\n/**\n * Mutable shape type for building schemas.\n */\ntype MutableZodShape = { [key: string]: z.ZodTypeAny };\n\n/**\n * Creates a Zod schema from a parameter definition.\n */\nfunction parameterToZod(param: ParameterDefinition): z.ZodTypeAny {\n let schema: z.ZodTypeAny;\n\n switch (param.type) {\n case 'string':\n if (param.enum) {\n schema = z.enum(param.enum as [string, ...string[]]);\n } else {\n schema = z.string();\n }\n break;\n case 'number': {\n let numSchema = z.number();\n if (param.minimum !== undefined) {\n numSchema = numSchema.min(param.minimum);\n }\n if (param.maximum !== undefined) {\n numSchema = numSchema.max(param.maximum);\n }\n schema = numSchema;\n break;\n }\n case 'boolean':\n schema = z.boolean();\n break;\n case 'array':\n schema = z.array(param.items ? parameterToZod(param.items) : z.unknown());\n break;\n case 'object':\n if (param.properties) {\n const shape: MutableZodShape = {};\n for (const [key, prop] of Object.entries(param.properties)) {\n shape[key] = parameterToZod(prop);\n }\n schema = z.object(shape);\n } else {\n schema = z.record(z.string(), z.unknown());\n }\n break;\n default:\n schema = z.unknown();\n }\n\n return schema.describe(param.description);\n}\n\n/**\n * Creates a Zod schema from a dynamic tool schema.\n */\nfunction schemaToZod(schema: DynamicToolSchema): z.ZodObject<z.ZodRawShape> {\n const shape: MutableZodShape = {};\n\n for (const [name, param] of Object.entries(schema.parameters)) {\n const zodParam = parameterToZod(param);\n shape[name] = schema.required?.includes(name) ? zodParam : zodParam.optional();\n }\n\n return z.object(shape);\n}\n\n/**\n * Creates an AI SDK tool from a JSON-style schema definition.\n *\n * Converts the plain-object schema to Zod internally, so callers\n * don't need to depend on Zod directly. For pre-built Zod schemas,\n * use {@link createToolFromZodSchema} from `tools/simple-factory` instead.\n *\n * @param schema - Tool schema with name, description, and parameter definitions\n * @param execute - Async function that receives validated params and returns a result\n * @returns AI SDK tool instance\n *\n * @example\n * ```ts\n * const calcTool = createJsonSchemaTool({\n * name: 'calculate',\n * description: 'Perform calculations',\n * parameters: {\n * operation: { type: 'string', description: 'Operation', enum: ['add', 'sub'] },\n * a: { type: 'number', description: 'First number' },\n * b: { type: 'number', description: 'Second number' },\n * },\n * required: ['operation', 'a', 'b'],\n * }, async ({ operation, a, b }) => {\n * return operation === 'add' ? a + b : a - b;\n * });\n * ```\n */\nexport function createJsonSchemaTool<T = Record<string, unknown>>(\n schema: DynamicToolSchema,\n execute: (params: T) => Promise<unknown>,\n): Tool {\n return tool({\n description: schema.description,\n inputSchema: schemaToZod(schema),\n execute: async params => execute(params as T),\n });\n}\n\n/**\n * Registry for managing tools created from JSON schema definitions.\n *\n * Stores tools and their schemas by name, supporting lookup, filtering,\n * and bulk retrieval. For tools created from Zod schemas, use them directly\n * without a registry.\n */\nexport class JsonSchemaToolRegistry {\n private tools = new Map<string, Tool>();\n private schemas = new Map<string, DynamicToolSchema>();\n\n /**\n * Registers a tool with schema.\n */\n register<T = Record<string, unknown>>(\n schema: DynamicToolSchema,\n execute: (params: T) => Promise<unknown>,\n ): void {\n const t = createJsonSchemaTool(schema, execute);\n this.tools.set(schema.name, t);\n this.schemas.set(schema.name, schema);\n }\n\n /**\n * Gets a tool by name.\n */\n get(name: string): Tool | undefined {\n return this.tools.get(name);\n }\n\n /**\n * Gets schema by name.\n */\n getSchema(name: string): DynamicToolSchema | undefined {\n return this.schemas.get(name);\n }\n\n /**\n * Gets all tools.\n */\n all(): Record<string, Tool> {\n return Object.fromEntries(this.tools);\n }\n\n /**\n * Gets all schemas.\n */\n allSchemas(): DynamicToolSchema[] {\n return Array.from(this.schemas.values());\n }\n\n /**\n * Filters tools by pattern.\n * Note: String patterns are escaped to prevent ReDoS attacks.\n * To use regex patterns, pass a RegExp object directly.\n */\n filter(pattern: string | RegExp): Record<string, Tool> {\n // Escape string patterns to prevent ReDoS attacks (CWE-1333)\n const regex =\n typeof pattern === 'string'\n ? new RegExp(pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'))\n : pattern;\n const filtered: Record<string, Tool> = {};\n\n for (const [name, t] of this.tools) {\n if (regex.test(name)) {\n filtered[name] = t;\n }\n }\n\n return filtered;\n }\n\n /**\n * Removes a tool.\n */\n remove(name: string): boolean {\n this.schemas.delete(name);\n return this.tools.delete(name);\n }\n\n /**\n * Clears all tools.\n */\n clear(): void {\n this.tools.clear();\n this.schemas.clear();\n }\n}\n\n/**\n * Creates a tool that can be dynamically enabled/disabled.\n *\n * @param baseTool - The base tool\n * @param isEnabled - Function to check if tool is enabled\n * @returns Conditional tool\n */\nexport function createConditionalTool(\n baseTool: Tool,\n isEnabled: () => boolean | Promise<boolean>,\n): Tool {\n const { execute } = baseTool;\n return {\n ...baseTool,\n execute: execute\n ? async (...args: Parameters<NonNullable<typeof baseTool.execute>>) => {\n const enabled = await isEnabled();\n if (!enabled) {\n return { error: 'Tool is currently disabled' };\n }\n return execute(...args);\n }\n : undefined,\n };\n}\n\n/**\n * Composes multiple tools into a single tool with routing.\n *\n * @param tools - Map of route patterns to tools\n * @param router - Function to determine route from input\n * @returns Composed tool\n */\nexport function composeTools(\n tools: Record<string, Tool>,\n router: (input: Record<string, unknown>) => string,\n): Tool {\n return tool({\n description: `Composed tool with routes: ${Object.keys(tools).join(', ')}`,\n inputSchema: z.object({}).passthrough(),\n execute: async (input, options) => {\n const typedInput = input as Record<string, unknown>;\n const route = router(typedInput);\n const selectedTool = tools[route];\n\n if (!selectedTool) {\n return { error: `Unknown route: ${route}` };\n }\n\n return selectedTool.execute?.(typedInput, options);\n },\n });\n}\n","/**\n * @fileoverview Web search tool factories for AI SDK agents.\n *\n * Provides factory functions to create web search tools compatible with\n * Vercel AI SDK's tool system. Supports Exa API and custom search backends\n * via dependency injection.\n *\n * Migrated from @repo/ai/tools/server/web-search.ts\n *\n * @module @od-oneapp/ai-platform/tools/generic/web-search\n */\n\nimport 'server-only';\n\nimport { z } from 'zod/v4';\n\nimport { tool } from '../../shared';\n\n/** Result shape returned by web search tools. */\nexport interface WebSearchResult {\n readonly title: string;\n readonly url: string;\n readonly content: string;\n readonly publishedDate?: string;\n}\n\n/** Configuration for the Exa-based search tool. */\nexport interface ExaSearchConfig {\n /** Exa API key. */\n readonly apiKey: string;\n /** Maximum number of results to return. */\n readonly numResults?: number;\n /** Livecrawl strategy for Exa. */\n readonly livecrawl?: 'always' | 'fallback' | 'never';\n}\n\n/**\n * Minimal interface for the Exa client.\n * Consumers pass their own Exa instance so ai-platform does not depend on `exa-js`.\n */\nexport interface ExaClient {\n searchAndContents: (\n query: string,\n options: { livecrawl?: string; numResults?: number },\n ) => Promise<{\n results: Array<{\n title: string;\n url: string;\n text?: string;\n publishedDate?: string;\n }>;\n }>;\n}\n\n/**\n * Create a web search tool using an Exa API client.\n *\n * @param config - Exa search configuration\n * @param exaClient - Exa client instance (from `exa-js`)\n * @returns AI SDK tool for web search via Exa\n *\n * @example\n * ```ts\n * import Exa from 'exa-js';\n * import { createExaSearchTool } from '@od-oneapp/ai-platform/tools';\n *\n * const exa = new Exa(process.env.EXA_API_KEY!);\n * const searchTool = createExaSearchTool(\n * { apiKey: process.env.EXA_API_KEY!, numResults: 5 },\n * exa,\n * );\n * ```\n */\nexport function createExaSearchTool(config: ExaSearchConfig, exaClient: ExaClient) {\n return tool({\n description: 'Search the web for up-to-date information using Exa',\n inputSchema: z.object({\n query: z.string().min(1).max(100).describe('The search query'),\n }),\n execute: async ({ query }: { query: string }) => {\n const { results } = await exaClient.searchAndContents(query, {\n livecrawl: config.livecrawl ?? 'always',\n numResults: config.numResults ?? 3,\n });\n\n return results.map(result => ({\n title: result.title,\n url: result.url,\n content: result.text?.slice(0, 1000) ?? result.title ?? '',\n publishedDate: result.publishedDate,\n })) as WebSearchResult[];\n },\n });\n}\n\n/**\n * Create a generic web search tool with a custom search function.\n *\n * @param searchFunction - Custom search implementation\n * @returns AI SDK tool for web search\n *\n * @example\n * ```ts\n * import { createWebSearchTool } from '@od-oneapp/ai-platform/tools';\n *\n * const tool = createWebSearchTool(async (query) => {\n * const resp = await fetch(`https://api.search.com?q=${query}`);\n * return resp.json();\n * });\n * ```\n */\nexport function createWebSearchTool(searchFunction: (query: string) => Promise<WebSearchResult[]>) {\n return tool({\n description: 'Search the web for up-to-date information',\n inputSchema: z.object({\n query: z.string().min(1).max(100).describe('The search query'),\n }),\n execute: async ({ query }: { query: string }) => {\n return searchFunction(query);\n },\n });\n}\n\n/**\n * Pre-configured search tool factories for common APIs.\n */\nexport const webSearchTools = {\n /**\n * Exa search tool factory.\n *\n * @param exaClient - Exa client instance\n * @param options - Configuration options\n */\n exa: (exaClient: ExaClient, options?: Partial<ExaSearchConfig> & { apiKey: string }) =>\n createExaSearchTool(options ?? { apiKey: '' }, exaClient),\n\n /**\n * Custom search implementation factory.\n */\n custom: (searchFunction: (query: string) => Promise<WebSearchResult[]>) =>\n createWebSearchTool(searchFunction),\n};\n","/**\n * @fileoverview Pre-configured web search tool.\n *\n * Drop-in replacement for the legacy @repo/ai webSearchTool.\n * Auto-configures from environment (EXA_API_KEY).\n */\n\nimport { z } from 'zod';\n\nimport { tool } from '../../shared';\n\nimport { createExaSearchTool, type ExaClient } from './web-search';\n\nlet cachedExaTool: ReturnType<typeof createExaSearchTool> | null = null;\n\nconst webSearchInputSchema = z.object({\n query: z.string().min(1).describe('Search query'),\n maxResults: z.number().int().positive().default(5).describe('Maximum results'),\n timeRange: z.string().optional().describe('Time range filter'),\n region: z.string().optional().describe('Geographic region'),\n});\n\n/**\n * Pre-configured web search tool that auto-detects Exa API key from environment.\n *\n * @example\n * ```ts\n * import { webSearchTool } from '@od-oneapp/ai-platform/tools';\n *\n * const result = await generateText({\n * model,\n * tools: { webSearch: webSearchTool },\n * prompt: 'Search for...',\n * });\n * ```\n */\nexport const webSearchTool = tool({\n description: 'Search the web using Exa when configured',\n inputSchema: webSearchInputSchema,\n execute: async ({ query, maxResults, timeRange, region }) => {\n const apiKey = process.env.EXA_API_KEY;\n\n if (apiKey) {\n if (!cachedExaTool) {\n cachedExaTool = createExaSearchTool(\n { apiKey, numResults: maxResults ?? 5 },\n undefined as unknown as ExaClient,\n );\n }\n\n try {\n const timeoutMs = Number(process.env.AI_WEBSEARCH_TIMEOUT_MS) || 15000;\n const result = await Promise.race([\n cachedExaTool.execute?.({ query }, {} as never),\n new Promise((_resolve, reject) =>\n setTimeout(() => reject(new Error('Web search timeout')), timeoutMs),\n ),\n ]);\n const results = Array.isArray(result) ? result : [];\n return {\n query,\n results,\n totalResults: results.length,\n timeRange,\n region,\n source: 'exa' as const,\n };\n } catch {\n // Fall through to empty results\n }\n }\n\n return {\n query,\n results: [] as unknown[],\n totalResults: 0,\n timeRange,\n region,\n source: 'none' as const,\n };\n },\n});\n","/**\n * @fileoverview TipTap documentation context tool for AI SDK agents.\n *\n * Provides a search tool that answers questions about TipTap v3 capabilities\n * by searching curated documentation chunks with semantic keyword matching.\n *\n * Migrated from @repo/ai/tools/tiptap-context-tool.ts\n *\n * @module @od-oneapp/ai-platform/tools/generic/tiptap-context\n */\n\nimport 'server-only';\n\nimport { existsSync, promises as fs } from 'node:fs';\nimport path from 'node:path';\n\nimport { z } from 'zod/v4';\n\nimport { tool } from '../../shared';\n\n// =============================================================================\n// Types\n// =============================================================================\n\ntype TiptapDocChunk = {\n id: string;\n category: string;\n title: string;\n content: string;\n summary: string;\n keywords: string[];\n tokens: number;\n};\n\ntype TiptapDocIndex = {\n chunks: TiptapDocChunk[];\n categories: Record<string, { chunkCount: number; keywords: string[] }>;\n};\n\ntype SearchMatch = TiptapDocChunk & { score: number };\n\n// =============================================================================\n// Constants\n// =============================================================================\n\nconst WORKSPACE_ROOT = process.cwd();\n\nfunction resolveDocPath(relativePath: string): string {\n let current = WORKSPACE_ROOT;\n\n while (true) {\n const candidate = path.resolve(current, relativePath);\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(candidate)) {\n return candidate;\n }\n\n const parent = path.dirname(current);\n if (parent === current) {\n break;\n }\n current = parent;\n }\n\n return path.resolve(WORKSPACE_ROOT, relativePath);\n}\n\nconst TIPTAP_DOC_PATH = resolveDocPath('docs/llms/tiptap.txt');\n\nconst DEFAULT_CHUNK_TOKEN_TARGET = 500;\nconst MAX_KEYWORDS = 12;\nconst MAX_RESULTS = 4;\n\nconst STOP_WORDS = new Set([\n 'the',\n 'and',\n 'for',\n 'with',\n 'that',\n 'this',\n 'from',\n 'your',\n 'into',\n 'when',\n 'tiptap',\n 'editor',\n 'docs',\n 'learn',\n 'guide',\n 'using',\n 'about',\n 'more',\n 'how',\n 'api',\n 'overview',\n 'getting',\n 'started',\n]);\n\nconst SYNONYM_MAP: Record<string, string[]> = {\n react: ['next', 'nextjs', 'jsx'],\n next: ['nextjs', 'react'],\n collaboration: ['yjs', 'multiplayer', 'awareness'],\n ai: ['assistant', 'generation', 'content'],\n export: ['conversion', 'markdown', 'html', 'json', 'docx'],\n import: ['conversion', 'docx', 'odt'],\n formatting: ['style', 'styling', 'theme', 'css'],\n extension: ['node', 'mark', 'custom extension'],\n command: ['keyboard', 'shortcut', 'action'],\n schema: ['nodes', 'marks', 'structure'],\n};\n\n// =============================================================================\n// Code Examples\n// =============================================================================\n\nconst CODE_EXAMPLES: Array<{\n id: string;\n title: string;\n description: string;\n language: string;\n code: string;\n keywords: string[];\n}> = [\n {\n id: 'react-basic-editor',\n title: 'Initialize TipTap in React',\n description: 'Create a basic TipTap editor using StarterKit and controlled content.',\n language: 'tsx',\n keywords: ['react', 'starterkit', 'basic'],\n code: `import { useEditor, EditorContent } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\n\nexport function BasicEditor() {\n const editor = useEditor({\n extensions: [StarterKit],\n content: '<p>Hello TipTap!</p>',\n });\n\n if (!editor) return null;\n\n return <EditorContent editor={editor} />;\n}`,\n },\n {\n id: 'nextjs-ssr-setup',\n title: 'Use TipTap inside Next.js App Router',\n description:\n 'Wrap the TipTap editor in a Client Component and load configuration from the server.',\n language: 'tsx',\n keywords: ['next', 'react', 'app-router'],\n code: `'use client';\n\nimport { Suspense } from 'react';\nimport dynamic from 'next/dynamic';\n\nconst RichEditor = dynamic(() => import('./RichEditor').then(m => m.RichEditor), {\n ssr: false,\n loading: () => <p>Loading editor\\u2026</p>,\n});\n\nexport default function TiptapCanvas() {\n return (\n <section className=\"space-y-6\">\n <h1 className=\"text-xl font-semibold\">Canvas Document</h1>\n <Suspense fallback={<p>Preparing TipTap\\u2026</p>}>\n <RichEditor enableAI enableToolbar />\n </Suspense>\n </section>\n );\n}\n`,\n },\n {\n id: 'collaboration-setup',\n title: 'Enable Collaboration Extensions',\n description:\n 'Configure the Collaboration and CollaborationCursor extensions with a shared Yjs document.',\n language: 'ts',\n keywords: ['collaboration', 'yjs', 'multiplayer'],\n code: `import Collaboration from '@tiptap/extension-collaboration';\nimport CollaborationCursor from '@tiptap/extension-collaboration-cursor';\nimport { Doc } from 'yjs';\n\nconst ydoc = new Doc();\n\nconst editor = new Editor({\n extensions: [\n StarterKit,\n Collaboration.configure({ document: ydoc }),\n CollaborationCursor.configure({\n provider: providerInstance,\n user: { name: userName, color: userColor },\n }),\n ],\n});\n`,\n },\n {\n id: 'content-export',\n title: 'Convert TipTap JSON to Markdown',\n description: 'Serialize the editor state to Markdown for downstream systems.',\n language: 'ts',\n keywords: ['export', 'markdown', 'json'],\n code: `import { generateJSON } from '@tiptap/html';\nimport StarterKit from '@tiptap/starter-kit';\n\nexport function toMarkdown(html: string) {\n const json = generateJSON(html, [StarterKit]);\n return json.content?.map(block => block.text).join('\\\\n') ?? '';\n}\n`,\n },\n];\n\nconst CATEGORY_EXAMPLE_MAP: Record<string, string[]> = {\n Overview: ['react-basic-editor'],\n Docs: ['react-basic-editor', 'nextjs-ssr-setup'],\n 'Editor Docs': ['react-basic-editor', 'nextjs-ssr-setup'],\n 'Editor Extensions Docs': ['collaboration-setup'],\n 'Content AI Docs': ['react-basic-editor'],\n 'Import / Export Docs': ['content-export'],\n 'Commands Docs': ['react-basic-editor'],\n};\n\n// =============================================================================\n// Tokenization & Indexing Helpers\n// =============================================================================\n\nlet cachedIndexPromise: Promise<TiptapDocIndex> | null = null;\n\nfunction normalizeHeading(rawHeading: string): string {\n return rawHeading.replace(/^#+\\s*/, '').trim();\n}\n\nfunction slugify(value: string): string {\n return value\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nfunction tokenize(text: string): string[] {\n return text\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, ' ')\n .split(/\\s+/)\n .filter(Boolean);\n}\n\nfunction countTokens(text: string): number {\n return tokenize(text).length;\n}\n\nfunction extractKeywords(text: string, maxKeywords = MAX_KEYWORDS): string[] {\n const frequencies = new Map<string, number>();\n\n for (const token of tokenize(text)) {\n if (STOP_WORDS.has(token)) {\n continue;\n }\n\n const synonyms = SYNONYM_MAP[token] ?? [];\n\n frequencies.set(token, (frequencies.get(token) ?? 0) + 1);\n for (const synonym of synonyms) {\n frequencies.set(synonym, (frequencies.get(synonym) ?? 0) + 0.5);\n }\n }\n\n return Array.from(frequencies.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, maxKeywords)\n .map(([token]) => token);\n}\n\nfunction createSummary(content: string): string {\n const lines = content\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean);\n\n const bulletHighlights = lines\n .filter(line => /^[-*]/.test(line))\n .map(line => line.replace(/^[-*]\\s*/, ''))\n .slice(0, 3);\n\n if (bulletHighlights.length > 0) {\n return bulletHighlights.join(' ');\n }\n\n const sentences = content\n .split(/(?<=[.!?])\\s+/)\n .map(sentence => sentence.trim())\n .filter(Boolean)\n .slice(0, 2);\n\n return sentences.join(' ');\n}\n\n// =============================================================================\n// Document Parsing\n// =============================================================================\n\nfunction parseTiptapSections(\n doc: string,\n): Array<{ category: string; title: string; content: string[] }> {\n const sections: Array<{ category: string; title: string; content: string[] }> = [];\n const lines = doc.split('\\n');\n\n let currentCategory = 'Overview';\n let currentTitle = 'Overview';\n let buffer: string[] = [];\n\n function flush(): void {\n if (buffer.length === 0) {\n return;\n }\n\n const content = buffer.join('\\n').trim();\n if (!content) {\n buffer = [];\n return;\n }\n\n sections.push({ category: currentCategory, title: currentTitle, content: [content] });\n buffer = [];\n }\n\n for (const rawLine of lines) {\n const line = rawLine.trimEnd();\n\n if (/^#\\s/.test(line)) {\n flush();\n currentCategory = 'Overview';\n currentTitle = normalizeHeading(line);\n continue;\n }\n\n if (/^##\\s/.test(line)) {\n flush();\n currentCategory = normalizeHeading(line);\n currentTitle = currentCategory;\n continue;\n }\n\n if (/^###\\s/.test(line)) {\n flush();\n currentTitle = normalizeHeading(line);\n continue;\n }\n\n buffer.push(line);\n }\n\n flush();\n\n return sections;\n}\n\nfunction chunkSection(\n section: { category: string; title: string; content: string[] },\n chunkTokenTarget = DEFAULT_CHUNK_TOKEN_TARGET,\n): TiptapDocChunk[] {\n const chunks: TiptapDocChunk[] = [];\n const paragraphs = section.content\n .join('\\n')\n .split(/\\n{2,}/)\n .map(paragraph => paragraph.trim())\n .filter(Boolean);\n\n let currentChunk: string[] = [];\n let currentTokens = 0;\n let chunkIndex = 0;\n\n const pushChunk = (): void => {\n if (currentChunk.length === 0) {\n return;\n }\n\n const content = currentChunk.join('\\n\\n');\n const tokens = countTokens(content);\n const summary = createSummary(content);\n const keywords = extractKeywords(content);\n\n chunks.push({\n id: `${slugify(section.category)}-${slugify(section.title)}-${chunkIndex}`,\n category: section.category,\n title: section.title,\n content,\n summary,\n keywords,\n tokens,\n });\n\n chunkIndex += 1;\n currentChunk = [];\n currentTokens = 0;\n };\n\n for (const paragraph of paragraphs) {\n const paragraphTokens = countTokens(paragraph);\n\n if (currentTokens + paragraphTokens > chunkTokenTarget && currentChunk.length > 0) {\n pushChunk();\n }\n\n currentChunk.push(paragraph);\n currentTokens += paragraphTokens;\n }\n\n pushChunk();\n\n return chunks;\n}\n\nasync function buildTiptapDocIndex(): Promise<TiptapDocIndex> {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n const doc = await fs.readFile(TIPTAP_DOC_PATH, 'utf8');\n const sections = parseTiptapSections(doc);\n\n const chunks = sections.flatMap(section => chunkSection(section));\n\n const categories: TiptapDocIndex['categories'] = {};\n\n for (const chunk of chunks) {\n const categoryEntry = categories[chunk.category] ?? {\n chunkCount: 0,\n keywords: [],\n };\n\n categoryEntry.chunkCount += 1;\n categoryEntry.keywords = Array.from(\n new Set([...categoryEntry.keywords, ...chunk.keywords]),\n ).slice(0, MAX_KEYWORDS);\n\n categories[chunk.category] = categoryEntry;\n }\n\n return { chunks, categories };\n}\n\nasync function getTiptapDocIndex(): Promise<TiptapDocIndex> {\n if (!cachedIndexPromise) {\n cachedIndexPromise = (async () => {\n try {\n return await buildTiptapDocIndex();\n } catch (error) {\n cachedIndexPromise = null;\n throw error;\n }\n })();\n }\n\n return cachedIndexPromise;\n}\n\n// =============================================================================\n// Scoring & Ranking\n// =============================================================================\n\nfunction expandQueryTokens(tokens: string[]): Set<string> {\n const expanded = new Set<string>(tokens);\n\n for (const token of tokens) {\n const synonyms = SYNONYM_MAP[token];\n if (synonyms) {\n for (const synonym of synonyms) {\n expanded.add(synonym);\n }\n }\n }\n\n return expanded;\n}\n\nfunction scoreChunk(query: string, chunk: TiptapDocChunk): number {\n const queryTokens = tokenize(query).filter(token => !STOP_WORDS.has(token));\n const expandedTokens = expandQueryTokens(queryTokens);\n const chunkTokens = new Set(chunk.keywords);\n\n let overlapScore = 0;\n for (const token of expandedTokens) {\n if (chunkTokens.has(token)) {\n overlapScore += 2;\n }\n\n if (chunk.content.toLowerCase().includes(token)) {\n overlapScore += 1;\n }\n\n if (chunk.title.toLowerCase().includes(token)) {\n overlapScore += 1.5;\n }\n\n if (chunk.category.toLowerCase().includes(token)) {\n overlapScore += 1.5;\n }\n }\n\n const lengthPenalty = Math.max(1, chunk.tokens / DEFAULT_CHUNK_TOKEN_TARGET);\n\n return overlapScore / lengthPenalty;\n}\n\nfunction rankChunks(query: string, chunks: TiptapDocChunk[]): SearchMatch[] {\n return chunks\n .map(chunk => ({ ...chunk, score: scoreChunk(query, chunk) }))\n .filter(match => match.score > 0)\n .sort((a, b) => b.score - a.score);\n}\n\nfunction createAnswer(query: string, matches: SearchMatch[]): string {\n if (matches.length === 0) {\n return `No TipTap documentation matches were found for \"${query}\". Try broadening the query or referencing supported features like React integration, collaboration, or conversions.`;\n }\n\n const bullets = matches.map(match => {\n return `\\u2022 ${match.title} (${match.category}): ${match.summary}`;\n });\n\n return bullets.join('\\n');\n}\n\nfunction selectCodeExamples(\n includeExamples: boolean,\n query: string,\n matches: SearchMatch[],\n): typeof CODE_EXAMPLES {\n if (!includeExamples) {\n return [];\n }\n\n const matchedCategories = new Set(matches.map(match => match.category));\n const queryTokens = new Set(tokenize(query));\n\n const suggestedExampleIds = new Set<string>();\n\n for (const category of matchedCategories) {\n const exampleIds = CATEGORY_EXAMPLE_MAP[category];\n if (exampleIds) {\n exampleIds.forEach(id => suggestedExampleIds.add(id));\n }\n }\n\n for (const example of CODE_EXAMPLES) {\n if (example.keywords.some(keyword => queryTokens.has(keyword))) {\n suggestedExampleIds.add(example.id);\n }\n }\n\n return CODE_EXAMPLES.filter(example => suggestedExampleIds.has(example.id)).slice(0, 3);\n}\n\n// =============================================================================\n// Tool Export\n// =============================================================================\n\n/**\n * TipTap documentation context tool.\n *\n * Answers questions about TipTap v3 capabilities by searching curated\n * documentation chunks with semantic keyword matching.\n *\n * @example\n * ```ts\n * import { tiptapContextTool } from '@od-oneapp/ai-platform/tools';\n *\n * const result = await streamText({\n * model,\n * tools: { tiptapContext: tiptapContextTool },\n * messages,\n * });\n * ```\n */\nexport const tiptapContextTool = tool({\n description:\n 'Answer questions about TipTap v3 capabilities by searching curated documentation chunks with semantic keyword matching.',\n inputSchema: z.object({\n query: z.string().min(1, 'query is required'),\n context: z.string().optional(),\n includeExamples: z.boolean().optional().default(true),\n limit: z.number().int().min(1).max(MAX_RESULTS).optional().default(3),\n }),\n execute: async ({ query, context, includeExamples = true, limit = 3 }) => {\n const index = await getTiptapDocIndex();\n\n const searchQuery = [query, context].filter(Boolean).join('\\n');\n\n const ranked = rankChunks(searchQuery, index.chunks);\n const topMatches = ranked.slice(0, limit);\n\n const answer = createAnswer(searchQuery, topMatches);\n\n return {\n answer,\n query,\n matchedCount: ranked.length,\n relevantSections: topMatches.map(match => ({\n id: match.id,\n category: match.category,\n title: match.title,\n summary: match.summary,\n keywords: match.keywords,\n score: Number(match.score.toFixed(3)),\n content: match.content,\n })),\n codeExamples: selectCodeExamples(includeExamples, searchQuery, topMatches),\n metadata: {\n categories: topMatches.map(match => match.category),\n indexSize: index.chunks.length,\n },\n };\n },\n});\n\n/** Input type for the tiptapContextTool. */\nexport type TiptapContextToolInput = z.infer<typeof tiptapContextTool.inputSchema>;\n","/**\n * @fileoverview LLM-powered tool utilities.\n * @module @od-oneapp/ai-platform/tools/advanced\n */\n\nimport { z } from 'zod';\n\nimport { tool, generateText, generateObject } from '../../shared';\n\nimport type { SDKFlexibleSchema, SDKLanguageModel, SDKTool } from '../../shared';\n\nconst validationInputSchema = z.object({\n content: z.string().describe('Content to validate'),\n});\n\nconst validationOutputSchema = z.object({\n isValid: z.boolean(),\n score: z.number().min(0).max(100),\n violations: z.array(\n z.object({\n criterion: z.string(),\n issue: z.string(),\n severity: z.enum(['low', 'medium', 'high']),\n }),\n ),\n suggestions: z.array(z.string()),\n});\n\ntype ValidationInput = z.infer<typeof validationInputSchema>;\n\n/**\n * Configuration for LLM-powered tool creation.\n */\nexport interface LLMToolConfig {\n /** SDKTool name */\n name: string;\n /** SDKTool description */\n description: string;\n /** Input parameters schema */\n parameters: SDKFlexibleSchema;\n /** Output schema for structured output */\n outputSchema: SDKFlexibleSchema;\n /** System prompt for the LLM */\n systemPrompt: string;\n /** User prompt template - use {{param}} for interpolation */\n userPromptTemplate: string;\n /** Language model to use */\n model: SDKLanguageModel;\n /** Optional max tokens */\n maxTokens?: number;\n /** Optional temperature */\n temperature?: number;\n}\n\n/**\n * Creates a tool powered by an LLM with structured output.\n *\n * @param config - LLM tool configuration\n * @returns AI SDK tool\n *\n * @example\n * ```ts\n * const summarizeTool = createLLMTool({\n * name: 'summarize',\n * description: 'Summarize text',\n * parameters: z.object({ text: z.string() }),\n * outputSchema: z.object({ summary: z.string(), keyPoints: z.array(z.string()) }),\n * systemPrompt: 'You are a summarization assistant.',\n * userPromptTemplate: 'Summarize: {{text}}',\n * model: openai('gpt-4o-mini'),\n * });\n * ```\n */\nexport function createLLMTool(config: LLMToolConfig): SDKTool {\n const {\n description,\n parameters,\n outputSchema,\n systemPrompt,\n userPromptTemplate,\n model,\n maxTokens,\n temperature,\n } = config;\n\n return tool({\n description,\n inputSchema: parameters,\n execute: async (input: Record<string, unknown>) => {\n // Interpolate user prompt\n const userPrompt = interpolatePrompt(userPromptTemplate, input);\n\n const result = await generateObject({\n model,\n system: systemPrompt,\n prompt: userPrompt,\n schema: outputSchema,\n ...(maxTokens && { maxOutputTokens: maxTokens }),\n ...(temperature !== undefined && { temperature }),\n });\n\n return result.object;\n },\n }) as SDKTool;\n}\n\n/**\n * Creates an LLM-powered validation tool.\n *\n * @param config - Validation tool configuration\n * @returns SDKTool that validates input against criteria\n *\n * @example\n * ```ts\n * const validateTool = createValidationTool({\n * name: 'validateContent',\n * description: 'Validate content against guidelines',\n * criteria: ['No harmful content', 'Proper formatting', 'Factually accurate'],\n * model: openai('gpt-4o-mini'),\n * });\n * ```\n */\nexport function createValidationTool(config: {\n name: string;\n description: string;\n criteria: string[];\n model: SDKLanguageModel;\n maxTokens?: number;\n}): SDKTool {\n return tool({\n description: config.description,\n inputSchema: validationInputSchema,\n execute: async (input: ValidationInput) => {\n const { content } = input;\n const result = await generateObject({\n model: config.model,\n system: `You are a content validator. Validate content against these criteria:\n${config.criteria.map((c, i) => `${i + 1}. ${c}`).join('\\n')}\n\nRespond with JSON matching this schema:\n- isValid: boolean\n- score: 0-100\n- violations: array of {criterion, issue, severity: low|medium|high}\n- suggestions: array of improvement suggestions`,\n prompt: `Validate this content:\\n\\n${content}`,\n schema: validationOutputSchema,\n ...(config.maxTokens && { maxOutputTokens: config.maxTokens }),\n });\n\n return result.object;\n },\n }) as SDKTool;\n}\n\n/**\n * Creates an LLM-powered transformation tool.\n *\n * @param config - Transformation tool configuration\n * @returns SDKTool that transforms input text\n *\n * @example\n * ```ts\n * const rewriteTool = createTransformTool({\n * name: 'rewrite',\n * description: 'Rewrite text in a different style',\n * styles: ['formal', 'casual', 'technical'],\n * model: openai('gpt-4o-mini'),\n * });\n * ```\n */\nexport function createTransformTool(config: {\n name: string;\n description: string;\n styles: string[];\n model: SDKLanguageModel;\n maxTokens?: number;\n}): SDKTool {\n const transformInputSchema = z.object({\n text: z.string().describe('Text to transform'),\n style: z.enum(config.styles as [string, ...string[]]).describe('Target style'),\n preserveLength: z.boolean().optional().describe('Keep similar length'),\n });\n\n return tool({\n description: config.description,\n inputSchema: transformInputSchema,\n execute: async (input: { text: string; style: string; preserveLength?: boolean }) => {\n const { text, style, preserveLength } = input;\n const { text: result } = await generateText({\n model: config.model,\n system: `You are a text transformation assistant. Transform text to the requested style.${preserveLength ? ' Keep the output approximately the same length as the input.' : ''}`,\n prompt: `Transform this text to ${style} style:\\n\\n${text}`,\n });\n\n return { original: text, transformed: result, style };\n },\n }) as SDKTool;\n}\n\n/**\n * Interpolates template strings with values.\n */\nfunction interpolatePrompt(template: string, values: Record<string, unknown>): string {\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key: string) => {\n const value = values[key];\n return value !== undefined ? String(value) : `{{${key}}}`;\n });\n}\n","/**\n * @fileoverview Human-in-the-Loop (HITL) tool approval patterns.\n * @module @od-oneapp/ai-platform/tools/advanced\n */\n\nimport { type z } from 'zod';\n\nimport { tool } from '../../shared';\n\nimport type { SDKTool as Tool } from '../../shared';\n\n/**\n * Approval decision from human.\n */\nexport interface ApprovalDecision {\n /** Whether the action is approved */\n approved: boolean;\n /** Optional reason for decision */\n reason?: string;\n /** Modified parameters (if human adjusted) */\n modifiedParams?: Record<string, unknown>;\n}\n\n/**\n * Configuration for HITL-wrapped tools.\n */\nexport interface HITLConfig<TSchema extends z.ZodObject<z.ZodRawShape>> {\n /** Tool name */\n name: string;\n /** Tool description */\n description: string;\n /** Parameters schema */\n parameters: TSchema;\n /** The actual tool execution function */\n execute: (params: z.infer<TSchema>) => Promise<unknown>;\n /** Function to request human approval */\n requestApproval: (params: z.infer<TSchema>) => Promise<ApprovalDecision>;\n /** Risk level for this tool (affects approval UI) */\n riskLevel?: 'low' | 'medium' | 'high' | 'critical';\n /** Whether approval can be auto-granted based on policy */\n allowAutoApproval?: boolean;\n /** Callback when approval is denied */\n onDenied?: (params: z.infer<TSchema>, reason?: string) => void | Promise<void>;\n}\n\n/**\n * Creates a tool that requires human approval before execution.\n *\n * @param config - HITL tool configuration\n * @returns Tool with approval gate\n *\n * @example\n * ```ts\n * const deleteFileTool = createHITLTool({\n * name: 'deleteFile',\n * description: 'Delete a file from the system',\n * parameters: z.object({ path: z.string() }),\n * execute: async ({ path }) => deleteFile(path),\n * requestApproval: async ({ path }) => {\n * return await showApprovalModal({\n * title: 'Delete File?',\n * message: `Are you sure you want to delete ${path}?`,\n * });\n * },\n * riskLevel: 'high',\n * });\n * ```\n */\nexport function createHITLTool<TSchema extends z.ZodObject<z.ZodRawShape>>(\n config: HITLConfig<TSchema>,\n): Tool {\n return tool({\n description: `${config.description} (Requires approval${config.riskLevel ? ` - ${config.riskLevel} risk` : ''})`,\n inputSchema: config.parameters,\n execute: async params => {\n const typedParams = params as z.infer<TSchema>;\n // Request approval\n const decision = await config.requestApproval(typedParams);\n\n if (!decision.approved) {\n if (config.onDenied) {\n await config.onDenied(typedParams, decision.reason);\n }\n return {\n success: false,\n error: 'Action denied by user',\n reason: decision.reason,\n };\n }\n\n // Use modified params if provided\n const finalParams = decision.modifiedParams\n ? { ...params, ...decision.modifiedParams }\n : params;\n\n // Execute with approved params\n const result = await config.execute(finalParams as z.infer<TSchema>);\n return { success: true, result };\n },\n });\n}\n\n/**\n * Approval policy for automatic approval decisions.\n */\nexport interface ApprovalPolicy {\n /** Policy name */\n name: string;\n /** Tools this policy applies to */\n toolPatterns: string[];\n /** Conditions for auto-approval */\n conditions: ApprovalCondition[];\n /** Maximum risk level to auto-approve */\n maxRiskLevel: 'low' | 'medium' | 'high';\n}\n\n/**\n * Condition for automatic approval.\n */\nexport interface ApprovalCondition {\n /** Parameter path (e.g., 'path', 'options.force') */\n paramPath: string;\n /** Operator for comparison */\n operator: 'equals' | 'contains' | 'matches' | 'lessThan' | 'greaterThan';\n /** Value to compare against */\n value: unknown;\n}\n\n/**\n * Creates an approval policy checker.\n *\n * @param policies - Array of approval policies\n * @returns Function to check if params satisfy any policy\n *\n * @example\n * ```ts\n * const checkPolicy = createPolicyChecker([\n * {\n * name: 'safe-paths',\n * toolPatterns: ['deleteFile', 'moveFile'],\n * conditions: [\n * { paramPath: 'path', operator: 'contains', value: '/tmp/' },\n * ],\n * maxRiskLevel: 'medium',\n * },\n * ]);\n *\n * const canAutoApprove = checkPolicy('deleteFile', { path: '/tmp/test.txt' }, 'low');\n * ```\n */\nexport function createPolicyChecker(policies: ApprovalPolicy[]) {\n return function checkPolicy(\n toolName: string,\n params: Record<string, unknown>,\n riskLevel: 'low' | 'medium' | 'high' | 'critical',\n ): { approved: boolean; policy?: string } {\n const riskOrder = { low: 1, medium: 2, high: 3, critical: 4 };\n const currentRisk = riskOrder[riskLevel];\n\n for (const policy of policies) {\n // Check if policy applies to this tool\n const matchesTool = policy.toolPatterns.some(pattern => {\n if (pattern === '*') return true;\n if (pattern.endsWith('*')) {\n return toolName.startsWith(pattern.slice(0, -1));\n }\n return toolName === pattern;\n });\n\n if (!matchesTool) continue;\n\n // Check risk level\n const policyMaxRisk = riskOrder[policy.maxRiskLevel];\n if (currentRisk > policyMaxRisk) continue;\n\n // Check all conditions\n const allConditionsMet = policy.conditions.every(condition => {\n const value = getNestedValue(params, condition.paramPath);\n return evaluateCondition(value, condition.operator, condition.value);\n });\n\n if (allConditionsMet) {\n return { approved: true, policy: policy.name };\n }\n }\n\n return { approved: false };\n };\n}\n\n/**\n * Gets a nested value from an object using dot notation.\n */\nfunction getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n return path.split('.').reduce<unknown>((curr, key) => {\n if (curr && typeof curr === 'object' && key in curr) {\n return (curr as Record<string, unknown>)[key];\n }\n return undefined;\n }, obj);\n}\n\n/**\n * Evaluates a condition against a value.\n */\nfunction evaluateCondition(\n value: unknown,\n operator: ApprovalCondition['operator'],\n target: unknown,\n): boolean {\n switch (operator) {\n case 'equals':\n return value === target;\n case 'contains':\n return typeof value === 'string' && typeof target === 'string' && value.includes(target);\n case 'matches':\n return (\n typeof value === 'string' && typeof target === 'string' && new RegExp(target).test(value)\n );\n case 'lessThan':\n return typeof value === 'number' && typeof target === 'number' && value < target;\n case 'greaterThan':\n return typeof value === 'number' && typeof target === 'number' && value > target;\n default:\n return false;\n }\n}\n\n/**\n * Creates a batch approval request for multiple tool calls.\n *\n * @param requests - Array of tool call requests\n * @param batchApproval - Function to approve batch\n * @returns Filtered array of approved requests\n */\nexport async function batchApproval<\n T extends { toolName: string; params: Record<string, unknown> },\n>(\n requests: T[],\n batchApprovalFn: (requests: T[]) => Promise<{ approved: boolean; approvedIndices: number[] }>,\n): Promise<T[]> {\n const result = await batchApprovalFn(requests);\n\n if (!result.approved) {\n return [];\n }\n\n return result.approvedIndices\n .map(i => requests[i])\n .filter((item): item is T => item !== undefined);\n}\n","/**\n * @fileoverview Tool result caching patterns.\n * @module @od-oneapp/ai-platform/tools/advanced\n */\n\nimport type { ToolHandler, ToolExecutionContext } from '../core/factory';\n\n/**\n * Cache entry with TTL.\n */\ninterface CacheEntry<T> {\n value: T;\n expiresAt: number;\n hits: number;\n}\n\n/**\n * In-memory cache for tool results.\n */\nexport class ToolCache<T = unknown> {\n private cache = new Map<string, CacheEntry<T>>();\n private maxSize: number;\n private defaultTTL: number;\n\n constructor(options: { maxSize?: number; defaultTTL?: number } = {}) {\n this.maxSize = options.maxSize ?? 1000;\n this.defaultTTL = options.defaultTTL ?? 60000; // 1 minute default\n }\n\n /**\n * Gets a value from cache.\n */\n get(key: string): T | undefined {\n const entry = this.cache.get(key);\n if (!entry) return undefined;\n\n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return undefined;\n }\n\n entry.hits++;\n return entry.value;\n }\n\n /**\n * Sets a value in cache.\n */\n set(key: string, value: T, ttl?: number): void {\n // Evict if at capacity\n if (this.cache.size >= this.maxSize) {\n this.evictLeastUsed();\n }\n\n this.cache.set(key, {\n value,\n expiresAt: Date.now() + (ttl ?? this.defaultTTL),\n hits: 0,\n });\n }\n\n /**\n * Removes expired entries.\n */\n prune(): number {\n const now = Date.now();\n let pruned = 0;\n\n for (const [key, entry] of this.cache.entries()) {\n if (now > entry.expiresAt) {\n this.cache.delete(key);\n pruned++;\n }\n }\n\n return pruned;\n }\n\n /**\n * Clears the entire cache.\n */\n clear(): void {\n this.cache.clear();\n }\n\n /**\n * Gets cache statistics.\n */\n stats(): { size: number; maxSize: number; totalHits: number } {\n let totalHits = 0;\n for (const entry of this.cache.values()) {\n totalHits += entry.hits;\n }\n return { size: this.cache.size, maxSize: this.maxSize, totalHits };\n }\n\n private evictLeastUsed(): void {\n let minHits = Infinity;\n let minKey: string | undefined;\n\n for (const [key, entry] of this.cache.entries()) {\n if (entry.hits < minHits) {\n minHits = entry.hits;\n minKey = key;\n }\n }\n\n if (minKey) {\n this.cache.delete(minKey);\n }\n }\n}\n\n/**\n * Options for cached tool wrapper.\n */\nexport interface CacheOptions<TInput, TOutput> {\n /** Cache instance to use */\n cache?: ToolCache<TOutput>;\n /** TTL in milliseconds */\n ttl?: number;\n /** Function to generate cache key from input */\n keyGenerator?: (input: TInput, context: ToolExecutionContext) => string;\n /** Whether to cache errors */\n cacheErrors?: boolean;\n /** Skip cache for certain inputs */\n skipCache?: (input: TInput, context: ToolExecutionContext) => boolean;\n}\n\n/**\n * Wraps a tool handler with caching.\n *\n * @param handler - Original handler\n * @param options - Cache options\n * @returns Cached handler\n *\n * @example\n * ```ts\n * const cache = new ToolCache<SearchResult>({ ttl: 300000 });\n *\n * const cachedSearch = withCaching(\n * async ({ query }) => searchDocs(query),\n * { cache, keyGenerator: ({ query }) => `search:${query}` }\n * );\n * ```\n */\nexport function withCaching<TInput, TOutput>(\n handler: ToolHandler<TInput, TOutput>,\n options: CacheOptions<TInput, TOutput> = {},\n): ToolHandler<TInput, TOutput> {\n const cache = options.cache ?? new ToolCache<TOutput>();\n const keyGen = options.keyGenerator ?? defaultKeyGenerator;\n\n return async (input, context) => {\n // Check if should skip cache\n if (options.skipCache?.(input, context)) {\n return handler(input, context);\n }\n\n const key = keyGen(input, context);\n\n // Check cache\n const cached = cache.get(key);\n if (cached !== undefined) {\n return cached;\n }\n\n // Execute and cache\n try {\n const result = await handler(input, context);\n cache.set(key, result, options.ttl);\n return result;\n } catch (error) {\n if (options.cacheErrors) {\n // Cache the error result if configured\n const errorResult = { error: String(error) } as TOutput;\n cache.set(key, errorResult, options.ttl);\n return errorResult;\n }\n throw error;\n }\n };\n}\n\n/**\n * Default key generator using JSON.stringify.\n */\nfunction defaultKeyGenerator<T>(input: T, context: ToolExecutionContext): string {\n return JSON.stringify({ input, userId: context.userId });\n}\n\n/**\n * Creates a cache key builder with prefixing.\n *\n * @param prefix - Cache key prefix\n * @returns Key generator function\n *\n * @example\n * ```ts\n * const keyGen = createKeyBuilder('search');\n * keyGen({ query: 'test' }, ctx); // => 'search:{\"query\":\"test\"}'\n * ```\n */\nexport function createKeyBuilder(prefix: string) {\n return function <T>(input: T, context: ToolExecutionContext): string {\n return `${prefix}:${JSON.stringify({ input, userId: context.userId })}`;\n };\n}\n\n/**\n * Creates a selective key generator that only uses specified fields.\n *\n * @param prefix - Cache key prefix\n * @param fields - Fields to include in key\n * @returns Key generator function\n *\n * @example\n * ```ts\n * const keyGen = createSelectiveKeyBuilder('search', ['query', 'limit']);\n * keyGen({ query: 'test', limit: 10, page: 1 }, ctx); // => 'search:test:10'\n * ```\n */\nexport function createSelectiveKeyBuilder<T extends Record<string, unknown>>(\n prefix: string,\n fields: (keyof T)[],\n) {\n return function (input: T, context: ToolExecutionContext): string {\n void context;\n const values = fields.map(f => String(input[f] ?? ''));\n return `${prefix}:${values.join(':')}`;\n };\n}\n\n/**\n * SWR cache entry type.\n */\ninterface SWRCacheEntry<T> {\n value: T;\n fetchedAt: number;\n}\n\n/**\n * Creates a stale-while-revalidate cache wrapper.\n *\n * @param handler - Original handler\n * @param options - SWR options\n * @returns Handler with SWR caching\n *\n * @example\n * ```ts\n * const swrSearch = withSWRCaching(searchHandler, {\n * staleTTL: 60000, // 1 minute stale\n * maxTTL: 300000, // 5 minute max\n * });\n * ```\n */\nexport function withSWRCaching<TInput, TOutput>(\n handler: ToolHandler<TInput, TOutput>,\n options: Omit<CacheOptions<TInput, TOutput>, 'cache'> & {\n /** Time before entry is considered stale (but still usable) */\n staleTTL: number;\n /** Maximum time to keep entry */\n maxTTL: number;\n },\n): ToolHandler<TInput, TOutput> {\n const cache = new ToolCache<SWRCacheEntry<TOutput>>();\n const keyGen = options.keyGenerator ?? defaultKeyGenerator;\n\n return async (input, context) => {\n const key = keyGen(input, context);\n const cached = cache.get(key);\n const now = Date.now();\n\n // Fresh cache hit\n if (cached && now - cached.fetchedAt < options.staleTTL) {\n return cached.value;\n }\n\n // Stale cache hit - return stale and revalidate\n if (cached && now - cached.fetchedAt < options.maxTTL) {\n // Fire and forget revalidation\n void (async () => {\n try {\n const fresh = await handler(input, context);\n cache.set(key, { value: fresh, fetchedAt: Date.now() }, options.maxTTL);\n } catch {\n // Ignore revalidation errors\n }\n })();\n\n return cached.value;\n }\n\n // Cache miss - fetch fresh\n const result = await handler(input, context);\n cache.set(key, { value: result, fetchedAt: now }, options.maxTTL);\n return result;\n };\n}\n","/**\n * @fileoverview Async generator tools for streaming tool results.\n * @module @od-oneapp/ai-platform/tools/advanced\n */\n\nimport { type z } from 'zod';\n\nimport { tool } from '../../shared';\n\nimport type { SDKTool as Tool } from '../../shared';\n\n/**\n * Configuration for generator tool.\n */\nexport interface GeneratorToolConfig<TSchema extends z.ZodObject<z.ZodRawShape>, TChunk, TFinal> {\n /** Tool name */\n name: string;\n /** Tool description */\n description: string;\n /** Input parameters schema */\n parameters: TSchema;\n /** Async generator function */\n generator: (input: z.infer<TSchema>) => AsyncGenerator<TChunk, TFinal, unknown>;\n /** Optional chunk transformer */\n transformChunk?: (chunk: TChunk, index: number) => unknown;\n /** Optional final result transformer */\n transformFinal?: (final: TFinal, chunks: TChunk[]) => unknown;\n}\n\n/**\n * Creates a tool that streams results via async generator.\n *\n * Note: The tool collects all chunks and returns the final result.\n * For true streaming, use with streamText's onToolCall.\n *\n * @param config - Generator tool configuration\n * @returns AI SDK tool\n *\n * @example\n * ```ts\n * const processFileTool = createGeneratorTool({\n * name: 'processFile',\n * description: 'Process a large file in chunks',\n * parameters: z.object({ path: z.string() }),\n * generator: async function* ({ path }) {\n * const chunks = await readFileChunks(path);\n * for (const chunk of chunks) {\n * yield { processed: processChunk(chunk) };\n * }\n * return { totalChunks: chunks.length };\n * },\n * });\n * ```\n */\nexport function createGeneratorTool<TSchema extends z.ZodObject<z.ZodRawShape>, TChunk, TFinal>(\n config: GeneratorToolConfig<TSchema, TChunk, TFinal>,\n): Tool {\n return tool({\n description: config.description,\n inputSchema: config.parameters,\n execute: async input => {\n const typedInput = input as z.infer<TSchema>;\n const chunks: TChunk[] = [];\n let index = 0;\n let finalResult: TFinal | undefined;\n\n const gen = config.generator(typedInput);\n\n for (;;) {\n const { value, done } = await gen.next();\n\n if (done) {\n finalResult = value;\n break;\n }\n\n const chunk = value;\n chunks.push(chunk);\n\n if (config.transformChunk) {\n config.transformChunk(chunk, index);\n }\n index++;\n }\n\n if (config.transformFinal && finalResult !== undefined) {\n return config.transformFinal(finalResult, chunks);\n }\n\n return { chunks, final: finalResult };\n },\n });\n}\n\n/**\n * Creates a paginated tool that fetches results in pages.\n *\n * @param config - Pagination tool configuration\n * @returns AI SDK tool\n *\n * @example\n * ```ts\n * const listUsersTool = createPaginatedTool({\n * name: 'listUsers',\n * description: 'List users with pagination',\n * parameters: z.object({ filter: z.string().optional() }),\n * pageSize: 100,\n * maxPages: 10,\n * fetchPage: async ({ filter }, page, pageSize) => {\n * return fetchUsers({ filter, page, pageSize });\n * },\n * });\n * ```\n */\nexport function createPaginatedTool<TSchema extends z.ZodObject<z.ZodRawShape>, TItem>(config: {\n name: string;\n description: string;\n parameters: TSchema;\n pageSize: number;\n maxPages?: number;\n fetchPage: (\n input: z.infer<TSchema>,\n page: number,\n pageSize: number,\n ) => Promise<{ items: TItem[]; hasMore: boolean }>;\n}): Tool {\n const { pageSize, maxPages = 10 } = config;\n\n return tool({\n description: config.description,\n inputSchema: config.parameters,\n execute: async input => {\n const typedInput = input as z.infer<TSchema>;\n const allItems: TItem[] = [];\n let page = 0;\n let hasMore = true;\n\n while (hasMore && page < maxPages) {\n const { items, hasMore: pageHasMore } = await config.fetchPage(typedInput, page, pageSize);\n\n allItems.push(...items);\n hasMore = pageHasMore;\n page++;\n }\n\n return {\n items: allItems,\n totalPages: page,\n truncated: hasMore,\n };\n },\n });\n}\n\n/**\n * Creates a tool that retries on failure with exponential backoff.\n *\n * @param config - Retry tool configuration\n * @returns AI SDK tool\n *\n * @example\n * ```ts\n * const fetchDataTool = createRetryTool({\n * name: 'fetchData',\n * description: 'Fetch data with retry',\n * parameters: z.object({ url: z.string() }),\n * maxRetries: 3,\n * baseDelay: 1000,\n * execute: async ({ url }) => fetch(url).then(r => r.json()),\n * });\n * ```\n */\nexport function createRetryTool<TSchema extends z.ZodObject<z.ZodRawShape>>(config: {\n name: string;\n description: string;\n parameters: TSchema;\n maxRetries: number;\n baseDelay?: number;\n maxDelay?: number;\n execute: (input: z.infer<TSchema>) => Promise<unknown>;\n shouldRetry?: (error: Error, attempt: number) => boolean;\n}): Tool {\n const { maxRetries, baseDelay = 1000, maxDelay = 30000, shouldRetry = () => true } = config;\n\n return tool({\n description: config.description,\n inputSchema: config.parameters,\n execute: async input => {\n const typedInput = input as z.infer<TSchema>;\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await config.execute(typedInput);\n } catch (e) {\n lastError = e instanceof Error ? e : new Error(String(e));\n\n if (attempt < maxRetries && shouldRetry(lastError, attempt)) {\n const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);\n await sleep(delay);\n }\n }\n }\n\n throw lastError;\n },\n });\n}\n\n/**\n * Helper to create a polling tool that waits for a condition.\n *\n * @param config - Polling tool configuration\n * @returns AI SDK tool\n *\n * @example\n * ```ts\n * const waitForJobTool = createPollingTool({\n * name: 'waitForJob',\n * description: 'Wait for a job to complete',\n * parameters: z.object({ jobId: z.string() }),\n * poll: async ({ jobId }) => getJobStatus(jobId),\n * isComplete: (status) => status.state === 'complete',\n * interval: 2000,\n * timeout: 60000,\n * });\n * ```\n */\nexport function createPollingTool<TSchema extends z.ZodObject<z.ZodRawShape>, TStatus>(config: {\n name: string;\n description: string;\n parameters: TSchema;\n poll: (input: z.infer<TSchema>) => Promise<TStatus>;\n isComplete: (status: TStatus) => boolean;\n interval?: number;\n timeout?: number;\n}): Tool {\n const { interval = 1000, timeout = 30000 } = config;\n\n return tool({\n description: config.description,\n inputSchema: config.parameters,\n execute: async input => {\n const typedInput = input as z.infer<TSchema>;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n const status = await config.poll(typedInput);\n\n if (config.isComplete(status)) {\n return { complete: true, status };\n }\n\n await sleep(interval);\n }\n\n return { complete: false, timedOut: true };\n },\n });\n}\n\n/**\n * Sleep helper.\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","/**\n * @fileoverview Artifact-specific tool factories.\n * @module @od-oneapp/ai-platform/tools/artifacts\n */\n\nimport { z } from 'zod';\n\nimport { tool } from '../../shared';\n\nimport type { SDKTool as Tool } from '../../shared';\n\n/**\n * Artifact types supported by the system.\n */\nexport const ArtifactType = z.enum([\n 'document',\n 'code',\n 'presentation',\n 'spreadsheet',\n 'canvas',\n 'image',\n 'diagram',\n]);\n\nexport type ArtifactType = z.infer<typeof ArtifactType>;\n\n/**\n * Base artifact metadata.\n */\nexport const ArtifactMetadataSchema = z.object({\n id: z.string(),\n type: ArtifactType,\n title: z.string(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n version: z.number(),\n});\n\nexport type ArtifactMetadata = z.infer<typeof ArtifactMetadataSchema>;\n\n/**\n * Artifact operation result.\n */\nexport interface ArtifactOperationResult<T = unknown> {\n success: boolean;\n artifact?: ArtifactMetadata;\n data?: T;\n error?: string;\n}\n\n/**\n * Handler type for artifact operations.\n */\nexport type ArtifactHandler<TInput, TOutput> = (\n input: TInput,\n) => Promise<ArtifactOperationResult<TOutput>>;\n\n/**\n * Creates a tool for creating artifacts.\n *\n * @param config - Creation tool configuration\n * @returns AI SDK tool\n *\n * @example\n * ```ts\n * const createDocTool = createArtifactCreationTool({\n * artifactType: 'document',\n * description: 'Create a new document',\n * handler: async ({ title, content }) => {\n * const doc = await createDocument({ title, content });\n * return { success: true, artifact: doc.metadata, data: doc };\n * },\n * });\n * ```\n */\nexport function createArtifactCreationTool<TContent>(config: {\n artifactType: ArtifactType;\n description: string;\n contentSchema?: z.ZodType<TContent>;\n handler: ArtifactHandler<{ title: string; content: TContent }, unknown>;\n}): Tool {\n const contentSchema = config.contentSchema ?? z.unknown();\n\n return tool({\n description: config.description,\n inputSchema: z.object({\n title: z.string().describe('Artifact title'),\n content: contentSchema.describe('Artifact content'),\n }),\n execute: async input => {\n return config.handler(input as { title: string; content: TContent });\n },\n });\n}\n\n/**\n * Creates a tool for updating artifacts.\n *\n * @param config - Update tool configuration\n * @returns AI SDK tool\n */\nexport function createArtifactUpdateTool<TUpdate>(config: {\n artifactType: ArtifactType;\n description: string;\n updateSchema?: z.ZodType<TUpdate>;\n handler: ArtifactHandler<{ id: string; update: TUpdate }, unknown>;\n}): Tool {\n const updateSchema = config.updateSchema ?? z.unknown();\n\n return tool({\n description: config.description,\n inputSchema: z.object({\n id: z.string().describe('Artifact ID'),\n update: updateSchema.describe('Update payload'),\n }),\n execute: async input => {\n return config.handler(input as { id: string; update: TUpdate });\n },\n });\n}\n\n/**\n * Creates a tool for reading artifacts.\n *\n * @param config - Read tool configuration\n * @returns AI SDK tool\n */\nexport function createArtifactReadTool(config: {\n artifactType: ArtifactType;\n description: string;\n handler: ArtifactHandler<{ id: string }, unknown>;\n}): Tool {\n return tool({\n description: config.description,\n inputSchema: z.object({\n id: z.string().describe('Artifact ID'),\n }),\n execute: async input => {\n return config.handler(input as { id: string });\n },\n });\n}\n\n/**\n * Creates a tool for deleting artifacts.\n *\n * @param config - Delete tool configuration\n * @returns AI SDK tool\n */\nexport function createArtifactDeleteTool(config: {\n artifactType: ArtifactType;\n description: string;\n handler: ArtifactHandler<{ id: string }, void>;\n}): Tool {\n return tool({\n description: config.description,\n inputSchema: z.object({\n id: z.string().describe('Artifact ID'),\n }),\n execute: async input => {\n return config.handler(input as { id: string });\n },\n });\n}\n\n/**\n * Creates a complete CRUD tool set for an artifact type.\n *\n * @param config - CRUD configuration\n * @returns Record of CRUD tools\n *\n * @example\n * ```ts\n * const docTools = createArtifactCRUDTools({\n * artifactType: 'document',\n * handlers: {\n * create: async ({ title, content }) => createDoc(title, content),\n * read: async ({ id }) => readDoc(id),\n * update: async ({ id, update }) => updateDoc(id, update),\n * delete: async ({ id }) => deleteDoc(id),\n * },\n * });\n * ```\n */\nexport function createArtifactCRUDTools<TContent, TUpdate>(config: {\n artifactType: ArtifactType;\n contentSchema?: z.ZodType<TContent>;\n updateSchema?: z.ZodType<TUpdate>;\n handlers: {\n create: ArtifactHandler<{ title: string; content: TContent }, unknown>;\n read: ArtifactHandler<{ id: string }, unknown>;\n update: ArtifactHandler<{ id: string; update: TUpdate }, unknown>;\n delete: ArtifactHandler<{ id: string }, void>;\n };\n}): Record<string, Tool> {\n const { artifactType, handlers } = config;\n const typeLabel = artifactType.charAt(0).toUpperCase() + artifactType.slice(1);\n\n return {\n [`create${typeLabel}`]: createArtifactCreationTool({\n artifactType,\n description: `Create a new ${artifactType}`,\n contentSchema: config.contentSchema,\n handler: handlers.create,\n }),\n [`read${typeLabel}`]: createArtifactReadTool({\n artifactType,\n description: `Read a ${artifactType} by ID`,\n handler: handlers.read,\n }),\n [`update${typeLabel}`]: createArtifactUpdateTool({\n artifactType,\n description: `Update a ${artifactType}`,\n updateSchema: config.updateSchema,\n handler: handlers.update,\n }),\n [`delete${typeLabel}`]: createArtifactDeleteTool({\n artifactType,\n description: `Delete a ${artifactType}`,\n handler: handlers.delete,\n }),\n };\n}\n\n/**\n * Creates tools for artifact versioning.\n */\nexport function createVersioningTools(config: {\n artifactType: ArtifactType;\n handlers: {\n listVersions: (id: string) => Promise<ArtifactMetadata[]>;\n getVersion: (id: string, version: number) => Promise<unknown>;\n revertToVersion: (id: string, version: number) => Promise<ArtifactOperationResult>;\n };\n}): Record<string, Tool> {\n const { artifactType, handlers } = config;\n const typeLabel = artifactType.charAt(0).toUpperCase() + artifactType.slice(1);\n\n return {\n [`list${typeLabel}Versions`]: tool({\n description: `List all versions of a ${artifactType}`,\n inputSchema: z.object({\n id: z.string().describe('Artifact ID'),\n }),\n execute: async input => {\n const { id } = input;\n return handlers.listVersions(id);\n },\n }),\n [`get${typeLabel}Version`]: tool({\n description: `Get a specific version of a ${artifactType}`,\n inputSchema: z.object({\n id: z.string().describe('Artifact ID'),\n version: z.number().describe('Version number'),\n }),\n execute: async input => {\n const { id, version } = input;\n return handlers.getVersion(id, version);\n },\n }),\n [`revert${typeLabel}`]: tool({\n description: `Revert a ${artifactType} to a previous version`,\n inputSchema: z.object({\n id: z.string().describe('Artifact ID'),\n version: z.number().describe('Version to revert to'),\n }),\n execute: async input => {\n const { id, version } = input;\n return handlers.revertToVersion(id, version);\n },\n }),\n };\n}\n","/**\n * Tools Module\n *\n * Tool execution patterns for AI agents:\n * - Core tool definitions\n * - Computer use (browser automation)\n * - MCP integration\n * - Specialized capabilities (superpowers)\n *\n * @module tools\n */\n\n// Simplified tool factories\nexport * from './simple-factory';\nexport * from './validation-wrapper';\n\n// Core tool patterns\nexport * from \"./core\";\n\n// Generic tools\nexport * from \"./generic\";\n\n// Advanced tool patterns\nexport * from \"./advanced\";\n\n// Artifact handling\nexport * from \"./artifacts\";\n\n// Computer use (browser automation)\nexport * from \"./computer\";\n\n// MCP integration\nexport * from \"./mcp\";\n\n// Specialized capabilities\nexport * from \"./superpowers\";\n"],"mappings":"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"}