@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/team-runtime/run.ts"],"sourcesContent":["import { AgentRunCancelledError, AgentStreamClosedError } from \"../../agent/errors\";\nimport {\n assertAgentInteractionResponse,\n parseAgentInteractionResponse,\n} from \"../../agent/interactions\";\nimport { composeAgentLifecycle, lifecycleSnapshot } from \"../../agent/lifecycle\";\nimport { createResolvedAgent, getResolvedAgentOptions } from \"../../agent/resolved-agent\";\nimport type {\n AgentInput,\n AgentOutcome,\n AgentSteerInput,\n AgentSteerReceipt,\n AgentStreamEvent,\n} from \"../../agent/run-types\";\nimport { AgentTeamInteractionError, AgentTeamLimitError } from \"../../agent/team/errors\";\nimport type {\n AgentTeamEvent,\n AgentTeamLimits,\n AgentTeamMember,\n AgentTeamMessage,\n AgentTeamOutcome,\n AgentTeamRunOptions,\n} from \"../../agent/team/types\";\nimport { isStreamingCompletionModel } from \"../../completion/generate-completion\";\nimport { parseMessages, Usage, type CompletionResponse } from \"../../completion\";\nimport { throwIfAborted } from \"../abort\";\nimport { AgentRun } from \"../agent-runtime/agent-run\";\nimport { withInternalAgentRunOptions } from \"../agent-runtime/run-options\";\nimport { abortable, TeamChanges, TeamSlots } from \"./coordination\";\nimport {\n agentMessageInput,\n memberSummary,\n steeringMessages,\n type TeamInput,\n type TeamMember,\n} from \"./member\";\nimport { TEAM_INSTRUCTIONS, teamTools } from \"./tools\";\nimport type { TeamPolicy } from \"./policy\";\n\nexport class TeamRun<Output = unknown> {\n readonly id = globalThis.crypto.randomUUID();\n private readonly controller = new AbortController();\n private readonly changes = new TeamChanges();\n private readonly slots: TeamSlots;\n private readonly instances = new Map<string, TeamMember>();\n private readonly leader: TeamMember;\n private closed = false;\n private started = false;\n private turns = 0;\n private fatal: unknown;\n private removeAbortListener: (() => void) | undefined;\n\n constructor(\n leader: AgentTeamMember,\n private readonly policy: TeamPolicy,\n private readonly limits: Required<AgentTeamLimits>,\n private readonly options: AgentTeamRunOptions<unknown>,\n private readonly streaming: boolean,\n private readonly emit: (event: AgentTeamEvent<Output>) => void,\n ) {\n this.slots = new TeamSlots(limits.maxConcurrentAgents);\n this.leader = this.createMember(leader, leader.name ?? leader.id);\n const messages =\n options.messages === undefined\n ? steeringMessages({ prompt: options.prompt! })\n : parseMessages(options.messages);\n const last = messages.at(-1);\n if (last?.role !== \"user\")\n throw new TypeError(\"Agent team input must end with a user message.\");\n this.leader.history = messages.slice(0, -1);\n this.leader.inputs.push({\n id: globalThis.crypto.randomUUID(),\n messages: [last],\n submitted: false,\n });\n if (options.abortSignal !== undefined) {\n const signal = options.abortSignal;\n const abort = () => this.cancel(\"Agent team aborted.\");\n if (signal.aborted) abort();\n else {\n signal.addEventListener(\"abort\", abort, { once: true });\n this.removeAbortListener = () => signal.removeEventListener(\"abort\", abort);\n }\n }\n }\n\n async execute(): Promise<AgentTeamOutcome<Output>> {\n if (this.started) throw new Error(\"Agent team execution has already started.\");\n this.started = true;\n try {\n this.assertOpen();\n this.launch(this.leader);\n while (true) {\n this.assertOpen();\n const version = this.changes.version;\n if (this.leader.status === \"failed\" && this.leader.outcome?.type !== \"blocked\")\n throw this.leader.error;\n const outcome = this.leader.outcome;\n if (\n outcome !== undefined &&\n (outcome.type === \"blocked\" ||\n (this.leader.status === \"idle\" &&\n this.leader.task === undefined &&\n this.leader.inputs.length === 0 &&\n !this.childrenBusy()))\n ) {\n this.closed = true;\n this.stopMembers();\n await this.settleMembers();\n const result = {\n ...outcome,\n teamRunId: this.id,\n usage: [...this.instances.values()].reduce(\n (usage, member) => Usage.add(usage, member.usage),\n Usage.empty(),\n ),\n members: [...this.instances.values()]\n .filter((member) => member !== this.leader)\n .map(memberSummary),\n } as AgentTeamOutcome<Output>;\n this.emit(result);\n return result;\n }\n await this.changes.wait(version, this.controller.signal);\n }\n } catch (error) {\n this.closed = true;\n this.stopMembers();\n await this.settleMembers();\n throw this.fatal ?? error;\n } finally {\n this.removeAbortListener?.();\n }\n }\n\n steer(input: AgentSteerInput): AgentSteerReceipt {\n this.assertOpen();\n const entry: TeamInput = {\n id: globalThis.crypto.randomUUID(),\n messages: steeringMessages(input),\n submitted: false,\n };\n this.enqueue(this.leader, entry);\n return { id: entry.id, status: \"queued\" };\n }\n\n cancel(reason = \"Agent team cancelled.\"): void {\n if (this.closed || this.controller.signal.aborted) return;\n this.fail(new AgentRunCancelledError([], reason));\n }\n\n spawn(parent: TeamMember, definition: AgentTeamMember, prompt: string, name?: string) {\n this.assertOpen();\n throwIfAborted(parent.controller.signal);\n if (!this.policy.spawnTargets(parent).includes(definition))\n throw new Error(`Agent \"${parent.definition.id}\" cannot spawn \"${definition.id}\".`);\n if (parent.depth >= this.limits.maxDepth) throw new AgentTeamLimitError(\"maxDepth\");\n if (this.instances.size >= this.limits.maxAgentInstances)\n throw new AgentTeamLimitError(\"maxAgentInstances\");\n const member = this.createMember(definition, name ?? definition.name ?? definition.id, parent);\n member.inputs.push({\n id: globalThis.crypto.randomUUID(),\n messages: [{ role: \"user\", content: prompt }],\n submitted: false,\n });\n this.memberEvent(member, \"agent_queued\");\n this.launch(member);\n return { instanceId: member.instanceId, status: \"queued\" as const };\n }\n\n send(sender: TeamMember, input: { to: string; content: string; replyTo?: string | undefined }) {\n this.assertOpen();\n throwIfAborted(sender.controller.signal);\n const recipient = this.recipient(sender, input.to);\n if (recipient.status === \"failed\" || recipient.status === \"cancelled\") {\n throw new Error(`Agent instance \"${recipient.instanceId}\" is ${recipient.status}.`);\n }\n return this.queueMessage(sender, recipient, input);\n }\n\n private queueMessage(\n sender: TeamMember,\n recipient: TeamMember,\n input: { content: string; replyTo?: string | undefined },\n notificationType: \"message\" | \"outcome\" = \"message\",\n ) {\n const message: AgentTeamMessage = {\n id: globalThis.crypto.randomUUID(),\n teamRunId: this.id,\n fromInstanceId: sender.instanceId,\n toInstanceId: recipient.instanceId,\n content: input.content,\n createdAt: new Date().toISOString(),\n ...(input.replyTo === undefined ? {} : { replyTo: input.replyTo }),\n };\n this.enqueue(recipient, agentMessageInput(message), notificationType);\n return { messageId: message.id, status: \"queued\" as const };\n }\n\n visibleMembers(caller: TeamMember) {\n return [...this.instances.values()]\n .filter((member) => this.policy.canAccess(caller, member))\n .map((member) => ({\n instanceId: member.instanceId,\n agentId: member.agent.id,\n name: member.name,\n status: member.status,\n depth: member.depth,\n ...(member.parentInstanceId === undefined\n ? {}\n : { parentInstanceId: member.parentInstanceId }),\n }));\n }\n\n cancelMember(caller: TeamMember, instanceId: string, reason = \"Cancelled by parent.\") {\n this.assertOpen();\n throwIfAborted(caller.controller.signal);\n const member = this.recipient(caller, instanceId);\n if (member.parentInstanceId !== caller.instanceId)\n throw new Error(\"Only a parent can cancel its child.\");\n if (member.status === \"cancelled\") return { instanceId, status: \"cancelled\" as const };\n this.stopMember(member, reason);\n this.stopDescendants(member, reason);\n if (member.task === undefined) this.reportOutcome(member);\n return { instanceId, status: \"cancelled\" as const };\n }\n\n async wait(member: TeamMember, instanceId: string | undefined, timeoutMs: number) {\n this.assertOpen();\n const target = instanceId === undefined ? undefined : this.recipient(member, instanceId);\n const deadline = Date.now() + timeoutMs;\n return this.yieldSlot(member, \"waiting\", async () => {\n while (true) {\n const version = this.changes.version;\n const index = member.notifications.findIndex(\n (notification) => target === undefined || notification.from === target.instanceId,\n );\n if (index !== -1) {\n const notification = member.notifications.splice(index, 1)[0]!;\n return {\n reason: notification.type,\n instanceId: notification.from,\n messageId: notification.id,\n };\n }\n if (target !== undefined && [\"idle\", \"failed\", \"cancelled\"].includes(target.status)) {\n return { reason: \"outcome\", instanceId: target.instanceId, status: target.status };\n }\n const remaining = deadline - Date.now();\n if (remaining <= 0) return { reason: \"timeout\" };\n await this.changes.wait(version, member.controller.signal, remaining);\n }\n });\n }\n\n private createMember(agent: AgentTeamMember, name: string, parent?: TeamMember): TeamMember {\n const parentInstanceId = parent?.instanceId;\n const member: TeamMember = {\n instanceId: globalThis.crypto.randomUUID(),\n agent,\n definition: agent,\n depth: parent === undefined ? 0 : parent.depth + 1,\n name,\n ...(parentInstanceId === undefined ? {} : { parentInstanceId }),\n status: \"queued\",\n history: [],\n inputs: [],\n receipts: new Map(),\n controller: new AbortController(),\n usage: Usage.empty(),\n notifications: [],\n };\n const resolved = getResolvedAgentOptions(member.agent);\n member.agent = createResolvedAgent({\n ...resolved,\n instructions: [\n resolved.instructions,\n TEAM_INSTRUCTIONS,\n `Your instance ID is ${member.instanceId}. ${parentInstanceId === undefined ? \"You are the coordinator. Spawn tools create independent members; their outcomes are delivered automatically.\" : `Your parent instance is ${parentInstanceId}.`}`,\n ]\n .filter(Boolean)\n .join(\"\\n\\n\"),\n tools: [\n ...(resolved.tools ?? []),\n ...teamTools(this, member, this.policy.spawnTargets(member)),\n ],\n });\n this.instances.set(member.instanceId, member);\n return member;\n }\n\n private recipient(sender: TeamMember, to: string): TeamMember {\n const id = to === \"parent\" ? sender.parentInstanceId : to;\n const recipient = id === undefined ? undefined : this.instances.get(id);\n if (\n recipient === undefined ||\n recipient === sender ||\n !this.policy.canAccess(sender, recipient)\n ) {\n throw new Error(\n `Agent instance \"${to}\" is not an accessible parent or child, or enabled sibling.`,\n );\n }\n return recipient;\n }\n\n private enqueue(\n member: TeamMember,\n input: TeamInput,\n notificationType: \"message\" | \"outcome\" = \"message\",\n ): void {\n if (member.inputs.length >= 128)\n throw new AgentTeamLimitError(\"pending messages per instance (128)\");\n member.inputs.push(input);\n if (input.message !== undefined) {\n this.emit({ type: \"message_queued\", ...this.identity(member), message: input.message });\n member.notifications.push({\n type: notificationType,\n from: input.message.fromInstanceId,\n id: input.id,\n });\n }\n this.submitInputs(member);\n if (this.started && member.task === undefined) this.launch(member);\n this.changes.notify();\n }\n\n private submitInputs(member: TeamMember): void {\n if (member.activeRun === undefined) return;\n for (const input of member.inputs) {\n if (input.submitted) continue;\n try {\n const receipt = member.activeRun.steer({ messages: input.messages });\n member.receipts.set(receipt.id, input);\n input.submitted = true;\n } catch (error) {\n // Closing runs reject steering; leave this input pending for the next assignment.\n if (error instanceof AgentStreamClosedError) return;\n throw error;\n }\n }\n }\n\n private delivered(member: TeamMember, input: TeamInput): void {\n const index = member.inputs.indexOf(input);\n if (index !== -1) member.inputs.splice(index, 1);\n member.notifications = member.notifications.filter(\n (notification) => notification.id !== input.id,\n );\n if (input.message !== undefined)\n this.emit({ type: \"message_delivered\", ...this.identity(member), message: input.message });\n }\n\n private launch(member: TeamMember): void {\n if (member.task !== undefined || this.closed || member.controller.signal.aborted) return;\n member.status = \"queued\";\n member.task = Promise.resolve()\n .then(() => this.runMember(member))\n .catch((error: unknown) => {\n member.error = error;\n member.inputs.length = 0;\n if (member.controller.signal.aborted) member.status = \"cancelled\";\n else {\n member.status = \"failed\";\n this.memberEvent(member, \"agent_failed\");\n }\n this.stopDescendants(member, \"Parent failed or was cancelled.\");\n if (!this.closed && !this.controller.signal.aborted && member !== this.leader) {\n try {\n this.reportOutcome(member);\n } catch (reportError) {\n this.fail(reportError);\n }\n }\n })\n .finally(() => {\n member.release?.();\n member.release = undefined;\n member.activeRun = undefined;\n member.task = undefined;\n if (member.status === \"idle\" && member.inputs.length > 0) this.launch(member);\n this.changes.notify();\n });\n this.changes.notify();\n }\n\n private async runMember(member: TeamMember): Promise<void> {\n const signal = member.controller.signal;\n member.release = await this.slots.acquire(signal);\n let nextInput: AgentInput | undefined;\n let firstInputs: TeamInput[] = [];\n while (true) {\n throwIfAborted(signal);\n member.status = \"running\";\n member.runId = globalThis.crypto.randomUUID();\n if (nextInput === undefined) {\n firstInputs = member.inputs.filter((input) => !input.submitted);\n const incoming = firstInputs.flatMap((input) => input.messages);\n if (incoming.length === 0) throw new Error(\"Agent team member has no input.\");\n nextInput = { messages: [...member.history, ...incoming] };\n member.history.push(...incoming.slice(0, -1));\n for (const input of firstInputs) input.submitted = true;\n }\n const streaming =\n this.streaming &&\n member.agent.model.capabilities.streaming &&\n isStreamingCompletionModel(member.agent.model);\n const baseSettings =\n member === this.leader\n ? {\n maxTurns: this.options.maxTurns,\n retries: this.options.retries,\n lifecycle: this.options.lifecycle,\n guardrails: this.options.guardrails,\n middlewares: this.options.middlewares,\n trace: this.options.trace,\n controls: this.options.controls,\n }\n : {};\n const run = AgentRun.fromAgent(\n member.agent,\n withInternalAgentRunOptions(\n {\n ...baseSettings,\n ...nextInput,\n abortSignal: signal,\n // Collaboration tools mutate one inbox/permit at a time; provider tools may still run independently across agents.\n toolConcurrency: 1,\n lifecycle: composeAgentLifecycle(baseSettings.lifecycle, {\n onStepFinish: (event) => {\n if (!streaming)\n this.agentEvent(member, {\n type: \"turn_end\",\n turn: event.step,\n response: lifecycleSnapshot(event.response) as CompletionResponse,\n });\n },\n onError: (event) => {\n member.usage = Usage.add(member.usage, event.usage);\n },\n }),\n },\n {\n runId: member.runId,\n hook: {\n onCompletionCall: () => {\n this.assertOpen();\n if (this.turns >= this.limits.maxTotalTurns) {\n const error = new AgentTeamLimitError(\"maxTotalTurns\");\n this.fail(error);\n throw error;\n }\n this.turns += 1;\n for (const input of firstInputs) this.delivered(member, input);\n firstInputs = [];\n },\n },\n beforeFinish: () => this.waitForChildren(member),\n onSteeringApplied: (id) => {\n const input = member.receipts.get(id);\n if (input !== undefined) {\n member.receipts.delete(id);\n this.delivered(member, input);\n }\n },\n },\n ),\n );\n member.activeRun = run;\n this.submitInputs(member);\n this.memberEvent(member, \"agent_started\");\n // Caller-owned models/tools may ignore abort. Close the team promptly, and discard late events.\n const outcome = await abortable(this.consumeRun(member, run, streaming), signal);\n member.activeRun = undefined;\n member.usage = Usage.add(member.usage, outcome.usage);\n member.history.push(...outcome.messages);\n if (outcome.type === \"interaction\") {\n const resolver = this.options.resolveInteraction;\n this.emit({\n type: \"interaction\",\n ...this.identity(member),\n interaction: lifecycleSnapshot(outcome.interaction),\n });\n if (resolver === undefined) {\n const error = new AgentTeamInteractionError(member.instanceId);\n this.fail(error);\n throw error;\n }\n try {\n const response = await this.yieldSlot(member, \"awaiting_interaction\", () =>\n abortable(\n Promise.resolve().then(() =>\n resolver({\n teamRunId: this.id,\n instanceId: member.instanceId,\n runId: outcome.runId,\n interaction: lifecycleSnapshot(outcome.interaction),\n abortSignal: signal,\n }),\n ),\n signal,\n ),\n );\n const parsed = parseAgentInteractionResponse(response);\n assertAgentInteractionResponse(outcome.interaction, parsed);\n nextInput = { continuation: outcome.continuation, response: parsed };\n } catch (cause) {\n if (signal.aborted) throw cause;\n const error = new AgentTeamInteractionError(member.instanceId, { cause });\n this.fail(error);\n throw error;\n }\n continue;\n }\n member.outcome = outcome;\n member.status = outcome.type === \"blocked\" ? \"failed\" : \"idle\";\n if (outcome.type === \"blocked\") {\n member.inputs.length = 0;\n this.stopDescendants(member, \"Parent was blocked.\");\n }\n this.memberEvent(member, outcome.type === \"blocked\" ? \"agent_failed\" : \"agent_idle\");\n if (member !== this.leader) this.reportOutcome(member);\n return;\n }\n }\n\n private async consumeRun(\n member: TeamMember,\n run: AgentRun<unknown>,\n streaming: boolean,\n ): Promise<AgentOutcome<unknown>> {\n if (!streaming) {\n const outcome = await run.generate();\n if (outcome.type === \"response\")\n this.agentEvent(member, { type: \"text_delta\", turn: 0, delta: outcome.text });\n this.agentEvent(member, outcome);\n return outcome;\n }\n for await (const event of run.events()) {\n this.agentEvent(member, event);\n if (event.type === \"error\") throw event.error;\n if (event.type === \"response\" || event.type === \"blocked\" || event.type === \"interaction\")\n return event;\n }\n throw new Error(\"Agent team member stream ended without an outcome.\");\n }\n\n private reportOutcome(member: TeamMember): void {\n const parent = this.instances.get(member.parentInstanceId!);\n if (parent === undefined || parent.status === \"failed\" || parent.status === \"cancelled\") return;\n const content = JSON.stringify({\n type: \"agent-outcome\",\n instanceId: member.instanceId,\n status: member.status,\n ...(member.outcome?.type === \"response\" ? { output: member.outcome.output } : {}),\n ...(member.outcome?.type === \"blocked\" ? { reason: member.outcome.reason } : {}),\n ...(member.error === undefined\n ? {}\n : { error: member.error instanceof Error ? member.error.message : String(member.error) }),\n });\n this.queueMessage(member, parent, { content }, \"outcome\");\n }\n\n private async waitForChildren(member: TeamMember): Promise<void> {\n if (!this.childrenBusy(member) || member.inputs.length > 0) return;\n await this.yieldSlot(member, \"waiting\", async () => {\n while (this.childrenBusy(member) && member.inputs.length === 0) {\n const version = this.changes.version;\n await this.changes.wait(version, member.controller.signal);\n }\n });\n }\n\n // Without a parent, final team settlement checks all descendants, including revived assignments.\n private childrenBusy(parent?: TeamMember): boolean {\n return [...this.instances.values()].some(\n (member) =>\n member !== this.leader &&\n (parent === undefined || member.parentInstanceId === parent.instanceId) &&\n ([\"queued\", \"running\", \"waiting\", \"awaiting_interaction\"].includes(member.status) ||\n member.inputs.length > 0),\n );\n }\n\n private async yieldSlot<T>(\n member: TeamMember,\n status: \"waiting\" | \"awaiting_interaction\",\n work: () => Promise<T>,\n ): Promise<T> {\n member.release?.();\n member.release = undefined;\n member.status = status;\n this.memberEvent(member, \"agent_waiting\");\n this.changes.notify();\n try {\n return await work();\n } finally {\n if (!member.controller.signal.aborted && !this.closed) {\n member.release = await this.slots.acquire(member.controller.signal);\n member.status = \"running\";\n this.changes.notify();\n }\n }\n }\n\n private identity(member: TeamMember) {\n return {\n teamRunId: this.id,\n instanceId: member.instanceId,\n ...(member.runId === undefined ? {} : { runId: member.runId }),\n };\n }\n\n private memberEvent(\n member: TeamMember,\n type:\n | \"agent_queued\"\n | \"agent_started\"\n | \"agent_waiting\"\n | \"agent_idle\"\n | \"agent_failed\"\n | \"agent_cancelled\",\n ) {\n this.emit({ type, ...this.identity(member), member: memberSummary(member) });\n }\n\n private agentEvent(member: TeamMember, event: AgentStreamEvent<unknown>) {\n if (this.closed || member.controller.signal.aborted) return;\n this.emit({\n type: \"agent_event\",\n ...this.identity(member),\n coordinator: member === this.leader,\n event: lifecycleSnapshot(event),\n });\n }\n\n private assertOpen(): void {\n if (this.fatal !== undefined) throw this.fatal;\n if (this.closed) throw new AgentStreamClosedError();\n throwIfAborted(this.controller.signal);\n }\n\n private fail(error: unknown): void {\n this.fatal ??= error;\n this.controller.abort(error);\n this.stopMembers();\n this.changes.notify();\n }\n\n private stopMember(member: TeamMember, reason: string): void {\n if (member.status === \"cancelled\") return;\n member.status = \"cancelled\";\n member.inputs.length = 0;\n member.controller.abort(reason);\n member.activeRun?.cancel(reason);\n this.memberEvent(member, \"agent_cancelled\");\n this.changes.notify();\n }\n\n private stopMembers(): void {\n for (const member of this.instances.values()) {\n if ([\"queued\", \"running\", \"waiting\", \"awaiting_interaction\"].includes(member.status))\n this.stopMember(member, \"Agent team closed.\");\n }\n }\n\n private stopDescendants(parent: TeamMember, reason: string): void {\n // Instances are inserted after their parents; this also reaches idle descendants without recursion.\n // The subtree root is already terminal, and each descendant's parent is stopped first.\n // Only the subtree root reports cancellation to a surviving parent; descendant reports are suppressed.\n const stopped = new Set([parent.instanceId]);\n for (const member of this.instances.values()) {\n if (member.parentInstanceId !== undefined && stopped.has(member.parentInstanceId)) {\n stopped.add(member.instanceId);\n this.stopMember(member, reason);\n }\n }\n }\n\n private async settleMembers(): Promise<void> {\n await Promise.allSettled(\n [...this.instances.values()].flatMap((member) =>\n member.task === undefined ? [] : [member.task],\n ),\n );\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
|
-
CompletionCapabilityError,
|
|
3
|
-
Usage,
|
|
4
2
|
generateCompletion
|
|
5
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BDKFFFVX.js";
|
|
4
|
+
import {
|
|
5
|
+
CompletionCapabilityError,
|
|
6
|
+
Usage
|
|
7
|
+
} from "./chunk-IDNL6IH4.js";
|
|
6
8
|
import {
|
|
7
9
|
toProviderJsonSchema
|
|
8
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-SQAAVYJG.js";
|
|
9
11
|
import {
|
|
10
|
-
isAbortError,
|
|
11
12
|
resolveRetryOptions,
|
|
12
13
|
retryDelayMs,
|
|
13
14
|
retryOptionsForFailure,
|
|
14
15
|
waitForRetry
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-POXHJF3H.js";
|
|
17
|
+
import {
|
|
18
|
+
isAbortError
|
|
19
|
+
} from "./chunk-USRKPEQN.js";
|
|
16
20
|
|
|
17
21
|
// src/extractor/extractor.ts
|
|
18
22
|
import { z } from "zod";
|
|
@@ -124,4 +128,4 @@ export {
|
|
|
124
128
|
ExtractionError,
|
|
125
129
|
extract
|
|
126
130
|
};
|
|
127
|
-
//# sourceMappingURL=chunk-
|
|
131
|
+
//# sourceMappingURL=chunk-UOGM62JL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/extractor/extractor.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n type AssistantContentPart,\n CompletionCapabilityError,\n type CompletionModel,\n type CompletionResult,\n generateCompletion,\n type JsonObject,\n type ToolDefinition,\n Usage,\n} from \"../completion/index\";\nimport { isAbortError } from \"../internal/abort\";\nimport {\n type ResolvedRetryOptions,\n type RetrySetting,\n resolveRetryOptions,\n retryDelayMs,\n retryOptionsForFailure,\n waitForRetry,\n} from \"../retry\";\nimport { toProviderJsonSchema, type ZodSchema } from \"../schema/zod-schema\";\n\nconst SUBMIT_TOOL_NAME = \"submit\";\n\nconst DEFAULT_EXTRACTOR_INSTRUCTIONS =\n \"You are an AI assistant whose purpose is to extract structured data from the provided text.\\n\" +\n \"You have access to a `submit` function that defines the structure of the data to extract.\\n\" +\n \"Always call the `submit` function with the structured data. Use default or null values when information is missing.\";\n\ntype RawResponseOf<Model> =\n Model extends CompletionModel<infer RawResponse> ? RawResponse : unknown;\n\nexport type ExtractOptions<Output, Model extends CompletionModel = CompletionModel> = {\n model: Model;\n text: string;\n outputSchema: ZodSchema<Output>;\n instructions?: string | undefined;\n retries?: RetrySetting | undefined;\n temperature?: number | undefined;\n maxTokens?: number | undefined;\n providerOptions?: JsonObject | undefined;\n abortSignal?: AbortSignal | undefined;\n};\n\nexport type ExtractionResult<Output, RawResponse = unknown> = Omit<\n CompletionResult<string, RawResponse>,\n \"output\"\n> & {\n output: Output;\n};\n\nexport class ExtractionError extends Error {\n readonly attempts: number;\n readonly usage: Usage;\n\n constructor(\n message: string,\n options: {\n cause?: unknown;\n attempts: number;\n usage: Usage;\n },\n ) {\n super(message, options.cause === undefined ? undefined : { cause: options.cause });\n this.name = \"ExtractionError\";\n this.attempts = options.attempts;\n this.usage = options.usage;\n }\n}\n\n/** Extract structured data from text using a required, schema-backed submit tool. */\nexport async function extract<Output, Model extends CompletionModel>(\n options: ExtractOptions<Output, Model>,\n): Promise<ExtractionResult<Output, RawResponseOf<Model>>> {\n if (!(options.outputSchema instanceof z.ZodType)) {\n throw new TypeError(\"extract outputSchema must be a Zod schema.\");\n }\n if (typeof options.text !== \"string\") {\n throw new TypeError(\"extract text must be a string.\");\n }\n\n const retries = resolveExtractionRetries(options.retries);\n const maxAttempts = retries?.maxAttempts ?? 1;\n const submitTool = createSubmitTool(options.outputSchema);\n const instructions = extractionInstructions(options.instructions);\n let usage = Usage.empty();\n let lastError: unknown;\n\n for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n try {\n const result = await generateCompletion({\n model: options.model,\n prompt: options.text,\n instructions,\n tools: [globalThis.structuredClone(submitTool)],\n temperature: options.temperature,\n maxTokens: options.maxTokens,\n providerOptions: options.providerOptions,\n toolChoice: \"required\",\n retries: false,\n abortSignal: options.abortSignal,\n });\n usage = Usage.add(usage, result.usage);\n return {\n ...result,\n output: extractSubmittedData(result.content, options.outputSchema),\n usage,\n };\n } catch (error) {\n if (error instanceof CompletionCapabilityError || isAbortError(error)) {\n throw error;\n }\n lastError = error;\n const retryOptions = retryOptionsForFailure(retries, {\n error,\n attempt,\n streaming: false,\n });\n if (retryOptions === undefined) {\n throw new ExtractionError(\"No data extracted\", {\n cause: lastError,\n attempts: attempt,\n usage,\n });\n }\n await waitForRetry(retryDelayMs(retryOptions, attempt), options.abortSignal);\n }\n }\n\n throw new ExtractionError(\"No data extracted\", {\n cause: lastError,\n attempts: maxAttempts,\n usage,\n });\n}\n\nfunction extractionInstructions(instructions: string | undefined): string {\n return instructions === undefined || instructions.length === 0\n ? DEFAULT_EXTRACTOR_INSTRUCTIONS\n : `${DEFAULT_EXTRACTOR_INSTRUCTIONS}\\n\\n${instructions}`;\n}\n\nfunction createSubmitTool<Output>(outputSchema: ZodSchema<Output>): ToolDefinition {\n return {\n name: SUBMIT_TOOL_NAME,\n description: \"Submit the structured data extracted from the provided text.\",\n parameters: toProviderJsonSchema(outputSchema, { io: \"input\" }),\n };\n}\n\nfunction resolveExtractionRetries(\n options: RetrySetting | undefined,\n): ResolvedRetryOptions | undefined {\n if (options === undefined || options === false) {\n return undefined;\n }\n return resolveRetryOptions({\n ...options,\n shouldRetry: options.shouldRetry ?? (() => true),\n });\n}\n\nfunction extractSubmittedData<Output>(\n content: readonly AssistantContentPart[],\n schema: ZodSchema<Output>,\n): Output {\n const submitted = content\n .filter((item) => item.type === \"tool-call\")\n .filter((toolCall) => toolCall.toolName === SUBMIT_TOOL_NAME)\n .at(-1);\n\n if (submitted === undefined) {\n throw new Error(\"The model did not call the submit tool\");\n }\n\n try {\n return schema.parse(submitted.input);\n } catch (error) {\n throw new Error(\"Submitted data failed output schema validation\", { cause: error });\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/extractor/extractor.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n type AssistantContentPart,\n CompletionCapabilityError,\n type CompletionModel,\n type CompletionResult,\n generateCompletion,\n type JsonObject,\n type ToolDefinition,\n Usage,\n} from \"../completion/index\";\nimport { isAbortError } from \"../internal/abort\";\nimport {\n type ResolvedRetryOptions,\n type RetrySetting,\n resolveRetryOptions,\n retryDelayMs,\n retryOptionsForFailure,\n waitForRetry,\n} from \"../retry\";\nimport { toProviderJsonSchema, type ZodSchema } from \"../schema/zod-schema\";\n\nconst SUBMIT_TOOL_NAME = \"submit\";\n\nconst DEFAULT_EXTRACTOR_INSTRUCTIONS =\n \"You are an AI assistant whose purpose is to extract structured data from the provided text.\\n\" +\n \"You have access to a `submit` function that defines the structure of the data to extract.\\n\" +\n \"Always call the `submit` function with the structured data. Use default or null values when information is missing.\";\n\ntype RawResponseOf<Model> =\n Model extends CompletionModel<infer RawResponse> ? RawResponse : unknown;\n\nexport type ExtractOptions<Output, Model extends CompletionModel = CompletionModel> = {\n model: Model;\n text: string;\n outputSchema: ZodSchema<Output>;\n instructions?: string | undefined;\n retries?: RetrySetting | undefined;\n temperature?: number | undefined;\n maxTokens?: number | undefined;\n providerOptions?: JsonObject | undefined;\n abortSignal?: AbortSignal | undefined;\n};\n\nexport type ExtractionResult<Output, RawResponse = unknown> = Omit<\n CompletionResult<string, RawResponse>,\n \"output\"\n> & {\n output: Output;\n};\n\nexport class ExtractionError extends Error {\n readonly attempts: number;\n readonly usage: Usage;\n\n constructor(\n message: string,\n options: {\n cause?: unknown;\n attempts: number;\n usage: Usage;\n },\n ) {\n super(message, options.cause === undefined ? undefined : { cause: options.cause });\n this.name = \"ExtractionError\";\n this.attempts = options.attempts;\n this.usage = options.usage;\n }\n}\n\n/** Extract structured data from text using a required, schema-backed submit tool. */\nexport async function extract<Output, Model extends CompletionModel>(\n options: ExtractOptions<Output, Model>,\n): Promise<ExtractionResult<Output, RawResponseOf<Model>>> {\n if (!(options.outputSchema instanceof z.ZodType)) {\n throw new TypeError(\"extract outputSchema must be a Zod schema.\");\n }\n if (typeof options.text !== \"string\") {\n throw new TypeError(\"extract text must be a string.\");\n }\n\n const retries = resolveExtractionRetries(options.retries);\n const maxAttempts = retries?.maxAttempts ?? 1;\n const submitTool = createSubmitTool(options.outputSchema);\n const instructions = extractionInstructions(options.instructions);\n let usage = Usage.empty();\n let lastError: unknown;\n\n for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n try {\n const result = await generateCompletion({\n model: options.model,\n prompt: options.text,\n instructions,\n tools: [globalThis.structuredClone(submitTool)],\n temperature: options.temperature,\n maxTokens: options.maxTokens,\n providerOptions: options.providerOptions,\n toolChoice: \"required\",\n retries: false,\n abortSignal: options.abortSignal,\n });\n usage = Usage.add(usage, result.usage);\n return {\n ...result,\n output: extractSubmittedData(result.content, options.outputSchema),\n usage,\n };\n } catch (error) {\n if (error instanceof CompletionCapabilityError || isAbortError(error)) {\n throw error;\n }\n lastError = error;\n const retryOptions = retryOptionsForFailure(retries, {\n error,\n attempt,\n streaming: false,\n });\n if (retryOptions === undefined) {\n throw new ExtractionError(\"No data extracted\", {\n cause: lastError,\n attempts: attempt,\n usage,\n });\n }\n await waitForRetry(retryDelayMs(retryOptions, attempt), options.abortSignal);\n }\n }\n\n throw new ExtractionError(\"No data extracted\", {\n cause: lastError,\n attempts: maxAttempts,\n usage,\n });\n}\n\nfunction extractionInstructions(instructions: string | undefined): string {\n return instructions === undefined || instructions.length === 0\n ? DEFAULT_EXTRACTOR_INSTRUCTIONS\n : `${DEFAULT_EXTRACTOR_INSTRUCTIONS}\\n\\n${instructions}`;\n}\n\nfunction createSubmitTool<Output>(outputSchema: ZodSchema<Output>): ToolDefinition {\n return {\n name: SUBMIT_TOOL_NAME,\n description: \"Submit the structured data extracted from the provided text.\",\n parameters: toProviderJsonSchema(outputSchema, { io: \"input\" }),\n };\n}\n\nfunction resolveExtractionRetries(\n options: RetrySetting | undefined,\n): ResolvedRetryOptions | undefined {\n if (options === undefined || options === false) {\n return undefined;\n }\n return resolveRetryOptions({\n ...options,\n shouldRetry: options.shouldRetry ?? (() => true),\n });\n}\n\nfunction extractSubmittedData<Output>(\n content: readonly AssistantContentPart[],\n schema: ZodSchema<Output>,\n): Output {\n const submitted = content\n .filter((item) => item.type === \"tool-call\")\n .filter((toolCall) => toolCall.toolName === SUBMIT_TOOL_NAME)\n .at(-1);\n\n if (submitted === undefined) {\n throw new Error(\"The model did not call the submit tool\");\n }\n\n try {\n return schema.parse(submitted.input);\n } catch (error) {\n throw new Error(\"Submitted data failed output schema validation\", { cause: error });\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// src/internal/abort.ts
|
|
2
|
+
function throwIfAborted(signal) {
|
|
3
|
+
if (signal?.aborted === true) {
|
|
4
|
+
throw abortError(signal.reason);
|
|
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
|
+
}
|
|
48
|
+
|
|
49
|
+
export {
|
|
50
|
+
throwIfAborted,
|
|
51
|
+
abortError,
|
|
52
|
+
isAbortError,
|
|
53
|
+
waitForAbortableDelay
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=chunk-USRKPEQN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/abort.ts"],"sourcesContent":["export function throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted === true) {\n throw abortError(signal.reason);\n }\n}\n\nexport function abortError(reason?: unknown): Error {\n if (isAbortError(reason)) {\n return reason;\n }\n\n const error = new Error(\n \"The operation was aborted.\",\n reason === undefined ? undefined : { cause: reason },\n );\n error.name = \"AbortError\";\n return error;\n}\n\nexport function isAbortError(error: unknown): error is Error {\n const seen = new Set<object>();\n let current = error;\n while (typeof current === \"object\" && current !== null && !seen.has(current)) {\n seen.add(current);\n if (\"name\" in current && current.name === \"AbortError\") {\n return true;\n }\n current = \"cause\" in current ? current.cause : undefined;\n }\n return false;\n}\n\nexport function waitForAbortableDelay(\n delayMs: number,\n signal: AbortSignal | undefined,\n): Promise<void> {\n throwIfAborted(signal);\n if (delayMs === 0) return Promise.resolve();\n if (signal === undefined) {\n return new Promise<void>((resolve) => setTimeout(resolve, delayMs));\n }\n\n return new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, delayMs);\n const onAbort = () => {\n clearTimeout(timer);\n reject(abortError(signal.reason));\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n"],"mappings":";AAAO,SAAS,eAAe,QAAuC;AACpE,MAAI,QAAQ,YAAY,MAAM;AAC5B,UAAM,WAAW,OAAO,MAAM;AAAA,EAChC;AACF;AAEO,SAAS,WAAW,QAAyB;AAClD,MAAI,aAAa,MAAM,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB;AAAA,IACA,WAAW,SAAY,SAAY,EAAE,OAAO,OAAO;AAAA,EACrD;AACA,QAAM,OAAO;AACb,SAAO;AACT;AAEO,SAAS,aAAa,OAAgC;AAC3D,QAAM,OAAO,oBAAI,IAAY;AAC7B,MAAI,UAAU;AACd,SAAO,OAAO,YAAY,YAAY,YAAY,QAAQ,CAAC,KAAK,IAAI,OAAO,GAAG;AAC5E,SAAK,IAAI,OAAO;AAChB,QAAI,UAAU,WAAW,QAAQ,SAAS,cAAc;AACtD,aAAO;AAAA,IACT;AACA,cAAU,WAAW,UAAU,QAAQ,QAAQ;AAAA,EACjD;AACA,SAAO;AACT;AAEO,SAAS,sBACd,SACA,QACe;AACf,iBAAe,MAAM;AACrB,MAAI,YAAY,EAAG,QAAO,QAAQ,QAAQ;AAC1C,MAAI,WAAW,QAAW;AACxB,WAAO,IAAI,QAAc,CAAC,YAAY,WAAW,SAAS,OAAO,CAAC;AAAA,EACpE;AAEA,SAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC5C,UAAM,QAAQ,WAAW,MAAM;AAC7B,aAAO,oBAAoB,SAAS,OAAO;AAC3C,cAAQ;AAAA,IACV,GAAG,OAAO;AACV,UAAM,UAAU,MAAM;AACpB,mBAAa,KAAK;AAClB,aAAO,WAAW,OAAO,MAAM,CAAC;AAAA,IAClC;AACA,WAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,EAC1D,CAAC;AACH;","names":[]}
|