@anvia/core 1.1.2 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-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-4S4OECPW.js +158 -0
- package/dist/chunk-4S4OECPW.js.map +1 -0
- 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-54ZZJRP2.js +57 -0
- package/dist/chunk-54ZZJRP2.js.map +1 -0
- package/dist/chunk-5FCZ64HM.js +112 -0
- package/dist/chunk-5FCZ64HM.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-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-72LBHKYP.js +236 -0
- package/dist/chunk-72LBHKYP.js.map +1 -0
- package/dist/chunk-7F53DOML.js +53 -0
- package/dist/chunk-7F53DOML.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-AOG6KSV4.js +107 -0
- package/dist/chunk-AOG6KSV4.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-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-2QZJTG2E.js → chunk-G336L2IE.js} +11 -71
- package/dist/chunk-G336L2IE.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-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-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-MNYMLWWA.js +168 -0
- package/dist/chunk-MNYMLWWA.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-O6DTOCBM.js +355 -0
- package/dist/chunk-O6DTOCBM.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-QHGYCYV6.js +91 -0
- package/dist/chunk-QHGYCYV6.js.map +1 -0
- package/dist/chunk-QUS6S2NB.js +663 -0
- package/dist/chunk-QUS6S2NB.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-SC4SUIEY.js +1 -0
- package/dist/chunk-SC4SUIEY.js.map +1 -0
- package/dist/chunk-SIYZDPVH.js +613 -0
- package/dist/chunk-SIYZDPVH.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-T4IAJJUU.js +48 -0
- package/dist/chunk-T4IAJJUU.js.map +1 -0
- 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-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-Y7JTHNCU.js +318 -0
- package/dist/chunk-Y7JTHNCU.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 +4 -37
- package/dist/streaming/index.js.map +1 -1
- package/dist/streaming/readable-stream.js +8 -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,89 @@
|
|
|
1
|
+
// src/evals/reporting.ts
|
|
2
|
+
function projectEvalOutcome(outcome, dataType, projectScore) {
|
|
3
|
+
const value = projectScoreValue(outcome, dataType, projectScore);
|
|
4
|
+
const projection = {
|
|
5
|
+
outcome: outcome.outcome,
|
|
6
|
+
value,
|
|
7
|
+
label: typeof value === "string" ? value : outcome.outcome
|
|
8
|
+
};
|
|
9
|
+
if (typeof value === "number") projection.numericValue = value;
|
|
10
|
+
if (typeof value === "string") projection.categoricalValue = value;
|
|
11
|
+
const explanation = outcome.comment ?? (outcome.outcome === "invalid" ? outcome.reason : void 0);
|
|
12
|
+
if (explanation !== void 0) projection.explanation = explanation;
|
|
13
|
+
return projection;
|
|
14
|
+
}
|
|
15
|
+
function resolveEvalTraceRef(args) {
|
|
16
|
+
return traceFromCarrier(args.output) ?? traceFromCarrier(args.input) ?? traceFromMetadata(args.metadata);
|
|
17
|
+
}
|
|
18
|
+
function defaultEvalTraceSelector(args) {
|
|
19
|
+
return resolveEvalTraceRef({
|
|
20
|
+
output: args.output,
|
|
21
|
+
input: args.case.input,
|
|
22
|
+
metadata: args.case.metadata
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function projectScoreValue(outcome, dataType, projectScore) {
|
|
26
|
+
const score = outcome.score;
|
|
27
|
+
if (score !== void 0 && projectScore !== void 0) {
|
|
28
|
+
const projected = projectScore(score);
|
|
29
|
+
if (typeof projected === "boolean") return projected ? 1 : 0;
|
|
30
|
+
return projected;
|
|
31
|
+
}
|
|
32
|
+
if (dataType === "CATEGORICAL") {
|
|
33
|
+
if (typeof score === "string") return score;
|
|
34
|
+
if (typeof score === "number") return String(score);
|
|
35
|
+
if (typeof score === "boolean") return score ? "true" : "false";
|
|
36
|
+
if (score === null || score === void 0) return outcome.outcome;
|
|
37
|
+
try {
|
|
38
|
+
return JSON.stringify(score) ?? outcome.outcome;
|
|
39
|
+
} catch {
|
|
40
|
+
return outcome.outcome;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (dataType === "BOOLEAN") {
|
|
44
|
+
if (typeof score === "boolean") return score ? 1 : 0;
|
|
45
|
+
if (typeof score === "number") return score === 0 ? 0 : 1;
|
|
46
|
+
return outcome.outcome === "pass" ? 1 : 0;
|
|
47
|
+
}
|
|
48
|
+
if (typeof score === "number") return score;
|
|
49
|
+
if (typeof score === "boolean") return score ? 1 : 0;
|
|
50
|
+
if (typeof score === "object" && score !== null && "score" in score && typeof score.score === "number") {
|
|
51
|
+
return score.score;
|
|
52
|
+
}
|
|
53
|
+
return outcome.outcome === "pass" ? 1 : 0;
|
|
54
|
+
}
|
|
55
|
+
function traceFromCarrier(value) {
|
|
56
|
+
if (typeof value !== "object" || value === null || !("trace" in value)) return void 0;
|
|
57
|
+
return readTraceRef(value.trace);
|
|
58
|
+
}
|
|
59
|
+
function traceFromMetadata(metadata) {
|
|
60
|
+
if (metadata === void 0) return void 0;
|
|
61
|
+
return readTraceRef({
|
|
62
|
+
observer: metadata.traceObserver,
|
|
63
|
+
traceId: metadata.traceId,
|
|
64
|
+
observationId: metadata.observationId,
|
|
65
|
+
responseId: metadata.responseId
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function readTraceRef(value) {
|
|
69
|
+
if (typeof value !== "object" || value === null) return void 0;
|
|
70
|
+
const traceId = value.traceId;
|
|
71
|
+
if (typeof traceId !== "string" || traceId.length === 0) return void 0;
|
|
72
|
+
const observer = value.observer;
|
|
73
|
+
const observationId = value.observationId;
|
|
74
|
+
const responseId = value.responseId;
|
|
75
|
+
const trace = { traceId };
|
|
76
|
+
if (typeof observer === "string" && observer.length > 0) trace.observer = observer;
|
|
77
|
+
if (typeof observationId === "string" && observationId.length > 0) {
|
|
78
|
+
trace.observationId = observationId;
|
|
79
|
+
}
|
|
80
|
+
if (typeof responseId === "string" && responseId.length > 0) trace.responseId = responseId;
|
|
81
|
+
return trace;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export {
|
|
85
|
+
projectEvalOutcome,
|
|
86
|
+
resolveEvalTraceRef,
|
|
87
|
+
defaultEvalTraceSelector
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=chunk-PHLGGRHC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/evals/reporting.ts"],"sourcesContent":["import type { EvalOutcome } from \"./outcome\";\nimport type {\n EvalMetadata,\n EvalMetric,\n EvalScoreProjection,\n EvalTraceRef,\n EvalTraceSelectorArgs,\n} from \"./types\";\n\nexport function projectEvalOutcome<Score>(\n outcome: EvalOutcome<Score>,\n dataType: EvalMetric<unknown, unknown>[\"dataType\"],\n projectScore?: ((score: Score) => number | string | boolean) | undefined,\n): EvalScoreProjection {\n const value = projectScoreValue(outcome, dataType, projectScore);\n const projection: EvalScoreProjection = {\n outcome: outcome.outcome,\n value,\n label: typeof value === \"string\" ? value : outcome.outcome,\n };\n if (typeof value === \"number\") projection.numericValue = value;\n if (typeof value === \"string\") projection.categoricalValue = value;\n const explanation =\n outcome.comment ?? (outcome.outcome === \"invalid\" ? outcome.reason : undefined);\n if (explanation !== undefined) projection.explanation = explanation;\n return projection;\n}\n\nexport function resolveEvalTraceRef(args: {\n output?: unknown;\n input?: unknown;\n metadata?: EvalMetadata | undefined;\n}): EvalTraceRef | undefined {\n return (\n traceFromCarrier(args.output) ??\n traceFromCarrier(args.input) ??\n traceFromMetadata(args.metadata)\n );\n}\n\nexport function defaultEvalTraceSelector<Input, Output, Expected>(\n args: EvalTraceSelectorArgs<Input, Output, Expected>,\n): EvalTraceRef | undefined {\n return resolveEvalTraceRef({\n output: args.output,\n input: args.case.input,\n metadata: args.case.metadata,\n });\n}\n\nfunction projectScoreValue<Score>(\n outcome: EvalOutcome<Score>,\n dataType: EvalMetric<unknown, unknown>[\"dataType\"],\n projectScore: ((score: Score) => number | string | boolean) | undefined,\n): number | string {\n const score = outcome.score;\n if (score !== undefined && projectScore !== undefined) {\n const projected = projectScore(score);\n if (typeof projected === \"boolean\") return projected ? 1 : 0;\n return projected;\n }\n if (dataType === \"CATEGORICAL\") {\n if (typeof score === \"string\") return score;\n if (typeof score === \"number\") return String(score);\n if (typeof score === \"boolean\") return score ? \"true\" : \"false\";\n if (score === null || score === undefined) return outcome.outcome;\n try {\n return JSON.stringify(score) ?? outcome.outcome;\n } catch {\n return outcome.outcome;\n }\n }\n if (dataType === \"BOOLEAN\") {\n if (typeof score === \"boolean\") return score ? 1 : 0;\n if (typeof score === \"number\") return score === 0 ? 0 : 1;\n return outcome.outcome === \"pass\" ? 1 : 0;\n }\n if (typeof score === \"number\") return score;\n if (typeof score === \"boolean\") return score ? 1 : 0;\n if (\n typeof score === \"object\" &&\n score !== null &&\n \"score\" in score &&\n typeof (score as { score?: unknown }).score === \"number\"\n ) {\n return (score as { score: number }).score;\n }\n return outcome.outcome === \"pass\" ? 1 : 0;\n}\n\nfunction traceFromCarrier(value: unknown): EvalTraceRef | undefined {\n if (typeof value !== \"object\" || value === null || !(\"trace\" in value)) return undefined;\n return readTraceRef((value as { trace?: unknown }).trace);\n}\n\nfunction traceFromMetadata(metadata: EvalMetadata | undefined): EvalTraceRef | undefined {\n if (metadata === undefined) return undefined;\n return readTraceRef({\n observer: metadata.traceObserver,\n traceId: metadata.traceId,\n observationId: metadata.observationId,\n responseId: metadata.responseId,\n });\n}\n\nfunction readTraceRef(value: unknown): EvalTraceRef | undefined {\n if (typeof value !== \"object\" || value === null) return undefined;\n const traceId = (value as { traceId?: unknown }).traceId;\n if (typeof traceId !== \"string\" || traceId.length === 0) return undefined;\n const observer = (value as { observer?: unknown }).observer;\n const observationId = (value as { observationId?: unknown }).observationId;\n const responseId = (value as { responseId?: unknown }).responseId;\n const trace: EvalTraceRef = { traceId };\n if (typeof observer === \"string\" && observer.length > 0) trace.observer = observer;\n if (typeof observationId === \"string\" && observationId.length > 0) {\n trace.observationId = observationId;\n }\n if (typeof responseId === \"string\" && responseId.length > 0) trace.responseId = responseId;\n return trace;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import {
|
|
2
|
+
abortError,
|
|
3
|
+
throwIfAborted
|
|
4
|
+
} from "./chunk-USRKPEQN.js";
|
|
5
|
+
|
|
6
|
+
// src/internal/team-runtime/coordination.ts
|
|
7
|
+
function abortable(work, signal) {
|
|
8
|
+
if (signal.aborted) {
|
|
9
|
+
void work.catch(() => void 0);
|
|
10
|
+
return Promise.reject(abortError(signal.reason));
|
|
11
|
+
}
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
const cleanup = () => signal.removeEventListener("abort", abort);
|
|
14
|
+
const abort = () => {
|
|
15
|
+
cleanup();
|
|
16
|
+
reject(abortError(signal.reason));
|
|
17
|
+
};
|
|
18
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
19
|
+
work.then(
|
|
20
|
+
(value) => {
|
|
21
|
+
cleanup();
|
|
22
|
+
resolve(value);
|
|
23
|
+
},
|
|
24
|
+
(error) => {
|
|
25
|
+
cleanup();
|
|
26
|
+
reject(error);
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
var TeamChanges = class {
|
|
32
|
+
version = 0;
|
|
33
|
+
listeners = /* @__PURE__ */ new Set();
|
|
34
|
+
notify() {
|
|
35
|
+
this.version += 1;
|
|
36
|
+
for (const listener of this.listeners) listener();
|
|
37
|
+
}
|
|
38
|
+
wait(version, signal, timeoutMs) {
|
|
39
|
+
throwIfAborted(signal);
|
|
40
|
+
if (version !== this.version) return Promise.resolve();
|
|
41
|
+
return new Promise((resolve, reject) => {
|
|
42
|
+
let timer;
|
|
43
|
+
const cleanup = () => {
|
|
44
|
+
this.listeners.delete(done);
|
|
45
|
+
signal.removeEventListener("abort", abort);
|
|
46
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
47
|
+
};
|
|
48
|
+
const done = () => {
|
|
49
|
+
cleanup();
|
|
50
|
+
resolve();
|
|
51
|
+
};
|
|
52
|
+
const abort = () => {
|
|
53
|
+
cleanup();
|
|
54
|
+
reject(abortError(signal.reason));
|
|
55
|
+
};
|
|
56
|
+
this.listeners.add(done);
|
|
57
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
58
|
+
if (timeoutMs !== void 0) timer = setTimeout(done, timeoutMs);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
var TeamSlots = class {
|
|
63
|
+
constructor(maximum) {
|
|
64
|
+
this.maximum = maximum;
|
|
65
|
+
}
|
|
66
|
+
maximum;
|
|
67
|
+
active = 0;
|
|
68
|
+
changes = new TeamChanges();
|
|
69
|
+
queue = [];
|
|
70
|
+
async acquire(signal) {
|
|
71
|
+
const ticket = {};
|
|
72
|
+
this.queue.push(ticket);
|
|
73
|
+
try {
|
|
74
|
+
while (true) {
|
|
75
|
+
throwIfAborted(signal);
|
|
76
|
+
const version = this.changes.version;
|
|
77
|
+
if (this.queue[0] === ticket && this.active < this.maximum) {
|
|
78
|
+
this.queue.shift();
|
|
79
|
+
this.active += 1;
|
|
80
|
+
this.changes.notify();
|
|
81
|
+
let released = false;
|
|
82
|
+
return () => {
|
|
83
|
+
if (released) return;
|
|
84
|
+
released = true;
|
|
85
|
+
this.active -= 1;
|
|
86
|
+
this.changes.notify();
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
await this.changes.wait(version, signal);
|
|
90
|
+
}
|
|
91
|
+
} finally {
|
|
92
|
+
const index = this.queue.indexOf(ticket);
|
|
93
|
+
if (index !== -1) this.queue.splice(index, 1);
|
|
94
|
+
this.changes.notify();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
export {
|
|
100
|
+
abortable,
|
|
101
|
+
TeamChanges,
|
|
102
|
+
TeamSlots
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=chunk-PIMD4DYG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/team-runtime/coordination.ts"],"sourcesContent":["import { abortError, throwIfAborted } from \"../abort\";\n\n/** Races caller-owned work without leaving abort listeners installed after settlement. */\nexport function abortable<T>(work: Promise<T>, signal: AbortSignal): Promise<T> {\n if (signal.aborted) {\n void work.catch(() => undefined);\n return Promise.reject(abortError(signal.reason));\n }\n return new Promise((resolve, reject) => {\n const cleanup = () => signal.removeEventListener(\"abort\", abort);\n const abort = () => {\n cleanup();\n reject(abortError(signal.reason));\n };\n signal.addEventListener(\"abort\", abort, { once: true });\n work.then(\n (value) => {\n cleanup();\n resolve(value);\n },\n (error: unknown) => {\n cleanup();\n reject(error);\n },\n );\n });\n}\n\n/** A versioned notification avoids losing a wakeup between a check and a wait. */\nexport class TeamChanges {\n version = 0;\n private listeners = new Set<() => void>();\n\n notify(): void {\n this.version += 1;\n for (const listener of this.listeners) listener();\n }\n\n wait(version: number, signal: AbortSignal, timeoutMs?: number): Promise<void> {\n throwIfAborted(signal);\n if (version !== this.version) return Promise.resolve();\n return new Promise((resolve, reject) => {\n let timer: ReturnType<typeof setTimeout> | undefined;\n const cleanup = () => {\n this.listeners.delete(done);\n signal.removeEventListener(\"abort\", abort);\n if (timer !== undefined) clearTimeout(timer);\n };\n const done = () => {\n cleanup();\n resolve();\n };\n const abort = () => {\n cleanup();\n reject(abortError(signal.reason));\n };\n this.listeners.add(done);\n signal.addEventListener(\"abort\", abort, { once: true });\n if (timeoutMs !== undefined) timer = setTimeout(done, timeoutMs);\n });\n }\n}\n\n/** FIFO admission. Waits and human interactions return their permit temporarily. */\nexport class TeamSlots {\n private active = 0;\n private readonly changes = new TeamChanges();\n private readonly queue: object[] = [];\n\n constructor(private readonly maximum: number) {}\n\n async acquire(signal: AbortSignal): Promise<() => void> {\n const ticket = {};\n this.queue.push(ticket);\n try {\n while (true) {\n throwIfAborted(signal);\n const version = this.changes.version;\n if (this.queue[0] === ticket && this.active < this.maximum) {\n this.queue.shift();\n this.active += 1;\n this.changes.notify();\n let released = false;\n return () => {\n if (released) return;\n released = true;\n this.active -= 1;\n this.changes.notify();\n };\n }\n await this.changes.wait(version, signal);\n }\n } finally {\n const index = this.queue.indexOf(ticket);\n if (index !== -1) this.queue.splice(index, 1);\n this.changes.notify();\n }\n }\n}\n"],"mappings":";;;;;;AAGO,SAAS,UAAa,MAAkB,QAAiC;AAC9E,MAAI,OAAO,SAAS;AAClB,SAAK,KAAK,MAAM,MAAM,MAAS;AAC/B,WAAO,QAAQ,OAAO,WAAW,OAAO,MAAM,CAAC;AAAA,EACjD;AACA,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,UAAU,MAAM,OAAO,oBAAoB,SAAS,KAAK;AAC/D,UAAM,QAAQ,MAAM;AAClB,cAAQ;AACR,aAAO,WAAW,OAAO,MAAM,CAAC;AAAA,IAClC;AACA,WAAO,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;AACtD,SAAK;AAAA,MACH,CAAC,UAAU;AACT,gBAAQ;AACR,gBAAQ,KAAK;AAAA,MACf;AAAA,MACA,CAAC,UAAmB;AAClB,gBAAQ;AACR,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAGO,IAAM,cAAN,MAAkB;AAAA,EACvB,UAAU;AAAA,EACF,YAAY,oBAAI,IAAgB;AAAA,EAExC,SAAe;AACb,SAAK,WAAW;AAChB,eAAW,YAAY,KAAK,UAAW,UAAS;AAAA,EAClD;AAAA,EAEA,KAAK,SAAiB,QAAqB,WAAmC;AAC5E,mBAAe,MAAM;AACrB,QAAI,YAAY,KAAK,QAAS,QAAO,QAAQ,QAAQ;AACrD,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAI;AACJ,YAAM,UAAU,MAAM;AACpB,aAAK,UAAU,OAAO,IAAI;AAC1B,eAAO,oBAAoB,SAAS,KAAK;AACzC,YAAI,UAAU,OAAW,cAAa,KAAK;AAAA,MAC7C;AACA,YAAM,OAAO,MAAM;AACjB,gBAAQ;AACR,gBAAQ;AAAA,MACV;AACA,YAAM,QAAQ,MAAM;AAClB,gBAAQ;AACR,eAAO,WAAW,OAAO,MAAM,CAAC;AAAA,MAClC;AACA,WAAK,UAAU,IAAI,IAAI;AACvB,aAAO,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;AACtD,UAAI,cAAc,OAAW,SAAQ,WAAW,MAAM,SAAS;AAAA,IACjE,CAAC;AAAA,EACH;AACF;AAGO,IAAM,YAAN,MAAgB;AAAA,EAKrB,YAA6B,SAAiB;AAAjB;AAAA,EAAkB;AAAA,EAAlB;AAAA,EAJrB,SAAS;AAAA,EACA,UAAU,IAAI,YAAY;AAAA,EAC1B,QAAkB,CAAC;AAAA,EAIpC,MAAM,QAAQ,QAA0C;AACtD,UAAM,SAAS,CAAC;AAChB,SAAK,MAAM,KAAK,MAAM;AACtB,QAAI;AACF,aAAO,MAAM;AACX,uBAAe,MAAM;AACrB,cAAM,UAAU,KAAK,QAAQ;AAC7B,YAAI,KAAK,MAAM,CAAC,MAAM,UAAU,KAAK,SAAS,KAAK,SAAS;AAC1D,eAAK,MAAM,MAAM;AACjB,eAAK,UAAU;AACf,eAAK,QAAQ,OAAO;AACpB,cAAI,WAAW;AACf,iBAAO,MAAM;AACX,gBAAI,SAAU;AACd,uBAAW;AACX,iBAAK,UAAU;AACf,iBAAK,QAAQ,OAAO;AAAA,UACtB;AAAA,QACF;AACA,cAAM,KAAK,QAAQ,KAAK,SAAS,MAAM;AAAA,MACzC;AAAA,IACF,UAAE;AACA,YAAM,QAAQ,KAAK,MAAM,QAAQ,MAAM;AACvC,UAAI,UAAU,GAAI,MAAK,MAAM,OAAO,OAAO,CAAC;AAC5C,WAAK,QAAQ,OAAO;AAAA,IACtB;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-PJNE75WC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,50 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
function abortError(reason) {
|
|
8
|
-
if (isAbortError(reason)) {
|
|
9
|
-
return reason;
|
|
10
|
-
}
|
|
11
|
-
const error = new Error(
|
|
12
|
-
"The operation was aborted.",
|
|
13
|
-
reason === void 0 ? void 0 : { cause: reason }
|
|
14
|
-
);
|
|
15
|
-
error.name = "AbortError";
|
|
16
|
-
return error;
|
|
17
|
-
}
|
|
18
|
-
function isAbortError(error) {
|
|
19
|
-
const seen = /* @__PURE__ */ new Set();
|
|
20
|
-
let current = error;
|
|
21
|
-
while (typeof current === "object" && current !== null && !seen.has(current)) {
|
|
22
|
-
seen.add(current);
|
|
23
|
-
if ("name" in current && current.name === "AbortError") {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
current = "cause" in current ? current.cause : void 0;
|
|
27
|
-
}
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
function waitForAbortableDelay(delayMs, signal) {
|
|
31
|
-
throwIfAborted(signal);
|
|
32
|
-
if (delayMs === 0) return Promise.resolve();
|
|
33
|
-
if (signal === void 0) {
|
|
34
|
-
return new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
35
|
-
}
|
|
36
|
-
return new Promise((resolve, reject) => {
|
|
37
|
-
const timer = setTimeout(() => {
|
|
38
|
-
signal.removeEventListener("abort", onAbort);
|
|
39
|
-
resolve();
|
|
40
|
-
}, delayMs);
|
|
41
|
-
const onAbort = () => {
|
|
42
|
-
clearTimeout(timer);
|
|
43
|
-
reject(abortError(signal.reason));
|
|
44
|
-
};
|
|
45
|
-
signal.addEventListener("abort", onAbort, { once: true });
|
|
46
|
-
});
|
|
47
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
abortError,
|
|
3
|
+
isAbortError,
|
|
4
|
+
waitForAbortableDelay
|
|
5
|
+
} from "./chunk-USRKPEQN.js";
|
|
48
6
|
|
|
49
7
|
// src/retry.ts
|
|
50
8
|
var DEFAULT_MAX_ATTEMPTS = 3;
|
|
@@ -317,9 +275,6 @@ function isObject(value) {
|
|
|
317
275
|
}
|
|
318
276
|
|
|
319
277
|
export {
|
|
320
|
-
throwIfAborted,
|
|
321
|
-
abortError,
|
|
322
|
-
isAbortError,
|
|
323
278
|
resolveRetryOptions,
|
|
324
279
|
retryDelayMs,
|
|
325
280
|
retryErrorAttributes,
|
|
@@ -328,4 +283,4 @@ export {
|
|
|
328
283
|
retryOptionsForFailure,
|
|
329
284
|
runWithRetries
|
|
330
285
|
};
|
|
331
|
-
//# sourceMappingURL=chunk-
|
|
286
|
+
//# sourceMappingURL=chunk-POXHJF3H.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/retry.ts"],"sourcesContent":["import type { JsonObject, Usage } from \"./completion/types\";\nimport { abortError, isAbortError, waitForAbortableDelay } from \"./internal/abort\";\n\nexport type RetryContext = {\n error: unknown;\n attempt: number;\n maxAttempts: number;\n streaming: boolean;\n turn?: number | undefined;\n};\n\nexport type RetryOptions = {\n maxAttempts?: number | undefined;\n initialDelayMs?: number | undefined;\n maxDelayMs?: number | undefined;\n shouldRetry?: ((context: RetryContext) => boolean) | undefined;\n};\n\nexport type RetrySetting = RetryOptions | false;\n\nexport type ResolvedRetryOptions = {\n maxAttempts: number;\n initialDelayMs: number;\n maxDelayMs: number;\n shouldRetry: (context: RetryContext) => boolean;\n};\n\nconst DEFAULT_MAX_ATTEMPTS = 3;\nconst DEFAULT_INITIAL_DELAY_MS = 100;\nconst DEFAULT_MAX_DELAY_MS = 1_000;\nconst MAX_TIMER_DELAY_MS = 2_147_483_647;\n\nconst RETRYABLE_STATUS_CODES = new Set([408, 409, 425, 429]);\nconst RETRYABLE_NUMERIC_ERROR_CODES = new Set([4, 8, 14]);\nconst RETRYABLE_ERROR_NAMES = new Set([\n \"APIConnectionError\",\n \"APIConnectionTimeoutError\",\n \"TimeoutError\",\n]);\nconst RETRYABLE_STRUCTURED_OUTPUT_PHASES = new Set([\"truncated\", \"parse\", \"schema\"]);\nconst RETRYABLE_PROVIDER_OUTPUT_KINDS = new Set([\n \"malformed-tool-arguments\",\n \"invalid-tool-arguments\",\n \"invalid-stream-event\",\n \"incomplete-stream\",\n \"incomplete-tool-call\",\n \"invalid-tool-call\",\n \"truncated-tool-call\",\n]);\nconst PROVIDER_OUTPUT_KINDS = new Set([\n ...RETRYABLE_PROVIDER_OUTPUT_KINDS,\n \"filtered-tool-call\",\n \"invalid-response\",\n]);\nconst PROVIDER_OUTPUT_FINISH_REASONS = new Set([\n \"stop\",\n \"length\",\n \"content-filter\",\n \"tool-calls\",\n \"other\",\n]);\nconst COMPLETION_PROVIDER_OUTPUT_ERROR_CODE = \"ANVIA_COMPLETION_PROVIDER_OUTPUT\";\nconst RETRYABLE_ERROR_CODES = new Set([\n \"DEADLINE_EXCEEDED\",\n \"EAI_AGAIN\",\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"EHOSTUNREACH\",\n \"ENETDOWN\",\n \"ENETUNREACH\",\n \"EPIPE\",\n \"ETIMEDOUT\",\n \"RESOURCE_EXHAUSTED\",\n \"UNAVAILABLE\",\n \"UND_ERR_CONNECT_TIMEOUT\",\n \"UND_ERR_HEADERS_TIMEOUT\",\n \"UND_ERR_SOCKET\",\n]);\n\nexport function resolveRetryOptions(options: RetryOptions): ResolvedRetryOptions {\n const maxAttempts = options.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;\n const initialDelayMs = options.initialDelayMs ?? DEFAULT_INITIAL_DELAY_MS;\n const maxDelayMs = options.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;\n\n if (!Number.isSafeInteger(maxAttempts) || maxAttempts < 1) {\n throw new RangeError(\"Retry maxAttempts must be a positive integer.\");\n }\n assertDelay(initialDelayMs, \"initialDelayMs\");\n assertDelay(maxDelayMs, \"maxDelayMs\");\n if (maxDelayMs < initialDelayMs) {\n throw new RangeError(\"Retry maxDelayMs must be greater than or equal to initialDelayMs.\");\n }\n if (options.shouldRetry !== undefined && typeof options.shouldRetry !== \"function\") {\n throw new TypeError(\"Retry shouldRetry must be a function.\");\n }\n\n return {\n maxAttempts,\n initialDelayMs,\n maxDelayMs,\n shouldRetry: options.shouldRetry ?? defaultShouldRetry,\n };\n}\n\nexport function retryDelayMs(options: ResolvedRetryOptions, failedAttempt: number): number {\n const exponentialDelay = options.initialDelayMs * 2 ** (failedAttempt - 1);\n const cappedDelay = Math.min(options.maxDelayMs, exponentialDelay);\n return Math.random() * cappedDelay;\n}\n\nexport function retryErrorAttributes(error: unknown): JsonObject {\n const errors = errorChain(error);\n const errorName = errors\n .map((candidate) => stringProperty(candidate, \"name\"))\n .find((value) => value !== undefined);\n const statusCode = firstStatusCode(errors);\n const errorCode = errors\n .map((candidate) => errorCodeProperty(candidate))\n .find((value) => value !== undefined);\n\n const attributes: JsonObject = {};\n if (errorName !== undefined) attributes.errorName = errorName;\n if (statusCode !== undefined) attributes.statusCode = statusCode;\n if (errorCode !== undefined) attributes.errorCode = errorCode;\n const providerOutputError = errors.find(isCompletionProviderOutputErrorRecord);\n if (providerOutputError !== undefined) {\n const kind = stringProperty(providerOutputError, \"kind\");\n if (kind !== undefined) attributes.providerOutputKind = kind;\n const finishReason = stringProperty(providerOutputError, \"finishReason\");\n if (finishReason !== undefined) attributes.finishReason = finishReason;\n const usage = usageProperty(providerOutputError);\n if (usage !== undefined) attributes.attemptUsage = usageEventValue(usage);\n }\n return attributes;\n}\n\nexport function completionProviderOutputErrorUsage(error: unknown): Usage | undefined {\n for (const candidate of errorChain(error)) {\n if (!isCompletionProviderOutputErrorRecord(candidate)) continue;\n const usage = usageProperty(candidate);\n if (usage !== undefined) return usage;\n }\n return undefined;\n}\n\nexport async function waitForRetry(\n delayMs: number,\n abortSignal?: AbortSignal | undefined,\n): Promise<void> {\n await waitForAbortableDelay(delayMs, abortSignal);\n}\n\nexport function retryOptionsForFailure(\n options: ResolvedRetryOptions | undefined,\n context: Omit<RetryContext, \"maxAttempts\">,\n): ResolvedRetryOptions | undefined {\n if (isAbortError(context.error)) return undefined;\n if (options === undefined || context.attempt >= options.maxAttempts) return undefined;\n return options.shouldRetry({ ...context, maxAttempts: options.maxAttempts })\n ? options\n : undefined;\n}\n\nexport async function runWithRetries<T>(\n operation: () => Promise<T>,\n options: ResolvedRetryOptions | undefined,\n context: {\n streaming: boolean;\n turn?: number | undefined;\n abortSignal?: AbortSignal | undefined;\n },\n): Promise<T> {\n let attempt = 1;\n while (true) {\n try {\n return await operation();\n } catch (error) {\n if (context.abortSignal?.aborted === true) {\n throw abortError(context.abortSignal.reason);\n }\n const retryOptions = retryOptionsForFailure(options, { error, attempt, ...context });\n if (retryOptions === undefined) throw error;\n await waitForRetry(retryDelayMs(retryOptions, attempt), context.abortSignal);\n attempt += 1;\n }\n }\n}\n\nfunction defaultShouldRetry(context: RetryContext): boolean {\n const errors = errorChain(context.error);\n if (isAbortError(context.error)) return false;\n\n const providerOutputErrorMarker = errors.find(isCompletionProviderOutputErrorMarker);\n if (providerOutputErrorMarker !== undefined) {\n if (!isCompletionProviderOutputErrorRecord(providerOutputErrorMarker)) return false;\n const kind = stringProperty(providerOutputErrorMarker, \"kind\");\n return kind !== undefined && RETRYABLE_PROVIDER_OUTPUT_KINDS.has(kind);\n }\n\n const structuredOutputError = errors.find(\n (error) => stringProperty(error, \"name\") === \"AgentStructuredOutputError\",\n );\n if (structuredOutputError !== undefined) {\n const phase = stringProperty(structuredOutputError, \"phase\");\n return phase !== undefined && RETRYABLE_STRUCTURED_OUTPUT_PHASES.has(phase);\n }\n\n const statusCode = firstStatusCode(errors);\n if (statusCode !== undefined) {\n return RETRYABLE_STATUS_CODES.has(statusCode) || (statusCode >= 500 && statusCode <= 599);\n }\n\n return errors.some((error) => {\n const name = stringProperty(error, \"name\");\n if (name !== undefined && RETRYABLE_ERROR_NAMES.has(name)) return true;\n const code = stringProperty(error, \"code\")?.toUpperCase();\n if (code !== undefined && RETRYABLE_ERROR_CODES.has(code)) return true;\n const numericCode = numberProperty(error, \"code\");\n return numericCode !== undefined && RETRYABLE_NUMERIC_ERROR_CODES.has(numericCode);\n });\n}\n\nfunction isCompletionProviderOutputErrorRecord(error: Record<string, unknown>): boolean {\n const kind = stringProperty(error, \"kind\");\n return (\n isCompletionProviderOutputErrorMarker(error) &&\n kind !== undefined &&\n PROVIDER_OUTPUT_KINDS.has(kind) &&\n hasConsistentProviderOutputFinish(error, kind)\n );\n}\n\nfunction isCompletionProviderOutputErrorMarker(error: Record<string, unknown>): boolean {\n return (\n stringProperty(error, \"name\") === \"CompletionProviderOutputError\" &&\n stringProperty(error, \"code\") === COMPLETION_PROVIDER_OUTPUT_ERROR_CODE\n );\n}\n\nfunction hasConsistentProviderOutputFinish(error: Record<string, unknown>, kind: string): boolean {\n const rawFinishReason = property(error, \"finishReason\");\n if (\n rawFinishReason !== undefined &&\n (typeof rawFinishReason !== \"string\" || !PROVIDER_OUTPUT_FINISH_REASONS.has(rawFinishReason))\n ) {\n return false;\n }\n const finishReason = rawFinishReason as string | undefined;\n if (kind === \"truncated-tool-call\") return finishReason === \"length\";\n if (kind === \"filtered-tool-call\") return finishReason === \"content-filter\";\n return finishReason !== \"length\" && finishReason !== \"content-filter\";\n}\n\nfunction usageProperty(value: Record<string, unknown>): Usage | undefined {\n const usage = property(value, \"usage\");\n if (!isObject(usage)) return undefined;\n const inputTokens = nonnegativeNumberProperty(usage, \"inputTokens\");\n const outputTokens = nonnegativeNumberProperty(usage, \"outputTokens\");\n const totalTokens = nonnegativeNumberProperty(usage, \"totalTokens\");\n const cachedInputTokens = nonnegativeNumberProperty(usage, \"cachedInputTokens\");\n const cacheCreationInputTokens = nonnegativeNumberProperty(usage, \"cacheCreationInputTokens\");\n if (\n inputTokens === undefined ||\n outputTokens === undefined ||\n totalTokens === undefined ||\n cachedInputTokens === undefined ||\n cacheCreationInputTokens === undefined\n ) {\n return undefined;\n }\n const result: Usage = {\n inputTokens,\n outputTokens,\n totalTokens,\n cachedInputTokens,\n cacheCreationInputTokens,\n };\n const details = property(usage, \"details\");\n if (details !== undefined) {\n if (!isObject(details)) return undefined;\n const copiedDetails: Record<string, number> = {};\n for (const [key, detail] of Object.entries(details)) {\n if (typeof detail !== \"number\" || !Number.isFinite(detail) || detail < 0) return undefined;\n copiedDetails[key] = detail;\n }\n result.details = copiedDetails;\n }\n return result;\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 firstStatusCode(errors: Record<string, unknown>[]): number | undefined {\n for (const error of errors) {\n const status = numberProperty(error, \"status\");\n if (status !== undefined && status >= 100 && status <= 599) return status;\n const statusCode = numberProperty(error, \"statusCode\");\n if (statusCode !== undefined && statusCode >= 100 && statusCode <= 599) return statusCode;\n const code = numberProperty(error, \"code\");\n if (code !== undefined && code >= 100 && code <= 599) return code;\n }\n return undefined;\n}\n\nfunction errorChain(error: unknown): Record<string, unknown>[] {\n const errors: Record<string, unknown>[] = [];\n const seen = new Set<object>();\n let current = error;\n while (isObject(current) && !seen.has(current)) {\n seen.add(current);\n errors.push(current);\n current = property(current, \"cause\");\n }\n return errors;\n}\n\nfunction assertDelay(value: number, name: string): void {\n if (!Number.isFinite(value) || value < 0 || value > MAX_TIMER_DELAY_MS) {\n throw new RangeError(`Retry ${name} must be between 0 and ${MAX_TIMER_DELAY_MS} milliseconds.`);\n }\n}\n\nfunction numberProperty(value: Record<string, unknown>, name: string): number | undefined {\n const candidate = property(value, name);\n return typeof candidate === \"number\" && Number.isFinite(candidate) ? candidate : undefined;\n}\n\nfunction nonnegativeNumberProperty(\n value: Record<string, unknown>,\n name: string,\n): number | undefined {\n const candidate = numberProperty(value, name);\n return candidate !== undefined && candidate >= 0 ? candidate : undefined;\n}\n\nfunction stringProperty(value: Record<string, unknown>, name: string): string | undefined {\n const candidate = property(value, name);\n return typeof candidate === \"string\" && candidate.length > 0 ? candidate : undefined;\n}\n\nfunction errorCodeProperty(value: Record<string, unknown>): string | number | undefined {\n return stringProperty(value, \"code\") ?? numberProperty(value, \"code\");\n}\n\nfunction property(value: Record<string, unknown>, name: string): unknown {\n try {\n return value[name];\n } catch {\n return undefined;\n }\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n"],"mappings":";;;;;;;AA2BA,IAAM,uBAAuB;AAC7B,IAAM,2BAA2B;AACjC,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAE3B,IAAM,yBAAyB,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;AAC3D,IAAM,gCAAgC,oBAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACxD,IAAM,wBAAwB,oBAAI,IAAI;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,qCAAqC,oBAAI,IAAI,CAAC,aAAa,SAAS,QAAQ,CAAC;AACnF,IAAM,kCAAkC,oBAAI,IAAI;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,wBAAwB,oBAAI,IAAI;AAAA,EACpC,GAAG;AAAA,EACH;AAAA,EACA;AACF,CAAC;AACD,IAAM,iCAAiC,oBAAI,IAAI;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,wCAAwC;AAC9C,IAAM,wBAAwB,oBAAI,IAAI;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,SAAS,oBAAoB,SAA6C;AAC/E,QAAM,cAAc,QAAQ,eAAe;AAC3C,QAAM,iBAAiB,QAAQ,kBAAkB;AACjD,QAAM,aAAa,QAAQ,cAAc;AAEzC,MAAI,CAAC,OAAO,cAAc,WAAW,KAAK,cAAc,GAAG;AACzD,UAAM,IAAI,WAAW,+CAA+C;AAAA,EACtE;AACA,cAAY,gBAAgB,gBAAgB;AAC5C,cAAY,YAAY,YAAY;AACpC,MAAI,aAAa,gBAAgB;AAC/B,UAAM,IAAI,WAAW,mEAAmE;AAAA,EAC1F;AACA,MAAI,QAAQ,gBAAgB,UAAa,OAAO,QAAQ,gBAAgB,YAAY;AAClF,UAAM,IAAI,UAAU,uCAAuC;AAAA,EAC7D;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,QAAQ,eAAe;AAAA,EACtC;AACF;AAEO,SAAS,aAAa,SAA+B,eAA+B;AACzF,QAAM,mBAAmB,QAAQ,iBAAiB,MAAM,gBAAgB;AACxE,QAAM,cAAc,KAAK,IAAI,QAAQ,YAAY,gBAAgB;AACjE,SAAO,KAAK,OAAO,IAAI;AACzB;AAEO,SAAS,qBAAqB,OAA4B;AAC/D,QAAM,SAAS,WAAW,KAAK;AAC/B,QAAM,YAAY,OACf,IAAI,CAAC,cAAc,eAAe,WAAW,MAAM,CAAC,EACpD,KAAK,CAAC,UAAU,UAAU,MAAS;AACtC,QAAM,aAAa,gBAAgB,MAAM;AACzC,QAAM,YAAY,OACf,IAAI,CAAC,cAAc,kBAAkB,SAAS,CAAC,EAC/C,KAAK,CAAC,UAAU,UAAU,MAAS;AAEtC,QAAM,aAAyB,CAAC;AAChC,MAAI,cAAc,OAAW,YAAW,YAAY;AACpD,MAAI,eAAe,OAAW,YAAW,aAAa;AACtD,MAAI,cAAc,OAAW,YAAW,YAAY;AACpD,QAAM,sBAAsB,OAAO,KAAK,qCAAqC;AAC7E,MAAI,wBAAwB,QAAW;AACrC,UAAM,OAAO,eAAe,qBAAqB,MAAM;AACvD,QAAI,SAAS,OAAW,YAAW,qBAAqB;AACxD,UAAM,eAAe,eAAe,qBAAqB,cAAc;AACvE,QAAI,iBAAiB,OAAW,YAAW,eAAe;AAC1D,UAAM,QAAQ,cAAc,mBAAmB;AAC/C,QAAI,UAAU,OAAW,YAAW,eAAe,gBAAgB,KAAK;AAAA,EAC1E;AACA,SAAO;AACT;AAEO,SAAS,mCAAmC,OAAmC;AACpF,aAAW,aAAa,WAAW,KAAK,GAAG;AACzC,QAAI,CAAC,sCAAsC,SAAS,EAAG;AACvD,UAAM,QAAQ,cAAc,SAAS;AACrC,QAAI,UAAU,OAAW,QAAO;AAAA,EAClC;AACA,SAAO;AACT;AAEA,eAAsB,aACpB,SACA,aACe;AACf,QAAM,sBAAsB,SAAS,WAAW;AAClD;AAEO,SAAS,uBACd,SACA,SACkC;AAClC,MAAI,aAAa,QAAQ,KAAK,EAAG,QAAO;AACxC,MAAI,YAAY,UAAa,QAAQ,WAAW,QAAQ,YAAa,QAAO;AAC5E,SAAO,QAAQ,YAAY,EAAE,GAAG,SAAS,aAAa,QAAQ,YAAY,CAAC,IACvE,UACA;AACN;AAEA,eAAsB,eACpB,WACA,SACA,SAKY;AACZ,MAAI,UAAU;AACd,SAAO,MAAM;AACX,QAAI;AACF,aAAO,MAAM,UAAU;AAAA,IACzB,SAAS,OAAO;AACd,UAAI,QAAQ,aAAa,YAAY,MAAM;AACzC,cAAM,WAAW,QAAQ,YAAY,MAAM;AAAA,MAC7C;AACA,YAAM,eAAe,uBAAuB,SAAS,EAAE,OAAO,SAAS,GAAG,QAAQ,CAAC;AACnF,UAAI,iBAAiB,OAAW,OAAM;AACtC,YAAM,aAAa,aAAa,cAAc,OAAO,GAAG,QAAQ,WAAW;AAC3E,iBAAW;AAAA,IACb;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,SAAgC;AAC1D,QAAM,SAAS,WAAW,QAAQ,KAAK;AACvC,MAAI,aAAa,QAAQ,KAAK,EAAG,QAAO;AAExC,QAAM,4BAA4B,OAAO,KAAK,qCAAqC;AACnF,MAAI,8BAA8B,QAAW;AAC3C,QAAI,CAAC,sCAAsC,yBAAyB,EAAG,QAAO;AAC9E,UAAM,OAAO,eAAe,2BAA2B,MAAM;AAC7D,WAAO,SAAS,UAAa,gCAAgC,IAAI,IAAI;AAAA,EACvE;AAEA,QAAM,wBAAwB,OAAO;AAAA,IACnC,CAAC,UAAU,eAAe,OAAO,MAAM,MAAM;AAAA,EAC/C;AACA,MAAI,0BAA0B,QAAW;AACvC,UAAM,QAAQ,eAAe,uBAAuB,OAAO;AAC3D,WAAO,UAAU,UAAa,mCAAmC,IAAI,KAAK;AAAA,EAC5E;AAEA,QAAM,aAAa,gBAAgB,MAAM;AACzC,MAAI,eAAe,QAAW;AAC5B,WAAO,uBAAuB,IAAI,UAAU,KAAM,cAAc,OAAO,cAAc;AAAA,EACvF;AAEA,SAAO,OAAO,KAAK,CAAC,UAAU;AAC5B,UAAM,OAAO,eAAe,OAAO,MAAM;AACzC,QAAI,SAAS,UAAa,sBAAsB,IAAI,IAAI,EAAG,QAAO;AAClE,UAAM,OAAO,eAAe,OAAO,MAAM,GAAG,YAAY;AACxD,QAAI,SAAS,UAAa,sBAAsB,IAAI,IAAI,EAAG,QAAO;AAClE,UAAM,cAAc,eAAe,OAAO,MAAM;AAChD,WAAO,gBAAgB,UAAa,8BAA8B,IAAI,WAAW;AAAA,EACnF,CAAC;AACH;AAEA,SAAS,sCAAsC,OAAyC;AACtF,QAAM,OAAO,eAAe,OAAO,MAAM;AACzC,SACE,sCAAsC,KAAK,KAC3C,SAAS,UACT,sBAAsB,IAAI,IAAI,KAC9B,kCAAkC,OAAO,IAAI;AAEjD;AAEA,SAAS,sCAAsC,OAAyC;AACtF,SACE,eAAe,OAAO,MAAM,MAAM,mCAClC,eAAe,OAAO,MAAM,MAAM;AAEtC;AAEA,SAAS,kCAAkC,OAAgC,MAAuB;AAChG,QAAM,kBAAkB,SAAS,OAAO,cAAc;AACtD,MACE,oBAAoB,WACnB,OAAO,oBAAoB,YAAY,CAAC,+BAA+B,IAAI,eAAe,IAC3F;AACA,WAAO;AAAA,EACT;AACA,QAAM,eAAe;AACrB,MAAI,SAAS,sBAAuB,QAAO,iBAAiB;AAC5D,MAAI,SAAS,qBAAsB,QAAO,iBAAiB;AAC3D,SAAO,iBAAiB,YAAY,iBAAiB;AACvD;AAEA,SAAS,cAAc,OAAmD;AACxE,QAAM,QAAQ,SAAS,OAAO,OAAO;AACrC,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,QAAM,cAAc,0BAA0B,OAAO,aAAa;AAClE,QAAM,eAAe,0BAA0B,OAAO,cAAc;AACpE,QAAM,cAAc,0BAA0B,OAAO,aAAa;AAClE,QAAM,oBAAoB,0BAA0B,OAAO,mBAAmB;AAC9E,QAAM,2BAA2B,0BAA0B,OAAO,0BAA0B;AAC5F,MACE,gBAAgB,UAChB,iBAAiB,UACjB,gBAAgB,UAChB,sBAAsB,UACtB,6BAA6B,QAC7B;AACA,WAAO;AAAA,EACT;AACA,QAAM,SAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,UAAU,SAAS,OAAO,SAAS;AACzC,MAAI,YAAY,QAAW;AACzB,QAAI,CAAC,SAAS,OAAO,EAAG,QAAO;AAC/B,UAAM,gBAAwC,CAAC;AAC/C,eAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,OAAO,GAAG;AACnD,UAAI,OAAO,WAAW,YAAY,CAAC,OAAO,SAAS,MAAM,KAAK,SAAS,EAAG,QAAO;AACjF,oBAAc,GAAG,IAAI;AAAA,IACvB;AACA,WAAO,UAAU;AAAA,EACnB;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,OAA0B;AACjD,QAAM,QAAoB;AAAA,IACxB,aAAa,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,aAAa,MAAM;AAAA,IACnB,mBAAmB,MAAM;AAAA,IACzB,0BAA0B,MAAM;AAAA,EAClC;AACA,MAAI,MAAM,YAAY,OAAW,OAAM,UAAU,EAAE,GAAG,MAAM,QAAQ;AACpE,SAAO;AACT;AAEA,SAAS,gBAAgB,QAAuD;AAC9E,aAAW,SAAS,QAAQ;AAC1B,UAAM,SAAS,eAAe,OAAO,QAAQ;AAC7C,QAAI,WAAW,UAAa,UAAU,OAAO,UAAU,IAAK,QAAO;AACnE,UAAM,aAAa,eAAe,OAAO,YAAY;AACrD,QAAI,eAAe,UAAa,cAAc,OAAO,cAAc,IAAK,QAAO;AAC/E,UAAM,OAAO,eAAe,OAAO,MAAM;AACzC,QAAI,SAAS,UAAa,QAAQ,OAAO,QAAQ,IAAK,QAAO;AAAA,EAC/D;AACA,SAAO;AACT;AAEA,SAAS,WAAW,OAA2C;AAC7D,QAAM,SAAoC,CAAC;AAC3C,QAAM,OAAO,oBAAI,IAAY;AAC7B,MAAI,UAAU;AACd,SAAO,SAAS,OAAO,KAAK,CAAC,KAAK,IAAI,OAAO,GAAG;AAC9C,SAAK,IAAI,OAAO;AAChB,WAAO,KAAK,OAAO;AACnB,cAAU,SAAS,SAAS,OAAO;AAAA,EACrC;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAAe,MAAoB;AACtD,MAAI,CAAC,OAAO,SAAS,KAAK,KAAK,QAAQ,KAAK,QAAQ,oBAAoB;AACtE,UAAM,IAAI,WAAW,SAAS,IAAI,0BAA0B,kBAAkB,gBAAgB;AAAA,EAChG;AACF;AAEA,SAAS,eAAe,OAAgC,MAAkC;AACxF,QAAM,YAAY,SAAS,OAAO,IAAI;AACtC,SAAO,OAAO,cAAc,YAAY,OAAO,SAAS,SAAS,IAAI,YAAY;AACnF;AAEA,SAAS,0BACP,OACA,MACoB;AACpB,QAAM,YAAY,eAAe,OAAO,IAAI;AAC5C,SAAO,cAAc,UAAa,aAAa,IAAI,YAAY;AACjE;AAEA,SAAS,eAAe,OAAgC,MAAkC;AACxF,QAAM,YAAY,SAAS,OAAO,IAAI;AACtC,SAAO,OAAO,cAAc,YAAY,UAAU,SAAS,IAAI,YAAY;AAC7E;AAEA,SAAS,kBAAkB,OAA6D;AACtF,SAAO,eAAe,OAAO,MAAM,KAAK,eAAe,OAAO,MAAM;AACtE;AAEA,SAAS,SAAS,OAAgC,MAAuB;AACvE,MAAI;AACF,WAAO,MAAM,IAAI;AAAA,EACnB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,SAAS,OAAkD;AAClE,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;","names":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isStreamingCompletionModel
|
|
3
|
+
} from "./chunk-BDKFFFVX.js";
|
|
4
|
+
import {
|
|
5
|
+
createTool
|
|
6
|
+
} from "./chunk-XV3DH5GC.js";
|
|
7
|
+
import {
|
|
8
|
+
AgentRunBlockedError,
|
|
9
|
+
AgentToolSuspensionError
|
|
10
|
+
} from "./chunk-WN6AVBO4.js";
|
|
11
|
+
|
|
12
|
+
// src/agent/agent-tool.ts
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
function createAgentTool(agent, options) {
|
|
15
|
+
if (options.suspension !== "reject") {
|
|
16
|
+
throw new TypeError('Agent.asTool() requires suspension: "reject".');
|
|
17
|
+
}
|
|
18
|
+
const description = options.description ?? agent.description ?? `Prompt the ${options.name} agent.`;
|
|
19
|
+
return createTool({
|
|
20
|
+
name: options.name,
|
|
21
|
+
description,
|
|
22
|
+
inputSchema: z.object({
|
|
23
|
+
prompt: z.string().describe("The prompt to send to the agent.")
|
|
24
|
+
}),
|
|
25
|
+
execute: async ({ prompt }, context) => {
|
|
26
|
+
if (options.stream === true && context.emitStreamEvent !== void 0 && agent.model.capabilities.streaming && isStreamingCompletionModel(agent.model)) {
|
|
27
|
+
let completed = false;
|
|
28
|
+
let output;
|
|
29
|
+
const childStream = agent.stream({
|
|
30
|
+
prompt,
|
|
31
|
+
maxTurns: options.maxTurns,
|
|
32
|
+
abortSignal: context.abortSignal
|
|
33
|
+
});
|
|
34
|
+
for await (const event of childStream) {
|
|
35
|
+
const streamEvent = {
|
|
36
|
+
agentId: agent.id,
|
|
37
|
+
event
|
|
38
|
+
};
|
|
39
|
+
if (agent.name !== void 0) {
|
|
40
|
+
streamEvent.agentName = agent.name;
|
|
41
|
+
}
|
|
42
|
+
await context.emitStreamEvent(streamEvent);
|
|
43
|
+
if (event.type === "error") {
|
|
44
|
+
throw event.error;
|
|
45
|
+
}
|
|
46
|
+
if (event.type === "interaction") {
|
|
47
|
+
throw new AgentToolSuspensionError(event);
|
|
48
|
+
}
|
|
49
|
+
if (event.type === "blocked") {
|
|
50
|
+
throw new AgentRunBlockedError(event);
|
|
51
|
+
}
|
|
52
|
+
if (event.type === "response") {
|
|
53
|
+
output = event.output;
|
|
54
|
+
completed = true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (!completed) {
|
|
58
|
+
throw new Error(`Agent tool "${options.name}" ended without a final result.`);
|
|
59
|
+
}
|
|
60
|
+
return output;
|
|
61
|
+
}
|
|
62
|
+
const response = await agent.generate({
|
|
63
|
+
prompt,
|
|
64
|
+
maxTurns: options.maxTurns,
|
|
65
|
+
abortSignal: context.abortSignal
|
|
66
|
+
});
|
|
67
|
+
if (response.type === "interaction") {
|
|
68
|
+
throw new AgentToolSuspensionError(response);
|
|
69
|
+
}
|
|
70
|
+
if (response.type === "blocked") {
|
|
71
|
+
throw new AgentRunBlockedError(response);
|
|
72
|
+
}
|
|
73
|
+
return response.output;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export {
|
|
79
|
+
createAgentTool
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=chunk-PPJ7SYQL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/agent/agent-tool.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { isStreamingCompletionModel } from \"../completion/generate-completion\";\nimport type { CompletionModel } from \"../completion/index\";\nimport { createTool } from \"../tool/create-tool\";\nimport type { Tool, ToolCallContext, ToolCallStreamEvent } from \"../tool/tool\";\nimport type { Agent } from \"./agent\";\nimport { AgentRunBlockedError, AgentToolSuspensionError } from \"./errors\";\nimport type { AgentToolOptions } from \"./types\";\n\nexport function createAgentTool<Output, M extends CompletionModel, ContextDocument>(\n agent: Agent<Output, M, ContextDocument>,\n options: AgentToolOptions,\n): Tool<{ prompt: string }, Output> {\n if (options.suspension !== \"reject\") {\n throw new TypeError('Agent.asTool() requires suspension: \"reject\".');\n }\n const description =\n options.description ?? agent.description ?? `Prompt the ${options.name} agent.`;\n\n return createTool({\n name: options.name,\n description,\n inputSchema: z.object({\n prompt: z.string().describe(\"The prompt to send to the agent.\"),\n }),\n execute: async ({ prompt }, context: ToolCallContext) => {\n if (\n options.stream === true &&\n context.emitStreamEvent !== undefined &&\n agent.model.capabilities.streaming &&\n isStreamingCompletionModel(agent.model)\n ) {\n let completed = false;\n let output!: Output;\n const childStream = agent.stream({\n prompt,\n maxTurns: options.maxTurns,\n abortSignal: context.abortSignal,\n });\n for await (const event of childStream) {\n const streamEvent: ToolCallStreamEvent = {\n agentId: agent.id,\n event,\n };\n if (agent.name !== undefined) {\n streamEvent.agentName = agent.name;\n }\n await context.emitStreamEvent(streamEvent);\n if (event.type === \"error\") {\n throw event.error;\n }\n if (event.type === \"interaction\") {\n throw new AgentToolSuspensionError(event);\n }\n if (event.type === \"blocked\") {\n throw new AgentRunBlockedError(event);\n }\n if (event.type === \"response\") {\n output = event.output;\n completed = true;\n }\n }\n if (!completed) {\n throw new Error(`Agent tool \"${options.name}\" ended without a final result.`);\n }\n return output;\n }\n const response = await agent.generate({\n prompt,\n maxTurns: options.maxTurns,\n abortSignal: context.abortSignal,\n });\n if (response.type === \"interaction\") {\n throw new AgentToolSuspensionError(response);\n }\n if (response.type === \"blocked\") {\n throw new AgentRunBlockedError(response);\n }\n return response.output;\n },\n });\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,SAAS;AASX,SAAS,gBACd,OACA,SACkC;AAClC,MAAI,QAAQ,eAAe,UAAU;AACnC,UAAM,IAAI,UAAU,+CAA+C;AAAA,EACrE;AACA,QAAM,cACJ,QAAQ,eAAe,MAAM,eAAe,cAAc,QAAQ,IAAI;AAExE,SAAO,WAAW;AAAA,IAChB,MAAM,QAAQ;AAAA,IACd;AAAA,IACA,aAAa,EAAE,OAAO;AAAA,MACpB,QAAQ,EAAE,OAAO,EAAE,SAAS,kCAAkC;AAAA,IAChE,CAAC;AAAA,IACD,SAAS,OAAO,EAAE,OAAO,GAAG,YAA6B;AACvD,UACE,QAAQ,WAAW,QACnB,QAAQ,oBAAoB,UAC5B,MAAM,MAAM,aAAa,aACzB,2BAA2B,MAAM,KAAK,GACtC;AACA,YAAI,YAAY;AAChB,YAAI;AACJ,cAAM,cAAc,MAAM,OAAO;AAAA,UAC/B;AAAA,UACA,UAAU,QAAQ;AAAA,UAClB,aAAa,QAAQ;AAAA,QACvB,CAAC;AACD,yBAAiB,SAAS,aAAa;AACrC,gBAAM,cAAmC;AAAA,YACvC,SAAS,MAAM;AAAA,YACf;AAAA,UACF;AACA,cAAI,MAAM,SAAS,QAAW;AAC5B,wBAAY,YAAY,MAAM;AAAA,UAChC;AACA,gBAAM,QAAQ,gBAAgB,WAAW;AACzC,cAAI,MAAM,SAAS,SAAS;AAC1B,kBAAM,MAAM;AAAA,UACd;AACA,cAAI,MAAM,SAAS,eAAe;AAChC,kBAAM,IAAI,yBAAyB,KAAK;AAAA,UAC1C;AACA,cAAI,MAAM,SAAS,WAAW;AAC5B,kBAAM,IAAI,qBAAqB,KAAK;AAAA,UACtC;AACA,cAAI,MAAM,SAAS,YAAY;AAC7B,qBAAS,MAAM;AACf,wBAAY;AAAA,UACd;AAAA,QACF;AACA,YAAI,CAAC,WAAW;AACd,gBAAM,IAAI,MAAM,eAAe,QAAQ,IAAI,iCAAiC;AAAA,QAC9E;AACA,eAAO;AAAA,MACT;AACA,YAAM,WAAW,MAAM,MAAM,SAAS;AAAA,QACpC;AAAA,QACA,UAAU,QAAQ;AAAA,QAClB,aAAa,QAAQ;AAAA,MACvB,CAAC;AACD,UAAI,SAAS,SAAS,eAAe;AACnC,cAAM,IAAI,yBAAyB,QAAQ;AAAA,MAC7C;AACA,UAAI,SAAS,SAAS,WAAW;AAC/B,cAAM,IAAI,qBAAqB,QAAQ;AAAA,MACzC;AACA,aAAO,SAAS;AAAA,IAClB;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import {
|
|
2
|
+
embedDocuments
|
|
3
|
+
} from "./chunk-HHMLE3TZ.js";
|
|
4
|
+
import {
|
|
5
|
+
chunkTextDocuments
|
|
6
|
+
} from "./chunk-TFIOU6UR.js";
|
|
7
|
+
|
|
8
|
+
// src/vector-store/ingest.ts
|
|
9
|
+
async function ingestVectorText(options) {
|
|
10
|
+
return ingestVectorDocuments({
|
|
11
|
+
store: options.store,
|
|
12
|
+
documents: [options.document],
|
|
13
|
+
embeddingModel: options.embeddingModel,
|
|
14
|
+
chunking: options.chunking,
|
|
15
|
+
retries: options.retries,
|
|
16
|
+
concurrency: options.concurrency,
|
|
17
|
+
providerOptions: options.providerOptions,
|
|
18
|
+
abortSignal: options.abortSignal
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async function ingestVectorDocuments(options) {
|
|
22
|
+
for (const document of options.documents) {
|
|
23
|
+
validateVectorMetadata(document.metadata, document.id);
|
|
24
|
+
}
|
|
25
|
+
const chunks = chunkTextDocuments({
|
|
26
|
+
documents: options.documents,
|
|
27
|
+
chunking: options.chunking
|
|
28
|
+
});
|
|
29
|
+
const chunksByDocument = groupChunksByDocument(chunks);
|
|
30
|
+
const embedded = await embedDocuments({
|
|
31
|
+
model: options.embeddingModel,
|
|
32
|
+
documents: [...options.documents],
|
|
33
|
+
id: (document) => document.id,
|
|
34
|
+
content: (document) => {
|
|
35
|
+
const documentChunks = chunksByDocument.get(document.id);
|
|
36
|
+
if (documentChunks === void 0) {
|
|
37
|
+
throw new TypeError(`Text document ${document.id} has no chunks`);
|
|
38
|
+
}
|
|
39
|
+
return documentChunks.map((chunk) => chunk.text);
|
|
40
|
+
},
|
|
41
|
+
metadata: (document) => document.metadata,
|
|
42
|
+
retries: options.retries,
|
|
43
|
+
concurrency: options.concurrency,
|
|
44
|
+
abortSignal: options.abortSignal
|
|
45
|
+
});
|
|
46
|
+
await options.store.upsert({
|
|
47
|
+
documents: embedded.documents,
|
|
48
|
+
providerOptions: options.providerOptions
|
|
49
|
+
});
|
|
50
|
+
return { documents: embedded.documents };
|
|
51
|
+
}
|
|
52
|
+
function validateVectorMetadata(metadata, documentId) {
|
|
53
|
+
if (metadata === void 0) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (typeof metadata !== "object" || metadata === null || Array.isArray(metadata)) {
|
|
57
|
+
throw new TypeError(`Text document ${documentId} metadata must be an object`);
|
|
58
|
+
}
|
|
59
|
+
for (const [key, value] of Object.entries(metadata)) {
|
|
60
|
+
validateVectorMetadataValue(value, `Text document ${documentId} metadata.${key}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function validateVectorMetadataValue(value, label) {
|
|
64
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
68
|
+
throw new TypeError(`${label} must be a finite vector metadata value`);
|
|
69
|
+
}
|
|
70
|
+
if (Number.isInteger(value) && !Number.isSafeInteger(value)) {
|
|
71
|
+
throw new TypeError(`${label} must be a safe integer`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function groupChunksByDocument(chunks) {
|
|
75
|
+
const grouped = /* @__PURE__ */ new Map();
|
|
76
|
+
for (const chunk of chunks) {
|
|
77
|
+
const documentChunks = grouped.get(chunk.documentId);
|
|
78
|
+
if (documentChunks === void 0) {
|
|
79
|
+
grouped.set(chunk.documentId, [chunk]);
|
|
80
|
+
} else {
|
|
81
|
+
documentChunks.push(chunk);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return grouped;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export {
|
|
88
|
+
ingestVectorText,
|
|
89
|
+
ingestVectorDocuments
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=chunk-QHGYCYV6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vector-store/ingest.ts"],"sourcesContent":["import type { JsonObject } from \"../completion\";\nimport {\n chunkTextDocuments,\n type TextDocument,\n type TextDocumentChunk,\n type TextDocumentChunkingOptions,\n} from \"../documents\";\nimport {\n embedDocuments,\n type EmbeddedDocument,\n type EmbeddingModel,\n type VectorMetadata,\n type VectorMetadataValue,\n} from \"../embeddings\";\nimport type { RetrySetting } from \"../retry\";\nimport type { VectorStore } from \"./types\";\n\nexport type IngestVectorDocumentsOptions<Metadata extends VectorMetadata = VectorMetadata> =\n Readonly<{\n store: VectorStore<TextDocument<Metadata>, Metadata>;\n documents: readonly TextDocument<Metadata>[];\n embeddingModel: EmbeddingModel;\n chunking?: TextDocumentChunkingOptions | undefined;\n retries?: RetrySetting | undefined;\n concurrency?: number | undefined;\n providerOptions?: JsonObject | undefined;\n abortSignal?: AbortSignal | undefined;\n }>;\n\nexport type IngestVectorTextOptions<Metadata extends VectorMetadata = VectorMetadata> = Omit<\n IngestVectorDocumentsOptions<Metadata>,\n \"documents\"\n> &\n Readonly<{ document: TextDocument<Metadata> }>;\n\nexport type IngestVectorDocumentsResult<Metadata extends VectorMetadata = VectorMetadata> =\n Readonly<{\n documents: readonly EmbeddedDocument<TextDocument<Metadata>, Metadata>[];\n }>;\n\nexport async function ingestVectorText<Metadata extends VectorMetadata = VectorMetadata>(\n options: IngestVectorTextOptions<Metadata>,\n): Promise<IngestVectorDocumentsResult<Metadata>> {\n return ingestVectorDocuments({\n store: options.store,\n documents: [options.document],\n embeddingModel: options.embeddingModel,\n chunking: options.chunking,\n retries: options.retries,\n concurrency: options.concurrency,\n providerOptions: options.providerOptions,\n abortSignal: options.abortSignal,\n });\n}\n\nexport async function ingestVectorDocuments<Metadata extends VectorMetadata = VectorMetadata>(\n options: IngestVectorDocumentsOptions<Metadata>,\n): Promise<IngestVectorDocumentsResult<Metadata>> {\n for (const document of options.documents) {\n validateVectorMetadata(document.metadata, document.id);\n }\n const chunks = chunkTextDocuments({\n documents: options.documents,\n chunking: options.chunking,\n });\n const chunksByDocument = groupChunksByDocument(chunks);\n const embedded = await embedDocuments({\n model: options.embeddingModel,\n documents: [...options.documents],\n id: (document) => document.id,\n content: (document) => {\n const documentChunks = chunksByDocument.get(document.id);\n if (documentChunks === undefined) {\n throw new TypeError(`Text document ${document.id} has no chunks`);\n }\n return documentChunks.map((chunk) => chunk.text);\n },\n metadata: (document) => document.metadata,\n retries: options.retries,\n concurrency: options.concurrency,\n abortSignal: options.abortSignal,\n });\n await options.store.upsert({\n documents: embedded.documents,\n providerOptions: options.providerOptions,\n });\n return { documents: embedded.documents };\n}\n\nfunction validateVectorMetadata(metadata: VectorMetadata | undefined, documentId: string): void {\n if (metadata === undefined) {\n return;\n }\n if (typeof metadata !== \"object\" || metadata === null || Array.isArray(metadata)) {\n throw new TypeError(`Text document ${documentId} metadata must be an object`);\n }\n for (const [key, value] of Object.entries(metadata)) {\n validateVectorMetadataValue(value, `Text document ${documentId} metadata.${key}`);\n }\n}\n\nfunction validateVectorMetadataValue(value: VectorMetadataValue, label: string): void {\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\") {\n return;\n }\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw new TypeError(`${label} must be a finite vector metadata value`);\n }\n if (Number.isInteger(value) && !Number.isSafeInteger(value)) {\n throw new TypeError(`${label} must be a safe integer`);\n }\n}\n\nfunction groupChunksByDocument<Metadata>(\n chunks: readonly TextDocumentChunk<Metadata>[],\n): ReadonlyMap<string, readonly TextDocumentChunk<Metadata>[]> {\n const grouped = new Map<string, TextDocumentChunk<Metadata>[]>();\n for (const chunk of chunks) {\n const documentChunks = grouped.get(chunk.documentId);\n if (documentChunks === undefined) {\n grouped.set(chunk.documentId, [chunk]);\n } else {\n documentChunks.push(chunk);\n }\n }\n return grouped;\n}\n"],"mappings":";;;;;;;;AAwCA,eAAsB,iBACpB,SACgD;AAChD,SAAO,sBAAsB;AAAA,IAC3B,OAAO,QAAQ;AAAA,IACf,WAAW,CAAC,QAAQ,QAAQ;AAAA,IAC5B,gBAAgB,QAAQ;AAAA,IACxB,UAAU,QAAQ;AAAA,IAClB,SAAS,QAAQ;AAAA,IACjB,aAAa,QAAQ;AAAA,IACrB,iBAAiB,QAAQ;AAAA,IACzB,aAAa,QAAQ;AAAA,EACvB,CAAC;AACH;AAEA,eAAsB,sBACpB,SACgD;AAChD,aAAW,YAAY,QAAQ,WAAW;AACxC,2BAAuB,SAAS,UAAU,SAAS,EAAE;AAAA,EACvD;AACA,QAAM,SAAS,mBAAmB;AAAA,IAChC,WAAW,QAAQ;AAAA,IACnB,UAAU,QAAQ;AAAA,EACpB,CAAC;AACD,QAAM,mBAAmB,sBAAsB,MAAM;AACrD,QAAM,WAAW,MAAM,eAAe;AAAA,IACpC,OAAO,QAAQ;AAAA,IACf,WAAW,CAAC,GAAG,QAAQ,SAAS;AAAA,IAChC,IAAI,CAAC,aAAa,SAAS;AAAA,IAC3B,SAAS,CAAC,aAAa;AACrB,YAAM,iBAAiB,iBAAiB,IAAI,SAAS,EAAE;AACvD,UAAI,mBAAmB,QAAW;AAChC,cAAM,IAAI,UAAU,iBAAiB,SAAS,EAAE,gBAAgB;AAAA,MAClE;AACA,aAAO,eAAe,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,IACjD;AAAA,IACA,UAAU,CAAC,aAAa,SAAS;AAAA,IACjC,SAAS,QAAQ;AAAA,IACjB,aAAa,QAAQ;AAAA,IACrB,aAAa,QAAQ;AAAA,EACvB,CAAC;AACD,QAAM,QAAQ,MAAM,OAAO;AAAA,IACzB,WAAW,SAAS;AAAA,IACpB,iBAAiB,QAAQ;AAAA,EAC3B,CAAC;AACD,SAAO,EAAE,WAAW,SAAS,UAAU;AACzC;AAEA,SAAS,uBAAuB,UAAsC,YAA0B;AAC9F,MAAI,aAAa,QAAW;AAC1B;AAAA,EACF;AACA,MAAI,OAAO,aAAa,YAAY,aAAa,QAAQ,MAAM,QAAQ,QAAQ,GAAG;AAChF,UAAM,IAAI,UAAU,iBAAiB,UAAU,6BAA6B;AAAA,EAC9E;AACA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACnD,gCAA4B,OAAO,iBAAiB,UAAU,aAAa,GAAG,EAAE;AAAA,EAClF;AACF;AAEA,SAAS,4BAA4B,OAA4B,OAAqB;AACpF,MAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AAC7E;AAAA,EACF;AACA,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,GAAG;AACxD,UAAM,IAAI,UAAU,GAAG,KAAK,yCAAyC;AAAA,EACvE;AACA,MAAI,OAAO,UAAU,KAAK,KAAK,CAAC,OAAO,cAAc,KAAK,GAAG;AAC3D,UAAM,IAAI,UAAU,GAAG,KAAK,yBAAyB;AAAA,EACvD;AACF;AAEA,SAAS,sBACP,QAC6D;AAC7D,QAAM,UAAU,oBAAI,IAA2C;AAC/D,aAAW,SAAS,QAAQ;AAC1B,UAAM,iBAAiB,QAAQ,IAAI,MAAM,UAAU;AACnD,QAAI,mBAAmB,QAAW;AAChC,cAAQ,IAAI,MAAM,YAAY,CAAC,KAAK,CAAC;AAAA,IACvC,OAAO;AACL,qBAAe,KAAK,KAAK;AAAA,IAC3B;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
|