@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":"error-handling-DNVkm6RY.mjs","names":[],"sources":["../src/grounding/retrieval/in-memory-store.ts","../src/grounding/sources/index.ts","../src/grounding/context-engineering/tool-masking.ts","../src/grounding/context-engineering/memory.ts","../src/grounding/context-engineering/error-handling.ts"],"sourcesContent":["/**\n * In-memory vector store for development and testing\n */\n\nimport type { GroundingSource, VectorStore } from '../types';\n\n/**\n * Simple in-memory vector store using cosine similarity\n *\n * @example\n * ```ts\n * const store = new InMemoryVectorStore(embedFn);\n *\n * await store.add([\n * { id: \"1\", content: \"AI is transforming industries\" },\n * { id: \"2\", content: \"Machine learning requires data\" },\n * ]);\n *\n * const results = await store.search(\"artificial intelligence\", 5);\n * ```\n */\nexport class InMemoryVectorStore implements VectorStore {\n private documents = new Map<string, GroundingSource>();\n private embeddings = new Map<string, number[]>();\n\n constructor(\n private embedFn: (text: string) => Promise<number[]>,\n private options: { dimensions?: number } = {},\n ) {}\n\n async add(sources: GroundingSource[]): Promise<void> {\n for (const source of sources) {\n this.documents.set(source.id, source);\n const embedding = await this.embedFn(source.content);\n this.embeddings.set(source.id, embedding);\n }\n }\n\n async search(query: string, limit = 10): Promise<GroundingSource[]> {\n const queryEmbedding = await this.embedFn(query);\n\n const scores: Array<{ id: string; score: number }> = [];\n\n for (const [id, embedding] of this.embeddings) {\n const score = cosineSimilarity(queryEmbedding, embedding);\n scores.push({ id, score });\n }\n\n scores.sort((a, b) => b.score - a.score);\n\n return scores.slice(0, limit).flatMap(({ id, score }) => {\n const document = this.documents.get(id);\n if (!document) {\n return [];\n }\n return [{ ...document, score }];\n });\n }\n\n async delete(ids: string[]): Promise<void> {\n for (const id of ids) {\n this.documents.delete(id);\n this.embeddings.delete(id);\n }\n }\n\n /**\n * Get document count\n */\n size(): number {\n return this.documents.size;\n }\n\n /**\n * Clear all documents\n */\n clear(): void {\n this.documents.clear();\n this.embeddings.clear();\n }\n}\n\n/**\n * Calculate cosine similarity between two vectors\n */\nfunction cosineSimilarity(a: number[], b: number[]): number {\n if (a.length !== b.length) {\n throw new Error('Vectors must have the same length');\n }\n\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length; i++) {\n const aValue = a[i] ?? 0;\n const bValue = b[i] ?? 0;\n dotProduct += aValue * bValue;\n normA += aValue * aValue;\n normB += bValue * bValue;\n }\n\n const magnitude = Math.sqrt(normA) * Math.sqrt(normB);\n if (magnitude === 0) return 0;\n\n return dotProduct / magnitude;\n}\n","/**\n * Source Management\n *\n * Utilities for managing, validating, deduplicating, and filtering grounding sources.\n * Provides a registry for source lifecycle management and helper functions for\n * common source operations used across citation, attribution, and verification.\n *\n * @module @od-oneapp/ai-platform/grounding/sources\n *\n * @example\n * ```typescript\n * import {\n * createSourceRegistry,\n * validateSource,\n * deduplicateSources,\n * filterByScore,\n * } from '@od-oneapp/ai-platform/grounding/sources';\n *\n * // Create a registry\n * const registry = createSourceRegistry();\n * registry.add({ id: 'doc-1', content: 'Climate data...', score: 0.9 });\n *\n * // Validate sources\n * const { valid, errors } = validateSources(sources);\n *\n * // Filter and deduplicate\n * const unique = deduplicateSources(sources, { strategy: 'content' });\n * const topSources = filterByScore(unique, { minScore: 0.7, limit: 5 });\n * ```\n */\n\nimport type { GroundingSource } from '../types';\n\n// -----------------------------------------------------------------------------\n// Types\n// -----------------------------------------------------------------------------\n\n/** Extended source with provenance metadata */\nexport interface SourceWithProvenance extends GroundingSource {\n /** When the source was added */\n addedAt?: Date;\n /** When the source was last accessed */\n lastAccessedAt?: Date;\n /** Number of times this source was used */\n useCount?: number;\n /** Reliability score (0-1, separate from relevance) */\n reliability?: number;\n /** Source type classification */\n sourceType?: 'document' | 'webpage' | 'database' | 'api' | 'user' | 'unknown';\n}\n\n/** Validation result for a single source */\nexport interface SourceValidationResult {\n valid: boolean;\n sourceId: string;\n errors: string[];\n warnings: string[];\n}\n\n/** Validation options */\nexport interface ValidationOptions {\n /** Require URL field */\n requireUrl?: boolean;\n /** Require title field */\n requireTitle?: boolean;\n /** Minimum content length */\n minContentLength?: number;\n /** Maximum content length */\n maxContentLength?: number;\n /** Require score field */\n requireScore?: boolean;\n}\n\n/** Deduplication strategy */\nexport type DeduplicationStrategy = 'id' | 'url' | 'content' | 'hybrid';\n\n/** Deduplication options */\nexport interface DeduplicationOptions {\n /** Strategy for detecting duplicates */\n strategy?: DeduplicationStrategy;\n /** Similarity threshold for content-based dedup (0-1) */\n similarityThreshold?: number;\n /** Keep first or highest-scored duplicate */\n keepStrategy?: 'first' | 'highest-score';\n}\n\n/** Filter options */\nexport interface FilterOptions {\n /** Minimum relevance score */\n minScore?: number;\n /** Maximum relevance score */\n maxScore?: number;\n /** Minimum reliability score */\n minReliability?: number;\n /** Limit number of results */\n limit?: number;\n /** Required metadata fields */\n requiredMetadata?: string[];\n /** Source types to include */\n sourceTypes?: SourceWithProvenance['sourceType'][];\n}\n\n/** Source registry interface */\nexport interface SourceRegistry {\n /** Add a source to the registry */\n add(source: GroundingSource): void;\n /** Add multiple sources */\n addMany(sources: GroundingSource[]): void;\n /** Get a source by ID */\n get(id: string): SourceWithProvenance | undefined;\n /** Get all sources */\n getAll(): SourceWithProvenance[];\n /** Remove a source by ID */\n remove(id: string): boolean;\n /** Clear all sources */\n clear(): void;\n /** Check if source exists */\n has(id: string): boolean;\n /** Get source count */\n size(): number;\n /** Search sources by content similarity */\n search(query: string, limit?: number): SourceWithProvenance[];\n /** Record a source usage */\n recordUsage(id: string): void;\n}\n\n/** Registry configuration */\nexport interface SourceRegistryConfig {\n /** Maximum sources to store */\n maxSources?: number;\n /** Auto-deduplicate on add */\n autoDeduplicate?: boolean;\n /** Deduplication strategy */\n deduplicationStrategy?: DeduplicationStrategy;\n}\n\n// -----------------------------------------------------------------------------\n// Source Registry Implementation\n// -----------------------------------------------------------------------------\n\n/**\n * Creates a source registry for managing grounding sources.\n *\n * @example\n * ```typescript\n * const registry = createSourceRegistry({ maxSources: 1000 });\n *\n * registry.add({\n * id: 'wiki-1',\n * content: 'Climate change refers to...',\n * url: 'https://example.com/climate',\n * score: 0.85\n * });\n *\n * const source = registry.get('wiki-1');\n * console.log(source?.useCount); // 0\n *\n * registry.recordUsage('wiki-1');\n * console.log(registry.get('wiki-1')?.useCount); // 1\n * ```\n */\nexport function createSourceRegistry(config: SourceRegistryConfig = {}): SourceRegistry {\n const { maxSources = 10000, autoDeduplicate = false, deduplicationStrategy = 'id' } = config;\n\n const sources = new Map<string, SourceWithProvenance>();\n\n function add(source: GroundingSource): void {\n if (sources.size >= maxSources) {\n // Evict the oldest entry by insertion order (Map preserves insertion order).\n const oldestId = sources.keys().next().value;\n if (oldestId) sources.delete(oldestId);\n }\n\n // Check for duplicates if auto-deduplicate is enabled\n if (autoDeduplicate) {\n const isDuplicate = checkDuplicate(\n source,\n Array.from(sources.values()),\n deduplicationStrategy,\n );\n if (isDuplicate) return;\n }\n\n const enhanced: SourceWithProvenance = {\n ...source,\n addedAt: new Date(),\n lastAccessedAt: new Date(),\n useCount: 0,\n sourceType: inferSourceType(source),\n };\n\n sources.set(source.id, enhanced);\n }\n\n function addMany(newSources: GroundingSource[]): void {\n for (const source of newSources) {\n add(source);\n }\n }\n\n function get(id: string): SourceWithProvenance | undefined {\n const source = sources.get(id);\n if (source) {\n source.lastAccessedAt = new Date();\n }\n return source;\n }\n\n function getAll(): SourceWithProvenance[] {\n return Array.from(sources.values());\n }\n\n function remove(id: string): boolean {\n return sources.delete(id);\n }\n\n function clear(): void {\n sources.clear();\n }\n\n function has(id: string): boolean {\n return sources.has(id);\n }\n\n function size(): number {\n return sources.size;\n }\n\n function search(query: string, limit = 10): SourceWithProvenance[] {\n const results: Array<{ source: SourceWithProvenance; similarity: number }> = [];\n\n for (const source of sources.values()) {\n const similarity = computeTextSimilarity(query, source.content);\n if (similarity > 0.1) {\n results.push({ source, similarity });\n }\n }\n\n return results\n .sort((a, b) => b.similarity - a.similarity)\n .slice(0, limit)\n .map(r => r.source);\n }\n\n function recordUsage(id: string): void {\n const source = sources.get(id);\n if (source) {\n source.useCount = (source.useCount ?? 0) + 1;\n source.lastAccessedAt = new Date();\n }\n }\n\n return {\n add,\n addMany,\n get,\n getAll,\n remove,\n clear,\n has,\n size,\n search,\n recordUsage,\n };\n}\n\n// -----------------------------------------------------------------------------\n// Validation Functions\n// -----------------------------------------------------------------------------\n\n/**\n * Validate a single grounding source.\n *\n * @example\n * ```typescript\n * const result = validateSource(source, { requireUrl: true, minContentLength: 50 });\n * if (!result.valid) {\n * console.error('Validation errors:', result.errors);\n * }\n * ```\n */\nexport function validateSource(\n source: GroundingSource,\n options: ValidationOptions = {},\n): SourceValidationResult {\n const {\n requireUrl = false,\n requireTitle = false,\n minContentLength = 1,\n maxContentLength = 100000,\n requireScore = false,\n } = options;\n\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Required fields\n if (!source.id || typeof source.id !== 'string') {\n errors.push('Source must have a valid string id');\n }\n\n if (!source.content || typeof source.content !== 'string') {\n errors.push('Source must have valid string content');\n } else {\n if (source.content.length < minContentLength) {\n errors.push(`Content must be at least ${minContentLength} characters`);\n }\n if (source.content.length > maxContentLength) {\n errors.push(`Content must not exceed ${maxContentLength} characters`);\n }\n }\n\n // Optional required fields\n if (requireUrl && !source.url) {\n errors.push('URL is required');\n }\n\n if (requireTitle && !source.title) {\n errors.push('Title is required');\n }\n\n if (requireScore && (source.score === undefined || source.score === null)) {\n errors.push('Score is required');\n }\n\n // Score range validation\n if (source.score !== undefined && (source.score < 0 || source.score > 1)) {\n warnings.push('score should be between 0 and 1');\n }\n\n // URL format validation\n if (source.url && !isValidUrl(source.url)) {\n warnings.push('URL appears to be invalid');\n }\n\n return {\n valid: errors.length === 0,\n sourceId: source.id ?? 'unknown',\n errors,\n warnings,\n };\n}\n\n/**\n * Validate multiple sources.\n *\n * @example\n * ```typescript\n * const { valid, invalid, results } = validateSources(sources);\n * console.log(`${valid.length} valid, ${invalid.length} invalid`);\n * ```\n */\nexport function validateSources(\n sources: GroundingSource[],\n options: ValidationOptions = {},\n): {\n valid: GroundingSource[];\n invalid: GroundingSource[];\n results: SourceValidationResult[];\n} {\n const results = sources.map(s => validateSource(s, options));\n const valid: GroundingSource[] = [];\n const invalid: GroundingSource[] = [];\n\n for (let i = 0; i < sources.length; i++) {\n const result = results[i];\n const source = sources[i];\n if (!result || !source) continue;\n if (result.valid) {\n valid.push(source);\n } else {\n invalid.push(source);\n }\n }\n\n return { valid, invalid, results };\n}\n\n// -----------------------------------------------------------------------------\n// Deduplication Functions\n// -----------------------------------------------------------------------------\n\n/**\n * Remove duplicate sources based on the specified strategy.\n *\n * @example\n * ```typescript\n * // By ID (exact match)\n * const unique = deduplicateSources(sources, { strategy: 'id' });\n *\n * // By content similarity\n * const unique = deduplicateSources(sources, {\n * strategy: 'content',\n * similarityThreshold: 0.9,\n * keepStrategy: 'highest-score'\n * });\n * ```\n */\nexport function deduplicateSources(\n sources: GroundingSource[],\n options: DeduplicationOptions = {},\n): GroundingSource[] {\n const { strategy = 'id', similarityThreshold = 0.9, keepStrategy = 'first' } = options;\n\n if (sources.length === 0) return [];\n\n switch (strategy) {\n case 'id':\n return deduplicateById(sources, keepStrategy);\n\n case 'url':\n return deduplicateByUrl(sources, keepStrategy);\n\n case 'content':\n return deduplicateByContent(sources, similarityThreshold, keepStrategy);\n\n case 'hybrid':\n // First by URL, then by content\n const byUrl = deduplicateByUrl(sources, keepStrategy);\n return deduplicateByContent(byUrl, similarityThreshold, keepStrategy);\n\n default:\n return sources;\n }\n}\n\nfunction deduplicateById(\n sources: GroundingSource[],\n keepStrategy: 'first' | 'highest-score',\n): GroundingSource[] {\n const seen = new Map<string, GroundingSource>();\n\n for (const source of sources) {\n const existing = seen.get(source.id);\n if (!existing) {\n seen.set(source.id, source);\n } else if (keepStrategy === 'highest-score') {\n if ((source.score ?? 0) > (existing.score ?? 0)) {\n seen.set(source.id, source);\n }\n }\n }\n\n return Array.from(seen.values());\n}\n\nfunction deduplicateByUrl(\n sources: GroundingSource[],\n keepStrategy: 'first' | 'highest-score',\n): GroundingSource[] {\n const seen = new Map<string, GroundingSource>();\n const noUrl: GroundingSource[] = [];\n\n for (const source of sources) {\n if (!source.url) {\n noUrl.push(source);\n continue;\n }\n\n const normalizedUrl = normalizeUrl(source.url);\n const existing = seen.get(normalizedUrl);\n\n if (!existing) {\n seen.set(normalizedUrl, source);\n } else if (keepStrategy === 'highest-score') {\n if ((source.score ?? 0) > (existing.score ?? 0)) {\n seen.set(normalizedUrl, source);\n }\n }\n }\n\n return [...Array.from(seen.values()), ...noUrl];\n}\n\nfunction deduplicateByContent(\n sources: GroundingSource[],\n threshold: number,\n keepStrategy: 'first' | 'highest-score',\n): GroundingSource[] {\n const result: GroundingSource[] = [];\n\n for (const source of sources) {\n let isDuplicate = false;\n let duplicateIndex = -1;\n\n for (let i = 0; i < result.length; i++) {\n const existing = result[i];\n if (!existing) continue;\n const similarity = computeTextSimilarity(source.content, existing.content);\n if (similarity >= threshold) {\n isDuplicate = true;\n duplicateIndex = i;\n break;\n }\n }\n\n if (!isDuplicate) {\n result.push(source);\n } else if (keepStrategy === 'highest-score' && duplicateIndex >= 0) {\n const current = result[duplicateIndex];\n if (current && (source.score ?? 0) > (current.score ?? 0)) {\n result[duplicateIndex] = source;\n }\n }\n }\n\n return result;\n}\n\n/**\n * Merge duplicate sources, combining their metadata.\n *\n * @example\n * ```typescript\n * const merged = mergeSources(sources, { strategy: 'url' });\n * ```\n */\nexport function mergeSources(\n sources: GroundingSource[],\n options: { strategy?: DeduplicationStrategy } = {},\n): GroundingSource[] {\n const { strategy = 'id' } = options;\n const groups = new Map<string, GroundingSource[]>();\n\n for (const source of sources) {\n let key: string;\n switch (strategy) {\n case 'url':\n key = source.url ? normalizeUrl(source.url) : source.id;\n break;\n case 'content':\n key = hashContent(source.content);\n break;\n case 'hybrid': {\n const base = source.url ? normalizeUrl(source.url) : source.id;\n key = `${base}:${hashContent(source.content)}`;\n break;\n }\n case 'id':\n default:\n key = source.id;\n }\n\n const group = groups.get(key) ?? [];\n group.push(source);\n groups.set(key, group);\n }\n\n return Array.from(groups.values())\n .filter(group => group.length > 0)\n .map(group => {\n const first = group[0] as GroundingSource;\n if (group.length === 1) return first;\n\n // Merge group - highest score, combined metadata\n const merged = group.reduce((acc, s) => {\n return {\n ...acc,\n score: Math.max(acc.score ?? 0, s.score ?? 0),\n metadata: { ...acc.metadata, ...s.metadata },\n };\n }, first);\n\n return merged;\n });\n}\n\n// -----------------------------------------------------------------------------\n// Filtering Functions\n// -----------------------------------------------------------------------------\n\n/**\n * Filter sources by relevance score.\n *\n * @example\n * ```typescript\n * const topSources = filterByScore(sources, { minScore: 0.7, limit: 5 });\n * ```\n */\nexport function filterByScore(\n sources: GroundingSource[],\n options: { minScore?: number; maxScore?: number; limit?: number } = {},\n): GroundingSource[] {\n const { minScore = 0, maxScore = 1, limit } = options;\n\n let filtered = sources.filter(s => {\n const score = s.score ?? 0;\n return score >= minScore && score <= maxScore;\n });\n\n // Sort by score descending\n filtered.sort((a, b) => (b.score ?? 0) - (a.score ?? 0));\n\n if (limit && limit > 0) {\n filtered = filtered.slice(0, limit);\n }\n\n return filtered;\n}\n\n/**\n * Filter sources by metadata fields.\n *\n * @example\n * ```typescript\n * const filtered = filterByMetadata(sources, {\n * requiredFields: ['author', 'date'],\n * matchValues: { category: 'science' }\n * });\n * ```\n */\nexport function filterByMetadata(\n sources: GroundingSource[],\n options: {\n requiredFields?: string[];\n matchValues?: Record<string, unknown>;\n } = {},\n): GroundingSource[] {\n const { requiredFields = [], matchValues = {} } = options;\n\n return sources.filter(source => {\n const metadata = source.metadata ?? {};\n\n // Check required fields\n for (const field of requiredFields) {\n if (!(field in metadata)) return false;\n }\n\n // Check value matches\n for (const [key, value] of Object.entries(matchValues)) {\n if (metadata[key] !== value) return false;\n }\n\n return true;\n });\n}\n\n/**\n * Select top N sources, optionally with diversity.\n *\n * @example\n * ```typescript\n * const top = selectTopSources(sources, 5, { diversify: true });\n * ```\n */\nexport function selectTopSources(\n sources: GroundingSource[],\n limit: number,\n options: { diversify?: boolean; diversityThreshold?: number } = {},\n): GroundingSource[] {\n const { diversify = false, diversityThreshold = 0.7 } = options;\n\n // Sort by score\n const sorted = [...sources].sort((a, b) => (b.score ?? 0) - (a.score ?? 0));\n\n if (!diversify) {\n return sorted.slice(0, limit);\n }\n\n // Maximal marginal relevance-style selection\n const selected: GroundingSource[] = [];\n\n for (const candidate of sorted) {\n if (selected.length >= limit) break;\n\n // Check if too similar to already selected\n const tooSimilar = selected.some(\n s => computeTextSimilarity(candidate.content, s.content) > diversityThreshold,\n );\n\n if (!tooSimilar) {\n selected.push(candidate);\n }\n }\n\n return selected;\n}\n\n/**\n * Group sources by a metadata field or custom function.\n *\n * @example\n * ```typescript\n * const byCategory = groupSources(sources, s => s.metadata?.category ?? 'other');\n * ```\n */\nexport function groupSources<K extends string>(\n sources: GroundingSource[],\n keyFn: (source: GroundingSource) => K,\n): Map<K, GroundingSource[]> {\n const groups = new Map<K, GroundingSource[]>();\n\n for (const source of sources) {\n const key = keyFn(source);\n const group = groups.get(key) ?? [];\n group.push(source);\n groups.set(key, group);\n }\n\n return groups;\n}\n\n// -----------------------------------------------------------------------------\n// Formatting Functions\n// -----------------------------------------------------------------------------\n\n/**\n * Format sources as a bibliography string.\n *\n * @example\n * ```typescript\n * const bib = formatAsBibliography(sources, { style: 'apa' });\n * console.log(bib);\n * // [1] Author. Title. URL\n * // [2] Author. Title. URL\n * ```\n */\nexport function formatAsBibliography(\n sources: GroundingSource[],\n options: { style?: 'simple' | 'apa' | 'numbered' } = {},\n): string {\n const { style = 'numbered' } = options;\n\n return sources\n .map((source, index) => {\n const title = source.title ?? 'Untitled';\n const url = source.url ?? '';\n\n switch (style) {\n case 'apa':\n const author = (source.metadata?.author as string) ?? 'Unknown';\n const year = (source.metadata?.year as string) ?? 'n.d.';\n return `${author} (${year}). ${title}. ${url}`;\n\n case 'simple':\n return `${title}${url ? ` - ${url}` : ''}`;\n\n case 'numbered':\n default: {\n const author = source.metadata?.author;\n const authorPrefix =\n typeof author === 'string' && author.trim().length > 0 ? `${author.trim()}. ` : '';\n return `[${index + 1}] ${authorPrefix}${title}${url ? `. ${url}` : ''}`;\n }\n }\n })\n .join('\\n');\n}\n\n/**\n * Format sources as inline citations.\n *\n * @example\n * ```typescript\n * const citations = formatAsInlineCitations(sources);\n * // Returns: \"[1], [2], [3]\"\n * ```\n */\nexport function formatAsInlineCitations(\n sources: GroundingSource[],\n options: { separator?: string; format?: 'numbered' | 'id' | 'title' } = {},\n): string {\n const { separator = ', ', format = 'numbered' } = options;\n\n return sources\n .map((source, index) => {\n switch (format) {\n case 'id':\n return `[${source.id}]`;\n case 'title':\n return `[${source.title ?? source.id}]`;\n case 'numbered':\n default:\n return `[${index + 1}]`;\n }\n })\n .join(separator);\n}\n\n/**\n * Convert sources to context string for LLM prompts.\n *\n * @example\n * ```typescript\n * const context = sourcesToContext(sources, { includeMetadata: true });\n * ```\n */\nexport function sourcesToContext(\n sources: GroundingSource[],\n options: {\n includeMetadata?: boolean;\n includeScore?: boolean;\n maxLength?: number;\n separator?: string;\n } = {},\n): string {\n const {\n includeMetadata = false,\n includeScore = false,\n maxLength = 50000,\n separator = '\\n\\n---\\n\\n',\n } = options;\n\n let totalLength = 0;\n const parts: string[] = [];\n\n for (const source of sources) {\n let part = '';\n\n if (source.title) {\n part += `# ${source.title}\\n`;\n }\n\n if (includeScore && source.score !== undefined) {\n part += `Relevance: ${(source.score * 100).toFixed(0)}%\\n`;\n }\n\n if (source.url) {\n part += `Source: ${source.url}\\n`;\n }\n\n if (includeMetadata && source.metadata) {\n const meta = Object.entries(source.metadata)\n .map(([k, v]) => `${k}: ${v}`)\n .join(', ');\n part += `Metadata: ${meta}\\n`;\n }\n\n part += `\\n${source.content}`;\n\n if (totalLength + part.length > maxLength) {\n // Truncate this source\n const remaining = maxLength - totalLength;\n if (remaining > 100) {\n parts.push(`${part.slice(0, remaining)}...`);\n }\n break;\n }\n\n parts.push(part);\n totalLength += part.length + separator.length;\n }\n\n return parts.join(separator);\n}\n\n// -----------------------------------------------------------------------------\n// Utility Functions\n// -----------------------------------------------------------------------------\n\nfunction computeTextSimilarity(text1: string, text2: string): number {\n const words1 = new Set(tokenize(text1));\n const words2 = new Set(tokenize(text2));\n\n if (words1.size === 0 || words2.size === 0) return 0;\n\n let intersection = 0;\n for (const word of words1) {\n if (words2.has(word)) intersection++;\n }\n\n const union = words1.size + words2.size - intersection;\n return union > 0 ? intersection / union : 0;\n}\n\nfunction tokenize(text: string): string[] {\n return text\n .toLowerCase()\n .replace(/[^\\w\\s]/g, ' ')\n .split(/\\s+/)\n .filter(w => w.length > 2);\n}\n\nfunction isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction normalizeUrl(url: string): string {\n try {\n const parsed = new URL(url);\n // Remove trailing slash, lowercase host\n return `${parsed.protocol}//${parsed.host.toLowerCase()}${parsed.pathname.replace(/\\/$/, '')}`;\n } catch {\n return url.toLowerCase();\n }\n}\n\nfunction hashContent(content: string): string {\n let hash = 5381;\n for (let i = 0; i < content.length; i++) {\n const code = content.charCodeAt(i);\n hash = (hash * 33) ^ code;\n }\n return `content-${hash >>> 0}`;\n}\n\nfunction inferSourceType(source: GroundingSource): SourceWithProvenance['sourceType'] {\n if (!source.url) return 'unknown';\n\n const url = source.url.toLowerCase();\n\n if (url.includes('api.') || url.includes('/api/')) return 'api';\n if (url.includes('.pdf') || url.includes('/doc')) return 'document';\n if (url.includes('database') || url.includes('db.')) return 'database';\n if (url.startsWith('http')) return 'webpage';\n\n return 'unknown';\n}\n\nfunction checkDuplicate(\n source: GroundingSource,\n existing: GroundingSource[],\n strategy: DeduplicationStrategy,\n): boolean {\n switch (strategy) {\n case 'id':\n return existing.some(e => e.id === source.id);\n case 'url':\n if (!source.url) return false;\n const normalizedUrl = normalizeUrl(source.url);\n return existing.some(e => e.url && normalizeUrl(e.url) === normalizedUrl);\n case 'content':\n return existing.some(e => computeTextSimilarity(source.content, e.content) > 0.9);\n case 'hybrid': {\n const idMatch = existing.some(e => e.id === source.id);\n const sourceUrl = source.url;\n const urlMatch = sourceUrl\n ? existing.some(e => e.url && normalizeUrl(e.url) === normalizeUrl(sourceUrl))\n : false;\n const contentMatch = existing.some(\n e => computeTextSimilarity(source.content, e.content) > 0.9,\n );\n return idMatch || urlMatch || contentMatch;\n }\n default:\n return false;\n }\n}\n","/**\n * @fileoverview Tool masking utilities for context-aware tool selection.\n * @module @od-oneapp/ai-platform/context-engineering\n */\n\nimport type { SDKTool } from '../../shared';\n\n/**\n * Tool masking rule.\n */\nexport interface ToolMaskRule {\n /** Rule name for debugging */\n name: string;\n /** Tool patterns to match (glob-like) */\n toolPatterns: string[];\n /** Condition to check */\n condition: (context: ToolMaskContext) => boolean;\n /** Action when condition is met */\n action: 'hide' | 'disable' | 'require-approval';\n}\n\n/**\n * Context for tool masking decisions.\n */\nexport interface ToolMaskContext {\n /** User ID */\n userId?: string;\n /** User roles */\n roles?: string[];\n /** Current conversation turn */\n turn?: number;\n /** Current iteration in agentic loop */\n iteration?: number;\n /** Previous tool calls */\n previousToolCalls?: string[];\n /** Custom context data */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Result of tool masking.\n */\nexport interface ToolMaskResult {\n /** Masked tools (subset of input) */\n tools: Record<string, SDKTool>;\n /**\n * Active tools array - SDK v6 pattern.\n * Use this with generateText/streamText instead of filtering tools.\n * The SDK will show all tools to the model but only allow calling active ones.\n */\n activeTools: string[];\n /** Tools that were hidden */\n hidden: string[];\n /** Tools that were disabled */\n disabled: string[];\n /** Tools requiring approval */\n requiresApproval: string[];\n /** Applied rules */\n appliedRules: string[];\n}\n\n/**\n * Creates a tool masker with rules.\n *\n * @param rules - Masking rules\n * @returns Tool masker function\n *\n * @example\n * ```ts\n * const maskTools = createToolMasker([\n * {\n * name: 'hide-admin-tools',\n * toolPatterns: ['admin*', 'delete*'],\n * condition: (ctx) => !ctx.roles?.includes('admin'),\n * action: 'hide',\n * },\n * {\n * name: 'limit-iterations',\n * toolPatterns: ['*'],\n * condition: (ctx) => (ctx.iteration ?? 0) > 5,\n * action: 'disable',\n * },\n * ]);\n *\n * const result = maskTools(allTools, { userId: 'user-1', roles: ['user'] });\n * ```\n */\nexport function createToolMasker(rules: ToolMaskRule[]) {\n return function maskTools(\n tools: Record<string, SDKTool>,\n context: ToolMaskContext,\n ): ToolMaskResult {\n const result: ToolMaskResult = {\n tools: { ...tools },\n activeTools: Object.keys(tools), // Start with all tools active\n hidden: [],\n disabled: [],\n requiresApproval: [],\n appliedRules: [],\n };\n\n outer: for (const toolName of Object.keys(tools)) {\n for (const rule of rules) {\n // Check if tool matches pattern\n if (!matchesPattern(toolName, rule.toolPatterns)) {\n continue;\n }\n\n // Check if condition is met\n if (!rule.condition(context)) {\n continue;\n }\n\n result.appliedRules.push(`${rule.name}:${toolName}`);\n\n switch (rule.action) {\n case 'hide':\n delete result.tools[toolName];\n result.activeTools = result.activeTools.filter(t => t !== toolName);\n result.hidden.push(toolName);\n // Short-circuit: once hidden, no need to evaluate further rules for this tool\n continue outer;\n case 'disable':\n // Keep tool visible but remove from activeTools (SDK v6 pattern)\n result.activeTools = result.activeTools.filter(t => t !== toolName);\n result.disabled.push(toolName);\n break;\n case 'require-approval':\n result.requiresApproval.push(toolName);\n break;\n }\n }\n }\n\n return result;\n };\n}\n\n/**\n * Checks if a tool name matches any of the patterns.\n */\nfunction matchesPattern(toolName: string, patterns: string[]): boolean {\n return patterns.some(pattern => {\n if (pattern === '*') return true;\n if (pattern.endsWith('*')) {\n return toolName.startsWith(pattern.slice(0, -1));\n }\n if (pattern.startsWith('*')) {\n return toolName.endsWith(pattern.slice(1));\n }\n return toolName === pattern;\n });\n}\n\n/**\n * Pre-built masking rules.\n */\nexport const MaskingRules = {\n /** Hide tools after N iterations */\n limitIterations: (maxIterations: number, toolPatterns: string[] = ['*']): ToolMaskRule => ({\n name: 'limit-iterations',\n toolPatterns,\n condition: ctx => (ctx.iteration ?? 0) >= maxIterations,\n action: 'hide',\n }),\n\n /** Hide tools unless user has role */\n requireRole: (role: string, toolPatterns: string[]): ToolMaskRule => ({\n name: `require-role-${role}`,\n toolPatterns,\n condition: ctx => !ctx.roles?.includes(role),\n action: 'hide',\n }),\n\n /** Prevent repeated tool calls */\n preventRepeated: (toolPatterns: string[], maxCalls: number = 1): ToolMaskRule => ({\n name: 'prevent-repeated',\n toolPatterns,\n condition: ctx => {\n const calls = ctx.previousToolCalls ?? [];\n for (const pattern of toolPatterns) {\n const count = calls.filter(c => matchesPattern(c, [pattern])).length;\n if (count >= maxCalls) return true;\n }\n return false;\n },\n action: 'hide',\n }),\n\n /** Require approval for dangerous tools */\n requireApproval: (toolPatterns: string[]): ToolMaskRule => ({\n name: 'require-approval',\n toolPatterns,\n condition: () => true,\n action: 'require-approval',\n }),\n};\n\n/**\n * Creates progressive tool disclosure.\n * Reveals tools based on conversation progress.\n *\n * @param stages - Tool revelation stages\n * @returns Tool masker\n */\nexport function createProgressiveDisclosure(\n stages: Array<{ turn: number; tools: string[] }>,\n): (tools: Record<string, SDKTool>, context: ToolMaskContext) => ToolMaskResult {\n // Sort stages by turn\n const sortedStages = [...stages].sort((a, b) => a.turn - b.turn);\n\n return (tools: Record<string, SDKTool>, context: ToolMaskContext) => {\n const currentTurn = context.turn ?? 0;\n\n // Find all tools available at current turn\n const availableTools = new Set<string>();\n for (const stage of sortedStages) {\n if (stage.turn <= currentTurn) {\n stage.tools.forEach(t => availableTools.add(t));\n }\n }\n\n const result: ToolMaskResult = {\n tools: {},\n activeTools: [],\n hidden: [],\n disabled: [],\n requiresApproval: [],\n appliedRules: [],\n };\n\n for (const [name, tool] of Object.entries(tools)) {\n if (availableTools.has(name) || availableTools.has('*')) {\n result.tools[name] = tool;\n result.activeTools.push(name);\n } else {\n result.hidden.push(name);\n result.appliedRules.push(`progressive:${name}`);\n }\n }\n\n return result;\n };\n}\n\n// -----------------------------------------------------------------------------\n// Active Tools Utilities (SDK v6 Pattern)\n// -----------------------------------------------------------------------------\n\n/**\n * Creates an activeTools selector for SDK v6.\n * Instead of filtering the tools object, use activeTools parameter.\n *\n * @example\n * ```typescript\n * const selector = createActiveToolsSelector(allTools, [\n * MaskingRules.requireRole('admin', ['delete*', 'admin*']),\n * MaskingRules.limitIterations(5),\n * ]);\n *\n * // Use with generateText\n * const result = await generateText({\n * model,\n * tools: allTools, // Pass ALL tools\n * activeTools: selector(context), // But only activate some\n * prompt: 'Do something',\n * });\n * ```\n */\nexport function createActiveToolsSelector(\n tools: Record<string, SDKTool>,\n rules: ToolMaskRule[],\n): (context: ToolMaskContext) => string[] {\n const masker = createToolMasker(rules);\n\n return (context: ToolMaskContext) => {\n const result = masker(tools, context);\n return result.activeTools;\n };\n}\n\n/**\n * Simple phase-based tool activation.\n * Different tools are active in different phases of execution.\n *\n * @example\n * ```typescript\n * const activator = createPhasedToolActivation({\n * planning: ['search', 'browse'],\n * execution: ['code', 'file_write', 'run_command'],\n * review: ['code_review', 'test'],\n * });\n *\n * const result = await generateText({\n * model,\n * tools: allTools,\n * activeTools: activator('planning'),\n * prompt: 'Research the topic',\n * });\n * ```\n */\nexport function createPhasedToolActivation(\n phases: Record<string, string[]>,\n): (phase: string) => string[] {\n return (phase: string) => phases[phase] ?? [];\n}\n\n/**\n * Context-aware tool activation based on user input analysis.\n *\n * @example\n * ```typescript\n * const activator = createContextualToolActivation([\n * { keywords: ['search', 'find', 'look up'], tools: ['web_search', 'browse'] },\n * { keywords: ['code', 'write', 'implement'], tools: ['code_edit', 'file_write'] },\n * { keywords: ['run', 'execute', 'test'], tools: ['run_command', 'test'] },\n * ]);\n *\n * const activeTools = activator(userQuery);\n * ```\n */\nexport function createContextualToolActivation(\n rules: Array<{ keywords: string[]; tools: string[] }>,\n defaultTools: string[] = [],\n): (input: string) => string[] {\n return (input: string) => {\n const lowerInput = input.toLowerCase();\n const matchedTools = new Set<string>(defaultTools);\n\n for (const rule of rules) {\n if (rule.keywords.some(kw => lowerInput.includes(kw.toLowerCase()))) {\n rule.tools.forEach(t => matchedTools.add(t));\n }\n }\n\n return Array.from(matchedTools);\n };\n}\n","/**\n * @fileoverview Memory utilities for conversation state management.\n * @module @od-oneapp/ai-platform/context-engineering\n */\n\nimport type { CoreMessageRole } from '../../shared';\n\n/**\n * Message for memory storage.\n * Uses SDK-aligned CoreMessageRole type.\n */\nexport interface MemoryMessage {\n role: CoreMessageRole;\n content: string;\n timestamp?: number;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Memory entry with metadata.\n */\nexport interface MemoryEntry {\n id: string;\n messages: MemoryMessage[];\n summary?: string;\n createdAt: number;\n updatedAt: number;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Memory storage interface.\n */\nexport interface MemoryStore {\n /** Get memory by key */\n get(key: string): Promise<MemoryEntry | undefined>;\n /** Set memory entry */\n set(key: string, entry: MemoryEntry): Promise<void>;\n /** Delete memory */\n delete(key: string): Promise<boolean>;\n /** List all keys */\n keys(): Promise<string[]>;\n /** Clear all memory */\n clear(): Promise<void>;\n}\n\n/**\n * In-memory store implementation.\n */\nexport class InMemoryStore implements MemoryStore {\n private store = new Map<string, MemoryEntry>();\n private maxEntries?: number;\n private accessOrder: string[] = []; // Track access order for LRU eviction\n\n constructor(options?: { maxEntries?: number }) {\n this.maxEntries = options?.maxEntries;\n }\n\n async get(key: string): Promise<MemoryEntry | undefined> {\n const entry = this.store.get(key);\n if (entry && this.maxEntries) {\n // Update access order for LRU\n const index = this.accessOrder.indexOf(key);\n if (index >= 0) {\n this.accessOrder.splice(index, 1);\n }\n this.accessOrder.push(key);\n }\n return entry;\n }\n\n async set(key: string, entry: MemoryEntry): Promise<void> {\n // Update access order\n if (this.maxEntries) {\n const index = this.accessOrder.indexOf(key);\n if (index >= 0) {\n this.accessOrder.splice(index, 1);\n }\n this.accessOrder.push(key);\n }\n\n this.store.set(key, entry);\n\n // Simple LRU: evict oldest when over limit\n if (this.maxEntries && this.store.size > this.maxEntries) {\n const oldest = this.accessOrder.shift();\n if (oldest) {\n this.store.delete(oldest);\n }\n }\n }\n\n async delete(key: string): Promise<boolean> {\n const deleted = this.store.delete(key);\n if (deleted && this.maxEntries) {\n const index = this.accessOrder.indexOf(key);\n if (index >= 0) {\n this.accessOrder.splice(index, 1);\n }\n }\n return deleted;\n }\n\n async keys(): Promise<string[]> {\n return Array.from(this.store.keys());\n }\n\n async clear(): Promise<void> {\n this.store.clear();\n this.accessOrder = [];\n }\n}\n\n/**\n * Memory manager configuration.\n */\nexport interface MemoryManagerConfig {\n /** Storage backend */\n store: MemoryStore;\n /** Maximum messages to keep */\n maxMessages?: number;\n /** Maximum tokens to keep (approximate) */\n maxTokens?: number;\n /** Enable automatic summarization */\n enableSummarization?: boolean;\n /** Summarization function */\n summarize?: (messages: MemoryMessage[]) => Promise<string>;\n}\n\n/**\n * Creates a memory manager for conversation state.\n *\n * @param config - Memory manager configuration\n * @returns Memory manager\n *\n * @example\n * ```ts\n * const memory = createMemoryManager({\n * store: new InMemoryStore(),\n * maxMessages: 100,\n * enableSummarization: true,\n * summarize: async (messages) => {\n * // Use LLM to summarize\n * return 'Summary of conversation...';\n * },\n * });\n *\n * await memory.addMessage('session-1', { role: 'user', content: 'Hello' });\n * const context = await memory.getContext('session-1', 10);\n * ```\n */\nexport function createMemoryManager(config: MemoryManagerConfig) {\n const { store, maxMessages = 100, maxTokens, enableSummarization = false, summarize } = config;\n void maxTokens;\n\n return {\n /**\n * Gets or creates a memory entry.\n */\n async getOrCreate(key: string): Promise<MemoryEntry> {\n const existing = await store.get(key);\n if (existing) return existing;\n\n const entry: MemoryEntry = {\n id: key,\n messages: [],\n createdAt: Date.now(),\n updatedAt: Date.now(),\n };\n await store.set(key, entry);\n return entry;\n },\n\n /**\n * Adds a message to memory.\n */\n async addMessage(key: string, message: MemoryMessage): Promise<void> {\n const entry = await this.getOrCreate(key);\n\n entry.messages.push({\n ...message,\n timestamp: message.timestamp ?? Date.now(),\n });\n entry.updatedAt = Date.now();\n\n // Enforce max messages\n if (entry.messages.length > maxMessages) {\n const excess = entry.messages.splice(0, entry.messages.length - maxMessages);\n\n // Optionally summarize removed messages\n if (enableSummarization && summarize && excess.length > 0) {\n const newSummary = await summarize(excess);\n entry.summary = entry.summary ? `${entry.summary}\\n\\n${newSummary}` : newSummary;\n }\n }\n\n await store.set(key, entry);\n },\n\n /**\n * Gets context for LLM including summary and recent messages.\n */\n async getContext(\n key: string,\n recentCount: number = 10,\n ): Promise<{\n summary?: string;\n messages: MemoryMessage[];\n }> {\n const entry = await store.get(key);\n if (!entry) {\n return { messages: [] };\n }\n\n return {\n summary: entry.summary,\n messages: entry.messages.slice(-recentCount),\n };\n },\n\n /**\n * Gets all messages.\n */\n async getMessages(key: string): Promise<MemoryMessage[]> {\n const entry = await store.get(key);\n return entry?.messages ?? [];\n },\n\n /**\n * Clears memory for a key.\n */\n async clear(key: string): Promise<void> {\n await store.delete(key);\n },\n\n /**\n * Updates metadata.\n */\n async updateMetadata(key: string, metadata: Record<string, unknown>): Promise<void> {\n const entry = await this.getOrCreate(key);\n entry.metadata = { ...entry.metadata, ...metadata };\n entry.updatedAt = Date.now();\n await store.set(key, entry);\n },\n\n /**\n * Searches messages by content.\n */\n async search(key: string, query: string): Promise<MemoryMessage[]> {\n const entry = await store.get(key);\n if (!entry) return [];\n\n const lowerQuery = query.toLowerCase();\n return entry.messages.filter(m => m.content.toLowerCase().includes(lowerQuery));\n },\n };\n}\n\n/**\n * Sliding window context builder.\n * Keeps recent messages within token/message limits.\n *\n * @deprecated Use createKVCachePreservingContext for better performance.\n * This version breaks KV-cache by removing messages from the start.\n */\nexport function createSlidingWindowContext(config: {\n maxMessages?: number;\n maxTokens?: number;\n estimateTokens?: (text: string) => number;\n}) {\n const {\n maxMessages = 20,\n maxTokens = 4000,\n estimateTokens = text => Math.ceil(text.length / 4), // Rough estimate\n } = config;\n\n return function buildContext(messages: MemoryMessage[]): MemoryMessage[] {\n const result: MemoryMessage[] = [];\n let tokenCount = 0;\n\n // Process from most recent to oldest\n for (let i = messages.length - 1; i >= 0; i--) {\n const msg = messages[i];\n if (!msg) continue;\n\n const tokens = estimateTokens(msg.content);\n\n if (result.length >= maxMessages) break;\n if (tokenCount + tokens > maxTokens) break;\n\n result.unshift(msg);\n tokenCount += tokens;\n }\n\n return result;\n };\n}\n\n/**\n * KV-cache preserving context builder.\n *\n * SDK v6 pattern: Always keep system prompt at the very start to maximize\n * KV-cache hits. When trimming, remove messages from the middle, not the start.\n *\n * This is critical for performance with Claude and other models that support\n * prompt caching - the cache key is based on the prefix of the prompt.\n *\n * @example\n * ```typescript\n * const buildContext = createKVCachePreservingContext({\n * maxTokens: 100000,\n * systemPrompt: 'You are a helpful assistant...',\n * });\n *\n * // Messages are trimmed from middle, keeping system prompt at start\n * const contextMessages = buildContext(allMessages);\n * ```\n */\nexport function createKVCachePreservingContext(config: {\n /** Maximum tokens to keep */\n maxTokens?: number;\n /** Maximum messages to keep */\n maxMessages?: number;\n /** System prompt (always kept at start) */\n systemPrompt?: string;\n /** Token estimator */\n estimateTokens?: (text: string) => number;\n /** Priority scorer for messages (higher = more important to keep) */\n messagePriority?: (message: MemoryMessage, index: number, total: number) => number;\n}) {\n const {\n maxTokens = 100000,\n maxMessages = 100,\n systemPrompt,\n estimateTokens = text => Math.ceil(text.length / 4),\n messagePriority,\n } = config;\n\n // Default priority: keep first few and last few messages\n const defaultPriority = (message: MemoryMessage, index: number, total: number): number => {\n void message;\n // First 2 messages: highest priority (context establishment)\n if (index < 2) return 100;\n // Last 5 messages: high priority (recent context)\n if (index >= total - 5) return 90 - (total - 1 - index);\n // Middle messages: lower priority based on recency\n return 50 - (total - 1 - index) * 0.5;\n };\n\n const getPriority = messagePriority ?? defaultPriority;\n\n return function buildContext(messages: MemoryMessage[]): {\n systemPrompt?: string;\n messages: MemoryMessage[];\n trimmedCount: number;\n totalTokens: number;\n } {\n const systemTokens = systemPrompt ? estimateTokens(systemPrompt) : 0;\n const availableMessages = maxMessages;\n\n // Calculate tokens for each message\n const messagesWithTokens = messages.map((msg, index) => ({\n message: msg,\n tokens: estimateTokens(msg.content),\n priority: getPriority(msg, index, messages.length),\n originalIndex: index,\n }));\n\n // Sort by priority (descending)\n const sorted = [...messagesWithTokens].sort((a, b) => b.priority - a.priority);\n\n // Select messages until we hit limits\n const selected: typeof messagesWithTokens = [];\n let totalTokens = systemTokens;\n\n for (const item of sorted) {\n if (selected.length >= availableMessages) break;\n if (totalTokens + item.tokens > maxTokens) continue;\n\n selected.push(item);\n totalTokens += item.tokens;\n }\n\n // Re-sort by original index to maintain conversation order\n selected.sort((a, b) => a.originalIndex - b.originalIndex);\n\n return {\n systemPrompt,\n messages: selected.map(s => s.message),\n trimmedCount: messages.length - selected.length,\n totalTokens,\n };\n };\n}\n\n/**\n * Immutable context builder that only appends.\n * Never removes messages from the start, maximizing KV-cache hits.\n *\n * When context gets too long, returns a signal to summarize and reset.\n *\n * @example\n * ```typescript\n * const contextBuilder = createImmutableContextBuilder({\n * systemPrompt: 'You are helpful...',\n * maxTokens: 100000,\n * compactionThreshold: 80000, // Start warning at 80%\n * });\n *\n * const context = contextBuilder.append(newMessage);\n * if (context.shouldCompact) {\n * // Summarize and start fresh context\n * const summary = await summarize(context.messages);\n * contextBuilder.reset(summary);\n * }\n * ```\n */\nexport function createImmutableContextBuilder(config: {\n systemPrompt?: string;\n maxTokens?: number;\n compactionThreshold?: number;\n estimateTokens?: (text: string) => number;\n}) {\n const {\n systemPrompt,\n maxTokens = 100000,\n compactionThreshold = maxTokens * 0.8,\n estimateTokens = text => Math.ceil(text.length / 4),\n } = config;\n\n const systemTokens = systemPrompt ? estimateTokens(systemPrompt) : 0;\n let messages: MemoryMessage[] = [];\n let totalTokens = systemTokens;\n\n return {\n /** Append a message */\n append(message: MemoryMessage): {\n systemPrompt?: string;\n messages: MemoryMessage[];\n totalTokens: number;\n shouldCompact: boolean;\n isFull: boolean;\n } {\n const msgTokens = estimateTokens(message.content);\n totalTokens += msgTokens;\n messages.push(message);\n\n return {\n systemPrompt,\n messages: [...messages],\n totalTokens,\n shouldCompact: totalTokens >= compactionThreshold,\n isFull: totalTokens >= maxTokens,\n };\n },\n\n /** Get current context */\n getContext(): {\n systemPrompt?: string;\n messages: MemoryMessage[];\n totalTokens: number;\n } {\n return {\n systemPrompt,\n messages: [...messages],\n totalTokens,\n };\n },\n\n /** Reset with optional summary as first message */\n reset(summary?: string): void {\n messages = [];\n totalTokens = systemTokens;\n\n if (summary) {\n const summaryMessage: MemoryMessage = {\n role: 'system',\n content: `Previous conversation summary:\\n${summary}`,\n timestamp: Date.now(),\n };\n messages.push(summaryMessage);\n totalTokens += estimateTokens(summaryMessage.content);\n }\n },\n\n /** Get current token count */\n get tokenCount(): number {\n return totalTokens;\n },\n\n /** Get message count */\n get messageCount(): number {\n return messages.length;\n },\n };\n}\n\n/**\n * Creates a compacting memory that summarizes old messages.\n */\nexport function createCompactingMemory(config: {\n store: MemoryStore;\n summarize: (messages: MemoryMessage[]) => Promise<string>;\n compactThreshold?: number;\n keepRecent?: number;\n maxMessages?: number;\n maxTokens?: number;\n enableSummarization?: boolean;\n}) {\n const {\n store,\n summarize,\n compactThreshold = 50,\n keepRecent = 10,\n maxMessages,\n maxTokens,\n enableSummarization,\n } = config;\n\n return {\n // Forward configuration to base manager\n ...createMemoryManager({\n store,\n maxMessages,\n maxTokens,\n enableSummarization,\n summarize,\n }),\n\n /**\n * Compacts memory by summarizing old messages.\n */\n async compact(key: string): Promise<void> {\n const entry = await store.get(key);\n if (!entry || entry.messages.length < compactThreshold) {\n return;\n }\n\n // Keep recent messages\n const toKeep = entry.messages.slice(-keepRecent);\n const toSummarize = entry.messages.slice(0, -keepRecent);\n\n // Skip if nothing to summarize\n if (toSummarize.length === 0) {\n return;\n }\n\n // Summarize old messages\n const newSummary = await summarize(toSummarize);\n\n // Update entry\n entry.messages = toKeep;\n entry.summary = entry.summary ? `${entry.summary}\\n\\n${newSummary}` : newSummary;\n entry.updatedAt = Date.now();\n\n await store.set(key, entry);\n },\n };\n}\n","/**\n * @fileoverview Error handling and recovery utilities for AI agents.\n * @module @od-oneapp/ai-platform/context-engineering\n */\n\n/**\n * AI-specific error types.\n */\nexport type AIErrorType =\n | 'rate-limit'\n | 'context-length'\n | 'content-filter'\n | 'timeout'\n | 'api-error'\n | 'tool-error'\n | 'validation'\n | 'unknown';\n\n/**\n * AI error with typed classification.\n */\nexport class AIError extends Error {\n readonly type: AIErrorType;\n readonly retryable: boolean;\n readonly retryAfter?: number;\n readonly details?: Record<string, unknown>;\n\n constructor(\n message: string,\n type: AIErrorType,\n options?: {\n retryable?: boolean;\n retryAfter?: number;\n details?: Record<string, unknown>;\n cause?: Error;\n },\n ) {\n super(message, { cause: options?.cause });\n this.name = 'AIError';\n this.type = type;\n this.retryable = options?.retryable ?? isRetryableByDefault(type);\n this.retryAfter = options?.retryAfter;\n this.details = options?.details;\n }\n}\n\n/**\n * Determines if an error type is retryable by default.\n */\nfunction isRetryableByDefault(type: AIErrorType): boolean {\n switch (type) {\n case 'rate-limit':\n case 'timeout':\n case 'api-error':\n return true;\n case 'context-length':\n case 'content-filter':\n case 'tool-error':\n case 'validation':\n case 'unknown':\n return false;\n }\n}\n\n/**\n * Classifies an error into an AIError type.\n */\nexport function classifyError(error: unknown): AIError {\n if (error instanceof AIError) {\n return error;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n const cause = error instanceof Error ? error : undefined;\n\n // Rate limit detection\n if (\n message.includes('rate limit') ||\n message.includes('429') ||\n message.includes('too many requests')\n ) {\n const retryAfter = extractRetryAfter(message);\n return new AIError(message, 'rate-limit', { retryable: true, retryAfter, cause });\n }\n\n // Context length detection\n if (\n message.includes('context length') ||\n message.includes('maximum context') ||\n message.includes('token limit') ||\n message.includes('too long')\n ) {\n return new AIError(message, 'context-length', { retryable: false, cause });\n }\n\n // Content filter detection\n if (\n message.includes('content filter') ||\n message.includes('content policy') ||\n message.includes('safety')\n ) {\n return new AIError(message, 'content-filter', { retryable: false, cause });\n }\n\n // Timeout detection\n if (\n message.includes('timeout') ||\n message.includes('timed out') ||\n message.includes('ETIMEDOUT')\n ) {\n return new AIError(message, 'timeout', { retryable: true, cause });\n }\n\n // API error detection\n if (\n message.includes('500') ||\n message.includes('502') ||\n message.includes('503') ||\n message.includes('API error')\n ) {\n return new AIError(message, 'api-error', { retryable: true, cause });\n }\n\n return new AIError(message, 'unknown', { cause });\n}\n\n/**\n * Extracts retry-after value from error message.\n */\nfunction extractRetryAfter(message: string): number | undefined {\n const match = message.match(/retry.+?(\\d+)\\s*(s|seconds?|ms|milliseconds?)/i);\n if (match?.[1] && match[2]) {\n const value = parseInt(match[1], 10);\n const unit = match[2].toLowerCase();\n return unit.startsWith('ms') ? value : value * 1000;\n }\n return undefined;\n}\n\n/**\n * Recovery strategy configuration.\n */\nexport interface RecoveryStrategy {\n /** Error types this strategy handles */\n errorTypes: AIErrorType[];\n /** Recovery action */\n action: RecoveryAction;\n /** Maximum retries for this strategy */\n maxRetries?: number;\n}\n\n/**\n * Recovery action types.\n */\nexport type RecoveryAction =\n | { type: 'retry'; backoff?: 'exponential' | 'linear' | 'fixed'; baseDelay?: number }\n | { type: 'reduce-context'; factor?: number }\n | { type: 'switch-model'; fallbackModel: string }\n | { type: 'fail'; message?: string }\n | { type: 'custom'; handler: (error: AIError) => Promise<RecoveryResult> };\n\n/**\n * Result of recovery attempt.\n */\nexport interface RecoveryResult {\n /** Whether recovery was successful */\n success: boolean;\n /** Action taken */\n action: string;\n /** Should continue execution */\n continueExecution: boolean;\n /** Modified parameters (e.g., reduced context) */\n modifiedParams?: Record<string, unknown>;\n /** Error if recovery failed */\n error?: Error;\n}\n\n/**\n * Creates an error recovery handler.\n *\n * @param strategies - Recovery strategies in priority order\n * @returns Recovery handler\n *\n * @example\n * ```ts\n * const recover = createErrorRecovery([\n * {\n * errorTypes: ['rate-limit'],\n * action: { type: 'retry', backoff: 'exponential', baseDelay: 1000 },\n * maxRetries: 3,\n * },\n * {\n * errorTypes: ['context-length'],\n * action: { type: 'reduce-context', factor: 0.5 },\n * },\n * {\n * errorTypes: ['content-filter'],\n * action: { type: 'fail', message: 'Content blocked by safety filters' },\n * },\n * ]);\n *\n * try {\n * await generateText(...);\n * } catch (e) {\n * const result = await recover(e, { attempt: 1 });\n * if (result.continueExecution) {\n * // Retry with modified params\n * }\n * }\n * ```\n */\nexport function createErrorRecovery(strategies: RecoveryStrategy[]) {\n const retryCounters = new Map<AIErrorType, number>();\n\n return async function recover(\n error: unknown,\n context: { attempt: number; maxMessages?: number },\n ): Promise<RecoveryResult> {\n const aiError = classifyError(error);\n\n // Find matching strategy\n const strategy = strategies.find(s => s.errorTypes.includes(aiError.type));\n\n if (!strategy) {\n return {\n success: false,\n action: 'none',\n continueExecution: false,\n error: aiError,\n };\n }\n\n // Check retry count\n const currentRetries = retryCounters.get(aiError.type) ?? 0;\n if (strategy.maxRetries !== undefined && currentRetries >= strategy.maxRetries) {\n return {\n success: false,\n action: 'max-retries-exceeded',\n continueExecution: false,\n error: aiError,\n };\n }\n\n // Execute recovery action\n switch (strategy.action.type) {\n case 'retry': {\n retryCounters.set(aiError.type, currentRetries + 1);\n const delay = calculateDelay(strategy.action, context.attempt);\n\n if (aiError.retryAfter) {\n await sleep(aiError.retryAfter);\n } else {\n await sleep(delay);\n }\n\n return {\n success: true,\n action: 'retry',\n continueExecution: true,\n };\n }\n\n case 'reduce-context': {\n const factor = strategy.action.factor ?? 0.5;\n const newMaxMessages = Math.floor((context.maxMessages ?? 20) * factor);\n\n return {\n success: true,\n action: 'reduce-context',\n continueExecution: true,\n modifiedParams: { maxMessages: newMaxMessages },\n };\n }\n\n case 'switch-model': {\n return {\n success: true,\n action: 'switch-model',\n continueExecution: true,\n modifiedParams: { model: strategy.action.fallbackModel },\n };\n }\n\n case 'fail': {\n return {\n success: false,\n action: 'fail',\n continueExecution: false,\n error: new AIError(strategy.action.message ?? aiError.message, aiError.type),\n };\n }\n\n case 'custom': {\n return strategy.action.handler(aiError);\n }\n }\n };\n}\n\n/**\n * Calculates delay based on backoff strategy.\n */\nfunction calculateDelay(\n action: Extract<RecoveryAction, { type: 'retry' }>,\n attempt: number,\n): number {\n const baseDelay = action.baseDelay ?? 1000;\n const backoff = action.backoff ?? 'fixed';\n\n switch (backoff) {\n case 'exponential':\n return baseDelay * Math.pow(2, attempt - 1);\n case 'linear':\n return baseDelay * attempt;\n case 'fixed':\n return baseDelay;\n default: {\n const exhaustiveCheck: never = backoff;\n throw new Error(`Unknown backoff strategy: ${exhaustiveCheck}`);\n }\n }\n}\n\n/**\n * Sleep helper.\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * Default recovery strategies.\n */\nexport const DefaultRecoveryStrategies: RecoveryStrategy[] = [\n {\n errorTypes: ['rate-limit'],\n action: { type: 'retry', backoff: 'exponential', baseDelay: 1000 },\n maxRetries: 5,\n },\n {\n errorTypes: ['timeout'],\n action: { type: 'retry', backoff: 'exponential', baseDelay: 2000 },\n maxRetries: 3,\n },\n {\n errorTypes: ['api-error'],\n action: { type: 'retry', backoff: 'exponential', baseDelay: 1000 },\n maxRetries: 3,\n },\n {\n errorTypes: ['context-length'],\n action: { type: 'reduce-context', factor: 0.5 },\n maxRetries: 2,\n },\n {\n errorTypes: ['content-filter'],\n action: { type: 'fail', message: 'Content was blocked by safety filters' },\n },\n];\n"],"mappings":"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"}