@anvia/core 1.1.1 → 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 +8 -5
- package/dist/chunk-2QZJTG2E.js.map +0 -1
- package/dist/chunk-3RWESPUG.js.map +0 -1
- package/dist/chunk-4UQALF5Y.js.map +0 -1
- package/dist/chunk-AZB6N7P4.js +0 -320
- package/dist/chunk-AZB6N7P4.js.map +0 -1
- package/dist/chunk-JLJMVRRE.js.map +0 -1
- package/dist/chunk-K5L7R7XM.js.map +0 -1
- package/dist/chunk-OI3LSMJG.js +0 -1545
- package/dist/chunk-OI3LSMJG.js.map +0 -1
- package/dist/chunk-QGX73TSQ.js.map +0 -1
- package/dist/chunk-XC3LVC4K.js +0 -753
- package/dist/chunk-XC3LVC4K.js.map +0 -1
- package/dist/chunk-XEVOC433.js.map +0 -1
- package/dist/chunk-XSV5C4R5.js +0 -400
- package/dist/chunk-XSV5C4R5.js.map +0 -1
- package/dist/chunk-XU54PLSD.js +0 -4786
- package/dist/chunk-XU54PLSD.js.map +0 -1
- package/dist/middleware-mY_lpjDp.d.ts +0 -59
- package/dist/type-utils-CtHVDRn_.d.ts +0 -6
- /package/dist/{chunk-YK4WAAS4.js.map → chunk-2NLINXRF.js.map} +0 -0
- /package/dist/{chunk-SPD4XVR7.js.map → chunk-2XSMGVBG.js.map} +0 -0
- /package/dist/{chunk-3XQGVDU5.js.map → chunk-4C7AXYOM.js.map} +0 -0
- /package/dist/{chunk-IZNOP6JG.js.map → chunk-4FIVU53H.js.map} +0 -0
- /package/dist/{chunk-7JLAIN6E.js.map → chunk-4ONUNWGC.js.map} +0 -0
- /package/dist/{chunk-KSKST3KP.js.map → chunk-H3H74RWJ.js.map} +0 -0
- /package/dist/{chunk-OJBFDBLG.js.map → chunk-LBYJPMHC.js.map} +0 -0
- /package/dist/{chunk-J6LVLV6P.js.map → chunk-PLDJCCVL.js.map} +0 -0
- /package/dist/{chunk-AHLKV6KP.js.map → chunk-WN6AVBO4.js.map} +0 -0
- /package/dist/{chunk-Q5BCNYED.js.map → chunk-XJRNBTIV.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/agent-runtime/memory.ts"],"sourcesContent":["import type { Agent } from \"../../agent/agent\";\nimport type { AgentMemory } from \"../../agent/types\";\nimport { type Message as MessageType, Usage } from \"../../completion/index\";\nimport {\n createMemoryCompactionSummary,\n cumulativeCompactedMessageCount,\n} from \"../../memory/compaction\";\nimport { MemoryCompactionConflictError, MemoryCompactionError } from \"../../memory/errors\";\nimport type {\n MemoryCompactionInfo,\n MemoryCompactionResult,\n MemorySavePolicy,\n MemoryScope,\n MemoryTokenCounter,\n} from \"../../memory/types\";\nimport { throwIfAborted } from \"../abort\";\n\nexport type MemoryPreparation = {\n history: MessageType[];\n usage: ReturnType<typeof Usage.empty>;\n compaction?: MemoryCompactionInfo | undefined;\n originalTokenCount?: number | undefined;\n};\n\ntype MemoryAgent = Pick<Agent, \"memory\">;\n\nexport class AgentRunMemory {\n constructor(\n private readonly agent: MemoryAgent,\n private readonly memoryScope: MemoryScope | undefined,\n private readonly initialHistory: MessageType[],\n ) {}\n\n memoryPolicy(): MemorySavePolicy | undefined {\n return this.memory()?.savePolicy;\n }\n\n pendingTurnMessages(newMessages: MessageType[]): MessageType[] {\n return this.memoryPolicy() === \"turn\" ? [...newMessages] : [];\n }\n\n async prepareHistory(\n runId: string,\n incomingMessages: readonly MessageType[],\n abortSignal?: AbortSignal | undefined,\n ): Promise<MemoryPreparation> {\n const memory = this.memory();\n if (memory === undefined || this.memoryScope === undefined) {\n return {\n history: this.initialHistory,\n usage: Usage.empty(),\n };\n }\n\n const preparation = await this.prepareStoredHistory(\n memory,\n runId,\n incomingMessages,\n abortSignal,\n );\n const memoryHistory = preparation.history;\n const chatHistory = [...memoryHistory, ...this.initialHistory];\n return {\n ...preparation,\n history: chatHistory,\n };\n }\n\n async compact(\n runId: string,\n abortSignal?: AbortSignal | undefined,\n ): Promise<MemoryCompactionResult> {\n const memory = this.memory();\n const scope = this.memoryScope;\n if (memory === undefined || scope === undefined) {\n throw new TypeError(\"Manual memory compaction requires an Agent with configured memory.\");\n }\n if (memory.compaction === undefined || memory.store.compaction === undefined) {\n throw new TypeError(\"Manual memory compaction requires a configured compaction policy.\");\n }\n const preparation = await this.prepareStoredHistory(memory, runId, [], abortSignal, true);\n if (preparation.compaction !== undefined) {\n return { type: \"compacted\", ...preparation.compaction };\n }\n return {\n type: \"skipped\",\n reason: \"nothing_to_compact\",\n originalMessageCount: preparation.history.length,\n originalTokenCount:\n preparation.originalTokenCount ??\n (await countTokens(memory.compaction.tokenCounter, preparation.history)),\n };\n }\n\n async commitAcceptedInput(runId: string, messages: MessageType[]): Promise<void> {\n const memory = this.memory();\n if (\n memory === undefined ||\n this.memoryScope === undefined ||\n memory.savePolicy !== \"message\" ||\n messages.length === 0\n ) {\n return;\n }\n\n await memory.store.append({\n scope: this.memoryScope,\n runId,\n turn: 1,\n messages,\n });\n }\n\n async commitMessages(\n runId: string,\n turn: number,\n messages: MessageType[],\n pendingTurnMessages: MessageType[],\n ): Promise<void> {\n const memory = this.memory();\n if (memory === undefined || this.memoryScope === undefined || messages.length === 0) {\n return;\n }\n if (memory.savePolicy === \"message\") {\n await memory.store.append({\n scope: this.memoryScope,\n runId,\n turn,\n messages,\n });\n } else if (memory.savePolicy === \"turn\") {\n pendingTurnMessages.push(...messages);\n }\n }\n\n async commitCompletedTurn(\n runId: string,\n turn: number,\n pendingTurnMessages: MessageType[],\n ): Promise<void> {\n const memory = this.memory();\n if (\n memory === undefined ||\n this.memoryScope === undefined ||\n memory.savePolicy !== \"turn\" ||\n pendingTurnMessages.length === 0\n ) {\n return;\n }\n await memory.store.append({\n scope: this.memoryScope,\n runId,\n turn,\n messages: [...pendingTurnMessages],\n });\n pendingTurnMessages.length = 0;\n }\n\n async commitCompletedRun(\n runId: string,\n turn: number,\n newMessages: MessageType[],\n pendingTurnMessages: MessageType[],\n ): Promise<void> {\n await this.commitCompletedTurn(runId, turn, pendingTurnMessages);\n const memory = this.memory();\n if (memory === undefined || this.memoryScope === undefined || memory.savePolicy !== \"run\") {\n return;\n }\n await memory.store.append({\n scope: this.memoryScope,\n runId,\n turn,\n messages: [...newMessages],\n });\n }\n\n async recordError(runId: string, error: unknown, newMessages: MessageType[]): Promise<void> {\n const memory = this.memory();\n if (memory === undefined || this.memoryScope === undefined) {\n return;\n }\n await memory.store.recordError?.({\n scope: this.memoryScope,\n runId,\n error,\n messages: [...newMessages],\n });\n }\n\n private memory(): AgentMemory | undefined {\n return this.memoryScope === undefined ? undefined : this.agent.memory;\n }\n\n private async prepareStoredHistory(\n memory: AgentMemory,\n runId: string,\n incomingMessages: readonly MessageType[],\n abortSignal?: AbortSignal | undefined,\n force = false,\n ): Promise<MemoryPreparation> {\n const scope = this.memoryScope;\n if (scope === undefined) {\n return { history: [], usage: Usage.empty() };\n }\n const options = memory.compaction;\n const capability = memory.store.compaction;\n if (options === undefined || capability === undefined) {\n return {\n history: await memory.store.load({ scope }),\n usage: Usage.empty(),\n };\n }\n\n let usage = Usage.empty();\n const maxAttempts = options.conflictRetries === false ? 1 : options.conflictRetries.maxAttempts;\n for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n throwIfAborted(abortSignal);\n const snapshot = await capability.snapshot({ scope });\n throwIfAborted(abortSignal);\n const selection = await selectCompactionPrefix(\n snapshot.messages,\n incomingMessages,\n options.trigger.afterTokens,\n options.retention.recentTokens,\n options.tokenCounter,\n force,\n );\n throwIfAborted(abortSignal);\n const compactedMessageCount = selection.compactedMessageCount;\n if (compactedMessageCount === 0) {\n return {\n history: snapshot.messages,\n usage,\n originalTokenCount: selection.originalTokenCount,\n };\n }\n\n const prefix = snapshot.messages.slice(0, compactedMessageCount);\n let result: Awaited<ReturnType<typeof options.compactor>>;\n try {\n result = await options.compactor({\n scope,\n messages: prefix,\n abortSignal,\n });\n } catch (error) {\n throw remappedCompactorError(error, usage);\n }\n if (result.usage !== undefined) {\n usage = Usage.add(usage, result.usage);\n }\n if (typeof result?.summary !== \"string\") {\n throw new MemoryCompactionError(\"Memory compactor must return a summary string.\", {\n usage,\n });\n }\n const summaryText = result.summary.trim();\n if (summaryText.length === 0) {\n throw new MemoryCompactionError(\"Memory compactor returned an empty summary.\", {\n usage,\n });\n }\n const summary = createMemoryCompactionSummary(\n summaryText,\n cumulativeCompactedMessageCount(prefix),\n );\n const retained = snapshot.messages.slice(compactedMessageCount);\n let resultTokenCount: number;\n try {\n resultTokenCount = await countTokens(options.tokenCounter, [summary, ...retained]);\n } catch (error) {\n throw remappedCompactorError(error, usage);\n }\n throwIfAborted(abortSignal);\n let replacement: Awaited<ReturnType<typeof capability.replacePrefix>>;\n try {\n replacement = await capability.replacePrefix({\n scope,\n revision: snapshot.revision,\n messageCount: compactedMessageCount,\n replacement: summary,\n runId: `memory-compaction:${runId}:${attempt}`,\n });\n } catch (error) {\n throw new MemoryCompactionError(\"Memory compaction prefix replacement failed.\", {\n cause: error,\n usage,\n });\n }\n if (replacement.status === \"committed\") {\n return {\n history: [summary, ...retained],\n usage,\n compaction: {\n originalMessageCount: snapshot.messages.length,\n compactedMessageCount,\n retainedMessageCount: retained.length,\n originalTokenCount: selection.originalTokenCount,\n compactedTokenCount: selection.compactedTokenCount,\n retainedTokenCount: selection.retainedTokenCount,\n resultTokenCount,\n attempts: attempt,\n usage,\n },\n };\n }\n throwIfAborted(abortSignal);\n }\n\n throw new MemoryCompactionConflictError(maxAttempts, usage);\n }\n}\n\ntype CompactionSelection = {\n compactedMessageCount: number;\n originalTokenCount: number;\n compactedTokenCount: number;\n retainedTokenCount: number;\n};\n\nasync function selectCompactionPrefix(\n messages: readonly MessageType[],\n incomingMessages: readonly MessageType[],\n afterTokens: number,\n recentTokens: number,\n tokenCounter: MemoryTokenCounter,\n force: boolean,\n): Promise<CompactionSelection> {\n const originalTokenCount = await countTokens(tokenCounter, messages);\n const incomingTokenCount =\n incomingMessages.length === 0 ? 0 : await countTokens(tokenCounter, incomingMessages);\n const none = {\n compactedMessageCount: 0,\n originalTokenCount,\n compactedTokenCount: 0,\n retainedTokenCount: originalTokenCount,\n };\n if (!force && originalTokenCount + incomingTokenCount <= afterTokens) {\n return none;\n }\n const userMessageIndexes = messages.flatMap((message, index) =>\n message.role === \"user\" ? [index] : [],\n );\n if (userMessageIndexes.length <= 1) {\n return none;\n }\n\n // Retain complete user-led turns. The newest turn is always kept even when it alone exceeds the\n // retention budget. Find the earliest newer turn whose tail fits with logarithmic counter calls.\n const tailTokenCounts = new Map<number, number>();\n const countTail = async (messageIndex: number): Promise<number> => {\n const cached = tailTokenCounts.get(messageIndex);\n if (cached !== undefined) return cached;\n const count = await countTokens(tokenCounter, messages.slice(messageIndex));\n tailTokenCounts.set(messageIndex, count);\n return count;\n };\n let lower = 0;\n let upper = userMessageIndexes.length - 1;\n let retainedBoundary = upper;\n while (lower <= upper) {\n const middle = Math.floor((lower + upper) / 2);\n const candidate = userMessageIndexes[middle] ?? 0;\n if ((await countTail(candidate)) <= recentTokens) {\n retainedBoundary = middle;\n upper = middle - 1;\n } else {\n lower = middle + 1;\n }\n }\n const compactedMessageCount = userMessageIndexes[retainedBoundary] ?? 0;\n if (compactedMessageCount === 0) {\n return none;\n }\n const compactedTokenCount = await countTokens(\n tokenCounter,\n messages.slice(0, compactedMessageCount),\n );\n const retainedTokenCount =\n tailTokenCounts.get(compactedMessageCount) ??\n (await countTokens(tokenCounter, messages.slice(compactedMessageCount)));\n return {\n compactedMessageCount,\n originalTokenCount,\n compactedTokenCount,\n retainedTokenCount,\n };\n}\n\nasync function countTokens(\n tokenCounter: MemoryTokenCounter,\n messages: readonly MessageType[],\n): Promise<number> {\n let count: number;\n try {\n count = await tokenCounter(messages);\n } catch (error) {\n throw new MemoryCompactionError(\"Memory token counter failed.\", { cause: error });\n }\n if (!Number.isSafeInteger(count) || count < 0) {\n throw new MemoryCompactionError(\"Memory token counter must return a nonnegative safe integer.\");\n }\n return count;\n}\n\nfunction remappedCompactorError(error: unknown, usage: ReturnType<typeof Usage.empty>): Error {\n if (error instanceof MemoryCompactionError) {\n const mergedUsage =\n error.usage === undefined\n ? usage\n : isEmptyUsage(usage)\n ? error.usage\n : Usage.add(usage, error.usage);\n if (mergedUsage === error.usage || (error.usage === undefined && isEmptyUsage(usage))) {\n return error;\n }\n return new MemoryCompactionError(error.message, {\n cause: error,\n usage: mergedUsage,\n });\n }\n return new MemoryCompactionError(\"Memory compactor failed.\", {\n cause: error,\n usage,\n });\n}\n\nfunction isEmptyUsage(usage: ReturnType<typeof Usage.empty>): boolean {\n return (\n usage.inputTokens === 0 &&\n usage.outputTokens === 0 &&\n usage.totalTokens === 0 &&\n usage.cachedInputTokens === 0 &&\n usage.cacheCreationInputTokens === 0\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// src/hooks/control.ts
|
|
2
|
+
function createHook(hook) {
|
|
3
|
+
return hook;
|
|
4
|
+
}
|
|
5
|
+
function cancelRun(reason) {
|
|
6
|
+
return { type: "terminate", reason };
|
|
7
|
+
}
|
|
8
|
+
function skipTool(reason) {
|
|
9
|
+
return { type: "skip", reason };
|
|
10
|
+
}
|
|
11
|
+
function requestToolApproval(options = {}) {
|
|
12
|
+
const action = {
|
|
13
|
+
type: "approval_request"
|
|
14
|
+
};
|
|
15
|
+
if (options.reason !== void 0) {
|
|
16
|
+
action.reason = options.reason;
|
|
17
|
+
}
|
|
18
|
+
if (options.rejectMessage !== void 0) {
|
|
19
|
+
action.rejectMessage = options.rejectMessage;
|
|
20
|
+
}
|
|
21
|
+
return action;
|
|
22
|
+
}
|
|
23
|
+
var runControl = {
|
|
24
|
+
continue() {
|
|
25
|
+
return { type: "continue" };
|
|
26
|
+
},
|
|
27
|
+
cancel(reason) {
|
|
28
|
+
return cancelRun(reason);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
var toolCallControl = {
|
|
32
|
+
run() {
|
|
33
|
+
return { type: "continue" };
|
|
34
|
+
},
|
|
35
|
+
skip(reason) {
|
|
36
|
+
return skipTool(reason);
|
|
37
|
+
},
|
|
38
|
+
cancel(reason) {
|
|
39
|
+
return { type: "terminate", reason };
|
|
40
|
+
},
|
|
41
|
+
requestApproval(options) {
|
|
42
|
+
return requestToolApproval(options);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export {
|
|
47
|
+
createHook,
|
|
48
|
+
cancelRun,
|
|
49
|
+
skipTool,
|
|
50
|
+
requestToolApproval,
|
|
51
|
+
runControl,
|
|
52
|
+
toolCallControl
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=chunk-FAPIZJS2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/control.ts"],"sourcesContent":["import type {\n AgentHook,\n HookAction,\n RunControl,\n ToolApprovalRequestOptions,\n ToolCallControl,\n ToolCallHookAction,\n} from \"./types\";\n\nexport function createHook<RawResponse = unknown>(\n hook: AgentHook<RawResponse>,\n): AgentHook<RawResponse> {\n return hook;\n}\n\nexport function cancelRun(reason: string): HookAction {\n return { type: \"terminate\", reason };\n}\n\nexport function skipTool(reason: string): ToolCallHookAction {\n return { type: \"skip\", reason };\n}\n\nexport function requestToolApproval(options: ToolApprovalRequestOptions = {}): ToolCallHookAction {\n const action: ToolCallHookAction = {\n type: \"approval_request\" as const,\n };\n if (options.reason !== undefined) {\n action.reason = options.reason;\n }\n if (options.rejectMessage !== undefined) {\n action.rejectMessage = options.rejectMessage;\n }\n return action;\n}\n\nexport const runControl: RunControl = {\n continue() {\n return { type: \"continue\" };\n },\n cancel(reason: string) {\n return cancelRun(reason);\n },\n};\n\nexport const toolCallControl: ToolCallControl = {\n run() {\n return { type: \"continue\" };\n },\n skip(reason: string) {\n return skipTool(reason);\n },\n cancel(reason: string) {\n return { type: \"terminate\", reason };\n },\n requestApproval(options) {\n return requestToolApproval(options);\n },\n};\n"],"mappings":";AASO,SAAS,WACd,MACwB;AACxB,SAAO;AACT;AAEO,SAAS,UAAU,QAA4B;AACpD,SAAO,EAAE,MAAM,aAAa,OAAO;AACrC;AAEO,SAAS,SAAS,QAAoC;AAC3D,SAAO,EAAE,MAAM,QAAQ,OAAO;AAChC;AAEO,SAAS,oBAAoB,UAAsC,CAAC,GAAuB;AAChG,QAAM,SAA6B;AAAA,IACjC,MAAM;AAAA,EACR;AACA,MAAI,QAAQ,WAAW,QAAW;AAChC,WAAO,SAAS,QAAQ;AAAA,EAC1B;AACA,MAAI,QAAQ,kBAAkB,QAAW;AACvC,WAAO,gBAAgB,QAAQ;AAAA,EACjC;AACA,SAAO;AACT;AAEO,IAAM,aAAyB;AAAA,EACpC,WAAW;AACT,WAAO,EAAE,MAAM,WAAW;AAAA,EAC5B;AAAA,EACA,OAAO,QAAgB;AACrB,WAAO,UAAU,MAAM;AAAA,EACzB;AACF;AAEO,IAAM,kBAAmC;AAAA,EAC9C,MAAM;AACJ,WAAO,EAAE,MAAM,WAAW;AAAA,EAC5B;AAAA,EACA,KAAK,QAAgB;AACnB,WAAO,SAAS,MAAM;AAAA,EACxB;AAAA,EACA,OAAO,QAAgB;AACrB,WAAO,EAAE,MAAM,aAAa,OAAO;AAAA,EACrC;AAAA,EACA,gBAAgB,SAAS;AACvB,WAAO,oBAAoB,OAAO;AAAA,EACpC;AACF;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-GDJNOZ47.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getAgentToolState
|
|
3
|
+
} from "./chunk-A7BXVZXZ.js";
|
|
4
|
+
import {
|
|
5
|
+
retrieveDocuments
|
|
6
|
+
} from "./chunk-HAAGSIZH.js";
|
|
7
|
+
import {
|
|
8
|
+
isVectorContext
|
|
9
|
+
} from "./chunk-ZHC5CD6J.js";
|
|
10
|
+
|
|
11
|
+
// src/internal/agent-runtime/retrieval.ts
|
|
12
|
+
async function fetchContextDocuments(agent, ragText, abortSignal) {
|
|
13
|
+
const documents = [];
|
|
14
|
+
for (const input of agent.context) {
|
|
15
|
+
if (!isVectorContext(input)) {
|
|
16
|
+
documents.push(input);
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
if (ragText === void 0 || ragText.length === 0) continue;
|
|
20
|
+
const request = {
|
|
21
|
+
query: ragText,
|
|
22
|
+
topK: input.topK,
|
|
23
|
+
minScore: input.minScore,
|
|
24
|
+
filter: input.filter,
|
|
25
|
+
retries: input.retries,
|
|
26
|
+
abortSignal
|
|
27
|
+
};
|
|
28
|
+
const results = "models" in input && input.models !== void 0 ? await retrieveDocuments({
|
|
29
|
+
...request,
|
|
30
|
+
store: input.store,
|
|
31
|
+
models: input.models,
|
|
32
|
+
fusion: input.fusion
|
|
33
|
+
}) : await retrieveDocuments({ ...request, store: input.store, model: input.model });
|
|
34
|
+
for (const result of results) {
|
|
35
|
+
const formatted = input.format?.(result);
|
|
36
|
+
if (formatted !== void 0) {
|
|
37
|
+
documents.push(formatted);
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const metadata = formatMetadata(result.metadata);
|
|
41
|
+
const document = {
|
|
42
|
+
id: result.id,
|
|
43
|
+
text: typeof result.document === "string" ? result.document : JSON.stringify(result.document, null, 2)
|
|
44
|
+
};
|
|
45
|
+
if (metadata !== void 0) document.additionalProps = metadata;
|
|
46
|
+
documents.push(document);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return documents;
|
|
50
|
+
}
|
|
51
|
+
async function fetchToolDefinitions(agent, ragText, abortSignal) {
|
|
52
|
+
const state = getAgentToolState(agent);
|
|
53
|
+
const staticDefinitions = await Promise.all(
|
|
54
|
+
state.staticTools.map((tool) => tool.definition(ragText ?? ""))
|
|
55
|
+
);
|
|
56
|
+
if (ragText === void 0 || ragText.length === 0 || state.toolIndexes.length === 0) {
|
|
57
|
+
return staticDefinitions;
|
|
58
|
+
}
|
|
59
|
+
const definitions = [...staticDefinitions];
|
|
60
|
+
const names = new Set(staticDefinitions.map((definition) => definition.name));
|
|
61
|
+
for (const index of state.toolIndexes) {
|
|
62
|
+
const results = await index.search({ query: ragText, abortSignal });
|
|
63
|
+
for (const result of results) {
|
|
64
|
+
const toolName = result.document.toolName;
|
|
65
|
+
if (names.has(toolName)) continue;
|
|
66
|
+
const tool = index.tools.find((candidate) => candidate.name === toolName);
|
|
67
|
+
if (tool === void 0) continue;
|
|
68
|
+
names.add(toolName);
|
|
69
|
+
definitions.push(await tool.definition(ragText));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return definitions;
|
|
73
|
+
}
|
|
74
|
+
function formatMetadata(metadata) {
|
|
75
|
+
if (metadata === void 0) return void 0;
|
|
76
|
+
return Object.fromEntries(Object.entries(metadata).map(([key, value]) => [key, String(value)]));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export {
|
|
80
|
+
fetchContextDocuments,
|
|
81
|
+
fetchToolDefinitions
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=chunk-GDY2Z2SZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/agent-runtime/retrieval.ts"],"sourcesContent":["import type { Agent } from \"../../agent/agent\";\nimport { getAgentToolState } from \"../../agent/tool-state\";\nimport { isVectorContext } from \"../../agent/vector-context\";\nimport type { CompletionModel, Document, ToolDefinition } from \"../../completion/index\";\nimport { retrieveDocuments } from \"../../vector-store\";\n\nexport async function fetchContextDocuments<Output, M extends CompletionModel, ContextDocument>(\n agent: Agent<Output, M, ContextDocument>,\n ragText: string | undefined,\n abortSignal?: AbortSignal | undefined,\n): Promise<Document[]> {\n const documents: Document[] = [];\n for (const input of agent.context) {\n if (!isVectorContext(input)) {\n documents.push(input);\n continue;\n }\n if (ragText === undefined || ragText.length === 0) continue;\n const request = {\n query: ragText,\n topK: input.topK,\n minScore: input.minScore,\n filter: input.filter,\n retries: input.retries,\n abortSignal,\n };\n const results =\n \"models\" in input && input.models !== undefined\n ? await retrieveDocuments({\n ...request,\n store: input.store,\n models: input.models,\n fusion: input.fusion,\n })\n : await retrieveDocuments({ ...request, store: input.store, model: input.model });\n for (const result of results) {\n const formatted = input.format?.(result);\n if (formatted !== undefined) {\n documents.push(formatted);\n continue;\n }\n const metadata = formatMetadata(result.metadata);\n const document: Document = {\n id: result.id,\n text:\n typeof result.document === \"string\"\n ? result.document\n : JSON.stringify(result.document, null, 2),\n };\n if (metadata !== undefined) document.additionalProps = metadata;\n documents.push(document);\n }\n }\n return documents;\n}\n\nexport async function fetchToolDefinitions<Output, M extends CompletionModel, ContextDocument>(\n agent: Agent<Output, M, ContextDocument>,\n ragText: string | undefined,\n abortSignal?: AbortSignal | undefined,\n): Promise<ToolDefinition[]> {\n const state = getAgentToolState(agent);\n const staticDefinitions = await Promise.all(\n state.staticTools.map((tool) => tool.definition(ragText ?? \"\")),\n );\n if (ragText === undefined || ragText.length === 0 || state.toolIndexes.length === 0) {\n return staticDefinitions;\n }\n\n const definitions = [...staticDefinitions];\n const names = new Set(staticDefinitions.map((definition) => definition.name));\n for (const index of state.toolIndexes) {\n const results = await index.search({ query: ragText, abortSignal });\n for (const result of results) {\n const toolName = result.document.toolName;\n if (names.has(toolName)) continue;\n const tool = index.tools.find((candidate) => candidate.name === toolName);\n if (tool === undefined) continue;\n names.add(toolName);\n definitions.push(await tool.definition(ragText));\n }\n }\n return definitions;\n}\n\nfunction formatMetadata(\n metadata: Record<string, unknown> | undefined,\n): Record<string, string> | undefined {\n if (metadata === undefined) return undefined;\n return Object.fromEntries(Object.entries(metadata).map(([key, value]) => [key, String(value)]));\n}\n"],"mappings":";;;;;;;;;;;AAMA,eAAsB,sBACpB,OACA,SACA,aACqB;AACrB,QAAM,YAAwB,CAAC;AAC/B,aAAW,SAAS,MAAM,SAAS;AACjC,QAAI,CAAC,gBAAgB,KAAK,GAAG;AAC3B,gBAAU,KAAK,KAAK;AACpB;AAAA,IACF;AACA,QAAI,YAAY,UAAa,QAAQ,WAAW,EAAG;AACnD,UAAM,UAAU;AAAA,MACd,OAAO;AAAA,MACP,MAAM,MAAM;AAAA,MACZ,UAAU,MAAM;AAAA,MAChB,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf;AAAA,IACF;AACA,UAAM,UACJ,YAAY,SAAS,MAAM,WAAW,SAClC,MAAM,kBAAkB;AAAA,MACtB,GAAG;AAAA,MACH,OAAO,MAAM;AAAA,MACb,QAAQ,MAAM;AAAA,MACd,QAAQ,MAAM;AAAA,IAChB,CAAC,IACD,MAAM,kBAAkB,EAAE,GAAG,SAAS,OAAO,MAAM,OAAO,OAAO,MAAM,MAAM,CAAC;AACpF,eAAW,UAAU,SAAS;AAC5B,YAAM,YAAY,MAAM,SAAS,MAAM;AACvC,UAAI,cAAc,QAAW;AAC3B,kBAAU,KAAK,SAAS;AACxB;AAAA,MACF;AACA,YAAM,WAAW,eAAe,OAAO,QAAQ;AAC/C,YAAM,WAAqB;AAAA,QACzB,IAAI,OAAO;AAAA,QACX,MACE,OAAO,OAAO,aAAa,WACvB,OAAO,WACP,KAAK,UAAU,OAAO,UAAU,MAAM,CAAC;AAAA,MAC/C;AACA,UAAI,aAAa,OAAW,UAAS,kBAAkB;AACvD,gBAAU,KAAK,QAAQ;AAAA,IACzB;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAsB,qBACpB,OACA,SACA,aAC2B;AAC3B,QAAM,QAAQ,kBAAkB,KAAK;AACrC,QAAM,oBAAoB,MAAM,QAAQ;AAAA,IACtC,MAAM,YAAY,IAAI,CAAC,SAAS,KAAK,WAAW,WAAW,EAAE,CAAC;AAAA,EAChE;AACA,MAAI,YAAY,UAAa,QAAQ,WAAW,KAAK,MAAM,YAAY,WAAW,GAAG;AACnF,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,CAAC,GAAG,iBAAiB;AACzC,QAAM,QAAQ,IAAI,IAAI,kBAAkB,IAAI,CAAC,eAAe,WAAW,IAAI,CAAC;AAC5E,aAAW,SAAS,MAAM,aAAa;AACrC,UAAM,UAAU,MAAM,MAAM,OAAO,EAAE,OAAO,SAAS,YAAY,CAAC;AAClE,eAAW,UAAU,SAAS;AAC5B,YAAM,WAAW,OAAO,SAAS;AACjC,UAAI,MAAM,IAAI,QAAQ,EAAG;AACzB,YAAM,OAAO,MAAM,MAAM,KAAK,CAAC,cAAc,UAAU,SAAS,QAAQ;AACxE,UAAI,SAAS,OAAW;AACxB,YAAM,IAAI,QAAQ;AAClB,kBAAY,KAAK,MAAM,KAAK,WAAW,OAAO,CAAC;AAAA,IACjD;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,eACP,UACoC;AACpC,MAAI,aAAa,OAAW,QAAO;AACnC,SAAO,OAAO,YAAY,OAAO,QAAQ,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;AAChG;","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
toProviderJsonSchema
|
|
3
|
+
} from "./chunk-SQAAVYJG.js";
|
|
4
|
+
|
|
5
|
+
// src/agent/output-schema.ts
|
|
6
|
+
var providerOutputSchemas = /* @__PURE__ */ new WeakMap();
|
|
7
|
+
function registerAgentProviderOutputSchema(agent, schema) {
|
|
8
|
+
if (schema !== void 0) {
|
|
9
|
+
providerOutputSchemas.set(agent, toProviderJsonSchema(schema));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function getAgentProviderOutputSchema(agent) {
|
|
13
|
+
return providerOutputSchemas.get(agent);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
registerAgentProviderOutputSchema,
|
|
18
|
+
getAgentProviderOutputSchema
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=chunk-GLMYZ6OA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/agent/output-schema.ts"],"sourcesContent":["import type { JsonObject } from \"../completion\";\nimport { toProviderJsonSchema, type ZodSchema } from \"../schema/zod-schema\";\n\nconst providerOutputSchemas = new WeakMap<object, JsonObject>();\n\nexport function registerAgentProviderOutputSchema(\n agent: object,\n schema: ZodSchema | undefined,\n): void {\n if (schema !== undefined) {\n providerOutputSchemas.set(agent, toProviderJsonSchema(schema));\n }\n}\n\nexport function getAgentProviderOutputSchema(agent: object): JsonObject | undefined {\n return providerOutputSchemas.get(agent);\n}\n"],"mappings":";;;;;AAGA,IAAM,wBAAwB,oBAAI,QAA4B;AAEvD,SAAS,kCACd,OACA,QACM;AACN,MAAI,WAAW,QAAW;AACxB,0BAAsB,IAAI,OAAO,qBAAqB,MAAM,CAAC;AAAA,EAC/D;AACF;AAEO,SAAS,6BAA6B,OAAuC;AAClF,SAAO,sBAAsB,IAAI,KAAK;AACxC;","names":[]}
|
|
@@ -179,78 +179,7 @@ function createChunk(text, index, start, end) {
|
|
|
179
179
|
return { index, text: text.slice(start, end), start, end };
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
// src/documents/text-document.ts
|
|
183
|
-
function chunkTextDocuments(options) {
|
|
184
|
-
if (typeof options !== "object" || options === null) {
|
|
185
|
-
throw new TypeError("chunkTextDocuments options must contain a documents array");
|
|
186
|
-
}
|
|
187
|
-
const documents = options.documents;
|
|
188
|
-
if (!Array.isArray(documents)) {
|
|
189
|
-
throw new TypeError("chunkTextDocuments options must contain a documents array");
|
|
190
|
-
}
|
|
191
|
-
const ids = /* @__PURE__ */ new Set();
|
|
192
|
-
const chunks = [];
|
|
193
|
-
for (const document of documents) {
|
|
194
|
-
validateDocument(document, ids);
|
|
195
|
-
chunks.push(...chunkDocument(document, options.chunking));
|
|
196
|
-
}
|
|
197
|
-
return chunks;
|
|
198
|
-
}
|
|
199
|
-
function validateDocument(document, ids) {
|
|
200
|
-
if (typeof document !== "object" || document === null) {
|
|
201
|
-
throw new TypeError("Text documents must be objects");
|
|
202
|
-
}
|
|
203
|
-
if (typeof document.id !== "string" || document.id.length === 0) {
|
|
204
|
-
throw new TypeError("Text document ids must be non-empty strings");
|
|
205
|
-
}
|
|
206
|
-
if (ids.has(document.id)) {
|
|
207
|
-
throw new TypeError(`Duplicate text document id: ${document.id}`);
|
|
208
|
-
}
|
|
209
|
-
if (typeof document.text !== "string" || document.text.length === 0) {
|
|
210
|
-
throw new TypeError(`Text document ${document.id} must contain non-empty text`);
|
|
211
|
-
}
|
|
212
|
-
ids.add(document.id);
|
|
213
|
-
}
|
|
214
|
-
function chunkDocument(document, chunking) {
|
|
215
|
-
if (chunking === void 0 || chunking.strategy === "none") {
|
|
216
|
-
return [createDocumentChunk(document, 0, document.text)];
|
|
217
|
-
}
|
|
218
|
-
const textChunks = chunkDocumentText(document.text, chunking);
|
|
219
|
-
return textChunks.map((chunk) => createDocumentChunk(document, chunk.index, chunk.text));
|
|
220
|
-
}
|
|
221
|
-
function chunkDocumentText(text, chunking) {
|
|
222
|
-
const overlap = chunking.overlap ?? 0;
|
|
223
|
-
if (chunking.strategy === "fixed") {
|
|
224
|
-
return chunkText({
|
|
225
|
-
text,
|
|
226
|
-
strategy: "fixed",
|
|
227
|
-
maxSize: chunking.maxSize,
|
|
228
|
-
overlap
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
return chunkText({
|
|
232
|
-
text,
|
|
233
|
-
strategy: "recursive",
|
|
234
|
-
maxSize: chunking.maxSize,
|
|
235
|
-
overlap,
|
|
236
|
-
separators: chunking.separators
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
function createDocumentChunk(document, index, text) {
|
|
240
|
-
const chunk = {
|
|
241
|
-
id: `${document.id}:chunk:${index}`,
|
|
242
|
-
documentId: document.id,
|
|
243
|
-
index,
|
|
244
|
-
text
|
|
245
|
-
};
|
|
246
|
-
if (document.metadata === void 0) {
|
|
247
|
-
return chunk;
|
|
248
|
-
}
|
|
249
|
-
return { ...chunk, metadata: document.metadata };
|
|
250
|
-
}
|
|
251
|
-
|
|
252
182
|
export {
|
|
253
|
-
chunkText
|
|
254
|
-
chunkTextDocuments
|
|
183
|
+
chunkText
|
|
255
184
|
};
|
|
256
|
-
//# sourceMappingURL=chunk-
|
|
185
|
+
//# sourceMappingURL=chunk-GPVXCY5I.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/documents/chunk-text.ts"],"sourcesContent":["export type TextChunk = Readonly<{\n index: number;\n text: string;\n start: number;\n end: number;\n}>;\n\nexport type ChunkTextOptions =\n | Readonly<{\n text: string;\n strategy: \"fixed\";\n maxSize: number;\n overlap?: number;\n }>\n | Readonly<{\n text: string;\n strategy: \"recursive\";\n maxSize: number;\n overlap?: number;\n separators: readonly string[];\n }>;\n\ntype TextRange = Readonly<{\n start: number;\n end: number;\n}>;\n\nexport function chunkText(options: ChunkTextOptions): readonly TextChunk[] {\n const validated = validateOptions(options);\n if (validated.text.length === 0) {\n return [];\n }\n\n if (validated.strategy === \"fixed\") {\n return chunkFixed(validated.text, validated.maxSize, validated.overlap);\n }\n\n const ranges = resolveRecursiveRanges(\n validated.text,\n { start: 0, end: validated.text.length },\n validated.maxSize,\n validated.separators,\n );\n return applyRecursiveOverlap(validated.text, ranges, validated.maxSize, validated.overlap);\n}\n\nfunction validateOptions(options: ChunkTextOptions):\n | Readonly<{\n text: string;\n strategy: \"fixed\";\n maxSize: number;\n overlap: number;\n }>\n | Readonly<{\n text: string;\n strategy: \"recursive\";\n maxSize: number;\n overlap: number;\n separators: readonly string[];\n }> {\n if (typeof options !== \"object\" || options === null) {\n throw new TypeError(\"chunkText options must be an object\");\n }\n\n const value = options as unknown as Record<string, unknown>;\n if (typeof value.text !== \"string\") {\n throw new TypeError(\"chunkText text must be a string\");\n }\n if (!Number.isSafeInteger(value.maxSize) || (value.maxSize as number) <= 0) {\n throw new RangeError(\"chunkText maxSize must be a positive safe integer\");\n }\n\n const maxSize = value.maxSize as number;\n const overlap = value.overlap === undefined ? 0 : value.overlap;\n if (!Number.isSafeInteger(overlap) || (overlap as number) < 0 || (overlap as number) >= maxSize) {\n throw new RangeError(\n \"chunkText overlap must be a non-negative safe integer smaller than maxSize\",\n );\n }\n\n if (value.strategy === \"fixed\") {\n if (\"separators\" in value) {\n throw new TypeError(\"chunkText fixed strategy does not accept separators\");\n }\n return {\n text: value.text,\n strategy: \"fixed\",\n maxSize,\n overlap: overlap as number,\n };\n }\n\n if (value.strategy !== \"recursive\") {\n throw new TypeError('chunkText strategy must be either \"fixed\" or \"recursive\"');\n }\n if (!Array.isArray(value.separators) || value.separators.length === 0) {\n throw new TypeError(\"chunkText recursive separators must be a non-empty array\");\n }\n\n const separators = value.separators as unknown[];\n const seen = new Set<string>();\n for (const separator of separators) {\n if (typeof separator !== \"string\" || separator.length === 0) {\n throw new TypeError(\"chunkText recursive separators must contain non-empty strings\");\n }\n if (seen.has(separator)) {\n throw new TypeError(\"chunkText recursive separators must not contain duplicates\");\n }\n seen.add(separator);\n }\n\n return {\n text: value.text,\n strategy: \"recursive\",\n maxSize,\n overlap: overlap as number,\n separators: separators as string[],\n };\n}\n\nfunction chunkFixed(text: string, maxSize: number, overlap: number): readonly TextChunk[] {\n const chunks: TextChunk[] = [];\n let start = 0;\n\n while (start < text.length) {\n const end = Math.min(start + maxSize, text.length);\n chunks.push(createChunk(text, chunks.length, start, end));\n if (end === text.length) {\n break;\n }\n start = end - overlap;\n }\n\n return chunks;\n}\n\nfunction resolveRecursiveRanges(\n text: string,\n initialRange: TextRange,\n maxSize: number,\n separators: readonly string[],\n): readonly TextRange[] {\n const resolved: TextRange[] = [];\n const pending: Array<Readonly<{ range: TextRange; separatorIndex: number }>> = [\n { range: initialRange, separatorIndex: 0 },\n ];\n\n while (pending.length > 0) {\n const current = pending.pop();\n if (current === undefined) {\n break;\n }\n if (current.range.end - current.range.start <= maxSize) {\n resolved.push(current.range);\n continue;\n }\n\n let pieces: readonly TextRange[] | undefined;\n let nextSeparatorIndex = separators.length;\n for (let index = current.separatorIndex; index < separators.length; index += 1) {\n const candidate = splitAfterSeparator(text, current.range, separators[index] as string);\n if (candidate.length > 1) {\n pieces = candidate;\n nextSeparatorIndex = index + 1;\n break;\n }\n }\n\n if (pieces === undefined) {\n resolved.push(...hardSplit(current.range, maxSize));\n continue;\n }\n\n for (let index = pieces.length - 1; index >= 0; index -= 1) {\n pending.push({ range: pieces[index] as TextRange, separatorIndex: nextSeparatorIndex });\n }\n }\n\n return resolved;\n}\n\nfunction splitAfterSeparator(text: string, range: TextRange, separator: string): TextRange[] {\n const ranges: TextRange[] = [];\n let start = range.start;\n let searchFrom = range.start;\n\n while (searchFrom < range.end) {\n const separatorStart = text.indexOf(separator, searchFrom);\n if (separatorStart < 0 || separatorStart + separator.length > range.end) {\n break;\n }\n const end = separatorStart + separator.length;\n if (end > start) {\n ranges.push({ start, end });\n }\n start = end;\n searchFrom = end;\n }\n\n if (start < range.end) {\n ranges.push({ start, end: range.end });\n }\n return ranges;\n}\n\nfunction hardSplit(range: TextRange, maxSize: number): readonly TextRange[] {\n const ranges: TextRange[] = [];\n for (let start = range.start; start < range.end; start += maxSize) {\n ranges.push({ start, end: Math.min(start + maxSize, range.end) });\n }\n return ranges;\n}\n\nfunction applyRecursiveOverlap(\n text: string,\n ranges: readonly TextRange[],\n maxSize: number,\n overlap: number,\n): readonly TextChunk[] {\n const boundaries = ranges.map((range) => range.end);\n const chunks: TextChunk[] = [];\n let start = 0;\n let previousEnd = 0;\n\n while (start < text.length) {\n const limit = Math.min(start + maxSize, text.length);\n const boundary = findLastBoundaryAtMost(boundaries, limit);\n const end = boundary !== undefined && boundary > previousEnd ? boundary : limit;\n\n chunks.push(createChunk(text, chunks.length, start, end));\n if (end === text.length) {\n break;\n }\n previousEnd = end;\n start = Math.max(0, end - overlap);\n }\n\n return chunks;\n}\n\nfunction findLastBoundaryAtMost(boundaries: readonly number[], limit: number): number | undefined {\n let low = 0;\n let high = boundaries.length;\n while (low < high) {\n const middle = low + Math.floor((high - low) / 2);\n if ((boundaries[middle] as number) <= limit) {\n low = middle + 1;\n } else {\n high = middle;\n }\n }\n return boundaries[low - 1];\n}\n\nfunction createChunk(text: string, index: number, start: number, end: number): TextChunk {\n return { index, text: text.slice(start, end), start, end };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import {
|
|
2
|
+
embedSparseQuery,
|
|
3
|
+
embedText
|
|
4
|
+
} from "./chunk-HHMLE3TZ.js";
|
|
5
|
+
import {
|
|
6
|
+
assertFiniteMinScore,
|
|
7
|
+
assertPositiveSearchLimit
|
|
8
|
+
} from "./chunk-5V533R7F.js";
|
|
9
|
+
import {
|
|
10
|
+
resolveRetryOptions,
|
|
11
|
+
runWithRetries
|
|
12
|
+
} from "./chunk-POXHJF3H.js";
|
|
13
|
+
import {
|
|
14
|
+
throwIfAborted
|
|
15
|
+
} from "./chunk-USRKPEQN.js";
|
|
16
|
+
|
|
17
|
+
// src/vector-store/retrieve.ts
|
|
18
|
+
async function retrieveDocuments(options) {
|
|
19
|
+
assertPositiveSearchLimit(options.topK);
|
|
20
|
+
assertFiniteMinScore(options.minScore);
|
|
21
|
+
throwIfAborted(options.abortSignal);
|
|
22
|
+
const retries = resolveRetries(options.retries);
|
|
23
|
+
const search = (operation) => runWithRetries(operation, retries, {
|
|
24
|
+
streaming: false,
|
|
25
|
+
abortSignal: options.abortSignal
|
|
26
|
+
});
|
|
27
|
+
if ("model" in options && options.model !== void 0) {
|
|
28
|
+
const { embedding } = await embedText({
|
|
29
|
+
model: options.model,
|
|
30
|
+
text: options.query,
|
|
31
|
+
retries: options.retries,
|
|
32
|
+
abortSignal: options.abortSignal
|
|
33
|
+
});
|
|
34
|
+
return deduplicateResults(
|
|
35
|
+
await search(
|
|
36
|
+
() => options.store.search({
|
|
37
|
+
vector: embedding.vector,
|
|
38
|
+
topK: options.topK,
|
|
39
|
+
minScore: options.minScore,
|
|
40
|
+
filter: options.filter,
|
|
41
|
+
abortSignal: options.abortSignal
|
|
42
|
+
})
|
|
43
|
+
)
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
const [{ embedding: dense }, { embedding: sparse }] = await Promise.all([
|
|
47
|
+
embedText({
|
|
48
|
+
model: options.models.dense,
|
|
49
|
+
text: options.query,
|
|
50
|
+
retries: options.retries,
|
|
51
|
+
abortSignal: options.abortSignal
|
|
52
|
+
}),
|
|
53
|
+
embedSparseQuery({
|
|
54
|
+
model: options.models.sparse,
|
|
55
|
+
query: options.query,
|
|
56
|
+
retries: options.retries,
|
|
57
|
+
abortSignal: options.abortSignal
|
|
58
|
+
})
|
|
59
|
+
]);
|
|
60
|
+
return deduplicateResults(
|
|
61
|
+
await search(
|
|
62
|
+
() => options.store.searchHybrid({
|
|
63
|
+
vector: dense.vector,
|
|
64
|
+
sparseVector: sparse.vector,
|
|
65
|
+
fusion: options.fusion,
|
|
66
|
+
topK: options.topK,
|
|
67
|
+
minScore: options.minScore,
|
|
68
|
+
filter: options.filter,
|
|
69
|
+
abortSignal: options.abortSignal
|
|
70
|
+
})
|
|
71
|
+
)
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
function deduplicateResults(results) {
|
|
75
|
+
const bestById = /* @__PURE__ */ new Map();
|
|
76
|
+
for (const result of results) {
|
|
77
|
+
const current = bestById.get(result.id);
|
|
78
|
+
if (current === void 0 || result.score > current.score) bestById.set(result.id, result);
|
|
79
|
+
}
|
|
80
|
+
return [...bestById.values()].sort((left, right) => right.score - left.score);
|
|
81
|
+
}
|
|
82
|
+
function resolveRetries(setting) {
|
|
83
|
+
return setting === void 0 || setting === false ? void 0 : resolveRetryOptions(setting);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export {
|
|
87
|
+
retrieveDocuments
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=chunk-HAAGSIZH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vector-store/retrieve.ts"],"sourcesContent":["import { embedSparseQuery, embedText, type VectorMetadata } from \"../embeddings\";\nimport { throwIfAborted } from \"../internal/abort\";\nimport { assertFiniteMinScore, assertPositiveSearchLimit } from \"../internal/vector-search-options\";\nimport { type ResolvedRetryOptions, resolveRetryOptions, runWithRetries } from \"../retry\";\nimport type {\n RetrieveDocumentsOptions,\n RetrieveHybridDocumentsOptions,\n VectorSearchResult,\n} from \"./types\";\n\nexport function retrieveDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: RetrieveDocumentsOptions<T, Metadata>,\n): Promise<Array<VectorSearchResult<T, Metadata>>>;\nexport function retrieveDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: RetrieveHybridDocumentsOptions<T, Metadata>,\n): Promise<Array<VectorSearchResult<T, Metadata>>>;\nexport async function retrieveDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: RetrieveDocumentsOptions<T, Metadata> | RetrieveHybridDocumentsOptions<T, Metadata>,\n): Promise<Array<VectorSearchResult<T, Metadata>>> {\n assertPositiveSearchLimit(options.topK);\n assertFiniteMinScore(options.minScore);\n throwIfAborted(options.abortSignal);\n const retries = resolveRetries(options.retries);\n const search = (operation: () => Promise<Array<VectorSearchResult<T, Metadata>>>) =>\n runWithRetries(operation, retries, {\n streaming: false,\n abortSignal: options.abortSignal,\n });\n\n if (\"model\" in options && options.model !== undefined) {\n const { embedding } = await embedText({\n model: options.model,\n text: options.query,\n retries: options.retries,\n abortSignal: options.abortSignal,\n });\n return deduplicateResults(\n await search(() =>\n options.store.search({\n vector: embedding.vector,\n topK: options.topK,\n minScore: options.minScore,\n filter: options.filter,\n abortSignal: options.abortSignal,\n }),\n ),\n );\n }\n\n const [{ embedding: dense }, { embedding: sparse }] = await Promise.all([\n embedText({\n model: options.models.dense,\n text: options.query,\n retries: options.retries,\n abortSignal: options.abortSignal,\n }),\n embedSparseQuery({\n model: options.models.sparse,\n query: options.query,\n retries: options.retries,\n abortSignal: options.abortSignal,\n }),\n ]);\n return deduplicateResults(\n await search(() =>\n options.store.searchHybrid({\n vector: dense.vector,\n sparseVector: sparse.vector,\n fusion: options.fusion,\n topK: options.topK,\n minScore: options.minScore,\n filter: options.filter,\n abortSignal: options.abortSignal,\n }),\n ),\n );\n}\n\nfunction deduplicateResults<T, Metadata extends VectorMetadata>(\n results: Array<VectorSearchResult<T, Metadata>>,\n): Array<VectorSearchResult<T, Metadata>> {\n const bestById = new Map<string, VectorSearchResult<T, Metadata>>();\n for (const result of results) {\n const current = bestById.get(result.id);\n if (current === undefined || result.score > current.score) bestById.set(result.id, result);\n }\n return [...bestById.values()].sort((left, right) => right.score - left.score);\n}\n\nfunction resolveRetries(\n setting: RetrieveDocumentsOptions<unknown>[\"retries\"],\n): ResolvedRetryOptions | undefined {\n return setting === undefined || setting === false ? undefined : resolveRetryOptions(setting);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,eAAsB,kBACpB,SACiD;AACjD,4BAA0B,QAAQ,IAAI;AACtC,uBAAqB,QAAQ,QAAQ;AACrC,iBAAe,QAAQ,WAAW;AAClC,QAAM,UAAU,eAAe,QAAQ,OAAO;AAC9C,QAAM,SAAS,CAAC,cACd,eAAe,WAAW,SAAS;AAAA,IACjC,WAAW;AAAA,IACX,aAAa,QAAQ;AAAA,EACvB,CAAC;AAEH,MAAI,WAAW,WAAW,QAAQ,UAAU,QAAW;AACrD,UAAM,EAAE,UAAU,IAAI,MAAM,UAAU;AAAA,MACpC,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,MACd,SAAS,QAAQ;AAAA,MACjB,aAAa,QAAQ;AAAA,IACvB,CAAC;AACD,WAAO;AAAA,MACL,MAAM;AAAA,QAAO,MACX,QAAQ,MAAM,OAAO;AAAA,UACnB,QAAQ,UAAU;AAAA,UAClB,MAAM,QAAQ;AAAA,UACd,UAAU,QAAQ;AAAA,UAClB,QAAQ,QAAQ;AAAA,UAChB,aAAa,QAAQ;AAAA,QACvB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,QAAM,CAAC,EAAE,WAAW,MAAM,GAAG,EAAE,WAAW,OAAO,CAAC,IAAI,MAAM,QAAQ,IAAI;AAAA,IACtE,UAAU;AAAA,MACR,OAAO,QAAQ,OAAO;AAAA,MACtB,MAAM,QAAQ;AAAA,MACd,SAAS,QAAQ;AAAA,MACjB,aAAa,QAAQ;AAAA,IACvB,CAAC;AAAA,IACD,iBAAiB;AAAA,MACf,OAAO,QAAQ,OAAO;AAAA,MACtB,OAAO,QAAQ;AAAA,MACf,SAAS,QAAQ;AAAA,MACjB,aAAa,QAAQ;AAAA,IACvB,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AAAA,IACL,MAAM;AAAA,MAAO,MACX,QAAQ,MAAM,aAAa;AAAA,QACzB,QAAQ,MAAM;AAAA,QACd,cAAc,OAAO;AAAA,QACrB,QAAQ,QAAQ;AAAA,QAChB,MAAM,QAAQ;AAAA,QACd,UAAU,QAAQ;AAAA,QAClB,QAAQ,QAAQ;AAAA,QAChB,aAAa,QAAQ;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,SAAS,mBACP,SACwC;AACxC,QAAM,WAAW,oBAAI,IAA6C;AAClE,aAAW,UAAU,SAAS;AAC5B,UAAM,UAAU,SAAS,IAAI,OAAO,EAAE;AACtC,QAAI,YAAY,UAAa,OAAO,QAAQ,QAAQ,MAAO,UAAS,IAAI,OAAO,IAAI,MAAM;AAAA,EAC3F;AACA,SAAO,CAAC,GAAG,SAAS,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU,MAAM,QAAQ,KAAK,KAAK;AAC9E;AAEA,SAAS,eACP,SACkC;AAClC,SAAO,YAAY,UAAa,YAAY,QAAQ,SAAY,oBAAoB,OAAO;AAC7F;","names":[]}
|
|
@@ -1,55 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
mapWithConcurrency
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4FIVU53H.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveRetryOptions,
|
|
6
|
-
runWithRetries
|
|
6
|
+
runWithRetries
|
|
7
|
+
} from "./chunk-POXHJF3H.js";
|
|
8
|
+
import {
|
|
7
9
|
throwIfAborted
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
|
|
10
|
-
// src/embeddings/distance.ts
|
|
11
|
-
function dotProduct(left, right) {
|
|
12
|
-
assertSameDimensions(left, right);
|
|
13
|
-
return left.reduce((sum, value, index) => sum + value * right[index], 0);
|
|
14
|
-
}
|
|
15
|
-
function cosineSimilarity(left, right) {
|
|
16
|
-
assertSameDimensions(left, right);
|
|
17
|
-
const leftMagnitude = magnitude(left);
|
|
18
|
-
const rightMagnitude = magnitude(right);
|
|
19
|
-
if (leftMagnitude === 0 || rightMagnitude === 0) {
|
|
20
|
-
return 0;
|
|
21
|
-
}
|
|
22
|
-
return dotProduct(left, right) / (leftMagnitude * rightMagnitude);
|
|
23
|
-
}
|
|
24
|
-
function angularDistance(left, right) {
|
|
25
|
-
const similarity = Math.max(-1, Math.min(1, cosineSimilarity(left, right)));
|
|
26
|
-
return Math.acos(similarity) / Math.PI;
|
|
27
|
-
}
|
|
28
|
-
function euclideanDistance(left, right) {
|
|
29
|
-
assertSameDimensions(left, right);
|
|
30
|
-
return Math.sqrt(
|
|
31
|
-
left.reduce((sum, value, index) => sum + (value - right[index]) ** 2, 0)
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
function manhattanDistance(left, right) {
|
|
35
|
-
assertSameDimensions(left, right);
|
|
36
|
-
return left.reduce((sum, value, index) => sum + Math.abs(value - right[index]), 0);
|
|
37
|
-
}
|
|
38
|
-
function chebyshevDistance(left, right) {
|
|
39
|
-
assertSameDimensions(left, right);
|
|
40
|
-
return left.reduce(
|
|
41
|
-
(max, value, index) => Math.max(max, Math.abs(value - right[index])),
|
|
42
|
-
0
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
function magnitude(vector) {
|
|
46
|
-
return Math.sqrt(vector.reduce((sum, value) => sum + value ** 2, 0));
|
|
47
|
-
}
|
|
48
|
-
function assertSameDimensions(left, right) {
|
|
49
|
-
if (left.length !== right.length) {
|
|
50
|
-
throw new Error(`Vector dimension mismatch: ${left.length} !== ${right.length}`);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
10
|
+
} from "./chunk-USRKPEQN.js";
|
|
53
11
|
|
|
54
12
|
// src/embeddings/embed.ts
|
|
55
13
|
async function embedText(options) {
|
|
@@ -316,16 +274,10 @@ function validateSparseEmbedding(embedding, index) {
|
|
|
316
274
|
}
|
|
317
275
|
|
|
318
276
|
export {
|
|
319
|
-
dotProduct,
|
|
320
|
-
cosineSimilarity,
|
|
321
|
-
angularDistance,
|
|
322
|
-
euclideanDistance,
|
|
323
|
-
manhattanDistance,
|
|
324
|
-
chebyshevDistance,
|
|
325
277
|
embedText,
|
|
326
278
|
embedTexts,
|
|
327
279
|
embedSparseTexts,
|
|
328
280
|
embedSparseQuery,
|
|
329
281
|
embedDocuments
|
|
330
282
|
};
|
|
331
|
-
//# sourceMappingURL=chunk-
|
|
283
|
+
//# sourceMappingURL=chunk-HHMLE3TZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/embeddings/embed.ts"],"sourcesContent":["import { throwIfAborted } from \"../internal/abort\";\nimport { mapWithConcurrency } from \"../internal/concurrency\";\nimport type { ModelCallOptions } from \"../model-call-options\";\nimport { type ResolvedRetryOptions, resolveRetryOptions, runWithRetries } from \"../retry\";\nimport type {\n EmbedDocumentsOptions,\n EmbedDocumentsResult,\n EmbeddedDocument,\n Embedding,\n EmbeddingOperationOptions,\n EmbedHybridDocumentsOptions,\n EmbedSparseQueryOptions,\n EmbedSparseQueryResult,\n EmbedSparseTextsOptions,\n EmbedSparseTextsResult,\n EmbedTextOptions,\n EmbedTextResult,\n EmbedTextsOptions,\n EmbedTextsResult,\n SparseEmbedding,\n VectorMetadata,\n} from \"./types\";\n\nexport async function embedText(options: EmbedTextOptions): Promise<EmbedTextResult> {\n const { embeddings } = await embedTexts({\n model: options.model,\n texts: [options.text],\n retries: options.retries,\n abortSignal: options.abortSignal,\n });\n const embedding = embeddings[0];\n if (embedding === undefined) throw new Error(\"Embedding model returned no embeddings\");\n return { embedding };\n}\n\nexport async function embedTexts(options: EmbedTextsOptions): Promise<EmbedTextsResult> {\n throwIfAborted(options.abortSignal);\n if (options.texts.length === 0) return { embeddings: [] };\n const batches = chunk(options.texts, batchSize(options.model.maxBatchSize, options.texts.length));\n const results = await mapWithConcurrency(batches, concurrency(options.concurrency), (batch) =>\n embedDenseBatch(options.model, batch, options),\n );\n const embeddings = results.flat();\n if (embeddings.length !== options.texts.length) {\n throw new Error(\n `Embedding model returned ${embeddings.length} embeddings for ${options.texts.length} texts`,\n );\n }\n return { embeddings };\n}\n\nexport async function embedSparseTexts(\n options: EmbedSparseTextsOptions,\n): Promise<EmbedSparseTextsResult> {\n throwIfAborted(options.abortSignal);\n if (options.texts.length === 0) return { embeddings: [] };\n const batches = chunk(options.texts, batchSize(options.model.maxBatchSize, options.texts.length));\n const results = await mapWithConcurrency(batches, concurrency(options.concurrency), (batch) =>\n embedSparseBatch(options.model, batch, options),\n );\n const embeddings = results.flat();\n if (embeddings.length !== options.texts.length) {\n throw new Error(\n `Sparse embedding model returned ${embeddings.length} embeddings for ${options.texts.length} texts`,\n );\n }\n return { embeddings };\n}\n\nexport async function embedSparseQuery(\n options: EmbedSparseQueryOptions,\n): Promise<EmbedSparseQueryResult> {\n throwIfAborted(options.abortSignal);\n const embedding = await runWithRetries(\n () => {\n throwIfAborted(options.abortSignal);\n return options.model.embedQuery(options.query, modelCallOptions(options.abortSignal));\n },\n resolveRetries(options),\n { streaming: false, abortSignal: options.abortSignal },\n );\n throwIfAborted(options.abortSignal);\n validateSparseEmbedding(embedding, \"query\");\n return { embedding };\n}\n\nexport function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: EmbedDocumentsOptions<T, Metadata>,\n): Promise<EmbedDocumentsResult<T, Metadata>>;\nexport function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: EmbedHybridDocumentsOptions<T, Metadata>,\n): Promise<EmbedDocumentsResult<T, Metadata>>;\nexport async function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: EmbedDocumentsOptions<T, Metadata> | EmbedHybridDocumentsOptions<T, Metadata>,\n): Promise<EmbedDocumentsResult<T, Metadata>> {\n throwIfAborted(options.abortSignal);\n const prepared = prepareDocuments(options.documents, options);\n const flatTexts = prepared.flatMap((item, documentIndex) =>\n item.texts.map((text) => ({ documentIndex, text })),\n );\n const concurrencyLimit = concurrency(options.concurrency);\n\n if (\"model\" in options && options.model !== undefined) {\n const batches = chunk(flatTexts, batchSize(options.model.maxBatchSize, flatTexts.length || 1));\n const results = await mapWithConcurrency(batches, concurrencyLimit, async (batch) => {\n const embeddings = await embedDenseBatch(\n options.model,\n batch.map((item) => item.text),\n options,\n );\n assertBatchLength(\"Embedding\", embeddings.length, batch.length);\n return batch.map((item, index) => ({\n documentIndex: item.documentIndex,\n embedding: embeddings[index] as Embedding,\n }));\n });\n const byDocument = groupEmbeddings(results.flat());\n return {\n documents: prepared.map((item, index) => embeddedDocument(item, byDocument.get(index) ?? [])),\n };\n }\n\n const { dense, sparse } = options.models;\n const [denseResults, sparseResults] = await Promise.all([\n mapWithConcurrency(\n chunk(flatTexts, batchSize(dense.maxBatchSize, flatTexts.length || 1)),\n concurrencyLimit,\n async (batch) => {\n const embeddings = await embedDenseBatch(\n dense,\n batch.map((item) => item.text),\n options,\n );\n assertBatchLength(\"Embedding\", embeddings.length, batch.length);\n return batch.map((item, index) => ({\n documentIndex: item.documentIndex,\n embedding: embeddings[index] as Embedding,\n }));\n },\n ),\n mapWithConcurrency(\n chunk(flatTexts, batchSize(sparse.maxBatchSize, flatTexts.length || 1)),\n concurrencyLimit,\n async (batch) => {\n const embeddings = await embedSparseBatch(\n sparse,\n batch.map((item) => item.text),\n options,\n );\n assertBatchLength(\"Sparse embedding\", embeddings.length, batch.length);\n return batch.map((item, index) => ({\n documentIndex: item.documentIndex,\n embedding: embeddings[index] as SparseEmbedding,\n }));\n },\n ),\n ]);\n const denseByDocument = groupEmbeddings(denseResults.flat());\n const sparseByDocument = groupEmbeddings(sparseResults.flat());\n return {\n documents: prepared.map((item, index) => {\n const embeddings = denseByDocument.get(index) ?? [];\n const sparseEmbeddings = sparseByDocument.get(index) ?? [];\n if (embeddings.length !== sparseEmbeddings.length) {\n throw new Error(\n `Hybrid embedding produced ${embeddings.length} dense and ${sparseEmbeddings.length} sparse vectors for document ${item.id}`,\n );\n }\n return embeddedDocument(item, embeddings, sparseEmbeddings);\n }),\n };\n}\n\nasync function embedDenseBatch(\n model: EmbedTextOptions[\"model\"],\n texts: string[],\n options: EmbeddingOperationOptions,\n): Promise<Embedding[]> {\n throwIfAborted(options.abortSignal);\n const embeddings = await runWithRetries(\n () => model.embedTexts(texts, modelCallOptions(options.abortSignal)),\n resolveRetries(options),\n { streaming: false, abortSignal: options.abortSignal },\n );\n throwIfAborted(options.abortSignal);\n for (const [index, embedding] of embeddings.entries()) {\n validateDenseEmbedding(embedding, model.dimensions, index);\n }\n return embeddings;\n}\n\nasync function embedSparseBatch(\n model: EmbedSparseTextsOptions[\"model\"],\n texts: string[],\n options: EmbeddingOperationOptions,\n): Promise<SparseEmbedding[]> {\n throwIfAborted(options.abortSignal);\n const embeddings = await runWithRetries(\n () => model.embedTexts(texts, modelCallOptions(options.abortSignal)),\n resolveRetries(options),\n { streaming: false, abortSignal: options.abortSignal },\n );\n throwIfAborted(options.abortSignal);\n for (const [index, embedding] of embeddings.entries()) validateSparseEmbedding(embedding, index);\n return embeddings;\n}\n\nfunction prepareDocuments<T, Metadata extends VectorMetadata>(\n documents: T[],\n options: Pick<EmbedDocumentsOptions<T, Metadata>, \"id\" | \"content\" | \"metadata\">,\n) {\n const ids = new Set<string>();\n return documents.map((document, index) => {\n const id = options.id?.(document, index) ?? `doc${index}`;\n if (id.length === 0) throw new TypeError(\"Embedded document ids must not be empty\");\n if (ids.has(id)) throw new TypeError(`Duplicate embedded document id: ${id}`);\n ids.add(id);\n const content = options.content(document, index);\n if (Array.isArray(content) && content.length === 0)\n throw new TypeError(`Embedded document ${id} must contain at least one text chunk`);\n return {\n id,\n document,\n metadata: options.metadata?.(document, index),\n texts: Array.isArray(content) ? content : [content],\n };\n });\n}\n\nfunction embeddedDocument<T, Metadata extends VectorMetadata>(\n item: { id: string; document: T; metadata: Metadata | undefined },\n embeddings: Embedding[],\n sparseEmbeddings?: SparseEmbedding[],\n): EmbeddedDocument<T, Metadata> {\n let result: EmbeddedDocument<T, Metadata> = {\n id: item.id,\n document: item.document,\n embeddings,\n };\n if (item.metadata !== undefined) {\n result = { ...result, metadata: item.metadata };\n }\n if (sparseEmbeddings !== undefined) {\n result = { ...result, sparseEmbeddings };\n }\n return result;\n}\n\nfunction groupEmbeddings<E>(\n items: Array<{ documentIndex: number; embedding: E }>,\n): Map<number, E[]> {\n const groups = new Map<number, E[]>();\n for (const item of items) {\n const list = groups.get(item.documentIndex) ?? [];\n list.push(item.embedding);\n groups.set(item.documentIndex, list);\n }\n return groups;\n}\n\nfunction assertBatchLength(name: string, actual: number, expected: number): void {\n if (actual !== expected)\n throw new Error(`${name} model returned ${actual} embeddings for ${expected} texts`);\n}\n\nfunction resolveRetries(options: EmbeddingOperationOptions): ResolvedRetryOptions | undefined {\n return options.retries === undefined || options.retries === false\n ? undefined\n : resolveRetryOptions(options.retries);\n}\n\nfunction modelCallOptions(abortSignal: AbortSignal | undefined): ModelCallOptions | undefined {\n return abortSignal === undefined ? undefined : { abortSignal };\n}\n\nfunction chunk<T>(items: T[], size: number): T[][] {\n const chunks: T[][] = [];\n for (let index = 0; index < items.length; index += size)\n chunks.push(items.slice(index, index + size));\n return chunks;\n}\n\nfunction batchSize(configured: number | undefined, fallback: number): number {\n if (configured === undefined) return fallback;\n if (!Number.isSafeInteger(configured) || configured < 1) {\n throw new RangeError(\"Embedding model maxBatchSize must be a positive safe integer\");\n }\n return configured;\n}\n\nfunction concurrency(configured: number | undefined): number {\n if (configured === undefined) return 1;\n if (!Number.isSafeInteger(configured) || configured < 1) {\n throw new RangeError(\"Embedding concurrency must be a positive safe integer\");\n }\n return configured;\n}\n\nfunction validateDenseEmbedding(\n embedding: Embedding,\n dimensions: number | undefined,\n index: number,\n): void {\n if (embedding.vector.length === 0) {\n throw new TypeError(`Embedding model returned an empty vector at index ${index}`);\n }\n if (!embedding.vector.every(Number.isFinite)) {\n throw new TypeError(`Embedding model returned a non-finite vector at index ${index}`);\n }\n if (dimensions !== undefined) {\n if (!Number.isSafeInteger(dimensions) || dimensions < 1)\n throw new TypeError(\"Embedding model dimensions must be a positive safe integer\");\n if (embedding.vector.length !== dimensions) {\n throw new Error(\n `Embedding model returned ${embedding.vector.length} dimensions at index ${index}; expected ${dimensions}`,\n );\n }\n }\n}\n\nfunction validateSparseEmbedding(embedding: SparseEmbedding, index: number | \"query\"): void {\n const { indices, values } = embedding.vector;\n if (indices.length !== values.length) {\n throw new Error(`Sparse embedding at ${index} has mismatched indices and values`);\n }\n if (!indices.every((value) => Number.isSafeInteger(value) && value >= 0)) {\n throw new TypeError(`Sparse embedding at ${index} has an invalid index`);\n }\n if (new Set(indices).size !== indices.length) {\n throw new TypeError(`Sparse embedding at ${index} has duplicate indices`);\n }\n if (!values.every(Number.isFinite)) {\n throw new TypeError(`Sparse embedding at ${index} has a non-finite value`);\n }\n}\n"],"mappings":"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","names":[]}
|