@anvia/core 1.1.2 → 1.2.1

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 (598) hide show
  1. package/README.md +226 -0
  2. package/dist/agent/agent-stream.js +7 -0
  3. package/dist/agent/agent-stream.js.map +1 -0
  4. package/dist/agent/agent-tool.js +24 -0
  5. package/dist/agent/agent-tool.js.map +1 -0
  6. package/dist/agent/agent.js +89 -0
  7. package/dist/agent/agent.js.map +1 -0
  8. package/dist/agent/errors.js +17 -0
  9. package/dist/agent/errors.js.map +1 -0
  10. package/dist/agent/ids.js +7 -0
  11. package/dist/agent/ids.js.map +1 -0
  12. package/dist/agent/index.d.ts +127 -9
  13. package/dist/agent/index.js +103 -21
  14. package/dist/agent/interactions/index.js +2 -2
  15. package/dist/agent/interactions.js +22 -0
  16. package/dist/agent/interactions.js.map +1 -0
  17. package/dist/agent/lifecycle.js +9 -0
  18. package/dist/agent/lifecycle.js.map +1 -0
  19. package/dist/agent/output-schema.js +10 -0
  20. package/dist/agent/output-schema.js.map +1 -0
  21. package/dist/agent/resolve-options.js +46 -0
  22. package/dist/agent/resolve-options.js.map +1 -0
  23. package/dist/agent/resolved-agent.js +92 -0
  24. package/dist/agent/resolved-agent.js.map +1 -0
  25. package/dist/agent/run-types.js +1 -0
  26. package/dist/agent/run-types.js.map +1 -0
  27. package/dist/agent/snapshot.js +17 -0
  28. package/dist/agent/snapshot.js.map +1 -0
  29. package/dist/agent/team/agent-team.js +98 -0
  30. package/dist/agent/team/agent-team.js.map +1 -0
  31. package/dist/agent/team/errors.js +9 -0
  32. package/dist/agent/team/errors.js.map +1 -0
  33. package/dist/agent/team/index.js +104 -0
  34. package/dist/agent/team/index.js.map +1 -0
  35. package/dist/agent/team/types.js +1 -0
  36. package/dist/agent/team/types.js.map +1 -0
  37. package/dist/agent/tool-catalog.js +37 -0
  38. package/dist/agent/tool-catalog.js.map +1 -0
  39. package/dist/agent/tool-state.js +11 -0
  40. package/dist/agent/tool-state.js.map +1 -0
  41. package/dist/agent/types.js +1 -0
  42. package/dist/agent/types.js.map +1 -0
  43. package/dist/agent/vector-context.js +10 -0
  44. package/dist/agent/vector-context.js.map +1 -0
  45. package/dist/{agent-DTmzs1Qr.d.ts → agent-C9VhENdj.d.ts} +2 -3
  46. package/dist/{chunk-I3Q7XSBB.js → chunk-23LRXKQX.js} +6 -4
  47. package/dist/{chunk-I3Q7XSBB.js.map → chunk-23LRXKQX.js.map} +1 -1
  48. package/dist/{chunk-YK4WAAS4.js → chunk-2NLINXRF.js} +1 -1
  49. package/dist/{chunk-SPD4XVR7.js → chunk-2XSMGVBG.js} +1 -1
  50. package/dist/chunk-3J2CSVPR.js +1 -0
  51. package/dist/chunk-3J2CSVPR.js.map +1 -0
  52. package/dist/chunk-3P3YVJ7V.js +1 -0
  53. package/dist/chunk-3P3YVJ7V.js.map +1 -0
  54. package/dist/chunk-3TAQXJBC.js +107 -0
  55. package/dist/chunk-3TAQXJBC.js.map +1 -0
  56. package/dist/chunk-47NTHIVB.js +76 -0
  57. package/dist/chunk-47NTHIVB.js.map +1 -0
  58. package/dist/chunk-4AW2633B.js +9 -0
  59. package/dist/chunk-4AW2633B.js.map +1 -0
  60. package/dist/{chunk-3XQGVDU5.js → chunk-4C7AXYOM.js} +1 -1
  61. package/dist/{chunk-IZNOP6JG.js → chunk-4FIVU53H.js} +1 -1
  62. package/dist/chunk-4ITAV7YA.js +1 -0
  63. package/dist/chunk-4ITAV7YA.js.map +1 -0
  64. package/dist/{chunk-7JLAIN6E.js → chunk-4ONUNWGC.js} +2 -2
  65. package/dist/chunk-4S4OECPW.js +158 -0
  66. package/dist/chunk-4S4OECPW.js.map +1 -0
  67. package/dist/chunk-4UUIGAIX.js +1 -0
  68. package/dist/chunk-4UUIGAIX.js.map +1 -0
  69. package/dist/chunk-53TPAXYR.js +1 -0
  70. package/dist/chunk-53TPAXYR.js.map +1 -0
  71. package/dist/chunk-54ZZJRP2.js +57 -0
  72. package/dist/chunk-54ZZJRP2.js.map +1 -0
  73. package/dist/chunk-5FCZ64HM.js +112 -0
  74. package/dist/chunk-5FCZ64HM.js.map +1 -0
  75. package/dist/chunk-5I2NVRHC.js +146 -0
  76. package/dist/chunk-5I2NVRHC.js.map +1 -0
  77. package/dist/chunk-5IURMWFN.js +53 -0
  78. package/dist/chunk-5IURMWFN.js.map +1 -0
  79. package/dist/chunk-5M6GTA3T.js +1 -0
  80. package/dist/chunk-5M6GTA3T.js.map +1 -0
  81. package/dist/chunk-5N5W7CX7.js +18 -0
  82. package/dist/chunk-5N5W7CX7.js.map +1 -0
  83. package/dist/chunk-5S7T2URX.js +1 -0
  84. package/dist/chunk-5S7T2URX.js.map +1 -0
  85. package/dist/chunk-5V533R7F.js +19 -0
  86. package/dist/chunk-5V533R7F.js.map +1 -0
  87. package/dist/chunk-5WLIHNNJ.js +56 -0
  88. package/dist/chunk-5WLIHNNJ.js.map +1 -0
  89. package/dist/chunk-6BTJC3ES.js +37 -0
  90. package/dist/chunk-6BTJC3ES.js.map +1 -0
  91. package/dist/chunk-6N4ENZO4.js +24 -0
  92. package/dist/chunk-6N4ENZO4.js.map +1 -0
  93. package/dist/{chunk-4UQALF5Y.js → chunk-6RQYWZI3.js} +2 -36
  94. package/dist/chunk-6RQYWZI3.js.map +1 -0
  95. package/dist/chunk-6TAWRKFK.js +86 -0
  96. package/dist/chunk-6TAWRKFK.js.map +1 -0
  97. package/dist/chunk-72LBHKYP.js +236 -0
  98. package/dist/chunk-72LBHKYP.js.map +1 -0
  99. package/dist/chunk-7F53DOML.js +53 -0
  100. package/dist/chunk-7F53DOML.js.map +1 -0
  101. package/dist/chunk-7LBPRXZP.js +1 -0
  102. package/dist/chunk-7LBPRXZP.js.map +1 -0
  103. package/dist/chunk-A7BXVZXZ.js +25 -0
  104. package/dist/chunk-A7BXVZXZ.js.map +1 -0
  105. package/dist/chunk-AOG6KSV4.js +107 -0
  106. package/dist/chunk-AOG6KSV4.js.map +1 -0
  107. package/dist/chunk-B47EXUHL.js +67 -0
  108. package/dist/chunk-B47EXUHL.js.map +1 -0
  109. package/dist/chunk-B5JQDR33.js +14 -0
  110. package/dist/chunk-B5JQDR33.js.map +1 -0
  111. package/dist/chunk-BDDC72GF.js +189 -0
  112. package/dist/chunk-BDDC72GF.js.map +1 -0
  113. package/dist/chunk-BDKFFFVX.js +342 -0
  114. package/dist/chunk-BDKFFFVX.js.map +1 -0
  115. package/dist/{chunk-QGX73TSQ.js → chunk-BONQTXRQ.js} +3 -12
  116. package/dist/chunk-BONQTXRQ.js.map +1 -0
  117. package/dist/chunk-BUPC72Y2.js +1007 -0
  118. package/dist/chunk-BUPC72Y2.js.map +1 -0
  119. package/dist/chunk-CKKNO4XB.js +70 -0
  120. package/dist/chunk-CKKNO4XB.js.map +1 -0
  121. package/dist/chunk-CX7ZVTO5.js +22 -0
  122. package/dist/chunk-CX7ZVTO5.js.map +1 -0
  123. package/dist/chunk-DU4WA6LQ.js +1 -0
  124. package/dist/chunk-DU4WA6LQ.js.map +1 -0
  125. package/dist/chunk-EJR6VVB3.js +63 -0
  126. package/dist/chunk-EJR6VVB3.js.map +1 -0
  127. package/dist/chunk-EKZRAWBP.js +110 -0
  128. package/dist/chunk-EKZRAWBP.js.map +1 -0
  129. package/dist/chunk-ENZ2XX27.js +26 -0
  130. package/dist/chunk-ENZ2XX27.js.map +1 -0
  131. package/dist/chunk-EOAJBBII.js +1 -0
  132. package/dist/chunk-EOAJBBII.js.map +1 -0
  133. package/dist/chunk-ERN7P6Q4.js +1 -0
  134. package/dist/chunk-ERN7P6Q4.js.map +1 -0
  135. package/dist/chunk-ESOFEAYK.js +57 -0
  136. package/dist/chunk-ESOFEAYK.js.map +1 -0
  137. package/dist/chunk-ETYB5JO6.js +175 -0
  138. package/dist/chunk-ETYB5JO6.js.map +1 -0
  139. package/dist/chunk-EZR5AV3J.js +74 -0
  140. package/dist/chunk-EZR5AV3J.js.map +1 -0
  141. package/dist/chunk-F2OKLHGB.js +9 -0
  142. package/dist/chunk-F2OKLHGB.js.map +1 -0
  143. package/dist/chunk-F3E2RLC7.js +342 -0
  144. package/dist/chunk-F3E2RLC7.js.map +1 -0
  145. package/dist/chunk-FAPIZJS2.js +54 -0
  146. package/dist/chunk-FAPIZJS2.js.map +1 -0
  147. package/dist/{chunk-2QZJTG2E.js → chunk-G336L2IE.js} +11 -71
  148. package/dist/chunk-G336L2IE.js.map +1 -0
  149. package/dist/chunk-GDJNOZ47.js +1 -0
  150. package/dist/chunk-GDJNOZ47.js.map +1 -0
  151. package/dist/chunk-GDY2Z2SZ.js +83 -0
  152. package/dist/chunk-GDY2Z2SZ.js.map +1 -0
  153. package/dist/chunk-GLMYZ6OA.js +20 -0
  154. package/dist/chunk-GLMYZ6OA.js.map +1 -0
  155. package/dist/{chunk-XEVOC433.js → chunk-GPVXCY5I.js} +2 -73
  156. package/dist/chunk-GPVXCY5I.js.map +1 -0
  157. package/dist/{chunk-KSKST3KP.js → chunk-H3H74RWJ.js} +1 -1
  158. package/dist/chunk-HAAGSIZH.js +89 -0
  159. package/dist/chunk-HAAGSIZH.js.map +1 -0
  160. package/dist/{chunk-K5L7R7XM.js → chunk-HHMLE3TZ.js} +6 -54
  161. package/dist/chunk-HHMLE3TZ.js.map +1 -0
  162. package/dist/{chunk-JLJMVRRE.js → chunk-HP34GRQX.js} +10 -83
  163. package/dist/chunk-HP34GRQX.js.map +1 -0
  164. package/dist/chunk-HTI343NP.js +1 -0
  165. package/dist/chunk-HTI343NP.js.map +1 -0
  166. package/dist/{chunk-T2C3CGDQ.js → chunk-HTI7DZJM.js} +6 -4
  167. package/dist/{chunk-T2C3CGDQ.js.map → chunk-HTI7DZJM.js.map} +1 -1
  168. package/dist/chunk-IDNL6IH4.js +294 -0
  169. package/dist/chunk-IDNL6IH4.js.map +1 -0
  170. package/dist/chunk-IV6YQTY2.js +47 -0
  171. package/dist/chunk-IV6YQTY2.js.map +1 -0
  172. package/dist/chunk-J4SINPUA.js +939 -0
  173. package/dist/chunk-J4SINPUA.js.map +1 -0
  174. package/dist/chunk-J6S6MT7O.js +32 -0
  175. package/dist/chunk-J6S6MT7O.js.map +1 -0
  176. package/dist/chunk-JBQNCUXA.js +34 -0
  177. package/dist/chunk-JBQNCUXA.js.map +1 -0
  178. package/dist/chunk-JMJFK3A4.js +1 -0
  179. package/dist/chunk-JMJFK3A4.js.map +1 -0
  180. package/dist/chunk-JMMZICU7.js +74 -0
  181. package/dist/chunk-JMMZICU7.js.map +1 -0
  182. package/dist/chunk-K4IBS7VB.js +55 -0
  183. package/dist/chunk-K4IBS7VB.js.map +1 -0
  184. package/dist/chunk-KBBQSP4M.js +16 -0
  185. package/dist/chunk-KBBQSP4M.js.map +1 -0
  186. package/dist/chunk-KFAVEL5F.js +68 -0
  187. package/dist/chunk-KFAVEL5F.js.map +1 -0
  188. package/dist/chunk-KITX3HDN.js +17 -0
  189. package/dist/chunk-KITX3HDN.js.map +1 -0
  190. package/dist/chunk-KO5NMTAM.js +1 -0
  191. package/dist/chunk-KO5NMTAM.js.map +1 -0
  192. package/dist/chunk-KY4VXIN2.js +118 -0
  193. package/dist/chunk-KY4VXIN2.js.map +1 -0
  194. package/dist/chunk-KZGSXJKU.js +29 -0
  195. package/dist/chunk-KZGSXJKU.js.map +1 -0
  196. package/dist/chunk-LAIATEUB.js +24 -0
  197. package/dist/chunk-LAIATEUB.js.map +1 -0
  198. package/dist/{chunk-OJBFDBLG.js → chunk-LBYJPMHC.js} +2 -2
  199. package/dist/chunk-LKIABZNR.js +49 -0
  200. package/dist/chunk-LKIABZNR.js.map +1 -0
  201. package/dist/chunk-LQJ4KHMY.js +23 -0
  202. package/dist/chunk-LQJ4KHMY.js.map +1 -0
  203. package/dist/chunk-MEN4AFDZ.js +1 -0
  204. package/dist/chunk-MEN4AFDZ.js.map +1 -0
  205. package/dist/chunk-MHOJJYDK.js +93 -0
  206. package/dist/chunk-MHOJJYDK.js.map +1 -0
  207. package/dist/chunk-MJCMKZFP.js +30 -0
  208. package/dist/chunk-MJCMKZFP.js.map +1 -0
  209. package/dist/chunk-MNYMLWWA.js +168 -0
  210. package/dist/chunk-MNYMLWWA.js.map +1 -0
  211. package/dist/chunk-MT3BLVYN.js +31 -0
  212. package/dist/chunk-MT3BLVYN.js.map +1 -0
  213. package/dist/chunk-NF6WBPFG.js +37 -0
  214. package/dist/chunk-NF6WBPFG.js.map +1 -0
  215. package/dist/chunk-NNEKBZSM.js +66 -0
  216. package/dist/chunk-NNEKBZSM.js.map +1 -0
  217. package/dist/chunk-NPJ2T3L5.js +19 -0
  218. package/dist/chunk-NPJ2T3L5.js.map +1 -0
  219. package/dist/chunk-NVALGVQG.js +150 -0
  220. package/dist/chunk-NVALGVQG.js.map +1 -0
  221. package/dist/chunk-O6DTOCBM.js +355 -0
  222. package/dist/chunk-O6DTOCBM.js.map +1 -0
  223. package/dist/chunk-OJF67RNM.js +1 -0
  224. package/dist/chunk-OJF67RNM.js.map +1 -0
  225. package/dist/chunk-PHLGGRHC.js +89 -0
  226. package/dist/chunk-PHLGGRHC.js.map +1 -0
  227. package/dist/chunk-PIMD4DYG.js +104 -0
  228. package/dist/chunk-PIMD4DYG.js.map +1 -0
  229. package/dist/chunk-PJNE75WC.js +1 -0
  230. package/dist/chunk-PJNE75WC.js.map +1 -0
  231. package/dist/{chunk-J6LVLV6P.js → chunk-PLDJCCVL.js} +1 -1
  232. package/dist/{chunk-3RWESPUG.js → chunk-POXHJF3H.js} +6 -51
  233. package/dist/chunk-POXHJF3H.js.map +1 -0
  234. package/dist/chunk-PPJ7SYQL.js +81 -0
  235. package/dist/chunk-PPJ7SYQL.js.map +1 -0
  236. package/dist/chunk-QHGYCYV6.js +91 -0
  237. package/dist/chunk-QHGYCYV6.js.map +1 -0
  238. package/dist/chunk-QUS6S2NB.js +663 -0
  239. package/dist/chunk-QUS6S2NB.js.map +1 -0
  240. package/dist/chunk-R6722CIU.js +28 -0
  241. package/dist/chunk-R6722CIU.js.map +1 -0
  242. package/dist/chunk-RA4YVN43.js +1 -0
  243. package/dist/chunk-RA4YVN43.js.map +1 -0
  244. package/dist/chunk-RT5LUEO3.js +2339 -0
  245. package/dist/chunk-RT5LUEO3.js.map +1 -0
  246. package/dist/chunk-SC4SUIEY.js +1 -0
  247. package/dist/chunk-SC4SUIEY.js.map +1 -0
  248. package/dist/chunk-SIYZDPVH.js +613 -0
  249. package/dist/chunk-SIYZDPVH.js.map +1 -0
  250. package/dist/chunk-SQAAVYJG.js +12 -0
  251. package/dist/chunk-SQAAVYJG.js.map +1 -0
  252. package/dist/chunk-SXE4J43E.js +59 -0
  253. package/dist/chunk-SXE4J43E.js.map +1 -0
  254. package/dist/{chunk-EFLT7XZD.js → chunk-SYULMZGL.js} +6 -4
  255. package/dist/{chunk-EFLT7XZD.js.map → chunk-SYULMZGL.js.map} +1 -1
  256. package/dist/chunk-T4IAJJUU.js +48 -0
  257. package/dist/chunk-T4IAJJUU.js.map +1 -0
  258. package/dist/chunk-T4KS577P.js +58 -0
  259. package/dist/chunk-T4KS577P.js.map +1 -0
  260. package/dist/chunk-TFIOU6UR.js +78 -0
  261. package/dist/chunk-TFIOU6UR.js.map +1 -0
  262. package/dist/chunk-TIZGADU4.js +375 -0
  263. package/dist/chunk-TIZGADU4.js.map +1 -0
  264. package/dist/chunk-TP3MCUXS.js +1 -0
  265. package/dist/chunk-TP3MCUXS.js.map +1 -0
  266. package/dist/{chunk-JTJU56ZV.js → chunk-UOGM62JL.js} +11 -7
  267. package/dist/{chunk-JTJU56ZV.js.map → chunk-UOGM62JL.js.map} +1 -1
  268. package/dist/chunk-USRKPEQN.js +55 -0
  269. package/dist/chunk-USRKPEQN.js.map +1 -0
  270. package/dist/chunk-UTAB3XQI.js +667 -0
  271. package/dist/chunk-UTAB3XQI.js.map +1 -0
  272. package/dist/chunk-V3FFZWF3.js +182 -0
  273. package/dist/chunk-V3FFZWF3.js.map +1 -0
  274. package/dist/chunk-V4OZ7ISA.js +9 -0
  275. package/dist/chunk-V4OZ7ISA.js.map +1 -0
  276. package/dist/chunk-VZ5ZZBNX.js +139 -0
  277. package/dist/chunk-VZ5ZZBNX.js.map +1 -0
  278. package/dist/{chunk-AHLKV6KP.js → chunk-WN6AVBO4.js} +1 -1
  279. package/dist/chunk-WXR5CWSC.js +1 -0
  280. package/dist/chunk-WXR5CWSC.js.map +1 -0
  281. package/dist/chunk-X6WS3XWL.js +36 -0
  282. package/dist/chunk-X6WS3XWL.js.map +1 -0
  283. package/dist/{chunk-Q5BCNYED.js → chunk-XJRNBTIV.js} +7 -4
  284. package/dist/chunk-XQV3XNVT.js +225 -0
  285. package/dist/chunk-XQV3XNVT.js.map +1 -0
  286. package/dist/chunk-XV3DH5GC.js +58 -0
  287. package/dist/chunk-XV3DH5GC.js.map +1 -0
  288. package/dist/chunk-Y7JTHNCU.js +318 -0
  289. package/dist/chunk-Y7JTHNCU.js.map +1 -0
  290. package/dist/chunk-YWRXOPHC.js +43 -0
  291. package/dist/chunk-YWRXOPHC.js.map +1 -0
  292. package/dist/chunk-YZVFIW5D.js +27 -0
  293. package/dist/chunk-YZVFIW5D.js.map +1 -0
  294. package/dist/chunk-ZHC5CD6J.js +33 -0
  295. package/dist/chunk-ZHC5CD6J.js.map +1 -0
  296. package/dist/chunk-ZPJFXRQZ.js +23 -0
  297. package/dist/chunk-ZPJFXRQZ.js.map +1 -0
  298. package/dist/chunk-ZPXOBQDS.js +57 -0
  299. package/dist/chunk-ZPXOBQDS.js.map +1 -0
  300. package/dist/chunk-ZUFS6R7L.js +155 -0
  301. package/dist/chunk-ZUFS6R7L.js.map +1 -0
  302. package/dist/chunk-ZXLCTQUX.js +62 -0
  303. package/dist/chunk-ZXLCTQUX.js.map +1 -0
  304. package/dist/chunk-ZYXMWEL4.js +59 -0
  305. package/dist/chunk-ZYXMWEL4.js.map +1 -0
  306. package/dist/completion/controls.js +11 -0
  307. package/dist/completion/controls.js.map +1 -0
  308. package/dist/completion/documents.js +9 -0
  309. package/dist/completion/documents.js.map +1 -0
  310. package/dist/completion/generate-completion.js +23 -0
  311. package/dist/completion/generate-completion.js.map +1 -0
  312. package/dist/completion/index.js +23 -12
  313. package/dist/completion/json.js +7 -0
  314. package/dist/completion/json.js.map +1 -0
  315. package/dist/completion/message-schema.js +18 -0
  316. package/dist/completion/message-schema.js.map +1 -0
  317. package/dist/completion/provider-output-error.js +12 -0
  318. package/dist/completion/provider-output-error.js.map +1 -0
  319. package/dist/completion/stream-accumulator.js +10 -0
  320. package/dist/completion/stream-accumulator.js.map +1 -0
  321. package/dist/completion/types.js +28 -0
  322. package/dist/completion/types.js.map +1 -0
  323. package/dist/documents/chunk-text.js +7 -0
  324. package/dist/documents/chunk-text.js.map +1 -0
  325. package/dist/documents/index.js +5 -2
  326. package/dist/documents/text-document.js +8 -0
  327. package/dist/documents/text-document.js.map +1 -0
  328. package/dist/embeddings/distance.js +17 -0
  329. package/dist/embeddings/distance.js.map +1 -0
  330. package/dist/embeddings/embed.js +18 -0
  331. package/dist/embeddings/embed.js.map +1 -0
  332. package/dist/embeddings/index.js +11 -6
  333. package/dist/embeddings/types.js +2 -0
  334. package/dist/embeddings/types.js.map +1 -0
  335. package/dist/evals/advanced-metrics.js +46 -0
  336. package/dist/evals/advanced-metrics.js.map +1 -0
  337. package/dist/evals/agent-target.js +10 -0
  338. package/dist/evals/agent-target.js.map +1 -0
  339. package/dist/evals/cli.js +40 -0
  340. package/dist/evals/cli.js.map +1 -0
  341. package/dist/evals/execution.js +15 -0
  342. package/dist/evals/execution.js.map +1 -0
  343. package/dist/evals/format.js +13 -0
  344. package/dist/evals/format.js.map +1 -0
  345. package/dist/evals/index.d.ts +4 -4
  346. package/dist/evals/index.js +87 -2660
  347. package/dist/evals/index.js.map +1 -1
  348. package/dist/evals/judge.js +27 -0
  349. package/dist/evals/judge.js.map +1 -0
  350. package/dist/evals/metric.js +7 -0
  351. package/dist/evals/metric.js.map +1 -0
  352. package/dist/evals/metrics.js +53 -0
  353. package/dist/evals/metrics.js.map +1 -0
  354. package/dist/evals/outcome.js +7 -0
  355. package/dist/evals/outcome.js.map +1 -0
  356. package/dist/evals/reporting.js +11 -0
  357. package/dist/evals/reporting.js.map +1 -0
  358. package/dist/evals/runner.js +29 -0
  359. package/dist/evals/runner.js.map +1 -0
  360. package/dist/evals/selectors.js +18 -0
  361. package/dist/evals/selectors.js.map +1 -0
  362. package/dist/evals/suite.js +11 -0
  363. package/dist/evals/suite.js.map +1 -0
  364. package/dist/evals/types.js +1 -0
  365. package/dist/evals/types.js.map +1 -0
  366. package/dist/extractor/extractor.js +23 -0
  367. package/dist/extractor/extractor.js.map +1 -0
  368. package/dist/extractor/index.js +16 -7
  369. package/dist/guardrails/actions.js +13 -0
  370. package/dist/guardrails/actions.js.map +1 -0
  371. package/dist/guardrails/index.d.ts +3 -4
  372. package/dist/guardrails/index.js +15 -7
  373. package/dist/guardrails/message.js +9 -0
  374. package/dist/guardrails/message.js.map +1 -0
  375. package/dist/guardrails/policy.js +17 -0
  376. package/dist/guardrails/policy.js.map +1 -0
  377. package/dist/guardrails/runtime.js +11 -0
  378. package/dist/guardrails/runtime.js.map +1 -0
  379. package/dist/guardrails/text.js +9 -0
  380. package/dist/guardrails/text.js.map +1 -0
  381. package/dist/guardrails/types.js +1 -0
  382. package/dist/guardrails/types.js.map +1 -0
  383. package/dist/hooks/control.js +17 -0
  384. package/dist/hooks/control.js.map +1 -0
  385. package/dist/hooks/index.js +19 -0
  386. package/dist/hooks/index.js.map +1 -0
  387. package/dist/hooks/types.js +2 -0
  388. package/dist/hooks/types.js.map +1 -0
  389. package/dist/image-generation/generate-image.js +11 -0
  390. package/dist/image-generation/generate-image.js.map +1 -0
  391. package/dist/image-generation/index.js +7 -4
  392. package/dist/image-generation/types.js +2 -0
  393. package/dist/image-generation/types.js.map +1 -0
  394. package/dist/index.d.ts +5 -7
  395. package/dist/index.js +163 -57
  396. package/dist/internal/abort.js +13 -0
  397. package/dist/internal/abort.js.map +1 -0
  398. package/dist/internal/agent-runtime/agent-run.js +81 -0
  399. package/dist/internal/agent-runtime/agent-run.js.map +1 -0
  400. package/dist/internal/agent-runtime/approval-request.js +1 -0
  401. package/dist/internal/agent-runtime/approval-request.js.map +1 -0
  402. package/dist/internal/agent-runtime/approval-requirement.js +9 -0
  403. package/dist/internal/agent-runtime/approval-requirement.js.map +1 -0
  404. package/dist/internal/agent-runtime/continuation-state.js +26 -0
  405. package/dist/internal/agent-runtime/continuation-state.js.map +1 -0
  406. package/dist/internal/agent-runtime/interaction-suspension.js +25 -0
  407. package/dist/internal/agent-runtime/interaction-suspension.js.map +1 -0
  408. package/dist/internal/agent-runtime/memory-scope.js +8 -0
  409. package/dist/internal/agent-runtime/memory-scope.js.map +1 -0
  410. package/dist/internal/agent-runtime/memory.js +24 -0
  411. package/dist/internal/agent-runtime/memory.js.map +1 -0
  412. package/dist/internal/agent-runtime/prepared-tool-call.js +19 -0
  413. package/dist/internal/agent-runtime/prepared-tool-call.js.map +1 -0
  414. package/dist/internal/agent-runtime/retrieval.js +35 -0
  415. package/dist/internal/agent-runtime/retrieval.js.map +1 -0
  416. package/dist/internal/agent-runtime/run-options.js +9 -0
  417. package/dist/internal/agent-runtime/run-options.js.map +1 -0
  418. package/dist/internal/agent-runtime/run-validation.js +9 -0
  419. package/dist/internal/agent-runtime/run-validation.js.map +1 -0
  420. package/dist/internal/agent-runtime/stream-events.js +11 -0
  421. package/dist/internal/agent-runtime/stream-events.js.map +1 -0
  422. package/dist/internal/agent-runtime/structured-output.js +13 -0
  423. package/dist/internal/agent-runtime/structured-output.js.map +1 -0
  424. package/dist/internal/agent-runtime/tool-execution.js +55 -0
  425. package/dist/internal/agent-runtime/tool-execution.js.map +1 -0
  426. package/dist/internal/agent.d.ts +5 -5
  427. package/dist/internal/agent.js +93 -57
  428. package/dist/internal/agent.js.map +1 -1
  429. package/dist/internal/async-queue.js +7 -0
  430. package/dist/internal/async-queue.js.map +1 -0
  431. package/dist/internal/completion-request.js +11 -0
  432. package/dist/internal/completion-request.js.map +1 -0
  433. package/dist/internal/concurrency.js +7 -0
  434. package/dist/internal/concurrency.js.map +1 -0
  435. package/dist/internal/json-object.js +8 -0
  436. package/dist/internal/json-object.js.map +1 -0
  437. package/dist/internal/rag-text.js +7 -0
  438. package/dist/internal/rag-text.js.map +1 -0
  439. package/dist/internal/record.js +7 -0
  440. package/dist/internal/record.js.map +1 -0
  441. package/dist/internal/team-runtime/coordination.js +12 -0
  442. package/dist/internal/team-runtime/coordination.js.map +1 -0
  443. package/dist/internal/team-runtime/member.js +26 -0
  444. package/dist/internal/team-runtime/member.js.map +1 -0
  445. package/dist/internal/team-runtime/policy.js +7 -0
  446. package/dist/internal/team-runtime/policy.js.map +1 -0
  447. package/dist/internal/team-runtime/run.js +95 -0
  448. package/dist/internal/team-runtime/run.js.map +1 -0
  449. package/dist/internal/team-runtime/stream.js +9 -0
  450. package/dist/internal/team-runtime/stream.js.map +1 -0
  451. package/dist/internal/team-runtime/tools.js +17 -0
  452. package/dist/internal/team-runtime/tools.js.map +1 -0
  453. package/dist/internal/type-utils.js +1 -0
  454. package/dist/internal/type-utils.js.map +1 -0
  455. package/dist/internal/vector-search-options.js +9 -0
  456. package/dist/internal/vector-search-options.js.map +1 -0
  457. package/dist/mcp/index.js +3 -1
  458. package/dist/mcp/tool.js +7 -0
  459. package/dist/mcp/tool.js.map +1 -0
  460. package/dist/mcp/types.js +2 -0
  461. package/dist/mcp/types.js.map +1 -0
  462. package/dist/memory/assert.js +11 -0
  463. package/dist/memory/assert.js.map +1 -0
  464. package/dist/memory/compaction.js +26 -0
  465. package/dist/memory/compaction.js.map +1 -0
  466. package/dist/memory/errors.js +9 -0
  467. package/dist/memory/errors.js.map +1 -0
  468. package/dist/memory/index.js +23 -10
  469. package/dist/memory/options.js +10 -0
  470. package/dist/memory/options.js.map +1 -0
  471. package/dist/memory/scope-key.js +7 -0
  472. package/dist/memory/scope-key.js.map +1 -0
  473. package/dist/memory/types.js +2 -0
  474. package/dist/memory/types.js.map +1 -0
  475. package/dist/{types-CRda8x7p.d.ts → middleware-CWjnMbiH.d.ts} +64 -5
  476. package/dist/model-call-options.js +1 -0
  477. package/dist/model-call-options.js.map +1 -0
  478. package/dist/model-listing/errors.js +7 -0
  479. package/dist/model-listing/errors.js.map +1 -0
  480. package/dist/model-listing/index.js +4 -13
  481. package/dist/model-listing/index.js.map +1 -1
  482. package/dist/model-listing/types.js +2 -0
  483. package/dist/model-listing/types.js.map +1 -0
  484. package/dist/observability/group.js +30 -0
  485. package/dist/observability/group.js.map +1 -0
  486. package/dist/observability/index.d.ts +4 -6
  487. package/dist/observability/index.js +16 -8
  488. package/dist/observability/snapshot.js +7 -0
  489. package/dist/observability/snapshot.js.map +1 -0
  490. package/dist/observability/types.js +1 -0
  491. package/dist/observability/types.js.map +1 -0
  492. package/dist/pipeline/errors.js +9 -0
  493. package/dist/pipeline/errors.js.map +1 -0
  494. package/dist/pipeline/graph.js +21 -0
  495. package/dist/pipeline/graph.js.map +1 -0
  496. package/dist/pipeline/index.d.ts +4 -6
  497. package/dist/pipeline/index.js +27 -805
  498. package/dist/pipeline/index.js.map +1 -1
  499. package/dist/pipeline/observability.js +15 -0
  500. package/dist/pipeline/observability.js.map +1 -0
  501. package/dist/pipeline/pipeline.js +30 -0
  502. package/dist/pipeline/pipeline.js.map +1 -0
  503. package/dist/pipeline/runtime.js +17 -0
  504. package/dist/pipeline/runtime.js.map +1 -0
  505. package/dist/pipeline/types.js +1 -0
  506. package/dist/pipeline/types.js.map +1 -0
  507. package/dist/retry.js +20 -0
  508. package/dist/retry.js.map +1 -0
  509. package/dist/schema/index.js +1 -0
  510. package/dist/schema/index.js.map +1 -0
  511. package/dist/schema/zod-schema.js +7 -0
  512. package/dist/schema/zod-schema.js.map +1 -0
  513. package/dist/skills/index.js +41 -12
  514. package/dist/skills/instructions.js +7 -0
  515. package/dist/skills/instructions.js.map +1 -0
  516. package/dist/skills/load.js +39 -0
  517. package/dist/skills/load.js.map +1 -0
  518. package/dist/skills/local.js +9 -0
  519. package/dist/skills/local.js.map +1 -0
  520. package/dist/skills/tools.js +37 -0
  521. package/dist/skills/tools.js.map +1 -0
  522. package/dist/skills/types.js +7 -0
  523. package/dist/skills/types.js.map +1 -0
  524. package/dist/speech-generation/generate-speech.js +11 -0
  525. package/dist/speech-generation/generate-speech.js.map +1 -0
  526. package/dist/speech-generation/index.js +7 -4
  527. package/dist/speech-generation/types.js +2 -0
  528. package/dist/speech-generation/types.js.map +1 -0
  529. package/dist/streaming/index.js +4 -37
  530. package/dist/streaming/index.js.map +1 -1
  531. package/dist/streaming/readable-stream.js +8 -0
  532. package/dist/streaming/readable-stream.js.map +1 -0
  533. package/dist/{text-CmjXxakS.d.ts → text-GbW4WYMg.d.ts} +1 -1
  534. package/dist/tool/create-tool.js +14 -0
  535. package/dist/tool/create-tool.js.map +1 -0
  536. package/dist/tool/dynamic-tools.js +35 -0
  537. package/dist/tool/dynamic-tools.js.map +1 -0
  538. package/dist/tool/errors.js +11 -0
  539. package/dist/tool/errors.js.map +1 -0
  540. package/dist/tool/index.d.ts +3 -2
  541. package/dist/tool/index.js +41 -15
  542. package/dist/tool/middleware.js +7 -0
  543. package/dist/tool/middleware.js.map +1 -0
  544. package/dist/tool/question-tool.js +17 -0
  545. package/dist/tool/question-tool.js.map +1 -0
  546. package/dist/tool/skill-tool-marker.js +9 -0
  547. package/dist/tool/skill-tool-marker.js.map +1 -0
  548. package/dist/tool/think-tool.js +15 -0
  549. package/dist/tool/think-tool.js.map +1 -0
  550. package/dist/tool/tool.js +17 -0
  551. package/dist/tool/tool.js.map +1 -0
  552. package/dist/transcription/index.js +7 -4
  553. package/dist/transcription/transcribe.js +11 -0
  554. package/dist/transcription/transcribe.js.map +1 -0
  555. package/dist/transcription/types.js +2 -0
  556. package/dist/transcription/types.js.map +1 -0
  557. package/dist/{types-h0EL6Xn0.d.ts → types-Bqw0AuFl.d.ts} +6 -2
  558. package/dist/vector-store/filter.js +9 -0
  559. package/dist/vector-store/filter.js.map +1 -0
  560. package/dist/vector-store/index.js +31 -11
  561. package/dist/vector-store/ingest.js +19 -0
  562. package/dist/vector-store/ingest.js.map +1 -0
  563. package/dist/vector-store/lsh.js +7 -0
  564. package/dist/vector-store/lsh.js.map +1 -0
  565. package/dist/vector-store/retrieve.js +15 -0
  566. package/dist/vector-store/retrieve.js.map +1 -0
  567. package/dist/vector-store/types.js +1 -0
  568. package/dist/vector-store/types.js.map +1 -0
  569. package/package.json +2 -2
  570. package/dist/chunk-2QZJTG2E.js.map +0 -1
  571. package/dist/chunk-3RWESPUG.js.map +0 -1
  572. package/dist/chunk-4UQALF5Y.js.map +0 -1
  573. package/dist/chunk-AZB6N7P4.js +0 -320
  574. package/dist/chunk-AZB6N7P4.js.map +0 -1
  575. package/dist/chunk-JLJMVRRE.js.map +0 -1
  576. package/dist/chunk-K5L7R7XM.js.map +0 -1
  577. package/dist/chunk-OI3LSMJG.js +0 -1545
  578. package/dist/chunk-OI3LSMJG.js.map +0 -1
  579. package/dist/chunk-QGX73TSQ.js.map +0 -1
  580. package/dist/chunk-XC3LVC4K.js +0 -753
  581. package/dist/chunk-XC3LVC4K.js.map +0 -1
  582. package/dist/chunk-XEVOC433.js.map +0 -1
  583. package/dist/chunk-XSV5C4R5.js +0 -400
  584. package/dist/chunk-XSV5C4R5.js.map +0 -1
  585. package/dist/chunk-XU54PLSD.js +0 -4786
  586. package/dist/chunk-XU54PLSD.js.map +0 -1
  587. package/dist/middleware-mY_lpjDp.d.ts +0 -59
  588. package/dist/type-utils-CtHVDRn_.d.ts +0 -6
  589. /package/dist/{chunk-YK4WAAS4.js.map → chunk-2NLINXRF.js.map} +0 -0
  590. /package/dist/{chunk-SPD4XVR7.js.map → chunk-2XSMGVBG.js.map} +0 -0
  591. /package/dist/{chunk-3XQGVDU5.js.map → chunk-4C7AXYOM.js.map} +0 -0
  592. /package/dist/{chunk-IZNOP6JG.js.map → chunk-4FIVU53H.js.map} +0 -0
  593. /package/dist/{chunk-7JLAIN6E.js.map → chunk-4ONUNWGC.js.map} +0 -0
  594. /package/dist/{chunk-KSKST3KP.js.map → chunk-H3H74RWJ.js.map} +0 -0
  595. /package/dist/{chunk-OJBFDBLG.js.map → chunk-LBYJPMHC.js.map} +0 -0
  596. /package/dist/{chunk-J6LVLV6P.js.map → chunk-PLDJCCVL.js.map} +0 -0
  597. /package/dist/{chunk-AHLKV6KP.js.map → chunk-WN6AVBO4.js.map} +0 -0
  598. /package/dist/{chunk-Q5BCNYED.js.map → chunk-XJRNBTIV.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/evals/metrics.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { CompletionModel } from \"../completion\";\nimport { cosineSimilarity, type EmbeddingModel, embedText } from \"../embeddings\";\nimport { extract } from \"../extractor\";\nimport type { ZodSchema } from \"../schema\";\nimport { evalValuesEqual, formatValue } from \"./format\";\nimport { EvalOutcome } from \"./outcome\";\nimport { resolveActual, resolveActualText, resolveExpected, resolveJudgePrompt } from \"./selectors\";\nimport type { EvalCaseRequirements, EvalMetric, SelectorOrValue, ValueSelector } from \"./types\";\n\nexport type ExactMatchOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n required?: boolean | undefined;\n actual?: ValueSelector<Input, Output, Expected, unknown> | undefined;\n expected?: SelectorOrValue<Input, Output, Expected, unknown> | undefined;\n};\n\nexport function exactMatch<Input, Output, Expected = unknown, const Name extends string = string>(\n options: ExactMatchOptions<Input, Output, Expected> & {\n expected: Exclude<ExactMatchOptions<Input, Output, Expected>[\"expected\"], undefined>;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name>;\nexport function exactMatch<Input, Output, Expected = unknown, const Name extends string = string>(\n options?: Omit<ExactMatchOptions<Input, Output, Expected>, \"expected\"> & {\n expected?: undefined;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name, { expected: unknown }>;\nexport function exactMatch<Input, Output, Expected = unknown, const Name extends string = string>(\n options: ExactMatchOptions<Input, Output, Expected> & { name?: Name | undefined } = {},\n): EvalMetric<Input, Output, boolean, Expected, Name, EvalCaseRequirements> {\n return {\n name: (options.name ?? \"exact_match\") as Name,\n required: options.required ?? true,\n dataType: \"BOOLEAN\",\n direction: \"higher_is_better\",\n threshold: 1,\n async evaluate(args) {\n const actual = await resolveActual(options.actual, args);\n const expected = await resolveExpected(options.expected, args);\n if (expected === undefined) {\n return EvalOutcome.invalid(\"No expected value provided for exact match.\");\n }\n const passed = evalValuesEqual(actual, expected);\n return passed\n ? EvalOutcome.pass(true)\n : EvalOutcome.fail(false, { comment: `Expected ${formatValue(expected)}.` });\n },\n };\n}\n\nexport type ContainsOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n required?: boolean | undefined;\n actual?: ValueSelector<Input, Output, Expected, string> | undefined;\n expected?: SelectorOrValue<Input, Output, Expected, string | RegExp> | undefined;\n};\n\nexport function contains<Input, Output, Expected = unknown, const Name extends string = string>(\n options: ContainsOptions<Input, Output, Expected> & {\n expected: Exclude<ContainsOptions<Input, Output, Expected>[\"expected\"], undefined>;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name>;\nexport function contains<Input, Output, Expected = unknown, const Name extends string = string>(\n options?: Omit<ContainsOptions<Input, Output, Expected>, \"expected\"> & {\n expected?: undefined;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name, { expected: string | RegExp }>;\nexport function contains<Input, Output, Expected = unknown, const Name extends string = string>(\n options: ContainsOptions<Input, Output, Expected> & { name?: Name | undefined } = {},\n): EvalMetric<Input, Output, boolean, Expected, Name, EvalCaseRequirements> {\n return {\n name: (options.name ?? \"contains\") as Name,\n required: options.required ?? true,\n dataType: \"BOOLEAN\",\n direction: \"higher_is_better\",\n threshold: 1,\n async evaluate(args) {\n const actual = await resolveActualText(options.actual, args);\n const expected = await resolveExpected(options.expected, args);\n if (expected === undefined) {\n return EvalOutcome.invalid(\"No expected value provided for contains.\");\n }\n if (typeof expected !== \"string\" && !(expected instanceof RegExp)) {\n return EvalOutcome.invalid(\"Contains expected value must be a string or RegExp.\");\n }\n const passed =\n expected instanceof RegExp ? regexMatches(expected, actual) : actual.includes(expected);\n return passed\n ? EvalOutcome.pass(true)\n : EvalOutcome.fail(false, { comment: `Output did not contain ${String(expected)}.` });\n },\n };\n}\n\nexport type NotContainsOptions<Input, Output, Expected = unknown> = ContainsOptions<\n Input,\n Output,\n Expected\n>;\n\nexport function notContains<Input, Output, Expected = unknown, const Name extends string = string>(\n options: NotContainsOptions<Input, Output, Expected> & {\n expected: Exclude<NotContainsOptions<Input, Output, Expected>[\"expected\"], undefined>;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name>;\nexport function notContains<Input, Output, Expected = unknown, const Name extends string = string>(\n options?: Omit<NotContainsOptions<Input, Output, Expected>, \"expected\"> & {\n expected?: undefined;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name, { expected: string | RegExp }>;\nexport function notContains<Input, Output, Expected = unknown, const Name extends string = string>(\n options: NotContainsOptions<Input, Output, Expected> & { name?: Name | undefined } = {},\n): EvalMetric<Input, Output, boolean, Expected, Name, EvalCaseRequirements> {\n return {\n name: (options.name ?? \"not_contains\") as Name,\n required: options.required ?? true,\n dataType: \"BOOLEAN\",\n direction: \"higher_is_better\",\n threshold: 1,\n async evaluate(args) {\n const actual = await resolveActualText(options.actual, args);\n const expected = await resolveExpected(options.expected, args);\n if (expected === undefined) {\n return EvalOutcome.invalid(\"No expected value provided for notContains.\");\n }\n if (typeof expected !== \"string\" && !(expected instanceof RegExp)) {\n return EvalOutcome.invalid(\"notContains expected value must be a string or RegExp.\");\n }\n const found = textExpectationMatches(expected, actual);\n return found\n ? EvalOutcome.fail(false, {\n comment: `Output contained forbidden value ${String(expected)}.`,\n })\n : EvalOutcome.pass(true);\n },\n };\n}\n\nexport type ContainsListOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n required?: boolean | undefined;\n actual?: ValueSelector<Input, Output, Expected, string> | undefined;\n expected?: SelectorOrValue<Input, Output, Expected, ReadonlyArray<string | RegExp>> | undefined;\n};\n\nexport type ContainsAllOptions<Input, Output, Expected = unknown> = ContainsListOptions<\n Input,\n Output,\n Expected\n>;\n\nexport function containsAll<Input, Output, Expected = unknown, const Name extends string = string>(\n options: ContainsAllOptions<Input, Output, Expected> & {\n expected: Exclude<ContainsAllOptions<Input, Output, Expected>[\"expected\"], undefined>;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name>;\nexport function containsAll<Input, Output, Expected = unknown, const Name extends string = string>(\n options: Omit<ContainsAllOptions<Input, Output, Expected>, \"expected\"> & {\n expected?: undefined;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name, { expected: ReadonlyArray<string | RegExp> }>;\nexport function containsAll<Input, Output, Expected = unknown, const Name extends string = string>(\n options: ContainsAllOptions<Input, Output, Expected> & { name?: Name | undefined },\n): EvalMetric<Input, Output, boolean, Expected, Name, EvalCaseRequirements> {\n return containsListMetric(\"contains_all\", \"all\", options);\n}\n\nexport type ContainsAnyOptions<Input, Output, Expected = unknown> = ContainsListOptions<\n Input,\n Output,\n Expected\n>;\n\nexport function containsAny<Input, Output, Expected = unknown, const Name extends string = string>(\n options: ContainsAnyOptions<Input, Output, Expected> & {\n expected: Exclude<ContainsAnyOptions<Input, Output, Expected>[\"expected\"], undefined>;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name>;\nexport function containsAny<Input, Output, Expected = unknown, const Name extends string = string>(\n options: Omit<ContainsAnyOptions<Input, Output, Expected>, \"expected\"> & {\n expected?: undefined;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name, { expected: ReadonlyArray<string | RegExp> }>;\nexport function containsAny<Input, Output, Expected = unknown, const Name extends string = string>(\n options: ContainsAnyOptions<Input, Output, Expected> & { name?: Name | undefined },\n): EvalMetric<Input, Output, boolean, Expected, Name, EvalCaseRequirements> {\n return containsListMetric(\"contains_any\", \"any\", options);\n}\n\nfunction containsListMetric<Input, Output, Expected, const Name extends string>(\n defaultName: string,\n mode: \"all\" | \"any\",\n options: ContainsListOptions<Input, Output, Expected> & { name?: Name | undefined },\n): EvalMetric<Input, Output, boolean, Expected, Name> {\n return {\n name: (options.name ?? defaultName) as Name,\n required: options.required ?? true,\n dataType: \"BOOLEAN\",\n direction: \"higher_is_better\",\n threshold: 1,\n async evaluate(args) {\n const actual = await resolveActualText(options.actual, args);\n const expected = await resolveExpected(options.expected, args);\n if (!Array.isArray(expected) || expected.length === 0) {\n return EvalOutcome.invalid(`${defaultName} expected value must be a non-empty array.`);\n }\n if (expected.some((value) => typeof value !== \"string\" && !(value instanceof RegExp))) {\n return EvalOutcome.invalid(`${defaultName} expected values must be strings or RegExp.`);\n }\n const matches = expected.map((value) => textExpectationMatches(value, actual));\n const passed = mode === \"all\" ? matches.every(Boolean) : matches.some(Boolean);\n if (passed) return EvalOutcome.pass(true);\n const missing = expected.filter((_, index) => !matches[index]).map(String);\n const comment =\n mode === \"all\"\n ? `Output was missing: ${missing.join(\", \")}.`\n : `Output matched none of: ${expected.map(String).join(\", \")}.`;\n return EvalOutcome.fail(false, { comment });\n },\n };\n}\n\nexport type MatchesOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n required?: boolean | undefined;\n actual?: ValueSelector<Input, Output, Expected, string> | undefined;\n expected?: SelectorOrValue<Input, Output, Expected, RegExp> | undefined;\n};\n\nexport function matches<Input, Output, Expected = unknown, const Name extends string = string>(\n options: MatchesOptions<Input, Output, Expected> & {\n expected: Exclude<MatchesOptions<Input, Output, Expected>[\"expected\"], undefined>;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name>;\nexport function matches<Input, Output, Expected = unknown, const Name extends string = string>(\n options: Omit<MatchesOptions<Input, Output, Expected>, \"expected\"> & {\n expected?: undefined;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name, { expected: RegExp }>;\nexport function matches<Input, Output, Expected = unknown, const Name extends string = string>(\n options: MatchesOptions<Input, Output, Expected> & { name?: Name | undefined },\n): EvalMetric<Input, Output, boolean, Expected, Name, EvalCaseRequirements> {\n return regexMetric(\"matches\", false, options);\n}\n\nexport type DoesNotMatchOptions<Input, Output, Expected = unknown> = MatchesOptions<\n Input,\n Output,\n Expected\n>;\n\nexport function doesNotMatch<Input, Output, Expected = unknown, const Name extends string = string>(\n options: DoesNotMatchOptions<Input, Output, Expected> & {\n expected: Exclude<DoesNotMatchOptions<Input, Output, Expected>[\"expected\"], undefined>;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name>;\nexport function doesNotMatch<Input, Output, Expected = unknown, const Name extends string = string>(\n options: Omit<DoesNotMatchOptions<Input, Output, Expected>, \"expected\"> & {\n expected?: undefined;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, boolean, Expected, Name, { expected: RegExp }>;\nexport function doesNotMatch<Input, Output, Expected = unknown, const Name extends string = string>(\n options: DoesNotMatchOptions<Input, Output, Expected> & { name?: Name | undefined },\n): EvalMetric<Input, Output, boolean, Expected, Name, EvalCaseRequirements> {\n return regexMetric(\"does_not_match\", true, options);\n}\n\nfunction regexMetric<Input, Output, Expected, const Name extends string>(\n defaultName: string,\n negate: boolean,\n options: MatchesOptions<Input, Output, Expected> & { name?: Name | undefined },\n): EvalMetric<Input, Output, boolean, Expected, Name> {\n return {\n name: (options.name ?? defaultName) as Name,\n required: options.required ?? true,\n dataType: \"BOOLEAN\",\n direction: \"higher_is_better\",\n threshold: 1,\n async evaluate(args) {\n const actual = await resolveActualText(options.actual, args);\n const expected = await resolveExpected(options.expected, args);\n if (!(expected instanceof RegExp)) {\n return EvalOutcome.invalid(`${defaultName} expected value must be a RegExp.`);\n }\n const matched = regexMatches(expected, actual);\n const passed = negate ? !matched : matched;\n return passed\n ? EvalOutcome.pass(true)\n : EvalOutcome.fail(false, {\n comment: negate\n ? `Output matched forbidden pattern ${String(expected)}.`\n : `Output did not match ${String(expected)}.`,\n });\n },\n };\n}\n\nexport type MaxLengthOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n required?: boolean | undefined;\n actual?: ValueSelector<Input, Output, Expected, string> | undefined;\n max: SelectorOrValue<Input, Output, Expected, number>;\n};\n\nexport function maxLength<Input, Output, Expected = unknown, const Name extends string = string>(\n options: MaxLengthOptions<Input, Output, Expected> & { name?: Name | undefined },\n): EvalMetric<Input, Output, boolean, Expected, Name> {\n return {\n name: (options.name ?? \"max_length\") as Name,\n required: options.required ?? true,\n dataType: \"BOOLEAN\",\n direction: \"higher_is_better\",\n threshold: 1,\n async evaluate(args) {\n const actual = await resolveActualText(options.actual, args);\n const max = await resolveOption(options.max, args);\n if (!Number.isInteger(max) || max < 0) {\n return EvalOutcome.invalid(\"maxLength max must be a non-negative integer.\");\n }\n const length = Array.from(actual).length;\n return length <= max\n ? EvalOutcome.pass(true)\n : EvalOutcome.fail(false, { comment: `Output length ${length} exceeded maximum ${max}.` });\n },\n };\n}\n\nexport type RequiredFieldsOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n required?: boolean | undefined;\n actual?: ValueSelector<Input, Output, Expected, unknown> | undefined;\n expected: SelectorOrValue<Input, Output, Expected, readonly string[]>;\n};\n\nexport function requiredFields<\n Input,\n Output,\n Expected = unknown,\n const Name extends string = string,\n>(\n options: RequiredFieldsOptions<Input, Output, Expected> & { name?: Name | undefined },\n): EvalMetric<Input, Output, boolean, Expected, Name> {\n return {\n name: (options.name ?? \"required_fields\") as Name,\n required: options.required ?? true,\n dataType: \"BOOLEAN\",\n direction: \"higher_is_better\",\n threshold: 1,\n async evaluate(args) {\n const actual = await resolveActual(options.actual, args);\n const expected = await resolveOption(options.expected, args);\n if (\n !Array.isArray(expected) ||\n expected.length === 0 ||\n expected.some((field) => typeof field !== \"string\" || field.length === 0)\n ) {\n return EvalOutcome.invalid(\n \"requiredFields expected value must be a non-empty string array.\",\n );\n }\n if (typeof actual !== \"object\" || actual === null || Array.isArray(actual)) {\n return EvalOutcome.invalid(\"requiredFields actual value must be an object.\");\n }\n const missing = expected.filter((field) => !Object.hasOwn(actual, field));\n return missing.length === 0\n ? EvalOutcome.pass(true)\n : EvalOutcome.fail(false, { comment: `Missing required fields: ${missing.join(\", \")}.` });\n },\n };\n}\n\nfunction regexMatches(pattern: RegExp, text: string): boolean {\n pattern.lastIndex = 0;\n const matched = pattern.test(text);\n pattern.lastIndex = 0;\n return matched;\n}\n\nfunction textExpectationMatches(expected: string | RegExp, actual: string): boolean {\n return expected instanceof RegExp ? regexMatches(expected, actual) : actual.includes(expected);\n}\n\nasync function resolveOption<Input, Output, Expected, Value>(\n value: SelectorOrValue<Input, Output, Expected, Value>,\n args: Parameters<ValueSelector<Input, Output, Expected, Value>>[0],\n): Promise<Value> {\n return typeof value === \"function\"\n ? (value as ValueSelector<Input, Output, Expected, Value>)(args)\n : value;\n}\n\nexport type SemanticSimilarityOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n required?: boolean | undefined;\n model: EmbeddingModel;\n threshold: number;\n actual?: ValueSelector<Input, Output, Expected, string> | undefined;\n expected?: SelectorOrValue<Input, Output, Expected, string> | undefined;\n};\n\nexport function semanticSimilarity<\n Input,\n Output,\n Expected = unknown,\n const Name extends string = string,\n>(\n options: SemanticSimilarityOptions<Input, Output, Expected> & {\n expected: Exclude<SemanticSimilarityOptions<Input, Output, Expected>[\"expected\"], undefined>;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, number, Expected, Name>;\nexport function semanticSimilarity<\n Input,\n Output,\n Expected = unknown,\n const Name extends string = string,\n>(\n options: Omit<SemanticSimilarityOptions<Input, Output, Expected>, \"expected\"> & {\n expected?: undefined;\n name?: Name | undefined;\n },\n): EvalMetric<Input, Output, number, Expected, Name, { expected: string }>;\nexport function semanticSimilarity<\n Input,\n Output,\n Expected = unknown,\n const Name extends string = string,\n>(\n options: SemanticSimilarityOptions<Input, Output, Expected> & { name?: Name | undefined },\n): EvalMetric<Input, Output, number, Expected, Name, EvalCaseRequirements> {\n const threshold = unitInterval(options.threshold, \"semanticSimilarity threshold\");\n return {\n name: (options.name ?? \"semantic_similarity\") as Name,\n required: options.required ?? true,\n dataType: \"NUMERIC\",\n direction: \"higher_is_better\",\n threshold,\n async evaluate(args) {\n const actual = await resolveActualText(options.actual, args);\n const expected = await resolveExpected(options.expected, args);\n if (expected === undefined) {\n return EvalOutcome.invalid(\"No expected value provided for semantic similarity.\");\n }\n if (typeof expected !== \"string\") {\n return EvalOutcome.invalid(\"Semantic similarity expected value must be a string.\");\n }\n const [{ embedding: actualEmbedding }, { embedding: expectedEmbedding }] = await Promise.all([\n embedText({ model: options.model, text: actual }),\n embedText({ model: options.model, text: expected }),\n ]);\n const score = cosineSimilarity(actualEmbedding.vector, expectedEmbedding.vector);\n return score >= threshold\n ? EvalOutcome.pass(score)\n : EvalOutcome.fail(score, { comment: `Similarity below threshold ${threshold}.` });\n },\n };\n}\n\nexport type LlmJudgeOptions<Input, Output, SchemaOutput, Expected = unknown> = {\n name?: string | undefined;\n required?: boolean | undefined;\n model: CompletionModel;\n schema: ZodSchema<SchemaOutput>;\n passes(value: SchemaOutput): boolean;\n instructions?: string | undefined;\n retries?: number | undefined;\n prompt?: ValueSelector<Input, Output, Expected, string> | undefined;\n};\n\nexport function llmJudge<\n Input,\n Output,\n SchemaOutput,\n Expected = unknown,\n const Name extends string = string,\n>(\n options: LlmJudgeOptions<Input, Output, SchemaOutput, Expected> & { name?: Name | undefined },\n): EvalMetric<Input, Output, SchemaOutput, Expected, Name> {\n const retries = extractionRetries(options.retries);\n return {\n name: (options.name ?? \"llm_judge\") as Name,\n required: options.required ?? true,\n async evaluate(args) {\n try {\n const result = await extract({\n model: options.model,\n outputSchema: options.schema,\n instructions:\n options.instructions ??\n \"Judge the eval case by the requested schema. Submit the judgment using the schema.\",\n text: await resolveJudgePrompt(options.prompt, args),\n retries,\n });\n return options.passes(result.output)\n ? EvalOutcome.pass(result.output, { usage: result.usage })\n : EvalOutcome.fail(result.output, { usage: result.usage });\n } catch (error) {\n return EvalOutcome.fromError(error);\n }\n },\n };\n}\n\nexport type LlmScoreMetricScore = {\n score: number;\n feedback: string;\n};\n\nexport type LlmScoreOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n required?: boolean | undefined;\n model: CompletionModel;\n threshold: number;\n criteria: string | string[];\n instructions?: string | undefined;\n retries?: number | undefined;\n prompt?: ValueSelector<Input, Output, Expected, string> | undefined;\n};\n\nexport function llmScore<Input, Output, Expected = unknown, const Name extends string = string>(\n options: LlmScoreOptions<Input, Output, Expected> & { name?: Name | undefined },\n): EvalMetric<Input, Output, LlmScoreMetricScore, Expected, Name> {\n const criteria = Array.isArray(options.criteria) ? options.criteria.join(\"\\n\") : options.criteria;\n if (criteria.trim().length === 0) throw new TypeError(\"llmScore criteria must not be empty.\");\n const threshold = unitInterval(options.threshold, \"llmScore threshold\");\n const retries = extractionRetries(options.retries);\n return {\n name: (options.name ?? \"llm_score\") as Name,\n required: options.required ?? true,\n dataType: \"NUMERIC\",\n projectScore: (score) => score.score,\n direction: \"higher_is_better\",\n threshold,\n async evaluate(args) {\n try {\n const result = await extract({\n model: options.model,\n outputSchema: z.object({\n score: z.number(),\n feedback: z.string(),\n }),\n instructions:\n options.instructions ??\n `Score the eval case against these criteria:\\n${criteria}\\n\\nReturn a score between 0 and 1 and brief feedback.`,\n text: await resolveJudgePrompt(options.prompt, args),\n retries,\n });\n const score = result.output;\n if (score.score < 0 || score.score > 1) {\n return EvalOutcome.invalid(`Score ${score.score} outside valid range [0, 1].`, {\n score,\n usage: result.usage,\n });\n }\n return score.score >= threshold\n ? EvalOutcome.pass(score, { comment: score.feedback, usage: result.usage })\n : EvalOutcome.fail(score, { comment: score.feedback, usage: result.usage });\n } catch (error) {\n return EvalOutcome.fromError(error);\n }\n },\n };\n}\n\nfunction extractionRetries(retries: number | undefined): { maxAttempts: number } | undefined {\n const retryCount = retries ?? 0;\n if (!Number.isInteger(retryCount) || retryCount < 0) {\n throw new RangeError(\"Eval metric retries must be a non-negative integer.\");\n }\n if (retryCount === 0) {\n return undefined;\n }\n return { maxAttempts: retryCount + 1 };\n}\n\nfunction unitInterval(value: number, label: string): number {\n if (!Number.isFinite(value) || value < 0 || value > 1) {\n throw new RangeError(`${label} must be between 0 and 1.`);\n }\n return value;\n}\n"],"mappings":"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","names":["matches"]}
