@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":"errors-CQ8tF4dP.mjs","names":[],"sources":["../src/output/factories.ts","../src/output/element-stream.ts","../src/output/validator.ts","../src/output/errors.ts"],"sourcesContent":["/**\n * @fileoverview Output API factories for structured output generation.\n * @module @od-oneapp/ai-platform/output\n */\n\nimport { logWarn } from '@repo/shared/logs';\nimport { z, type ZodType } from 'zod';\n\nimport { Output, generateObject, streamObject, NoObjectGeneratedError } from '../shared';\n\nimport type { SDKLanguageModelV3 } from '../shared';\n\n/**\n * Creates a typed object output configuration.\n *\n * @param schema - Zod schema for the output\n * @returns Output configuration for use with streamText/generateText\n *\n * @example\n * ```ts\n * const PersonOutput = createObjectOutput(z.object({\n * name: z.string(),\n * age: z.number(),\n * }));\n *\n * const result = await streamText({\n * model,\n * prompt: 'Extract person info',\n * output: PersonOutput,\n * });\n * ```\n */\nexport function createObjectOutput<T extends ZodType>(schema: T): ReturnType<typeof Output.object> {\n return Output.object({ schema });\n}\n\n/**\n * Creates a typed array output configuration with element streaming.\n *\n * @param schema - Zod schema for array elements\n * @returns Output configuration for array streaming\n *\n * @example\n * ```ts\n * const TodosOutput = createArrayOutput(z.object({\n * task: z.string(),\n * done: z.boolean(),\n * }));\n *\n * const result = await streamText({\n * model,\n * prompt: 'List todos',\n * output: TodosOutput,\n * });\n *\n * // Stream individual elements\n * for await (const todo of result.output.elementStream) {\n * console.log('Got todo:', todo);\n * }\n * ```\n */\nexport function createArrayOutput<T extends ZodType>(schema: T): ReturnType<typeof Output.array> {\n return Output.array({ element: schema });\n}\n\n/**\n * Creates a choice output for classification tasks using Zod enum.\n *\n * @param values - Array of valid choices\n * @returns Zod enum schema for use with generateObject\n *\n * @example\n * ```ts\n * const SentimentSchema = createChoiceSchema(['positive', 'negative', 'neutral'] as const);\n *\n * const { object } = await generateObject({\n * model,\n * schema: z.object({ sentiment: SentimentSchema }),\n * prompt: 'Classify sentiment: \"I love this!\"',\n * });\n * // object.sentiment === 'positive'\n * ```\n */\nexport function createChoiceSchema<T extends readonly [string, ...string[]]>(values: T) {\n return z.enum(values);\n}\n\n/**\n * Structured output helper that generates a single object.\n *\n * @param model - Language model to use\n * @param schema - Zod schema for output\n * @param prompt - Generation prompt\n * @returns Generated object matching schema\n */\nexport async function generateStructuredObject<T extends ZodType>(\n model: SDKLanguageModelV3,\n schema: T,\n prompt: string,\n) {\n const { object } = await generateObject({\n model,\n schema,\n prompt,\n });\n return object as z.infer<T>;\n}\n\n/**\n * Structured output helper that streams an object.\n *\n * @param model - Language model to use\n * @param schema - Zod schema for output\n * @param prompt - Generation prompt\n * @returns Stream result with partial object stream\n */\nexport function streamStructuredObject<T extends ZodType>(\n model: SDKLanguageModelV3,\n schema: T,\n prompt: string,\n) {\n return streamObject({\n model,\n schema,\n prompt,\n });\n}\n\n/**\n * Schema builder utilities for common patterns.\n */\nexport const SchemaBuilders = {\n /**\n * Creates a schema for a list of items with metadata.\n */\n listWithMeta<T extends ZodType>(itemSchema: T) {\n return z.object({\n items: z.array(itemSchema),\n total: z.number(),\n hasMore: z.boolean().optional(),\n });\n },\n\n /**\n * Creates a schema for a result with optional error.\n */\n resultOrError<T extends ZodType>(successSchema: T) {\n return z.discriminatedUnion('success', [\n z.object({ success: z.literal(true), data: successSchema }),\n z.object({ success: z.literal(false), error: z.string() }),\n ]);\n },\n\n /**\n * Creates a schema for classification with confidence.\n */\n classificationWithConfidence<T extends readonly string[]>(categories: T) {\n return z.object({\n category: z.enum(categories as unknown as [string, ...string[]]),\n confidence: z.number().min(0).max(1),\n reasoning: z.string().optional(),\n });\n },\n\n /**\n * Creates a schema for extracted entities.\n */\n entities<T extends Record<string, ZodType>>(entitySchemas: T) {\n return z.object({\n entities: z.object(entitySchemas),\n raw: z.string().optional(),\n });\n },\n\n /**\n * Creates a schema for a step-by-step plan.\n */\n plan() {\n return z.object({\n steps: z.array(\n z.object({\n step: z.number(),\n action: z.string(),\n reasoning: z.string().optional(),\n dependencies: z.array(z.number()).optional(),\n }),\n ),\n summary: z.string(),\n });\n },\n};\n\n// -----------------------------------------------------------------------------\n// NoObjectGeneratedError Handling\n// -----------------------------------------------------------------------------\n\n/**\n * Result of safe structured generation with error info.\n */\nexport interface SafeGenerateResult<T> {\n success: boolean;\n object?: T;\n partialObject?: Partial<T>;\n error?: NoObjectGeneratedError | Error;\n text?: string;\n usage?: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n}\n\n/**\n * Safe structured object generation with NoObjectGeneratedError handling.\n * Returns a result object instead of throwing.\n *\n * @example\n * ```typescript\n * const result = await safeGenerateObject({\n * model,\n * schema: z.object({ name: z.string() }),\n * prompt: 'Extract name from: Hello!',\n * });\n *\n * if (result.success) {\n * console.log(result.object.name);\n * } else {\n * console.log('Failed:', result.error?.message);\n * console.log('Raw text:', result.text);\n * }\n * ```\n */\nexport async function safeGenerateObject<T extends ZodType>(\n options: Parameters<typeof generateObject<T>>[0],\n): Promise<SafeGenerateResult<z.infer<T>>> {\n try {\n const { object, usage } = await generateObject(options);\n const usageRecord = (usage ?? {}) as unknown as {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n };\n return {\n success: true,\n object: object as z.infer<T>,\n usage: {\n promptTokens: usageRecord.promptTokens ?? 0,\n completionTokens: usageRecord.completionTokens ?? 0,\n totalTokens: usageRecord.totalTokens ?? 0,\n },\n };\n } catch (error) {\n if (error instanceof NoObjectGeneratedError) {\n logWarn(`[safeGenerateObject] No object generated: ${error.message}`);\n const errorUsage = error.usage as Record<string, number> | undefined;\n const possiblePartial = (error as unknown as { partialObject?: unknown }).partialObject;\n const partialObject =\n typeof possiblePartial === 'object' && possiblePartial !== null\n ? (possiblePartial as Partial<z.infer<T>>)\n : (extractPartialFromError<z.infer<T>>(error) ?? undefined);\n return {\n success: false,\n error,\n text: error.text,\n partialObject,\n usage: errorUsage\n ? {\n promptTokens: errorUsage.promptTokens ?? 0,\n completionTokens: errorUsage.completionTokens ?? 0,\n totalTokens: errorUsage.totalTokens ?? 0,\n }\n : undefined,\n };\n }\n\n // Re-throw non-NoObjectGeneratedError\n return {\n success: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n}\n\n/**\n * Generate object with fallback value on failure.\n *\n * @example\n * ```typescript\n * const person = await generateObjectWithFallback({\n * model,\n * schema: z.object({ name: z.string(), age: z.number() }),\n * prompt: 'Extract person info',\n * fallback: { name: 'Unknown', age: 0 },\n * });\n * ```\n */\nexport async function generateObjectWithFallback<T extends ZodType>(\n options: Parameters<typeof generateObject<T>>[0] & {\n fallback: z.infer<T>;\n },\n): Promise<z.infer<T>> {\n const { fallback, ...generateOptions } = options;\n // Cast to fix SDK type incompatibility\n const result = await safeGenerateObject(\n generateOptions as Parameters<typeof generateObject<T>>[0],\n );\n\n if (result.success && result.object !== undefined) {\n return result.object as z.infer<T>;\n }\n\n logWarn(`[generateObjectWithFallback] Using fallback value`);\n return fallback;\n}\n\n/**\n * Generate object with retry on failure.\n *\n * @example\n * ```typescript\n * const person = await generateObjectWithRetry({\n * model,\n * schema: z.object({ name: z.string() }),\n * prompt: 'Extract name',\n * maxRetries: 3,\n * onRetry: (attempt, error) => console.log(`Retry ${attempt}:`, error.message),\n * });\n * ```\n */\nexport async function generateObjectWithRetry<T extends ZodType>(\n options: Parameters<typeof generateObject<T>>[0] & {\n maxRetries?: number;\n retryDelay?: number;\n onRetry?: (attempt: number, error: Error) => void;\n },\n): Promise<z.infer<T>> {\n const { maxRetries = 3, retryDelay = 1000, onRetry, ...generateOptions } = options;\n\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n // Cast to fix SDK type incompatibility\n const result = await safeGenerateObject(\n generateOptions as Parameters<typeof generateObject<T>>[0],\n );\n\n if (result.success && result.object !== undefined) {\n return result.object as z.infer<T>;\n }\n\n lastError = result.error ?? new Error('Unknown error');\n\n if (attempt < maxRetries) {\n onRetry?.(attempt + 1, lastError);\n await new Promise(resolve => setTimeout(resolve, retryDelay * (attempt + 1)));\n }\n }\n\n throw lastError ?? new Error('Failed to generate object after retries');\n}\n\n/**\n * Check if an error is a NoObjectGeneratedError.\n */\nexport function isNoObjectGeneratedError(error: unknown): error is NoObjectGeneratedError {\n return error instanceof NoObjectGeneratedError;\n}\n\n/**\n * Extract partial data from NoObjectGeneratedError.\n * Attempts to parse partial JSON from the raw text.\n */\nexport function extractPartialFromError<T>(error: NoObjectGeneratedError): Partial<T> | null {\n const { text } = error;\n if (!text) return null;\n\n // Try to find JSON-like content\n const jsonMatch = text.match(/\\{[\\s\\S]*\\}/);\n if (!jsonMatch) return null;\n\n try {\n return JSON.parse(jsonMatch[0]) as Partial<T>;\n } catch {\n return null;\n }\n}\n\n// -----------------------------------------------------------------------------\n// Re-export NoObjectGeneratedError for convenience\n// -----------------------------------------------------------------------------\n\nexport { NoObjectGeneratedError };\n","/**\n * Element Stream Module\n *\n * SDK v6 pattern for streaming array elements in real-time.\n * Uses streamObject with output: 'array' and elementStream for\n * progressive rendering of list items.\n *\n * @module output/element-stream\n */\n\nimport { streamObject } from '../shared';\n\nimport type { SDKLanguageModelV3 } from '../shared';\nimport type { z, ZodTypeAny } from 'zod';\n\n// -----------------------------------------------------------------------------\n// Types\n// -----------------------------------------------------------------------------\n\n/** Element stream event */\nexport interface ElementStreamEvent<T> {\n /** Event type */\n type: 'element' | 'complete' | 'error';\n /** Element index */\n index?: number;\n /** Element data (partial or complete) */\n element?: T;\n /** Whether element is complete */\n isComplete?: boolean;\n /** Error if type is 'error' */\n error?: Error;\n /** Total elements so far */\n totalElements?: number;\n}\n\n/** Element stream options */\nexport interface ElementStreamOptions<TElement extends ZodTypeAny> {\n /** Language model */\n model: SDKLanguageModelV3;\n /** Schema for each array element */\n elementSchema: TElement;\n /** System prompt */\n system?: string;\n /** User prompt */\n prompt: string;\n /** Abort signal */\n abortSignal?: AbortSignal;\n /** Max tokens */\n maxTokens?: number;\n /** Temperature */\n temperature?: number;\n /** Callback for each partial element */\n onPartialElement?: (element: Partial<z.infer<TElement>>, index: number) => void;\n /** Callback for each complete element */\n onElement?: (element: z.infer<TElement>, index: number) => void;\n /** Callback on error */\n onError?: (error: Error) => void;\n /** Callback on completion */\n onComplete?: (elements: z.infer<TElement>[]) => void;\n}\n\n/** Element stream result */\nexport interface ElementStreamResult<T> {\n /** AsyncIterable of element events */\n stream: AsyncIterable<ElementStreamEvent<T>>;\n /** Promise that resolves to all elements */\n elements: Promise<T[]>;\n /** Usage information promise */\n usage: Promise<{\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n }>;\n}\n\n// -----------------------------------------------------------------------------\n// Core Element Stream\n// -----------------------------------------------------------------------------\n\n/**\n * Stream array elements in real-time using SDK v6 elementStream pattern.\n *\n * @example\n * ```typescript\n * const taskSchema = z.object({\n * title: z.string(),\n * priority: z.enum(['low', 'medium', 'high']),\n * estimate: z.string(),\n * });\n *\n * const { stream, elements } = streamElements({\n * model: anthropic('claude-sonnet'),\n * elementSchema: taskSchema,\n * prompt: 'Break down building a web app into tasks',\n * onElement: (task, index) => {\n * console.log(`Task ${index + 1}: ${task.title}`);\n * },\n * });\n *\n * // Or iterate over the stream\n * for await (const event of stream) {\n * if (event.type === 'element' && event.isComplete) {\n * renderTask(event.element);\n * }\n * }\n * ```\n */\nexport function streamElements<TElement extends ZodTypeAny>(\n options: ElementStreamOptions<TElement>,\n): ElementStreamResult<z.infer<TElement>> {\n const {\n model,\n elementSchema,\n system,\n prompt,\n abortSignal,\n maxTokens,\n temperature,\n onPartialElement,\n onElement,\n onError,\n onComplete,\n } = options;\n void maxTokens;\n void onPartialElement;\n\n type Element = z.infer<TElement>;\n\n let resolveElements: (elements: Element[]) => void;\n let rejectElements: (error: Error) => void;\n let resolveUsage: (usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n }) => void;\n let rejectUsage: (error: Error) => void;\n\n const elementsPromise = new Promise<Element[]>((resolve, reject) => {\n resolveElements = resolve;\n rejectElements = reject;\n });\n\n const usagePromise = new Promise<{\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n }>((resolve, reject) => {\n resolveUsage = resolve;\n rejectUsage = reject;\n });\n\n async function* createStream(): AsyncIterable<ElementStreamEvent<Element>> {\n const allElements: Element[] = [];\n\n try {\n // Use 'array' output mode for element streaming\n const result = streamObject({\n model,\n output: 'array' as const,\n schema: elementSchema,\n system,\n prompt,\n abortSignal,\n temperature,\n });\n\n let currentIndex = 0;\n\n // Use elementStream from the result - it streams complete elements\n for await (const element of result.elementStream) {\n // Each element from elementStream is complete\n allElements.push(element as Element);\n\n // Notify callbacks\n onElement?.(element as Element, currentIndex);\n\n yield {\n type: 'element',\n index: currentIndex,\n element: element as Element,\n isComplete: true,\n totalElements: allElements.length,\n };\n\n currentIndex++;\n }\n\n // Get final usage\n const finalUsage = await result.usage;\n const usageObj = finalUsage as unknown as {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n };\n resolveUsage({\n promptTokens: usageObj.promptTokens ?? 0,\n completionTokens: usageObj.completionTokens ?? 0,\n totalTokens: usageObj.totalTokens ?? 0,\n });\n\n // Complete\n onComplete?.(allElements);\n resolveElements(allElements);\n\n yield {\n type: 'complete',\n totalElements: allElements.length,\n };\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n onError?.(err);\n rejectElements(err);\n rejectUsage(err);\n\n yield {\n type: 'error',\n error: err,\n totalElements: allElements.length,\n };\n }\n }\n\n return {\n stream: createStream(),\n elements: elementsPromise,\n usage: usagePromise,\n };\n}\n\n// -----------------------------------------------------------------------------\n// Partial Element Stream (with progress updates)\n// -----------------------------------------------------------------------------\n\n/** Partial element stream options */\nexport interface PartialElementStreamOptions<\n TElement extends ZodTypeAny,\n> extends ElementStreamOptions<TElement> {\n /** Minimum update interval in ms (to avoid too many updates) */\n updateInterval?: number;\n}\n\n/**\n * Stream array elements with partial progress updates.\n * Useful for showing \"typing\" indicators for each element.\n *\n * @example\n * ```typescript\n * const { stream } = streamElementsWithProgress({\n * model,\n * elementSchema: taskSchema,\n * prompt: 'Generate 5 tasks',\n * updateInterval: 100,\n * });\n *\n * for await (const event of stream) {\n * if (event.type === 'partial') {\n * // Show partial element with loading indicator\n * updateUI(event.element, { loading: true });\n * } else if (event.type === 'element') {\n * // Show complete element\n * updateUI(event.element, { loading: false });\n * }\n * }\n * ```\n */\nexport function streamElementsWithProgress<TElement extends ZodTypeAny>(\n options: PartialElementStreamOptions<TElement>,\n): ElementStreamResult<z.infer<TElement>> & {\n partialStream: AsyncIterable<ElementStreamEvent<Partial<z.infer<TElement>>>>;\n} {\n const { updateInterval = 50, onPartialElement, ...rest } = options;\n void updateInterval;\n void onPartialElement;\n\n type Element = z.infer<TElement>;\n\n // For partial updates, we need to use partialObjectStream\n // But SDK v6's array mode doesn't directly expose partials per element\n // So we wrap the basic stream and emit estimated partials\n\n const baseResult = streamElements(rest);\n\n async function* createPartialStream(): AsyncIterable<ElementStreamEvent<Partial<Element>>> {\n for await (const event of baseResult.stream) {\n // Re-emit as partial stream events\n if (event.type === 'element') {\n yield {\n type: 'element',\n index: event.index,\n element: event.element as Partial<Element>,\n isComplete: true,\n totalElements: event.totalElements,\n };\n } else {\n yield event as ElementStreamEvent<Partial<Element>>;\n }\n }\n }\n\n return {\n ...baseResult,\n partialStream: createPartialStream(),\n };\n}\n\n// -----------------------------------------------------------------------------\n// Batched Element Stream\n// -----------------------------------------------------------------------------\n\n/** Batched element stream options */\nexport interface BatchedElementStreamOptions<\n TElement extends ZodTypeAny,\n> extends ElementStreamOptions<TElement> {\n /** Batch size */\n batchSize: number;\n /** Batch timeout in ms */\n batchTimeout?: number;\n}\n\n/**\n * Stream elements in batches for better performance.\n *\n * @example\n * ```typescript\n * const { batches } = streamElementsInBatches({\n * model,\n * elementSchema: taskSchema,\n * prompt: 'Generate 20 tasks',\n * batchSize: 5,\n * batchTimeout: 1000,\n * });\n *\n * for await (const batch of batches) {\n * // Process 5 elements at once\n * renderTaskBatch(batch);\n * }\n * ```\n */\nexport function streamElementsInBatches<TElement extends ZodTypeAny>(\n options: BatchedElementStreamOptions<TElement>,\n): ElementStreamResult<z.infer<TElement>> & {\n batches: AsyncIterable<z.infer<TElement>[]>;\n} {\n const { batchSize, batchTimeout = 1000, ...rest } = options;\n\n type Element = z.infer<TElement>;\n\n const baseResult = streamElements(rest);\n\n async function* createBatchStream(): AsyncIterable<Element[]> {\n let batch: Element[] = [];\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n // Note: In an async generator, we can't directly yield from a timeout callback.\n // The timeout is used purely for clearing purposes here.\n // A more sophisticated implementation would use a queue and resolver pattern.\n\n const flushBatch = (): Element[] | null => {\n if (batch.length === 0) return null;\n const result = [...batch];\n batch = [];\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n return result;\n };\n\n for await (const event of baseResult.stream) {\n if (event.type === 'element' && event.element) {\n batch.push(event.element as Element);\n\n if (batch.length >= batchSize) {\n const flushed = flushBatch();\n if (flushed) yield flushed;\n } else if (!timeoutId) {\n // Set timeout - the batch will be flushed when the loop continues\n // or when the stream completes, whichever comes first\n timeoutId = setTimeout(() => {\n // Clear the timeout reference so we can set a new one\n timeoutId = null;\n }, batchTimeout);\n }\n } else if (event.type === 'complete') {\n // Flush remaining\n const flushed = flushBatch();\n if (flushed) yield flushed;\n }\n }\n\n // Final flush\n const final = flushBatch();\n if (final) yield final;\n }\n\n return {\n ...baseResult,\n batches: createBatchStream(),\n };\n}\n\n// -----------------------------------------------------------------------------\n// Factory Functions\n// -----------------------------------------------------------------------------\n\n/**\n * Create an element streamer for a specific schema.\n * Useful for reusing the same schema across multiple prompts.\n *\n * @example\n * ```typescript\n * const streamTasks = createElementStreamer({\n * model: anthropic('claude-sonnet'),\n * elementSchema: taskSchema,\n * });\n *\n * // Use multiple times\n * const webAppTasks = await streamTasks('Break down building a web app');\n * const apiTasks = await streamTasks('Break down building an API');\n * ```\n */\nexport function createElementStreamer<TElement extends ZodTypeAny>(config: {\n model: SDKLanguageModelV3;\n elementSchema: TElement;\n system?: string;\n maxTokens?: number;\n temperature?: number;\n}) {\n return async function stream(\n prompt: string,\n options?: Partial<ElementStreamOptions<TElement>>,\n ): Promise<z.infer<TElement>[]> {\n return collectElements({\n ...config,\n prompt,\n ...options,\n });\n };\n}\n\n/**\n * Create a collected element stream that returns all elements at once.\n * Simpler API when you don't need real-time updates.\n *\n * @example\n * ```typescript\n * const tasks = await collectElements({\n * model,\n * elementSchema: taskSchema,\n * prompt: 'Generate 5 tasks',\n * });\n *\n * console.log(`Got ${tasks.length} tasks`);\n * ```\n */\nexport async function collectElements<TElement extends ZodTypeAny>(\n options: ElementStreamOptions<TElement>,\n): Promise<z.infer<TElement>[]> {\n const { stream, elements } = streamElements(options);\n // Drain stream to resolve elements promise\n for await (const _ of stream) {\n // Consume stream to ensure elements promise resolves\n }\n return elements;\n}\n\n// -----------------------------------------------------------------------------\n// withElementStream Composable Wrapper\n// -----------------------------------------------------------------------------\n\n/**\n * Configuration for withElementStream wrapper.\n */\nexport interface WithElementStreamConfig<T> {\n /** Called for each streamed element */\n readonly onElement?: (element: T, index: number) => void;\n /** Buffer size before yielding (batch elements) */\n readonly bufferSize?: number;\n /** Transform each element before yielding */\n readonly transform?: (element: T) => T;\n /** Called when all elements are complete */\n readonly onComplete?: (elements: T[], totalCount: number) => void;\n /** Called on error */\n readonly onError?: (error: Error) => void;\n}\n\n/**\n * Stream result with experimental_output from streamText.\n * This interface represents the shape of results from streamText\n * when using experimental_output with Output.array().\n */\nexport interface ExperimentalOutputStreamResult<T> {\n /** Element stream from experimental_output */\n experimental_output?: {\n /** Async iterable of elements */\n elementStream?: AsyncIterable<T>;\n /** Promise resolving to all elements */\n object?: Promise<T[]>;\n };\n}\n\n/**\n * Composable wrapper for streaming array elements from experimental_output.\n *\n * This wraps a streamText result that uses experimental_output with Output.array(),\n * providing callbacks, transformations, and buffering capabilities.\n *\n * @param streamResult - Result from streamText with experimental_output\n * @param config - Configuration for element streaming\n * @returns Async generator yielding elements (potentially transformed/buffered)\n *\n * @example\n * ```typescript\n * import { streamText, Output } from 'ai';\n * import { withElementStream } from '@od-oneapp/ai-platform/output';\n * import { z } from 'zod';\n *\n * const TodoSchema = z.object({\n * task: z.string(),\n * priority: z.enum(['low', 'medium', 'high']),\n * });\n *\n * const result = streamText({\n * model,\n * prompt: 'List 10 todos',\n * experimental_output: Output.array({ element: TodoSchema }),\n * });\n *\n * // Basic iteration with callback\n * const todos: z.infer<typeof TodoSchema>[] = [];\n * for await (const todo of withElementStream(result, {\n * onElement: (t, i) => console.log(`Got todo ${i}: ${t.task}`),\n * })) {\n * todos.push(todo);\n * }\n *\n * // With transformation\n * for await (const todo of withElementStream(result, {\n * transform: (t) => ({ ...t, task: t.task.toUpperCase() }),\n * })) {\n * console.log(todo.task); // UPPERCASE\n * }\n *\n * // With buffering (yields in batches)\n * for await (const todoBatch of withElementStream(result, {\n * bufferSize: 5,\n * onElement: (t, i) => console.log(`Buffered todo ${i}`),\n * })) {\n * // todoBatch is an array of 5 todos (or fewer at the end)\n * processBatch(todoBatch);\n * }\n * ```\n */\nexport async function* withElementStream<T>(\n streamResult: ExperimentalOutputStreamResult<T>,\n config?: WithElementStreamConfig<T>,\n): AsyncGenerator<T | T[], void, unknown> {\n const { onElement, bufferSize, transform, onComplete, onError } = config ?? {};\n\n const elementStream = streamResult.experimental_output?.elementStream;\n\n if (!elementStream) {\n // If no element stream, try to get from object promise\n const objectPromise = streamResult.experimental_output?.object;\n if (objectPromise) {\n try {\n const elements = await objectPromise;\n let index = 0;\n\n if (bufferSize && bufferSize > 1) {\n // Buffered mode\n let buffer: T[] = [];\n for (const element of elements) {\n const transformed = transform ? transform(element) : element;\n onElement?.(transformed, index);\n buffer.push(transformed);\n index++;\n\n if (buffer.length >= bufferSize) {\n yield buffer;\n buffer = [];\n }\n }\n\n // Yield remaining buffer\n if (buffer.length > 0) {\n yield buffer;\n }\n } else {\n // Non-buffered mode\n for (const element of elements) {\n const transformed = transform ? transform(element) : element;\n onElement?.(transformed, index);\n yield transformed;\n index++;\n }\n }\n\n const finalElements = transform ? elements.map(transform) : elements;\n onComplete?.(finalElements, finalElements.length);\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n onError?.(err);\n throw err;\n }\n }\n return;\n }\n\n try {\n const allElements: T[] = [];\n let index = 0;\n let buffer: T[] = [];\n\n for await (const element of elementStream) {\n const transformed = transform ? transform(element) : element;\n allElements.push(transformed);\n\n // Call onElement callback\n onElement?.(transformed, index);\n index++;\n\n if (bufferSize && bufferSize > 1) {\n // Buffered mode\n buffer.push(transformed);\n\n if (buffer.length >= bufferSize) {\n yield buffer;\n buffer = [];\n }\n } else {\n // Non-buffered mode\n yield transformed;\n }\n }\n\n // Yield remaining buffer in buffered mode\n if (bufferSize && bufferSize > 1 && buffer.length > 0) {\n yield buffer;\n }\n\n // Call onComplete with all elements\n onComplete?.(allElements, allElements.length);\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n onError?.(err);\n throw err;\n }\n}\n\n/**\n * Collect all elements from withElementStream into an array.\n * Convenience function for when you want all elements at once.\n *\n * @param streamResult - Result from streamText with experimental_output\n * @param config - Configuration for element streaming\n * @returns Promise resolving to array of all elements\n *\n * @example\n * ```typescript\n * const todos = await collectFromElementStream(result, {\n * onElement: (t, i) => console.log(`Processing ${i}`),\n * transform: (t) => ({ ...t, processed: true }),\n * });\n * ```\n */\nexport async function collectFromElementStream<T>(\n streamResult: ExperimentalOutputStreamResult<T>,\n config?: Omit<WithElementStreamConfig<T>, 'bufferSize'>,\n): Promise<T[]> {\n const elements: T[] = [];\n\n for await (const element of withElementStream(streamResult, config)) {\n // Without bufferSize, elements are yielded one at a time\n elements.push(element as T);\n }\n\n return elements;\n}\n","/**\n * @fileoverview Output Validator Module\n *\n * Provides schema-based validation for AI model outputs with configurable\n * error handling strategies including throw, partial recovery, and retry.\n *\n * @module @od-oneapp/ai-platform/output/validator\n *\n * @example\n * ```typescript\n * import { createOutputValidator } from '@od-oneapp/ai-platform/output';\n * import { z } from 'zod';\n *\n * const PersonSchema = z.object({\n * name: z.string(),\n * age: z.number(),\n * email: z.string().email(),\n * });\n *\n * // Simple validation with throw strategy\n * const strictValidator = createOutputValidator({\n * schema: PersonSchema,\n * onValidationError: 'throw',\n * });\n *\n * try {\n * const person = strictValidator.validate(rawOutput);\n * } catch (error) {\n * console.error('Validation failed:', error);\n * }\n *\n * // Partial recovery strategy\n * const lenientValidator = createOutputValidator({\n * schema: PersonSchema,\n * onValidationError: 'partial',\n * });\n *\n * const result = lenientValidator.validate(rawOutput);\n * if (result.success) {\n * console.log('Valid:', result.data);\n * } else {\n * console.log('Partial:', result.partial, 'Errors:', result.errors);\n * }\n *\n * // Retry strategy with model\n * const retryValidator = createOutputValidator({\n * schema: PersonSchema,\n * onValidationError: 'retry',\n * maxRetries: 2,\n * });\n *\n * const validated = await retryValidator.validateAsync(rawOutput, {\n * model: openai('gpt-4'),\n * prompt: 'Extract person info from: John, 30 years old',\n * });\n * ```\n */\n\nimport { logWarn, logInfo } from '@repo/shared/logs';\nimport { type ZodType, type ZodError, type ZodIssue } from 'zod';\n\nimport { generateObject } from '../shared';\n\nimport type { SDKLanguageModelV3 } from '../shared';\n\n// -----------------------------------------------------------------------------\n// Types\n// -----------------------------------------------------------------------------\n\n/**\n * Error handling strategy for validation failures.\n */\nexport type ValidationErrorStrategy = 'throw' | 'partial' | 'retry';\n\n/**\n * Configuration for the output validator.\n */\nexport interface OutputValidatorConfig<T> {\n /** Schema for validation */\n readonly schema: ZodType<T>;\n /** Error handling strategy */\n readonly onValidationError: ValidationErrorStrategy;\n /** Max retries when strategy is 'retry' (default: 2) */\n readonly maxRetries?: number;\n /** Delay between retries in ms (default: 1000) */\n readonly retryDelay?: number;\n /** Custom error message prefix */\n readonly errorMessage?: string;\n /** Called on validation error (before retry or throw) */\n readonly onError?: (error: ZodError, attempt: number) => void;\n}\n\n/**\n * Context for async validation with retry support.\n */\nexport interface RetryContext {\n /** Language model for regeneration */\n readonly model: SDKLanguageModelV3;\n /** Original prompt for regeneration */\n readonly prompt: string;\n /** System prompt (optional) */\n readonly system?: string;\n /** Temperature for regeneration */\n readonly temperature?: number;\n}\n\n/**\n * Result of validation with 'partial' strategy.\n */\nexport interface PartialValidationResult<T> {\n /** Whether validation succeeded */\n readonly success: boolean;\n /** Validated data (if success) */\n readonly data?: T;\n /** Partial data extracted (if failure) */\n readonly partial?: Partial<T>;\n /** Validation errors (if failure) */\n readonly errors?: ZodIssue[];\n /** Raw error object */\n readonly rawError?: ZodError;\n}\n\n/**\n * Output validator instance.\n */\nexport interface OutputValidator<T> {\n /**\n * Validate output synchronously.\n * - 'throw': throws ZodError on failure\n * - 'partial': returns PartialValidationResult\n * - 'retry': throws (use validateAsync for retry support)\n */\n validate(output: unknown): T | PartialValidationResult<T>;\n\n /**\n * Validate output asynchronously with retry support.\n * - 'throw': throws ZodError on failure\n * - 'partial': returns PartialValidationResult\n * - 'retry': retries with model until success or max retries\n */\n validateAsync(\n output: unknown,\n retryContext?: RetryContext,\n ): Promise<T | PartialValidationResult<T>>;\n\n /** Get the validation schema */\n getSchema(): ZodType<T>;\n\n /** Get the error handling strategy */\n getStrategy(): ValidationErrorStrategy;\n}\n\n// -----------------------------------------------------------------------------\n// Custom Error\n// -----------------------------------------------------------------------------\n\n/**\n * Custom error for validation failures with context.\n */\nexport class OutputValidationError extends Error {\n readonly zodError: ZodError;\n readonly strategy: ValidationErrorStrategy;\n readonly attempts: number;\n\n constructor(\n message: string,\n zodError: ZodError,\n strategy: ValidationErrorStrategy,\n attempts: number = 1,\n ) {\n super(message);\n this.name = 'OutputValidationError';\n this.zodError = zodError;\n this.strategy = strategy;\n this.attempts = attempts;\n }\n}\n\n// -----------------------------------------------------------------------------\n// Helper Functions\n// -----------------------------------------------------------------------------\n\n/**\n * Extract partial data from validation errors.\n * Attempts to keep valid fields while noting invalid ones.\n */\nfunction extractPartialData<T>(output: unknown, zodError: ZodError): Partial<T> | undefined {\n if (typeof output !== 'object' || output === null) {\n return undefined;\n }\n\n const result: Record<string, unknown> = { ...(output as Record<string, unknown>) };\n const invalidPaths = new Set<string>();\n\n // Collect paths with errors\n for (const issue of zodError.issues) {\n if (issue.path.length > 0) {\n invalidPaths.add(String(issue.path[0]));\n }\n }\n\n // Remove invalid top-level fields\n for (const path of invalidPaths) {\n delete result[path];\n }\n\n return Object.keys(result).length > 0 ? (result as Partial<T>) : undefined;\n}\n\n/**\n * Build error message with custom prefix if provided.\n */\nfunction buildErrorMessage(zodError: ZodError, customPrefix?: string): string {\n const issueMessages = zodError.issues\n .map(issue => {\n const path = issue.path.length > 0 ? issue.path.join('.') : 'root';\n return `${path}: ${issue.message}`;\n })\n .join('; ');\n\n return customPrefix ? `${customPrefix}: ${issueMessages}` : `Validation failed: ${issueMessages}`;\n}\n\n/**\n * Delay helper for retries.\n */\nfunction delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n// -----------------------------------------------------------------------------\n// Factory\n// -----------------------------------------------------------------------------\n\n/**\n * Create an output validator with configurable error handling.\n *\n * @param config - Validator configuration\n * @returns Output validator instance\n *\n * @example\n * ```typescript\n * // Throw strategy (strict validation)\n * const strictValidator = createOutputValidator({\n * schema: UserSchema,\n * onValidationError: 'throw',\n * });\n *\n * // Partial strategy (lenient validation with error details)\n * const lenientValidator = createOutputValidator({\n * schema: UserSchema,\n * onValidationError: 'partial',\n * });\n *\n * // Retry strategy (regenerate with model on failure)\n * const retryValidator = createOutputValidator({\n * schema: UserSchema,\n * onValidationError: 'retry',\n * maxRetries: 3,\n * retryDelay: 500,\n * });\n * ```\n */\nexport function createOutputValidator<T>(config: OutputValidatorConfig<T>): OutputValidator<T> {\n const {\n schema,\n onValidationError,\n maxRetries = 2,\n retryDelay = 1000,\n errorMessage,\n onError,\n } = config;\n\n /**\n * Synchronous validation.\n */\n function validate(output: unknown): T | PartialValidationResult<T> {\n const result = schema.safeParse(output);\n\n if (result.success) {\n return result.data;\n }\n\n const zodError = result.error;\n onError?.(zodError, 1);\n\n switch (onValidationError) {\n case 'throw':\n throw new OutputValidationError(\n buildErrorMessage(zodError, errorMessage),\n zodError,\n 'throw',\n 1,\n );\n\n case 'partial':\n return {\n success: false,\n partial: extractPartialData<T>(output, zodError),\n errors: zodError.issues,\n rawError: zodError,\n };\n\n case 'retry':\n // For sync validation with retry strategy, we throw\n // (use validateAsync for actual retry behavior)\n throw new OutputValidationError(\n `${buildErrorMessage(zodError, errorMessage)} (use validateAsync for retry support)`,\n zodError,\n 'retry',\n 1,\n );\n }\n }\n\n /**\n * Asynchronous validation with retry support.\n */\n async function validateAsync(\n output: unknown,\n retryContext?: RetryContext,\n ): Promise<T | PartialValidationResult<T>> {\n let currentOutput = output;\n let lastError: ZodError | undefined;\n\n for (let attempt = 1; attempt <= maxRetries + 1; attempt++) {\n const result = schema.safeParse(currentOutput);\n\n if (result.success) {\n if (attempt > 1) {\n logInfo(`[OutputValidator] Validation succeeded on attempt ${attempt}`);\n }\n return result.data;\n }\n\n lastError = result.error;\n onError?.(lastError, attempt);\n\n // Handle based on strategy\n if (onValidationError === 'partial') {\n return {\n success: false,\n partial: extractPartialData<T>(currentOutput, lastError),\n errors: lastError.issues,\n rawError: lastError,\n };\n }\n\n if (onValidationError === 'throw') {\n throw new OutputValidationError(\n buildErrorMessage(lastError, errorMessage),\n lastError,\n 'throw',\n attempt,\n );\n }\n\n // Retry strategy\n if (attempt <= maxRetries) {\n if (!retryContext) {\n throw new OutputValidationError(\n 'Retry strategy requires retryContext with model and prompt',\n lastError,\n 'retry',\n attempt,\n );\n }\n\n logWarn(\n `[OutputValidator] Validation failed on attempt ${attempt}/${maxRetries + 1}. ` +\n `Errors: ${lastError.issues.map(i => i.message).join(', ')}. Retrying...`,\n );\n\n // Wait before retry\n await delay(retryDelay * attempt);\n\n // Regenerate with model\n try {\n const { object } = await generateObject({\n model: retryContext.model,\n schema,\n prompt: retryContext.prompt,\n system: retryContext.system,\n temperature: retryContext.temperature,\n });\n\n currentOutput = object;\n } catch (genError) {\n logWarn(\n `[OutputValidator] Regeneration failed on attempt ${attempt}: ${genError instanceof Error ? genError.message : String(genError)}`,\n );\n // Continue to next iteration, will fail validation again\n }\n }\n }\n\n // All retries exhausted\n if (lastError) {\n throw new OutputValidationError(\n `${buildErrorMessage(lastError, errorMessage)} (exhausted ${maxRetries + 1} attempts)`,\n lastError,\n 'retry',\n maxRetries + 1,\n );\n }\n\n // Should not reach here, but satisfy TypeScript\n throw new Error('Validation failed with unknown error');\n }\n\n return {\n validate,\n validateAsync,\n getSchema: () => schema,\n getStrategy: () => onValidationError,\n };\n}\n\n// -----------------------------------------------------------------------------\n// Utility Functions\n// -----------------------------------------------------------------------------\n\n/**\n * Check if an error is an OutputValidationError.\n *\n * @param error - Error to check\n * @returns True if error is OutputValidationError\n */\nexport function isOutputValidationError(error: unknown): error is OutputValidationError {\n return error instanceof OutputValidationError;\n}\n\n/**\n * Create a simple validator that always throws on error.\n * Shorthand for createOutputValidator with 'throw' strategy.\n *\n * @param schema - Zod schema for validation\n * @returns Validator function\n *\n * @example\n * ```typescript\n * const validateUser = createStrictValidator(UserSchema);\n * const user = validateUser(rawData); // throws if invalid\n * ```\n */\nexport function createStrictValidator<T>(schema: ZodType<T>): (output: unknown) => T {\n const validator = createOutputValidator({\n schema,\n onValidationError: 'throw',\n });\n\n return (output: unknown): T => {\n return validator.validate(output) as T;\n };\n}\n\n/**\n * Create a validator that returns partial data on error.\n * Shorthand for createOutputValidator with 'partial' strategy.\n *\n * @param schema - Zod schema for validation\n * @returns Validator function returning PartialValidationResult\n *\n * @example\n * ```typescript\n * const validateUser = createPartialValidator(UserSchema);\n * const result = validateUser(rawData);\n * if (!result.success) {\n * console.log('Partial data:', result.partial);\n * }\n * ```\n */\nexport function createPartialValidator<T>(\n schema: ZodType<T>,\n): (output: unknown) => PartialValidationResult<T> {\n const validator = createOutputValidator({\n schema,\n onValidationError: 'partial',\n });\n\n return (output: unknown): PartialValidationResult<T> => {\n const result = validator.validate(output);\n // If validation succeeded, wrap in PartialValidationResult\n if (!result || typeof result !== 'object' || !('success' in result)) {\n return { success: true, data: result };\n }\n return result;\n };\n}\n\n// -----------------------------------------------------------------------------\n// Re-export types for convenience\n// -----------------------------------------------------------------------------\n\nexport type { ZodType, ZodError, ZodIssue };\n","/**\n * NoObjectGeneratedError helpers and recovery strategies.\n */\n\nimport { NoObjectGeneratedError } from '../shared';\n\nexport type NoObjectCause = 'no-object' | 'unknown';\n\nexport interface NoObjectErrorInfo {\n cause: NoObjectCause;\n message: string;\n text?: string;\n usage?: Record<string, number>;\n}\n\nexport interface HandleNoObjectOptions<T> {\n fallback?: T | ((info: NoObjectErrorInfo) => T);\n onError?: (info: NoObjectErrorInfo) => void;\n}\n\nexport interface HandleNoObjectResult<T> {\n handled: boolean;\n result?: T;\n error?: Error;\n info?: NoObjectErrorInfo;\n}\n\nexport interface NoObjectHandlerConfig<T> extends HandleNoObjectOptions<T> {\n throwOnUnhandled?: boolean;\n}\n\nexport type NoObjectHandler<T> = (error: unknown) => HandleNoObjectResult<T>;\n\nexport interface StreamErrorHandlerOptions {\n fallbackText?: string;\n onError?: (info: NoObjectErrorInfo) => void;\n}\n\nexport const ErrorRecoveryStrategies = {\n fallback: <T>(fallback: T): HandleNoObjectOptions<T> => ({ fallback }),\n ignore: <T>(): HandleNoObjectOptions<T> => ({}),\n};\n\nexport function isNoObjectGeneratedError(error: unknown): error is NoObjectGeneratedError {\n return NoObjectGeneratedError.isInstance(error);\n}\n\nexport function handleNoObjectGenerated<T>(\n error: NoObjectGeneratedError,\n options: HandleNoObjectOptions<T> = {},\n): HandleNoObjectResult<T> {\n const info: NoObjectErrorInfo = {\n cause: 'no-object',\n message: error.message,\n text: error.text,\n usage: error.usage as Record<string, number> | undefined,\n };\n\n options.onError?.(info);\n\n if (options.fallback !== undefined) {\n const value =\n typeof options.fallback === 'function'\n ? (options.fallback as (details: NoObjectErrorInfo) => T)(info)\n : options.fallback;\n return { handled: true, result: value, info };\n }\n\n return { handled: false, error };\n}\n\nexport function createNoObjectHandler<T>(\n config: NoObjectHandlerConfig<T> = {},\n): NoObjectHandler<T> {\n return (error: unknown) => {\n if (!isNoObjectGeneratedError(error)) {\n return {\n handled: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n\n const result = handleNoObjectGenerated(error, config);\n if (!result.handled && config.throwOnUnhandled) {\n throw error;\n }\n return result;\n };\n}\n\nexport function createStreamErrorHandler(options: StreamErrorHandlerOptions = {}) {\n return (error: unknown): string => {\n if (isNoObjectGeneratedError(error)) {\n const info: NoObjectErrorInfo = {\n cause: 'no-object',\n message: error.message,\n text: error.text,\n usage: error.usage as Record<string, number> | undefined,\n };\n options.onError?.(info);\n return options.fallbackText ?? error.text ?? '';\n }\n\n return options.fallbackText ?? '';\n };\n}\n\nexport { NoObjectGeneratedError };\n"],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ import { D as NoObjectGeneratedError, O as Output, Rr as SDKLanguageModelV3, _t as generateObject } from "./ai-runtime-DIwOEc6g.mjs";
2
+ import { ZodError, ZodIssue, ZodType, ZodType as ZodType$1, ZodTypeAny, z } from "zod";
3
+ import * as ai from "ai";
4
+
5
+ //#region src/output/factories.d.ts
6
+ declare function createObjectOutput<T extends ZodType>(schema: T): ReturnType<typeof Output.object>;
7
+ declare function createArrayOutput<T extends ZodType>(schema: T): ReturnType<typeof Output.array>;
8
+ declare function createChoiceSchema<T extends readonly [string, ...string[]]>(values: T): z.ZodEnum<{ [k_1 in T[number]]: k_1 } extends infer T_1 ? { [k in keyof T_1]: T_1[k] } : never>;
9
+ declare function generateStructuredObject<T extends ZodType>(model: SDKLanguageModelV3, schema: T, prompt: string): Promise<z.core.output<T>>;
10
+ declare function streamStructuredObject<T extends ZodType>(model: SDKLanguageModelV3, schema: T, prompt: string): ai.StreamObjectResult<(ai.InferSchema<T> extends string ? "enum" : "object") extends infer T_1 ? T_1 extends (ai.InferSchema<T> extends string ? "enum" : "object") ? T_1 extends "enum" ? string : T_1 extends "array" ? (ai.InferSchema<T> extends string ? "enum" : "object") extends infer T_2 ? T_2 extends (ai.InferSchema<T> extends string ? "enum" : "object") ? T_2 extends "array" ? ai.InferSchema<T>[] : ai.InferSchema<T> : never : never : ai.DeepPartial<(ai.InferSchema<T> extends string ? "enum" : "object") extends infer T_3 ? T_3 extends (ai.InferSchema<T> extends string ? "enum" : "object") ? T_3 extends "array" ? ai.InferSchema<T>[] : ai.InferSchema<T> : never : never> : never : never, (ai.InferSchema<T> extends string ? "enum" : "object") extends infer T_4 ? T_4 extends (ai.InferSchema<T> extends string ? "enum" : "object") ? T_4 extends "array" ? (ai.InferSchema<T> extends string ? "enum" : "object") extends infer T_5 ? T_5 extends (ai.InferSchema<T> extends string ? "enum" : "object") ? T_5 extends "array" ? ai.InferSchema<T>[] : ai.InferSchema<T> : never : never : (ai.InferSchema<T> extends string ? "enum" : "object") extends infer T_6 ? T_6 extends (ai.InferSchema<T> extends string ? "enum" : "object") ? T_6 extends "array" ? ai.InferSchema<T>[] : ai.InferSchema<T> : never : never : never : never, (ai.InferSchema<T> extends string ? "enum" : "object") extends infer T_7 ? T_7 extends (ai.InferSchema<T> extends string ? "enum" : "object") ? T_7 extends "array" ? ((ai.InferSchema<T> extends string ? "enum" : "object") extends infer T_8 ? T_8 extends (ai.InferSchema<T> extends string ? "enum" : "object") ? T_8 extends "array" ? ai.InferSchema<T>[] : ai.InferSchema<T> : never : never) extends infer T_9 ? T_9 extends ((ai.InferSchema<T> extends string ? "enum" : "object") extends infer T_10 ? T_10 extends (ai.InferSchema<T> extends string ? "enum" : "object") ? T_10 extends "array" ? ai.InferSchema<T>[] : ai.InferSchema<T> : never : never) ? T_9 extends (infer U)[] ? ai.AsyncIterableStream<U> : never : never : never : never : never : never>;
11
+ declare const SchemaBuilders: {
12
+ listWithMeta<T extends ZodType>(itemSchema: T): z.ZodObject<{
13
+ items: z.ZodArray<T>;
14
+ total: z.ZodNumber;
15
+ hasMore: z.ZodOptional<z.ZodBoolean>;
16
+ }, z.core.$strip>;
17
+ resultOrError<T extends ZodType>(successSchema: T): z.ZodDiscriminatedUnion<[z.ZodObject<{
18
+ success: z.ZodLiteral<true>;
19
+ data: T;
20
+ }, z.core.$strip>, z.ZodObject<{
21
+ success: z.ZodLiteral<false>;
22
+ error: z.ZodString;
23
+ }, z.core.$strip>], "success">;
24
+ classificationWithConfidence<T extends readonly string[]>(categories: T): z.ZodObject<{
25
+ category: z.ZodEnum<{
26
+ [x: string]: string;
27
+ }>;
28
+ confidence: z.ZodNumber;
29
+ reasoning: z.ZodOptional<z.ZodString>;
30
+ }, z.core.$strip>;
31
+ entities<T extends Record<string, ZodType>>(entitySchemas: T): z.ZodObject<{
32
+ entities: z.ZodObject<{ -readonly [P in keyof T]: T[P] }, z.core.$strip>;
33
+ raw: z.ZodOptional<z.ZodString>;
34
+ }, z.core.$strip>;
35
+ plan(): z.ZodObject<{
36
+ steps: z.ZodArray<z.ZodObject<{
37
+ step: z.ZodNumber;
38
+ action: z.ZodString;
39
+ reasoning: z.ZodOptional<z.ZodString>;
40
+ dependencies: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
41
+ }, z.core.$strip>>;
42
+ summary: z.ZodString;
43
+ }, z.core.$strip>;
44
+ };
45
+ interface SafeGenerateResult<T> {
46
+ success: boolean;
47
+ object?: T;
48
+ partialObject?: Partial<T>;
49
+ error?: NoObjectGeneratedError | Error;
50
+ text?: string;
51
+ usage?: {
52
+ promptTokens: number;
53
+ completionTokens: number;
54
+ totalTokens: number;
55
+ };
56
+ }
57
+ declare function safeGenerateObject<T extends ZodType>(options: Parameters<typeof generateObject<T>>[0]): Promise<SafeGenerateResult<z.infer<T>>>;
58
+ declare function generateObjectWithFallback<T extends ZodType>(options: Parameters<typeof generateObject<T>>[0] & {
59
+ fallback: z.infer<T>;
60
+ }): Promise<z.infer<T>>;
61
+ declare function generateObjectWithRetry<T extends ZodType>(options: Parameters<typeof generateObject<T>>[0] & {
62
+ maxRetries?: number;
63
+ retryDelay?: number;
64
+ onRetry?: (attempt: number, error: Error) => void;
65
+ }): Promise<z.infer<T>>;
66
+ //#endregion
67
+ //#region src/output/element-stream.d.ts
68
+ interface ElementStreamEvent<T> {
69
+ type: 'element' | 'complete' | 'error';
70
+ index?: number;
71
+ element?: T;
72
+ isComplete?: boolean;
73
+ error?: Error;
74
+ totalElements?: number;
75
+ }
76
+ interface ElementStreamOptions<TElement extends ZodTypeAny> {
77
+ model: SDKLanguageModelV3;
78
+ elementSchema: TElement;
79
+ system?: string;
80
+ prompt: string;
81
+ abortSignal?: AbortSignal;
82
+ maxTokens?: number;
83
+ temperature?: number;
84
+ onPartialElement?: (element: Partial<z.infer<TElement>>, index: number) => void;
85
+ onElement?: (element: z.infer<TElement>, index: number) => void;
86
+ onError?: (error: Error) => void;
87
+ onComplete?: (elements: z.infer<TElement>[]) => void;
88
+ }
89
+ interface ElementStreamResult<T> {
90
+ stream: AsyncIterable<ElementStreamEvent<T>>;
91
+ elements: Promise<T[]>;
92
+ usage: Promise<{
93
+ promptTokens: number;
94
+ completionTokens: number;
95
+ totalTokens: number;
96
+ }>;
97
+ }
98
+ declare function streamElements<TElement extends ZodTypeAny>(options: ElementStreamOptions<TElement>): ElementStreamResult<z.infer<TElement>>;
99
+ interface PartialElementStreamOptions<TElement extends ZodTypeAny> extends ElementStreamOptions<TElement> {
100
+ updateInterval?: number;
101
+ }
102
+ declare function streamElementsWithProgress<TElement extends ZodTypeAny>(options: PartialElementStreamOptions<TElement>): ElementStreamResult<z.infer<TElement>> & {
103
+ partialStream: AsyncIterable<ElementStreamEvent<Partial<z.infer<TElement>>>>;
104
+ };
105
+ interface BatchedElementStreamOptions<TElement extends ZodTypeAny> extends ElementStreamOptions<TElement> {
106
+ batchSize: number;
107
+ batchTimeout?: number;
108
+ }
109
+ declare function streamElementsInBatches<TElement extends ZodTypeAny>(options: BatchedElementStreamOptions<TElement>): ElementStreamResult<z.infer<TElement>> & {
110
+ batches: AsyncIterable<z.infer<TElement>[]>;
111
+ };
112
+ declare function createElementStreamer<TElement extends ZodTypeAny>(config: {
113
+ model: SDKLanguageModelV3;
114
+ elementSchema: TElement;
115
+ system?: string;
116
+ maxTokens?: number;
117
+ temperature?: number;
118
+ }): (prompt: string, options?: Partial<ElementStreamOptions<TElement>>) => Promise<z.infer<TElement>[]>;
119
+ declare function collectElements<TElement extends ZodTypeAny>(options: ElementStreamOptions<TElement>): Promise<z.infer<TElement>[]>;
120
+ interface WithElementStreamConfig<T> {
121
+ readonly onElement?: (element: T, index: number) => void;
122
+ readonly bufferSize?: number;
123
+ readonly transform?: (element: T) => T;
124
+ readonly onComplete?: (elements: T[], totalCount: number) => void;
125
+ readonly onError?: (error: Error) => void;
126
+ }
127
+ interface ExperimentalOutputStreamResult<T> {
128
+ experimental_output?: {
129
+ elementStream?: AsyncIterable<T>;
130
+ object?: Promise<T[]>;
131
+ };
132
+ }
133
+ declare function withElementStream<T>(streamResult: ExperimentalOutputStreamResult<T>, config?: WithElementStreamConfig<T>): AsyncGenerator<T | T[], void, unknown>;
134
+ declare function collectFromElementStream<T>(streamResult: ExperimentalOutputStreamResult<T>, config?: Omit<WithElementStreamConfig<T>, 'bufferSize'>): Promise<T[]>;
135
+ //#endregion
136
+ //#region src/output/validator.d.ts
137
+ type ValidationErrorStrategy = 'throw' | 'partial' | 'retry';
138
+ interface OutputValidatorConfig<T> {
139
+ readonly schema: ZodType$1<T>;
140
+ readonly onValidationError: ValidationErrorStrategy;
141
+ readonly maxRetries?: number;
142
+ readonly retryDelay?: number;
143
+ readonly errorMessage?: string;
144
+ readonly onError?: (error: ZodError, attempt: number) => void;
145
+ }
146
+ interface RetryContext {
147
+ readonly model: SDKLanguageModelV3;
148
+ readonly prompt: string;
149
+ readonly system?: string;
150
+ readonly temperature?: number;
151
+ }
152
+ interface PartialValidationResult<T> {
153
+ readonly success: boolean;
154
+ readonly data?: T;
155
+ readonly partial?: Partial<T>;
156
+ readonly errors?: ZodIssue[];
157
+ readonly rawError?: ZodError;
158
+ }
159
+ interface OutputValidator<T> {
160
+ validate(output: unknown): T | PartialValidationResult<T>;
161
+ validateAsync(output: unknown, retryContext?: RetryContext): Promise<T | PartialValidationResult<T>>;
162
+ getSchema(): ZodType$1<T>;
163
+ getStrategy(): ValidationErrorStrategy;
164
+ }
165
+ declare class OutputValidationError extends Error {
166
+ readonly zodError: ZodError;
167
+ readonly strategy: ValidationErrorStrategy;
168
+ readonly attempts: number;
169
+ constructor(message: string, zodError: ZodError, strategy: ValidationErrorStrategy, attempts?: number);
170
+ }
171
+ declare function createOutputValidator<T>(config: OutputValidatorConfig<T>): OutputValidator<T>;
172
+ declare function isOutputValidationError(error: unknown): error is OutputValidationError;
173
+ declare function createStrictValidator<T>(schema: ZodType$1<T>): (output: unknown) => T;
174
+ declare function createPartialValidator<T>(schema: ZodType$1<T>): (output: unknown) => PartialValidationResult<T>;
175
+ //#endregion
176
+ //#region src/output/errors.d.ts
177
+ type NoObjectCause = 'no-object' | 'unknown';
178
+ interface NoObjectErrorInfo {
179
+ cause: NoObjectCause;
180
+ message: string;
181
+ text?: string;
182
+ usage?: Record<string, number>;
183
+ }
184
+ interface HandleNoObjectOptions<T> {
185
+ fallback?: T | ((info: NoObjectErrorInfo) => T);
186
+ onError?: (info: NoObjectErrorInfo) => void;
187
+ }
188
+ interface HandleNoObjectResult<T> {
189
+ handled: boolean;
190
+ result?: T;
191
+ error?: Error;
192
+ info?: NoObjectErrorInfo;
193
+ }
194
+ interface NoObjectHandlerConfig<T> extends HandleNoObjectOptions<T> {
195
+ throwOnUnhandled?: boolean;
196
+ }
197
+ type NoObjectHandler<T> = (error: unknown) => HandleNoObjectResult<T>;
198
+ interface StreamErrorHandlerOptions {
199
+ fallbackText?: string;
200
+ onError?: (info: NoObjectErrorInfo) => void;
201
+ }
202
+ declare const ErrorRecoveryStrategies: {
203
+ fallback: <T>(fallback: T) => HandleNoObjectOptions<T>;
204
+ ignore: <T>() => HandleNoObjectOptions<T>;
205
+ };
206
+ declare function isNoObjectGeneratedError(error: unknown): error is NoObjectGeneratedError;
207
+ declare function handleNoObjectGenerated<T>(error: NoObjectGeneratedError, options?: HandleNoObjectOptions<T>): HandleNoObjectResult<T>;
208
+ declare function createNoObjectHandler<T>(config?: NoObjectHandlerConfig<T>): NoObjectHandler<T>;
209
+ declare function createStreamErrorHandler(options?: StreamErrorHandlerOptions): (error: unknown) => string;
210
+ //#endregion
211
+ export { collectElements as A, createObjectOutput as B, BatchedElementStreamOptions as C, ExperimentalOutputStreamResult as D, ElementStreamResult as E, streamElementsWithProgress as F, streamStructuredObject as G, generateObjectWithRetry as H, withElementStream as I, SchemaBuilders as L, createElementStreamer as M, streamElements as N, PartialElementStreamOptions as O, streamElementsInBatches as P, createArrayOutput as R, isOutputValidationError as S, ElementStreamOptions as T, generateStructuredObject as U, generateObjectWithFallback as V, safeGenerateObject as W, RetryContext as _, NoObjectErrorInfo as a, createPartialValidator as b, StreamErrorHandlerOptions as c, handleNoObjectGenerated as d, isNoObjectGeneratedError as f, PartialValidationResult as g, OutputValidatorConfig as h, NoObjectCause as i, collectFromElementStream as j, WithElementStreamConfig as k, createNoObjectHandler as l, OutputValidator as m, HandleNoObjectOptions as n, NoObjectHandler as o, OutputValidationError as p, HandleNoObjectResult as r, NoObjectHandlerConfig as s, ErrorRecoveryStrategies as t, createStreamErrorHandler as u, ValidationErrorStrategy as v, ElementStreamEvent as w, createStrictValidator as x, createOutputValidator as y, createChoiceSchema as z };
212
+ //# sourceMappingURL=errors-CfYdVeum.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-CfYdVeum.d.mts","names":[],"sources":["../src/output/factories.ts","../src/output/element-stream.ts","../src/output/validator.ts","../src/output/errors.ts"],"mappings":";;;;;iBAgCgB,kBAAA,WAA6B,OAAA,CAAA,CAAS,MAAA,EAAQ,CAAA,GAAI,UAAA,QAAkB,MAAA,CAAO,MAAA;AAAA,iBA6B3E,iBAAA,WAA4B,OAAA,CAAA,CAAS,MAAA,EAAQ,CAAA,GAAI,UAAA,QAAkB,MAAA,CAAO,KAAA;AAAA,iBAsB1E,kBAAA,0CAAA,CAA6D,MAAA,EAAQ,CAAA,GAAC,CAAA,CAAA,OAAA,WAAA,CAAA,WAAA,GAAA,qCAAA,GAAA,GAAA,GAAA,CAAA,CAAA;AAAA,iBAYhE,wBAAA,WAAmC,OAAA,CAAA,CACvD,KAAA,EAAO,kBAAA,EACP,MAAA,EAAQ,CAAA,EACR,MAAA,WAAc,OAAA,CAAA,CAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA;AAAA,iBAkBA,sBAAA,WAAiC,OAAA,CAAA,CAC/C,KAAA,EAAO,kBAAA,EACP,MAAA,EAAQ,CAAA,EACR,MAAA,WAAc,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,0DAAA,GAAA,UAAA,EAAA,CAAA,WAAA,CAAA,CAAA,wCAAA,GAAA,2BAAA,GAAA,oBAAA,EAAA,CAAA,WAAA,CAAA,CAAA,0DAAA,GAAA,UAAA,EAAA,CAAA,WAAA,CAAA,CAAA,wCAAA,GAAA,mBAAA,EAAA,CAAA,WAAA,CAAA,CAAA,MAAA,EAAA,CAAA,WAAA,CAAA,CAAA,oBAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,0DAAA,GAAA,UAAA,EAAA,CAAA,WAAA,CAAA,CAAA,wCAAA,GAAA,mBAAA,EAAA,CAAA,WAAA,CAAA,CAAA,MAAA,EAAA,CAAA,WAAA,CAAA,CAAA,qCAAA,EAAA,CAAA,WAAA,CAAA,CAAA,0DAAA,GAAA,UAAA,EAAA,CAAA,WAAA,CAAA,CAAA,wCAAA,GAAA,oBAAA,EAAA,CAAA,WAAA,CAAA,CAAA,0DAAA,GAAA,UAAA,EAAA,CAAA,WAAA,CAAA,CAAA,wCAAA,GAAA,mBAAA,EAAA,CAAA,WAAA,CAAA,CAAA,MAAA,EAAA,CAAA,WAAA,CAAA,CAAA,qBAAA,EAAA,CAAA,WAAA,CAAA,CAAA,0DAAA,GAAA,UAAA,EAAA,CAAA,WAAA,CAAA,CAAA,wCAAA,GAAA,mBAAA,EAAA,CAAA,WAAA,CAAA,CAAA,MAAA,EAAA,CAAA,WAAA,CAAA,CAAA,oCAAA,EAAA,CAAA,WAAA,CAAA,CAAA,0DAAA,GAAA,UAAA,EAAA,CAAA,WAAA,CAAA,CAAA,wCAAA,GAAA,qBAAA,EAAA,CAAA,WAAA,CAAA,CAAA,0DAAA,GAAA,UAAA,EAAA,CAAA,WAAA,CAAA,CAAA,wCAAA,GAAA,mBAAA,EAAA,CAAA,WAAA,CAAA,CAAA,MAAA,EAAA,CAAA,WAAA,CAAA,CAAA,uCAAA,GAAA,WAAA,EAAA,CAAA,WAAA,CAAA,CAAA,2DAAA,IAAA,UAAA,EAAA,CAAA,WAAA,CAAA,CAAA,wCAAA,IAAA,mBAAA,EAAA,CAAA,WAAA,CAAA,CAAA,MAAA,EAAA,CAAA,WAAA,CAAA,CAAA,qBAAA,GAAA,uBAAA,EAAA,CAAA,mBAAA,CAAA,CAAA;AAAA,cAYH,cAAA;yBAIY,OAAA,EAAO,UAAA,EAAc,CAAA,GAAC,CAAA,CAAA,SAAA;;;;;0BAWrB,OAAA,EAAO,aAAA,EAAiB,CAAA,GAAC,CAAA,CAAA,qBAAA,EAAA,CAAA,CAAA,SAAA;;;;;;;4DAUO,UAAA,EAAc,CAAA,GAAC,CAAA,CAAA,SAAA;;;;;;;qBAWpD,MAAA,SAAe,OAAA,GAAQ,aAAA,EAAiB,CAAA,GAAC,CAAA,CAAA,SAAA;;;;;;;;;;;;;;UAgC7C,kBAAA;EACf,OAAA;EACA,MAAA,GAAS,CAAA;EACT,aAAA,GAAgB,OAAA,CAAQ,CAAA;EACxB,KAAA,GAAQ,sBAAA,GAAyB,KAAA;EACjC,IAAA;EACA,KAAA;IACE,YAAA;IACA,gBAAA;IACA,WAAA;EAAA;AAAA;AAAA,iBAwBkB,kBAAA,WAA6B,OAAA,CAAA,CACjD,OAAA,EAAS,UAAA,QAAkB,cAAA,CAAe,CAAA,QACzC,OAAA,CAAQ,kBAAA,CAAmB,CAAA,CAAE,KAAA,CAAM,CAAA;AAAA,iBA8DhB,0BAAA,WAAqC,OAAA,CAAA,CACzD,OAAA,EAAS,UAAA,QAAkB,cAAA,CAAe,CAAA;EACxC,QAAA,EAAU,CAAA,CAAE,KAAA,CAAM,CAAA;AAAA,IAEnB,OAAA,CAAQ,CAAA,CAAE,KAAA,CAAM,CAAA;AAAA,iBA6BG,uBAAA,WAAkC,OAAA,CAAA,CACtD,OAAA,EAAS,UAAA,QAAkB,cAAA,CAAe,CAAA;EACxC,UAAA;EACA,UAAA;EACA,OAAA,IAAW,OAAA,UAAiB,KAAA,EAAO,KAAA;AAAA,IAEpC,OAAA,CAAQ,CAAA,CAAE,KAAA,CAAM,CAAA;;;UC3TF,kBAAA;EAEf,IAAA;EAEA,KAAA;EAEA,OAAA,GAAU,CAAA;EAEV,UAAA;EAEA,KAAA,GAAQ,KAAA;EAER,aAAA;AAAA;AAAA,UAIe,oBAAA,kBAAsC,UAAA;EAErD,KAAA,EAAO,kBAAA;EAEP,aAAA,EAAe,QAAA;EAEf,MAAA;EAEA,MAAA;EAEA,WAAA,GAAc,WAAA;EAEd,SAAA;EAEA,WAAA;EAEA,gBAAA,IAAoB,OAAA,EAAS,OAAA,CAAQ,CAAA,CAAE,KAAA,CAAM,QAAA,IAAY,KAAA;EAEzD,SAAA,IAAa,OAAA,EAAS,CAAA,CAAE,KAAA,CAAM,QAAA,GAAW,KAAA;EAEzC,OAAA,IAAW,KAAA,EAAO,KAAA;EAElB,UAAA,IAAc,QAAA,EAAU,CAAA,CAAE,KAAA,CAAM,QAAA;AAAA;AAAA,UAIjB,mBAAA;EAEf,MAAA,EAAQ,aAAA,CAAc,kBAAA,CAAmB,CAAA;EAEzC,QAAA,EAAU,OAAA,CAAQ,CAAA;EAElB,KAAA,EAAO,OAAA;IACL,YAAA;IACA,gBAAA;IACA,WAAA;EAAA;AAAA;AAAA,iBAoCY,cAAA,kBAAgC,UAAA,CAAA,CAC9C,OAAA,EAAS,oBAAA,CAAqB,QAAA,IAC7B,mBAAA,CAAoB,CAAA,CAAE,KAAA,CAAM,QAAA;AAAA,UA6Hd,2BAAA,kBACE,UAAA,UACT,oBAAA,CAAqB,QAAA;EAE7B,cAAA;AAAA;AAAA,iBA2Bc,0BAAA,kBAA4C,UAAA,CAAA,CAC1D,OAAA,EAAS,2BAAA,CAA4B,QAAA,IACpC,mBAAA,CAAoB,CAAA,CAAE,KAAA,CAAM,QAAA;EAC7B,aAAA,EAAe,aAAA,CAAc,kBAAA,CAAmB,OAAA,CAAQ,CAAA,CAAE,KAAA,CAAM,QAAA;AAAA;AAAA,UA0CjD,2BAAA,kBACE,UAAA,UACT,oBAAA,CAAqB,QAAA;EAE7B,SAAA;EAEA,YAAA;AAAA;AAAA,iBAsBc,uBAAA,kBAAyC,UAAA,CAAA,CACvD,OAAA,EAAS,2BAAA,CAA4B,QAAA,IACpC,mBAAA,CAAoB,CAAA,CAAE,KAAA,CAAM,QAAA;EAC7B,OAAA,EAAS,aAAA,CAAc,CAAA,CAAE,KAAA,CAAM,QAAA;AAAA;AAAA,iBA+EjB,qBAAA,kBAAuC,UAAA,CAAA,CAAY,MAAA;EACjE,KAAA,EAAO,kBAAA;EACP,aAAA,EAAe,QAAA;EACf,MAAA;EACA,SAAA;EACA,WAAA;AAAA,KAGE,MAAA,UACA,OAAA,GAAU,OAAA,CAAQ,oBAAA,CAAqB,QAAA,OACtC,OAAA,CAAQ,CAAA,CAAE,KAAA,CAAM,QAAA;AAAA,iBAwBC,eAAA,kBAAiC,UAAA,CAAA,CACrD,OAAA,EAAS,oBAAA,CAAqB,QAAA,IAC7B,OAAA,CAAQ,CAAA,CAAE,KAAA,CAAM,QAAA;AAAA,UAgBF,uBAAA;EAAA,SAEN,SAAA,IAAa,OAAA,EAAS,CAAA,EAAG,KAAA;EAAA,SAEzB,UAAA;EAAA,SAEA,SAAA,IAAa,OAAA,EAAS,CAAA,KAAM,CAAA;EAAA,SAE5B,UAAA,IAAc,QAAA,EAAU,CAAA,IAAK,UAAA;EAAA,SAE7B,OAAA,IAAW,KAAA,EAAO,KAAA;AAAA;AAAA,UAQZ,8BAAA;EAEf,mBAAA;IAEE,aAAA,GAAgB,aAAA,CAAc,CAAA;IAE9B,MAAA,GAAS,OAAA,CAAQ,CAAA;EAAA;AAAA;AAAA,iBAwDE,iBAAA,GAAA,CACrB,YAAA,EAAc,8BAAA,CAA+B,CAAA,GAC7C,MAAA,GAAS,uBAAA,CAAwB,CAAA,IAChC,cAAA,CAAe,CAAA,GAAI,CAAA;AAAA,iBA8GA,wBAAA,GAAA,CACpB,YAAA,EAAc,8BAAA,CAA+B,CAAA,GAC7C,MAAA,GAAS,IAAA,CAAK,uBAAA,CAAwB,CAAA,mBACrC,OAAA,CAAQ,CAAA;;;KCplBC,uBAAA;AAAA,UAKK,qBAAA;EAAA,SAEN,MAAA,EAAQ,SAAA,CAAQ,CAAA;EAAA,SAEhB,iBAAA,EAAmB,uBAAA;EAAA,SAEnB,UAAA;EAAA,SAEA,UAAA;EAAA,SAEA,YAAA;EAAA,SAEA,OAAA,IAAW,KAAA,EAAO,QAAA,EAAU,OAAA;AAAA;AAAA,UAMtB,YAAA;EAAA,SAEN,KAAA,EAAO,kBAAA;EAAA,SAEP,MAAA;EAAA,SAEA,MAAA;EAAA,SAEA,WAAA;AAAA;AAAA,UAMM,uBAAA;EAAA,SAEN,OAAA;EAAA,SAEA,IAAA,GAAO,CAAA;EAAA,SAEP,OAAA,GAAU,OAAA,CAAQ,CAAA;EAAA,SAElB,MAAA,GAAS,QAAA;EAAA,SAET,QAAA,GAAW,QAAA;AAAA;AAAA,UAML,eAAA;EAOf,QAAA,CAAS,MAAA,YAAkB,CAAA,GAAI,uBAAA,CAAwB,CAAA;EAQvD,aAAA,CACE,MAAA,WACA,YAAA,GAAe,YAAA,GACd,OAAA,CAAQ,CAAA,GAAI,uBAAA,CAAwB,CAAA;EAGvC,SAAA,IAAa,SAAA,CAAQ,CAAA;EAGrB,WAAA,IAAe,uBAAA;AAAA;AAAA,cAUJ,qBAAA,SAA8B,KAAA;EAAA,SAChC,QAAA,EAAU,QAAA;EAAA,SACV,QAAA,EAAU,uBAAA;EAAA,SACV,QAAA;cAGP,OAAA,UACA,QAAA,EAAU,QAAA,EACV,QAAA,EAAU,uBAAA,EACV,QAAA;AAAA;AAAA,iBA+FY,qBAAA,GAAA,CAAyB,MAAA,EAAQ,qBAAA,CAAsB,CAAA,IAAK,eAAA,CAAgB,CAAA;AAAA,iBAqK5E,uBAAA,CAAwB,KAAA,YAAiB,KAAA,IAAS,qBAAA;AAAA,iBAiBlD,qBAAA,GAAA,CAAyB,MAAA,EAAQ,SAAA,CAAQ,CAAA,KAAM,MAAA,cAAoB,CAAA;AAAA,iBA2BnE,sBAAA,GAAA,CACd,MAAA,EAAQ,SAAA,CAAQ,CAAA,KACd,MAAA,cAAoB,uBAAA,CAAwB,CAAA;;;KCpdpC,aAAA;AAAA,UAEK,iBAAA;EACf,KAAA,EAAO,aAAA;EACP,OAAA;EACA,IAAA;EACA,KAAA,GAAQ,MAAA;AAAA;AAAA,UAGO,qBAAA;EACf,QAAA,GAAW,CAAA,KAAM,IAAA,EAAM,iBAAA,KAAsB,CAAA;EAC7C,OAAA,IAAW,IAAA,EAAM,iBAAA;AAAA;AAAA,UAGF,oBAAA;EACf,OAAA;EACA,MAAA,GAAS,CAAA;EACT,KAAA,GAAQ,KAAA;EACR,IAAA,GAAO,iBAAA;AAAA;AAAA,UAGQ,qBAAA,YAAiC,qBAAA,CAAsB,CAAA;EACtE,gBAAA;AAAA;AAAA,KAGU,eAAA,OAAsB,KAAA,cAAmB,oBAAA,CAAqB,CAAA;AAAA,UAEzD,yBAAA;EACf,YAAA;EACA,OAAA,IAAW,IAAA,EAAM,iBAAA;AAAA;AAAA,cAGN,uBAAA;gBACC,QAAA,EAAY,CAAA,KAAI,qBAAA,CAAsB,CAAA;mBACnC,qBAAA,CAAsB,CAAA;AAAA;AAAA,iBAGvB,wBAAA,CAAyB,KAAA,YAAiB,KAAA,IAAS,sBAAA;AAAA,iBAInD,uBAAA,GAAA,CACd,KAAA,EAAO,sBAAA,EACP,OAAA,GAAS,qBAAA,CAAsB,CAAA,IAC9B,oBAAA,CAAqB,CAAA;AAAA,iBAqBR,qBAAA,GAAA,CACd,MAAA,GAAQ,qBAAA,CAAsB,CAAA,IAC7B,eAAA,CAAgB,CAAA;AAAA,iBAiBH,wBAAA,CAAyB,OAAA,GAAS,yBAAA,IACxC,KAAA"}
@@ -0,0 +1,61 @@
1
+ //#region src/server/errors.ts
2
+ const getErrorCode = (error) => {
3
+ if (typeof error === "object" && error !== null && "code" in error) {
4
+ const codeValue = error.code;
5
+ if (typeof codeValue === "string") return codeValue;
6
+ if (typeof codeValue === "number") return codeValue.toString();
7
+ }
8
+ };
9
+ /**
10
+ * Normalize any thrown value into an Error instance with message.
11
+ *
12
+ * @param error - Unknown thrown value
13
+ * @returns Object containing the Error instance and its message string
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const { error, message } = normalizeError(caughtValue);
18
+ * console.error(message);
19
+ * ```
20
+ */
21
+ function normalizeError(error) {
22
+ const errorInstance = error instanceof Error ? error : new Error(String(error));
23
+ return {
24
+ error: errorInstance,
25
+ message: errorInstance.message
26
+ };
27
+ }
28
+ /**
29
+ * Format connection-related errors for user-friendly display.
30
+ *
31
+ * @param error - The Error instance to format
32
+ * @returns User-friendly error message string
33
+ */
34
+ function formatConnectionError(error) {
35
+ const message = error.message.toLowerCase();
36
+ if (message.includes("econnrefused") || message.includes("connect")) return "Connection failed: Unable to reach AI provider. Check AI_GATEWAY_API_KEY and network connectivity.";
37
+ return error.message;
38
+ }
39
+ /**
40
+ * Produce a safe, user-facing error message.
41
+ *
42
+ * Normalizes the error and returns a connection-aware message when applicable.
43
+ *
44
+ * @param error - Unknown thrown value
45
+ * @returns User-friendly error message string
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const message = formatErrorMessage(caughtValue);
50
+ * return new Response(JSON.stringify({ error: message }), { status: 500 });
51
+ * ```
52
+ */
53
+ function formatErrorMessage(error) {
54
+ const { error: errorInstance, message } = normalizeError(error);
55
+ if (errorInstance.message.includes("ECONNREFUSED") || errorInstance.message.includes("connect")) return formatConnectionError(errorInstance);
56
+ return message ?? "Unknown error";
57
+ }
58
+
59
+ //#endregion
60
+ export { normalizeError as i, formatErrorMessage as n, getErrorCode as r, formatConnectionError as t };
61
+ //# sourceMappingURL=errors-Dtn-UeRi.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-Dtn-UeRi.mjs","names":[],"sources":["../src/server/errors.ts"],"sourcesContent":["export const getErrorCode = (error: unknown): string | undefined => {\n if (typeof error === 'object' && error !== null && 'code' in error) {\n const codeValue = (error as { code?: unknown }).code;\n if (typeof codeValue === 'string') {\n return codeValue;\n }\n if (typeof codeValue === 'number') {\n return codeValue.toString();\n }\n }\n\n return undefined;\n};\n\n/**\n * Normalize any thrown value into an Error instance with message.\n *\n * @param error - Unknown thrown value\n * @returns Object containing the Error instance and its message string\n *\n * @example\n * ```typescript\n * const { error, message } = normalizeError(caughtValue);\n * console.error(message);\n * ```\n */\nexport function normalizeError(error: unknown): { error: Error; message: string } {\n const errorInstance = error instanceof Error ? error : new Error(String(error));\n return {\n error: errorInstance,\n message: errorInstance.message,\n };\n}\n\n/**\n * Format connection-related errors for user-friendly display.\n *\n * @param error - The Error instance to format\n * @returns User-friendly error message string\n */\nexport function formatConnectionError(error: Error): string {\n const message = error.message.toLowerCase();\n\n if (message.includes('econnrefused') || message.includes('connect')) {\n return 'Connection failed: Unable to reach AI provider. Check AI_GATEWAY_API_KEY and network connectivity.';\n }\n\n return error.message;\n}\n\n/**\n * Produce a safe, user-facing error message.\n *\n * Normalizes the error and returns a connection-aware message when applicable.\n *\n * @param error - Unknown thrown value\n * @returns User-friendly error message string\n *\n * @example\n * ```typescript\n * const message = formatErrorMessage(caughtValue);\n * return new Response(JSON.stringify({ error: message }), { status: 500 });\n * ```\n */\nexport function formatErrorMessage(error: unknown): string {\n const { error: errorInstance, message } = normalizeError(error);\n\n if (errorInstance.message.includes('ECONNREFUSED') || errorInstance.message.includes('connect')) {\n return formatConnectionError(errorInstance);\n }\n\n return message ?? 'Unknown error';\n}\n"],"mappings":";AAAA,MAAa,gBAAgB,UAAuC;AAClE,KAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU,OAAO;EAClE,MAAM,YAAa,MAA6B;AAChD,MAAI,OAAO,cAAc,SACvB,QAAO;AAET,MAAI,OAAO,cAAc,SACvB,QAAO,UAAU,UAAU;;;;;;;;;;;;;;;AAmBjC,SAAgB,eAAe,OAAmD;CAChF,MAAM,gBAAgB,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC;AAC/E,QAAO;EACL,OAAO;EACP,SAAS,cAAc;EACxB;;;;;;;;AASH,SAAgB,sBAAsB,OAAsB;CAC1D,MAAM,UAAU,MAAM,QAAQ,aAAa;AAE3C,KAAI,QAAQ,SAAS,eAAe,IAAI,QAAQ,SAAS,UAAU,CACjE,QAAO;AAGT,QAAO,MAAM;;;;;;;;;;;;;;;;AAiBf,SAAgB,mBAAmB,OAAwB;CACzD,MAAM,EAAE,OAAO,eAAe,YAAY,eAAe,MAAM;AAE/D,KAAI,cAAc,QAAQ,SAAS,eAAe,IAAI,cAAc,QAAQ,SAAS,UAAU,CAC7F,QAAO,sBAAsB,cAAc;AAG7C,QAAO,WAAW"}
@@ -0,0 +1,91 @@
1
+ import { $ as generateObject } from "./ai-runtime-CDzQztTt.mjs";
2
+ import { t as EvaluationResultSchema } from "./schema-CwFvuCnA.mjs";
3
+
4
+ //#region src/agents/evaluator-optimizer/evaluator.ts
5
+ /**
6
+ * Evaluator Module
7
+ * Implements LLM-as-judge pattern for content quality assessment
8
+ * Based on VERCEL_AI_SDK_V6_PATTERNS.md section 4.2
9
+ */
10
+ /**
11
+ * LLM-as-Judge Evaluator
12
+ * Uses language model to assess content quality across 9 dimensions
13
+ */
14
+ var LLMEvaluator = class {
15
+ /**
16
+ * Model identifier for evaluation (typically a fast model)
17
+ * @default 'openai/gpt-4o-mini'
18
+ */
19
+ modelId;
20
+ constructor(modelId = "openai/gpt-4o-mini") {
21
+ this.modelId = modelId;
22
+ }
23
+ /**
24
+ * Evaluate content using LLM-as-judge pattern
25
+ * Provides comprehensive assessment across multiple quality dimensions
26
+ *
27
+ * @param input - Evaluation input containing content and context
28
+ * @returns Promise resolving to detailed evaluation result
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const evaluator = new LLMEvaluator();
33
+ * const result = await evaluator.evaluate({
34
+ * content: "Generated content here",
35
+ * originalRequest: "Write a technical article about TypeScript",
36
+ * criteria: { threshold: 8 }
37
+ * });
38
+ * ```
39
+ */
40
+ async evaluate(input) {
41
+ const { content, originalRequest, criteria, iterationNumber } = input;
42
+ const threshold = criteria?.threshold ?? 8;
43
+ const systemPrompt = `You are an expert content evaluator with deep knowledge in quality assessment.
44
+ Evaluate content across these 9 dimensions:
45
+
46
+ 1. **Quality Score** (1-10): Overall quality from poor (1-3) to excellent (9-10)
47
+ 2. **Tone Preservation**: Whether original intended tone is maintained
48
+ 3. **Nuance Preservation**: Whether subtle meanings and context are preserved
49
+ 4. **Cultural Accuracy**: Sensitivity and accuracy regarding cultural references
50
+ 5. **Technical Correctness**: Accuracy of any technical, factual, or domain-specific claims
51
+ 6. **Specific Issues**: Concrete problems, gaps, or errors found
52
+ 7. **Improvement Suggestions**: Actionable feedback for enhancement
53
+ 8. **Strengths**: Aspects to preserve during optimization
54
+ 9. **Overall Assessment**: Summary of quality and readiness
55
+
56
+ Be rigorous and specific. Identify real issues, not minor nitpicks.
57
+ Provide constructive, actionable feedback.`;
58
+ const userPrompt = `${iterationNumber ? `[Iteration ${iterationNumber}]\n` : ""}Evaluate this content:
59
+
60
+ ORIGINAL REQUEST: ${originalRequest}
61
+
62
+ CONTENT TO EVALUATE:
63
+ ${content}
64
+
65
+ QUALITY THRESHOLD: ${threshold}/10
66
+
67
+ Provide a comprehensive evaluation following the schema. Content must score at least ${threshold}/10 to pass.
68
+ For meetsThreshold, set to true only if qualityScore >= ${threshold}.`;
69
+ try {
70
+ const { object: evaluation } = await generateObject({
71
+ model: this.modelId,
72
+ schema: EvaluationResultSchema,
73
+ system: systemPrompt,
74
+ prompt: userPrompt
75
+ });
76
+ return evaluation;
77
+ } catch (error) {
78
+ throw new Error(`LLM evaluation failed: ${error instanceof Error ? error.message : String(error)}`);
79
+ }
80
+ }
81
+ };
82
+ /**
83
+ * Factory function to create LLM evaluator
84
+ */
85
+ function createLLMEvaluator(modelId) {
86
+ return new LLMEvaluator(modelId);
87
+ }
88
+
89
+ //#endregion
90
+ export { createLLMEvaluator };
91
+ //# sourceMappingURL=evaluator-Cs84qkr8.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator-Cs84qkr8.mjs","names":[],"sources":["../src/agents/evaluator-optimizer/evaluator.ts"],"sourcesContent":["/**\n * Evaluator Module\n * Implements LLM-as-judge pattern for content quality assessment\n * Based on VERCEL_AI_SDK_V6_PATTERNS.md section 4.2\n */\n\nimport { generateObject } from '../../shared';\n\nimport {\n type EvaluationResult,\n EvaluationResultSchema,\n type EvaluatorInput,\n type Evaluator,\n} from './schema';\n\n/**\n * LLM-as-Judge Evaluator\n * Uses language model to assess content quality across 9 dimensions\n */\nexport class LLMEvaluator implements Evaluator {\n /**\n * Model identifier for evaluation (typically a fast model)\n * @default 'openai/gpt-4o-mini'\n */\n private modelId: string;\n\n constructor(modelId: string = 'openai/gpt-4o-mini') {\n this.modelId = modelId;\n }\n\n /**\n * Evaluate content using LLM-as-judge pattern\n * Provides comprehensive assessment across multiple quality dimensions\n *\n * @param input - Evaluation input containing content and context\n * @returns Promise resolving to detailed evaluation result\n *\n * @example\n * ```typescript\n * const evaluator = new LLMEvaluator();\n * const result = await evaluator.evaluate({\n * content: \"Generated content here\",\n * originalRequest: \"Write a technical article about TypeScript\",\n * criteria: { threshold: 8 }\n * });\n * ```\n */\n async evaluate(input: EvaluatorInput): Promise<EvaluationResult> {\n const { content, originalRequest, criteria, iterationNumber } = input;\n const threshold = criteria?.threshold ?? 8;\n\n const systemPrompt = `You are an expert content evaluator with deep knowledge in quality assessment.\nEvaluate content across these 9 dimensions:\n\n1. **Quality Score** (1-10): Overall quality from poor (1-3) to excellent (9-10)\n2. **Tone Preservation**: Whether original intended tone is maintained\n3. **Nuance Preservation**: Whether subtle meanings and context are preserved\n4. **Cultural Accuracy**: Sensitivity and accuracy regarding cultural references\n5. **Technical Correctness**: Accuracy of any technical, factual, or domain-specific claims\n6. **Specific Issues**: Concrete problems, gaps, or errors found\n7. **Improvement Suggestions**: Actionable feedback for enhancement\n8. **Strengths**: Aspects to preserve during optimization\n9. **Overall Assessment**: Summary of quality and readiness\n\nBe rigorous and specific. Identify real issues, not minor nitpicks.\nProvide constructive, actionable feedback.`;\n\n const userPrompt = `${iterationNumber ? `[Iteration ${iterationNumber}]\\n` : ''}Evaluate this content:\n\nORIGINAL REQUEST: ${originalRequest}\n\nCONTENT TO EVALUATE:\n${content}\n\nQUALITY THRESHOLD: ${threshold}/10\n\nProvide a comprehensive evaluation following the schema. Content must score at least ${threshold}/10 to pass.\nFor meetsThreshold, set to true only if qualityScore >= ${threshold}.`;\n\n try {\n const { object: evaluation } = await generateObject({\n model: this.modelId,\n schema: EvaluationResultSchema,\n system: systemPrompt,\n prompt: userPrompt,\n });\n\n return evaluation;\n } catch (error) {\n throw new Error(\n `LLM evaluation failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n}\n\n/**\n * Rubric-Based Evaluator\n * Provides structured evaluation using predefined criteria and scoring rubric\n * Useful for consistent, deterministic evaluation across multiple runs\n */\nexport class RubricEvaluator implements Evaluator {\n /**\n * Scoring rubric mapping criteria to score ranges\n */\n private rubric: Map<string, (content: string, request: string) => number>;\n\n constructor(customRubric?: Map<string, (content: string, request: string) => number>) {\n this.rubric = customRubric || this.createDefaultRubric();\n }\n\n /**\n * Create default rubric for evaluation\n */\n private createDefaultRubric(): Map<string, (content: string, request: string) => number> {\n return new Map([\n ['length', content => (content.length > 100 ? 2 : 1)],\n ['clarity', content => (content.split(' ').length > 10 ? 2 : 1)],\n ['structure', content => (content.includes('\\n') ? 2 : 1)],\n ['completeness', (content, request) => (content.length > request.length * 0.5 ? 2 : 1)],\n ]);\n }\n\n /**\n * Evaluate content using predefined rubric\n * Faster than LLM evaluation but less nuanced\n */\n async evaluate(input: EvaluatorInput): Promise<EvaluationResult> {\n const { content, originalRequest, criteria } = input;\n const threshold = criteria?.threshold ?? 8;\n\n // Calculate score from rubric criteria\n let totalScore = 0;\n let maxScore = 0;\n const issues: string[] = [];\n\n for (const scorer of this.rubric.values()) {\n const score = scorer(content, originalRequest);\n totalScore += score;\n maxScore += 2; // Each criterion in default rubric scores 1-2\n }\n\n // Normalize to 1-10 scale\n const qualityScore = Math.max(1, Math.min(10, Math.round((totalScore / maxScore) * 10)));\n\n // Determine issues based on score\n if (qualityScore < 4) {\n issues.push('Content is too brief or lacks detail');\n issues.push('Structure could be clearer');\n } else if (qualityScore < 7) {\n issues.push('Could provide more specific examples');\n issues.push('Organization could be improved');\n }\n\n return {\n qualityScore,\n preservesTone: true,\n preservesNuance: qualityScore >= 7,\n culturallyAccurate: true,\n technicallyCorrect: qualityScore >= 6,\n specificIssues: issues,\n improvementSuggestions: [\n 'Expand with concrete examples',\n 'Improve paragraph transitions',\n 'Add supporting evidence',\n ],\n strengths: ['Clear writing', 'Relevant content'],\n overallAssessment: `Content quality score: ${qualityScore}/10. ${\n qualityScore >= threshold ? 'Meets threshold.' : 'Needs optimization.'\n }`,\n meetsThreshold: qualityScore >= threshold,\n };\n }\n}\n\n/**\n * Composite Evaluator\n * Combines multiple evaluators (LLM, rubric, custom) for multi-dimensional assessment\n * Weights results from different evaluators to produce robust evaluation\n */\nexport class CompositeEvaluator implements Evaluator {\n /**\n * Array of evaluators with their weights (0-1)\n */\n private evaluators: Array<{\n evaluator: Evaluator;\n weight: number;\n }>;\n\n constructor(evaluators: Array<{ evaluator: Evaluator; weight: number }> = []) {\n this.evaluators = evaluators;\n\n // Default composite if none provided\n if (this.evaluators.length === 0) {\n this.evaluators = [\n { evaluator: new LLMEvaluator(), weight: 0.7 },\n { evaluator: new RubricEvaluator(), weight: 0.3 },\n ];\n }\n\n // Normalize weights\n const totalWeight = this.evaluators.reduce((sum, e) => sum + e.weight, 0);\n if (totalWeight === 0) {\n throw new Error('CompositeEvaluator requires weights > 0');\n }\n this.evaluators = this.evaluators.map(e => ({\n ...e,\n weight: e.weight / totalWeight,\n }));\n }\n\n /**\n * Run composite evaluation combining multiple perspectives\n */\n async evaluate(input: EvaluatorInput): Promise<EvaluationResult> {\n const results = await Promise.all(this.evaluators.map(e => e.evaluator.evaluate(input)));\n\n // Weighted average score\n const weightedScore = results.reduce(\n (sum, result, idx) => sum + result.qualityScore * (this.evaluators[idx]?.weight ?? 0),\n 0,\n );\n\n // Combine boolean assessments (true if majority agree)\n const agreeingEvaluators = (\n key: 'preservesTone' | 'preservesNuance' | 'culturallyAccurate' | 'technicallyCorrect',\n ) => {\n const trueCount = results.filter(r => r[key]).length;\n return trueCount > results.length / 2;\n };\n\n // Aggregate issues and suggestions (unique)\n const allIssues = results.flatMap(r => r.specificIssues);\n const uniqueIssues = [...new Set(allIssues)];\n\n const allSuggestions = results.flatMap(r => r.improvementSuggestions);\n const uniqueSuggestions = [...new Set(allSuggestions)];\n\n const allStrengths = results.flatMap(r => r.strengths);\n const uniqueStrengths = [...new Set(allStrengths)];\n\n const meetsThreshold = weightedScore >= (input.criteria?.threshold ?? 8);\n\n return {\n qualityScore: Math.round(weightedScore),\n preservesTone: agreeingEvaluators('preservesTone'),\n preservesNuance: agreeingEvaluators('preservesNuance'),\n culturallyAccurate: agreeingEvaluators('culturallyAccurate'),\n technicallyCorrect: agreeingEvaluators('technicallyCorrect'),\n specificIssues: uniqueIssues.slice(0, 5), // Top 5 issues\n improvementSuggestions: uniqueSuggestions.slice(0, 5), // Top 5 suggestions\n strengths: uniqueStrengths.slice(0, 5), // Top 5 strengths\n overallAssessment: `Composite evaluation: ${weightedScore.toFixed(1)}/10. Based on ${this.evaluators.length} evaluator(s).`,\n meetsThreshold,\n };\n }\n}\n\n/**\n * Factory function to create LLM evaluator\n */\nexport function createLLMEvaluator(modelId?: string): Evaluator {\n return new LLMEvaluator(modelId);\n}\n\n/**\n * Factory function to create rubric evaluator\n */\nexport function createRubricEvaluator(\n rubric?: Map<string, (content: string, request: string) => number>,\n): Evaluator {\n return new RubricEvaluator(rubric);\n}\n\n/**\n * Factory function to create composite evaluator\n */\nexport function createCompositeEvaluator(\n evaluators: Array<{ evaluator: Evaluator; weight: number }> = [],\n): Evaluator {\n return new CompositeEvaluator(evaluators);\n}\n"],"mappings":";;;;;;;;;;;;;AAmBA,IAAa,eAAb,MAA+C;;;;;CAK7C,AAAQ;CAER,YAAY,UAAkB,sBAAsB;AAClD,OAAK,UAAU;;;;;;;;;;;;;;;;;;;CAoBjB,MAAM,SAAS,OAAkD;EAC/D,MAAM,EAAE,SAAS,iBAAiB,UAAU,oBAAoB;EAChE,MAAM,YAAY,UAAU,aAAa;EAEzC,MAAM,eAAe;;;;;;;;;;;;;;;EAgBrB,MAAM,aAAa,GAAG,kBAAkB,cAAc,gBAAgB,OAAO,GAAG;;oBAEhE,gBAAgB;;;EAGlC,QAAQ;;qBAEW,UAAU;;uFAEwD,UAAU;0DACvC,UAAU;AAEhE,MAAI;GACF,MAAM,EAAE,QAAQ,eAAe,MAAM,eAAe;IAClD,OAAO,KAAK;IACZ,QAAQ;IACR,QAAQ;IACR,QAAQ;IACT,CAAC;AAEF,UAAO;WACA,OAAO;AACd,SAAM,IAAI,MACR,0BAA0B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACjF;;;;;;;AA0KP,SAAgB,mBAAmB,SAA6B;AAC9D,QAAO,IAAI,aAAa,QAAQ"}