@anvia/core 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +226 -0
- package/dist/agent/agent-stream.js +7 -0
- package/dist/agent/agent-stream.js.map +1 -0
- package/dist/agent/agent-tool.js +24 -0
- package/dist/agent/agent-tool.js.map +1 -0
- package/dist/agent/agent.js +89 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/errors.js +17 -0
- package/dist/agent/errors.js.map +1 -0
- package/dist/agent/ids.js +7 -0
- package/dist/agent/ids.js.map +1 -0
- package/dist/agent/index.d.ts +127 -9
- package/dist/agent/index.js +103 -21
- package/dist/agent/interactions/index.js +2 -2
- package/dist/agent/interactions.js +22 -0
- package/dist/agent/interactions.js.map +1 -0
- package/dist/agent/lifecycle.js +9 -0
- package/dist/agent/lifecycle.js.map +1 -0
- package/dist/agent/output-schema.js +10 -0
- package/dist/agent/output-schema.js.map +1 -0
- package/dist/agent/resolve-options.js +46 -0
- package/dist/agent/resolve-options.js.map +1 -0
- package/dist/agent/resolved-agent.js +92 -0
- package/dist/agent/resolved-agent.js.map +1 -0
- package/dist/agent/run-types.js +1 -0
- package/dist/agent/run-types.js.map +1 -0
- package/dist/agent/snapshot.js +17 -0
- package/dist/agent/snapshot.js.map +1 -0
- package/dist/agent/team/agent-team.js +98 -0
- package/dist/agent/team/agent-team.js.map +1 -0
- package/dist/agent/team/errors.js +9 -0
- package/dist/agent/team/errors.js.map +1 -0
- package/dist/agent/team/index.js +104 -0
- package/dist/agent/team/index.js.map +1 -0
- package/dist/agent/team/types.js +1 -0
- package/dist/agent/team/types.js.map +1 -0
- package/dist/agent/tool-catalog.js +37 -0
- package/dist/agent/tool-catalog.js.map +1 -0
- package/dist/agent/tool-state.js +11 -0
- package/dist/agent/tool-state.js.map +1 -0
- package/dist/agent/types.js +1 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/vector-context.js +10 -0
- package/dist/agent/vector-context.js.map +1 -0
- package/dist/{agent-DTmzs1Qr.d.ts → agent-C9VhENdj.d.ts} +2 -3
- package/dist/{chunk-2QZJTG2E.js → chunk-23GEYG2X.js} +11 -71
- package/dist/chunk-23GEYG2X.js.map +1 -0
- package/dist/{chunk-I3Q7XSBB.js → chunk-23LRXKQX.js} +6 -4
- package/dist/{chunk-I3Q7XSBB.js.map → chunk-23LRXKQX.js.map} +1 -1
- package/dist/{chunk-YK4WAAS4.js → chunk-2NLINXRF.js} +1 -1
- package/dist/{chunk-SPD4XVR7.js → chunk-2XSMGVBG.js} +1 -1
- package/dist/chunk-3J2CSVPR.js +1 -0
- package/dist/chunk-3J2CSVPR.js.map +1 -0
- package/dist/chunk-3P3YVJ7V.js +1 -0
- package/dist/chunk-3P3YVJ7V.js.map +1 -0
- package/dist/chunk-3TAQXJBC.js +107 -0
- package/dist/chunk-3TAQXJBC.js.map +1 -0
- package/dist/chunk-47NTHIVB.js +76 -0
- package/dist/chunk-47NTHIVB.js.map +1 -0
- package/dist/chunk-4AW2633B.js +9 -0
- package/dist/chunk-4AW2633B.js.map +1 -0
- package/dist/{chunk-3XQGVDU5.js → chunk-4C7AXYOM.js} +1 -1
- package/dist/{chunk-IZNOP6JG.js → chunk-4FIVU53H.js} +1 -1
- package/dist/chunk-4ITAV7YA.js +1 -0
- package/dist/chunk-4ITAV7YA.js.map +1 -0
- package/dist/{chunk-7JLAIN6E.js → chunk-4ONUNWGC.js} +2 -2
- package/dist/chunk-4UUIGAIX.js +1 -0
- package/dist/chunk-4UUIGAIX.js.map +1 -0
- package/dist/chunk-53TPAXYR.js +1 -0
- package/dist/chunk-53TPAXYR.js.map +1 -0
- package/dist/chunk-5AETKC4L.js +107 -0
- package/dist/chunk-5AETKC4L.js.map +1 -0
- package/dist/chunk-5I2NVRHC.js +146 -0
- package/dist/chunk-5I2NVRHC.js.map +1 -0
- package/dist/chunk-5IURMWFN.js +53 -0
- package/dist/chunk-5IURMWFN.js.map +1 -0
- package/dist/chunk-5M6GTA3T.js +1 -0
- package/dist/chunk-5M6GTA3T.js.map +1 -0
- package/dist/chunk-5N5W7CX7.js +18 -0
- package/dist/chunk-5N5W7CX7.js.map +1 -0
- package/dist/chunk-5P2YOQSA.js +355 -0
- package/dist/chunk-5P2YOQSA.js.map +1 -0
- package/dist/chunk-5S7T2URX.js +1 -0
- package/dist/chunk-5S7T2URX.js.map +1 -0
- package/dist/chunk-5V533R7F.js +19 -0
- package/dist/chunk-5V533R7F.js.map +1 -0
- package/dist/chunk-5WLIHNNJ.js +56 -0
- package/dist/chunk-5WLIHNNJ.js.map +1 -0
- package/dist/chunk-6BTJC3ES.js +37 -0
- package/dist/chunk-6BTJC3ES.js.map +1 -0
- package/dist/chunk-6N4ENZO4.js +24 -0
- package/dist/chunk-6N4ENZO4.js.map +1 -0
- package/dist/{chunk-4UQALF5Y.js → chunk-6RQYWZI3.js} +2 -36
- package/dist/chunk-6RQYWZI3.js.map +1 -0
- package/dist/chunk-6TAWRKFK.js +86 -0
- package/dist/chunk-6TAWRKFK.js.map +1 -0
- package/dist/chunk-7F53DOML.js +53 -0
- package/dist/chunk-7F53DOML.js.map +1 -0
- package/dist/chunk-7KAGWJ5M.js +112 -0
- package/dist/chunk-7KAGWJ5M.js.map +1 -0
- package/dist/chunk-7LBPRXZP.js +1 -0
- package/dist/chunk-7LBPRXZP.js.map +1 -0
- package/dist/chunk-A7BXVZXZ.js +25 -0
- package/dist/chunk-A7BXVZXZ.js.map +1 -0
- package/dist/chunk-B47EXUHL.js +67 -0
- package/dist/chunk-B47EXUHL.js.map +1 -0
- package/dist/chunk-B5JQDR33.js +14 -0
- package/dist/chunk-B5JQDR33.js.map +1 -0
- package/dist/chunk-B5YTCKUJ.js +158 -0
- package/dist/chunk-B5YTCKUJ.js.map +1 -0
- package/dist/chunk-BDDC72GF.js +189 -0
- package/dist/chunk-BDDC72GF.js.map +1 -0
- package/dist/chunk-BDKFFFVX.js +342 -0
- package/dist/chunk-BDKFFFVX.js.map +1 -0
- package/dist/{chunk-QGX73TSQ.js → chunk-BONQTXRQ.js} +3 -12
- package/dist/chunk-BONQTXRQ.js.map +1 -0
- package/dist/chunk-BUPC72Y2.js +1007 -0
- package/dist/chunk-BUPC72Y2.js.map +1 -0
- package/dist/chunk-CKKNO4XB.js +70 -0
- package/dist/chunk-CKKNO4XB.js.map +1 -0
- package/dist/chunk-CX7ZVTO5.js +22 -0
- package/dist/chunk-CX7ZVTO5.js.map +1 -0
- package/dist/chunk-DU4WA6LQ.js +1 -0
- package/dist/chunk-DU4WA6LQ.js.map +1 -0
- package/dist/chunk-EJR6VVB3.js +63 -0
- package/dist/chunk-EJR6VVB3.js.map +1 -0
- package/dist/chunk-EKZRAWBP.js +110 -0
- package/dist/chunk-EKZRAWBP.js.map +1 -0
- package/dist/chunk-ENZ2XX27.js +26 -0
- package/dist/chunk-ENZ2XX27.js.map +1 -0
- package/dist/chunk-EOAJBBII.js +1 -0
- package/dist/chunk-EOAJBBII.js.map +1 -0
- package/dist/chunk-ERN7P6Q4.js +1 -0
- package/dist/chunk-ERN7P6Q4.js.map +1 -0
- package/dist/chunk-ESOFEAYK.js +57 -0
- package/dist/chunk-ESOFEAYK.js.map +1 -0
- package/dist/chunk-ETYB5JO6.js +175 -0
- package/dist/chunk-ETYB5JO6.js.map +1 -0
- package/dist/chunk-EZR5AV3J.js +74 -0
- package/dist/chunk-EZR5AV3J.js.map +1 -0
- package/dist/chunk-F2OKLHGB.js +9 -0
- package/dist/chunk-F2OKLHGB.js.map +1 -0
- package/dist/chunk-F3E2RLC7.js +342 -0
- package/dist/chunk-F3E2RLC7.js.map +1 -0
- package/dist/chunk-FAPIZJS2.js +54 -0
- package/dist/chunk-FAPIZJS2.js.map +1 -0
- package/dist/chunk-GDJNOZ47.js +1 -0
- package/dist/chunk-GDJNOZ47.js.map +1 -0
- package/dist/chunk-GDY2Z2SZ.js +83 -0
- package/dist/chunk-GDY2Z2SZ.js.map +1 -0
- package/dist/chunk-GLMYZ6OA.js +20 -0
- package/dist/chunk-GLMYZ6OA.js.map +1 -0
- package/dist/{chunk-XEVOC433.js → chunk-GPVXCY5I.js} +2 -73
- package/dist/chunk-GPVXCY5I.js.map +1 -0
- package/dist/{chunk-KSKST3KP.js → chunk-H3H74RWJ.js} +1 -1
- package/dist/chunk-HAAGSIZH.js +89 -0
- package/dist/chunk-HAAGSIZH.js.map +1 -0
- package/dist/{chunk-K5L7R7XM.js → chunk-HHMLE3TZ.js} +6 -54
- package/dist/chunk-HHMLE3TZ.js.map +1 -0
- package/dist/{chunk-JLJMVRRE.js → chunk-HP34GRQX.js} +10 -83
- package/dist/chunk-HP34GRQX.js.map +1 -0
- package/dist/chunk-HTI343NP.js +1 -0
- package/dist/chunk-HTI343NP.js.map +1 -0
- package/dist/{chunk-T2C3CGDQ.js → chunk-HTI7DZJM.js} +6 -4
- package/dist/{chunk-T2C3CGDQ.js.map → chunk-HTI7DZJM.js.map} +1 -1
- package/dist/chunk-IDNL6IH4.js +294 -0
- package/dist/chunk-IDNL6IH4.js.map +1 -0
- package/dist/chunk-IV6YQTY2.js +47 -0
- package/dist/chunk-IV6YQTY2.js.map +1 -0
- package/dist/chunk-J4SINPUA.js +939 -0
- package/dist/chunk-J4SINPUA.js.map +1 -0
- package/dist/chunk-J6S6MT7O.js +32 -0
- package/dist/chunk-J6S6MT7O.js.map +1 -0
- package/dist/chunk-JB3RFK6K.js +168 -0
- package/dist/chunk-JB3RFK6K.js.map +1 -0
- package/dist/chunk-JBQNCUXA.js +34 -0
- package/dist/chunk-JBQNCUXA.js.map +1 -0
- package/dist/chunk-JMJFK3A4.js +1 -0
- package/dist/chunk-JMJFK3A4.js.map +1 -0
- package/dist/chunk-JMMZICU7.js +74 -0
- package/dist/chunk-JMMZICU7.js.map +1 -0
- package/dist/chunk-JOQ2T3QP.js +663 -0
- package/dist/chunk-JOQ2T3QP.js.map +1 -0
- package/dist/chunk-K4IBS7VB.js +55 -0
- package/dist/chunk-K4IBS7VB.js.map +1 -0
- package/dist/chunk-KBBQSP4M.js +16 -0
- package/dist/chunk-KBBQSP4M.js.map +1 -0
- package/dist/chunk-KFAVEL5F.js +68 -0
- package/dist/chunk-KFAVEL5F.js.map +1 -0
- package/dist/chunk-KITX3HDN.js +17 -0
- package/dist/chunk-KITX3HDN.js.map +1 -0
- package/dist/chunk-KO5NMTAM.js +1 -0
- package/dist/chunk-KO5NMTAM.js.map +1 -0
- package/dist/chunk-KY4VXIN2.js +118 -0
- package/dist/chunk-KY4VXIN2.js.map +1 -0
- package/dist/chunk-KZGSXJKU.js +29 -0
- package/dist/chunk-KZGSXJKU.js.map +1 -0
- package/dist/chunk-LAIATEUB.js +24 -0
- package/dist/chunk-LAIATEUB.js.map +1 -0
- package/dist/{chunk-OJBFDBLG.js → chunk-LBYJPMHC.js} +2 -2
- package/dist/chunk-LKIABZNR.js +49 -0
- package/dist/chunk-LKIABZNR.js.map +1 -0
- package/dist/chunk-LQJ4KHMY.js +23 -0
- package/dist/chunk-LQJ4KHMY.js.map +1 -0
- package/dist/chunk-MEN4AFDZ.js +1 -0
- package/dist/chunk-MEN4AFDZ.js.map +1 -0
- package/dist/chunk-MHOJJYDK.js +93 -0
- package/dist/chunk-MHOJJYDK.js.map +1 -0
- package/dist/chunk-MJCMKZFP.js +30 -0
- package/dist/chunk-MJCMKZFP.js.map +1 -0
- package/dist/chunk-MT3BLVYN.js +31 -0
- package/dist/chunk-MT3BLVYN.js.map +1 -0
- package/dist/chunk-NF6WBPFG.js +37 -0
- package/dist/chunk-NF6WBPFG.js.map +1 -0
- package/dist/chunk-NNEKBZSM.js +66 -0
- package/dist/chunk-NNEKBZSM.js.map +1 -0
- package/dist/chunk-NPJ2T3L5.js +19 -0
- package/dist/chunk-NPJ2T3L5.js.map +1 -0
- package/dist/chunk-NVALGVQG.js +150 -0
- package/dist/chunk-NVALGVQG.js.map +1 -0
- package/dist/chunk-OJF67RNM.js +1 -0
- package/dist/chunk-OJF67RNM.js.map +1 -0
- package/dist/chunk-PHLGGRHC.js +89 -0
- package/dist/chunk-PHLGGRHC.js.map +1 -0
- package/dist/chunk-PIMD4DYG.js +104 -0
- package/dist/chunk-PIMD4DYG.js.map +1 -0
- package/dist/chunk-PJNE75WC.js +1 -0
- package/dist/chunk-PJNE75WC.js.map +1 -0
- package/dist/{chunk-J6LVLV6P.js → chunk-PLDJCCVL.js} +1 -1
- package/dist/{chunk-3RWESPUG.js → chunk-POXHJF3H.js} +6 -51
- package/dist/chunk-POXHJF3H.js.map +1 -0
- package/dist/chunk-PPJ7SYQL.js +81 -0
- package/dist/chunk-PPJ7SYQL.js.map +1 -0
- package/dist/chunk-PT777EQ3.js +48 -0
- package/dist/chunk-PT777EQ3.js.map +1 -0
- package/dist/chunk-PYLPLFJZ.js +318 -0
- package/dist/chunk-PYLPLFJZ.js.map +1 -0
- package/dist/chunk-QEPBHHAP.js +41 -0
- package/dist/chunk-QEPBHHAP.js.map +1 -0
- package/dist/chunk-QHGYCYV6.js +91 -0
- package/dist/chunk-QHGYCYV6.js.map +1 -0
- package/dist/chunk-R6722CIU.js +28 -0
- package/dist/chunk-R6722CIU.js.map +1 -0
- package/dist/chunk-RA4YVN43.js +1 -0
- package/dist/chunk-RA4YVN43.js.map +1 -0
- package/dist/chunk-RT5LUEO3.js +2339 -0
- package/dist/chunk-RT5LUEO3.js.map +1 -0
- package/dist/chunk-RXKUIJ77.js +236 -0
- package/dist/chunk-RXKUIJ77.js.map +1 -0
- package/dist/chunk-SC4SUIEY.js +1 -0
- package/dist/chunk-SC4SUIEY.js.map +1 -0
- package/dist/chunk-SQAAVYJG.js +12 -0
- package/dist/chunk-SQAAVYJG.js.map +1 -0
- package/dist/chunk-SXE4J43E.js +59 -0
- package/dist/chunk-SXE4J43E.js.map +1 -0
- package/dist/{chunk-EFLT7XZD.js → chunk-SYULMZGL.js} +6 -4
- package/dist/{chunk-EFLT7XZD.js.map → chunk-SYULMZGL.js.map} +1 -1
- package/dist/chunk-T4KS577P.js +58 -0
- package/dist/chunk-T4KS577P.js.map +1 -0
- package/dist/chunk-TFIOU6UR.js +78 -0
- package/dist/chunk-TFIOU6UR.js.map +1 -0
- package/dist/chunk-TIZGADU4.js +375 -0
- package/dist/chunk-TIZGADU4.js.map +1 -0
- package/dist/chunk-TP3MCUXS.js +1 -0
- package/dist/chunk-TP3MCUXS.js.map +1 -0
- package/dist/chunk-TSPQD5HW.js +613 -0
- package/dist/chunk-TSPQD5HW.js.map +1 -0
- package/dist/{chunk-JTJU56ZV.js → chunk-UOGM62JL.js} +11 -7
- package/dist/{chunk-JTJU56ZV.js.map → chunk-UOGM62JL.js.map} +1 -1
- package/dist/chunk-USRKPEQN.js +55 -0
- package/dist/chunk-USRKPEQN.js.map +1 -0
- package/dist/chunk-UTAB3XQI.js +667 -0
- package/dist/chunk-UTAB3XQI.js.map +1 -0
- package/dist/chunk-V3FFZWF3.js +182 -0
- package/dist/chunk-V3FFZWF3.js.map +1 -0
- package/dist/chunk-V4OZ7ISA.js +9 -0
- package/dist/chunk-V4OZ7ISA.js.map +1 -0
- package/dist/chunk-VZ5ZZBNX.js +139 -0
- package/dist/chunk-VZ5ZZBNX.js.map +1 -0
- package/dist/{chunk-AHLKV6KP.js → chunk-WN6AVBO4.js} +1 -1
- package/dist/chunk-WXR5CWSC.js +1 -0
- package/dist/chunk-WXR5CWSC.js.map +1 -0
- package/dist/chunk-X6WS3XWL.js +36 -0
- package/dist/chunk-X6WS3XWL.js.map +1 -0
- package/dist/{chunk-Q5BCNYED.js → chunk-XJRNBTIV.js} +7 -4
- package/dist/chunk-XQV3XNVT.js +225 -0
- package/dist/chunk-XQV3XNVT.js.map +1 -0
- package/dist/chunk-XV3DH5GC.js +58 -0
- package/dist/chunk-XV3DH5GC.js.map +1 -0
- package/dist/chunk-YWRXOPHC.js +43 -0
- package/dist/chunk-YWRXOPHC.js.map +1 -0
- package/dist/chunk-YZVFIW5D.js +27 -0
- package/dist/chunk-YZVFIW5D.js.map +1 -0
- package/dist/chunk-ZHC5CD6J.js +33 -0
- package/dist/chunk-ZHC5CD6J.js.map +1 -0
- package/dist/chunk-ZPJFXRQZ.js +23 -0
- package/dist/chunk-ZPJFXRQZ.js.map +1 -0
- package/dist/chunk-ZPXOBQDS.js +57 -0
- package/dist/chunk-ZPXOBQDS.js.map +1 -0
- package/dist/chunk-ZUFS6R7L.js +155 -0
- package/dist/chunk-ZUFS6R7L.js.map +1 -0
- package/dist/chunk-ZXLCTQUX.js +62 -0
- package/dist/chunk-ZXLCTQUX.js.map +1 -0
- package/dist/chunk-ZYXMWEL4.js +59 -0
- package/dist/chunk-ZYXMWEL4.js.map +1 -0
- package/dist/completion/controls.js +11 -0
- package/dist/completion/controls.js.map +1 -0
- package/dist/completion/documents.js +9 -0
- package/dist/completion/documents.js.map +1 -0
- package/dist/completion/generate-completion.js +23 -0
- package/dist/completion/generate-completion.js.map +1 -0
- package/dist/completion/index.js +23 -12
- package/dist/completion/json.js +7 -0
- package/dist/completion/json.js.map +1 -0
- package/dist/completion/message-schema.js +18 -0
- package/dist/completion/message-schema.js.map +1 -0
- package/dist/completion/provider-output-error.js +12 -0
- package/dist/completion/provider-output-error.js.map +1 -0
- package/dist/completion/stream-accumulator.js +10 -0
- package/dist/completion/stream-accumulator.js.map +1 -0
- package/dist/completion/types.js +28 -0
- package/dist/completion/types.js.map +1 -0
- package/dist/documents/chunk-text.js +7 -0
- package/dist/documents/chunk-text.js.map +1 -0
- package/dist/documents/index.js +5 -2
- package/dist/documents/text-document.js +8 -0
- package/dist/documents/text-document.js.map +1 -0
- package/dist/embeddings/distance.js +17 -0
- package/dist/embeddings/distance.js.map +1 -0
- package/dist/embeddings/embed.js +18 -0
- package/dist/embeddings/embed.js.map +1 -0
- package/dist/embeddings/index.js +11 -6
- package/dist/embeddings/types.js +2 -0
- package/dist/embeddings/types.js.map +1 -0
- package/dist/evals/advanced-metrics.js +46 -0
- package/dist/evals/advanced-metrics.js.map +1 -0
- package/dist/evals/agent-target.js +10 -0
- package/dist/evals/agent-target.js.map +1 -0
- package/dist/evals/cli.js +40 -0
- package/dist/evals/cli.js.map +1 -0
- package/dist/evals/execution.js +15 -0
- package/dist/evals/execution.js.map +1 -0
- package/dist/evals/format.js +13 -0
- package/dist/evals/format.js.map +1 -0
- package/dist/evals/index.d.ts +4 -4
- package/dist/evals/index.js +87 -2660
- package/dist/evals/index.js.map +1 -1
- package/dist/evals/judge.js +27 -0
- package/dist/evals/judge.js.map +1 -0
- package/dist/evals/metric.js +7 -0
- package/dist/evals/metric.js.map +1 -0
- package/dist/evals/metrics.js +53 -0
- package/dist/evals/metrics.js.map +1 -0
- package/dist/evals/outcome.js +7 -0
- package/dist/evals/outcome.js.map +1 -0
- package/dist/evals/reporting.js +11 -0
- package/dist/evals/reporting.js.map +1 -0
- package/dist/evals/runner.js +29 -0
- package/dist/evals/runner.js.map +1 -0
- package/dist/evals/selectors.js +18 -0
- package/dist/evals/selectors.js.map +1 -0
- package/dist/evals/suite.js +11 -0
- package/dist/evals/suite.js.map +1 -0
- package/dist/evals/types.js +1 -0
- package/dist/evals/types.js.map +1 -0
- package/dist/extractor/extractor.js +23 -0
- package/dist/extractor/extractor.js.map +1 -0
- package/dist/extractor/index.js +16 -7
- package/dist/guardrails/actions.js +13 -0
- package/dist/guardrails/actions.js.map +1 -0
- package/dist/guardrails/index.d.ts +3 -4
- package/dist/guardrails/index.js +15 -7
- package/dist/guardrails/message.js +9 -0
- package/dist/guardrails/message.js.map +1 -0
- package/dist/guardrails/policy.js +17 -0
- package/dist/guardrails/policy.js.map +1 -0
- package/dist/guardrails/runtime.js +11 -0
- package/dist/guardrails/runtime.js.map +1 -0
- package/dist/guardrails/text.js +9 -0
- package/dist/guardrails/text.js.map +1 -0
- package/dist/guardrails/types.js +1 -0
- package/dist/guardrails/types.js.map +1 -0
- package/dist/hooks/control.js +17 -0
- package/dist/hooks/control.js.map +1 -0
- package/dist/hooks/index.js +19 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/types.js +2 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/image-generation/generate-image.js +11 -0
- package/dist/image-generation/generate-image.js.map +1 -0
- package/dist/image-generation/index.js +7 -4
- package/dist/image-generation/types.js +2 -0
- package/dist/image-generation/types.js.map +1 -0
- package/dist/index.d.ts +5 -7
- package/dist/index.js +163 -57
- package/dist/internal/abort.js +13 -0
- package/dist/internal/abort.js.map +1 -0
- package/dist/internal/agent-runtime/agent-run.js +81 -0
- package/dist/internal/agent-runtime/agent-run.js.map +1 -0
- package/dist/internal/agent-runtime/approval-request.js +1 -0
- package/dist/internal/agent-runtime/approval-request.js.map +1 -0
- package/dist/internal/agent-runtime/approval-requirement.js +9 -0
- package/dist/internal/agent-runtime/approval-requirement.js.map +1 -0
- package/dist/internal/agent-runtime/continuation-state.js +26 -0
- package/dist/internal/agent-runtime/continuation-state.js.map +1 -0
- package/dist/internal/agent-runtime/interaction-suspension.js +25 -0
- package/dist/internal/agent-runtime/interaction-suspension.js.map +1 -0
- package/dist/internal/agent-runtime/memory-scope.js +8 -0
- package/dist/internal/agent-runtime/memory-scope.js.map +1 -0
- package/dist/internal/agent-runtime/memory.js +24 -0
- package/dist/internal/agent-runtime/memory.js.map +1 -0
- package/dist/internal/agent-runtime/prepared-tool-call.js +19 -0
- package/dist/internal/agent-runtime/prepared-tool-call.js.map +1 -0
- package/dist/internal/agent-runtime/retrieval.js +35 -0
- package/dist/internal/agent-runtime/retrieval.js.map +1 -0
- package/dist/internal/agent-runtime/run-options.js +9 -0
- package/dist/internal/agent-runtime/run-options.js.map +1 -0
- package/dist/internal/agent-runtime/run-validation.js +9 -0
- package/dist/internal/agent-runtime/run-validation.js.map +1 -0
- package/dist/internal/agent-runtime/stream-events.js +11 -0
- package/dist/internal/agent-runtime/stream-events.js.map +1 -0
- package/dist/internal/agent-runtime/structured-output.js +13 -0
- package/dist/internal/agent-runtime/structured-output.js.map +1 -0
- package/dist/internal/agent-runtime/tool-execution.js +55 -0
- package/dist/internal/agent-runtime/tool-execution.js.map +1 -0
- package/dist/internal/agent.d.ts +5 -5
- package/dist/internal/agent.js +93 -57
- package/dist/internal/agent.js.map +1 -1
- package/dist/internal/async-queue.js +7 -0
- package/dist/internal/async-queue.js.map +1 -0
- package/dist/internal/completion-request.js +11 -0
- package/dist/internal/completion-request.js.map +1 -0
- package/dist/internal/concurrency.js +7 -0
- package/dist/internal/concurrency.js.map +1 -0
- package/dist/internal/json-object.js +8 -0
- package/dist/internal/json-object.js.map +1 -0
- package/dist/internal/rag-text.js +7 -0
- package/dist/internal/rag-text.js.map +1 -0
- package/dist/internal/record.js +7 -0
- package/dist/internal/record.js.map +1 -0
- package/dist/internal/team-runtime/coordination.js +12 -0
- package/dist/internal/team-runtime/coordination.js.map +1 -0
- package/dist/internal/team-runtime/member.js +26 -0
- package/dist/internal/team-runtime/member.js.map +1 -0
- package/dist/internal/team-runtime/policy.js +7 -0
- package/dist/internal/team-runtime/policy.js.map +1 -0
- package/dist/internal/team-runtime/run.js +95 -0
- package/dist/internal/team-runtime/run.js.map +1 -0
- package/dist/internal/team-runtime/stream.js +9 -0
- package/dist/internal/team-runtime/stream.js.map +1 -0
- package/dist/internal/team-runtime/tools.js +17 -0
- package/dist/internal/team-runtime/tools.js.map +1 -0
- package/dist/internal/type-utils.js +1 -0
- package/dist/internal/type-utils.js.map +1 -0
- package/dist/internal/vector-search-options.js +9 -0
- package/dist/internal/vector-search-options.js.map +1 -0
- package/dist/mcp/index.js +3 -1
- package/dist/mcp/tool.js +7 -0
- package/dist/mcp/tool.js.map +1 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/memory/assert.js +11 -0
- package/dist/memory/assert.js.map +1 -0
- package/dist/memory/compaction.js +26 -0
- package/dist/memory/compaction.js.map +1 -0
- package/dist/memory/errors.js +9 -0
- package/dist/memory/errors.js.map +1 -0
- package/dist/memory/index.js +23 -10
- package/dist/memory/options.js +10 -0
- package/dist/memory/options.js.map +1 -0
- package/dist/memory/scope-key.js +7 -0
- package/dist/memory/scope-key.js.map +1 -0
- package/dist/memory/types.js +2 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/{types-CRda8x7p.d.ts → middleware-CWjnMbiH.d.ts} +64 -5
- package/dist/model-call-options.js +1 -0
- package/dist/model-call-options.js.map +1 -0
- package/dist/model-listing/errors.js +7 -0
- package/dist/model-listing/errors.js.map +1 -0
- package/dist/model-listing/index.js +4 -13
- package/dist/model-listing/index.js.map +1 -1
- package/dist/model-listing/types.js +2 -0
- package/dist/model-listing/types.js.map +1 -0
- package/dist/observability/group.js +30 -0
- package/dist/observability/group.js.map +1 -0
- package/dist/observability/index.d.ts +4 -6
- package/dist/observability/index.js +16 -8
- package/dist/observability/snapshot.js +7 -0
- package/dist/observability/snapshot.js.map +1 -0
- package/dist/observability/types.js +1 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/pipeline/errors.js +9 -0
- package/dist/pipeline/errors.js.map +1 -0
- package/dist/pipeline/graph.js +21 -0
- package/dist/pipeline/graph.js.map +1 -0
- package/dist/pipeline/index.d.ts +4 -6
- package/dist/pipeline/index.js +27 -805
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/observability.js +15 -0
- package/dist/pipeline/observability.js.map +1 -0
- package/dist/pipeline/pipeline.js +30 -0
- package/dist/pipeline/pipeline.js.map +1 -0
- package/dist/pipeline/runtime.js +17 -0
- package/dist/pipeline/runtime.js.map +1 -0
- package/dist/pipeline/types.js +1 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/retry.js +20 -0
- package/dist/retry.js.map +1 -0
- package/dist/schema/index.js +1 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/zod-schema.js +7 -0
- package/dist/schema/zod-schema.js.map +1 -0
- package/dist/skills/index.js +41 -12
- package/dist/skills/instructions.js +7 -0
- package/dist/skills/instructions.js.map +1 -0
- package/dist/skills/load.js +39 -0
- package/dist/skills/load.js.map +1 -0
- package/dist/skills/local.js +9 -0
- package/dist/skills/local.js.map +1 -0
- package/dist/skills/tools.js +37 -0
- package/dist/skills/tools.js.map +1 -0
- package/dist/skills/types.js +7 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/speech-generation/generate-speech.js +11 -0
- package/dist/speech-generation/generate-speech.js.map +1 -0
- package/dist/speech-generation/index.js +7 -4
- package/dist/speech-generation/types.js +2 -0
- package/dist/speech-generation/types.js.map +1 -0
- package/dist/streaming/index.js +3 -37
- package/dist/streaming/index.js.map +1 -1
- package/dist/streaming/readable-stream.js +7 -0
- package/dist/streaming/readable-stream.js.map +1 -0
- package/dist/{text-CmjXxakS.d.ts → text-GbW4WYMg.d.ts} +1 -1
- package/dist/tool/create-tool.js +14 -0
- package/dist/tool/create-tool.js.map +1 -0
- package/dist/tool/dynamic-tools.js +35 -0
- package/dist/tool/dynamic-tools.js.map +1 -0
- package/dist/tool/errors.js +11 -0
- package/dist/tool/errors.js.map +1 -0
- package/dist/tool/index.d.ts +3 -2
- package/dist/tool/index.js +41 -15
- package/dist/tool/middleware.js +7 -0
- package/dist/tool/middleware.js.map +1 -0
- package/dist/tool/question-tool.js +17 -0
- package/dist/tool/question-tool.js.map +1 -0
- package/dist/tool/skill-tool-marker.js +9 -0
- package/dist/tool/skill-tool-marker.js.map +1 -0
- package/dist/tool/think-tool.js +15 -0
- package/dist/tool/think-tool.js.map +1 -0
- package/dist/tool/tool.js +17 -0
- package/dist/tool/tool.js.map +1 -0
- package/dist/transcription/index.js +7 -4
- package/dist/transcription/transcribe.js +11 -0
- package/dist/transcription/transcribe.js.map +1 -0
- package/dist/transcription/types.js +2 -0
- package/dist/transcription/types.js.map +1 -0
- package/dist/{types-h0EL6Xn0.d.ts → types-Bqw0AuFl.d.ts} +6 -2
- package/dist/vector-store/filter.js +9 -0
- package/dist/vector-store/filter.js.map +1 -0
- package/dist/vector-store/index.js +31 -11
- package/dist/vector-store/ingest.js +19 -0
- package/dist/vector-store/ingest.js.map +1 -0
- package/dist/vector-store/lsh.js +7 -0
- package/dist/vector-store/lsh.js.map +1 -0
- package/dist/vector-store/retrieve.js +15 -0
- package/dist/vector-store/retrieve.js.map +1 -0
- package/dist/vector-store/types.js +1 -0
- package/dist/vector-store/types.js.map +1 -0
- package/package.json +2 -2
- package/dist/chunk-2QZJTG2E.js.map +0 -1
- package/dist/chunk-3RWESPUG.js.map +0 -1
- package/dist/chunk-4UQALF5Y.js.map +0 -1
- package/dist/chunk-AZB6N7P4.js +0 -320
- package/dist/chunk-AZB6N7P4.js.map +0 -1
- package/dist/chunk-JLJMVRRE.js.map +0 -1
- package/dist/chunk-K5L7R7XM.js.map +0 -1
- package/dist/chunk-OI3LSMJG.js +0 -1545
- package/dist/chunk-OI3LSMJG.js.map +0 -1
- package/dist/chunk-QGX73TSQ.js.map +0 -1
- package/dist/chunk-XC3LVC4K.js +0 -753
- package/dist/chunk-XC3LVC4K.js.map +0 -1
- package/dist/chunk-XEVOC433.js.map +0 -1
- package/dist/chunk-XSV5C4R5.js +0 -400
- package/dist/chunk-XSV5C4R5.js.map +0 -1
- package/dist/chunk-XU54PLSD.js +0 -4786
- package/dist/chunk-XU54PLSD.js.map +0 -1
- package/dist/middleware-mY_lpjDp.d.ts +0 -59
- package/dist/type-utils-CtHVDRn_.d.ts +0 -6
- /package/dist/{chunk-YK4WAAS4.js.map → chunk-2NLINXRF.js.map} +0 -0
- /package/dist/{chunk-SPD4XVR7.js.map → chunk-2XSMGVBG.js.map} +0 -0
- /package/dist/{chunk-3XQGVDU5.js.map → chunk-4C7AXYOM.js.map} +0 -0
- /package/dist/{chunk-IZNOP6JG.js.map → chunk-4FIVU53H.js.map} +0 -0
- /package/dist/{chunk-7JLAIN6E.js.map → chunk-4ONUNWGC.js.map} +0 -0
- /package/dist/{chunk-KSKST3KP.js.map → chunk-H3H74RWJ.js.map} +0 -0
- /package/dist/{chunk-OJBFDBLG.js.map → chunk-LBYJPMHC.js.map} +0 -0
- /package/dist/{chunk-J6LVLV6P.js.map → chunk-PLDJCCVL.js.map} +0 -0
- /package/dist/{chunk-AHLKV6KP.js.map → chunk-WN6AVBO4.js.map} +0 -0
- /package/dist/{chunk-Q5BCNYED.js.map → chunk-XJRNBTIV.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/agent-runtime/agent-run.ts"],"sourcesContent":["import type { Agent } from \"../../agent/agent\";\nimport {\n AgentRunCancelledError,\n AgentStreamClosedError,\n AgentStructuredOutputError,\n MaxTurnsError,\n} from \"../../agent/errors\";\nimport {\n type AgentInteractionResponse,\n assertAgentInteractionResponse,\n parseAgentContinuation,\n parseAgentInteractionResponse,\n} from \"../../agent/interactions\";\nimport {\n type AgentFinishEvent,\n type AgentLifecycle,\n composeAgentLifecycle,\n lifecycleSnapshot,\n} from \"../../agent/lifecycle\";\nimport { getAgentProviderOutputSchema } from \"../../agent/output-schema\";\nimport type {\n AgentBlockedOutcome,\n AgentInput,\n AgentInteractionOutcome,\n AgentOutcome,\n AgentResponse,\n AgentRunOptions,\n AgentRunSettings,\n AgentSteerInput,\n AgentSteerReceipt,\n AgentStreamEvent,\n} from \"../../agent/run-types\";\nimport { getAgentToolState } from \"../../agent/tool-state\";\nimport { isStreamingCompletionModel } from \"../../completion/generate-completion\";\nimport {\n assertCompletionRequestSupported,\n type CompletionModelControls,\n type CompletionModelControlsOf,\n type CompletionFinishReason,\n type CompletionModel,\n type CompletionRequest,\n type CompletionResponse,\n type CompletionSource,\n getAssistantGenerationMetadata,\n isJsonValue,\n type JsonObject,\n type Message as MessageType,\n mergeCompletionControlValues,\n type ProviderToolCall,\n parseMessage,\n parseMessages,\n type ToolCallPart,\n type ToolInteractionResponsePart,\n type ToolResultPart,\n textFromAssistantContent,\n Usage,\n} from \"../../completion/index\";\nimport { assertCompletionResponseIntegrity } from \"../../completion/provider-output-error\";\nimport { CompletionStreamAccumulator } from \"../../completion/stream-accumulator\";\nimport {\n appendGuardrailPolicies,\n type GuardrailDecisionRecord,\n type GuardrailPolicy,\n type GuardrailRunContext,\n hasEnforcedOutputGuardrails,\n runInputGuardrails,\n runOutputGuardrails,\n} from \"../../guardrails\";\nimport type { AgentHook } from \"../../hooks\";\nimport { runControl } from \"../../hooks\";\nimport { MemoryCompactionError } from \"../../memory/errors\";\nimport type { MemoryCompactionInfo, MemoryScope } from \"../../memory/types\";\nimport type { ModelCallOptions } from \"../../model-call-options\";\nimport {\n type ActiveAgentRunObservers,\n type ActiveGenerationObservers,\n startAgentRunObservers,\n} from \"../../observability/group\";\nimport type {\n AgentGenerationEndArgs,\n AgentGenerationModelInfo,\n AgentGenerationStartArgs,\n AgentRunEndArgs,\n AgentTraceOptions,\n} from \"../../observability/types\";\nimport {\n completionProviderOutputErrorUsage,\n type ResolvedRetryOptions,\n resolveRetryOptions,\n retryDelayMs,\n retryErrorAttributes,\n retryOptionsForFailure,\n waitForRetry,\n} from \"../../retry\";\nimport type { AgentMiddleware } from \"../../tool/middleware\";\nimport { isQuestionTool } from \"../../tool/question-tool\";\nimport { abortError, throwIfAborted } from \"../abort\";\nimport { createAsyncQueue } from \"../async-queue\";\nimport { createCompletionRequest } from \"../completion-request\";\nimport { assertJsonObject } from \"../json-object\";\nimport { extractRagText } from \"../rag-text\";\nimport { toolMayRequireApproval } from \"./approval-requirement\";\nimport {\n type AgentContinuationState,\n parseContinuationState,\n type QueuedSteering,\n questionResult,\n serializeContinuationState,\n} from \"./continuation-state\";\nimport {\n AgentInteractionSignal,\n approvalInteraction,\n ToolExecutionSuspension,\n} from \"./interaction-suspension\";\nimport { AgentRunMemory, type MemoryPreparation } from \"./memory\";\nimport { normalizeMemoryScope } from \"./memory-scope\";\nimport { fetchContextDocuments, fetchToolDefinitions } from \"./retrieval\";\nimport { getInternalAgentRunOptions, type InternalAgentRunOptions } from \"./run-options\";\nimport { assertNonnegativeSafeInteger, assertPositiveSafeInteger } from \"./run-validation\";\nimport { addTurn, addTurnToToolCallDelta, isGenerationDeltaEvent } from \"./stream-events\";\nimport {\n normalizeStructuredOutput,\n STRUCTURED_OUTPUT_RETRY_PROMPT,\n STRUCTURED_OUTPUT_TRUNCATED_RETRY_PROMPT,\n structuredOutputRepairPreview,\n} from \"./structured-output\";\nimport {\n type AgentToolEventPayload,\n ToolCallExecutor,\n type ToolExecutionEventPayload,\n type ToolExecutionObservation,\n type ToolResultEventPayload,\n} from \"./tool-execution\";\n\ntype AgentRunCreateOptions<\n Output,\n RawResponse,\n Controls extends CompletionModelControls,\n> = AgentRunSettings<Output, RawResponse, Controls> & {\n memoryScope?: MemoryScope | undefined;\n continuationState?: AgentContinuationState | undefined;\n interactionResponse?: AgentInteractionResponse | undefined;\n sourceRunId?: string | undefined;\n interactionId?: string | undefined;\n};\n\ntype StreamingCompletionState = {\n response: CompletionResponse | undefined;\n firstDeltaMs: number | undefined;\n emittedToolCallIds: Set<string>;\n providerErrorUsage: Usage;\n};\n\ntype StructuredOutputRetryRequest = Readonly<{\n request: CompletionRequest;\n previousResponse: \"omitted\" | \"preview\";\n includedOutputLength: number;\n}>;\n\nasync function settleFailureCleanup(\n operations: Array<() => void | Promise<void> | undefined>,\n): Promise<void> {\n for (const operation of operations) {\n try {\n await operation();\n } catch {\n // Cleanup failures must not replace the primary run failure.\n }\n }\n}\n\ntype RawResponseOf<Model> =\n Model extends CompletionModel<infer RawResponse> ? RawResponse : unknown;\n\ntype AgentTerminalResult<Output> = AgentOutcome<Output>;\n\nexport class AgentRun<Output = string, M extends CompletionModel = CompletionModel> {\n private chatHistory: MessageType[];\n private maxTurnCount: number;\n private activeHook: AgentHook | undefined;\n private readonly activeLifecycle: AgentLifecycle<Output, unknown> | undefined;\n private guardrailPolicies: GuardrailPolicy[];\n private guardrailDecisions: GuardrailDecisionRecord[] = [];\n private readonly concurrency: number;\n private traceOptions: AgentTraceOptions | undefined;\n private generationPromptRef: AgentTraceOptions[\"promptRef\"];\n private completionRetryOptions: ResolvedRetryOptions | undefined;\n private readonly requestMiddlewares: AgentMiddleware[];\n private readonly controls: Readonly<Record<string, string>> | undefined;\n private readonly steeringMessages: QueuedSteering[] = [];\n private runState: \"idle\" | \"running\" | \"closing\" | \"completed\" | \"errored\" | \"cancelled\" = \"idle\";\n private readonly memoryRecorder: AgentRunMemory;\n private readonly memoryScope: MemoryScope | undefined;\n private readonly onInternalFailure: InternalAgentRunOptions[\"onFailure\"];\n private readonly beforeFinish: InternalAgentRunOptions[\"beforeFinish\"];\n private readonly onSteeringApplied: InternalAgentRunOptions[\"onSteeringApplied\"];\n private readonly onInternalMemoryCompaction: InternalAgentRunOptions[\"onMemoryCompaction\"];\n private memoryCompaction: MemoryCompactionInfo | undefined;\n private readonly requestedRunId: string | undefined;\n private readonly continuationState: AgentContinuationState | undefined;\n private readonly interactionResponse: AgentInteractionResponse | undefined;\n private readonly resumedFrom: { runId: string; interactionId: string } | undefined;\n private currentMessages: MessageType[] = [];\n private cancellationError: AgentRunCancelledError | undefined;\n private activeGeneration: { turn: number; observers: ActiveGenerationObservers } | undefined;\n private validatedStructuredOutput: { text: string; output: Output } | undefined;\n private failedCompletionUsage = Usage.empty();\n private readonly abortController = new AbortController();\n private removeExternalAbortListener: (() => void) | undefined;\n\n private constructor(\n private readonly agent: Agent<Output, M>,\n private promptMessage: MessageType,\n initialHistory: MessageType[] = [],\n options: AgentRunCreateOptions<Output, RawResponseOf<M>, CompletionModelControlsOf<M>> = {},\n ) {\n this.chatHistory = initialHistory;\n this.maxTurnCount = assertNonnegativeSafeInteger(\n options.maxTurns ?? agent.defaultMaxTurns ?? 0,\n \"maxTurns\",\n );\n const internalOptions = getInternalAgentRunOptions(options);\n this.activeHook = internalOptions?.hook;\n this.onInternalFailure = internalOptions?.onFailure;\n this.beforeFinish = internalOptions?.beforeFinish;\n this.onSteeringApplied = internalOptions?.onSteeringApplied;\n this.onInternalMemoryCompaction = internalOptions?.onMemoryCompaction;\n this.requestedRunId = normalizeRequestedRunId(internalOptions?.runId);\n this.activeLifecycle = composeAgentLifecycle(agent.lifecycle, options.lifecycle) as\n | AgentLifecycle<Output, unknown>\n | undefined;\n this.guardrailPolicies =\n options.guardrails === undefined\n ? [...agent.guardrails]\n : appendGuardrailPolicies([...agent.guardrails], options.guardrails);\n const configuredConcurrency = assertPositiveSafeInteger(\n options.toolConcurrency ?? 1,\n \"toolConcurrency\",\n );\n this.concurrency =\n this.activeHook !== undefined ||\n agent.tools.some(\n (tool) => toolMayRequireApproval(tool.requiresApproval) || isQuestionTool(tool),\n )\n ? 1\n : configuredConcurrency;\n this.traceOptions = options.trace;\n const retrySetting = options.retries === undefined ? agent.retries : options.retries;\n this.completionRetryOptions =\n retrySetting === undefined || retrySetting === false\n ? undefined\n : resolveRetryOptions(retrySetting);\n this.requestMiddlewares = [...(options.middlewares ?? [])];\n this.controls = mergeCompletionControlValues(agent.controls, options.controls);\n this.memoryScope = options.memoryScope;\n this.memoryRecorder = new AgentRunMemory(agent, options.memoryScope, initialHistory);\n this.continuationState = options.continuationState;\n this.interactionResponse = options.interactionResponse;\n if (options.continuationState !== undefined) {\n this.steeringMessages.push(\n ...options.continuationState.steering.map((entry) => ({\n id: entry.id,\n messages: [...entry.messages],\n })),\n );\n }\n this.resumedFrom =\n options.sourceRunId === undefined || options.interactionId === undefined\n ? undefined\n : { runId: options.sourceRunId, interactionId: options.interactionId };\n this.linkExternalAbortSignal(options.abortSignal);\n }\n\n static fromAgent<Output, M extends CompletionModel>(\n agent: Agent<Output, M>,\n options: AgentRunOptions<Output, RawResponseOf<M>, CompletionModelControlsOf<M>>,\n ): AgentRun<Output, M> {\n const normalized = normalizeAgentInput(agent.id, options);\n if (normalized.scope !== undefined && agent.memory === undefined) {\n throw new TypeError(`Agent \"${agent.id}\" cannot use a session without a memory store.`);\n }\n return new AgentRun(agent, normalized.prompt, normalized.history, {\n ...options,\n memoryScope: normalized.scope,\n continuationState: normalized.continuationState,\n interactionResponse: normalized.interactionResponse,\n sourceRunId: normalized.sourceRunId,\n interactionId: normalized.interactionId,\n });\n }\n\n steer(input: AgentSteerInput): AgentSteerReceipt {\n if (this.isTerminal() || this.cancellationError !== undefined) {\n throw new AgentStreamClosedError();\n }\n const receipt: AgentSteerReceipt = Object.freeze({\n id: globalThis.crypto.randomUUID(),\n status: \"queued\",\n });\n this.steeringMessages.push({ id: receipt.id, messages: normalizeSteeringInput(input) });\n return receipt;\n }\n\n cancel(reason: string): AgentRunCancelledError | undefined {\n if (this.isTerminal() || this.cancellationError !== undefined) {\n return this.cancellationError;\n }\n const messages =\n this.currentMessages.length === 0 ? [this.promptMessage] : [...this.currentMessages];\n const error = new AgentRunCancelledError([...this.chatHistory, ...messages], reason);\n this.setCancellationError(error);\n return error;\n }\n\n private setCancellationError(error: AgentRunCancelledError): void {\n this.cancellationError = error;\n if (!this.abortController.signal.aborted) this.abortController.abort(error);\n }\n\n async generate(): Promise<AgentTerminalResult<Output>> {\n this.startRun();\n const runId = this.requestedRunId ?? globalThis.crypto.randomUUID();\n let usage = Usage.empty();\n let currentTurns = 0;\n let lastPrompt = this.promptMessage;\n let newMessages: MessageType[] = [this.promptMessage];\n let runObservers: ActiveAgentRunObservers | undefined;\n let pendingTurnMessages: MessageType[] = [];\n\n try {\n this.throwIfCancelled();\n const memoryPreparation =\n this.continuationState === undefined\n ? await this.memoryRecorder.prepareHistory(\n runId,\n newMessages,\n this.abortController.signal,\n )\n : undefined;\n if (memoryPreparation !== undefined) {\n this.chatHistory = memoryPreparation.history;\n usage = Usage.add(usage, memoryPreparation.usage);\n this.memoryCompaction = memoryPreparation.compaction;\n await this.notifyInternalMemoryCompaction(memoryPreparation.compaction);\n }\n runObservers = await this.startRunObservers(runId);\n if (memoryPreparation !== undefined) {\n await this.recordMemoryCompaction(memoryPreparation, runObservers);\n }\n this.throwIfCancelled();\n await this.activeLifecycle?.onStart?.({\n runId,\n input: lifecycleSnapshot(this.promptMessage),\n history: lifecycleSnapshot(this.chatHistory),\n maxTurns: this.maxTurnCount,\n });\n if (this.continuationState === undefined) {\n const inputResult = await runInputGuardrails(this.guardrailPolicies, {\n prompt: this.promptMessage,\n history: this.chatHistory,\n inputText: textFromMessage(this.promptMessage),\n run: this.guardrailRunContext(runId),\n });\n for (const decision of inputResult.decisions) {\n await this.recordGuardrailDecision(decision, runObservers);\n }\n this.promptMessage = inputResult.prompt;\n if (inputResult.blocked) {\n const text = inputResult.message ?? \"The request was blocked by a guardrail.\";\n const result: AgentBlockedOutcome = {\n type: \"blocked\",\n stage: \"input\",\n ...blockedOutcomeDetails(\n this.guardrailDecisions,\n \"The request was blocked by a guardrail.\",\n ),\n runId,\n text,\n usage,\n messages: [this.promptMessage, { role: \"assistant\", content: text }],\n trace: runObservers.trace,\n guardrails: [...this.guardrailDecisions],\n ...this.memoryCompactionResult(),\n };\n if (this.resumedFrom !== undefined) result.resumedFrom = this.resumedFrom;\n this.runState = \"closing\";\n await this.runLifecycleFinish(result);\n await runObservers.end(observerRunEnd(result));\n this.runState = \"completed\";\n this.disposeAbortLink();\n return result;\n }\n }\n\n newMessages = [this.promptMessage];\n await this.memoryRecorder.commitAcceptedInput(runId, newMessages);\n pendingTurnMessages = this.memoryRecorder.pendingTurnMessages(newMessages);\n await this.runRunStartHook(newMessages);\n if (this.continuationState !== undefined) {\n const interactionAttributes: JsonObject = {};\n if (this.resumedFrom?.runId !== undefined) {\n interactionAttributes.sourceRunId = this.resumedFrom.runId;\n }\n if (this.resumedFrom?.interactionId !== undefined) {\n interactionAttributes.interactionId = this.resumedFrom.interactionId;\n }\n if (this.interactionResponse?.type !== undefined) {\n interactionAttributes.interactionType = this.interactionResponse.type;\n }\n await runObservers.event({\n name: \"agent.interaction_response\",\n attributes: interactionAttributes,\n });\n try {\n const toolResults = await this.resolveContinuationTools(\n runId,\n newMessages,\n undefined,\n undefined,\n {\n turn: 1,\n runObservers,\n },\n );\n const toolMessage: MessageType = { role: \"tool\", content: toolResults };\n newMessages.push(toolMessage);\n await this.memoryRecorder.commitMessages(runId, 1, [toolMessage], pendingTurnMessages);\n await this.drainSteeringMessages(runId, 1, newMessages, pendingTurnMessages);\n await this.memoryRecorder.commitCompletedTurn(runId, 1, pendingTurnMessages);\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n return this.finishSuspension({\n runId,\n turn: 1,\n usage,\n newMessages,\n pendingTurnMessages,\n runObservers,\n suspension: error,\n uncommittedMessages: [],\n });\n }\n throw error;\n }\n }\n while (currentTurns <= this.maxTurnCount) {\n const prompt = newMessages.at(-1);\n if (prompt === undefined) {\n throw new Error(\"AgentRun requires at least one message\");\n }\n\n lastPrompt = prompt;\n currentTurns += 1;\n\n const historyForRequest = [...this.chatHistory, ...newMessages.slice(0, -1)];\n await this.runTurnStartHook(currentTurns, prompt, historyForRequest, newMessages);\n await this.runCompletionCallHook(prompt, historyForRequest, newMessages);\n\n const request = await this.createTurnRequest(prompt, historyForRequest, currentTurns);\n\n let response: CompletionResponse;\n try {\n response = await this.runCompletion(request, currentTurns, runObservers);\n } catch (error) {\n await settleFailureCleanup([\n () => this.runCompletionErrorHook(prompt, error, newMessages),\n ]);\n throw error;\n }\n response = await this.runCompletionResponseMiddlewares(request, response, currentTurns);\n try {\n assertCompletionResponseIntegrity({ response });\n } catch (error) {\n const providerOutputUsage = completionProviderOutputErrorUsage(error);\n if (providerOutputUsage !== undefined) usage = Usage.add(usage, providerOutputUsage);\n throw error;\n }\n usage = Usage.add(usage, response.usage);\n this.updateRunProgress(newMessages);\n await this.runCompletionResponseHook(prompt, response, newMessages);\n await this.runTurnEndHook(currentTurns, response, newMessages);\n await this.activeLifecycle?.onStepFinish?.({\n runId,\n step: currentTurns,\n response: lifecycleSnapshot(response),\n usage: lifecycleSnapshot(usage),\n });\n\n const toolCalls = response.choice.filter(\n (item): item is ToolCallPart => item.type === \"tool-call\",\n );\n const assistantMessage = this.generatedAssistantMessage(response, request);\n newMessages.push(assistantMessage);\n if (toolCalls.length === 0) {\n await this.beforeFinish?.();\n if (this.steeringMessages.length > 0) {\n await this.memoryRecorder.commitMessages(\n runId,\n currentTurns,\n [assistantMessage],\n pendingTurnMessages,\n );\n }\n const appliedSteering = await this.drainSteeringMessages(\n runId,\n currentTurns,\n newMessages,\n pendingTurnMessages,\n { closeWhenEmpty: true },\n );\n if (appliedSteering.length > 0) {\n for (const receipt of appliedSteering) {\n await runObservers.event({\n name: \"agent.steering_applied\",\n attributes: { id: receipt.id, turn: currentTurns },\n });\n }\n await this.memoryRecorder.commitCompletedTurn(runId, currentTurns, pendingTurnMessages);\n continue;\n }\n\n const guardedOutput = await this.runOutputGuardrailsForResponse(\n runId,\n usage,\n response,\n newMessages,\n runObservers,\n );\n response = guardedOutput.response;\n const finalAssistantMessage = this.generatedAssistantMessage(response, request);\n newMessages[newMessages.length - 1] = finalAssistantMessage;\n await this.memoryRecorder.commitMessages(\n runId,\n currentTurns,\n [finalAssistantMessage],\n pendingTurnMessages,\n );\n const result = this.createTerminalResult(\n runId,\n guardedOutput.text,\n guardedOutput.blocked,\n usage,\n newMessages,\n runObservers,\n );\n if (result.type === \"response\") {\n await this.runRunEndHook(result, newMessages);\n }\n await this.memoryRecorder.commitCompletedRun(\n runId,\n currentTurns,\n newMessages,\n pendingTurnMessages,\n );\n await this.runLifecycleFinish(result);\n await runObservers.end(observerRunEnd(result));\n this.runState = \"completed\";\n this.disposeAbortLink();\n return result;\n }\n\n this.updateRunProgress(newMessages);\n let toolResults: ToolResultPart[];\n try {\n toolResults = await this.executeToolCalls(\n runId,\n toolCalls,\n newMessages,\n undefined,\n undefined,\n {\n turn: currentTurns,\n runObservers,\n toolDefinitions: request.tools,\n },\n );\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n return this.finishSuspension({\n runId,\n turn: currentTurns,\n usage,\n newMessages,\n pendingTurnMessages,\n runObservers,\n suspension: error,\n uncommittedMessages: [assistantMessage],\n });\n }\n throw error;\n }\n const toolMessage: MessageType = { role: \"tool\", content: toolResults };\n newMessages.push(toolMessage);\n await this.memoryRecorder.commitMessages(\n runId,\n currentTurns,\n [assistantMessage, toolMessage],\n pendingTurnMessages,\n );\n await this.drainSteeringMessages(runId, currentTurns, newMessages, pendingTurnMessages);\n await this.memoryRecorder.commitCompletedTurn(runId, currentTurns, pendingTurnMessages);\n }\n\n throw new MaxTurnsError(this.maxTurnCount, [...this.chatHistory, ...newMessages], lastPrompt);\n } catch (error) {\n if (error instanceof MemoryCompactionError && error.usage !== undefined) {\n usage = Usage.add(usage, error.usage);\n }\n const failedCompletionUsage = this.takeFailedCompletionUsage();\n if (error instanceof AgentStructuredOutputError) {\n usage = Usage.add(usage, error.usage);\n } else {\n usage = Usage.add(usage, failedCompletionUsage);\n }\n this.runState = \"closing\";\n const runError = this.normalizeRunError(error);\n const reportedError = await this.reportRunFailure(\n runError,\n runId,\n usage,\n newMessages,\n runObservers,\n );\n this.runState = reportedError instanceof AgentRunCancelledError ? \"cancelled\" : \"errored\";\n this.disposeAbortLink();\n throw reportedError;\n }\n }\n\n async *events(): AsyncIterable<AgentStreamEvent<Output, RawResponseOf<M>>> {\n this.startRun();\n const runId = this.requestedRunId ?? globalThis.crypto.randomUUID();\n let usage = Usage.empty();\n let currentTurns = 0;\n let lastPrompt = this.promptMessage;\n let newMessages: MessageType[] = [this.promptMessage];\n const bufferOutputDeltas = hasEnforcedOutputGuardrails(this.guardrailPolicies);\n let runObservers: ActiveAgentRunObservers | undefined;\n let pendingTurnMessages: MessageType[] = [];\n\n try {\n this.throwIfCancelled();\n const memoryPreparation =\n this.continuationState === undefined\n ? await this.memoryRecorder.prepareHistory(\n runId,\n newMessages,\n this.abortController.signal,\n )\n : undefined;\n if (memoryPreparation !== undefined) {\n this.chatHistory = memoryPreparation.history;\n usage = Usage.add(usage, memoryPreparation.usage);\n this.memoryCompaction = memoryPreparation.compaction;\n await this.notifyInternalMemoryCompaction(memoryPreparation.compaction);\n }\n runObservers = await this.startRunObservers(runId);\n if (memoryPreparation !== undefined) {\n await this.recordMemoryCompaction(memoryPreparation, runObservers);\n }\n if (memoryPreparation?.compaction !== undefined) {\n yield { type: \"memory_compaction\", ...memoryPreparation.compaction };\n }\n this.throwIfCancelled();\n await this.activeLifecycle?.onStart?.({\n runId,\n input: lifecycleSnapshot(this.promptMessage),\n history: lifecycleSnapshot(this.chatHistory),\n maxTurns: this.maxTurnCount,\n });\n if (this.continuationState === undefined) {\n const inputResult = await runInputGuardrails(this.guardrailPolicies, {\n prompt: this.promptMessage,\n history: this.chatHistory,\n inputText: textFromMessage(this.promptMessage),\n run: this.guardrailRunContext(runId),\n });\n for (const decision of inputResult.decisions) {\n await this.recordGuardrailDecision(decision, runObservers);\n yield { type: \"guardrail_decision\", decision };\n }\n this.promptMessage = inputResult.prompt;\n if (inputResult.blocked) {\n const text = inputResult.message ?? \"The request was blocked by a guardrail.\";\n const result: AgentBlockedOutcome = {\n type: \"blocked\",\n stage: \"input\",\n ...blockedOutcomeDetails(\n this.guardrailDecisions,\n \"The request was blocked by a guardrail.\",\n ),\n runId,\n text,\n usage,\n messages: [this.promptMessage, { role: \"assistant\", content: text }],\n trace: runObservers.trace,\n guardrails: [...this.guardrailDecisions],\n ...this.memoryCompactionResult(),\n };\n if (this.resumedFrom !== undefined) result.resumedFrom = this.resumedFrom;\n this.runState = \"closing\";\n await this.runLifecycleFinish(result);\n await runObservers.end(observerRunEnd(result));\n this.runState = \"completed\";\n this.disposeAbortLink();\n yield result;\n return;\n }\n }\n\n newMessages = [this.promptMessage];\n await this.memoryRecorder.commitAcceptedInput(runId, newMessages);\n pendingTurnMessages = this.memoryRecorder.pendingTurnMessages(newMessages);\n await this.runRunStartHook(newMessages);\n if (this.continuationState !== undefined) {\n const responsePart =\n this.promptMessage.role === \"tool\" ? this.promptMessage.content[0] : undefined;\n if (responsePart === undefined || responsePart.type === \"tool-result\") {\n throw new TypeError(\"Agent continuation response message is invalid.\");\n }\n yield {\n type: \"interaction_response\",\n response: responsePart,\n sourceRunId: this.resumedFrom?.runId ?? this.continuationState.kind,\n };\n try {\n const execution = this.executeContinuationToolStream(runId, newMessages, {\n turn: 1,\n runObservers,\n });\n for await (const event of execution.events) {\n yield { turn: 1, ...event };\n }\n const toolResults = await execution.results;\n const toolMessage: MessageType = { role: \"tool\", content: toolResults };\n newMessages.push(toolMessage);\n await this.memoryRecorder.commitMessages(runId, 1, [toolMessage], pendingTurnMessages);\n for (const receipt of await this.drainSteeringMessages(\n runId,\n 1,\n newMessages,\n pendingTurnMessages,\n )) {\n yield { type: \"steering_applied\", id: receipt.id, turn: 1 };\n }\n await this.memoryRecorder.commitCompletedTurn(runId, 1, pendingTurnMessages);\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n const result = await this.finishSuspension({\n runId,\n turn: 1,\n usage,\n newMessages,\n pendingTurnMessages,\n runObservers,\n suspension: error,\n uncommittedMessages: [],\n });\n yield result;\n return;\n }\n throw error;\n }\n }\n while (currentTurns <= this.maxTurnCount) {\n const prompt = newMessages.at(-1);\n if (prompt === undefined) {\n throw new Error(\"AgentRun requires at least one message\");\n }\n\n lastPrompt = prompt;\n currentTurns += 1;\n\n const historyForRequest = [...this.chatHistory, ...newMessages.slice(0, -1)];\n yield {\n type: \"turn_start\",\n turn: currentTurns,\n prompt,\n history: historyForRequest,\n };\n await this.runTurnStartHook(currentTurns, prompt, historyForRequest, newMessages);\n await this.runCompletionCallHook(prompt, historyForRequest, newMessages);\n\n const request = await this.createTurnRequest(prompt, historyForRequest, currentTurns);\n\n assertCompletionRequestSupported(this.agent.model, request, { streaming: true });\n const providerRequest = this.providerTraceRequest(request, { stream: true });\n const generationStartArgs = this.generationStartArgs(\n currentTurns,\n request,\n providerRequest,\n );\n const generationObservers = await runObservers.startGeneration(generationStartArgs);\n this.activeGeneration = { turn: currentTurns, observers: generationObservers };\n const generationStartedAt = Date.now();\n yield {\n type: \"generation_start\",\n turn: currentTurns,\n request,\n modelInfo: generationStartArgs.modelInfo,\n promptRef: generationStartArgs.promptRef,\n };\n const bufferResponseEvents =\n this.shouldBufferStreamResponseEvents() || this.agent.outputSchema !== undefined;\n const completionState: StreamingCompletionState = {\n response: undefined,\n firstDeltaMs: undefined,\n emittedToolCallIds: new Set(),\n providerErrorUsage: Usage.empty(),\n };\n let response: CompletionResponse;\n try {\n try {\n for await (const event of this.streamCompletion({\n request,\n turn: currentTurns,\n bufferResponseEvents,\n bufferOutputDeltas,\n generationStartedAt,\n generationObservers,\n runObservers,\n state: completionState,\n })) {\n yield event;\n }\n } finally {\n usage = Usage.add(usage, completionState.providerErrorUsage);\n }\n if (completionState.response === undefined) {\n throw new Error(\"Streaming completion ended without a response.\");\n }\n response = completionState.response;\n } catch (error) {\n await settleFailureCleanup([\n () => this.closeActiveGeneration(error),\n () => this.runCompletionErrorHook(prompt, error, newMessages),\n ]);\n throw error;\n }\n const { firstDeltaMs, emittedToolCallIds } = completionState;\n\n let generationEndArgs: AgentGenerationEndArgs = {\n turn: currentTurns,\n response,\n };\n if (firstDeltaMs !== undefined) {\n generationEndArgs = { ...generationEndArgs, firstDeltaMs };\n }\n this.activeGeneration = undefined;\n await generationObservers.end(generationEndArgs);\n response = await this.runCompletionResponseMiddlewares(request, response, currentTurns);\n try {\n assertCompletionResponseIntegrity({ response });\n } catch (error) {\n const providerOutputUsage = completionProviderOutputErrorUsage(error);\n if (providerOutputUsage !== undefined) usage = Usage.add(usage, providerOutputUsage);\n throw error;\n }\n usage = Usage.add(usage, response.usage);\n this.updateRunProgress(newMessages);\n await this.runCompletionResponseHook(prompt, response, newMessages);\n await this.runTurnEndHook(currentTurns, response, newMessages);\n await this.activeLifecycle?.onStepFinish?.({\n runId,\n step: currentTurns,\n response: lifecycleSnapshot(response),\n usage: lifecycleSnapshot(usage),\n });\n\n const toolCalls = response.choice.filter(\n (item): item is ToolCallPart => item.type === \"tool-call\",\n );\n const assistantMessage = this.generatedAssistantMessage(response, request);\n newMessages.push(assistantMessage);\n\n if (toolCalls.length === 0) {\n await this.beforeFinish?.();\n let emittedTurnEnd = false;\n if (!bufferOutputDeltas) {\n if (bufferResponseEvents) {\n for (const event of responseStreamEvents(currentTurns, response)) {\n yield event as AgentStreamEvent<Output, RawResponseOf<M>>;\n }\n }\n yield {\n type: \"turn_end\",\n turn: currentTurns,\n response: response as CompletionResponse<RawResponseOf<M>>,\n firstDeltaMs,\n };\n emittedTurnEnd = true;\n }\n if (this.steeringMessages.length > 0) {\n await this.memoryRecorder.commitMessages(\n runId,\n currentTurns,\n [assistantMessage],\n pendingTurnMessages,\n );\n }\n const appliedSteering = await this.drainSteeringMessages(\n runId,\n currentTurns,\n newMessages,\n pendingTurnMessages,\n { closeWhenEmpty: true },\n );\n for (const receipt of appliedSteering) {\n yield { type: \"steering_applied\", id: receipt.id, turn: currentTurns };\n }\n if (appliedSteering.length > 0) {\n await this.memoryRecorder.commitCompletedTurn(runId, currentTurns, pendingTurnMessages);\n continue;\n }\n\n for await (const event of this.completeStreamingRun({\n runId,\n turn: currentTurns,\n request,\n response,\n firstDeltaMs,\n usage,\n newMessages,\n pendingTurnMessages,\n runObservers,\n bufferResponseEvents,\n bufferOutputDeltas,\n emittedTurnEnd,\n })) {\n yield event;\n }\n return;\n }\n\n if (bufferResponseEvents) {\n for (const event of responseStreamEvents(currentTurns, response)) {\n yield event as AgentStreamEvent<Output, RawResponseOf<M>>;\n }\n } else {\n for (const toolCall of toolCalls) {\n if (!emittedToolCallIds.has(toolCall.toolCallId)) {\n yield { type: \"tool_call\", turn: currentTurns, toolCall };\n }\n }\n }\n this.updateRunProgress(newMessages);\n yield {\n type: \"turn_end\",\n turn: currentTurns,\n response: response as CompletionResponse<RawResponseOf<M>>,\n firstDeltaMs,\n };\n\n let toolResults: ToolResultPart[];\n try {\n const toolExecution = this.executeStreamingToolCalls(runId, toolCalls, newMessages, {\n turn: currentTurns,\n runObservers,\n toolDefinitions: request.tools,\n });\n for await (const result of toolExecution.events) {\n yield { turn: currentTurns, ...result };\n }\n toolResults = await toolExecution.results;\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n const result = await this.finishSuspension({\n runId,\n turn: currentTurns,\n usage,\n newMessages,\n pendingTurnMessages,\n runObservers,\n suspension: error,\n uncommittedMessages: [assistantMessage],\n });\n yield result;\n return;\n }\n throw error;\n }\n const toolMessage: MessageType = { role: \"tool\", content: toolResults };\n newMessages.push(toolMessage);\n await this.memoryRecorder.commitMessages(\n runId,\n currentTurns,\n [assistantMessage, toolMessage],\n pendingTurnMessages,\n );\n for (const receipt of await this.drainSteeringMessages(\n runId,\n currentTurns,\n newMessages,\n pendingTurnMessages,\n )) {\n yield { type: \"steering_applied\", id: receipt.id, turn: currentTurns };\n }\n await this.memoryRecorder.commitCompletedTurn(runId, currentTurns, pendingTurnMessages);\n }\n\n throw new MaxTurnsError(this.maxTurnCount, [...this.chatHistory, ...newMessages], lastPrompt);\n } catch (error) {\n if (error instanceof MemoryCompactionError && error.usage !== undefined) {\n usage = Usage.add(usage, error.usage);\n }\n if (error instanceof AgentStructuredOutputError) {\n usage = Usage.add(usage, error.usage);\n }\n this.runState = \"closing\";\n const runError = this.normalizeRunError(error);\n const reportedError = await this.reportRunFailure(\n runError,\n runId,\n usage,\n newMessages,\n runObservers,\n );\n this.runState = reportedError instanceof AgentRunCancelledError ? \"cancelled\" : \"errored\";\n const finalUsage = usage;\n yield { type: \"error\", error: reportedError, usage: finalUsage };\n this.disposeAbortLink();\n return;\n } finally {\n if (this.runState === \"running\" || this.runState === \"closing\") {\n const cancellation =\n this.cancellationError ??\n new AgentRunCancelledError([...this.chatHistory, ...newMessages], \"Agent stream closed.\");\n this.cancellationError = cancellation;\n await settleFailureCleanup([() => this.closeActiveGeneration(cancellation)]);\n await this.reportRunFailure(cancellation, runId, usage, newMessages, runObservers);\n this.runState = \"cancelled\";\n this.disposeAbortLink();\n }\n }\n }\n\n private async runCompletion(\n request: CompletionRequest,\n turn: number,\n runObservers: ActiveAgentRunObservers,\n ): Promise<CompletionResponse> {\n assertCompletionRequestSupported(this.agent.model, request);\n this.validatedStructuredOutput = undefined;\n this.failedCompletionUsage = Usage.empty();\n const providerRequest = this.providerTraceRequest(request);\n const generationObservers = await runObservers.startGeneration(\n this.generationStartArgs(turn, request, providerRequest),\n );\n let currentRequest = request;\n let failedAttemptUsage = Usage.empty();\n try {\n for (let attempt = 1; ; attempt += 1) {\n let response: CompletionResponse;\n try {\n this.throwIfCancelled();\n response = await this.agent.model.completion(currentRequest, this.modelCallOptions());\n assertCompletionResponseIntegrity({ response });\n } catch (error) {\n const attemptUsage = completionProviderOutputErrorUsage(error);\n if (attemptUsage !== undefined) {\n failedAttemptUsage = Usage.add(failedAttemptUsage, attemptUsage);\n this.failedCompletionUsage = failedAttemptUsage;\n }\n const retryOptions = this.retryOptionsForFailure(error, attempt, turn, false);\n if (retryOptions === undefined) {\n throw error;\n }\n await this.scheduleCompletionRetry(\n error,\n attempt,\n turn,\n false,\n retryOptions,\n runObservers,\n providerOutputRetryEventAttributes(error, failedAttemptUsage),\n );\n continue;\n }\n\n const cumulativeUsage = Usage.add(failedAttemptUsage, response.usage);\n try {\n this.validateStructuredResponse(response, attempt, cumulativeUsage);\n } catch (error) {\n const retryOptions = this.retryOptionsForFailure(error, attempt, turn, false);\n if (retryOptions === undefined) {\n throw error;\n }\n failedAttemptUsage = cumulativeUsage;\n this.failedCompletionUsage = failedAttemptUsage;\n const retryRequest = structuredOutputRetryRequest(request, response, error);\n currentRequest = retryRequest.request;\n await this.scheduleCompletionRetry(\n error,\n attempt,\n turn,\n false,\n retryOptions,\n runObservers,\n structuredOutputRetryEventAttributes(error, retryRequest),\n );\n continue;\n }\n\n const finalResponse = Usage.isEmpty(failedAttemptUsage)\n ? response\n : { ...response, usage: cumulativeUsage };\n await generationObservers.end({ turn, response: finalResponse });\n this.failedCompletionUsage = Usage.empty();\n return finalResponse;\n }\n } catch (error) {\n await settleFailureCleanup([() => generationObservers.error({ turn, error })]);\n throw error;\n }\n }\n\n private async createTurnRequest(\n prompt: MessageType,\n history: MessageType[],\n turn: number,\n ): Promise<CompletionRequest> {\n const ragText = extractRagText(prompt);\n const abortSignal = this.abortController.signal;\n const documents = await fetchContextDocuments(this.agent, ragText, abortSignal);\n const toolDefinitions = await fetchToolDefinitions(this.agent, ragText, abortSignal);\n const request = createCompletionRequest(providerMessages([...history, prompt]), {\n instructions: this.agent.instructions,\n documents,\n tools: [...toolDefinitions, ...getAgentToolState(this.agent).providerTools],\n temperature: this.agent.temperature,\n maxTokens: this.agent.maxTokens,\n providerOptions: this.agent.providerOptions,\n toolChoice: this.agent.toolChoice,\n controls: this.controls,\n outputSchema: getAgentProviderOutputSchema(this.agent),\n });\n return this.runCompletionRequestMiddlewares(request, turn);\n }\n\n private async *streamCompletion(args: {\n request: CompletionRequest;\n turn: number;\n bufferResponseEvents: boolean;\n bufferOutputDeltas: boolean;\n generationStartedAt: number;\n generationObservers: ActiveGenerationObservers;\n runObservers: ActiveAgentRunObservers;\n state: StreamingCompletionState;\n }): AsyncIterable<AgentStreamEvent<Output, RawResponseOf<M>>> {\n const model = this.agent.model;\n if (!isStreamingCompletionModel(model)) {\n throw new TypeError(\"Streaming completion requires a streaming-capable model.\");\n }\n this.validatedStructuredOutput = undefined;\n let currentRequest = args.request;\n for (let attempt = 1; ; attempt += 1) {\n const accumulator = new CompletionStreamAccumulator();\n let hasProviderProgress = false;\n let recordedErrorUsage = false;\n let attemptErrorUsage: Usage | undefined;\n try {\n this.throwIfCancelled();\n for await (const event of model.streamCompletion(currentRequest, this.modelCallOptions())) {\n if (event.type === \"error\") {\n const eventUsage = event.usage ?? completionProviderOutputErrorUsage(event.error);\n if (eventUsage !== undefined) {\n args.state.providerErrorUsage = Usage.add(args.state.providerErrorUsage, eventUsage);\n recordedErrorUsage = true;\n attemptErrorUsage = eventUsage;\n }\n throw event.error;\n }\n const mapped = accumulator.accept(event);\n if (event.type === \"final\") break;\n if (event.type === \"tool_call_delta\" || mapped !== undefined) {\n hasProviderProgress = true;\n }\n if (args.state.firstDeltaMs === undefined && isGenerationDeltaEvent(event.type)) {\n args.state.firstDeltaMs = Date.now() - args.generationStartedAt;\n }\n if (event.type === \"tool_call_delta\") {\n yield addTurnToToolCallDelta(args.turn, event);\n }\n if (mapped !== undefined) {\n await args.generationObservers.update?.({ turn: args.turn, delta: mapped });\n if (mapped.type === \"tool_call\") {\n args.state.emittedToolCallIds.add(mapped.toolCall.toolCallId);\n }\n const shouldBuffer =\n args.bufferResponseEvents ||\n (args.bufferOutputDeltas &&\n (mapped.type === \"text_delta\" || mapped.type === \"reasoning_delta\"));\n if (!shouldBuffer) {\n yield addTurn(args.turn, mapped) as AgentStreamEvent<Output, RawResponseOf<M>>;\n }\n }\n }\n const response = accumulator.response();\n assertCompletionResponseIntegrity({ response });\n const cumulativeStructuredUsage = Usage.add(args.state.providerErrorUsage, response.usage);\n try {\n this.validateStructuredResponse(response, attempt, cumulativeStructuredUsage);\n } catch (error) {\n const retryOptions = this.retryOptionsForFailure(error, attempt, args.turn, true);\n if (retryOptions === undefined) {\n if (error instanceof AgentStructuredOutputError) {\n args.state.providerErrorUsage = Usage.empty();\n }\n throw error;\n }\n args.state.providerErrorUsage = Usage.add(args.state.providerErrorUsage, response.usage);\n args.state.firstDeltaMs = undefined;\n args.state.emittedToolCallIds.clear();\n const retryRequest = structuredOutputRetryRequest(args.request, response, error);\n currentRequest = retryRequest.request;\n await this.scheduleCompletionRetry(\n error,\n attempt,\n args.turn,\n true,\n retryOptions,\n args.runObservers,\n structuredOutputRetryEventAttributes(error, retryRequest),\n );\n continue;\n }\n args.state.response = Usage.isEmpty(args.state.providerErrorUsage)\n ? response\n : { ...response, usage: cumulativeStructuredUsage };\n args.state.providerErrorUsage = Usage.empty();\n return;\n } catch (error) {\n if (!recordedErrorUsage) {\n const attemptUsage = completionProviderOutputErrorUsage(error);\n if (attemptUsage !== undefined) {\n args.state.providerErrorUsage = Usage.add(args.state.providerErrorUsage, attemptUsage);\n attemptErrorUsage = attemptUsage;\n }\n }\n const retryOptions = hasProviderProgress\n ? undefined\n : this.retryOptionsForFailure(error, attempt, args.turn, true);\n if (retryOptions === undefined) {\n throw error;\n }\n await this.scheduleCompletionRetry(\n error,\n attempt,\n args.turn,\n true,\n retryOptions,\n args.runObservers,\n providerOutputRetryEventAttributes(\n error,\n args.state.providerErrorUsage,\n attemptErrorUsage,\n ),\n );\n }\n }\n }\n\n private async *completeStreamingRun(args: {\n runId: string;\n turn: number;\n request: CompletionRequest;\n response: CompletionResponse;\n firstDeltaMs: number | undefined;\n usage: Usage;\n newMessages: MessageType[];\n pendingTurnMessages: MessageType[];\n runObservers: ActiveAgentRunObservers;\n bufferResponseEvents: boolean;\n bufferOutputDeltas: boolean;\n emittedTurnEnd: boolean;\n }): AsyncIterable<AgentStreamEvent<Output, RawResponseOf<M>>> {\n const guardedOutput = await this.runOutputGuardrailsForResponse(\n args.runId,\n args.usage,\n args.response,\n args.newMessages,\n args.runObservers,\n );\n for (const decision of guardedOutput.decisions) {\n yield { type: \"guardrail_decision\", decision };\n }\n\n const response = guardedOutput.response;\n const assistantMessage = this.generatedAssistantMessage(response, args.request);\n args.newMessages[args.newMessages.length - 1] = assistantMessage;\n await this.memoryRecorder.commitMessages(\n args.runId,\n args.turn,\n [assistantMessage],\n args.pendingTurnMessages,\n );\n if (!args.emittedTurnEnd && (args.bufferResponseEvents || args.bufferOutputDeltas)) {\n for (const event of responseStreamEvents(args.turn, response, args.bufferResponseEvents)) {\n yield event as AgentStreamEvent<Output, RawResponseOf<M>>;\n }\n }\n if (!args.emittedTurnEnd) {\n yield {\n type: \"turn_end\",\n turn: args.turn,\n response: response as CompletionResponse<RawResponseOf<M>>,\n firstDeltaMs: args.firstDeltaMs,\n };\n }\n\n const result = this.createTerminalResult(\n args.runId,\n guardedOutput.text,\n guardedOutput.blocked,\n args.usage,\n args.newMessages,\n args.runObservers,\n );\n if (result.type === \"response\") {\n await this.runRunEndHook(result, args.newMessages);\n }\n await this.memoryRecorder.commitCompletedRun(\n args.runId,\n args.turn,\n args.newMessages,\n args.pendingTurnMessages,\n );\n await this.runLifecycleFinish(result);\n await args.runObservers.end(observerRunEnd(result));\n this.runState = \"completed\";\n this.disposeAbortLink();\n yield result;\n }\n\n private async finishSuspension(args: {\n runId: string;\n turn: number;\n usage: Usage;\n newMessages: MessageType[];\n pendingTurnMessages: MessageType[];\n runObservers: ActiveAgentRunObservers;\n suspension: ToolExecutionSuspension;\n uncommittedMessages: MessageType[];\n }): Promise<AgentInteractionOutcome> {\n const partialToolMessage: MessageType | undefined =\n args.suspension.completedResults.length === 0\n ? undefined\n : { role: \"tool\", content: [...args.suspension.completedResults] };\n if (partialToolMessage !== undefined) {\n args.newMessages.push(partialToolMessage);\n args.uncommittedMessages.push(partialToolMessage);\n }\n await this.memoryRecorder.commitMessages(\n args.runId,\n args.turn,\n args.uncommittedMessages,\n args.pendingTurnMessages,\n );\n await this.memoryRecorder.commitCompletedRun(\n args.runId,\n args.turn,\n args.newMessages,\n args.pendingTurnMessages,\n );\n\n this.runState = \"closing\";\n\n const continuationState: AgentContinuationState = {\n kind: \"anvia.agent-continuation\",\n history: [...this.chatHistory],\n messages: [...args.newMessages],\n pending: args.suspension.pending,\n remainingToolCalls: [...args.suspension.remainingToolCalls],\n steering: this.steeringMessages.map((entry) => ({\n id: entry.id,\n messages: [...entry.messages],\n })),\n };\n if (this.memoryScope !== undefined) continuationState.memoryScope = this.memoryScope;\n const continuation = parseAgentContinuation({\n version: 1,\n agentId: this.agent.id,\n sourceRunId: args.runId,\n interaction: args.suspension.interaction,\n state: serializeContinuationState(continuationState),\n });\n const result: AgentInteractionOutcome = {\n type: \"interaction\",\n runId: args.runId,\n text: latestAssistantText([...this.chatHistory, ...args.newMessages]),\n usage: args.usage,\n messages: [...args.newMessages],\n trace: args.runObservers.trace,\n guardrails: [...this.guardrailDecisions],\n interaction: continuation.interaction,\n continuation,\n ...generationArtifacts([...this.chatHistory, ...args.newMessages]),\n ...this.memoryCompactionResult(),\n };\n if (this.resumedFrom !== undefined) result.resumedFrom = this.resumedFrom;\n await this.runLifecycleFinish(result);\n await args.runObservers.end(observerRunEnd(result));\n this.runState = \"completed\";\n this.currentMessages = [...args.newMessages];\n this.disposeAbortLink();\n return result;\n }\n\n private generatedAssistantMessage(\n response: CompletionResponse,\n _request: CompletionRequest,\n ): MessageType {\n const generation: JsonObject = {\n provider: this.agent.model.provider,\n modelId: this.agent.model.modelId,\n usage: { ...response.usage },\n };\n if (response.finishReason !== undefined) generation.finishReason = response.finishReason;\n if (response.providerFinishReason !== undefined) {\n generation.providerFinishReason = response.providerFinishReason;\n }\n if (response.contextUsage !== undefined) generation.contextUsage = response.contextUsage;\n if (response.sources !== undefined) generation.sources = response.sources;\n if (response.providerToolCalls !== undefined) {\n generation.providerToolCalls = response.providerToolCalls;\n }\n const metadata: JsonObject = { anvia: { generation } };\n let message: MessageType = {\n role: \"assistant\",\n content: response.choice,\n metadata,\n };\n if (response.messageId !== undefined) message = { ...message, id: response.messageId };\n return message;\n }\n\n private providerTraceRequest(\n request: CompletionRequest,\n options: { stream?: boolean | undefined } = {},\n ): JsonObject | undefined {\n try {\n return this.agent.model.traceRequest?.(request, options);\n } catch (error) {\n return {\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n private generationStartArgs(\n turn: number,\n request: CompletionRequest,\n providerRequest: JsonObject | undefined,\n ): AgentGenerationStartArgs & { modelInfo: AgentGenerationModelInfo } {\n let args: AgentGenerationStartArgs & { modelInfo: AgentGenerationModelInfo } = {\n turn,\n request,\n promptRef: this.generationPromptRef,\n modelInfo: {\n provider: this.agent.model.provider,\n modelId: this.agent.model.modelId,\n capabilities: this.agent.model.capabilities,\n },\n };\n if (providerRequest !== undefined) args = { ...args, providerRequest };\n return args;\n }\n\n private retryOptionsForFailure(\n error: unknown,\n attempt: number,\n turn: number,\n streaming: boolean,\n ): ResolvedRetryOptions | undefined {\n if (this.abortController.signal.aborted) return undefined;\n return retryOptionsForFailure(this.completionRetryOptions, {\n error,\n attempt,\n turn,\n streaming,\n });\n }\n\n private async scheduleCompletionRetry(\n error: unknown,\n attempt: number,\n turn: number,\n streaming: boolean,\n options: ResolvedRetryOptions,\n runObservers: ActiveAgentRunObservers,\n additionalAttributes?: JsonObject | undefined,\n ): Promise<void> {\n const delayMs = retryDelayMs(options, attempt);\n const attributes: JsonObject = {\n turn,\n attempt,\n nextAttempt: attempt + 1,\n maxAttempts: options.maxAttempts,\n delayMs,\n streaming,\n ...retryErrorAttributes(error),\n };\n if (additionalAttributes !== undefined) {\n Object.assign(attributes, additionalAttributes);\n }\n await runObservers.event({\n name: \"completion.retry\",\n level: \"WARNING\",\n attributes,\n });\n await waitForRetry(delayMs, this.abortController.signal);\n }\n\n private async executeToolCalls(\n runId: string,\n toolCalls: ToolCallPart[],\n newMessages: MessageType[],\n onResult?: (result: ToolResultEventPayload) => void,\n onStreamEvent?: (event: AgentToolEventPayload) => void,\n observation?: ToolExecutionObservation,\n ): Promise<ToolResultPart[]> {\n const executor = this.createToolExecutor(runId, newMessages);\n return executor.execute(toolCalls, onResult, onStreamEvent, observation);\n }\n\n private createToolExecutor(runId: string, newMessages: MessageType[]): ToolCallExecutor {\n return new ToolCallExecutor(\n this.agent,\n this.activeHook,\n async (request) => {\n throw new AgentInteractionSignal(approvalInteraction(request), request.rejectMessage);\n },\n this.activeLifecycle,\n {\n runId,\n sessionId: this.memoryScope?.sessionId,\n metadata: this.memoryScope?.metadata,\n },\n this.concurrency,\n this.requestMiddlewares,\n this.abortController.signal,\n (reason) => this.cancelled(newMessages, reason),\n );\n }\n\n private async resolveContinuationTools(\n runId: string,\n newMessages: MessageType[],\n onResult: ((result: ToolResultEventPayload) => void) | undefined,\n onStreamEvent: ((event: AgentToolEventPayload) => void) | undefined,\n observation: ToolExecutionObservation,\n ): Promise<ToolResultPart[]> {\n const state = this.continuationState;\n const response = this.interactionResponse;\n if (state === undefined || response === undefined) {\n return [];\n }\n const pending = state.pending;\n const interaction = this.resumedFrom;\n if (interaction === undefined) {\n throw new TypeError(\"Agent continuation is missing its source run linkage.\");\n }\n const executor = this.createToolExecutor(runId, newMessages);\n const results: ToolResultPart[] = [];\n if (response.type === \"tool-approval\") {\n const attributes: JsonObject = {\n approvalId: interaction.interactionId,\n toolName: pending.toolCall.toolName,\n toolCallId: pending.toolCall.toolCallId,\n internalCallId: pending.internalCallId,\n approved: response.approved,\n };\n if (response.reason !== undefined) attributes.decisionReason = response.reason;\n await observation.runObservers.event({\n name: \"tool.approval_resolved\",\n attributes,\n });\n if (response.approved) {\n results.push(await executor.executeResumed(pending, onResult, onStreamEvent, observation));\n } else {\n const output = {\n type: \"execution-denied\" as const,\n reason: response.reason ?? pending.rejectMessage ?? \"Tool approval was rejected.\",\n };\n results.push(await executor.resolveResumed(pending, output, onResult, observation));\n }\n } else {\n const currentTool = this.agent.getTool(pending.toolCall.toolName);\n if (currentTool === undefined || !isQuestionTool(currentTool)) {\n throw new TypeError(\n `Cannot resume question interaction because tool \"${pending.toolCall.toolName}\" is no longer registered as a question tool.`,\n );\n }\n const output = questionResult(response.answers);\n results.push(await executor.resolveResumed(pending, output, onResult, observation));\n }\n try {\n results.push(\n ...(await executor.execute(state.remainingToolCalls, onResult, onStreamEvent, observation)),\n );\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n error.completedResults = [...results, ...error.completedResults];\n }\n throw error;\n }\n return results;\n }\n\n private executeStreamingToolCalls(\n runId: string,\n toolCalls: ToolCallPart[],\n newMessages: MessageType[],\n observation: ToolExecutionObservation,\n ): {\n events: AsyncIterable<ToolExecutionEventPayload>;\n results: Promise<ToolResultPart[]>;\n } {\n const events = createAsyncQueue<ToolExecutionEventPayload>();\n const results = this.executeToolCalls(\n runId,\n toolCalls,\n newMessages,\n (result) => events.enqueue(result),\n (event) => events.enqueue(event),\n observation,\n );\n results.then(\n () => events.close(),\n (error: unknown) => events.throw(error),\n );\n return { events, results };\n }\n\n private executeContinuationToolStream(\n runId: string,\n newMessages: MessageType[],\n observation: ToolExecutionObservation,\n ): {\n events: AsyncIterable<ToolExecutionEventPayload>;\n results: Promise<ToolResultPart[]>;\n } {\n const events = createAsyncQueue<ToolExecutionEventPayload>();\n const results = this.resolveContinuationTools(\n runId,\n newMessages,\n (result) => events.enqueue(result),\n (event) => events.enqueue(event),\n observation,\n );\n results.then(\n () => events.close(),\n (error: unknown) => events.throw(error),\n );\n return { events, results };\n }\n\n private async closeActiveGeneration(error: unknown): Promise<void> {\n const active = this.activeGeneration;\n if (active === undefined) {\n return;\n }\n this.activeGeneration = undefined;\n await active.observers.error({ turn: active.turn, error });\n }\n\n private updateRunProgress(messages: MessageType[]): void {\n this.currentMessages = [...messages];\n }\n\n private async runLifecycleFinish(result: AgentTerminalResult<Output>): Promise<void> {\n const common = {\n runId: result.runId,\n text: result.text,\n usage: lifecycleSnapshot(result.usage),\n messages: lifecycleSnapshot(result.messages),\n };\n if (result.memoryCompaction !== undefined) {\n Object.assign(common, { memoryCompaction: lifecycleSnapshot(result.memoryCompaction) });\n }\n const event =\n result.type === \"response\"\n ? {\n ...common,\n status: \"completed\",\n output: lifecycleSnapshot(result.output),\n }\n : result.type === \"blocked\"\n ? {\n ...common,\n status: \"blocked\",\n stage: result.stage,\n }\n : {\n ...common,\n status: \"suspended\",\n interaction: lifecycleSnapshot(result.interaction),\n };\n await this.activeLifecycle?.onFinish?.(event as AgentFinishEvent<Output>);\n }\n\n private async runLifecycleError(\n error: unknown,\n runId: string,\n usage: Usage,\n messages: MessageType[],\n ): Promise<unknown | undefined> {\n try {\n await this.activeLifecycle?.onError?.({\n runId,\n error: lifecycleSnapshot(error),\n usage: lifecycleSnapshot(usage),\n messages: lifecycleSnapshot([...this.chatHistory, ...messages]),\n });\n return undefined;\n } catch (lifecycleError) {\n return lifecycleError;\n }\n }\n\n private async reportRunFailure(\n error: unknown,\n runId: string,\n usage: Usage,\n messages: MessageType[],\n runObservers: ActiveAgentRunObservers | undefined,\n ): Promise<unknown> {\n const reportedError = await this.resolveReportedRunError(error, runId, usage, messages);\n await settleFailureCleanup([\n () =>\n this.onInternalFailure?.({\n error: reportedError,\n messages: lifecycleSnapshot(messages),\n }),\n () =>\n runObservers?.error({\n status: reportedError instanceof AgentRunCancelledError ? \"cancelled\" : \"failed\",\n error: reportedError,\n usage,\n messages: [...messages],\n }),\n () => this.memoryRecorder.recordError(runId, reportedError, messages),\n ]);\n return reportedError;\n }\n\n private async resolveReportedRunError(\n error: unknown,\n runId: string,\n usage: Usage,\n messages: MessageType[],\n ): Promise<unknown> {\n try {\n await this.runRunErrorHook(error, usage, messages);\n } catch {\n // Thrown hook errors are diagnostic cleanup and must not replace the run failure.\n }\n const reportedError = this.cancellationError ?? error;\n await this.runLifecycleError(reportedError, runId, usage, messages);\n return reportedError;\n }\n\n private async runOutputGuardrailsForResponse(\n runId: string,\n usage: Usage,\n response: CompletionResponse,\n messages: MessageType[],\n runObservers: ActiveAgentRunObservers,\n ): Promise<{\n text: string;\n blocked: boolean;\n response: CompletionResponse;\n decisions: GuardrailDecisionRecord[];\n }> {\n const originalOutput = textFromAssistantContent(response.choice);\n const result = await runOutputGuardrails(this.guardrailPolicies, {\n outputText: originalOutput,\n messages: [...this.chatHistory, ...messages],\n usage,\n run: this.guardrailRunContext(runId),\n });\n for (const decision of result.decisions) {\n await this.recordGuardrailDecision(decision, runObservers);\n }\n const text = result.blocked\n ? (result.message ?? \"The response was blocked by a guardrail.\")\n : result.outputText;\n if (text === originalOutput) {\n return { text, blocked: result.blocked, response, decisions: result.decisions };\n }\n return {\n text,\n blocked: result.blocked,\n response: {\n ...response,\n choice: [{ type: \"text\", text }],\n },\n decisions: result.decisions,\n };\n }\n\n private createTerminalResult(\n runId: string,\n text: string,\n blocked: boolean,\n usage: Usage,\n messages: MessageType[],\n runObservers: ActiveAgentRunObservers,\n ): AgentTerminalResult<Output> {\n const common = {\n runId,\n text,\n usage,\n messages: [...messages],\n trace: runObservers.trace,\n guardrails: [...this.guardrailDecisions],\n ...generationArtifacts(messages),\n ...this.memoryCompactionResult(),\n };\n if (this.resumedFrom !== undefined) Object.assign(common, { resumedFrom: this.resumedFrom });\n if (blocked) {\n return {\n ...common,\n type: \"blocked\",\n stage: \"output\",\n ...blockedOutcomeDetails(\n this.guardrailDecisions,\n \"The response was blocked by a guardrail.\",\n ),\n };\n }\n return {\n ...common,\n type: \"response\",\n output: this.parseOutput(text),\n };\n }\n\n private validateStructuredResponse(\n response: CompletionResponse,\n attempt: number,\n usage: Usage,\n ): void {\n if (this.agent.outputSchema === undefined) return;\n if (response.choice.some((item) => item.type === \"tool-call\")) return;\n const text = textFromAssistantContent(response.choice);\n const normalized = normalizeStructuredOutput(text);\n if (response.finishReason === \"content-filter\") {\n throw new AgentStructuredOutputError({\n phase: \"content-filter\",\n attempt,\n maxAttempts: this.completionRetryOptions?.maxAttempts ?? 1,\n outputLength: text.length,\n normalizedLength: normalized.text.length,\n outputFormat: normalized.format,\n attemptUsage: response.usage,\n usage,\n finishReason: response.finishReason,\n providerFinishReason: response.providerFinishReason,\n });\n }\n if (response.finishReason === \"length\") {\n throw new AgentStructuredOutputError({\n phase: \"truncated\",\n attempt,\n maxAttempts: this.completionRetryOptions?.maxAttempts ?? 1,\n outputLength: text.length,\n normalizedLength: normalized.text.length,\n outputFormat: normalized.format,\n attemptUsage: response.usage,\n usage,\n finishReason: response.finishReason,\n providerFinishReason: response.providerFinishReason,\n });\n }\n const output = this.parseOutput(text, attempt, usage, {\n useValidatedOutput: false,\n attemptUsage: response.usage,\n finishReason: response.finishReason,\n providerFinishReason: response.providerFinishReason,\n });\n this.validatedStructuredOutput = { text, output };\n }\n\n private takeFailedCompletionUsage(): Usage {\n const usage = this.failedCompletionUsage;\n this.failedCompletionUsage = Usage.empty();\n return usage;\n }\n\n private parseOutput(\n text: string,\n attempt = 1,\n usage = Usage.empty(),\n options: {\n useValidatedOutput?: boolean;\n attemptUsage?: Usage;\n finishReason?: CompletionFinishReason | undefined;\n providerFinishReason?: string | undefined;\n } = {},\n ): Output {\n const schema = this.agent.outputSchema;\n if (schema === undefined) return text as Output;\n if (options.useValidatedOutput !== false && this.validatedStructuredOutput?.text === text) {\n return this.validatedStructuredOutput.output;\n }\n const normalized = normalizeStructuredOutput(text);\n const maxAttempts = this.completionRetryOptions?.maxAttempts ?? 1;\n let json: unknown;\n try {\n json = JSON.parse(normalized.text);\n if (!isJsonValue(json)) {\n throw new TypeError(\"Agent structured output is not a JSON value.\");\n }\n } catch (error) {\n throw new AgentStructuredOutputError({\n phase: \"parse\",\n attempt,\n maxAttempts,\n outputLength: text.length,\n normalizedLength: normalized.text.length,\n outputFormat: normalized.format,\n attemptUsage: options.attemptUsage ?? usage,\n usage,\n finishReason: options.finishReason,\n providerFinishReason: options.providerFinishReason,\n cause: error,\n });\n }\n try {\n return schema.parse(json);\n } catch (error) {\n throw new AgentStructuredOutputError({\n phase: \"schema\",\n attempt,\n maxAttempts,\n outputLength: text.length,\n normalizedLength: normalized.text.length,\n outputFormat: normalized.format,\n attemptUsage: options.attemptUsage ?? usage,\n usage,\n finishReason: options.finishReason,\n providerFinishReason: options.providerFinishReason,\n cause: error,\n });\n }\n }\n\n private memoryCompactionResult(): {\n memoryCompaction?: MemoryCompactionInfo | undefined;\n } {\n return this.memoryCompaction === undefined\n ? {}\n : { memoryCompaction: lifecycleSnapshot(this.memoryCompaction) };\n }\n\n private async recordGuardrailDecision(\n decision: GuardrailDecisionRecord,\n runObservers: ActiveAgentRunObservers,\n ): Promise<void> {\n this.guardrailDecisions.push(decision);\n await runObservers.event({\n name: \"guardrail.decision\",\n level: decision.action === \"block\" ? \"WARNING\" : \"DEFAULT\",\n attributes: guardrailDecisionAttributes(decision),\n });\n }\n\n private async recordMemoryCompaction(\n preparation: MemoryPreparation,\n runObservers: ActiveAgentRunObservers,\n ): Promise<void> {\n const compaction = preparation.compaction;\n if (compaction === undefined) {\n return;\n }\n await runObservers.event({\n name: \"memory.compaction\",\n attributes: {\n originalMessageCount: compaction.originalMessageCount,\n compactedMessageCount: compaction.compactedMessageCount,\n retainedMessageCount: compaction.retainedMessageCount,\n originalTokenCount: compaction.originalTokenCount,\n compactedTokenCount: compaction.compactedTokenCount,\n retainedTokenCount: compaction.retainedTokenCount,\n resultTokenCount: compaction.resultTokenCount,\n attempts: compaction.attempts,\n inputTokens: compaction.usage.inputTokens,\n outputTokens: compaction.usage.outputTokens,\n totalTokens: compaction.usage.totalTokens,\n },\n });\n }\n\n private async notifyInternalMemoryCompaction(\n compaction: MemoryCompactionInfo | undefined,\n ): Promise<void> {\n if (compaction === undefined) {\n return;\n }\n await this.onInternalMemoryCompaction?.(lifecycleSnapshot(compaction));\n }\n\n private guardrailRunContext(runId: string): GuardrailRunContext {\n const context: GuardrailRunContext = {\n agentId: this.agent.id,\n runId,\n };\n if (this.memoryScope !== undefined) {\n context.sessionId = this.memoryScope.sessionId;\n if (this.memoryScope.metadata !== undefined) {\n context.metadata = this.memoryScope.metadata;\n }\n }\n return context;\n }\n\n private async startRunObservers(runId: string): Promise<ActiveAgentRunObservers> {\n const observability = this.agent.observability;\n return startAgentRunObservers(\n observability?.observers ?? {},\n {\n runId,\n agentName: this.agent.name,\n agentDescription: this.agent.description,\n instructions: this.agent.instructions,\n trace: this.traceOptions,\n promptRef: this.traceOptions?.promptRef,\n prompt: this.promptMessage,\n history: this.chatHistory,\n maxTurns: this.maxTurnCount,\n },\n {\n primaryTrace: observability?.primaryTrace,\n errorPolicy: observability?.errorPolicy ?? \"ignore\",\n },\n );\n }\n\n private async runCompletionCallHook(\n prompt: MessageType,\n history: MessageType[],\n newMessages: MessageType[],\n ): Promise<void> {\n const action = await this.activeHook?.onCompletionCall?.({\n prompt,\n history,\n run: runControl,\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n\n private async runRunStartHook(newMessages: MessageType[]): Promise<void> {\n const action = await this.activeHook?.onRunStart?.({\n prompt: this.promptMessage,\n history: this.chatHistory,\n maxTurns: this.maxTurnCount,\n run: runControl,\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n\n private async runRunEndHook(\n result: AgentResponse<Output>,\n newMessages: MessageType[],\n ): Promise<void> {\n const action = await this.activeHook?.onRunEnd?.({\n status: \"completed\",\n output: result.output,\n text: result.text,\n usage: result.usage,\n messages: result.messages,\n run: runControl,\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n\n private async runRunErrorHook(\n error: unknown,\n usage: Usage,\n newMessages: MessageType[],\n ): Promise<void> {\n const action = await this.activeHook?.onRunError?.({\n error,\n usage,\n messages: [...this.chatHistory, ...newMessages],\n run: runControl,\n });\n if (action?.type === \"terminate\") {\n this.cancelled(newMessages, action.reason);\n }\n }\n\n private async runTurnStartHook(\n turn: number,\n prompt: MessageType,\n history: MessageType[],\n newMessages: MessageType[],\n ): Promise<void> {\n const action = await this.activeHook?.onTurnStart?.({\n turn,\n prompt,\n history,\n run: runControl,\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n\n private async runTurnEndHook(\n turn: number,\n response: CompletionResponse,\n newMessages: MessageType[],\n ): Promise<void> {\n const action = await this.activeHook?.onTurnEnd?.({\n turn,\n response,\n run: runControl,\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n\n private async runCompletionRequestMiddlewares(\n request: CompletionRequest,\n turn: number,\n ): Promise<CompletionRequest> {\n let current = request;\n this.generationPromptRef = this.traceOptions?.promptRef;\n for (const middleware of this.activeMiddlewares()) {\n const replacement = await middleware.onCompletionRequest?.({\n turn,\n request: current,\n originalRequest: request,\n promptRef: this.generationPromptRef,\n });\n if (replacement?.promptRef !== undefined) {\n this.generationPromptRef = replacement.promptRef ?? undefined;\n }\n if (replacement?.request !== undefined) {\n current = replacement.request;\n if (current.providerOptions !== undefined) {\n assertJsonObject(current.providerOptions, \"providerOptions\");\n }\n }\n }\n return current;\n }\n\n private async runCompletionResponseMiddlewares(\n request: CompletionRequest,\n response: CompletionResponse,\n turn: number,\n ): Promise<CompletionResponse> {\n let current = response;\n for (const middleware of this.activeMiddlewares()) {\n const replacement = await middleware.onCompletionResponse?.({\n turn,\n request,\n response: current,\n originalResponse: response,\n });\n if (replacement?.response !== undefined) {\n current = replacement.response;\n }\n }\n return current;\n }\n\n private async runCompletionResponseHook(\n prompt: MessageType,\n response:\n | Awaited<ReturnType<M[\"completion\"]>>\n | Awaited<ReturnType<CompletionModel[\"completion\"]>>,\n newMessages: MessageType[],\n ): Promise<void> {\n const action = await this.activeHook?.onCompletionResponse?.({\n prompt,\n response,\n run: runControl,\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n\n private async runCompletionErrorHook(\n prompt: MessageType,\n error: unknown,\n newMessages: MessageType[],\n ): Promise<void> {\n const action = await this.activeHook?.onCompletionError?.({\n prompt,\n error,\n run: runControl,\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n\n private activeMiddlewares(): AgentMiddleware[] {\n return [...this.agent.middlewares, ...this.requestMiddlewares];\n }\n\n private shouldBufferStreamResponseEvents(): boolean {\n return (\n this.activeHook?.onCompletionResponse !== undefined ||\n this.activeMiddlewares().some((middleware) => middleware.onCompletionResponse !== undefined)\n );\n }\n\n private async drainSteeringMessages(\n runId: string,\n turn: number,\n newMessages: MessageType[],\n pendingTurnMessages: MessageType[],\n options: { closeWhenEmpty?: boolean } = {},\n ): Promise<QueuedSteering[]> {\n const receipts = this.steeringMessages.splice(0);\n if (receipts.length === 0) {\n if (options.closeWhenEmpty === true) {\n this.runState = \"closing\";\n }\n return [];\n }\n const messages = receipts.flatMap((receipt) => receipt.messages);\n newMessages.push(...messages);\n await this.memoryRecorder.commitMessages(runId, turn, messages, pendingTurnMessages);\n for (const receipt of receipts) this.onSteeringApplied?.(receipt.id);\n return receipts;\n }\n\n private startRun(): void {\n if (this.runState === \"idle\") {\n this.runState = \"running\";\n return;\n }\n if (this.runState === \"running\") {\n throw new Error(\"Agent stream is already running.\");\n }\n throw new Error(\"Agent stream has already been consumed.\");\n }\n\n private isTerminal(): boolean {\n return this.runState !== \"idle\" && this.runState !== \"running\";\n }\n\n private cancelled(newMessages: MessageType[], reason: string): AgentRunCancelledError {\n if (this.cancellationError !== undefined) return this.cancellationError;\n const error = new AgentRunCancelledError([...this.chatHistory, ...newMessages], reason);\n this.setCancellationError(error);\n return error;\n }\n\n private linkExternalAbortSignal(signal: AbortSignal | undefined): void {\n if (signal === undefined) return;\n const cancelFromSignal = () => {\n if (this.cancellationError !== undefined || this.isTerminal()) return;\n const cause = abortError(signal.reason);\n const reason = abortReason(signal.reason);\n const messages =\n this.currentMessages.length === 0 ? [this.promptMessage] : [...this.currentMessages];\n this.setCancellationError(\n new AgentRunCancelledError([...this.chatHistory, ...messages], reason, { cause }),\n );\n };\n if (signal.aborted) {\n cancelFromSignal();\n return;\n }\n signal.addEventListener(\"abort\", cancelFromSignal, { once: true });\n this.removeExternalAbortListener = () => signal.removeEventListener(\"abort\", cancelFromSignal);\n }\n\n private throwIfCancelled(): void {\n if (this.cancellationError !== undefined) throw this.cancellationError;\n throwIfAborted(this.abortController.signal);\n }\n\n private normalizeRunError(error: unknown): unknown {\n return this.abortController.signal.aborted && this.cancellationError !== undefined\n ? this.cancellationError\n : error;\n }\n\n private modelCallOptions(): ModelCallOptions {\n return { abortSignal: this.abortController.signal };\n }\n\n private disposeAbortLink(): void {\n this.removeExternalAbortListener?.();\n this.removeExternalAbortListener = undefined;\n }\n}\n\nfunction abortReason(reason: unknown): string {\n if (typeof reason === \"string\" && reason.trim().length > 0) return reason;\n if (reason instanceof Error && reason.message.trim().length > 0) return reason.message;\n return \"External abort signal.\";\n}\n\nfunction normalizeAgentInput(\n agentId: string,\n input: AgentInput,\n): {\n prompt: MessageType;\n history: MessageType[];\n scope?: MemoryScope | undefined;\n continuationState?: AgentContinuationState | undefined;\n interactionResponse?: AgentInteractionResponse | undefined;\n sourceRunId?: string | undefined;\n interactionId?: string | undefined;\n} {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) {\n throw new TypeError(\"Agent runs require one options object with prompt or messages.\");\n }\n const hasContinuation = \"continuation\" in input && input.continuation !== undefined;\n const hasPrompt = \"prompt\" in input && input.prompt !== undefined;\n const hasMessages = \"messages\" in input && input.messages !== undefined;\n if (Number(hasContinuation) + Number(hasPrompt) + Number(hasMessages) !== 1) {\n throw new TypeError(\"Agent runs require exactly one of prompt, messages, or continuation.\");\n }\n if (hasContinuation) {\n if (!(\"response\" in input) || input.response === undefined) {\n throw new TypeError(\"Agent continuation runs require an interaction response.\");\n }\n if (\"session\" in input && input.session !== undefined) {\n throw new TypeError(\"Agent continuations carry their memory scope and cannot use session.\");\n }\n const continuation = parseAgentContinuation(input.continuation);\n if (continuation.agentId !== agentId) {\n throw new TypeError(\n `Agent continuation belongs to \"${continuation.agentId}\", not \"${agentId}\".`,\n );\n }\n const response = parseAgentInteractionResponse(input.response);\n assertAgentInteractionResponse(continuation.interaction, response);\n const state = parseContinuationState(continuation.state, continuation.interaction);\n let responsePart: ToolInteractionResponsePart;\n if (response.type === \"tool-approval\") {\n responsePart = {\n type: \"tool-approval-response\",\n interactionId: continuation.interaction.id,\n toolCallId: continuation.interaction.toolCallId,\n toolName: continuation.interaction.toolName,\n approved: response.approved,\n };\n if (response.reason !== undefined)\n responsePart = { ...responsePart, reason: response.reason };\n } else {\n responsePart = {\n type: \"tool-question-response\",\n interactionId: continuation.interaction.id,\n toolCallId: continuation.interaction.toolCallId,\n toolName: continuation.interaction.toolName,\n answers: response.answers,\n };\n }\n if (continuation.interaction.callId !== undefined) {\n responsePart = { ...responsePart, callId: continuation.interaction.callId };\n }\n const normalized = {\n prompt: parseMessage({ role: \"tool\", content: [responsePart] }),\n history: [...state.history, ...state.messages],\n continuationState: state,\n interactionResponse: response,\n sourceRunId: continuation.sourceRunId,\n interactionId: continuation.interaction.id,\n };\n if (state.memoryScope !== undefined) {\n Object.assign(normalized, { scope: normalizeMemoryScope(state.memoryScope) });\n }\n return normalized;\n }\n if (hasPrompt) {\n const prompt = input.prompt;\n if (\n typeof prompt !== \"string\" &&\n (typeof prompt !== \"object\" || prompt === null || prompt.role !== \"user\")\n ) {\n throw new TypeError(\"Agent prompt must be text or a user message.\");\n }\n const parsedPrompt = parseMessage(\n typeof prompt === \"string\" ? { role: \"user\", content: prompt } : prompt,\n );\n if (parsedPrompt.role !== \"user\") {\n throw new TypeError(\"Agent prompt must be text or a user message.\");\n }\n const normalized = {\n prompt: parsedPrompt,\n history: [],\n };\n if (input.session !== undefined) {\n Object.assign(normalized, { scope: normalizeMemoryScope(input.session) });\n }\n return normalized;\n }\n if (input.session !== undefined) {\n throw new TypeError(\"Agent messages cannot be combined with a persisted session.\");\n }\n const messages = input.messages;\n if (!Array.isArray(messages) || messages.length === 0) {\n throw new TypeError(\"Agent input transcript must contain at least one message.\");\n }\n const parsedMessages = parseMessages(messages);\n const activePrompt = parsedMessages.at(-1);\n if (activePrompt === undefined) {\n throw new TypeError(\"Agent input transcript must contain at least one message.\");\n }\n if (activePrompt.role !== \"user\") {\n throw new TypeError(\"Agent input transcript must end with a user message.\");\n }\n return {\n prompt: activePrompt,\n history: parsedMessages.slice(0, -1),\n };\n}\n\nfunction normalizeSteeringInput(input: AgentSteerInput): MessageType[] {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) {\n throw new TypeError(\"Agent steering requires one options object with prompt or messages.\");\n }\n const hasPrompt = \"prompt\" in input && input.prompt !== undefined;\n const hasMessages = \"messages\" in input && input.messages !== undefined;\n if (hasPrompt === hasMessages) {\n throw new TypeError(\"Agent steering requires exactly one of prompt or messages.\");\n }\n if (hasPrompt) {\n const prompt = input.prompt;\n if (\n typeof prompt !== \"string\" &&\n (typeof prompt !== \"object\" || prompt === null || prompt.role !== \"user\")\n ) {\n throw new TypeError(\"Agent steering prompt must be text or a user message.\");\n }\n const parsedPrompt = parseMessage(\n typeof prompt === \"string\" ? { role: \"user\", content: prompt } : prompt,\n );\n if (parsedPrompt.role !== \"user\") {\n throw new TypeError(\"Agent steering prompt must be text or a user message.\");\n }\n return [parsedPrompt];\n }\n const messages = input.messages;\n if (!Array.isArray(messages) || messages.length === 0) {\n throw new TypeError(\"Agent steering messages must contain at least one user message.\");\n }\n const parsedMessages = parseMessages(messages);\n if (parsedMessages.some((message) => message.role !== \"user\")) {\n throw new TypeError(\"Agent steering messages must all be user messages.\");\n }\n return parsedMessages;\n}\n\nfunction normalizeRequestedRunId(runId: string | undefined): string | undefined {\n if (runId === undefined) {\n return undefined;\n }\n if (typeof runId !== \"string\" || runId.trim().length === 0) {\n throw new TypeError(\"runId must be a non-empty string.\");\n }\n return runId;\n}\n\nfunction responseStreamEvents(\n turn: number,\n response: CompletionResponse,\n includeProviderArtifacts = true,\n): AgentStreamEvent[] {\n const events: AgentStreamEvent[] = [];\n for (const item of response.choice) {\n if (item.type === \"text\") {\n if (item.text.length > 0) {\n events.push({ type: \"text_delta\", turn, delta: item.text });\n }\n continue;\n }\n\n if (item.type === \"reasoning\") {\n if (item.details === undefined) {\n if (item.text.length > 0) {\n events.push(reasoningDeltaEvent(turn, item.text, { id: item.id }));\n }\n continue;\n }\n\n for (const content of item.details) {\n const delta =\n content.type === \"encrypted\" || content.type === \"redacted\" ? content.data : content.text;\n events.push(\n reasoningDeltaEvent(turn, delta, {\n id: item.id,\n contentType: content.type,\n signature: content.type === \"text\" ? content.signature : undefined,\n }),\n );\n }\n continue;\n }\n\n if (item.type === \"tool-call\") {\n events.push({ type: \"tool_call\", turn, toolCall: item });\n }\n }\n if (includeProviderArtifacts) {\n for (const source of response.sources ?? []) {\n events.push({ type: \"source\", turn, source });\n }\n for (const toolCall of response.providerToolCalls ?? []) {\n events.push({ type: \"provider_tool_call\", turn, toolCall });\n }\n }\n return events;\n}\n\nfunction generationArtifacts(messages: MessageType[]): {\n sources?: CompletionSource[];\n providerToolCalls?: ProviderToolCall[];\n finishReason?: CompletionFinishReason;\n providerFinishReason?: string;\n contextUsage?: import(\"../../completion/index\").ContextUsage;\n} {\n const sources = new Map<string, CompletionSource>();\n const providerToolCalls = new Map<string, ProviderToolCall>();\n let finishReason: CompletionFinishReason | undefined;\n let providerFinishReason: string | undefined;\n let contextUsage: import(\"../../completion/index\").ContextUsage | undefined;\n for (const message of messages) {\n const metadata = getAssistantGenerationMetadata(message);\n if (metadata !== undefined) {\n finishReason = metadata.finishReason;\n providerFinishReason = metadata.providerFinishReason;\n contextUsage = metadata.contextUsage;\n }\n for (const source of metadata?.sources ?? []) {\n const key = `${source.url}\\u0000${source.startIndex ?? \"\"}\\u0000${source.endIndex ?? \"\"}`;\n sources.set(key, source);\n }\n for (const toolCall of metadata?.providerToolCalls ?? []) {\n providerToolCalls.set(toolCall.id, toolCall);\n }\n }\n const artifacts: {\n sources?: CompletionSource[];\n providerToolCalls?: ProviderToolCall[];\n finishReason?: CompletionFinishReason;\n providerFinishReason?: string;\n contextUsage?: import(\"../../completion/index\").ContextUsage;\n } = {};\n if (sources.size > 0) artifacts.sources = [...sources.values()];\n if (providerToolCalls.size > 0) {\n artifacts.providerToolCalls = [...providerToolCalls.values()];\n }\n if (finishReason !== undefined) artifacts.finishReason = finishReason;\n if (providerFinishReason !== undefined) {\n artifacts.providerFinishReason = providerFinishReason;\n }\n if (contextUsage !== undefined) artifacts.contextUsage = contextUsage;\n return artifacts;\n}\n\ntype ReasoningDeltaEvent = Extract<AgentStreamEvent, { type: \"reasoning_delta\" }>;\n\nfunction reasoningDeltaEvent(\n turn: number,\n delta: string,\n details: {\n id?: ReasoningDeltaEvent[\"id\"] | undefined;\n contentType?: ReasoningDeltaEvent[\"contentType\"] | undefined;\n signature?: ReasoningDeltaEvent[\"signature\"] | undefined;\n } = {},\n): ReasoningDeltaEvent {\n const event: ReasoningDeltaEvent = {\n type: \"reasoning_delta\",\n turn,\n delta,\n };\n if (details.id !== undefined) {\n event.id = details.id;\n }\n if (details.contentType !== undefined) {\n event.contentType = details.contentType;\n }\n if (details.signature !== undefined) {\n event.signature = details.signature;\n }\n return event;\n}\n\nfunction textFromMessage(message: MessageType): 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 return [];\n })\n .join(\"\\n\");\n}\n\nfunction latestAssistantText(messages: readonly MessageType[]): string {\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n const message = messages[index];\n if (message?.role === \"assistant\") {\n return typeof message.content === \"string\"\n ? message.content\n : textFromAssistantContent(message.content);\n }\n }\n return \"\";\n}\n\nfunction structuredOutputRetryRequest(\n request: CompletionRequest,\n response: CompletionResponse,\n error: unknown,\n): StructuredOutputRetryRequest {\n const truncated = error instanceof AgentStructuredOutputError && error.phase === \"truncated\";\n const correction: MessageType = {\n role: \"user\",\n content: truncated ? STRUCTURED_OUTPUT_TRUNCATED_RETRY_PROMPT : STRUCTURED_OUTPUT_RETRY_PROMPT,\n };\n if (truncated) {\n return {\n request: {\n ...request,\n chatHistory: [...request.chatHistory, correction],\n },\n previousResponse: \"omitted\",\n includedOutputLength: 0,\n };\n }\n const preview = structuredOutputRepairPreview(textFromAssistantContent(response.choice));\n if (preview.includedOutputLength === 0) {\n return {\n request: {\n ...request,\n chatHistory: [...request.chatHistory, correction],\n },\n previousResponse: \"omitted\",\n includedOutputLength: 0,\n };\n }\n const invalidResponse: MessageType = {\n role: \"assistant\",\n content: [{ type: \"text\", text: preview.text }],\n };\n return {\n request: {\n ...request,\n chatHistory: [...request.chatHistory, invalidResponse, correction],\n },\n previousResponse: \"preview\",\n includedOutputLength: preview.includedOutputLength,\n };\n}\n\nfunction structuredOutputRetryEventAttributes(\n error: unknown,\n retryRequest: StructuredOutputRetryRequest,\n): JsonObject {\n const attributes: JsonObject = {\n previousResponse: retryRequest.previousResponse,\n includedOutputLength: retryRequest.includedOutputLength,\n };\n if (!(error instanceof AgentStructuredOutputError)) return attributes;\n Object.assign(attributes, {\n failurePhase: error.phase,\n outputLength: error.outputLength,\n normalizedLength: error.normalizedLength,\n attemptUsage: usageEventValue(error.attemptUsage),\n cumulativeUsage: usageEventValue(error.usage),\n });\n if (error.finishReason !== undefined) attributes.finishReason = error.finishReason;\n if (error.providerFinishReason !== undefined) {\n attributes.providerFinishReason = error.providerFinishReason;\n }\n return attributes;\n}\n\nfunction providerOutputRetryEventAttributes(\n error: unknown,\n cumulativeUsage: Usage,\n attemptUsage?: Usage | undefined,\n): JsonObject | undefined {\n const resolvedAttemptUsage = attemptUsage ?? completionProviderOutputErrorUsage(error);\n if (resolvedAttemptUsage === undefined) return undefined;\n return {\n attemptUsage: usageEventValue(resolvedAttemptUsage),\n cumulativeUsage: usageEventValue(cumulativeUsage),\n };\n}\n\nfunction usageEventValue(usage: Usage): JsonObject {\n const value: JsonObject = {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n totalTokens: usage.totalTokens,\n cachedInputTokens: usage.cachedInputTokens,\n cacheCreationInputTokens: usage.cacheCreationInputTokens,\n };\n if (usage.details !== undefined) value.details = { ...usage.details };\n return value;\n}\n\nfunction providerMessages(messages: readonly MessageType[]): MessageType[] {\n const providerMessages: MessageType[] = [];\n for (const message of messages) {\n if (message.role !== \"tool\") {\n providerMessages.push(message);\n continue;\n }\n const results = message.content.filter((part) => part.type === \"tool-result\");\n if (results.length > 0) {\n providerMessages.push({ ...message, content: results });\n }\n }\n return providerMessages;\n}\n\nfunction guardrailDecisionAttributes(decision: GuardrailDecisionRecord): JsonObject {\n const attributes: JsonObject = {\n policyId: decision.policyId,\n guardrailId: decision.guardrailId,\n boundary: decision.boundary,\n mode: decision.mode,\n action: decision.action,\n applied: decision.applied,\n latencyMs: decision.latencyMs,\n };\n if (decision.reason !== undefined) {\n attributes.reason = decision.reason;\n }\n if (decision.message !== undefined) {\n attributes.message = decision.message;\n }\n return attributes;\n}\n\nfunction blockedOutcomeDetails(\n decisions: readonly GuardrailDecisionRecord[],\n fallbackReason: string,\n): { reason: string; message?: string | undefined } {\n for (let index = decisions.length - 1; index >= 0; index -= 1) {\n const decision = decisions[index];\n if (decision?.applied !== true || decision.action !== \"block\") continue;\n return decision.message === undefined\n ? { reason: decision.reason ?? fallbackReason }\n : { reason: decision.reason ?? fallbackReason, message: decision.message };\n }\n return { reason: fallbackReason };\n}\n\nfunction observerRunEnd<Output>(outcome: AgentOutcome<Output>): AgentRunEndArgs {\n const common = {\n runId: outcome.runId,\n text: outcome.text,\n usage: outcome.usage,\n messages: outcome.messages,\n sources: outcome.sources,\n providerToolCalls: outcome.providerToolCalls,\n resumedFrom: outcome.resumedFrom,\n };\n switch (outcome.type) {\n case \"response\":\n return { ...common, status: \"completed\", output: outcome.output };\n case \"blocked\":\n return { ...common, status: \"blocked\", stage: outcome.stage };\n case \"interaction\":\n return { ...common, status: \"suspended\", interaction: outcome.interaction };\n }\n}\n"],"mappings":"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","names":["providerMessages"]}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import {
|
|
2
|
+
matchesVectorFilter
|
|
3
|
+
} from "./chunk-5WLIHNNJ.js";
|
|
4
|
+
import {
|
|
5
|
+
LshIndex
|
|
6
|
+
} from "./chunk-ESOFEAYK.js";
|
|
7
|
+
import {
|
|
8
|
+
retrieveDocuments
|
|
9
|
+
} from "./chunk-HAAGSIZH.js";
|
|
10
|
+
import {
|
|
11
|
+
cosineSimilarity
|
|
12
|
+
} from "./chunk-7F53DOML.js";
|
|
13
|
+
import {
|
|
14
|
+
assertFiniteMinScore,
|
|
15
|
+
assertPositiveSearchLimit
|
|
16
|
+
} from "./chunk-5V533R7F.js";
|
|
17
|
+
import {
|
|
18
|
+
createTool
|
|
19
|
+
} from "./chunk-XV3DH5GC.js";
|
|
20
|
+
|
|
21
|
+
// src/vector-store/index.ts
|
|
22
|
+
import { z } from "zod";
|
|
23
|
+
var InMemoryVectorStore = class _InMemoryVectorStore {
|
|
24
|
+
documents = /* @__PURE__ */ new Map();
|
|
25
|
+
indexStrategy;
|
|
26
|
+
lshIndex;
|
|
27
|
+
embeddingDimension;
|
|
28
|
+
constructor(options = {}) {
|
|
29
|
+
this.indexStrategy = options.index ?? { type: "bruteForce" };
|
|
30
|
+
if (options.dimensions !== void 0 && (!Number.isSafeInteger(options.dimensions) || options.dimensions < 1)) {
|
|
31
|
+
throw new RangeError("Vector dimensions must be a positive safe integer.");
|
|
32
|
+
}
|
|
33
|
+
this.embeddingDimension = options.dimensions;
|
|
34
|
+
}
|
|
35
|
+
static fromDocuments(options) {
|
|
36
|
+
const store = new _InMemoryVectorStore(options);
|
|
37
|
+
store.replaceDocuments(options.documents);
|
|
38
|
+
return store;
|
|
39
|
+
}
|
|
40
|
+
async ensure() {
|
|
41
|
+
}
|
|
42
|
+
async validate() {
|
|
43
|
+
}
|
|
44
|
+
async upsert(options) {
|
|
45
|
+
this.replaceDocuments(options.documents);
|
|
46
|
+
}
|
|
47
|
+
get(options) {
|
|
48
|
+
return this.documents.get(options.id);
|
|
49
|
+
}
|
|
50
|
+
values() {
|
|
51
|
+
return [...this.documents.values()];
|
|
52
|
+
}
|
|
53
|
+
len() {
|
|
54
|
+
return this.documents.size;
|
|
55
|
+
}
|
|
56
|
+
isEmpty() {
|
|
57
|
+
return this.documents.size === 0;
|
|
58
|
+
}
|
|
59
|
+
async search(request) {
|
|
60
|
+
throwIfAborted(request.abortSignal);
|
|
61
|
+
assertPositiveSearchLimit(request.topK);
|
|
62
|
+
assertFiniteMinScore(request.minScore);
|
|
63
|
+
const queryEmbedding = { document: "", vector: request.vector };
|
|
64
|
+
const results = this.candidates(queryEmbedding).filter((document) => matchesVectorFilter(document.metadata, request.filter)).flatMap((document) => {
|
|
65
|
+
const score = bestScore(queryEmbedding, document.embeddings);
|
|
66
|
+
if (score === void 0 || request.minScore !== void 0 && score < request.minScore) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
let result = {
|
|
70
|
+
score,
|
|
71
|
+
id: document.id,
|
|
72
|
+
document: document.document
|
|
73
|
+
};
|
|
74
|
+
if (document.metadata !== void 0) {
|
|
75
|
+
result = { ...result, metadata: document.metadata };
|
|
76
|
+
}
|
|
77
|
+
return [result];
|
|
78
|
+
}).sort((left, right) => right.score - left.score).slice(0, request.topK);
|
|
79
|
+
throwIfAborted(request.abortSignal);
|
|
80
|
+
return results;
|
|
81
|
+
}
|
|
82
|
+
async inspect(request) {
|
|
83
|
+
throwIfAborted(request.abortSignal);
|
|
84
|
+
const limit = assertPositiveSearchLimit(request.limit);
|
|
85
|
+
const start = Math.max(0, Math.trunc(Number(request.cursor ?? "0")));
|
|
86
|
+
const documents = this.values().filter(
|
|
87
|
+
(document) => matchesVectorFilter(document.metadata, request.filter)
|
|
88
|
+
);
|
|
89
|
+
const page = documents.slice(start, start + limit);
|
|
90
|
+
const nextOffset = start + page.length;
|
|
91
|
+
const result = {
|
|
92
|
+
items: page.map((document) => {
|
|
93
|
+
let item = {
|
|
94
|
+
id: document.id,
|
|
95
|
+
document: document.document
|
|
96
|
+
};
|
|
97
|
+
if (document.metadata !== void 0) {
|
|
98
|
+
item = { ...item, metadata: document.metadata };
|
|
99
|
+
}
|
|
100
|
+
return item;
|
|
101
|
+
}),
|
|
102
|
+
totalCount: documents.length
|
|
103
|
+
};
|
|
104
|
+
if (nextOffset < documents.length) result.nextCursor = String(nextOffset);
|
|
105
|
+
throwIfAborted(request.abortSignal);
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
replaceDocuments(documents) {
|
|
109
|
+
const ids = /* @__PURE__ */ new Set();
|
|
110
|
+
for (const document of documents) {
|
|
111
|
+
if (ids.has(document.id)) throw new TypeError(`Duplicate vector document id: ${document.id}`);
|
|
112
|
+
ids.add(document.id);
|
|
113
|
+
if (document.embeddings.length === 0) {
|
|
114
|
+
throw new TypeError(`Vector document ${document.id} must contain at least one embedding.`);
|
|
115
|
+
}
|
|
116
|
+
for (const embedding of document.embeddings)
|
|
117
|
+
assertFiniteVector(embedding.vector, document.id);
|
|
118
|
+
}
|
|
119
|
+
this.validateDocumentDimensions(documents);
|
|
120
|
+
for (const document of documents) this.documents.set(document.id, document);
|
|
121
|
+
this.rebuildLshIndex();
|
|
122
|
+
}
|
|
123
|
+
candidates(queryEmbedding) {
|
|
124
|
+
this.validateQueryDimension(queryEmbedding);
|
|
125
|
+
if (this.indexStrategy.type !== "lsh" || this.lshIndex === void 0) return this.values();
|
|
126
|
+
const candidateIds = this.lshIndex.query(queryEmbedding.vector);
|
|
127
|
+
if (candidateIds.size === 0) return this.values();
|
|
128
|
+
return [...candidateIds].flatMap((id) => {
|
|
129
|
+
const document = this.documents.get(id);
|
|
130
|
+
return document === void 0 ? [] : [document];
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
rebuildLshIndex() {
|
|
134
|
+
if (this.indexStrategy.type !== "lsh") {
|
|
135
|
+
this.lshIndex = void 0;
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const firstEmbedding = this.values().flatMap((document) => document.embeddings)[0];
|
|
139
|
+
if (firstEmbedding === void 0) {
|
|
140
|
+
this.lshIndex = void 0;
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const index = new LshIndex(firstEmbedding.vector.length, this.indexStrategy);
|
|
144
|
+
for (const document of this.documents.values()) {
|
|
145
|
+
for (const embedding of document.embeddings) index.insert(document.id, embedding.vector);
|
|
146
|
+
}
|
|
147
|
+
this.lshIndex = index;
|
|
148
|
+
}
|
|
149
|
+
validateDocumentDimensions(documents) {
|
|
150
|
+
let dimension = this.embeddingDimension;
|
|
151
|
+
for (const document of documents) {
|
|
152
|
+
for (const embedding of document.embeddings) {
|
|
153
|
+
dimension = validateEmbeddingDimension(dimension, embedding, document.id);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
this.embeddingDimension = dimension;
|
|
157
|
+
}
|
|
158
|
+
validateQueryDimension(queryEmbedding) {
|
|
159
|
+
if (this.embeddingDimension !== void 0) {
|
|
160
|
+
validateEmbeddingDimension(this.embeddingDimension, queryEmbedding, "query");
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
function throwIfAborted(signal) {
|
|
165
|
+
if (signal?.aborted) {
|
|
166
|
+
const error = new Error("The operation was aborted.");
|
|
167
|
+
error.name = "AbortError";
|
|
168
|
+
throw error;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function createVectorSearchTool(options) {
|
|
172
|
+
const configuredTopK = assertPositiveSearchLimit(options.topK ?? 5);
|
|
173
|
+
assertFiniteMinScore(options.minScore);
|
|
174
|
+
return createTool({
|
|
175
|
+
name: options.name,
|
|
176
|
+
description: options.description ?? "Search a vector store for documents relevant to the provided query.",
|
|
177
|
+
inputSchema: z.object({
|
|
178
|
+
query: z.string().min(1).describe("The query string to search for relevant documents."),
|
|
179
|
+
topK: z.number().int().positive().optional().describe("The maximum number of results.")
|
|
180
|
+
}),
|
|
181
|
+
outputSchema: z.array(
|
|
182
|
+
z.object({
|
|
183
|
+
score: z.number(),
|
|
184
|
+
id: z.string(),
|
|
185
|
+
document: z.any(),
|
|
186
|
+
metadata: z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()])).optional()
|
|
187
|
+
})
|
|
188
|
+
),
|
|
189
|
+
execute: ({ query, topK }, context) => {
|
|
190
|
+
const request = {
|
|
191
|
+
query,
|
|
192
|
+
topK: topK ?? configuredTopK,
|
|
193
|
+
minScore: options.minScore,
|
|
194
|
+
filter: options.filter,
|
|
195
|
+
retries: options.retries,
|
|
196
|
+
abortSignal: context.abortSignal
|
|
197
|
+
};
|
|
198
|
+
return "models" in options && options.models !== void 0 ? retrieveDocuments({
|
|
199
|
+
...request,
|
|
200
|
+
store: options.store,
|
|
201
|
+
models: options.models,
|
|
202
|
+
fusion: options.fusion
|
|
203
|
+
}) : retrieveDocuments({ ...request, store: options.store, model: options.model });
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
function bestScore(queryEmbedding, embeddings) {
|
|
208
|
+
let best;
|
|
209
|
+
for (const embedding of embeddings) {
|
|
210
|
+
const score = cosineSimilarity(queryEmbedding.vector, embedding.vector);
|
|
211
|
+
best = best === void 0 ? score : Math.max(best, score);
|
|
212
|
+
}
|
|
213
|
+
return best;
|
|
214
|
+
}
|
|
215
|
+
function validateEmbeddingDimension(expectedDimension, embedding, id) {
|
|
216
|
+
assertFiniteVector(embedding.vector, id);
|
|
217
|
+
if (expectedDimension === void 0) return embedding.vector.length;
|
|
218
|
+
if (embedding.vector.length !== expectedDimension) {
|
|
219
|
+
throw new Error(
|
|
220
|
+
`Vector dimension mismatch: expected ${expectedDimension} dimensions but received ${embedding.vector.length} for ${id}`
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
return expectedDimension;
|
|
224
|
+
}
|
|
225
|
+
function assertFiniteVector(vector, id) {
|
|
226
|
+
if (vector.length === 0) throw new TypeError(`Vector for ${id} must not be empty.`);
|
|
227
|
+
if (!vector.every(Number.isFinite)) {
|
|
228
|
+
throw new TypeError(`Vector for ${id} must contain only finite numbers.`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export {
|
|
233
|
+
InMemoryVectorStore,
|
|
234
|
+
createVectorSearchTool
|
|
235
|
+
};
|
|
236
|
+
//# sourceMappingURL=chunk-RXKUIJ77.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vector-store/index.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n cosineSimilarity,\n type EmbeddedDocument,\n type Embedding,\n type VectorMetadata,\n} from \"../embeddings\";\nimport { assertFiniteMinScore, assertPositiveSearchLimit } from \"../internal/vector-search-options\";\nimport { createTool } from \"../tool/create-tool\";\nimport type { Tool } from \"../tool/tool\";\nimport { matchesVectorFilter } from \"./filter\";\nimport { LshIndex } from \"./lsh\";\nimport { retrieveDocuments } from \"./retrieve\";\nimport type {\n IndexStrategy,\n VectorInspectItem,\n VectorInspectPage,\n VectorInspectRequest,\n VectorSearchRequest,\n VectorSearchResult,\n VectorSearchToolOptions,\n VectorStore,\n VectorStoreUpsertOptions,\n} from \"./types\";\n\nexport { matchesVectorFilter, vectorFilter } from \"./filter\";\nexport * from \"./ingest\";\nexport { retrieveDocuments } from \"./retrieve\";\nexport type * from \"./types\";\n\ntype StoredDocument<T, Metadata extends VectorMetadata> = EmbeddedDocument<T, Metadata>;\n\nexport type InMemoryVectorStoreOptions = {\n dimensions?: number | undefined;\n index?: IndexStrategy | undefined;\n};\n\nexport type InMemoryVectorStoreFromDocumentsOptions<\n T,\n Metadata extends VectorMetadata = VectorMetadata,\n> = InMemoryVectorStoreOptions & {\n documents: Array<EmbeddedDocument<T, Metadata>>;\n};\n\nexport class InMemoryVectorStore<\n T,\n Metadata extends VectorMetadata = VectorMetadata,\n> implements VectorStore<T, Metadata> {\n private readonly documents = new Map<string, StoredDocument<T, Metadata>>();\n private readonly indexStrategy: IndexStrategy;\n private lshIndex: LshIndex | undefined;\n private embeddingDimension: number | undefined;\n\n constructor(options: InMemoryVectorStoreOptions = {}) {\n this.indexStrategy = options.index ?? { type: \"bruteForce\" };\n if (\n options.dimensions !== undefined &&\n (!Number.isSafeInteger(options.dimensions) || options.dimensions < 1)\n ) {\n throw new RangeError(\"Vector dimensions must be a positive safe integer.\");\n }\n this.embeddingDimension = options.dimensions;\n }\n\n static fromDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: InMemoryVectorStoreFromDocumentsOptions<T, Metadata>,\n ): InMemoryVectorStore<T, Metadata> {\n const store = new InMemoryVectorStore<T, Metadata>(options);\n store.replaceDocuments(options.documents);\n return store;\n }\n\n async ensure(): Promise<void> {}\n async validate(): Promise<void> {}\n\n async upsert(options: VectorStoreUpsertOptions<T, Metadata>): Promise<void> {\n this.replaceDocuments(options.documents);\n }\n\n get(options: { id: string }): StoredDocument<T, Metadata> | undefined {\n return this.documents.get(options.id);\n }\n\n values(): Array<StoredDocument<T, Metadata>> {\n return [...this.documents.values()];\n }\n\n len(): number {\n return this.documents.size;\n }\n\n isEmpty(): boolean {\n return this.documents.size === 0;\n }\n\n async search(request: VectorSearchRequest): Promise<Array<VectorSearchResult<T, Metadata>>> {\n throwIfAborted(request.abortSignal);\n assertPositiveSearchLimit(request.topK);\n assertFiniteMinScore(request.minScore);\n const queryEmbedding: Embedding = { document: \"\", vector: request.vector };\n const results = this.candidates(queryEmbedding)\n .filter((document) => matchesVectorFilter(document.metadata, request.filter))\n .flatMap((document) => {\n const score = bestScore(queryEmbedding, document.embeddings);\n if (score === undefined || (request.minScore !== undefined && score < request.minScore)) {\n return [];\n }\n let result: VectorSearchResult<T, Metadata> = {\n score,\n id: document.id,\n document: document.document,\n };\n if (document.metadata !== undefined) {\n result = { ...result, metadata: document.metadata };\n }\n return [result];\n })\n .sort((left, right) => right.score - left.score)\n .slice(0, request.topK);\n throwIfAborted(request.abortSignal);\n return results;\n }\n\n async inspect(request: VectorInspectRequest): Promise<VectorInspectPage<T, Metadata>> {\n throwIfAborted(request.abortSignal);\n const limit = assertPositiveSearchLimit(request.limit);\n const start = Math.max(0, Math.trunc(Number(request.cursor ?? \"0\")));\n const documents = this.values().filter((document) =>\n matchesVectorFilter(document.metadata, request.filter),\n );\n const page = documents.slice(start, start + limit);\n const nextOffset = start + page.length;\n const result: VectorInspectPage<T, Metadata> = {\n items: page.map((document): VectorInspectItem<T, Metadata> => {\n let item: VectorInspectItem<T, Metadata> = {\n id: document.id,\n document: document.document,\n };\n if (document.metadata !== undefined) {\n item = { ...item, metadata: document.metadata };\n }\n return item;\n }),\n totalCount: documents.length,\n };\n if (nextOffset < documents.length) result.nextCursor = String(nextOffset);\n throwIfAborted(request.abortSignal);\n return result;\n }\n\n private replaceDocuments(documents: Array<EmbeddedDocument<T, Metadata>>): void {\n const ids = new Set<string>();\n for (const document of documents) {\n if (ids.has(document.id)) throw new TypeError(`Duplicate vector document id: ${document.id}`);\n ids.add(document.id);\n if (document.embeddings.length === 0) {\n throw new TypeError(`Vector document ${document.id} must contain at least one embedding.`);\n }\n for (const embedding of document.embeddings)\n assertFiniteVector(embedding.vector, document.id);\n }\n this.validateDocumentDimensions(documents);\n for (const document of documents) this.documents.set(document.id, document);\n this.rebuildLshIndex();\n }\n\n private candidates(queryEmbedding: Embedding): Array<StoredDocument<T, Metadata>> {\n this.validateQueryDimension(queryEmbedding);\n if (this.indexStrategy.type !== \"lsh\" || this.lshIndex === undefined) return this.values();\n const candidateIds = this.lshIndex.query(queryEmbedding.vector);\n if (candidateIds.size === 0) return this.values();\n return [...candidateIds].flatMap((id) => {\n const document = this.documents.get(id);\n return document === undefined ? [] : [document];\n });\n }\n\n private rebuildLshIndex(): void {\n if (this.indexStrategy.type !== \"lsh\") {\n this.lshIndex = undefined;\n return;\n }\n const firstEmbedding = this.values().flatMap((document) => document.embeddings)[0];\n if (firstEmbedding === undefined) {\n this.lshIndex = undefined;\n return;\n }\n const index = new LshIndex(firstEmbedding.vector.length, this.indexStrategy);\n for (const document of this.documents.values()) {\n for (const embedding of document.embeddings) index.insert(document.id, embedding.vector);\n }\n this.lshIndex = index;\n }\n\n private validateDocumentDimensions(documents: Array<EmbeddedDocument<T, Metadata>>): void {\n let dimension = this.embeddingDimension;\n for (const document of documents) {\n for (const embedding of document.embeddings) {\n dimension = validateEmbeddingDimension(dimension, embedding, document.id);\n }\n }\n this.embeddingDimension = dimension;\n }\n\n private validateQueryDimension(queryEmbedding: Embedding): void {\n if (this.embeddingDimension !== undefined) {\n validateEmbeddingDimension(this.embeddingDimension, queryEmbedding, \"query\");\n }\n }\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted) {\n const error = new Error(\"The operation was aborted.\");\n error.name = \"AbortError\";\n throw error;\n }\n}\n\nexport function createVectorSearchTool<T, Metadata extends VectorMetadata>(\n options: VectorSearchToolOptions<T, Metadata>,\n): Tool<{ query: string; topK?: number }, Array<VectorSearchResult<T, Metadata>>> {\n const configuredTopK = assertPositiveSearchLimit(options.topK ?? 5);\n assertFiniteMinScore(options.minScore);\n return createTool({\n name: options.name,\n description:\n options.description ?? \"Search a vector store for documents relevant to the provided query.\",\n inputSchema: z.object({\n query: z.string().min(1).describe(\"The query string to search for relevant documents.\"),\n topK: z.number().int().positive().optional().describe(\"The maximum number of results.\"),\n }),\n outputSchema: z.array(\n z.object({\n score: z.number(),\n id: z.string(),\n document: z.any(),\n metadata: z\n .record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()]))\n .optional(),\n }),\n ),\n execute: ({ query, topK }, context) => {\n const request = {\n query,\n topK: topK ?? configuredTopK,\n minScore: options.minScore,\n filter: options.filter,\n retries: options.retries,\n abortSignal: context.abortSignal,\n };\n return \"models\" in options && options.models !== undefined\n ? retrieveDocuments({\n ...request,\n store: options.store,\n models: options.models,\n fusion: options.fusion,\n })\n : retrieveDocuments({ ...request, store: options.store, model: options.model });\n },\n }) as Tool<{ query: string; topK?: number }, Array<VectorSearchResult<T, Metadata>>>;\n}\n\nfunction bestScore(queryEmbedding: Embedding, embeddings: Embedding[]): number | undefined {\n let best: number | undefined;\n for (const embedding of embeddings) {\n const score = cosineSimilarity(queryEmbedding.vector, embedding.vector);\n best = best === undefined ? score : Math.max(best, score);\n }\n return best;\n}\n\nfunction validateEmbeddingDimension(\n expectedDimension: number | undefined,\n embedding: Embedding,\n id: string,\n): number {\n assertFiniteVector(embedding.vector, id);\n if (expectedDimension === undefined) return embedding.vector.length;\n if (embedding.vector.length !== expectedDimension) {\n throw new Error(\n `Vector dimension mismatch: expected ${expectedDimension} dimensions but received ${embedding.vector.length} for ${id}`,\n );\n }\n return expectedDimension;\n}\n\nfunction assertFiniteVector(vector: number[], id: string): void {\n if (vector.length === 0) throw new TypeError(`Vector for ${id} must not be empty.`);\n if (!vector.every(Number.isFinite)) {\n throw new TypeError(`Vector for ${id} must contain only finite numbers.`);\n }\n}\n"],"mappings":"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","names":[]}
|