@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,1008 @@
1
+ /**
2
+ * @fileoverview Pluggable cache eviction strategies (LRU, LFU, TTL, FIFO, Adaptive).
3
+ * @module @od-oneapp/ai-platform/caching/strategies
4
+ *
5
+ * Pluggable eviction strategies for cache management:
6
+ * - LRU (Least Recently Used) - evicts least recently accessed items
7
+ * - LFU (Least Frequently Used) - evicts least frequently accessed items
8
+ * - TTL (Time To Live) - evicts items after expiration
9
+ * - FIFO (First In First Out) - evicts oldest items first
10
+ * - Adaptive - dynamically switches between strategies based on access patterns
11
+ *
12
+ * @module @od-oneapp/ai-platform/caching/strategies
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { createLRUStrategy, createAdaptiveStrategy } from '@od-oneapp/ai-platform/caching/strategies';
17
+ *
18
+ * // LRU with max 1000 items
19
+ * const lru = createLRUStrategy({ maxSize: 1000 });
20
+ * lru.set('key1', 'value1');
21
+ * const val = lru.get('key1'); // Updates access time
22
+ *
23
+ * // Adaptive strategy
24
+ * const adaptive = createAdaptiveStrategy({ maxSize: 1000 });
25
+ * ```
26
+ */
27
+
28
+ // -----------------------------------------------------------------------------
29
+ // Types
30
+ // -----------------------------------------------------------------------------
31
+
32
+ /** Eviction strategy type */
33
+ export type EvictionStrategy = 'lru' | 'lfu' | 'ttl' | 'fifo' | 'adaptive';
34
+
35
+ /** Base strategy configuration */
36
+ export interface StrategyConfig {
37
+ /** Maximum number of items */
38
+ maxSize: number;
39
+ /** Default TTL in milliseconds (for TTL strategy) */
40
+ defaultTtlMs?: number;
41
+ /** Callback when item is evicted */
42
+ onEvict?: (key: string, value: unknown) => void;
43
+ }
44
+
45
+ /** Cache entry metadata */
46
+ export interface CacheEntryMeta {
47
+ /** When the entry was created */
48
+ createdAt: number;
49
+ /** When the entry was last accessed */
50
+ lastAccessedAt: number;
51
+ /** Number of times accessed */
52
+ accessCount: number;
53
+ /** When the entry expires (if TTL set) */
54
+ expiresAt?: number;
55
+ /** Size estimate in bytes */
56
+ sizeBytes?: number;
57
+ }
58
+
59
+ /** Cache entry with metadata */
60
+ export interface CacheEntry<T = unknown> {
61
+ key: string;
62
+ value: T;
63
+ meta: CacheEntryMeta;
64
+ }
65
+
66
+ /** Strategy statistics */
67
+ export interface StrategyStats {
68
+ hits: number;
69
+ misses: number;
70
+ evictions: number;
71
+ currentSize: number;
72
+ maxSize: number;
73
+ hitRate: number;
74
+ }
75
+
76
+ /** Eviction strategy interface */
77
+ export interface CacheEvictionStrategy<T = unknown> {
78
+ /** Get item from cache */
79
+ get(key: string): T | undefined;
80
+ /** Set item in cache */
81
+ set(key: string, value: T, ttlMs?: number): void;
82
+ /** Check if key exists */
83
+ has(key: string): boolean;
84
+ /** Delete item from cache */
85
+ delete(key: string): boolean;
86
+ /** Clear all items */
87
+ clear(): void;
88
+ /** Get current size */
89
+ size(): number;
90
+ /** Get all keys */
91
+ keys(): string[];
92
+ /** Get statistics */
93
+ stats(): StrategyStats;
94
+ /** Peek at value without updating access */
95
+ peek(key: string): T | undefined;
96
+ /** Peek at full entry with metadata without updating access */
97
+ peekEntry?(key: string): CacheEntry<T> | undefined;
98
+ }
99
+
100
+ // -----------------------------------------------------------------------------
101
+ // LRU Strategy Implementation
102
+ // -----------------------------------------------------------------------------
103
+
104
+ /**
105
+ * Create an LRU (Least Recently Used) eviction strategy.
106
+ * Evicts the least recently accessed items when capacity is reached.
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * const cache = createLRUStrategy<string>({ maxSize: 100 });
111
+ * cache.set('user:1', 'Alice');
112
+ * cache.get('user:1'); // Returns 'Alice', updates access time
113
+ * ```
114
+ */
115
+ export function createLRUStrategy<T = unknown>(config: StrategyConfig): CacheEvictionStrategy<T> {
116
+ const { maxSize, defaultTtlMs, onEvict } = config;
117
+
118
+ const cache = new Map<string, CacheEntry<T>>();
119
+ let hits = 0;
120
+ let misses = 0;
121
+ let evictions = 0;
122
+
123
+ function evictExpired(): void {
124
+ const now = Date.now();
125
+ for (const [key, entry] of cache) {
126
+ if (entry.meta.expiresAt && now > entry.meta.expiresAt) {
127
+ cache.delete(key);
128
+ onEvict?.(key, entry.value);
129
+ evictions++;
130
+ }
131
+ }
132
+ }
133
+
134
+ function evictLRU(): void {
135
+ if (cache.size === 0) return;
136
+
137
+ let oldestKey: string | null = null;
138
+ let oldestTime = Infinity;
139
+
140
+ for (const [key, entry] of cache) {
141
+ if (entry.meta.lastAccessedAt < oldestTime) {
142
+ oldestTime = entry.meta.lastAccessedAt;
143
+ oldestKey = key;
144
+ }
145
+ }
146
+
147
+ if (oldestKey) {
148
+ const entry = cache.get(oldestKey);
149
+ cache.delete(oldestKey);
150
+ if (entry) onEvict?.(oldestKey, entry.value);
151
+ evictions++;
152
+ }
153
+ }
154
+
155
+ function get(key: string): T | undefined {
156
+ evictExpired();
157
+
158
+ const entry = cache.get(key);
159
+ if (!entry) {
160
+ misses++;
161
+ return undefined;
162
+ }
163
+
164
+ // Check expiration
165
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
166
+ cache.delete(key);
167
+ onEvict?.(key, entry.value);
168
+ evictions++;
169
+ misses++;
170
+ return undefined;
171
+ }
172
+
173
+ // Update access metadata
174
+ entry.meta.lastAccessedAt = Date.now();
175
+ entry.meta.accessCount++;
176
+ hits++;
177
+
178
+ // Move to end (most recently used) by re-inserting
179
+ cache.delete(key);
180
+ cache.set(key, entry);
181
+
182
+ return entry.value;
183
+ }
184
+
185
+ function set(key: string, value: T, ttlMs?: number): void {
186
+ evictExpired();
187
+
188
+ // Evict if at capacity and key is new
189
+ if (!cache.has(key) && cache.size >= maxSize) {
190
+ evictLRU();
191
+ }
192
+
193
+ const now = Date.now();
194
+ const effectiveTtl = ttlMs ?? defaultTtlMs;
195
+
196
+ const entry: CacheEntry<T> = {
197
+ key,
198
+ value,
199
+ meta: {
200
+ createdAt: now,
201
+ lastAccessedAt: now,
202
+ accessCount: 1,
203
+ expiresAt: effectiveTtl ? now + effectiveTtl : undefined,
204
+ },
205
+ };
206
+
207
+ // Delete first to ensure it goes to end
208
+ cache.delete(key);
209
+ cache.set(key, entry);
210
+ }
211
+
212
+ function has(key: string): boolean {
213
+ const entry = cache.get(key);
214
+ if (!entry) return false;
215
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
216
+ cache.delete(key);
217
+ onEvict?.(key, entry.value);
218
+ return false;
219
+ }
220
+ return true;
221
+ }
222
+
223
+ function del(key: string): boolean {
224
+ const entry = cache.get(key);
225
+ if (entry) {
226
+ cache.delete(key);
227
+ return true;
228
+ }
229
+ return false;
230
+ }
231
+
232
+ function clear(): void {
233
+ cache.clear();
234
+ }
235
+
236
+ function size(): number {
237
+ evictExpired();
238
+ return cache.size;
239
+ }
240
+
241
+ function keys(): string[] {
242
+ evictExpired();
243
+ return Array.from(cache.keys());
244
+ }
245
+
246
+ function stats(): StrategyStats {
247
+ const total = hits + misses;
248
+ return {
249
+ hits,
250
+ misses,
251
+ evictions,
252
+ currentSize: cache.size,
253
+ maxSize,
254
+ hitRate: total > 0 ? hits / total : 0,
255
+ };
256
+ }
257
+
258
+ function peek(key: string): T | undefined {
259
+ const entry = cache.get(key);
260
+ if (!entry) return undefined;
261
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
262
+ return undefined;
263
+ }
264
+ return entry.value;
265
+ }
266
+
267
+ function peekEntry(key: string): CacheEntry<T> | undefined {
268
+ const entry = cache.get(key);
269
+ if (!entry) return undefined;
270
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
271
+ return undefined;
272
+ }
273
+ return entry;
274
+ }
275
+
276
+ return { get, set, has, delete: del, clear, size, keys, stats, peek, peekEntry };
277
+ }
278
+
279
+ // -----------------------------------------------------------------------------
280
+ // LFU Strategy Implementation
281
+ // -----------------------------------------------------------------------------
282
+
283
+ /**
284
+ * Create an LFU (Least Frequently Used) eviction strategy.
285
+ * Evicts the least frequently accessed items when capacity is reached.
286
+ *
287
+ * @example
288
+ * ```typescript
289
+ * const cache = createLFUStrategy<string>({ maxSize: 100 });
290
+ * cache.set('popular', 'data');
291
+ * cache.get('popular'); // Increases frequency
292
+ * cache.get('popular'); // Now won't be evicted easily
293
+ * ```
294
+ */
295
+ export function createLFUStrategy<T = unknown>(config: StrategyConfig): CacheEvictionStrategy<T> {
296
+ const { maxSize, defaultTtlMs, onEvict } = config;
297
+
298
+ const cache = new Map<string, CacheEntry<T>>();
299
+ let hits = 0;
300
+ let misses = 0;
301
+ let evictions = 0;
302
+
303
+ function evictExpired(): void {
304
+ const now = Date.now();
305
+ for (const [key, entry] of cache) {
306
+ if (entry.meta.expiresAt && now > entry.meta.expiresAt) {
307
+ cache.delete(key);
308
+ onEvict?.(key, entry.value);
309
+ evictions++;
310
+ }
311
+ }
312
+ }
313
+
314
+ function evictLFU(): void {
315
+ if (cache.size === 0) return;
316
+
317
+ let lfuKey: string | null = null;
318
+ let minFreq = Infinity;
319
+ let oldestTime = Infinity;
320
+
321
+ for (const [key, entry] of cache) {
322
+ // Find lowest frequency, break ties by oldest access time
323
+ if (
324
+ entry.meta.accessCount < minFreq ||
325
+ (entry.meta.accessCount === minFreq && entry.meta.lastAccessedAt < oldestTime)
326
+ ) {
327
+ minFreq = entry.meta.accessCount;
328
+ oldestTime = entry.meta.lastAccessedAt;
329
+ lfuKey = key;
330
+ }
331
+ }
332
+
333
+ if (lfuKey) {
334
+ const entry = cache.get(lfuKey);
335
+ cache.delete(lfuKey);
336
+ if (entry) onEvict?.(lfuKey, entry.value);
337
+ evictions++;
338
+ }
339
+ }
340
+
341
+ function get(key: string): T | undefined {
342
+ evictExpired();
343
+
344
+ const entry = cache.get(key);
345
+ if (!entry) {
346
+ misses++;
347
+ return undefined;
348
+ }
349
+
350
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
351
+ cache.delete(key);
352
+ onEvict?.(key, entry.value);
353
+ evictions++;
354
+ misses++;
355
+ return undefined;
356
+ }
357
+
358
+ entry.meta.lastAccessedAt = Date.now();
359
+ entry.meta.accessCount++;
360
+ hits++;
361
+
362
+ return entry.value;
363
+ }
364
+
365
+ function set(key: string, value: T, ttlMs?: number): void {
366
+ evictExpired();
367
+
368
+ if (!cache.has(key) && cache.size >= maxSize) {
369
+ evictLFU();
370
+ }
371
+
372
+ const now = Date.now();
373
+ const effectiveTtl = ttlMs ?? defaultTtlMs;
374
+
375
+ const existing = cache.get(key);
376
+ const entry: CacheEntry<T> = {
377
+ key,
378
+ value,
379
+ meta: {
380
+ createdAt: existing?.meta.createdAt ?? now,
381
+ lastAccessedAt: now,
382
+ accessCount: existing ? existing.meta.accessCount + 1 : 1,
383
+ expiresAt: effectiveTtl ? now + effectiveTtl : undefined,
384
+ },
385
+ };
386
+
387
+ cache.set(key, entry);
388
+ }
389
+
390
+ function has(key: string): boolean {
391
+ const entry = cache.get(key);
392
+ if (!entry) return false;
393
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
394
+ cache.delete(key);
395
+ onEvict?.(key, entry.value);
396
+ return false;
397
+ }
398
+ return true;
399
+ }
400
+
401
+ function del(key: string): boolean {
402
+ return cache.delete(key);
403
+ }
404
+
405
+ function clear(): void {
406
+ cache.clear();
407
+ }
408
+
409
+ function size(): number {
410
+ evictExpired();
411
+ return cache.size;
412
+ }
413
+
414
+ function keys(): string[] {
415
+ evictExpired();
416
+ return Array.from(cache.keys());
417
+ }
418
+
419
+ function stats(): StrategyStats {
420
+ const total = hits + misses;
421
+ return {
422
+ hits,
423
+ misses,
424
+ evictions,
425
+ currentSize: cache.size,
426
+ maxSize,
427
+ hitRate: total > 0 ? hits / total : 0,
428
+ };
429
+ }
430
+
431
+ function peek(key: string): T | undefined {
432
+ const entry = cache.get(key);
433
+ if (!entry) return undefined;
434
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
435
+ return undefined;
436
+ }
437
+ return entry.value;
438
+ }
439
+
440
+ function peekEntry(key: string): CacheEntry<T> | undefined {
441
+ const entry = cache.get(key);
442
+ if (!entry) return undefined;
443
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
444
+ return undefined;
445
+ }
446
+ return entry;
447
+ }
448
+
449
+ return { get, set, has, delete: del, clear, size, keys, stats, peek, peekEntry };
450
+ }
451
+
452
+ // -----------------------------------------------------------------------------
453
+ // FIFO Strategy Implementation
454
+ // -----------------------------------------------------------------------------
455
+
456
+ /**
457
+ * Create a FIFO (First In First Out) eviction strategy.
458
+ * Evicts the oldest items first when capacity is reached.
459
+ *
460
+ * @example
461
+ * ```typescript
462
+ * const cache = createFIFOStrategy<string>({ maxSize: 100 });
463
+ * cache.set('first', 'data'); // Will be evicted first
464
+ * cache.set('second', 'data');
465
+ * ```
466
+ */
467
+ export function createFIFOStrategy<T = unknown>(config: StrategyConfig): CacheEvictionStrategy<T> {
468
+ const { maxSize, defaultTtlMs, onEvict } = config;
469
+
470
+ const cache = new Map<string, CacheEntry<T>>();
471
+ let hits = 0;
472
+ let misses = 0;
473
+ let evictions = 0;
474
+
475
+ function evictExpired(): void {
476
+ const now = Date.now();
477
+ for (const [key, entry] of cache) {
478
+ if (entry.meta.expiresAt && now > entry.meta.expiresAt) {
479
+ cache.delete(key);
480
+ onEvict?.(key, entry.value);
481
+ evictions++;
482
+ }
483
+ }
484
+ }
485
+
486
+ function evictFIFO(): void {
487
+ if (cache.size === 0) return;
488
+
489
+ // Map maintains insertion order, first key is oldest
490
+ const firstKey = cache.keys().next().value;
491
+ if (firstKey) {
492
+ const entry = cache.get(firstKey);
493
+ cache.delete(firstKey);
494
+ if (entry) onEvict?.(firstKey, entry.value);
495
+ evictions++;
496
+ }
497
+ }
498
+
499
+ function get(key: string): T | undefined {
500
+ evictExpired();
501
+
502
+ const entry = cache.get(key);
503
+ if (!entry) {
504
+ misses++;
505
+ return undefined;
506
+ }
507
+
508
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
509
+ cache.delete(key);
510
+ onEvict?.(key, entry.value);
511
+ evictions++;
512
+ misses++;
513
+ return undefined;
514
+ }
515
+
516
+ entry.meta.lastAccessedAt = Date.now();
517
+ entry.meta.accessCount++;
518
+ hits++;
519
+
520
+ // FIFO doesn't reorder on access
521
+ return entry.value;
522
+ }
523
+
524
+ function set(key: string, value: T, ttlMs?: number): void {
525
+ evictExpired();
526
+
527
+ if (!cache.has(key) && cache.size >= maxSize) {
528
+ evictFIFO();
529
+ }
530
+
531
+ const now = Date.now();
532
+ const effectiveTtl = ttlMs ?? defaultTtlMs;
533
+
534
+ // For FIFO, we don't want to update position of existing keys
535
+ const existing = cache.get(key);
536
+ const entry: CacheEntry<T> = {
537
+ key,
538
+ value,
539
+ meta: {
540
+ createdAt: existing?.meta.createdAt ?? now,
541
+ lastAccessedAt: now,
542
+ accessCount: existing ? existing.meta.accessCount + 1 : 1,
543
+ expiresAt: effectiveTtl ? now + effectiveTtl : undefined,
544
+ },
545
+ };
546
+
547
+ if (existing) {
548
+ // Update in place
549
+ cache.set(key, entry);
550
+ } else {
551
+ // New entry goes to end
552
+ cache.set(key, entry);
553
+ }
554
+ }
555
+
556
+ function has(key: string): boolean {
557
+ const entry = cache.get(key);
558
+ if (!entry) return false;
559
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
560
+ cache.delete(key);
561
+ onEvict?.(key, entry.value);
562
+ return false;
563
+ }
564
+ return true;
565
+ }
566
+
567
+ function del(key: string): boolean {
568
+ return cache.delete(key);
569
+ }
570
+
571
+ function clear(): void {
572
+ cache.clear();
573
+ }
574
+
575
+ function size(): number {
576
+ evictExpired();
577
+ return cache.size;
578
+ }
579
+
580
+ function keys(): string[] {
581
+ evictExpired();
582
+ return Array.from(cache.keys());
583
+ }
584
+
585
+ function stats(): StrategyStats {
586
+ const total = hits + misses;
587
+ return {
588
+ hits,
589
+ misses,
590
+ evictions,
591
+ currentSize: cache.size,
592
+ maxSize,
593
+ hitRate: total > 0 ? hits / total : 0,
594
+ };
595
+ }
596
+
597
+ function peek(key: string): T | undefined {
598
+ const entry = cache.get(key);
599
+ if (!entry) return undefined;
600
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
601
+ return undefined;
602
+ }
603
+ return entry.value;
604
+ }
605
+
606
+ function peekEntry(key: string): CacheEntry<T> | undefined {
607
+ const entry = cache.get(key);
608
+ if (!entry) return undefined;
609
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
610
+ return undefined;
611
+ }
612
+ return entry;
613
+ }
614
+
615
+ return { get, set, has, delete: del, clear, size, keys, stats, peek, peekEntry };
616
+ }
617
+
618
+ // -----------------------------------------------------------------------------
619
+ // TTL Strategy Implementation
620
+ // -----------------------------------------------------------------------------
621
+
622
+ /**
623
+ * Create a TTL (Time To Live) eviction strategy.
624
+ * Items automatically expire after their TTL.
625
+ *
626
+ * @example
627
+ * ```typescript
628
+ * const cache = createTTLStrategy<string>({
629
+ * maxSize: 1000,
630
+ * defaultTtlMs: 60000 // 1 minute default
631
+ * });
632
+ * cache.set('temp', 'data', 5000); // Expires in 5 seconds
633
+ * ```
634
+ */
635
+ export function createTTLStrategy<T = unknown>(config: StrategyConfig): CacheEvictionStrategy<T> {
636
+ const { maxSize, defaultTtlMs = 60000, onEvict } = config;
637
+
638
+ const cache = new Map<string, CacheEntry<T>>();
639
+ let hits = 0;
640
+ let misses = 0;
641
+ let evictions = 0;
642
+
643
+ function evictExpired(): number {
644
+ const now = Date.now();
645
+ let count = 0;
646
+ for (const [key, entry] of cache) {
647
+ if (entry.meta.expiresAt && now > entry.meta.expiresAt) {
648
+ cache.delete(key);
649
+ onEvict?.(key, entry.value);
650
+ evictions++;
651
+ count++;
652
+ }
653
+ }
654
+ return count;
655
+ }
656
+
657
+ function evictOldest(): void {
658
+ if (cache.size === 0) return;
659
+
660
+ let oldestKey: string | null = null;
661
+ let oldestExpiry = Infinity;
662
+
663
+ for (const [key, entry] of cache) {
664
+ const expiry = entry.meta.expiresAt ?? entry.meta.createdAt;
665
+ if (expiry < oldestExpiry) {
666
+ oldestExpiry = expiry;
667
+ oldestKey = key;
668
+ }
669
+ }
670
+
671
+ if (oldestKey) {
672
+ const entry = cache.get(oldestKey);
673
+ cache.delete(oldestKey);
674
+ if (entry) onEvict?.(oldestKey, entry.value);
675
+ evictions++;
676
+ }
677
+ }
678
+
679
+ function get(key: string): T | undefined {
680
+ evictExpired();
681
+
682
+ const entry = cache.get(key);
683
+ if (!entry) {
684
+ misses++;
685
+ return undefined;
686
+ }
687
+
688
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
689
+ cache.delete(key);
690
+ onEvict?.(key, entry.value);
691
+ evictions++;
692
+ misses++;
693
+ return undefined;
694
+ }
695
+
696
+ entry.meta.lastAccessedAt = Date.now();
697
+ entry.meta.accessCount++;
698
+ hits++;
699
+
700
+ return entry.value;
701
+ }
702
+
703
+ function set(key: string, value: T, ttlMs?: number): void {
704
+ evictExpired();
705
+
706
+ if (!cache.has(key) && cache.size >= maxSize) {
707
+ evictOldest();
708
+ }
709
+
710
+ const now = Date.now();
711
+ const effectiveTtl = ttlMs ?? defaultTtlMs;
712
+
713
+ const entry: CacheEntry<T> = {
714
+ key,
715
+ value,
716
+ meta: {
717
+ createdAt: now,
718
+ lastAccessedAt: now,
719
+ accessCount: 1,
720
+ expiresAt: now + effectiveTtl,
721
+ },
722
+ };
723
+
724
+ cache.set(key, entry);
725
+ }
726
+
727
+ function has(key: string): boolean {
728
+ const entry = cache.get(key);
729
+ if (!entry) return false;
730
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
731
+ cache.delete(key);
732
+ onEvict?.(key, entry.value);
733
+ return false;
734
+ }
735
+ return true;
736
+ }
737
+
738
+ function del(key: string): boolean {
739
+ return cache.delete(key);
740
+ }
741
+
742
+ function clear(): void {
743
+ cache.clear();
744
+ }
745
+
746
+ function size(): number {
747
+ evictExpired();
748
+ return cache.size;
749
+ }
750
+
751
+ function keys(): string[] {
752
+ evictExpired();
753
+ return Array.from(cache.keys());
754
+ }
755
+
756
+ function stats(): StrategyStats {
757
+ const total = hits + misses;
758
+ return {
759
+ hits,
760
+ misses,
761
+ evictions,
762
+ currentSize: cache.size,
763
+ maxSize,
764
+ hitRate: total > 0 ? hits / total : 0,
765
+ };
766
+ }
767
+
768
+ function peek(key: string): T | undefined {
769
+ const entry = cache.get(key);
770
+ if (!entry) return undefined;
771
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
772
+ return undefined;
773
+ }
774
+ return entry.value;
775
+ }
776
+
777
+ function peekEntry(key: string): CacheEntry<T> | undefined {
778
+ const entry = cache.get(key);
779
+ if (!entry) return undefined;
780
+ if (entry.meta.expiresAt && Date.now() > entry.meta.expiresAt) {
781
+ return undefined;
782
+ }
783
+ return entry;
784
+ }
785
+
786
+ return { get, set, has, delete: del, clear, size, keys, stats, peek, peekEntry };
787
+ }
788
+
789
+ // -----------------------------------------------------------------------------
790
+ // Adaptive Strategy Implementation
791
+ // -----------------------------------------------------------------------------
792
+
793
+ /** Adaptive strategy configuration */
794
+ export interface AdaptiveStrategyConfig extends StrategyConfig {
795
+ /** Window size for measuring access patterns */
796
+ analysisWindowMs?: number;
797
+ /** How often to analyze and potentially switch strategies */
798
+ analysisIntervalMs?: number;
799
+ }
800
+
801
+ /**
802
+ * Create an Adaptive eviction strategy.
803
+ * Dynamically switches between LRU and LFU based on access patterns.
804
+ *
805
+ * @example
806
+ * ```typescript
807
+ * const cache = createAdaptiveStrategy<string>({
808
+ * maxSize: 1000,
809
+ * analysisWindowMs: 60000 // Analyze every minute
810
+ * });
811
+ * ```
812
+ */
813
+ export function createAdaptiveStrategy<T = unknown>(
814
+ config: AdaptiveStrategyConfig,
815
+ ): CacheEvictionStrategy<T> {
816
+ const {
817
+ maxSize,
818
+ defaultTtlMs,
819
+ onEvict,
820
+ analysisWindowMs = 60000,
821
+ analysisIntervalMs = 10000,
822
+ } = config;
823
+
824
+ // Start with LRU
825
+ let currentStrategy: 'lru' | 'lfu' = 'lru';
826
+ const lruCache = createLRUStrategy<T>({ maxSize, defaultTtlMs, onEvict });
827
+ const lfuCache = createLFUStrategy<T>({ maxSize, defaultTtlMs, onEvict });
828
+ let activeCache = lruCache;
829
+
830
+ // Access pattern tracking
831
+ const accessLog: Array<{ key: string; time: number }> = [];
832
+ let lastAnalysis = Date.now();
833
+
834
+ function analyzePatterns(): void {
835
+ const now = Date.now();
836
+ if (now - lastAnalysis < analysisIntervalMs) return;
837
+ lastAnalysis = now;
838
+
839
+ // Filter to window
840
+ const windowStart = now - analysisWindowMs;
841
+ const recentAccesses = accessLog.filter(a => a.time >= windowStart);
842
+
843
+ if (recentAccesses.length < 10) return; // Not enough data
844
+
845
+ // Count frequency of each key
846
+ const keyCounts = new Map<string, number>();
847
+ for (const access of recentAccesses) {
848
+ keyCounts.set(access.key, (keyCounts.get(access.key) ?? 0) + 1);
849
+ }
850
+
851
+ // Calculate skewness - how concentrated are accesses?
852
+ const counts = Array.from(keyCounts.values());
853
+ const total = counts.reduce((a, b) => a + b, 0);
854
+ const mean = total / counts.length;
855
+ const variance = counts.reduce((sum, c) => sum + Math.pow(c - mean, 2), 0) / counts.length;
856
+ const stdDev = Math.sqrt(variance);
857
+ const coefficientOfVariation = mean > 0 ? stdDev / mean : 0;
858
+
859
+ // High CV = skewed access (few hot keys) = prefer LFU
860
+ // Low CV = uniform access = prefer LRU
861
+ const shouldUseLFU = coefficientOfVariation > 1.5;
862
+
863
+ if (shouldUseLFU && currentStrategy !== 'lfu') {
864
+ // Switch to LFU - migrate data preserving per-entry TTLs
865
+ const entries = lruCache
866
+ .keys()
867
+ .map(k => lruCache.peekEntry?.(k))
868
+ .filter((e): e is CacheEntry<T> => e !== undefined);
869
+ lfuCache.clear();
870
+ for (const entry of entries) {
871
+ // Calculate remaining TTL to preserve per-entry expiration
872
+ const remainingTtlMs = entry.meta.expiresAt
873
+ ? Math.max(0, entry.meta.expiresAt - now)
874
+ : undefined;
875
+ // Only migrate non-expired entries
876
+ if (remainingTtlMs === undefined || remainingTtlMs > 0) {
877
+ lfuCache.set(entry.key, entry.value, remainingTtlMs);
878
+ }
879
+ }
880
+ // Clear source cache to avoid memory duplication
881
+ lruCache.clear();
882
+ activeCache = lfuCache;
883
+ currentStrategy = 'lfu';
884
+ } else if (!shouldUseLFU && currentStrategy !== 'lru') {
885
+ // Switch to LRU - migrate data preserving per-entry TTLs
886
+ const entries = lfuCache
887
+ .keys()
888
+ .map(k => lfuCache.peekEntry?.(k))
889
+ .filter((e): e is CacheEntry<T> => e !== undefined);
890
+ lruCache.clear();
891
+ for (const entry of entries) {
892
+ // Calculate remaining TTL to preserve per-entry expiration
893
+ const remainingTtlMs = entry.meta.expiresAt
894
+ ? Math.max(0, entry.meta.expiresAt - now)
895
+ : undefined;
896
+ // Only migrate non-expired entries
897
+ if (remainingTtlMs === undefined || remainingTtlMs > 0) {
898
+ lruCache.set(entry.key, entry.value, remainingTtlMs);
899
+ }
900
+ }
901
+ // Clear source cache to avoid memory duplication
902
+ lfuCache.clear();
903
+ activeCache = lruCache;
904
+ currentStrategy = 'lru';
905
+ }
906
+
907
+ // Trim access log - remove old entries and cap max length to prevent memory spikes
908
+ const maxLogLength = 10000;
909
+ while (accessLog.length > 0 && (accessLog[0]?.time ?? 0) < windowStart) {
910
+ accessLog.shift();
911
+ }
912
+ // Hard cap to prevent unbounded growth under high QPS
913
+ if (accessLog.length > maxLogLength) {
914
+ accessLog.splice(0, accessLog.length - maxLogLength);
915
+ }
916
+ }
917
+
918
+ function get(key: string): T | undefined {
919
+ analyzePatterns();
920
+ // Cap accessLog length on push to prevent memory spikes under high QPS
921
+ if (accessLog.length >= 10000) {
922
+ accessLog.shift();
923
+ }
924
+ accessLog.push({ key, time: Date.now() });
925
+ return activeCache.get(key);
926
+ }
927
+
928
+ function set(key: string, value: T, ttlMs?: number): void {
929
+ analyzePatterns();
930
+ activeCache.set(key, value, ttlMs);
931
+ }
932
+
933
+ function has(key: string): boolean {
934
+ return activeCache.has(key);
935
+ }
936
+
937
+ function del(key: string): boolean {
938
+ // Delete from both to be safe
939
+ lruCache.delete(key);
940
+ lfuCache.delete(key);
941
+ return activeCache.delete(key);
942
+ }
943
+
944
+ function clear(): void {
945
+ lruCache.clear();
946
+ lfuCache.clear();
947
+ accessLog.length = 0;
948
+ }
949
+
950
+ function size(): number {
951
+ return activeCache.size();
952
+ }
953
+
954
+ function keys(): string[] {
955
+ return activeCache.keys();
956
+ }
957
+
958
+ function stats(): StrategyStats {
959
+ const baseStats = activeCache.stats();
960
+ return {
961
+ ...baseStats,
962
+ // Could add strategy-specific stats here
963
+ };
964
+ }
965
+
966
+ function peek(key: string): T | undefined {
967
+ return activeCache.peek(key);
968
+ }
969
+
970
+ function peekEntry(key: string): CacheEntry<T> | undefined {
971
+ return activeCache.peekEntry?.(key);
972
+ }
973
+
974
+ return { get, set, has, delete: del, clear, size, keys, stats, peek, peekEntry };
975
+ }
976
+
977
+ // -----------------------------------------------------------------------------
978
+ // Factory Function
979
+ // -----------------------------------------------------------------------------
980
+
981
+ /**
982
+ * Create a cache strategy by type.
983
+ *
984
+ * @example
985
+ * ```typescript
986
+ * const cache = createCacheStrategy('lru', { maxSize: 1000 });
987
+ * const adaptiveCache = createCacheStrategy('adaptive', { maxSize: 1000 });
988
+ * ```
989
+ */
990
+ export function createCacheStrategy<T = unknown>(
991
+ strategy: EvictionStrategy,
992
+ config: StrategyConfig | AdaptiveStrategyConfig,
993
+ ): CacheEvictionStrategy<T> {
994
+ switch (strategy) {
995
+ case 'lru':
996
+ return createLRUStrategy<T>(config);
997
+ case 'lfu':
998
+ return createLFUStrategy<T>(config);
999
+ case 'fifo':
1000
+ return createFIFOStrategy<T>(config);
1001
+ case 'ttl':
1002
+ return createTTLStrategy<T>(config);
1003
+ case 'adaptive':
1004
+ return createAdaptiveStrategy<T>(config as AdaptiveStrategyConfig);
1005
+ default:
1006
+ throw new Error(`Unknown cache strategy: ${strategy}`);
1007
+ }
1008
+ }