@@ -0,0 +1,43 @@
1
+ // src/internal/agent-runtime/stream-events.ts
2
+ function addTurn(turn, event) {
3
+ if (event.type === "text_delta") {
4
+ return { type: "text_delta", turn, delta: event.delta };
5
+ }
6
+ if (event.type === "reasoning_delta") {
7
+ const mapped = { type: "reasoning_delta", turn, delta: event.delta };
8
+ if (event.id !== void 0) mapped.id = event.id;
9
+ if (event.contentType !== void 0) mapped.contentType = event.contentType;
10
+ if (event.signature !== void 0) mapped.signature = event.signature;
11
+ return mapped;
12
+ }
13
+ if (event.type === "source") {
14
+ return { type: "source", turn, source: event.source };
15
+ }
16
+ if (event.type === "provider_tool_call") {
17
+ return { type: "provider_tool_call", turn, toolCall: event.toolCall };
18
+ }
19
+ return { type: "tool_call", turn, toolCall: event.toolCall };
20
+ }
21
+ function addTurnToToolCallDelta(turn, event) {
22
+ const mapped = {
23
+ type: "tool_call_delta",
24
+ turn,
25
+ id: event.id
26
+ };
27
+ if (event.callId !== void 0) mapped.callId = event.callId;
28
+ if (event.name !== void 0) mapped.name = event.name;
29
+ if (event.argumentsDelta !== void 0) mapped.argumentsDelta = event.argumentsDelta;
30
+ if (event.argumentsMode !== void 0) mapped.argumentsMode = event.argumentsMode;
31
+ if (event.signature !== void 0) mapped.signature = event.signature;
32
+ return mapped;
33
+ }
34
+ function isGenerationDeltaEvent(type) {
35
+ return type === "text_delta" || type === "reasoning_delta" || type === "tool_call_delta" || type === "tool_call" || type === "source" || type === "provider_tool_call";
36
+ }
37
+
38
+ export {
39
+ addTurn,
40
+ addTurnToToolCallDelta,
41
+ isGenerationDeltaEvent
42
+ };
43
+ //# sourceMappingURL=chunk-YWRXOPHC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/agent-runtime/stream-events.ts"],"sourcesContent":["import type {\n AgentDeltaEvent,\n AgentStreamEvent,\n AgentToolCallDeltaEvent,\n} from \"../../agent/run-types\";\nimport type { CompletionModelStreamEvent } from \"../../completion/types\";\n\nexport function addTurn(turn: number, event: AgentDeltaEvent): AgentStreamEvent {\n if (event.type === \"text_delta\") {\n return { type: \"text_delta\", turn, delta: event.delta };\n }\n if (event.type === \"reasoning_delta\") {\n const mapped: AgentStreamEvent = { type: \"reasoning_delta\", turn, delta: event.delta };\n if (event.id !== undefined) mapped.id = event.id;\n if (event.contentType !== undefined) mapped.contentType = event.contentType;\n if (event.signature !== undefined) mapped.signature = event.signature;\n return mapped;\n }\n if (event.type === \"source\") {\n return { type: \"source\", turn, source: event.source };\n }\n if (event.type === \"provider_tool_call\") {\n return { type: \"provider_tool_call\", turn, toolCall: event.toolCall };\n }\n return { type: \"tool_call\", turn, toolCall: event.toolCall };\n}\n\nexport function addTurnToToolCallDelta(\n turn: number,\n event: Extract<CompletionModelStreamEvent, { type: \"tool_call_delta\" }>,\n): AgentToolCallDeltaEvent {\n const mapped: AgentToolCallDeltaEvent = {\n type: \"tool_call_delta\",\n turn,\n id: event.id,\n };\n if (event.callId !== undefined) mapped.callId = event.callId;\n if (event.name !== undefined) mapped.name = event.name;\n if (event.argumentsDelta !== undefined) mapped.argumentsDelta = event.argumentsDelta;\n if (event.argumentsMode !== undefined) mapped.argumentsMode = event.argumentsMode;\n if (event.signature !== undefined) mapped.signature = event.signature;\n return mapped;\n}\n\nexport function isGenerationDeltaEvent(type: string): boolean {\n return (\n type === \"text_delta\" ||\n type === \"reasoning_delta\" ||\n type === \"tool_call_delta\" ||\n type === \"tool_call\" ||\n type === \"source\" ||\n type === \"provider_tool_call\"\n );\n}\n"],"mappings":";AAOO,SAAS,QAAQ,MAAc,OAA0C;AAC9E,MAAI,MAAM,SAAS,cAAc;AAC/B,WAAO,EAAE,MAAM,cAAc,MAAM,OAAO,MAAM,MAAM;AAAA,EACxD;AACA,MAAI,MAAM,SAAS,mBAAmB;AACpC,UAAM,SAA2B,EAAE,MAAM,mBAAmB,MAAM,OAAO,MAAM,MAAM;AACrF,QAAI,MAAM,OAAO,OAAW,QAAO,KAAK,MAAM;AAC9C,QAAI,MAAM,gBAAgB,OAAW,QAAO,cAAc,MAAM;AAChE,QAAI,MAAM,cAAc,OAAW,QAAO,YAAY,MAAM;AAC5D,WAAO;AAAA,EACT;AACA,MAAI,MAAM,SAAS,UAAU;AAC3B,WAAO,EAAE,MAAM,UAAU,MAAM,QAAQ,MAAM,OAAO;AAAA,EACtD;AACA,MAAI,MAAM,SAAS,sBAAsB;AACvC,WAAO,EAAE,MAAM,sBAAsB,MAAM,UAAU,MAAM,SAAS;AAAA,EACtE;AACA,SAAO,EAAE,MAAM,aAAa,MAAM,UAAU,MAAM,SAAS;AAC7D;AAEO,SAAS,uBACd,MACA,OACyB;AACzB,QAAM,SAAkC;AAAA,IACtC,MAAM;AAAA,IACN;AAAA,IACA,IAAI,MAAM;AAAA,EACZ;AACA,MAAI,MAAM,WAAW,OAAW,QAAO,SAAS,MAAM;AACtD,MAAI,MAAM,SAAS,OAAW,QAAO,OAAO,MAAM;AAClD,MAAI,MAAM,mBAAmB,OAAW,QAAO,iBAAiB,MAAM;AACtE,MAAI,MAAM,kBAAkB,OAAW,QAAO,gBAAgB,MAAM;AACpE,MAAI,MAAM,cAAc,OAAW,QAAO,YAAY,MAAM;AAC5D,SAAO;AACT;AAEO,SAAS,uBAAuB,MAAuB;AAC5D,SACE,SAAS,gBACT,SAAS,qBACT,SAAS,qBACT,SAAS,eACT,SAAS,YACT,SAAS;AAEb;","names":[]}
@@ -0,0 +1,27 @@
1
+ // src/internal/agent-runtime/approval-requirement.ts
2
+ function toolMayRequireApproval(requirement) {
3
+ return requirement !== void 0 && requirement !== false;
4
+ }
5
+ function assertToolApprovalRequirement(requirement, options) {
6
+ if (typeof requirement === "boolean") {
7
+ return;
8
+ }
9
+ if (options.allowFunction && typeof requirement === "function") {
10
+ return;
11
+ }
12
+ if (typeof requirement !== "object" || requirement === null || Array.isArray(requirement)) {
13
+ throw new TypeError(
14
+ 'Tool "requiresApproval" must be a boolean, a function, or an object with an optional string reason.'
15
+ );
16
+ }
17
+ const reason = requirement.reason;
18
+ if (reason !== void 0 && typeof reason !== "string") {
19
+ throw new TypeError('Tool "requiresApproval.reason" must be a string.');
20
+ }
21
+ }
22
+
23
+ export {
24
+ toolMayRequireApproval,
25
+ assertToolApprovalRequirement
26
+ };
27
+ //# sourceMappingURL=chunk-YZVFIW5D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/agent-runtime/approval-requirement.ts"],"sourcesContent":["import type { ToolApprovalRequirement } from \"../../tool/tool\";\n\nexport function toolMayRequireApproval(requirement: unknown): boolean {\n return requirement !== undefined && requirement !== false;\n}\n\nexport function assertToolApprovalRequirement(\n requirement: unknown,\n options: { allowFunction: boolean },\n): asserts requirement is boolean | ToolApprovalRequirement | ((...args: never[]) => unknown) {\n if (typeof requirement === \"boolean\") {\n return;\n }\n if (options.allowFunction && typeof requirement === \"function\") {\n return;\n }\n if (typeof requirement !== \"object\" || requirement === null || Array.isArray(requirement)) {\n throw new TypeError(\n 'Tool \"requiresApproval\" must be a boolean, a function, or an object with an optional string reason.',\n );\n }\n const reason = (requirement as { reason?: unknown }).reason;\n if (reason !== undefined && typeof reason !== \"string\") {\n throw new TypeError('Tool \"requiresApproval.reason\" must be a string.');\n }\n}\n"],"mappings":";AAEO,SAAS,uBAAuB,aAA+B;AACpE,SAAO,gBAAgB,UAAa,gBAAgB;AACtD;AAEO,SAAS,8BACd,aACA,SAC4F;AAC5F,MAAI,OAAO,gBAAgB,WAAW;AACpC;AAAA,EACF;AACA,MAAI,QAAQ,iBAAiB,OAAO,gBAAgB,YAAY;AAC9D;AAAA,EACF;AACA,MAAI,OAAO,gBAAgB,YAAY,gBAAgB,QAAQ,MAAM,QAAQ,WAAW,GAAG;AACzF,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,SAAU,YAAqC;AACrD,MAAI,WAAW,UAAa,OAAO,WAAW,UAAU;AACtD,UAAM,IAAI,UAAU,kDAAkD;AAAA,EACxE;AACF;","names":[]}
@@ -0,0 +1,33 @@
1
+ import {
2
+ assertFiniteMinScore,
3
+ assertPositiveSearchLimit
4
+ } from "./chunk-5V533R7F.js";
5
+
6
+ // src/agent/vector-context.ts
7
+ function createVectorContext(options) {
8
+ const topK = assertPositiveSearchLimit(options.topK);
9
+ const minScore = assertFiniteMinScore(options.minScore);
10
+ let context = {
11
+ ...options,
12
+ topK,
13
+ kind: "vector-context"
14
+ };
15
+ if (minScore !== void 0) {
16
+ context = { ...context, minScore };
17
+ }
18
+ return Object.freeze(context);
19
+ }
20
+ function isVectorContext(value) {
21
+ if (typeof value !== "object" || value === null) return false;
22
+ const candidate = value;
23
+ if (candidate.kind !== "vector-context" || typeof candidate.store?.search !== "function") {
24
+ return false;
25
+ }
26
+ return candidate.model !== void 0 || candidate.models?.dense !== void 0 && candidate.models.sparse !== void 0;
27
+ }
28
+
29
+ export {
30
+ createVectorContext,
31
+ isVectorContext
32
+ };
33
+ //# sourceMappingURL=chunk-ZHC5CD6J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/agent/vector-context.ts"],"sourcesContent":["import type { Document } from \"../completion\";\nimport type { EmbeddingModel, SparseEmbeddingModel } from \"../embeddings\";\nimport { assertFiniteMinScore, assertPositiveSearchLimit } from \"../internal/vector-search-options\";\nimport type { RetrySetting } from \"../retry\";\nimport type {\n HybridVectorStore,\n VectorFilter,\n VectorFusion,\n VectorSearchResult,\n VectorStore,\n} from \"../vector-store\";\n\nexport type VectorContextBaseOptions<T = unknown> = {\n topK: number;\n minScore?: number | undefined;\n filter?: VectorFilter | undefined;\n retries?: RetrySetting | undefined;\n format?(result: VectorSearchResult<T>): Document;\n};\n\nexport type CreateVectorContextOptions<T = unknown> = VectorContextBaseOptions<T> & {\n store: VectorStore<T>;\n model: EmbeddingModel;\n models?: never;\n};\n\nexport type CreateHybridVectorContextOptions<T = unknown> = VectorContextBaseOptions<T> & {\n store: HybridVectorStore<T>;\n model?: never;\n models: { dense: EmbeddingModel; sparse: SparseEmbeddingModel };\n fusion?: VectorFusion | undefined;\n};\n\nexport type VectorContext<T = unknown> = (\n | CreateVectorContextOptions<T>\n | CreateHybridVectorContextOptions<T>\n) & {\n readonly kind: \"vector-context\";\n};\n\nexport function createVectorContext<T>(options: CreateVectorContextOptions<T>): VectorContext<T>;\nexport function createVectorContext<T>(\n options: CreateHybridVectorContextOptions<T>,\n): VectorContext<T>;\nexport function createVectorContext<T>(\n options: CreateVectorContextOptions<T> | CreateHybridVectorContextOptions<T>,\n): VectorContext<T> {\n const topK = assertPositiveSearchLimit(options.topK);\n const minScore = assertFiniteMinScore(options.minScore);\n let context: VectorContext<T> = {\n ...options,\n topK,\n kind: \"vector-context\" as const,\n };\n if (minScore !== undefined) {\n context = { ...context, minScore };\n }\n return Object.freeze(context);\n}\n\nexport function isVectorContext(value: unknown): value is VectorContext {\n if (typeof value !== \"object\" || value === null) return false;\n const candidate = value as {\n kind?: unknown;\n store?: { search?: unknown };\n model?: unknown;\n models?: { dense?: unknown; sparse?: unknown };\n };\n if (candidate.kind !== \"vector-context\" || typeof candidate.store?.search !== \"function\") {\n return false;\n }\n return (\n candidate.model !== undefined ||\n (candidate.models?.dense !== undefined && candidate.models.sparse !== undefined)\n );\n}\n"],"mappings":";;;;;;AA4CO,SAAS,oBACd,SACkB;AAClB,QAAM,OAAO,0BAA0B,QAAQ,IAAI;AACnD,QAAM,WAAW,qBAAqB,QAAQ,QAAQ;AACtD,MAAI,UAA4B;AAAA,IAC9B,GAAG;AAAA,IACH;AAAA,IACA,MAAM;AAAA,EACR;AACA,MAAI,aAAa,QAAW;AAC1B,cAAU,EAAE,GAAG,SAAS,SAAS;AAAA,EACnC;AACA,SAAO,OAAO,OAAO,OAAO;AAC9B;AAEO,SAAS,gBAAgB,OAAwC;AACtE,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,QAAM,YAAY;AAMlB,MAAI,UAAU,SAAS,oBAAoB,OAAO,UAAU,OAAO,WAAW,YAAY;AACxF,WAAO;AAAA,EACT;AACA,SACE,UAAU,UAAU,UACnB,UAAU,QAAQ,UAAU,UAAa,UAAU,OAAO,WAAW;AAE1E;","names":[]}
@@ -0,0 +1,23 @@
1
+ // src/memory/assert.ts
2
+ function assertPositiveInteger(value, name) {
3
+ if (!Number.isSafeInteger(value) || value < 1) {
4
+ throw new RangeError(`${name} must be a positive integer.`);
5
+ }
6
+ }
7
+ function assertNonnegativeInteger(value, name) {
8
+ if (!Number.isSafeInteger(value) || value < 0) {
9
+ throw new RangeError(`${name} must be a nonnegative integer.`);
10
+ }
11
+ }
12
+ function assertFiniteNumber(value, name) {
13
+ if (!Number.isFinite(value)) {
14
+ throw new RangeError(`${name} must be finite.`);
15
+ }
16
+ }
17
+
18
+ export {
19
+ assertPositiveInteger,
20
+ assertNonnegativeInteger,
21
+ assertFiniteNumber
22
+ };
23
+ //# sourceMappingURL=chunk-ZPJFXRQZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/memory/assert.ts"],"sourcesContent":["export function assertPositiveInteger(value: number, name: string): void {\n if (!Number.isSafeInteger(value) || value < 1) {\n throw new RangeError(`${name} must be a positive integer.`);\n }\n}\n\nexport function assertNonnegativeInteger(value: number, name: string): void {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new RangeError(`${name} must be a nonnegative integer.`);\n }\n}\n\nexport function assertFiniteNumber(value: number, name: string): void {\n if (!Number.isFinite(value)) {\n throw new RangeError(`${name} must be finite.`);\n }\n}\n"],"mappings":";AAAO,SAAS,sBAAsB,OAAe,MAAoB;AACvE,MAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,GAAG;AAC7C,UAAM,IAAI,WAAW,GAAG,IAAI,8BAA8B;AAAA,EAC5D;AACF;AAEO,SAAS,yBAAyB,OAAe,MAAoB;AAC1E,MAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,GAAG;AAC7C,UAAM,IAAI,WAAW,GAAG,IAAI,iCAAiC;AAAA,EAC/D;AACF;AAEO,SAAS,mBAAmB,OAAe,MAAoB;AACpE,MAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAC3B,UAAM,IAAI,WAAW,GAAG,IAAI,kBAAkB;AAAA,EAChD;AACF;","names":[]}
@@ -0,0 +1,57 @@
1
+ import {
2
+ defaultOutputValue,
3
+ formatValue
4
+ } from "./chunk-ZYXMWEL4.js";
5
+
6
+ // src/evals/selectors.ts
7
+ function selectPromptOutput(args) {
8
+ if (typeof args.output !== "object" || args.output === null || !("output" in args.output) || typeof args.output.output !== "string") {
9
+ throw new TypeError("selectPromptOutput requires an output object with a string output field.");
10
+ }
11
+ return args.output.output;
12
+ }
13
+ function selectEvalCaseIds(result, outcomes = ["fail", "invalid"]) {
14
+ const selected = new Set(outcomes);
15
+ return result.results.filter((caseResult) => selected.has(caseResult.outcome)).map((caseResult) => caseResult.case.id);
16
+ }
17
+ async function resolveActual(selector, args) {
18
+ return selector === void 0 ? defaultOutputValue(args.output) : selector(args);
19
+ }
20
+ async function resolveActualText(selector, args) {
21
+ const value = selector === void 0 ? defaultOutputValue(args.output) : await selector(args);
22
+ if (typeof value === "string") return value;
23
+ try {
24
+ const serialized = JSON.stringify(value);
25
+ if (serialized !== void 0) return serialized;
26
+ } catch {
27
+ }
28
+ throw new TypeError("Text metric actual value must be a string or JSON-serializable value.");
29
+ }
30
+ async function resolveExpected(selectorOrValue, args) {
31
+ if (selectorOrValue === void 0) {
32
+ return args.case.expected;
33
+ }
34
+ return typeof selectorOrValue === "function" ? selectorOrValue(args) : selectorOrValue;
35
+ }
36
+ async function resolveJudgePrompt(selector, args) {
37
+ if (selector !== void 0) {
38
+ return selector(args);
39
+ }
40
+ return [
41
+ `Suite: ${args.suiteName}`,
42
+ `Case: ${args.case.id}`,
43
+ `Input: ${formatValue(args.case.input)}`,
44
+ `Expected: ${formatValue(args.case.expected)}`,
45
+ `Output: ${formatValue(defaultOutputValue(args.output))}`
46
+ ].join("\n\n");
47
+ }
48
+
49
+ export {
50
+ selectPromptOutput,
51
+ selectEvalCaseIds,
52
+ resolveActual,
53
+ resolveActualText,
54
+ resolveExpected,
55
+ resolveJudgePrompt
56
+ };
57
+ //# sourceMappingURL=chunk-ZPXOBQDS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/evals/selectors.ts"],"sourcesContent":["import { defaultOutputValue, formatValue } from \"./format\";\nimport type {\n EvalMetricArgs,\n EvalOutcomeStatus,\n EvalSuiteResult,\n SelectorOrValue,\n ValueSelector,\n} from \"./types\";\n\nexport function selectPromptOutput(args: EvalMetricArgs<unknown, unknown, unknown>): string {\n if (\n typeof args.output !== \"object\" ||\n args.output === null ||\n !(\"output\" in args.output) ||\n typeof args.output.output !== \"string\"\n ) {\n throw new TypeError(\"selectPromptOutput requires an output object with a string output field.\");\n }\n return args.output.output;\n}\n\nexport function selectEvalCaseIds(\n result: EvalSuiteResult<unknown, unknown, unknown>,\n outcomes: readonly EvalOutcomeStatus[] = [\"fail\", \"invalid\"],\n): string[] {\n const selected = new Set(outcomes);\n return result.results\n .filter((caseResult) => selected.has(caseResult.outcome))\n .map((caseResult) => caseResult.case.id);\n}\n\nexport async function resolveActual<Input, Output, Expected>(\n selector: ValueSelector<Input, Output, Expected, unknown> | undefined,\n args: EvalMetricArgs<Input, Output, Expected>,\n): Promise<unknown> {\n return selector === undefined ? defaultOutputValue(args.output) : selector(args);\n}\n\nexport async function resolveActualText<Input, Output, Expected>(\n selector: ValueSelector<Input, Output, Expected, string> | undefined,\n args: EvalMetricArgs<Input, Output, Expected>,\n): Promise<string> {\n const value = selector === undefined ? defaultOutputValue(args.output) : await selector(args);\n if (typeof value === \"string\") return value;\n try {\n const serialized = JSON.stringify(value);\n if (serialized !== undefined) return serialized;\n } catch {\n // The caller receives one consistent boundary error below.\n }\n throw new TypeError(\"Text metric actual value must be a string or JSON-serializable value.\");\n}\n\nexport async function resolveExpected<Input, Output, Expected, Value>(\n selectorOrValue: SelectorOrValue<Input, Output, Expected, Value> | undefined,\n args: EvalMetricArgs<Input, Output, Expected>,\n): Promise<Value | Expected | undefined> {\n if (selectorOrValue === undefined) {\n return args.case.expected;\n }\n return typeof selectorOrValue === \"function\"\n ? (selectorOrValue as ValueSelector<Input, Output, Expected, Value>)(args)\n : selectorOrValue;\n}\n\nexport async function resolveJudgePrompt<Input, Output, Expected>(\n selector: ValueSelector<Input, Output, Expected, string> | undefined,\n args: EvalMetricArgs<Input, Output, Expected>,\n): Promise<string> {\n if (selector !== undefined) {\n return selector(args);\n }\n return [\n `Suite: ${args.suiteName}`,\n `Case: ${args.case.id}`,\n `Input: ${formatValue(args.case.input)}`,\n `Expected: ${formatValue(args.case.expected)}`,\n `Output: ${formatValue(defaultOutputValue(args.output))}`,\n ].join(\"\\n\\n\");\n}\n"],"mappings":";;;;;;AASO,SAAS,mBAAmB,MAAyD;AAC1F,MACE,OAAO,KAAK,WAAW,YACvB,KAAK,WAAW,QAChB,EAAE,YAAY,KAAK,WACnB,OAAO,KAAK,OAAO,WAAW,UAC9B;AACA,UAAM,IAAI,UAAU,0EAA0E;AAAA,EAChG;AACA,SAAO,KAAK,OAAO;AACrB;AAEO,SAAS,kBACd,QACA,WAAyC,CAAC,QAAQ,SAAS,GACjD;AACV,QAAM,WAAW,IAAI,IAAI,QAAQ;AACjC,SAAO,OAAO,QACX,OAAO,CAAC,eAAe,SAAS,IAAI,WAAW,OAAO,CAAC,EACvD,IAAI,CAAC,eAAe,WAAW,KAAK,EAAE;AAC3C;AAEA,eAAsB,cACpB,UACA,MACkB;AAClB,SAAO,aAAa,SAAY,mBAAmB,KAAK,MAAM,IAAI,SAAS,IAAI;AACjF;AAEA,eAAsB,kBACpB,UACA,MACiB;AACjB,QAAM,QAAQ,aAAa,SAAY,mBAAmB,KAAK,MAAM,IAAI,MAAM,SAAS,IAAI;AAC5F,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI;AACF,UAAM,aAAa,KAAK,UAAU,KAAK;AACvC,QAAI,eAAe,OAAW,QAAO;AAAA,EACvC,QAAQ;AAAA,EAER;AACA,QAAM,IAAI,UAAU,uEAAuE;AAC7F;AAEA,eAAsB,gBACpB,iBACA,MACuC;AACvC,MAAI,oBAAoB,QAAW;AACjC,WAAO,KAAK,KAAK;AAAA,EACnB;AACA,SAAO,OAAO,oBAAoB,aAC7B,gBAAkE,IAAI,IACvE;AACN;AAEA,eAAsB,mBACpB,UACA,MACiB;AACjB,MAAI,aAAa,QAAW;AAC1B,WAAO,SAAS,IAAI;AAAA,EACtB;AACA,SAAO;AAAA,IACL,UAAU,KAAK,SAAS;AAAA,IACxB,SAAS,KAAK,KAAK,EAAE;AAAA,IACrB,UAAU,YAAY,KAAK,KAAK,KAAK,CAAC;AAAA,IACtC,aAAa,YAAY,KAAK,KAAK,QAAQ,CAAC;AAAA,IAC5C,WAAW,YAAY,mBAAmB,KAAK,MAAM,CAAC,CAAC;AAAA,EACzD,EAAE,KAAK,MAAM;AACf;","names":[]}
@@ -0,0 +1,155 @@
1
+ import {
2
+ SkillValidationError
3
+ } from "./chunk-B5JQDR33.js";
4
+ import {
5
+ isRecord
6
+ } from "./chunk-V4OZ7ISA.js";
7
+
8
+ // src/skills/local.ts
9
+ import { readdir, readFile, stat } from "fs/promises";
10
+ import { basename, join, relative, resolve, sep } from "path";
11
+ import { parse as parseYaml } from "yaml";
12
+ var NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
13
+ var MAX_NAME_LENGTH = 64;
14
+ var MAX_DESCRIPTION_LENGTH = 1024;
15
+ var skill = {
16
+ local(path) {
17
+ return {
18
+ load: () => loadLocalSkills(path)
19
+ };
20
+ }
21
+ };
22
+ async function loadLocalSkills(path) {
23
+ const root = resolve(path);
24
+ if (await hasSkillFile(root)) {
25
+ return [await readSkill(root)];
26
+ }
27
+ const entries = await readdir(root, { withFileTypes: true });
28
+ const skills = [];
29
+ for (const entry of entries) {
30
+ if (!entry.isDirectory()) {
31
+ continue;
32
+ }
33
+ const directory = join(root, entry.name);
34
+ if (await hasSkillFile(directory)) {
35
+ skills.push(await readSkill(directory));
36
+ }
37
+ }
38
+ return skills;
39
+ }
40
+ async function hasSkillFile(directory) {
41
+ try {
42
+ const info = await stat(join(directory, "SKILL.md"));
43
+ return info.isFile();
44
+ } catch {
45
+ return false;
46
+ }
47
+ }
48
+ async function readSkill(directory) {
49
+ const skillPath = join(directory, "SKILL.md");
50
+ const markdown = await readFile(skillPath, "utf8");
51
+ const parsed = parseSkillMarkdown(markdown, skillPath);
52
+ validateSkillFrontmatter(parsed.frontmatter, directory, skillPath);
53
+ const name = parsed.frontmatter.name;
54
+ const description = parsed.frontmatter.description;
55
+ const license = typeof parsed.frontmatter.license === "string" ? parsed.frontmatter.license : void 0;
56
+ const metadata = isRecord(parsed.frontmatter.metadata) ? parsed.frontmatter.metadata : void 0;
57
+ return {
58
+ name,
59
+ description,
60
+ instructions: parsed.body.trim(),
61
+ directory,
62
+ references: await listRelativeFiles(join(directory, "references")),
63
+ scripts: await listRelativeFiles(join(directory, "scripts")),
64
+ license,
65
+ metadata
66
+ };
67
+ }
68
+ function parseSkillMarkdown(markdown, path) {
69
+ if (!markdown.startsWith("---\n") && !markdown.startsWith("---\r\n")) {
70
+ throw new SkillValidationError("Skill validation failed", [
71
+ { path, message: "SKILL.md must start with YAML frontmatter" }
72
+ ]);
73
+ }
74
+ const newline = markdown.startsWith("---\r\n") ? "\r\n" : "\n";
75
+ const marker = `${newline}---${newline}`;
76
+ const end = markdown.indexOf(marker, 3);
77
+ if (end === -1) {
78
+ throw new SkillValidationError("Skill validation failed", [
79
+ { path, message: "SKILL.md frontmatter must end with ---" }
80
+ ]);
81
+ }
82
+ const rawFrontmatter = markdown.slice(3 + newline.length, end);
83
+ const body = markdown.slice(end + marker.length);
84
+ const parsed = parseYaml(rawFrontmatter);
85
+ if (!isRecord(parsed)) {
86
+ throw new SkillValidationError("Skill validation failed", [
87
+ { path, message: "SKILL.md frontmatter must be a YAML object" }
88
+ ]);
89
+ }
90
+ return { frontmatter: parsed, body };
91
+ }
92
+ function validateSkillFrontmatter(frontmatter, directory, path) {
93
+ const issues = [];
94
+ const name = frontmatter.name;
95
+ const description = frontmatter.description;
96
+ if (typeof name !== "string" || name.length === 0) {
97
+ issues.push({ path, message: "name is required" });
98
+ } else {
99
+ if (name.length > MAX_NAME_LENGTH) {
100
+ issues.push({ path, message: `name must be at most ${MAX_NAME_LENGTH} characters` });
101
+ }
102
+ if (!NAME_PATTERN.test(name)) {
103
+ issues.push({
104
+ path,
105
+ message: "name must contain lowercase letters, numbers, and hyphens only"
106
+ });
107
+ }
108
+ if (basename(directory) !== name) {
109
+ issues.push({ path, message: "name must match the skill directory name" });
110
+ }
111
+ }
112
+ if (typeof description !== "string" || description.length === 0) {
113
+ issues.push({ path, message: "description is required" });
114
+ } else if (description.length > MAX_DESCRIPTION_LENGTH) {
115
+ issues.push({
116
+ path,
117
+ message: `description must be at most ${MAX_DESCRIPTION_LENGTH} characters`
118
+ });
119
+ }
120
+ if (issues.length > 0) {
121
+ throw new SkillValidationError("Skill validation failed", issues);
122
+ }
123
+ }
124
+ async function listRelativeFiles(directory) {
125
+ try {
126
+ const info = await stat(directory);
127
+ if (!info.isDirectory()) {
128
+ return [];
129
+ }
130
+ } catch {
131
+ return [];
132
+ }
133
+ const files = [];
134
+ await collectFiles(directory, directory, files);
135
+ return files.sort();
136
+ }
137
+ async function collectFiles(root, directory, files) {
138
+ const entries = await readdir(directory, { withFileTypes: true });
139
+ for (const entry of entries) {
140
+ const path = join(directory, entry.name);
141
+ if (entry.isDirectory()) {
142
+ await collectFiles(root, path, files);
143
+ } else if (entry.isFile()) {
144
+ files.push(toPortablePath(relative(root, path)));
145
+ }
146
+ }
147
+ }
148
+ function toPortablePath(path) {
149
+ return sep === "/" ? path : path.split(sep).join("/");
150
+ }
151
+
152
+ export {
153
+ skill
154
+ };
155
+ //# sourceMappingURL=chunk-ZUFS6R7L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/skills/local.ts"],"sourcesContent":["import { readdir, readFile, stat } from \"node:fs/promises\";\nimport { basename, join, relative, resolve, sep } from \"node:path\";\nimport { parse as parseYaml } from \"yaml\";\nimport { isRecord } from \"../internal/record\";\nimport type { Skill, SkillLoader, SkillValidationIssue } from \"./types\";\nimport { SkillValidationError } from \"./types\";\n\ntype SkillFrontmatter = {\n name?: unknown;\n description?: unknown;\n license?: unknown;\n metadata?: unknown;\n};\n\nconst NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\nconst MAX_NAME_LENGTH = 64;\nconst MAX_DESCRIPTION_LENGTH = 1024;\n\nexport const skill = {\n local(path: string): SkillLoader {\n return {\n load: () => loadLocalSkills(path),\n };\n },\n};\n\nasync function loadLocalSkills(path: string): Promise<Skill[]> {\n const root = resolve(path);\n if (await hasSkillFile(root)) {\n return [await readSkill(root)];\n }\n\n const entries = await readdir(root, { withFileTypes: true });\n const skills: Skill[] = [];\n for (const entry of entries) {\n if (!entry.isDirectory()) {\n continue;\n }\n const directory = join(root, entry.name);\n if (await hasSkillFile(directory)) {\n skills.push(await readSkill(directory));\n }\n }\n return skills;\n}\n\nasync function hasSkillFile(directory: string): Promise<boolean> {\n try {\n const info = await stat(join(directory, \"SKILL.md\"));\n return info.isFile();\n } catch {\n return false;\n }\n}\n\nasync function readSkill(directory: string): Promise<Skill> {\n const skillPath = join(directory, \"SKILL.md\");\n const markdown = await readFile(skillPath, \"utf8\");\n const parsed = parseSkillMarkdown(markdown, skillPath);\n validateSkillFrontmatter(parsed.frontmatter, directory, skillPath);\n\n const name = parsed.frontmatter.name as string;\n const description = parsed.frontmatter.description as string;\n const license =\n typeof parsed.frontmatter.license === \"string\" ? parsed.frontmatter.license : undefined;\n const metadata = isRecord(parsed.frontmatter.metadata) ? parsed.frontmatter.metadata : undefined;\n\n return {\n name,\n description,\n instructions: parsed.body.trim(),\n directory,\n references: await listRelativeFiles(join(directory, \"references\")),\n scripts: await listRelativeFiles(join(directory, \"scripts\")),\n license,\n metadata,\n };\n}\n\nfunction parseSkillMarkdown(\n markdown: string,\n path: string,\n): { frontmatter: SkillFrontmatter; body: string } {\n if (!markdown.startsWith(\"---\\n\") && !markdown.startsWith(\"---\\r\\n\")) {\n throw new SkillValidationError(\"Skill validation failed\", [\n { path, message: \"SKILL.md must start with YAML frontmatter\" },\n ]);\n }\n\n const newline = markdown.startsWith(\"---\\r\\n\") ? \"\\r\\n\" : \"\\n\";\n const marker = `${newline}---${newline}`;\n const end = markdown.indexOf(marker, 3);\n if (end === -1) {\n throw new SkillValidationError(\"Skill validation failed\", [\n { path, message: \"SKILL.md frontmatter must end with ---\" },\n ]);\n }\n\n const rawFrontmatter = markdown.slice(3 + newline.length, end);\n const body = markdown.slice(end + marker.length);\n const parsed = parseYaml(rawFrontmatter);\n if (!isRecord(parsed)) {\n throw new SkillValidationError(\"Skill validation failed\", [\n { path, message: \"SKILL.md frontmatter must be a YAML object\" },\n ]);\n }\n\n return { frontmatter: parsed, body };\n}\n\nfunction validateSkillFrontmatter(\n frontmatter: SkillFrontmatter,\n directory: string,\n path: string,\n): void {\n const issues: SkillValidationIssue[] = [];\n const name = frontmatter.name;\n const description = frontmatter.description;\n\n if (typeof name !== \"string\" || name.length === 0) {\n issues.push({ path, message: \"name is required\" });\n } else {\n if (name.length > MAX_NAME_LENGTH) {\n issues.push({ path, message: `name must be at most ${MAX_NAME_LENGTH} characters` });\n }\n if (!NAME_PATTERN.test(name)) {\n issues.push({\n path,\n message: \"name must contain lowercase letters, numbers, and hyphens only\",\n });\n }\n if (basename(directory) !== name) {\n issues.push({ path, message: \"name must match the skill directory name\" });\n }\n }\n\n if (typeof description !== \"string\" || description.length === 0) {\n issues.push({ path, message: \"description is required\" });\n } else if (description.length > MAX_DESCRIPTION_LENGTH) {\n issues.push({\n path,\n message: `description must be at most ${MAX_DESCRIPTION_LENGTH} characters`,\n });\n }\n\n if (issues.length > 0) {\n throw new SkillValidationError(\"Skill validation failed\", issues);\n }\n}\n\nasync function listRelativeFiles(directory: string): Promise<string[]> {\n try {\n const info = await stat(directory);\n if (!info.isDirectory()) {\n return [];\n }\n } catch {\n return [];\n }\n\n const files: string[] = [];\n await collectFiles(directory, directory, files);\n return files.sort();\n}\n\nasync function collectFiles(root: string, directory: string, files: string[]): Promise<void> {\n const entries = await readdir(directory, { withFileTypes: true });\n for (const entry of entries) {\n const path = join(directory, entry.name);\n if (entry.isDirectory()) {\n await collectFiles(root, path, files);\n } else if (entry.isFile()) {\n files.push(toPortablePath(relative(root, path)));\n }\n }\n}\n\nfunction toPortablePath(path: string): string {\n return sep === \"/\" ? path : path.split(sep).join(\"/\");\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,SAAS,UAAU,YAAY;AACxC,SAAS,UAAU,MAAM,UAAU,SAAS,WAAW;AACvD,SAAS,SAAS,iBAAiB;AAYnC,IAAM,eAAe;AACrB,IAAM,kBAAkB;AACxB,IAAM,yBAAyB;AAExB,IAAM,QAAQ;AAAA,EACnB,MAAM,MAA2B;AAC/B,WAAO;AAAA,MACL,MAAM,MAAM,gBAAgB,IAAI;AAAA,IAClC;AAAA,EACF;AACF;AAEA,eAAe,gBAAgB,MAAgC;AAC7D,QAAM,OAAO,QAAQ,IAAI;AACzB,MAAI,MAAM,aAAa,IAAI,GAAG;AAC5B,WAAO,CAAC,MAAM,UAAU,IAAI,CAAC;AAAA,EAC/B;AAEA,QAAM,UAAU,MAAM,QAAQ,MAAM,EAAE,eAAe,KAAK,CAAC;AAC3D,QAAM,SAAkB,CAAC;AACzB,aAAW,SAAS,SAAS;AAC3B,QAAI,CAAC,MAAM,YAAY,GAAG;AACxB;AAAA,IACF;AACA,UAAM,YAAY,KAAK,MAAM,MAAM,IAAI;AACvC,QAAI,MAAM,aAAa,SAAS,GAAG;AACjC,aAAO,KAAK,MAAM,UAAU,SAAS,CAAC;AAAA,IACxC;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAe,aAAa,WAAqC;AAC/D,MAAI;AACF,UAAM,OAAO,MAAM,KAAK,KAAK,WAAW,UAAU,CAAC;AACnD,WAAO,KAAK,OAAO;AAAA,EACrB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAe,UAAU,WAAmC;AAC1D,QAAM,YAAY,KAAK,WAAW,UAAU;AAC5C,QAAM,WAAW,MAAM,SAAS,WAAW,MAAM;AACjD,QAAM,SAAS,mBAAmB,UAAU,SAAS;AACrD,2BAAyB,OAAO,aAAa,WAAW,SAAS;AAEjE,QAAM,OAAO,OAAO,YAAY;AAChC,QAAM,cAAc,OAAO,YAAY;AACvC,QAAM,UACJ,OAAO,OAAO,YAAY,YAAY,WAAW,OAAO,YAAY,UAAU;AAChF,QAAM,WAAW,SAAS,OAAO,YAAY,QAAQ,IAAI,OAAO,YAAY,WAAW;AAEvF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,cAAc,OAAO,KAAK,KAAK;AAAA,IAC/B;AAAA,IACA,YAAY,MAAM,kBAAkB,KAAK,WAAW,YAAY,CAAC;AAAA,IACjE,SAAS,MAAM,kBAAkB,KAAK,WAAW,SAAS,CAAC;AAAA,IAC3D;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,mBACP,UACA,MACiD;AACjD,MAAI,CAAC,SAAS,WAAW,OAAO,KAAK,CAAC,SAAS,WAAW,SAAS,GAAG;AACpE,UAAM,IAAI,qBAAqB,2BAA2B;AAAA,MACxD,EAAE,MAAM,SAAS,4CAA4C;AAAA,IAC/D,CAAC;AAAA,EACH;AAEA,QAAM,UAAU,SAAS,WAAW,SAAS,IAAI,SAAS;AAC1D,QAAM,SAAS,GAAG,OAAO,MAAM,OAAO;AACtC,QAAM,MAAM,SAAS,QAAQ,QAAQ,CAAC;AACtC,MAAI,QAAQ,IAAI;AACd,UAAM,IAAI,qBAAqB,2BAA2B;AAAA,MACxD,EAAE,MAAM,SAAS,yCAAyC;AAAA,IAC5D,CAAC;AAAA,EACH;AAEA,QAAM,iBAAiB,SAAS,MAAM,IAAI,QAAQ,QAAQ,GAAG;AAC7D,QAAM,OAAO,SAAS,MAAM,MAAM,OAAO,MAAM;AAC/C,QAAM,SAAS,UAAU,cAAc;AACvC,MAAI,CAAC,SAAS,MAAM,GAAG;AACrB,UAAM,IAAI,qBAAqB,2BAA2B;AAAA,MACxD,EAAE,MAAM,SAAS,6CAA6C;AAAA,IAChE,CAAC;AAAA,EACH;AAEA,SAAO,EAAE,aAAa,QAAQ,KAAK;AACrC;AAEA,SAAS,yBACP,aACA,WACA,MACM;AACN,QAAM,SAAiC,CAAC;AACxC,QAAM,OAAO,YAAY;AACzB,QAAM,cAAc,YAAY;AAEhC,MAAI,OAAO,SAAS,YAAY,KAAK,WAAW,GAAG;AACjD,WAAO,KAAK,EAAE,MAAM,SAAS,mBAAmB,CAAC;AAAA,EACnD,OAAO;AACL,QAAI,KAAK,SAAS,iBAAiB;AACjC,aAAO,KAAK,EAAE,MAAM,SAAS,wBAAwB,eAAe,cAAc,CAAC;AAAA,IACrF;AACA,QAAI,CAAC,aAAa,KAAK,IAAI,GAAG;AAC5B,aAAO,KAAK;AAAA,QACV;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AACA,QAAI,SAAS,SAAS,MAAM,MAAM;AAChC,aAAO,KAAK,EAAE,MAAM,SAAS,2CAA2C,CAAC;AAAA,IAC3E;AAAA,EACF;AAEA,MAAI,OAAO,gBAAgB,YAAY,YAAY,WAAW,GAAG;AAC/D,WAAO,KAAK,EAAE,MAAM,SAAS,0BAA0B,CAAC;AAAA,EAC1D,WAAW,YAAY,SAAS,wBAAwB;AACtD,WAAO,KAAK;AAAA,MACV;AAAA,MACA,SAAS,+BAA+B,sBAAsB;AAAA,IAChE,CAAC;AAAA,EACH;AAEA,MAAI,OAAO,SAAS,GAAG;AACrB,UAAM,IAAI,qBAAqB,2BAA2B,MAAM;AAAA,EAClE;AACF;AAEA,eAAe,kBAAkB,WAAsC;AACrE,MAAI;AACF,UAAM,OAAO,MAAM,KAAK,SAAS;AACjC,QAAI,CAAC,KAAK,YAAY,GAAG;AACvB,aAAO,CAAC;AAAA,IACV;AAAA,EACF,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,QAAkB,CAAC;AACzB,QAAM,aAAa,WAAW,WAAW,KAAK;AAC9C,SAAO,MAAM,KAAK;AACpB;AAEA,eAAe,aAAa,MAAc,WAAmB,OAAgC;AAC3F,QAAM,UAAU,MAAM,QAAQ,WAAW,EAAE,eAAe,KAAK,CAAC;AAChE,aAAW,SAAS,SAAS;AAC3B,UAAM,OAAO,KAAK,WAAW,MAAM,IAAI;AACvC,QAAI,MAAM,YAAY,GAAG;AACvB,YAAM,aAAa,MAAM,MAAM,KAAK;AAAA,IACtC,WAAW,MAAM,OAAO,GAAG;AACzB,YAAM,KAAK,eAAe,SAAS,MAAM,IAAI,CAAC,CAAC;AAAA,IACjD;AAAA,EACF;AACF;AAEA,SAAS,eAAe,MAAsB;AAC5C,SAAO,QAAQ,MAAM,OAAO,KAAK,MAAM,GAAG,EAAE,KAAK,GAAG;AACtD;","names":[]}
@@ -0,0 +1,62 @@
1
+ // src/guardrails/message.ts
2
+ function textFromMessage(message) {
3
+ if (message.role === "system") {
4
+ return message.content;
5
+ }
6
+ if (typeof message.content === "string") {
7
+ return message.content;
8
+ }
9
+ return message.content.flatMap((content) => {
10
+ if (content.type === "text") {
11
+ return [content.text];
12
+ }
13
+ if (content.type === "file" && content.data.type === "text") {
14
+ return [content.data.text];
15
+ }
16
+ if (content.type === "tool-result") {
17
+ return textFromToolResult(content.output);
18
+ }
19
+ return [];
20
+ }).join("\n");
21
+ }
22
+ function rewriteMessageText(message, text) {
23
+ if (message.role === "system") {
24
+ return { ...message, content: text };
25
+ }
26
+ if (message.role === "user") {
27
+ const content = typeof message.content === "string" ? [] : message.content;
28
+ return {
29
+ ...message,
30
+ content: [
31
+ { type: "text", text },
32
+ ...content.filter(
33
+ (item) => item.type !== "text" && !(item.type === "file" && item.data.type === "text")
34
+ )
35
+ ]
36
+ };
37
+ }
38
+ if (message.role === "assistant") {
39
+ return { ...message, content: [{ type: "text", text }] };
40
+ }
41
+ return message;
42
+ }
43
+ function textFromToolResult(output) {
44
+ switch (output.type) {
45
+ case "text":
46
+ case "error-text":
47
+ return [output.value];
48
+ case "json":
49
+ case "error-json":
50
+ return [JSON.stringify(output.value)];
51
+ case "content":
52
+ return output.value.flatMap((part) => part.type === "text" ? [part.text] : []);
53
+ case "execution-denied":
54
+ return output.reason === void 0 ? [] : [output.reason];
55
+ }
56
+ }
57
+
58
+ export {
59
+ textFromMessage,
60
+ rewriteMessageText
61
+ };
62
+ //# sourceMappingURL=chunk-ZXLCTQUX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/guardrails/message.ts"],"sourcesContent":["import type { Message, ToolResultPart } from \"../completion\";\n\nexport function textFromMessage(message: Message): string {\n if (message.role === \"system\") {\n return message.content;\n }\n if (typeof message.content === \"string\") {\n return message.content;\n }\n return message.content\n .flatMap((content) => {\n if (content.type === \"text\") {\n return [content.text];\n }\n if (content.type === \"file\" && content.data.type === \"text\") {\n return [content.data.text];\n }\n if (content.type === \"tool-result\") {\n return textFromToolResult(content.output);\n }\n return [];\n })\n .join(\"\\n\");\n}\n\nexport function rewriteMessageText(message: Message, text: string): Message {\n if (message.role === \"system\") {\n return { ...message, content: text };\n }\n if (message.role === \"user\") {\n const content = typeof message.content === \"string\" ? [] : message.content;\n return {\n ...message,\n content: [\n { type: \"text\", text },\n ...content.filter(\n (item) => item.type !== \"text\" && !(item.type === \"file\" && item.data.type === \"text\"),\n ),\n ],\n };\n }\n if (message.role === \"assistant\") {\n return { ...message, content: [{ type: \"text\", text }] };\n }\n return message;\n}\n\nfunction textFromToolResult(output: ToolResultPart[\"output\"]): string[] {\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n return [output.value];\n case \"json\":\n case \"error-json\":\n return [JSON.stringify(output.value)];\n case \"content\":\n return output.value.flatMap((part) => (part.type === \"text\" ? [part.text] : []));\n case \"execution-denied\":\n return output.reason === undefined ? [] : [output.reason];\n }\n}\n"],"mappings":";AAEO,SAAS,gBAAgB,SAA0B;AACxD,MAAI,QAAQ,SAAS,UAAU;AAC7B,WAAO,QAAQ;AAAA,EACjB;AACA,MAAI,OAAO,QAAQ,YAAY,UAAU;AACvC,WAAO,QAAQ;AAAA,EACjB;AACA,SAAO,QAAQ,QACZ,QAAQ,CAAC,YAAY;AACpB,QAAI,QAAQ,SAAS,QAAQ;AAC3B,aAAO,CAAC,QAAQ,IAAI;AAAA,IACtB;AACA,QAAI,QAAQ,SAAS,UAAU,QAAQ,KAAK,SAAS,QAAQ;AAC3D,aAAO,CAAC,QAAQ,KAAK,IAAI;AAAA,IAC3B;AACA,QAAI,QAAQ,SAAS,eAAe;AAClC,aAAO,mBAAmB,QAAQ,MAAM;AAAA,IAC1C;AACA,WAAO,CAAC;AAAA,EACV,CAAC,EACA,KAAK,IAAI;AACd;AAEO,SAAS,mBAAmB,SAAkB,MAAuB;AAC1E,MAAI,QAAQ,SAAS,UAAU;AAC7B,WAAO,EAAE,GAAG,SAAS,SAAS,KAAK;AAAA,EACrC;AACA,MAAI,QAAQ,SAAS,QAAQ;AAC3B,UAAM,UAAU,OAAO,QAAQ,YAAY,WAAW,CAAC,IAAI,QAAQ;AACnE,WAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,QACP,EAAE,MAAM,QAAQ,KAAK;AAAA,QACrB,GAAG,QAAQ;AAAA,UACT,CAAC,SAAS,KAAK,SAAS,UAAU,EAAE,KAAK,SAAS,UAAU,KAAK,KAAK,SAAS;AAAA,QACjF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,QAAQ,SAAS,aAAa;AAChC,WAAO,EAAE,GAAG,SAAS,SAAS,CAAC,EAAE,MAAM,QAAQ,KAAK,CAAC,EAAE;AAAA,EACzD;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,QAA4C;AACtE,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AAAA,IACL,KAAK;AACH,aAAO,CAAC,OAAO,KAAK;AAAA,IACtB,KAAK;AAAA,IACL,KAAK;AACH,aAAO,CAAC,KAAK,UAAU,OAAO,KAAK,CAAC;AAAA,IACtC,KAAK;AACH,aAAO,OAAO,MAAM,QAAQ,CAAC,SAAU,KAAK,SAAS,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAE;AAAA,IACjF,KAAK;AACH,aAAO,OAAO,WAAW,SAAY,CAAC,IAAI,CAAC,OAAO,MAAM;AAAA,EAC5D;AACF;","names":[]}
@@ -0,0 +1,59 @@
1
+ // src/evals/format.ts
2
+ function defaultOutputValue(output) {
3
+ if (typeof output === "object" && output !== null && "output" in output) {
4
+ return output.output;
5
+ }
6
+ return output;
7
+ }
8
+ function evalValuesEqual(left, right) {
9
+ return deepEqual(left, right, /* @__PURE__ */ new WeakMap());
10
+ }
11
+ function formatValue(value) {
12
+ if (typeof value === "string") {
13
+ return value;
14
+ }
15
+ try {
16
+ return JSON.stringify(value) ?? String(value);
17
+ } catch {
18
+ return String(value);
19
+ }
20
+ }
21
+ function errorMessage(error) {
22
+ return error instanceof Error ? error.message : String(error);
23
+ }
24
+ function deepEqual(left, right, seen) {
25
+ if (Object.is(left, right)) return true;
26
+ if (typeof left !== "object" || left === null || typeof right !== "object" || right === null) {
27
+ return false;
28
+ }
29
+ if (Object.getPrototypeOf(left) !== Object.getPrototypeOf(right)) return false;
30
+ if (left instanceof Date && right instanceof Date) return left.getTime() === right.getTime();
31
+ if (left instanceof RegExp && right instanceof RegExp) return String(left) === String(right);
32
+ if (!Array.isArray(left) && Object.getPrototypeOf(left) !== Object.prototype && Object.getPrototypeOf(left) !== null) {
33
+ return false;
34
+ }
35
+ if (seen.get(left) === right) return true;
36
+ seen.set(left, right);
37
+ const leftKeys = Reflect.ownKeys(left);
38
+ const rightKeys = Reflect.ownKeys(right);
39
+ if (leftKeys.length !== rightKeys.length) return false;
40
+ for (const key of leftKeys) {
41
+ if (!Object.hasOwn(right, key)) return false;
42
+ if (!deepEqual(
43
+ left[key],
44
+ right[key],
45
+ seen
46
+ )) {
47
+ return false;
48
+ }
49
+ }
50
+ return true;
51
+ }
52
+
53
+ export {
54
+ defaultOutputValue,
55
+ evalValuesEqual,
56
+ formatValue,
57
+ errorMessage
58
+ };
59
+ //# sourceMappingURL=chunk-ZYXMWEL4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/evals/format.ts"],"sourcesContent":["export function defaultOutputValue(output: unknown): unknown {\n if (typeof output === \"object\" && output !== null && \"output\" in output) {\n return (output as { output: unknown }).output;\n }\n return output;\n}\n\nexport function evalValuesEqual(left: unknown, right: unknown): boolean {\n return deepEqual(left, right, new WeakMap<object, object>());\n}\n\nexport function formatValue(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n try {\n return JSON.stringify(value) ?? String(value);\n } catch {\n return String(value);\n }\n}\n\nexport function errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction deepEqual(left: unknown, right: unknown, seen: WeakMap<object, object>): boolean {\n if (Object.is(left, right)) return true;\n if (typeof left !== \"object\" || left === null || typeof right !== \"object\" || right === null) {\n return false;\n }\n if (Object.getPrototypeOf(left) !== Object.getPrototypeOf(right)) return false;\n if (left instanceof Date && right instanceof Date) return left.getTime() === right.getTime();\n if (left instanceof RegExp && right instanceof RegExp) return String(left) === String(right);\n if (\n !Array.isArray(left) &&\n Object.getPrototypeOf(left) !== Object.prototype &&\n Object.getPrototypeOf(left) !== null\n ) {\n return false;\n }\n if (seen.get(left) === right) return true;\n seen.set(left, right);\n const leftKeys = Reflect.ownKeys(left);\n const rightKeys = Reflect.ownKeys(right);\n if (leftKeys.length !== rightKeys.length) return false;\n for (const key of leftKeys) {\n if (!Object.hasOwn(right, key)) return false;\n if (\n !deepEqual(\n (left as Record<PropertyKey, unknown>)[key],\n (right as Record<PropertyKey, unknown>)[key],\n seen,\n )\n ) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":";AAAO,SAAS,mBAAmB,QAA0B;AAC3D,MAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,YAAY,QAAQ;AACvE,WAAQ,OAA+B;AAAA,EACzC;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,MAAe,OAAyB;AACtE,SAAO,UAAU,MAAM,OAAO,oBAAI,QAAwB,CAAC;AAC7D;AAEO,SAAS,YAAY,OAAwB;AAClD,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AACA,MAAI;AACF,WAAO,KAAK,UAAU,KAAK,KAAK,OAAO,KAAK;AAAA,EAC9C,QAAQ;AACN,WAAO,OAAO,KAAK;AAAA,EACrB;AACF;AAEO,SAAS,aAAa,OAAwB;AACnD,SAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;AAEA,SAAS,UAAU,MAAe,OAAgB,MAAwC;AACxF,MAAI,OAAO,GAAG,MAAM,KAAK,EAAG,QAAO;AACnC,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,OAAO,UAAU,YAAY,UAAU,MAAM;AAC5F,WAAO;AAAA,EACT;AACA,MAAI,OAAO,eAAe,IAAI,MAAM,OAAO,eAAe,KAAK,EAAG,QAAO;AACzE,MAAI,gBAAgB,QAAQ,iBAAiB,KAAM,QAAO,KAAK,QAAQ,MAAM,MAAM,QAAQ;AAC3F,MAAI,gBAAgB,UAAU,iBAAiB,OAAQ,QAAO,OAAO,IAAI,MAAM,OAAO,KAAK;AAC3F,MACE,CAAC,MAAM,QAAQ,IAAI,KACnB,OAAO,eAAe,IAAI,MAAM,OAAO,aACvC,OAAO,eAAe,IAAI,MAAM,MAChC;AACA,WAAO;AAAA,EACT;AACA,MAAI,KAAK,IAAI,IAAI,MAAM,MAAO,QAAO;AACrC,OAAK,IAAI,MAAM,KAAK;AACpB,QAAM,WAAW,QAAQ,QAAQ,IAAI;AACrC,QAAM,YAAY,QAAQ,QAAQ,KAAK;AACvC,MAAI,SAAS,WAAW,UAAU,OAAQ,QAAO;AACjD,aAAW,OAAO,UAAU;AAC1B,QAAI,CAAC,OAAO,OAAO,OAAO,GAAG,EAAG,QAAO;AACvC,QACE,CAAC;AAAA,MACE,KAAsC,GAAG;AAAA,MACzC,MAAuC,GAAG;AAAA,MAC3C;AAAA,IACF,GACA;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
@@ -0,0 +1,11 @@
1
+ import {
2
+ REASONING_EFFORT_CONTROL_ID,
3
+ defineCompletionModelControls,
4
+ mergeCompletionControlValues
5
+ } from "../chunk-6RQYWZI3.js";
6
+ export {
7
+ REASONING_EFFORT_CONTROL_ID,
8
+ defineCompletionModelControls,
9
+ mergeCompletionControlValues
10
+ };
11
+ //# sourceMappingURL=controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}