@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,282 @@
1
+ /**
2
+ * Evaluator Module
3
+ * Implements LLM-as-judge pattern for content quality assessment
4
+ * Based on VERCEL_AI_SDK_V6_PATTERNS.md section 4.2
5
+ */
6
+
7
+ import { generateObject } from '../../shared';
8
+
9
+ import {
10
+ type EvaluationResult,
11
+ EvaluationResultSchema,
12
+ type EvaluatorInput,
13
+ type Evaluator,
14
+ } from './schema';
15
+
16
+ /**
17
+ * LLM-as-Judge Evaluator
18
+ * Uses language model to assess content quality across 9 dimensions
19
+ */
20
+ export class LLMEvaluator implements Evaluator {
21
+ /**
22
+ * Model identifier for evaluation (typically a fast model)
23
+ * @default 'openai/gpt-4o-mini'
24
+ */
25
+ private modelId: string;
26
+
27
+ constructor(modelId: string = 'openai/gpt-4o-mini') {
28
+ this.modelId = modelId;
29
+ }
30
+
31
+ /**
32
+ * Evaluate content using LLM-as-judge pattern
33
+ * Provides comprehensive assessment across multiple quality dimensions
34
+ *
35
+ * @param input - Evaluation input containing content and context
36
+ * @returns Promise resolving to detailed evaluation result
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const evaluator = new LLMEvaluator();
41
+ * const result = await evaluator.evaluate({
42
+ * content: "Generated content here",
43
+ * originalRequest: "Write a technical article about TypeScript",
44
+ * criteria: { threshold: 8 }
45
+ * });
46
+ * ```
47
+ */
48
+ async evaluate(input: EvaluatorInput): Promise<EvaluationResult> {
49
+ const { content, originalRequest, criteria, iterationNumber } = input;
50
+ const threshold = criteria?.threshold ?? 8;
51
+
52
+ const systemPrompt = `You are an expert content evaluator with deep knowledge in quality assessment.
53
+ Evaluate content across these 9 dimensions:
54
+
55
+ 1. **Quality Score** (1-10): Overall quality from poor (1-3) to excellent (9-10)
56
+ 2. **Tone Preservation**: Whether original intended tone is maintained
57
+ 3. **Nuance Preservation**: Whether subtle meanings and context are preserved
58
+ 4. **Cultural Accuracy**: Sensitivity and accuracy regarding cultural references
59
+ 5. **Technical Correctness**: Accuracy of any technical, factual, or domain-specific claims
60
+ 6. **Specific Issues**: Concrete problems, gaps, or errors found
61
+ 7. **Improvement Suggestions**: Actionable feedback for enhancement
62
+ 8. **Strengths**: Aspects to preserve during optimization
63
+ 9. **Overall Assessment**: Summary of quality and readiness
64
+
65
+ Be rigorous and specific. Identify real issues, not minor nitpicks.
66
+ Provide constructive, actionable feedback.`;
67
+
68
+ const userPrompt = `${iterationNumber ? `[Iteration ${iterationNumber}]\n` : ''}Evaluate this content:
69
+
70
+ ORIGINAL REQUEST: ${originalRequest}
71
+
72
+ CONTENT TO EVALUATE:
73
+ ${content}
74
+
75
+ QUALITY THRESHOLD: ${threshold}/10
76
+
77
+ Provide a comprehensive evaluation following the schema. Content must score at least ${threshold}/10 to pass.
78
+ For meetsThreshold, set to true only if qualityScore >= ${threshold}.`;
79
+
80
+ try {
81
+ const { object: evaluation } = await generateObject({
82
+ model: this.modelId,
83
+ schema: EvaluationResultSchema,
84
+ system: systemPrompt,
85
+ prompt: userPrompt,
86
+ });
87
+
88
+ return evaluation;
89
+ } catch (error) {
90
+ throw new Error(
91
+ `LLM evaluation failed: ${error instanceof Error ? error.message : String(error)}`,
92
+ );
93
+ }
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Rubric-Based Evaluator
99
+ * Provides structured evaluation using predefined criteria and scoring rubric
100
+ * Useful for consistent, deterministic evaluation across multiple runs
101
+ */
102
+ export class RubricEvaluator implements Evaluator {
103
+ /**
104
+ * Scoring rubric mapping criteria to score ranges
105
+ */
106
+ private rubric: Map<string, (content: string, request: string) => number>;
107
+
108
+ constructor(customRubric?: Map<string, (content: string, request: string) => number>) {
109
+ this.rubric = customRubric || this.createDefaultRubric();
110
+ }
111
+
112
+ /**
113
+ * Create default rubric for evaluation
114
+ */
115
+ private createDefaultRubric(): Map<string, (content: string, request: string) => number> {
116
+ return new Map([
117
+ ['length', content => (content.length > 100 ? 2 : 1)],
118
+ ['clarity', content => (content.split(' ').length > 10 ? 2 : 1)],
119
+ ['structure', content => (content.includes('\n') ? 2 : 1)],
120
+ ['completeness', (content, request) => (content.length > request.length * 0.5 ? 2 : 1)],
121
+ ]);
122
+ }
123
+
124
+ /**
125
+ * Evaluate content using predefined rubric
126
+ * Faster than LLM evaluation but less nuanced
127
+ */
128
+ async evaluate(input: EvaluatorInput): Promise<EvaluationResult> {
129
+ const { content, originalRequest, criteria } = input;
130
+ const threshold = criteria?.threshold ?? 8;
131
+
132
+ // Calculate score from rubric criteria
133
+ let totalScore = 0;
134
+ let maxScore = 0;
135
+ const issues: string[] = [];
136
+
137
+ for (const scorer of this.rubric.values()) {
138
+ const score = scorer(content, originalRequest);
139
+ totalScore += score;
140
+ maxScore += 2; // Each criterion in default rubric scores 1-2
141
+ }
142
+
143
+ // Normalize to 1-10 scale
144
+ const qualityScore = Math.max(1, Math.min(10, Math.round((totalScore / maxScore) * 10)));
145
+
146
+ // Determine issues based on score
147
+ if (qualityScore < 4) {
148
+ issues.push('Content is too brief or lacks detail');
149
+ issues.push('Structure could be clearer');
150
+ } else if (qualityScore < 7) {
151
+ issues.push('Could provide more specific examples');
152
+ issues.push('Organization could be improved');
153
+ }
154
+
155
+ return {
156
+ qualityScore,
157
+ preservesTone: true,
158
+ preservesNuance: qualityScore >= 7,
159
+ culturallyAccurate: true,
160
+ technicallyCorrect: qualityScore >= 6,
161
+ specificIssues: issues,
162
+ improvementSuggestions: [
163
+ 'Expand with concrete examples',
164
+ 'Improve paragraph transitions',
165
+ 'Add supporting evidence',
166
+ ],
167
+ strengths: ['Clear writing', 'Relevant content'],
168
+ overallAssessment: `Content quality score: ${qualityScore}/10. ${
169
+ qualityScore >= threshold ? 'Meets threshold.' : 'Needs optimization.'
170
+ }`,
171
+ meetsThreshold: qualityScore >= threshold,
172
+ };
173
+ }
174
+ }
175
+
176
+ /**
177
+ * Composite Evaluator
178
+ * Combines multiple evaluators (LLM, rubric, custom) for multi-dimensional assessment
179
+ * Weights results from different evaluators to produce robust evaluation
180
+ */
181
+ export class CompositeEvaluator implements Evaluator {
182
+ /**
183
+ * Array of evaluators with their weights (0-1)
184
+ */
185
+ private evaluators: Array<{
186
+ evaluator: Evaluator;
187
+ weight: number;
188
+ }>;
189
+
190
+ constructor(evaluators: Array<{ evaluator: Evaluator; weight: number }> = []) {
191
+ this.evaluators = evaluators;
192
+
193
+ // Default composite if none provided
194
+ if (this.evaluators.length === 0) {
195
+ this.evaluators = [
196
+ { evaluator: new LLMEvaluator(), weight: 0.7 },
197
+ { evaluator: new RubricEvaluator(), weight: 0.3 },
198
+ ];
199
+ }
200
+
201
+ // Normalize weights
202
+ const totalWeight = this.evaluators.reduce((sum, e) => sum + e.weight, 0);
203
+ if (totalWeight === 0) {
204
+ throw new Error('CompositeEvaluator requires weights > 0');
205
+ }
206
+ this.evaluators = this.evaluators.map(e => ({
207
+ ...e,
208
+ weight: e.weight / totalWeight,
209
+ }));
210
+ }
211
+
212
+ /**
213
+ * Run composite evaluation combining multiple perspectives
214
+ */
215
+ async evaluate(input: EvaluatorInput): Promise<EvaluationResult> {
216
+ const results = await Promise.all(this.evaluators.map(e => e.evaluator.evaluate(input)));
217
+
218
+ // Weighted average score
219
+ const weightedScore = results.reduce(
220
+ (sum, result, idx) => sum + result.qualityScore * (this.evaluators[idx]?.weight ?? 0),
221
+ 0,
222
+ );
223
+
224
+ // Combine boolean assessments (true if majority agree)
225
+ const agreeingEvaluators = (
226
+ key: 'preservesTone' | 'preservesNuance' | 'culturallyAccurate' | 'technicallyCorrect',
227
+ ) => {
228
+ const trueCount = results.filter(r => r[key]).length;
229
+ return trueCount > results.length / 2;
230
+ };
231
+
232
+ // Aggregate issues and suggestions (unique)
233
+ const allIssues = results.flatMap(r => r.specificIssues);
234
+ const uniqueIssues = [...new Set(allIssues)];
235
+
236
+ const allSuggestions = results.flatMap(r => r.improvementSuggestions);
237
+ const uniqueSuggestions = [...new Set(allSuggestions)];
238
+
239
+ const allStrengths = results.flatMap(r => r.strengths);
240
+ const uniqueStrengths = [...new Set(allStrengths)];
241
+
242
+ const meetsThreshold = weightedScore >= (input.criteria?.threshold ?? 8);
243
+
244
+ return {
245
+ qualityScore: Math.round(weightedScore),
246
+ preservesTone: agreeingEvaluators('preservesTone'),
247
+ preservesNuance: agreeingEvaluators('preservesNuance'),
248
+ culturallyAccurate: agreeingEvaluators('culturallyAccurate'),
249
+ technicallyCorrect: agreeingEvaluators('technicallyCorrect'),
250
+ specificIssues: uniqueIssues.slice(0, 5), // Top 5 issues
251
+ improvementSuggestions: uniqueSuggestions.slice(0, 5), // Top 5 suggestions
252
+ strengths: uniqueStrengths.slice(0, 5), // Top 5 strengths
253
+ overallAssessment: `Composite evaluation: ${weightedScore.toFixed(1)}/10. Based on ${this.evaluators.length} evaluator(s).`,
254
+ meetsThreshold,
255
+ };
256
+ }
257
+ }
258
+
259
+ /**
260
+ * Factory function to create LLM evaluator
261
+ */
262
+ export function createLLMEvaluator(modelId?: string): Evaluator {
263
+ return new LLMEvaluator(modelId);
264
+ }
265
+
266
+ /**
267
+ * Factory function to create rubric evaluator
268
+ */
269
+ export function createRubricEvaluator(
270
+ rubric?: Map<string, (content: string, request: string) => number>,
271
+ ): Evaluator {
272
+ return new RubricEvaluator(rubric);
273
+ }
274
+
275
+ /**
276
+ * Factory function to create composite evaluator
277
+ */
278
+ export function createCompositeEvaluator(
279
+ evaluators: Array<{ evaluator: Evaluator; weight: number }> = [],
280
+ ): Evaluator {
281
+ return new CompositeEvaluator(evaluators);
282
+ }
@@ -0,0 +1,416 @@
1
+ /**
2
+ * Evaluator-Optimizer Tests
3
+ * Unit tests for the feedback loop pattern implementation
4
+ */
5
+
6
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
7
+
8
+ import { createLLMEvaluator, createRubricEvaluator, createCompositeEvaluator } from './evaluator';
9
+ import { createPromptOptimizer, createOutputOptimizer } from './optimizer';
10
+ import {
11
+ type Evaluator,
12
+ type Optimizer,
13
+ type EvaluationResult,
14
+ type OptimizerInput,
15
+ } from './schema';
16
+
17
+ import { createEvaluatorOptimizer, type EvaluatorOptimizer } from ".";
18
+
19
+ /**
20
+ * Mock Evaluator for testing
21
+ * Returns predetermined scores for consistent testing
22
+ */
23
+ class MockEvaluator implements Evaluator {
24
+ private scores: number[];
25
+ private currentCall: number = 0;
26
+
27
+ constructor(scores: number[] = [7, 8, 9]) {
28
+ this.scores = scores;
29
+ }
30
+
31
+ async evaluate(): Promise<EvaluationResult> {
32
+ const score = this.scores[Math.min(this.currentCall, this.scores.length - 1)];
33
+ this.currentCall += 1;
34
+
35
+ return {
36
+ qualityScore: score,
37
+ preservesTone: score >= 7,
38
+ preservesNuance: score >= 8,
39
+ culturallyAccurate: true,
40
+ technicallyCorrect: score >= 6,
41
+ specificIssues: score < 8 ? ['Quality needs improvement'] : [],
42
+ improvementSuggestions: score < 8 ? ['Add more detail'] : [],
43
+ strengths: ['Clear writing'],
44
+ overallAssessment: `Score: ${score}/10`,
45
+ meetsThreshold: score >= 8,
46
+ };
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Mock Optimizer for testing
52
+ */
53
+ class MockOptimizer implements Optimizer {
54
+ private callCount: number = 0;
55
+
56
+ async optimize(input: OptimizerInput): Promise<string> {
57
+ this.callCount += 1;
58
+ // Simulate improvement by appending iteration marker
59
+ return `${input.content} [optimized iteration ${this.callCount}]`;
60
+ }
61
+
62
+ getCallCount(): number {
63
+ return this.callCount;
64
+ }
65
+ }
66
+
67
+ describe('Evaluator-Optimizer Feedback Loop', () => {
68
+ let mockEvaluator: MockEvaluator;
69
+ let mockOptimizer: MockOptimizer;
70
+ let optimizer: EvaluatorOptimizer;
71
+
72
+ beforeEach(() => {
73
+ mockEvaluator = new MockEvaluator([6, 7, 8, 9]);
74
+ mockOptimizer = new MockOptimizer();
75
+
76
+ optimizer = createEvaluatorOptimizer({
77
+ maxIterations: 5,
78
+ targetScore: 8,
79
+ evaluator: mockEvaluator,
80
+ optimizer: mockOptimizer,
81
+ enableLogging: false,
82
+ });
83
+ });
84
+
85
+ describe('initialization', () => {
86
+ it('should create optimizer with config', () => {
87
+ expect(optimizer).toBeDefined();
88
+ expect(optimizer.getEvaluator()).toBeDefined();
89
+ expect(optimizer.getOptimizer()).toBeDefined();
90
+ });
91
+
92
+ it('should preserve evaluator and optimizer instances', () => {
93
+ expect(optimizer.getEvaluator()).toBe(mockEvaluator);
94
+ expect(optimizer.getOptimizer()).toBe(mockOptimizer);
95
+ });
96
+ });
97
+
98
+ describe('feedback Loop Execution', () => {
99
+ it('should complete feedback loop successfully', async () => {
100
+ const result = await optimizer.runFeedbackLoop('Initial content', 'Test request');
101
+
102
+ expect(result).toBeDefined();
103
+ expect(result.finalContent).toBeDefined();
104
+ expect(result.finalEvaluation).toBeDefined();
105
+ expect(result.cyclesCompleted).toBeGreaterThan(0);
106
+ });
107
+
108
+ it('should meet threshold when score reaches target', async () => {
109
+ const result = await optimizer.runFeedbackLoop('Initial content', 'Test request');
110
+
111
+ expect(result.meetsThreshold).toBe(true);
112
+ expect(result.finalEvaluation.qualityScore).toBeGreaterThanOrEqual(8);
113
+ expect(result.terminationReason).toBe('threshold_met');
114
+ });
115
+
116
+ it('should record score history', async () => {
117
+ const result = await optimizer.runFeedbackLoop('Initial content', 'Test request');
118
+
119
+ expect(result.scoreHistory).toBeDefined();
120
+ expect(result.scoreHistory.length).toBeGreaterThan(0);
121
+ expect(result.scoreHistory[0]).toBe(6); // Initial score
122
+ });
123
+
124
+ it('should record content history', async () => {
125
+ const result = await optimizer.runFeedbackLoop('Initial content', 'Test request');
126
+
127
+ expect(result.contentHistory).toBeDefined();
128
+ expect(result.contentHistory.length).toBeGreaterThan(0);
129
+ expect(result.contentHistory[0]).toBe('Initial content');
130
+ });
131
+
132
+ it('should terminate when max iterations reached', async () => {
133
+ // Create evaluator that never reaches threshold
134
+ const lowScoreEvaluator = new MockEvaluator([5, 5.5, 6, 6.5, 7]);
135
+
136
+ const optimizer2 = createEvaluatorOptimizer({
137
+ maxIterations: 3,
138
+ targetScore: 9,
139
+ evaluator: lowScoreEvaluator,
140
+ optimizer: mockOptimizer,
141
+ enableLogging: false,
142
+ });
143
+
144
+ const result = await optimizer2.runFeedbackLoop('Content', 'Request');
145
+
146
+ expect(result.cyclesCompleted).toBeLessThanOrEqual(3);
147
+ expect(result.meetsThreshold).toBe(false);
148
+ expect(result.terminationReason).toBe('max_iterations');
149
+ });
150
+
151
+ it('should stop on threshold when stopOnThreshold is true', async () => {
152
+ const result = await optimizer.runFeedbackLoop('Initial content', 'Test request', {
153
+ stopOnThreshold: true,
154
+ });
155
+
156
+ // Should stop as soon as threshold is met
157
+ expect(result.meetsThreshold).toBe(true);
158
+ expect(result.finalEvaluation.qualityScore).toBeGreaterThanOrEqual(8);
159
+ });
160
+
161
+ it('should calculate average score improvement', async () => {
162
+ const result = await optimizer.runFeedbackLoop('Initial content', 'Test request');
163
+
164
+ const avgImprovement = result.metadata?.averageScoreImprovement ?? 0;
165
+ expect(avgImprovement).toBeGreaterThanOrEqual(0);
166
+ });
167
+ });
168
+
169
+ describe('optimization Cycles', () => {
170
+ it('should call optimizer only when score below threshold', async () => {
171
+ mockOptimizer = new MockOptimizer();
172
+ optimizer = createEvaluatorOptimizer({
173
+ maxIterations: 5,
174
+ targetScore: 8,
175
+ evaluator: mockEvaluator,
176
+ optimizer: mockOptimizer,
177
+ enableLogging: false,
178
+ });
179
+
180
+ await optimizer.runFeedbackLoop('Content', 'Request');
181
+
182
+ // With mock scores [6, 7, 8, 9], optimizer should be called
183
+ // for first 2 scores (below 8)
184
+ expect(mockOptimizer.getCallCount()).toBeGreaterThan(0);
185
+ });
186
+
187
+ it('should improve content through iterations', async () => {
188
+ const result = await optimizer.runFeedbackLoop('Content', 'Request');
189
+
190
+ // Final content should be different from initial
191
+ // (modified by optimizer)
192
+ if (result.cyclesCompleted > 0) {
193
+ expect(result.finalContent).not.toBe(result.contentHistory[0]);
194
+ }
195
+ });
196
+ });
197
+
198
+ describe('evaluators', () => {
199
+ it('should work with LLMEvaluator type', () => {
200
+ // Just test that factory creates right type
201
+ const evaluator = createLLMEvaluator('openai/gpt-4o-mini');
202
+ expect(evaluator).toBeDefined();
203
+ });
204
+
205
+ it('should work with RubricEvaluator type', () => {
206
+ const evaluator = createRubricEvaluator();
207
+ expect(evaluator).toBeDefined();
208
+ });
209
+
210
+ it('should work with CompositeEvaluator type', () => {
211
+ const composite = createCompositeEvaluator([
212
+ { evaluator: createRubricEvaluator(), weight: 1 },
213
+ ]);
214
+ expect(composite).toBeDefined();
215
+ });
216
+ });
217
+
218
+ describe('optimizers', () => {
219
+ it('should work with PromptOptimizer', () => {
220
+ const optimizer = createPromptOptimizer('openai/gpt-4o-mini');
221
+ expect(optimizer).toBeDefined();
222
+ });
223
+
224
+ it('should work with OutputOptimizer', () => {
225
+ const optimizer = createOutputOptimizer('openai/gpt-4o-mini', 'refine');
226
+ expect(optimizer).toBeDefined();
227
+ });
228
+ });
229
+
230
+ describe('error Handling', () => {
231
+ it('should handle evaluation errors gracefully', async () => {
232
+ // Create evaluator that throws
233
+ class ErrorEvaluator implements Evaluator {
234
+ async evaluate(): Promise<EvaluationResult> {
235
+ throw new Error('Evaluation failed');
236
+ }
237
+ }
238
+
239
+ const optimizer2 = createEvaluatorOptimizer({
240
+ maxIterations: 2,
241
+ targetScore: 8,
242
+ evaluator: new ErrorEvaluator(),
243
+ optimizer: mockOptimizer,
244
+ enableLogging: false,
245
+ });
246
+
247
+ const result = await optimizer2.runFeedbackLoop('Content', 'Request');
248
+
249
+ expect(result.terminationReason).toBe('error');
250
+ expect(result.error).toBeDefined();
251
+ });
252
+
253
+ it('should handle optimizer errors gracefully', async () => {
254
+ // Create optimizer that throws
255
+ class ErrorOptimizer implements Optimizer {
256
+ async optimize(): Promise<string> {
257
+ throw new Error('Optimization failed');
258
+ }
259
+ }
260
+
261
+ const optimizer2 = createEvaluatorOptimizer({
262
+ maxIterations: 2,
263
+ targetScore: 8,
264
+ evaluator: mockEvaluator,
265
+ optimizer: new ErrorOptimizer(),
266
+ enableLogging: false,
267
+ });
268
+
269
+ const result = await optimizer2.runFeedbackLoop('Content', 'Request');
270
+
271
+ expect(result.terminationReason).toBe('error');
272
+ expect(result.error).toBeDefined();
273
+ });
274
+ });
275
+
276
+ describe('result Structure', () => {
277
+ it('should include all required fields in result', async () => {
278
+ const result = await optimizer.runFeedbackLoop('Content', 'Request');
279
+
280
+ expect(result.finalContent).toBeDefined();
281
+ expect(result.finalEvaluation).toBeDefined();
282
+ expect(result.cyclesCompleted).toBeDefined();
283
+ expect(result.meetsThreshold).toBeDefined();
284
+ expect(result.scoreHistory).toBeDefined();
285
+ expect(result.contentHistory).toBeDefined();
286
+ expect(result.terminationReason).toBeDefined();
287
+ expect(result.metadata).toBeDefined();
288
+ });
289
+
290
+ it('should include metadata with timing information', async () => {
291
+ const result = await optimizer.runFeedbackLoop('Content', 'Request');
292
+
293
+ expect(result.metadata?.startTime).toBeDefined();
294
+ expect(result.metadata?.endTime).toBeDefined();
295
+ expect(result.metadata?.processingTimeMs).toBeGreaterThan(0);
296
+ expect(result.metadata?.averageScoreImprovement).toBeDefined();
297
+ });
298
+
299
+ it('should include error only on error termination', async () => {
300
+ const result = await optimizer.runFeedbackLoop('Content', 'Request');
301
+
302
+ if (result.terminationReason === 'error') {
303
+ expect(result.error).toBeDefined();
304
+ } else {
305
+ // May or may not have error field when not erroring
306
+ expect(result.error).toBeUndefined();
307
+ }
308
+ });
309
+ });
310
+
311
+ describe('configuration', () => {
312
+ it('should respect maxIterations config', async () => {
313
+ const optimizer2 = createEvaluatorOptimizer({
314
+ maxIterations: 2,
315
+ targetScore: 8,
316
+ evaluator: mockEvaluator,
317
+ optimizer: mockOptimizer,
318
+ enableLogging: false,
319
+ });
320
+
321
+ const result = await optimizer2.runFeedbackLoop('Content', 'Request');
322
+
323
+ expect(result.cyclesCompleted).toBeLessThanOrEqual(2);
324
+ });
325
+
326
+ it('should respect targetScore config', async () => {
327
+ const highTargetOptimizer = createEvaluatorOptimizer({
328
+ maxIterations: 5,
329
+ targetScore: 9,
330
+ evaluator: new MockEvaluator([6, 7, 8, 8.5, 9]),
331
+ optimizer: mockOptimizer,
332
+ enableLogging: false,
333
+ });
334
+
335
+ const result = await highTargetOptimizer.runFeedbackLoop('Content', 'Request');
336
+
337
+ expect(result.meetsThreshold).toBe(true);
338
+ expect(result.finalEvaluation.qualityScore).toBeGreaterThanOrEqual(9);
339
+ });
340
+ });
341
+
342
+ describe('logging', () => {
343
+ it('should not log when enableLogging is false', async () => {
344
+ const consoleSpy = vi.spyOn(console, 'log');
345
+
346
+ const optimizer2 = createEvaluatorOptimizer({
347
+ maxIterations: 3,
348
+ targetScore: 8,
349
+ evaluator: mockEvaluator,
350
+ optimizer: mockOptimizer,
351
+ enableLogging: false,
352
+ });
353
+
354
+ await optimizer2.runFeedbackLoop('Content', 'Request');
355
+
356
+ expect(consoleSpy).not.toHaveBeenCalled();
357
+ consoleSpy.mockRestore();
358
+ });
359
+
360
+ it('should log when enableLogging is true', async () => {
361
+ const consoleSpy = vi.spyOn(console, 'log');
362
+
363
+ const optimizer2 = createEvaluatorOptimizer({
364
+ maxIterations: 3,
365
+ targetScore: 8,
366
+ evaluator: mockEvaluator,
367
+ optimizer: mockOptimizer,
368
+ enableLogging: true,
369
+ });
370
+
371
+ await optimizer2.runFeedbackLoop('Content', 'Request');
372
+
373
+ expect(consoleSpy).toHaveBeenCalledWith();
374
+ consoleSpy.mockRestore();
375
+ });
376
+ });
377
+
378
+ describe('edge Cases', () => {
379
+ it('should handle empty content', async () => {
380
+ const result = await optimizer.runFeedbackLoop('', 'Request');
381
+
382
+ expect(result).toBeDefined();
383
+ expect(result.finalContent).toBeDefined();
384
+ });
385
+
386
+ it('should handle very long content', async () => {
387
+ const longContent = 'x'.repeat(10000);
388
+
389
+ const result = await optimizer.runFeedbackLoop(longContent, 'Request');
390
+
391
+ expect(result).toBeDefined();
392
+ expect(result.finalContent).toBeDefined();
393
+ });
394
+
395
+ it('should handle special characters in content', async () => {
396
+ const specialContent = 'Content with émojis 🎉 and spëcial çhars';
397
+
398
+ const result = await optimizer.runFeedbackLoop(specialContent, 'Request');
399
+
400
+ expect(result).toBeDefined();
401
+ });
402
+
403
+ it('should handle rapid successive calls', async () => {
404
+ const promises = Array(3)
405
+ .fill(null)
406
+ .map(() => optimizer.runFeedbackLoop('Content', 'Request'));
407
+
408
+ const results = await Promise.all(promises);
409
+
410
+ expect(results).toHaveLength(3);
411
+ results.forEach(result => {
412
+ expect(result).toBeDefined();
413
+ });
414
+ });
415
+ });
416
+ });