@anvia/core 1.1.2 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +226 -0
- package/dist/agent/agent-stream.js +7 -0
- package/dist/agent/agent-stream.js.map +1 -0
- package/dist/agent/agent-tool.js +24 -0
- package/dist/agent/agent-tool.js.map +1 -0
- package/dist/agent/agent.js +89 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/errors.js +17 -0
- package/dist/agent/errors.js.map +1 -0
- package/dist/agent/ids.js +7 -0
- package/dist/agent/ids.js.map +1 -0
- package/dist/agent/index.d.ts +127 -9
- package/dist/agent/index.js +103 -21
- package/dist/agent/interactions/index.js +2 -2
- package/dist/agent/interactions.js +22 -0
- package/dist/agent/interactions.js.map +1 -0
- package/dist/agent/lifecycle.js +9 -0
- package/dist/agent/lifecycle.js.map +1 -0
- package/dist/agent/output-schema.js +10 -0
- package/dist/agent/output-schema.js.map +1 -0
- package/dist/agent/resolve-options.js +46 -0
- package/dist/agent/resolve-options.js.map +1 -0
- package/dist/agent/resolved-agent.js +92 -0
- package/dist/agent/resolved-agent.js.map +1 -0
- package/dist/agent/run-types.js +1 -0
- package/dist/agent/run-types.js.map +1 -0
- package/dist/agent/snapshot.js +17 -0
- package/dist/agent/snapshot.js.map +1 -0
- package/dist/agent/team/agent-team.js +98 -0
- package/dist/agent/team/agent-team.js.map +1 -0
- package/dist/agent/team/errors.js +9 -0
- package/dist/agent/team/errors.js.map +1 -0
- package/dist/agent/team/index.js +104 -0
- package/dist/agent/team/index.js.map +1 -0
- package/dist/agent/team/types.js +1 -0
- package/dist/agent/team/types.js.map +1 -0
- package/dist/agent/tool-catalog.js +37 -0
- package/dist/agent/tool-catalog.js.map +1 -0
- package/dist/agent/tool-state.js +11 -0
- package/dist/agent/tool-state.js.map +1 -0
- package/dist/agent/types.js +1 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/vector-context.js +10 -0
- package/dist/agent/vector-context.js.map +1 -0
- package/dist/{agent-DTmzs1Qr.d.ts → agent-C9VhENdj.d.ts} +2 -3
- package/dist/{chunk-I3Q7XSBB.js → chunk-23LRXKQX.js} +6 -4
- package/dist/{chunk-I3Q7XSBB.js.map → chunk-23LRXKQX.js.map} +1 -1
- package/dist/{chunk-YK4WAAS4.js → chunk-2NLINXRF.js} +1 -1
- package/dist/{chunk-SPD4XVR7.js → chunk-2XSMGVBG.js} +1 -1
- package/dist/chunk-3J2CSVPR.js +1 -0
- package/dist/chunk-3J2CSVPR.js.map +1 -0
- package/dist/chunk-3P3YVJ7V.js +1 -0
- package/dist/chunk-3P3YVJ7V.js.map +1 -0
- package/dist/chunk-3TAQXJBC.js +107 -0
- package/dist/chunk-3TAQXJBC.js.map +1 -0
- package/dist/chunk-47NTHIVB.js +76 -0
- package/dist/chunk-47NTHIVB.js.map +1 -0
- package/dist/chunk-4AW2633B.js +9 -0
- package/dist/chunk-4AW2633B.js.map +1 -0
- package/dist/{chunk-3XQGVDU5.js → chunk-4C7AXYOM.js} +1 -1
- package/dist/{chunk-IZNOP6JG.js → chunk-4FIVU53H.js} +1 -1
- package/dist/chunk-4ITAV7YA.js +1 -0
- package/dist/chunk-4ITAV7YA.js.map +1 -0
- package/dist/{chunk-7JLAIN6E.js → chunk-4ONUNWGC.js} +2 -2
- package/dist/chunk-4S4OECPW.js +158 -0
- package/dist/chunk-4S4OECPW.js.map +1 -0
- package/dist/chunk-4UUIGAIX.js +1 -0
- package/dist/chunk-4UUIGAIX.js.map +1 -0
- package/dist/chunk-53TPAXYR.js +1 -0
- package/dist/chunk-53TPAXYR.js.map +1 -0
- package/dist/chunk-54ZZJRP2.js +57 -0
- package/dist/chunk-54ZZJRP2.js.map +1 -0
- package/dist/chunk-5FCZ64HM.js +112 -0
- package/dist/chunk-5FCZ64HM.js.map +1 -0
- package/dist/chunk-5I2NVRHC.js +146 -0
- package/dist/chunk-5I2NVRHC.js.map +1 -0
- package/dist/chunk-5IURMWFN.js +53 -0
- package/dist/chunk-5IURMWFN.js.map +1 -0
- package/dist/chunk-5M6GTA3T.js +1 -0
- package/dist/chunk-5M6GTA3T.js.map +1 -0
- package/dist/chunk-5N5W7CX7.js +18 -0
- package/dist/chunk-5N5W7CX7.js.map +1 -0
- package/dist/chunk-5S7T2URX.js +1 -0
- package/dist/chunk-5S7T2URX.js.map +1 -0
- package/dist/chunk-5V533R7F.js +19 -0
- package/dist/chunk-5V533R7F.js.map +1 -0
- package/dist/chunk-5WLIHNNJ.js +56 -0
- package/dist/chunk-5WLIHNNJ.js.map +1 -0
- package/dist/chunk-6BTJC3ES.js +37 -0
- package/dist/chunk-6BTJC3ES.js.map +1 -0
- package/dist/chunk-6N4ENZO4.js +24 -0
- package/dist/chunk-6N4ENZO4.js.map +1 -0
- package/dist/{chunk-4UQALF5Y.js → chunk-6RQYWZI3.js} +2 -36
- package/dist/chunk-6RQYWZI3.js.map +1 -0
- package/dist/chunk-6TAWRKFK.js +86 -0
- package/dist/chunk-6TAWRKFK.js.map +1 -0
- package/dist/chunk-72LBHKYP.js +236 -0
- package/dist/chunk-72LBHKYP.js.map +1 -0
- package/dist/chunk-7F53DOML.js +53 -0
- package/dist/chunk-7F53DOML.js.map +1 -0
- package/dist/chunk-7LBPRXZP.js +1 -0
- package/dist/chunk-7LBPRXZP.js.map +1 -0
- package/dist/chunk-A7BXVZXZ.js +25 -0
- package/dist/chunk-A7BXVZXZ.js.map +1 -0
- package/dist/chunk-AOG6KSV4.js +107 -0
- package/dist/chunk-AOG6KSV4.js.map +1 -0
- package/dist/chunk-B47EXUHL.js +67 -0
- package/dist/chunk-B47EXUHL.js.map +1 -0
- package/dist/chunk-B5JQDR33.js +14 -0
- package/dist/chunk-B5JQDR33.js.map +1 -0
- package/dist/chunk-BDDC72GF.js +189 -0
- package/dist/chunk-BDDC72GF.js.map +1 -0
- package/dist/chunk-BDKFFFVX.js +342 -0
- package/dist/chunk-BDKFFFVX.js.map +1 -0
- package/dist/{chunk-QGX73TSQ.js → chunk-BONQTXRQ.js} +3 -12
- package/dist/chunk-BONQTXRQ.js.map +1 -0
- package/dist/chunk-BUPC72Y2.js +1007 -0
- package/dist/chunk-BUPC72Y2.js.map +1 -0
- package/dist/chunk-CKKNO4XB.js +70 -0
- package/dist/chunk-CKKNO4XB.js.map +1 -0
- package/dist/chunk-CX7ZVTO5.js +22 -0
- package/dist/chunk-CX7ZVTO5.js.map +1 -0
- package/dist/chunk-DU4WA6LQ.js +1 -0
- package/dist/chunk-DU4WA6LQ.js.map +1 -0
- package/dist/chunk-EJR6VVB3.js +63 -0
- package/dist/chunk-EJR6VVB3.js.map +1 -0
- package/dist/chunk-EKZRAWBP.js +110 -0
- package/dist/chunk-EKZRAWBP.js.map +1 -0
- package/dist/chunk-ENZ2XX27.js +26 -0
- package/dist/chunk-ENZ2XX27.js.map +1 -0
- package/dist/chunk-EOAJBBII.js +1 -0
- package/dist/chunk-EOAJBBII.js.map +1 -0
- package/dist/chunk-ERN7P6Q4.js +1 -0
- package/dist/chunk-ERN7P6Q4.js.map +1 -0
- package/dist/chunk-ESOFEAYK.js +57 -0
- package/dist/chunk-ESOFEAYK.js.map +1 -0
- package/dist/chunk-ETYB5JO6.js +175 -0
- package/dist/chunk-ETYB5JO6.js.map +1 -0
- package/dist/chunk-EZR5AV3J.js +74 -0
- package/dist/chunk-EZR5AV3J.js.map +1 -0
- package/dist/chunk-F2OKLHGB.js +9 -0
- package/dist/chunk-F2OKLHGB.js.map +1 -0
- package/dist/chunk-F3E2RLC7.js +342 -0
- package/dist/chunk-F3E2RLC7.js.map +1 -0
- package/dist/chunk-FAPIZJS2.js +54 -0
- package/dist/chunk-FAPIZJS2.js.map +1 -0
- package/dist/{chunk-2QZJTG2E.js → chunk-G336L2IE.js} +11 -71
- package/dist/chunk-G336L2IE.js.map +1 -0
- package/dist/chunk-GDJNOZ47.js +1 -0
- package/dist/chunk-GDJNOZ47.js.map +1 -0
- package/dist/chunk-GDY2Z2SZ.js +83 -0
- package/dist/chunk-GDY2Z2SZ.js.map +1 -0
- package/dist/chunk-GLMYZ6OA.js +20 -0
- package/dist/chunk-GLMYZ6OA.js.map +1 -0
- package/dist/{chunk-XEVOC433.js → chunk-GPVXCY5I.js} +2 -73
- package/dist/chunk-GPVXCY5I.js.map +1 -0
- package/dist/{chunk-KSKST3KP.js → chunk-H3H74RWJ.js} +1 -1
- package/dist/chunk-HAAGSIZH.js +89 -0
- package/dist/chunk-HAAGSIZH.js.map +1 -0
- package/dist/{chunk-K5L7R7XM.js → chunk-HHMLE3TZ.js} +6 -54
- package/dist/chunk-HHMLE3TZ.js.map +1 -0
- package/dist/{chunk-JLJMVRRE.js → chunk-HP34GRQX.js} +10 -83
- package/dist/chunk-HP34GRQX.js.map +1 -0
- package/dist/chunk-HTI343NP.js +1 -0
- package/dist/chunk-HTI343NP.js.map +1 -0
- package/dist/{chunk-T2C3CGDQ.js → chunk-HTI7DZJM.js} +6 -4
- package/dist/{chunk-T2C3CGDQ.js.map → chunk-HTI7DZJM.js.map} +1 -1
- package/dist/chunk-IDNL6IH4.js +294 -0
- package/dist/chunk-IDNL6IH4.js.map +1 -0
- package/dist/chunk-IV6YQTY2.js +47 -0
- package/dist/chunk-IV6YQTY2.js.map +1 -0
- package/dist/chunk-J4SINPUA.js +939 -0
- package/dist/chunk-J4SINPUA.js.map +1 -0
- package/dist/chunk-J6S6MT7O.js +32 -0
- package/dist/chunk-J6S6MT7O.js.map +1 -0
- package/dist/chunk-JBQNCUXA.js +34 -0
- package/dist/chunk-JBQNCUXA.js.map +1 -0
- package/dist/chunk-JMJFK3A4.js +1 -0
- package/dist/chunk-JMJFK3A4.js.map +1 -0
- package/dist/chunk-JMMZICU7.js +74 -0
- package/dist/chunk-JMMZICU7.js.map +1 -0
- package/dist/chunk-K4IBS7VB.js +55 -0
- package/dist/chunk-K4IBS7VB.js.map +1 -0
- package/dist/chunk-KBBQSP4M.js +16 -0
- package/dist/chunk-KBBQSP4M.js.map +1 -0
- package/dist/chunk-KFAVEL5F.js +68 -0
- package/dist/chunk-KFAVEL5F.js.map +1 -0
- package/dist/chunk-KITX3HDN.js +17 -0
- package/dist/chunk-KITX3HDN.js.map +1 -0
- package/dist/chunk-KO5NMTAM.js +1 -0
- package/dist/chunk-KO5NMTAM.js.map +1 -0
- package/dist/chunk-KY4VXIN2.js +118 -0
- package/dist/chunk-KY4VXIN2.js.map +1 -0
- package/dist/chunk-KZGSXJKU.js +29 -0
- package/dist/chunk-KZGSXJKU.js.map +1 -0
- package/dist/chunk-LAIATEUB.js +24 -0
- package/dist/chunk-LAIATEUB.js.map +1 -0
- package/dist/{chunk-OJBFDBLG.js → chunk-LBYJPMHC.js} +2 -2
- package/dist/chunk-LKIABZNR.js +49 -0
- package/dist/chunk-LKIABZNR.js.map +1 -0
- package/dist/chunk-LQJ4KHMY.js +23 -0
- package/dist/chunk-LQJ4KHMY.js.map +1 -0
- package/dist/chunk-MEN4AFDZ.js +1 -0
- package/dist/chunk-MEN4AFDZ.js.map +1 -0
- package/dist/chunk-MHOJJYDK.js +93 -0
- package/dist/chunk-MHOJJYDK.js.map +1 -0
- package/dist/chunk-MJCMKZFP.js +30 -0
- package/dist/chunk-MJCMKZFP.js.map +1 -0
- package/dist/chunk-MNYMLWWA.js +168 -0
- package/dist/chunk-MNYMLWWA.js.map +1 -0
- package/dist/chunk-MT3BLVYN.js +31 -0
- package/dist/chunk-MT3BLVYN.js.map +1 -0
- package/dist/chunk-NF6WBPFG.js +37 -0
- package/dist/chunk-NF6WBPFG.js.map +1 -0
- package/dist/chunk-NNEKBZSM.js +66 -0
- package/dist/chunk-NNEKBZSM.js.map +1 -0
- package/dist/chunk-NPJ2T3L5.js +19 -0
- package/dist/chunk-NPJ2T3L5.js.map +1 -0
- package/dist/chunk-NVALGVQG.js +150 -0
- package/dist/chunk-NVALGVQG.js.map +1 -0
- package/dist/chunk-O6DTOCBM.js +355 -0
- package/dist/chunk-O6DTOCBM.js.map +1 -0
- package/dist/chunk-OJF67RNM.js +1 -0
- package/dist/chunk-OJF67RNM.js.map +1 -0
- package/dist/chunk-PHLGGRHC.js +89 -0
- package/dist/chunk-PHLGGRHC.js.map +1 -0
- package/dist/chunk-PIMD4DYG.js +104 -0
- package/dist/chunk-PIMD4DYG.js.map +1 -0
- package/dist/chunk-PJNE75WC.js +1 -0
- package/dist/chunk-PJNE75WC.js.map +1 -0
- package/dist/{chunk-J6LVLV6P.js → chunk-PLDJCCVL.js} +1 -1
- package/dist/{chunk-3RWESPUG.js → chunk-POXHJF3H.js} +6 -51
- package/dist/chunk-POXHJF3H.js.map +1 -0
- package/dist/chunk-PPJ7SYQL.js +81 -0
- package/dist/chunk-PPJ7SYQL.js.map +1 -0
- package/dist/chunk-QHGYCYV6.js +91 -0
- package/dist/chunk-QHGYCYV6.js.map +1 -0
- package/dist/chunk-QUS6S2NB.js +663 -0
- package/dist/chunk-QUS6S2NB.js.map +1 -0
- package/dist/chunk-R6722CIU.js +28 -0
- package/dist/chunk-R6722CIU.js.map +1 -0
- package/dist/chunk-RA4YVN43.js +1 -0
- package/dist/chunk-RA4YVN43.js.map +1 -0
- package/dist/chunk-RT5LUEO3.js +2339 -0
- package/dist/chunk-RT5LUEO3.js.map +1 -0
- package/dist/chunk-SC4SUIEY.js +1 -0
- package/dist/chunk-SC4SUIEY.js.map +1 -0
- package/dist/chunk-SIYZDPVH.js +613 -0
- package/dist/chunk-SIYZDPVH.js.map +1 -0
- package/dist/chunk-SQAAVYJG.js +12 -0
- package/dist/chunk-SQAAVYJG.js.map +1 -0
- package/dist/chunk-SXE4J43E.js +59 -0
- package/dist/chunk-SXE4J43E.js.map +1 -0
- package/dist/{chunk-EFLT7XZD.js → chunk-SYULMZGL.js} +6 -4
- package/dist/{chunk-EFLT7XZD.js.map → chunk-SYULMZGL.js.map} +1 -1
- package/dist/chunk-T4IAJJUU.js +48 -0
- package/dist/chunk-T4IAJJUU.js.map +1 -0
- package/dist/chunk-T4KS577P.js +58 -0
- package/dist/chunk-T4KS577P.js.map +1 -0
- package/dist/chunk-TFIOU6UR.js +78 -0
- package/dist/chunk-TFIOU6UR.js.map +1 -0
- package/dist/chunk-TIZGADU4.js +375 -0
- package/dist/chunk-TIZGADU4.js.map +1 -0
- package/dist/chunk-TP3MCUXS.js +1 -0
- package/dist/chunk-TP3MCUXS.js.map +1 -0
- package/dist/{chunk-JTJU56ZV.js → chunk-UOGM62JL.js} +11 -7
- package/dist/{chunk-JTJU56ZV.js.map → chunk-UOGM62JL.js.map} +1 -1
- package/dist/chunk-USRKPEQN.js +55 -0
- package/dist/chunk-USRKPEQN.js.map +1 -0
- package/dist/chunk-UTAB3XQI.js +667 -0
- package/dist/chunk-UTAB3XQI.js.map +1 -0
- package/dist/chunk-V3FFZWF3.js +182 -0
- package/dist/chunk-V3FFZWF3.js.map +1 -0
- package/dist/chunk-V4OZ7ISA.js +9 -0
- package/dist/chunk-V4OZ7ISA.js.map +1 -0
- package/dist/chunk-VZ5ZZBNX.js +139 -0
- package/dist/chunk-VZ5ZZBNX.js.map +1 -0
- package/dist/{chunk-AHLKV6KP.js → chunk-WN6AVBO4.js} +1 -1
- package/dist/chunk-WXR5CWSC.js +1 -0
- package/dist/chunk-WXR5CWSC.js.map +1 -0
- package/dist/chunk-X6WS3XWL.js +36 -0
- package/dist/chunk-X6WS3XWL.js.map +1 -0
- package/dist/{chunk-Q5BCNYED.js → chunk-XJRNBTIV.js} +7 -4
- package/dist/chunk-XQV3XNVT.js +225 -0
- package/dist/chunk-XQV3XNVT.js.map +1 -0
- package/dist/chunk-XV3DH5GC.js +58 -0
- package/dist/chunk-XV3DH5GC.js.map +1 -0
- package/dist/chunk-Y7JTHNCU.js +318 -0
- package/dist/chunk-Y7JTHNCU.js.map +1 -0
- package/dist/chunk-YWRXOPHC.js +43 -0
- package/dist/chunk-YWRXOPHC.js.map +1 -0
- package/dist/chunk-YZVFIW5D.js +27 -0
- package/dist/chunk-YZVFIW5D.js.map +1 -0
- package/dist/chunk-ZHC5CD6J.js +33 -0
- package/dist/chunk-ZHC5CD6J.js.map +1 -0
- package/dist/chunk-ZPJFXRQZ.js +23 -0
- package/dist/chunk-ZPJFXRQZ.js.map +1 -0
- package/dist/chunk-ZPXOBQDS.js +57 -0
- package/dist/chunk-ZPXOBQDS.js.map +1 -0
- package/dist/chunk-ZUFS6R7L.js +155 -0
- package/dist/chunk-ZUFS6R7L.js.map +1 -0
- package/dist/chunk-ZXLCTQUX.js +62 -0
- package/dist/chunk-ZXLCTQUX.js.map +1 -0
- package/dist/chunk-ZYXMWEL4.js +59 -0
- package/dist/chunk-ZYXMWEL4.js.map +1 -0
- package/dist/completion/controls.js +11 -0
- package/dist/completion/controls.js.map +1 -0
- package/dist/completion/documents.js +9 -0
- package/dist/completion/documents.js.map +1 -0
- package/dist/completion/generate-completion.js +23 -0
- package/dist/completion/generate-completion.js.map +1 -0
- package/dist/completion/index.js +23 -12
- package/dist/completion/json.js +7 -0
- package/dist/completion/json.js.map +1 -0
- package/dist/completion/message-schema.js +18 -0
- package/dist/completion/message-schema.js.map +1 -0
- package/dist/completion/provider-output-error.js +12 -0
- package/dist/completion/provider-output-error.js.map +1 -0
- package/dist/completion/stream-accumulator.js +10 -0
- package/dist/completion/stream-accumulator.js.map +1 -0
- package/dist/completion/types.js +28 -0
- package/dist/completion/types.js.map +1 -0
- package/dist/documents/chunk-text.js +7 -0
- package/dist/documents/chunk-text.js.map +1 -0
- package/dist/documents/index.js +5 -2
- package/dist/documents/text-document.js +8 -0
- package/dist/documents/text-document.js.map +1 -0
- package/dist/embeddings/distance.js +17 -0
- package/dist/embeddings/distance.js.map +1 -0
- package/dist/embeddings/embed.js +18 -0
- package/dist/embeddings/embed.js.map +1 -0
- package/dist/embeddings/index.js +11 -6
- package/dist/embeddings/types.js +2 -0
- package/dist/embeddings/types.js.map +1 -0
- package/dist/evals/advanced-metrics.js +46 -0
- package/dist/evals/advanced-metrics.js.map +1 -0
- package/dist/evals/agent-target.js +10 -0
- package/dist/evals/agent-target.js.map +1 -0
- package/dist/evals/cli.js +40 -0
- package/dist/evals/cli.js.map +1 -0
- package/dist/evals/execution.js +15 -0
- package/dist/evals/execution.js.map +1 -0
- package/dist/evals/format.js +13 -0
- package/dist/evals/format.js.map +1 -0
- package/dist/evals/index.d.ts +4 -4
- package/dist/evals/index.js +87 -2660
- package/dist/evals/index.js.map +1 -1
- package/dist/evals/judge.js +27 -0
- package/dist/evals/judge.js.map +1 -0
- package/dist/evals/metric.js +7 -0
- package/dist/evals/metric.js.map +1 -0
- package/dist/evals/metrics.js +53 -0
- package/dist/evals/metrics.js.map +1 -0
- package/dist/evals/outcome.js +7 -0
- package/dist/evals/outcome.js.map +1 -0
- package/dist/evals/reporting.js +11 -0
- package/dist/evals/reporting.js.map +1 -0
- package/dist/evals/runner.js +29 -0
- package/dist/evals/runner.js.map +1 -0
- package/dist/evals/selectors.js +18 -0
- package/dist/evals/selectors.js.map +1 -0
- package/dist/evals/suite.js +11 -0
- package/dist/evals/suite.js.map +1 -0
- package/dist/evals/types.js +1 -0
- package/dist/evals/types.js.map +1 -0
- package/dist/extractor/extractor.js +23 -0
- package/dist/extractor/extractor.js.map +1 -0
- package/dist/extractor/index.js +16 -7
- package/dist/guardrails/actions.js +13 -0
- package/dist/guardrails/actions.js.map +1 -0
- package/dist/guardrails/index.d.ts +3 -4
- package/dist/guardrails/index.js +15 -7
- package/dist/guardrails/message.js +9 -0
- package/dist/guardrails/message.js.map +1 -0
- package/dist/guardrails/policy.js +17 -0
- package/dist/guardrails/policy.js.map +1 -0
- package/dist/guardrails/runtime.js +11 -0
- package/dist/guardrails/runtime.js.map +1 -0
- package/dist/guardrails/text.js +9 -0
- package/dist/guardrails/text.js.map +1 -0
- package/dist/guardrails/types.js +1 -0
- package/dist/guardrails/types.js.map +1 -0
- package/dist/hooks/control.js +17 -0
- package/dist/hooks/control.js.map +1 -0
- package/dist/hooks/index.js +19 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/types.js +2 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/image-generation/generate-image.js +11 -0
- package/dist/image-generation/generate-image.js.map +1 -0
- package/dist/image-generation/index.js +7 -4
- package/dist/image-generation/types.js +2 -0
- package/dist/image-generation/types.js.map +1 -0
- package/dist/index.d.ts +5 -7
- package/dist/index.js +163 -57
- package/dist/internal/abort.js +13 -0
- package/dist/internal/abort.js.map +1 -0
- package/dist/internal/agent-runtime/agent-run.js +81 -0
- package/dist/internal/agent-runtime/agent-run.js.map +1 -0
- package/dist/internal/agent-runtime/approval-request.js +1 -0
- package/dist/internal/agent-runtime/approval-request.js.map +1 -0
- package/dist/internal/agent-runtime/approval-requirement.js +9 -0
- package/dist/internal/agent-runtime/approval-requirement.js.map +1 -0
- package/dist/internal/agent-runtime/continuation-state.js +26 -0
- package/dist/internal/agent-runtime/continuation-state.js.map +1 -0
- package/dist/internal/agent-runtime/interaction-suspension.js +25 -0
- package/dist/internal/agent-runtime/interaction-suspension.js.map +1 -0
- package/dist/internal/agent-runtime/memory-scope.js +8 -0
- package/dist/internal/agent-runtime/memory-scope.js.map +1 -0
- package/dist/internal/agent-runtime/memory.js +24 -0
- package/dist/internal/agent-runtime/memory.js.map +1 -0
- package/dist/internal/agent-runtime/prepared-tool-call.js +19 -0
- package/dist/internal/agent-runtime/prepared-tool-call.js.map +1 -0
- package/dist/internal/agent-runtime/retrieval.js +35 -0
- package/dist/internal/agent-runtime/retrieval.js.map +1 -0
- package/dist/internal/agent-runtime/run-options.js +9 -0
- package/dist/internal/agent-runtime/run-options.js.map +1 -0
- package/dist/internal/agent-runtime/run-validation.js +9 -0
- package/dist/internal/agent-runtime/run-validation.js.map +1 -0
- package/dist/internal/agent-runtime/stream-events.js +11 -0
- package/dist/internal/agent-runtime/stream-events.js.map +1 -0
- package/dist/internal/agent-runtime/structured-output.js +13 -0
- package/dist/internal/agent-runtime/structured-output.js.map +1 -0
- package/dist/internal/agent-runtime/tool-execution.js +55 -0
- package/dist/internal/agent-runtime/tool-execution.js.map +1 -0
- package/dist/internal/agent.d.ts +5 -5
- package/dist/internal/agent.js +93 -57
- package/dist/internal/agent.js.map +1 -1
- package/dist/internal/async-queue.js +7 -0
- package/dist/internal/async-queue.js.map +1 -0
- package/dist/internal/completion-request.js +11 -0
- package/dist/internal/completion-request.js.map +1 -0
- package/dist/internal/concurrency.js +7 -0
- package/dist/internal/concurrency.js.map +1 -0
- package/dist/internal/json-object.js +8 -0
- package/dist/internal/json-object.js.map +1 -0
- package/dist/internal/rag-text.js +7 -0
- package/dist/internal/rag-text.js.map +1 -0
- package/dist/internal/record.js +7 -0
- package/dist/internal/record.js.map +1 -0
- package/dist/internal/team-runtime/coordination.js +12 -0
- package/dist/internal/team-runtime/coordination.js.map +1 -0
- package/dist/internal/team-runtime/member.js +26 -0
- package/dist/internal/team-runtime/member.js.map +1 -0
- package/dist/internal/team-runtime/policy.js +7 -0
- package/dist/internal/team-runtime/policy.js.map +1 -0
- package/dist/internal/team-runtime/run.js +95 -0
- package/dist/internal/team-runtime/run.js.map +1 -0
- package/dist/internal/team-runtime/stream.js +9 -0
- package/dist/internal/team-runtime/stream.js.map +1 -0
- package/dist/internal/team-runtime/tools.js +17 -0
- package/dist/internal/team-runtime/tools.js.map +1 -0
- package/dist/internal/type-utils.js +1 -0
- package/dist/internal/type-utils.js.map +1 -0
- package/dist/internal/vector-search-options.js +9 -0
- package/dist/internal/vector-search-options.js.map +1 -0
- package/dist/mcp/index.js +3 -1
- package/dist/mcp/tool.js +7 -0
- package/dist/mcp/tool.js.map +1 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/memory/assert.js +11 -0
- package/dist/memory/assert.js.map +1 -0
- package/dist/memory/compaction.js +26 -0
- package/dist/memory/compaction.js.map +1 -0
- package/dist/memory/errors.js +9 -0
- package/dist/memory/errors.js.map +1 -0
- package/dist/memory/index.js +23 -10
- package/dist/memory/options.js +10 -0
- package/dist/memory/options.js.map +1 -0
- package/dist/memory/scope-key.js +7 -0
- package/dist/memory/scope-key.js.map +1 -0
- package/dist/memory/types.js +2 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/{types-CRda8x7p.d.ts → middleware-CWjnMbiH.d.ts} +64 -5
- package/dist/model-call-options.js +1 -0
- package/dist/model-call-options.js.map +1 -0
- package/dist/model-listing/errors.js +7 -0
- package/dist/model-listing/errors.js.map +1 -0
- package/dist/model-listing/index.js +4 -13
- package/dist/model-listing/index.js.map +1 -1
- package/dist/model-listing/types.js +2 -0
- package/dist/model-listing/types.js.map +1 -0
- package/dist/observability/group.js +30 -0
- package/dist/observability/group.js.map +1 -0
- package/dist/observability/index.d.ts +4 -6
- package/dist/observability/index.js +16 -8
- package/dist/observability/snapshot.js +7 -0
- package/dist/observability/snapshot.js.map +1 -0
- package/dist/observability/types.js +1 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/pipeline/errors.js +9 -0
- package/dist/pipeline/errors.js.map +1 -0
- package/dist/pipeline/graph.js +21 -0
- package/dist/pipeline/graph.js.map +1 -0
- package/dist/pipeline/index.d.ts +4 -6
- package/dist/pipeline/index.js +27 -805
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/observability.js +15 -0
- package/dist/pipeline/observability.js.map +1 -0
- package/dist/pipeline/pipeline.js +30 -0
- package/dist/pipeline/pipeline.js.map +1 -0
- package/dist/pipeline/runtime.js +17 -0
- package/dist/pipeline/runtime.js.map +1 -0
- package/dist/pipeline/types.js +1 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/retry.js +20 -0
- package/dist/retry.js.map +1 -0
- package/dist/schema/index.js +1 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/zod-schema.js +7 -0
- package/dist/schema/zod-schema.js.map +1 -0
- package/dist/skills/index.js +41 -12
- package/dist/skills/instructions.js +7 -0
- package/dist/skills/instructions.js.map +1 -0
- package/dist/skills/load.js +39 -0
- package/dist/skills/load.js.map +1 -0
- package/dist/skills/local.js +9 -0
- package/dist/skills/local.js.map +1 -0
- package/dist/skills/tools.js +37 -0
- package/dist/skills/tools.js.map +1 -0
- package/dist/skills/types.js +7 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/speech-generation/generate-speech.js +11 -0
- package/dist/speech-generation/generate-speech.js.map +1 -0
- package/dist/speech-generation/index.js +7 -4
- package/dist/speech-generation/types.js +2 -0
- package/dist/speech-generation/types.js.map +1 -0
- package/dist/streaming/index.js +4 -37
- package/dist/streaming/index.js.map +1 -1
- package/dist/streaming/readable-stream.js +8 -0
- package/dist/streaming/readable-stream.js.map +1 -0
- package/dist/{text-CmjXxakS.d.ts → text-GbW4WYMg.d.ts} +1 -1
- package/dist/tool/create-tool.js +14 -0
- package/dist/tool/create-tool.js.map +1 -0
- package/dist/tool/dynamic-tools.js +35 -0
- package/dist/tool/dynamic-tools.js.map +1 -0
- package/dist/tool/errors.js +11 -0
- package/dist/tool/errors.js.map +1 -0
- package/dist/tool/index.d.ts +3 -2
- package/dist/tool/index.js +41 -15
- package/dist/tool/middleware.js +7 -0
- package/dist/tool/middleware.js.map +1 -0
- package/dist/tool/question-tool.js +17 -0
- package/dist/tool/question-tool.js.map +1 -0
- package/dist/tool/skill-tool-marker.js +9 -0
- package/dist/tool/skill-tool-marker.js.map +1 -0
- package/dist/tool/think-tool.js +15 -0
- package/dist/tool/think-tool.js.map +1 -0
- package/dist/tool/tool.js +17 -0
- package/dist/tool/tool.js.map +1 -0
- package/dist/transcription/index.js +7 -4
- package/dist/transcription/transcribe.js +11 -0
- package/dist/transcription/transcribe.js.map +1 -0
- package/dist/transcription/types.js +2 -0
- package/dist/transcription/types.js.map +1 -0
- package/dist/{types-h0EL6Xn0.d.ts → types-Bqw0AuFl.d.ts} +6 -2
- package/dist/vector-store/filter.js +9 -0
- package/dist/vector-store/filter.js.map +1 -0
- package/dist/vector-store/index.js +31 -11
- package/dist/vector-store/ingest.js +19 -0
- package/dist/vector-store/ingest.js.map +1 -0
- package/dist/vector-store/lsh.js +7 -0
- package/dist/vector-store/lsh.js.map +1 -0
- package/dist/vector-store/retrieve.js +15 -0
- package/dist/vector-store/retrieve.js.map +1 -0
- package/dist/vector-store/types.js +1 -0
- package/dist/vector-store/types.js.map +1 -0
- package/package.json +2 -2
- package/dist/chunk-2QZJTG2E.js.map +0 -1
- package/dist/chunk-3RWESPUG.js.map +0 -1
- package/dist/chunk-4UQALF5Y.js.map +0 -1
- package/dist/chunk-AZB6N7P4.js +0 -320
- package/dist/chunk-AZB6N7P4.js.map +0 -1
- package/dist/chunk-JLJMVRRE.js.map +0 -1
- package/dist/chunk-K5L7R7XM.js.map +0 -1
- package/dist/chunk-OI3LSMJG.js +0 -1545
- package/dist/chunk-OI3LSMJG.js.map +0 -1
- package/dist/chunk-QGX73TSQ.js.map +0 -1
- package/dist/chunk-XC3LVC4K.js +0 -753
- package/dist/chunk-XC3LVC4K.js.map +0 -1
- package/dist/chunk-XEVOC433.js.map +0 -1
- package/dist/chunk-XSV5C4R5.js +0 -400
- package/dist/chunk-XSV5C4R5.js.map +0 -1
- package/dist/chunk-XU54PLSD.js +0 -4786
- package/dist/chunk-XU54PLSD.js.map +0 -1
- package/dist/middleware-mY_lpjDp.d.ts +0 -59
- package/dist/type-utils-CtHVDRn_.d.ts +0 -6
- /package/dist/{chunk-YK4WAAS4.js.map → chunk-2NLINXRF.js.map} +0 -0
- /package/dist/{chunk-SPD4XVR7.js.map → chunk-2XSMGVBG.js.map} +0 -0
- /package/dist/{chunk-3XQGVDU5.js.map → chunk-4C7AXYOM.js.map} +0 -0
- /package/dist/{chunk-IZNOP6JG.js.map → chunk-4FIVU53H.js.map} +0 -0
- /package/dist/{chunk-7JLAIN6E.js.map → chunk-4ONUNWGC.js.map} +0 -0
- /package/dist/{chunk-KSKST3KP.js.map → chunk-H3H74RWJ.js.map} +0 -0
- /package/dist/{chunk-OJBFDBLG.js.map → chunk-LBYJPMHC.js.map} +0 -0
- /package/dist/{chunk-J6LVLV6P.js.map → chunk-PLDJCCVL.js.map} +0 -0
- /package/dist/{chunk-AHLKV6KP.js.map → chunk-WN6AVBO4.js.map} +0 -0
- /package/dist/{chunk-Q5BCNYED.js.map → chunk-XJRNBTIV.js.map} +0 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import {
|
|
2
|
+
defineInputGuardrail,
|
|
3
|
+
defineOutputGuardrail
|
|
4
|
+
} from "./chunk-6BTJC3ES.js";
|
|
5
|
+
import {
|
|
6
|
+
allow,
|
|
7
|
+
block
|
|
8
|
+
} from "./chunk-MT3BLVYN.js";
|
|
9
|
+
|
|
10
|
+
// src/guardrails/text.ts
|
|
11
|
+
var guardrails = {
|
|
12
|
+
blockText,
|
|
13
|
+
redactText
|
|
14
|
+
};
|
|
15
|
+
function blockText(options) {
|
|
16
|
+
return textPatternGuardrail(options, "block");
|
|
17
|
+
}
|
|
18
|
+
function redactText(options) {
|
|
19
|
+
return textPatternGuardrail(options, "rewrite");
|
|
20
|
+
}
|
|
21
|
+
function textPatternGuardrail(options, action) {
|
|
22
|
+
if (options.boundary === "input") {
|
|
23
|
+
return defineInputGuardrail({
|
|
24
|
+
id: options.id,
|
|
25
|
+
check(ctx, actions) {
|
|
26
|
+
return textPatternAction(
|
|
27
|
+
ctx.inputText,
|
|
28
|
+
options,
|
|
29
|
+
action,
|
|
30
|
+
(value) => actions.rewrite({ inputText: value, reason: options.reason })
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return defineOutputGuardrail({
|
|
36
|
+
id: options.id,
|
|
37
|
+
check(ctx, actions) {
|
|
38
|
+
return textPatternAction(
|
|
39
|
+
ctx.outputText,
|
|
40
|
+
options,
|
|
41
|
+
action,
|
|
42
|
+
(value) => actions.rewrite({ outputText: value, reason: options.reason })
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function textPatternAction(text, options, action, rewrite) {
|
|
48
|
+
const matched = options.patterns.some((pattern) => textPatternMatches(text, pattern));
|
|
49
|
+
if (!matched) {
|
|
50
|
+
return allow();
|
|
51
|
+
}
|
|
52
|
+
if (action === "block") {
|
|
53
|
+
return block({
|
|
54
|
+
reason: options.reason,
|
|
55
|
+
message: options.message
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
let current = text;
|
|
59
|
+
for (const pattern of options.patterns) {
|
|
60
|
+
current = replaceTextPattern(current, pattern, options.replacement ?? "[redacted]");
|
|
61
|
+
}
|
|
62
|
+
return rewrite(current);
|
|
63
|
+
}
|
|
64
|
+
function textPatternMatches(text, pattern) {
|
|
65
|
+
if (typeof pattern === "string") {
|
|
66
|
+
return text.includes(pattern);
|
|
67
|
+
}
|
|
68
|
+
pattern.lastIndex = 0;
|
|
69
|
+
const matched = pattern.test(text);
|
|
70
|
+
pattern.lastIndex = 0;
|
|
71
|
+
return matched;
|
|
72
|
+
}
|
|
73
|
+
function replaceTextPattern(text, pattern, replacement) {
|
|
74
|
+
if (typeof pattern === "string") {
|
|
75
|
+
return text.split(pattern).join(replacement);
|
|
76
|
+
}
|
|
77
|
+
pattern.lastIndex = 0;
|
|
78
|
+
const flags = pattern.flags.replace("y", "");
|
|
79
|
+
const globalFlags = flags.includes("g") ? flags : `${flags}g`;
|
|
80
|
+
return text.replace(new RegExp(pattern.source, globalFlags), replacement);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export {
|
|
84
|
+
guardrails
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=chunk-6TAWRKFK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/guardrails/text.ts"],"sourcesContent":["import { allow, block } from \"./actions\";\nimport { defineInputGuardrail, defineOutputGuardrail } from \"./policy\";\nimport type { GuardrailAllow, GuardrailBlock, InputGuardrail, OutputGuardrail } from \"./types\";\n\nexport const guardrails = {\n blockText,\n redactText,\n};\n\ntype TextPatternBoundary = \"input\" | \"output\";\n\ntype TextPatternGuardrailFor<Boundary extends TextPatternBoundary> = Boundary extends \"input\"\n ? InputGuardrail\n : OutputGuardrail;\n\ntype TextPatternGuardrailOptions<Boundary extends TextPatternBoundary = TextPatternBoundary> = {\n id: string;\n boundary: Boundary;\n patterns: Array<string | RegExp>;\n reason: string;\n message?: string | undefined;\n};\n\ntype TextPatternRedactOptions<Boundary extends TextPatternBoundary = TextPatternBoundary> =\n TextPatternGuardrailOptions<Boundary> & { replacement?: string | undefined };\n\nfunction blockText<Boundary extends TextPatternBoundary>(\n options: TextPatternGuardrailOptions<Boundary>,\n): TextPatternGuardrailFor<Boundary> {\n return textPatternGuardrail(options, \"block\");\n}\n\nfunction redactText<Boundary extends TextPatternBoundary>(\n options: TextPatternRedactOptions<Boundary>,\n): TextPatternGuardrailFor<Boundary> {\n return textPatternGuardrail(options, \"rewrite\");\n}\n\nfunction textPatternGuardrail<Boundary extends TextPatternBoundary>(\n options: TextPatternRedactOptions<Boundary>,\n action: \"block\" | \"rewrite\",\n): TextPatternGuardrailFor<Boundary> {\n if (options.boundary === \"input\") {\n return defineInputGuardrail({\n id: options.id,\n check(ctx, actions) {\n return textPatternAction(ctx.inputText, options, action, (value) =>\n actions.rewrite({ inputText: value, reason: options.reason }),\n );\n },\n }) as TextPatternGuardrailFor<Boundary>;\n }\n return defineOutputGuardrail({\n id: options.id,\n check(ctx, actions) {\n return textPatternAction(ctx.outputText, options, action, (value) =>\n actions.rewrite({ outputText: value, reason: options.reason }),\n );\n },\n }) as TextPatternGuardrailFor<Boundary>;\n}\n\nfunction textPatternAction<TRewrite>(\n text: string,\n options: TextPatternGuardrailOptions & { replacement?: string | undefined },\n action: \"block\" | \"rewrite\",\n rewrite: (value: string) => TRewrite,\n): GuardrailAllow | GuardrailBlock | TRewrite {\n const matched = options.patterns.some((pattern) => textPatternMatches(text, pattern));\n if (!matched) {\n return allow();\n }\n if (action === \"block\") {\n return block({\n reason: options.reason,\n message: options.message,\n });\n }\n let current = text;\n for (const pattern of options.patterns) {\n current = replaceTextPattern(current, pattern, options.replacement ?? \"[redacted]\");\n }\n return rewrite(current);\n}\n\nfunction textPatternMatches(text: string, pattern: string | RegExp): boolean {\n if (typeof pattern === \"string\") {\n return text.includes(pattern);\n }\n pattern.lastIndex = 0;\n const matched = pattern.test(text);\n pattern.lastIndex = 0;\n return matched;\n}\n\nfunction replaceTextPattern(text: string, pattern: string | RegExp, replacement: string): string {\n if (typeof pattern === \"string\") {\n return text.split(pattern).join(replacement);\n }\n pattern.lastIndex = 0;\n const flags = pattern.flags.replace(\"y\", \"\");\n const globalFlags = flags.includes(\"g\") ? flags : `${flags}g`;\n return text.replace(new RegExp(pattern.source, globalFlags), replacement);\n}\n"],"mappings":";;;;;;;;;;AAIO,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AACF;AAmBA,SAAS,UACP,SACmC;AACnC,SAAO,qBAAqB,SAAS,OAAO;AAC9C;AAEA,SAAS,WACP,SACmC;AACnC,SAAO,qBAAqB,SAAS,SAAS;AAChD;AAEA,SAAS,qBACP,SACA,QACmC;AACnC,MAAI,QAAQ,aAAa,SAAS;AAChC,WAAO,qBAAqB;AAAA,MAC1B,IAAI,QAAQ;AAAA,MACZ,MAAM,KAAK,SAAS;AAClB,eAAO;AAAA,UAAkB,IAAI;AAAA,UAAW;AAAA,UAAS;AAAA,UAAQ,CAAC,UACxD,QAAQ,QAAQ,EAAE,WAAW,OAAO,QAAQ,QAAQ,OAAO,CAAC;AAAA,QAC9D;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO,sBAAsB;AAAA,IAC3B,IAAI,QAAQ;AAAA,IACZ,MAAM,KAAK,SAAS;AAClB,aAAO;AAAA,QAAkB,IAAI;AAAA,QAAY;AAAA,QAAS;AAAA,QAAQ,CAAC,UACzD,QAAQ,QAAQ,EAAE,YAAY,OAAO,QAAQ,QAAQ,OAAO,CAAC;AAAA,MAC/D;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,SAAS,kBACP,MACA,SACA,QACA,SAC4C;AAC5C,QAAM,UAAU,QAAQ,SAAS,KAAK,CAAC,YAAY,mBAAmB,MAAM,OAAO,CAAC;AACpF,MAAI,CAAC,SAAS;AACZ,WAAO,MAAM;AAAA,EACf;AACA,MAAI,WAAW,SAAS;AACtB,WAAO,MAAM;AAAA,MACX,QAAQ,QAAQ;AAAA,MAChB,SAAS,QAAQ;AAAA,IACnB,CAAC;AAAA,EACH;AACA,MAAI,UAAU;AACd,aAAW,WAAW,QAAQ,UAAU;AACtC,cAAU,mBAAmB,SAAS,SAAS,QAAQ,eAAe,YAAY;AAAA,EACpF;AACA,SAAO,QAAQ,OAAO;AACxB;AAEA,SAAS,mBAAmB,MAAc,SAAmC;AAC3E,MAAI,OAAO,YAAY,UAAU;AAC/B,WAAO,KAAK,SAAS,OAAO;AAAA,EAC9B;AACA,UAAQ,YAAY;AACpB,QAAM,UAAU,QAAQ,KAAK,IAAI;AACjC,UAAQ,YAAY;AACpB,SAAO;AACT;AAEA,SAAS,mBAAmB,MAAc,SAA0B,aAA6B;AAC/F,MAAI,OAAO,YAAY,UAAU;AAC/B,WAAO,KAAK,MAAM,OAAO,EAAE,KAAK,WAAW;AAAA,EAC7C;AACA,UAAQ,YAAY;AACpB,QAAM,QAAQ,QAAQ,MAAM,QAAQ,KAAK,EAAE;AAC3C,QAAM,cAAc,MAAM,SAAS,GAAG,IAAI,QAAQ,GAAG,KAAK;AAC1D,SAAO,KAAK,QAAQ,IAAI,OAAO,QAAQ,QAAQ,WAAW,GAAG,WAAW;AAC1E;","names":[]}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import {
|
|
2
|
+
LshIndex
|
|
3
|
+
} from "./chunk-ESOFEAYK.js";
|
|
4
|
+
import {
|
|
5
|
+
retrieveDocuments
|
|
6
|
+
} from "./chunk-HAAGSIZH.js";
|
|
7
|
+
import {
|
|
8
|
+
matchesVectorFilter
|
|
9
|
+
} from "./chunk-5WLIHNNJ.js";
|
|
10
|
+
import {
|
|
11
|
+
cosineSimilarity
|
|
12
|
+
} from "./chunk-7F53DOML.js";
|
|
13
|
+
import {
|
|
14
|
+
assertFiniteMinScore,
|
|
15
|
+
assertPositiveSearchLimit
|
|
16
|
+
} from "./chunk-5V533R7F.js";
|
|
17
|
+
import {
|
|
18
|
+
createTool
|
|
19
|
+
} from "./chunk-XV3DH5GC.js";
|
|
20
|
+
|
|
21
|
+
// src/vector-store/index.ts
|
|
22
|
+
import { z } from "zod";
|
|
23
|
+
var InMemoryVectorStore = class _InMemoryVectorStore {
|
|
24
|
+
documents = /* @__PURE__ */ new Map();
|
|
25
|
+
indexStrategy;
|
|
26
|
+
lshIndex;
|
|
27
|
+
embeddingDimension;
|
|
28
|
+
constructor(options = {}) {
|
|
29
|
+
this.indexStrategy = options.index ?? { type: "bruteForce" };
|
|
30
|
+
if (options.dimensions !== void 0 && (!Number.isSafeInteger(options.dimensions) || options.dimensions < 1)) {
|
|
31
|
+
throw new RangeError("Vector dimensions must be a positive safe integer.");
|
|
32
|
+
}
|
|
33
|
+
this.embeddingDimension = options.dimensions;
|
|
34
|
+
}
|
|
35
|
+
static fromDocuments(options) {
|
|
36
|
+
const store = new _InMemoryVectorStore(options);
|
|
37
|
+
store.replaceDocuments(options.documents);
|
|
38
|
+
return store;
|
|
39
|
+
}
|
|
40
|
+
async ensure() {
|
|
41
|
+
}
|
|
42
|
+
async validate() {
|
|
43
|
+
}
|
|
44
|
+
async upsert(options) {
|
|
45
|
+
this.replaceDocuments(options.documents);
|
|
46
|
+
}
|
|
47
|
+
get(options) {
|
|
48
|
+
return this.documents.get(options.id);
|
|
49
|
+
}
|
|
50
|
+
values() {
|
|
51
|
+
return [...this.documents.values()];
|
|
52
|
+
}
|
|
53
|
+
len() {
|
|
54
|
+
return this.documents.size;
|
|
55
|
+
}
|
|
56
|
+
isEmpty() {
|
|
57
|
+
return this.documents.size === 0;
|
|
58
|
+
}
|
|
59
|
+
async search(request) {
|
|
60
|
+
throwIfAborted(request.abortSignal);
|
|
61
|
+
assertPositiveSearchLimit(request.topK);
|
|
62
|
+
assertFiniteMinScore(request.minScore);
|
|
63
|
+
const queryEmbedding = { document: "", vector: request.vector };
|
|
64
|
+
const results = this.candidates(queryEmbedding).filter((document) => matchesVectorFilter(document.metadata, request.filter)).flatMap((document) => {
|
|
65
|
+
const score = bestScore(queryEmbedding, document.embeddings);
|
|
66
|
+
if (score === void 0 || request.minScore !== void 0 && score < request.minScore) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
let result = {
|
|
70
|
+
score,
|
|
71
|
+
id: document.id,
|
|
72
|
+
document: document.document
|
|
73
|
+
};
|
|
74
|
+
if (document.metadata !== void 0) {
|
|
75
|
+
result = { ...result, metadata: document.metadata };
|
|
76
|
+
}
|
|
77
|
+
return [result];
|
|
78
|
+
}).sort((left, right) => right.score - left.score).slice(0, request.topK);
|
|
79
|
+
throwIfAborted(request.abortSignal);
|
|
80
|
+
return results;
|
|
81
|
+
}
|
|
82
|
+
async inspect(request) {
|
|
83
|
+
throwIfAborted(request.abortSignal);
|
|
84
|
+
const limit = assertPositiveSearchLimit(request.limit);
|
|
85
|
+
const start = Math.max(0, Math.trunc(Number(request.cursor ?? "0")));
|
|
86
|
+
const documents = this.values().filter(
|
|
87
|
+
(document) => matchesVectorFilter(document.metadata, request.filter)
|
|
88
|
+
);
|
|
89
|
+
const page = documents.slice(start, start + limit);
|
|
90
|
+
const nextOffset = start + page.length;
|
|
91
|
+
const result = {
|
|
92
|
+
items: page.map((document) => {
|
|
93
|
+
let item = {
|
|
94
|
+
id: document.id,
|
|
95
|
+
document: document.document
|
|
96
|
+
};
|
|
97
|
+
if (document.metadata !== void 0) {
|
|
98
|
+
item = { ...item, metadata: document.metadata };
|
|
99
|
+
}
|
|
100
|
+
return item;
|
|
101
|
+
}),
|
|
102
|
+
totalCount: documents.length
|
|
103
|
+
};
|
|
104
|
+
if (nextOffset < documents.length) result.nextCursor = String(nextOffset);
|
|
105
|
+
throwIfAborted(request.abortSignal);
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
replaceDocuments(documents) {
|
|
109
|
+
const ids = /* @__PURE__ */ new Set();
|
|
110
|
+
for (const document of documents) {
|
|
111
|
+
if (ids.has(document.id)) throw new TypeError(`Duplicate vector document id: ${document.id}`);
|
|
112
|
+
ids.add(document.id);
|
|
113
|
+
if (document.embeddings.length === 0) {
|
|
114
|
+
throw new TypeError(`Vector document ${document.id} must contain at least one embedding.`);
|
|
115
|
+
}
|
|
116
|
+
for (const embedding of document.embeddings)
|
|
117
|
+
assertFiniteVector(embedding.vector, document.id);
|
|
118
|
+
}
|
|
119
|
+
this.validateDocumentDimensions(documents);
|
|
120
|
+
for (const document of documents) this.documents.set(document.id, document);
|
|
121
|
+
this.rebuildLshIndex();
|
|
122
|
+
}
|
|
123
|
+
candidates(queryEmbedding) {
|
|
124
|
+
this.validateQueryDimension(queryEmbedding);
|
|
125
|
+
if (this.indexStrategy.type !== "lsh" || this.lshIndex === void 0) return this.values();
|
|
126
|
+
const candidateIds = this.lshIndex.query(queryEmbedding.vector);
|
|
127
|
+
if (candidateIds.size === 0) return this.values();
|
|
128
|
+
return [...candidateIds].flatMap((id) => {
|
|
129
|
+
const document = this.documents.get(id);
|
|
130
|
+
return document === void 0 ? [] : [document];
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
rebuildLshIndex() {
|
|
134
|
+
if (this.indexStrategy.type !== "lsh") {
|
|
135
|
+
this.lshIndex = void 0;
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const firstEmbedding = this.values().flatMap((document) => document.embeddings)[0];
|
|
139
|
+
if (firstEmbedding === void 0) {
|
|
140
|
+
this.lshIndex = void 0;
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const index = new LshIndex(firstEmbedding.vector.length, this.indexStrategy);
|
|
144
|
+
for (const document of this.documents.values()) {
|
|
145
|
+
for (const embedding of document.embeddings) index.insert(document.id, embedding.vector);
|
|
146
|
+
}
|
|
147
|
+
this.lshIndex = index;
|
|
148
|
+
}
|
|
149
|
+
validateDocumentDimensions(documents) {
|
|
150
|
+
let dimension = this.embeddingDimension;
|
|
151
|
+
for (const document of documents) {
|
|
152
|
+
for (const embedding of document.embeddings) {
|
|
153
|
+
dimension = validateEmbeddingDimension(dimension, embedding, document.id);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
this.embeddingDimension = dimension;
|
|
157
|
+
}
|
|
158
|
+
validateQueryDimension(queryEmbedding) {
|
|
159
|
+
if (this.embeddingDimension !== void 0) {
|
|
160
|
+
validateEmbeddingDimension(this.embeddingDimension, queryEmbedding, "query");
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
function throwIfAborted(signal) {
|
|
165
|
+
if (signal?.aborted) {
|
|
166
|
+
const error = new Error("The operation was aborted.");
|
|
167
|
+
error.name = "AbortError";
|
|
168
|
+
throw error;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function createVectorSearchTool(options) {
|
|
172
|
+
const configuredTopK = assertPositiveSearchLimit(options.topK ?? 5);
|
|
173
|
+
assertFiniteMinScore(options.minScore);
|
|
174
|
+
return createTool({
|
|
175
|
+
name: options.name,
|
|
176
|
+
description: options.description ?? "Search a vector store for documents relevant to the provided query.",
|
|
177
|
+
inputSchema: z.object({
|
|
178
|
+
query: z.string().min(1).describe("The query string to search for relevant documents."),
|
|
179
|
+
topK: z.number().int().positive().optional().describe("The maximum number of results.")
|
|
180
|
+
}),
|
|
181
|
+
outputSchema: z.array(
|
|
182
|
+
z.object({
|
|
183
|
+
score: z.number(),
|
|
184
|
+
id: z.string(),
|
|
185
|
+
document: z.any(),
|
|
186
|
+
metadata: z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()])).optional()
|
|
187
|
+
})
|
|
188
|
+
),
|
|
189
|
+
execute: ({ query, topK }, context) => {
|
|
190
|
+
const request = {
|
|
191
|
+
query,
|
|
192
|
+
topK: topK ?? configuredTopK,
|
|
193
|
+
minScore: options.minScore,
|
|
194
|
+
filter: options.filter,
|
|
195
|
+
retries: options.retries,
|
|
196
|
+
abortSignal: context.abortSignal
|
|
197
|
+
};
|
|
198
|
+
return "models" in options && options.models !== void 0 ? retrieveDocuments({
|
|
199
|
+
...request,
|
|
200
|
+
store: options.store,
|
|
201
|
+
models: options.models,
|
|
202
|
+
fusion: options.fusion
|
|
203
|
+
}) : retrieveDocuments({ ...request, store: options.store, model: options.model });
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
function bestScore(queryEmbedding, embeddings) {
|
|
208
|
+
let best;
|
|
209
|
+
for (const embedding of embeddings) {
|
|
210
|
+
const score = cosineSimilarity(queryEmbedding.vector, embedding.vector);
|
|
211
|
+
best = best === void 0 ? score : Math.max(best, score);
|
|
212
|
+
}
|
|
213
|
+
return best;
|
|
214
|
+
}
|
|
215
|
+
function validateEmbeddingDimension(expectedDimension, embedding, id) {
|
|
216
|
+
assertFiniteVector(embedding.vector, id);
|
|
217
|
+
if (expectedDimension === void 0) return embedding.vector.length;
|
|
218
|
+
if (embedding.vector.length !== expectedDimension) {
|
|
219
|
+
throw new Error(
|
|
220
|
+
`Vector dimension mismatch: expected ${expectedDimension} dimensions but received ${embedding.vector.length} for ${id}`
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
return expectedDimension;
|
|
224
|
+
}
|
|
225
|
+
function assertFiniteVector(vector, id) {
|
|
226
|
+
if (vector.length === 0) throw new TypeError(`Vector for ${id} must not be empty.`);
|
|
227
|
+
if (!vector.every(Number.isFinite)) {
|
|
228
|
+
throw new TypeError(`Vector for ${id} must contain only finite numbers.`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export {
|
|
233
|
+
InMemoryVectorStore,
|
|
234
|
+
createVectorSearchTool
|
|
235
|
+
};
|
|
236
|
+
//# sourceMappingURL=chunk-72LBHKYP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vector-store/index.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n cosineSimilarity,\n type EmbeddedDocument,\n type Embedding,\n type VectorMetadata,\n} from \"../embeddings\";\nimport { assertFiniteMinScore, assertPositiveSearchLimit } from \"../internal/vector-search-options\";\nimport { createTool } from \"../tool/create-tool\";\nimport type { Tool } from \"../tool/tool\";\nimport { matchesVectorFilter } from \"./filter\";\nimport { LshIndex } from \"./lsh\";\nimport { retrieveDocuments } from \"./retrieve\";\nimport type {\n IndexStrategy,\n VectorInspectItem,\n VectorInspectPage,\n VectorInspectRequest,\n VectorSearchRequest,\n VectorSearchResult,\n VectorSearchToolOptions,\n VectorStore,\n VectorStoreUpsertOptions,\n} from \"./types\";\n\nexport { matchesVectorFilter, vectorFilter } from \"./filter\";\nexport * from \"./ingest\";\nexport { retrieveDocuments } from \"./retrieve\";\nexport type * from \"./types\";\n\ntype StoredDocument<T, Metadata extends VectorMetadata> = EmbeddedDocument<T, Metadata>;\n\nexport type InMemoryVectorStoreOptions = {\n dimensions?: number | undefined;\n index?: IndexStrategy | undefined;\n};\n\nexport type InMemoryVectorStoreFromDocumentsOptions<\n T,\n Metadata extends VectorMetadata = VectorMetadata,\n> = InMemoryVectorStoreOptions & {\n documents: Array<EmbeddedDocument<T, Metadata>>;\n};\n\nexport class InMemoryVectorStore<\n T,\n Metadata extends VectorMetadata = VectorMetadata,\n> implements VectorStore<T, Metadata> {\n private readonly documents = new Map<string, StoredDocument<T, Metadata>>();\n private readonly indexStrategy: IndexStrategy;\n private lshIndex: LshIndex | undefined;\n private embeddingDimension: number | undefined;\n\n constructor(options: InMemoryVectorStoreOptions = {}) {\n this.indexStrategy = options.index ?? { type: \"bruteForce\" };\n if (\n options.dimensions !== undefined &&\n (!Number.isSafeInteger(options.dimensions) || options.dimensions < 1)\n ) {\n throw new RangeError(\"Vector dimensions must be a positive safe integer.\");\n }\n this.embeddingDimension = options.dimensions;\n }\n\n static fromDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: InMemoryVectorStoreFromDocumentsOptions<T, Metadata>,\n ): InMemoryVectorStore<T, Metadata> {\n const store = new InMemoryVectorStore<T, Metadata>(options);\n store.replaceDocuments(options.documents);\n return store;\n }\n\n async ensure(): Promise<void> {}\n async validate(): Promise<void> {}\n\n async upsert(options: VectorStoreUpsertOptions<T, Metadata>): Promise<void> {\n this.replaceDocuments(options.documents);\n }\n\n get(options: { id: string }): StoredDocument<T, Metadata> | undefined {\n return this.documents.get(options.id);\n }\n\n values(): Array<StoredDocument<T, Metadata>> {\n return [...this.documents.values()];\n }\n\n len(): number {\n return this.documents.size;\n }\n\n isEmpty(): boolean {\n return this.documents.size === 0;\n }\n\n async search(request: VectorSearchRequest): Promise<Array<VectorSearchResult<T, Metadata>>> {\n throwIfAborted(request.abortSignal);\n assertPositiveSearchLimit(request.topK);\n assertFiniteMinScore(request.minScore);\n const queryEmbedding: Embedding = { document: \"\", vector: request.vector };\n const results = this.candidates(queryEmbedding)\n .filter((document) => matchesVectorFilter(document.metadata, request.filter))\n .flatMap((document) => {\n const score = bestScore(queryEmbedding, document.embeddings);\n if (score === undefined || (request.minScore !== undefined && score < request.minScore)) {\n return [];\n }\n let result: VectorSearchResult<T, Metadata> = {\n score,\n id: document.id,\n document: document.document,\n };\n if (document.metadata !== undefined) {\n result = { ...result, metadata: document.metadata };\n }\n return [result];\n })\n .sort((left, right) => right.score - left.score)\n .slice(0, request.topK);\n throwIfAborted(request.abortSignal);\n return results;\n }\n\n async inspect(request: VectorInspectRequest): Promise<VectorInspectPage<T, Metadata>> {\n throwIfAborted(request.abortSignal);\n const limit = assertPositiveSearchLimit(request.limit);\n const start = Math.max(0, Math.trunc(Number(request.cursor ?? \"0\")));\n const documents = this.values().filter((document) =>\n matchesVectorFilter(document.metadata, request.filter),\n );\n const page = documents.slice(start, start + limit);\n const nextOffset = start + page.length;\n const result: VectorInspectPage<T, Metadata> = {\n items: page.map((document): VectorInspectItem<T, Metadata> => {\n let item: VectorInspectItem<T, Metadata> = {\n id: document.id,\n document: document.document,\n };\n if (document.metadata !== undefined) {\n item = { ...item, metadata: document.metadata };\n }\n return item;\n }),\n totalCount: documents.length,\n };\n if (nextOffset < documents.length) result.nextCursor = String(nextOffset);\n throwIfAborted(request.abortSignal);\n return result;\n }\n\n private replaceDocuments(documents: Array<EmbeddedDocument<T, Metadata>>): void {\n const ids = new Set<string>();\n for (const document of documents) {\n if (ids.has(document.id)) throw new TypeError(`Duplicate vector document id: ${document.id}`);\n ids.add(document.id);\n if (document.embeddings.length === 0) {\n throw new TypeError(`Vector document ${document.id} must contain at least one embedding.`);\n }\n for (const embedding of document.embeddings)\n assertFiniteVector(embedding.vector, document.id);\n }\n this.validateDocumentDimensions(documents);\n for (const document of documents) this.documents.set(document.id, document);\n this.rebuildLshIndex();\n }\n\n private candidates(queryEmbedding: Embedding): Array<StoredDocument<T, Metadata>> {\n this.validateQueryDimension(queryEmbedding);\n if (this.indexStrategy.type !== \"lsh\" || this.lshIndex === undefined) return this.values();\n const candidateIds = this.lshIndex.query(queryEmbedding.vector);\n if (candidateIds.size === 0) return this.values();\n return [...candidateIds].flatMap((id) => {\n const document = this.documents.get(id);\n return document === undefined ? [] : [document];\n });\n }\n\n private rebuildLshIndex(): void {\n if (this.indexStrategy.type !== \"lsh\") {\n this.lshIndex = undefined;\n return;\n }\n const firstEmbedding = this.values().flatMap((document) => document.embeddings)[0];\n if (firstEmbedding === undefined) {\n this.lshIndex = undefined;\n return;\n }\n const index = new LshIndex(firstEmbedding.vector.length, this.indexStrategy);\n for (const document of this.documents.values()) {\n for (const embedding of document.embeddings) index.insert(document.id, embedding.vector);\n }\n this.lshIndex = index;\n }\n\n private validateDocumentDimensions(documents: Array<EmbeddedDocument<T, Metadata>>): void {\n let dimension = this.embeddingDimension;\n for (const document of documents) {\n for (const embedding of document.embeddings) {\n dimension = validateEmbeddingDimension(dimension, embedding, document.id);\n }\n }\n this.embeddingDimension = dimension;\n }\n\n private validateQueryDimension(queryEmbedding: Embedding): void {\n if (this.embeddingDimension !== undefined) {\n validateEmbeddingDimension(this.embeddingDimension, queryEmbedding, \"query\");\n }\n }\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted) {\n const error = new Error(\"The operation was aborted.\");\n error.name = \"AbortError\";\n throw error;\n }\n}\n\nexport function createVectorSearchTool<T, Metadata extends VectorMetadata>(\n options: VectorSearchToolOptions<T, Metadata>,\n): Tool<{ query: string; topK?: number }, Array<VectorSearchResult<T, Metadata>>> {\n const configuredTopK = assertPositiveSearchLimit(options.topK ?? 5);\n assertFiniteMinScore(options.minScore);\n return createTool({\n name: options.name,\n description:\n options.description ?? \"Search a vector store for documents relevant to the provided query.\",\n inputSchema: z.object({\n query: z.string().min(1).describe(\"The query string to search for relevant documents.\"),\n topK: z.number().int().positive().optional().describe(\"The maximum number of results.\"),\n }),\n outputSchema: z.array(\n z.object({\n score: z.number(),\n id: z.string(),\n document: z.any(),\n metadata: z\n .record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()]))\n .optional(),\n }),\n ),\n execute: ({ query, topK }, context) => {\n const request = {\n query,\n topK: topK ?? configuredTopK,\n minScore: options.minScore,\n filter: options.filter,\n retries: options.retries,\n abortSignal: context.abortSignal,\n };\n return \"models\" in options && options.models !== undefined\n ? retrieveDocuments({\n ...request,\n store: options.store,\n models: options.models,\n fusion: options.fusion,\n })\n : retrieveDocuments({ ...request, store: options.store, model: options.model });\n },\n }) as Tool<{ query: string; topK?: number }, Array<VectorSearchResult<T, Metadata>>>;\n}\n\nfunction bestScore(queryEmbedding: Embedding, embeddings: Embedding[]): number | undefined {\n let best: number | undefined;\n for (const embedding of embeddings) {\n const score = cosineSimilarity(queryEmbedding.vector, embedding.vector);\n best = best === undefined ? score : Math.max(best, score);\n }\n return best;\n}\n\nfunction validateEmbeddingDimension(\n expectedDimension: number | undefined,\n embedding: Embedding,\n id: string,\n): number {\n assertFiniteVector(embedding.vector, id);\n if (expectedDimension === undefined) return embedding.vector.length;\n if (embedding.vector.length !== expectedDimension) {\n throw new Error(\n `Vector dimension mismatch: expected ${expectedDimension} dimensions but received ${embedding.vector.length} for ${id}`,\n );\n }\n return expectedDimension;\n}\n\nfunction assertFiniteVector(vector: number[], id: string): void {\n if (vector.length === 0) throw new TypeError(`Vector for ${id} must not be empty.`);\n if (!vector.every(Number.isFinite)) {\n throw new TypeError(`Vector for ${id} must contain only finite numbers.`);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// src/embeddings/distance.ts
|
|
2
|
+
function dotProduct(left, right) {
|
|
3
|
+
assertSameDimensions(left, right);
|
|
4
|
+
return left.reduce((sum, value, index) => sum + value * right[index], 0);
|
|
5
|
+
}
|
|
6
|
+
function cosineSimilarity(left, right) {
|
|
7
|
+
assertSameDimensions(left, right);
|
|
8
|
+
const leftMagnitude = magnitude(left);
|
|
9
|
+
const rightMagnitude = magnitude(right);
|
|
10
|
+
if (leftMagnitude === 0 || rightMagnitude === 0) {
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
13
|
+
return dotProduct(left, right) / (leftMagnitude * rightMagnitude);
|
|
14
|
+
}
|
|
15
|
+
function angularDistance(left, right) {
|
|
16
|
+
const similarity = Math.max(-1, Math.min(1, cosineSimilarity(left, right)));
|
|
17
|
+
return Math.acos(similarity) / Math.PI;
|
|
18
|
+
}
|
|
19
|
+
function euclideanDistance(left, right) {
|
|
20
|
+
assertSameDimensions(left, right);
|
|
21
|
+
return Math.sqrt(
|
|
22
|
+
left.reduce((sum, value, index) => sum + (value - right[index]) ** 2, 0)
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
function manhattanDistance(left, right) {
|
|
26
|
+
assertSameDimensions(left, right);
|
|
27
|
+
return left.reduce((sum, value, index) => sum + Math.abs(value - right[index]), 0);
|
|
28
|
+
}
|
|
29
|
+
function chebyshevDistance(left, right) {
|
|
30
|
+
assertSameDimensions(left, right);
|
|
31
|
+
return left.reduce(
|
|
32
|
+
(max, value, index) => Math.max(max, Math.abs(value - right[index])),
|
|
33
|
+
0
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
function magnitude(vector) {
|
|
37
|
+
return Math.sqrt(vector.reduce((sum, value) => sum + value ** 2, 0));
|
|
38
|
+
}
|
|
39
|
+
function assertSameDimensions(left, right) {
|
|
40
|
+
if (left.length !== right.length) {
|
|
41
|
+
throw new Error(`Vector dimension mismatch: ${left.length} !== ${right.length}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export {
|
|
46
|
+
dotProduct,
|
|
47
|
+
cosineSimilarity,
|
|
48
|
+
angularDistance,
|
|
49
|
+
euclideanDistance,
|
|
50
|
+
manhattanDistance,
|
|
51
|
+
chebyshevDistance
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=chunk-7F53DOML.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/embeddings/distance.ts"],"sourcesContent":["export function dotProduct(left: number[], right: number[]): number {\n assertSameDimensions(left, right);\n return left.reduce((sum, value, index) => sum + value * (right[index] as number), 0);\n}\n\nexport function cosineSimilarity(left: number[], right: number[]): number {\n assertSameDimensions(left, right);\n const leftMagnitude = magnitude(left);\n const rightMagnitude = magnitude(right);\n if (leftMagnitude === 0 || rightMagnitude === 0) {\n return 0;\n }\n return dotProduct(left, right) / (leftMagnitude * rightMagnitude);\n}\n\nexport function angularDistance(left: number[], right: number[]): number {\n const similarity = Math.max(-1, Math.min(1, cosineSimilarity(left, right)));\n return Math.acos(similarity) / Math.PI;\n}\n\nexport function euclideanDistance(left: number[], right: number[]): number {\n assertSameDimensions(left, right);\n return Math.sqrt(\n left.reduce((sum, value, index) => sum + (value - (right[index] as number)) ** 2, 0),\n );\n}\n\nexport function manhattanDistance(left: number[], right: number[]): number {\n assertSameDimensions(left, right);\n return left.reduce((sum, value, index) => sum + Math.abs(value - (right[index] as number)), 0);\n}\n\nexport function chebyshevDistance(left: number[], right: number[]): number {\n assertSameDimensions(left, right);\n return left.reduce(\n (max, value, index) => Math.max(max, Math.abs(value - (right[index] as number))),\n 0,\n );\n}\n\nfunction magnitude(vector: number[]): number {\n return Math.sqrt(vector.reduce((sum, value) => sum + value ** 2, 0));\n}\n\nfunction assertSameDimensions(left: number[], right: number[]): void {\n if (left.length !== right.length) {\n throw new Error(`Vector dimension mismatch: ${left.length} !== ${right.length}`);\n }\n}\n"],"mappings":";AAAO,SAAS,WAAW,MAAgB,OAAyB;AAClE,uBAAqB,MAAM,KAAK;AAChC,SAAO,KAAK,OAAO,CAAC,KAAK,OAAO,UAAU,MAAM,QAAS,MAAM,KAAK,GAAc,CAAC;AACrF;AAEO,SAAS,iBAAiB,MAAgB,OAAyB;AACxE,uBAAqB,MAAM,KAAK;AAChC,QAAM,gBAAgB,UAAU,IAAI;AACpC,QAAM,iBAAiB,UAAU,KAAK;AACtC,MAAI,kBAAkB,KAAK,mBAAmB,GAAG;AAC/C,WAAO;AAAA,EACT;AACA,SAAO,WAAW,MAAM,KAAK,KAAK,gBAAgB;AACpD;AAEO,SAAS,gBAAgB,MAAgB,OAAyB;AACvE,QAAM,aAAa,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,iBAAiB,MAAM,KAAK,CAAC,CAAC;AAC1E,SAAO,KAAK,KAAK,UAAU,IAAI,KAAK;AACtC;AAEO,SAAS,kBAAkB,MAAgB,OAAyB;AACzE,uBAAqB,MAAM,KAAK;AAChC,SAAO,KAAK;AAAA,IACV,KAAK,OAAO,CAAC,KAAK,OAAO,UAAU,OAAO,QAAS,MAAM,KAAK,MAAiB,GAAG,CAAC;AAAA,EACrF;AACF;AAEO,SAAS,kBAAkB,MAAgB,OAAyB;AACzE,uBAAqB,MAAM,KAAK;AAChC,SAAO,KAAK,OAAO,CAAC,KAAK,OAAO,UAAU,MAAM,KAAK,IAAI,QAAS,MAAM,KAAK,CAAY,GAAG,CAAC;AAC/F;AAEO,SAAS,kBAAkB,MAAgB,OAAyB;AACzE,uBAAqB,MAAM,KAAK;AAChC,SAAO,KAAK;AAAA,IACV,CAAC,KAAK,OAAO,UAAU,KAAK,IAAI,KAAK,KAAK,IAAI,QAAS,MAAM,KAAK,CAAY,CAAC;AAAA,IAC/E;AAAA,EACF;AACF;AAEA,SAAS,UAAU,QAA0B;AAC3C,SAAO,KAAK,KAAK,OAAO,OAAO,CAAC,KAAK,UAAU,MAAM,SAAS,GAAG,CAAC,CAAC;AACrE;AAEA,SAAS,qBAAqB,MAAgB,OAAuB;AACnE,MAAI,KAAK,WAAW,MAAM,QAAQ;AAChC,UAAM,IAAI,MAAM,8BAA8B,KAAK,MAAM,QAAQ,MAAM,MAAM,EAAE;AAAA,EACjF;AACF;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-7LBPRXZP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// src/agent/tool-state.ts
|
|
2
|
+
var agentToolStates = /* @__PURE__ */ new WeakMap();
|
|
3
|
+
function registerAgentToolState(agent, publicState, toolsByName) {
|
|
4
|
+
agentToolStates.set(agent, { publicState, toolsByName });
|
|
5
|
+
}
|
|
6
|
+
function getAgentToolState(agent) {
|
|
7
|
+
return getStoredAgentToolState(agent).publicState;
|
|
8
|
+
}
|
|
9
|
+
function getRegisteredAgentTool(agent, toolName) {
|
|
10
|
+
return getStoredAgentToolState(agent).toolsByName.get(toolName);
|
|
11
|
+
}
|
|
12
|
+
function getStoredAgentToolState(agent) {
|
|
13
|
+
const state = agentToolStates.get(agent);
|
|
14
|
+
if (state === void 0) {
|
|
15
|
+
throw new TypeError("Agent tool state is unavailable.");
|
|
16
|
+
}
|
|
17
|
+
return state;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
registerAgentToolState,
|
|
22
|
+
getAgentToolState,
|
|
23
|
+
getRegisteredAgentTool
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=chunk-A7BXVZXZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/agent/tool-state.ts"],"sourcesContent":["import type { ProviderTool } from \"../completion\";\nimport type { ToolIndex } from \"../tool/dynamic-tools\";\nimport type { AnyTool } from \"../tool/tool\";\n\nexport type AgentToolState = {\n configuredTools: readonly AnyTool[];\n staticTools: readonly AnyTool[];\n providerTools: readonly ProviderTool[];\n toolIndexes: readonly ToolIndex[];\n};\n\ntype StoredAgentToolState = {\n publicState: AgentToolState;\n toolsByName: Map<string, AnyTool>;\n};\n\nconst agentToolStates = new WeakMap<object, StoredAgentToolState>();\n\nexport function registerAgentToolState(\n agent: object,\n publicState: AgentToolState,\n toolsByName: Map<string, AnyTool>,\n): void {\n agentToolStates.set(agent, { publicState, toolsByName });\n}\n\nexport function getAgentToolState(agent: object): AgentToolState {\n return getStoredAgentToolState(agent).publicState;\n}\n\nexport function getRegisteredAgentTool(agent: object, toolName: string): AnyTool | undefined {\n return getStoredAgentToolState(agent).toolsByName.get(toolName);\n}\n\nfunction getStoredAgentToolState(agent: object): StoredAgentToolState {\n const state = agentToolStates.get(agent);\n if (state === undefined) {\n throw new TypeError(\"Agent tool state is unavailable.\");\n }\n return state;\n}\n"],"mappings":";AAgBA,IAAM,kBAAkB,oBAAI,QAAsC;AAE3D,SAAS,uBACd,OACA,aACA,aACM;AACN,kBAAgB,IAAI,OAAO,EAAE,aAAa,YAAY,CAAC;AACzD;AAEO,SAAS,kBAAkB,OAA+B;AAC/D,SAAO,wBAAwB,KAAK,EAAE;AACxC;AAEO,SAAS,uBAAuB,OAAe,UAAuC;AAC3F,SAAO,wBAAwB,KAAK,EAAE,YAAY,IAAI,QAAQ;AAChE;AAEA,SAAS,wBAAwB,OAAqC;AACpE,QAAM,QAAQ,gBAAgB,IAAI,KAAK;AACvC,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI,UAAU,kCAAkC;AAAA,EACxD;AACA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import {
|
|
2
|
+
TeamPolicy
|
|
3
|
+
} from "./chunk-X6WS3XWL.js";
|
|
4
|
+
import {
|
|
5
|
+
TeamRun
|
|
6
|
+
} from "./chunk-SIYZDPVH.js";
|
|
7
|
+
import {
|
|
8
|
+
TeamStream
|
|
9
|
+
} from "./chunk-3TAQXJBC.js";
|
|
10
|
+
import {
|
|
11
|
+
Agent
|
|
12
|
+
} from "./chunk-4S4OECPW.js";
|
|
13
|
+
import {
|
|
14
|
+
assertPositiveSafeInteger
|
|
15
|
+
} from "./chunk-NPJ2T3L5.js";
|
|
16
|
+
|
|
17
|
+
// src/agent/team/agent-team.ts
|
|
18
|
+
var AgentTeam = class {
|
|
19
|
+
id;
|
|
20
|
+
members;
|
|
21
|
+
limits;
|
|
22
|
+
coordinator;
|
|
23
|
+
policy;
|
|
24
|
+
constructor(options) {
|
|
25
|
+
this.coordinator = new Agent(options);
|
|
26
|
+
this.id = this.coordinator.id;
|
|
27
|
+
if (!Array.isArray(options.members)) throw new TypeError("AgentTeam requires a members array.");
|
|
28
|
+
const ids = /* @__PURE__ */ new Set();
|
|
29
|
+
for (const member of options.members) {
|
|
30
|
+
if (!(member instanceof Agent))
|
|
31
|
+
throw new TypeError("AgentTeam members must be Agent instances.");
|
|
32
|
+
if (ids.has(member.id)) throw new TypeError(`Duplicate AgentTeam member ID: ${member.id}`);
|
|
33
|
+
if (!/^[a-zA-Z0-9_-]{1,58}$/.test(member.id))
|
|
34
|
+
throw new TypeError(
|
|
35
|
+
"AgentTeam member IDs must form valid spawn tool names (1\u201358 letters, digits, underscores, or hyphens)."
|
|
36
|
+
);
|
|
37
|
+
ids.add(member.id);
|
|
38
|
+
}
|
|
39
|
+
const reserved = /* @__PURE__ */ new Set([
|
|
40
|
+
"send_message",
|
|
41
|
+
"wait_for_agent",
|
|
42
|
+
"list_agents",
|
|
43
|
+
"cancel_agent",
|
|
44
|
+
...[...ids].map((id) => `spawn_${id}`)
|
|
45
|
+
]);
|
|
46
|
+
for (const agent of [this.coordinator, ...options.members]) {
|
|
47
|
+
for (const tool of agent.tools) {
|
|
48
|
+
if (reserved.has(tool.name))
|
|
49
|
+
throw new TypeError(`Tool "${tool.name}" conflicts with an AgentTeam tool.`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
this.members = Object.freeze([...options.members]);
|
|
53
|
+
this.policy = new TeamPolicy(this.members, options.communication, options.spawning);
|
|
54
|
+
this.limits = Object.freeze({
|
|
55
|
+
maxDepth: assertPositiveSafeInteger(options.limits?.maxDepth ?? 3, "maxDepth"),
|
|
56
|
+
maxConcurrentAgents: assertPositiveSafeInteger(
|
|
57
|
+
options.limits?.maxConcurrentAgents ?? 4,
|
|
58
|
+
"maxConcurrentAgents"
|
|
59
|
+
),
|
|
60
|
+
maxAgentInstances: assertPositiveSafeInteger(
|
|
61
|
+
options.limits?.maxAgentInstances ?? 12,
|
|
62
|
+
"maxAgentInstances"
|
|
63
|
+
),
|
|
64
|
+
maxTotalTurns: assertPositiveSafeInteger(
|
|
65
|
+
options.limits?.maxTotalTurns ?? 100,
|
|
66
|
+
"maxTotalTurns"
|
|
67
|
+
),
|
|
68
|
+
maxBufferedEvents: assertPositiveSafeInteger(
|
|
69
|
+
options.limits?.maxBufferedEvents ?? 1024,
|
|
70
|
+
"maxBufferedEvents"
|
|
71
|
+
)
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
generate(options) {
|
|
75
|
+
return this.createStream(options, false).result;
|
|
76
|
+
}
|
|
77
|
+
stream(options) {
|
|
78
|
+
return this.createStream(options, true);
|
|
79
|
+
}
|
|
80
|
+
createStream(options, streaming) {
|
|
81
|
+
if (typeof options !== "object" || options === null || options.prompt === void 0 === (options.messages === void 0)) {
|
|
82
|
+
throw new TypeError("AgentTeam runs require exactly one of prompt or messages.");
|
|
83
|
+
}
|
|
84
|
+
if (options.resolveInteraction !== void 0 && typeof options.resolveInteraction !== "function") {
|
|
85
|
+
throw new TypeError("resolveInteraction must be a function.");
|
|
86
|
+
}
|
|
87
|
+
return new TeamStream(
|
|
88
|
+
(emit) => (
|
|
89
|
+
// The scheduler runs heterogeneous definitions. Public inputs are checked against M above.
|
|
90
|
+
new TeamRun(
|
|
91
|
+
this.coordinator,
|
|
92
|
+
this.policy,
|
|
93
|
+
this.limits,
|
|
94
|
+
{ ...options },
|
|
95
|
+
streaming,
|
|
96
|
+
emit
|
|
97
|
+
)
|
|
98
|
+
),
|
|
99
|
+
this.limits.maxBufferedEvents
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
export {
|
|
105
|
+
AgentTeam
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=chunk-AOG6KSV4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/agent/team/agent-team.ts"],"sourcesContent":["import { Agent } from \"../agent\";\nimport type { CompletionModel } from \"../../completion\";\nimport { assertPositiveSafeInteger } from \"../../internal/agent-runtime/run-validation\";\nimport { TeamRun } from \"../../internal/team-runtime/run\";\nimport { TeamStream } from \"../../internal/team-runtime/stream\";\nimport { TeamPolicy } from \"../../internal/team-runtime/policy\";\nimport type {\n AgentTeamLimits,\n AgentTeamMember,\n AgentTeamOptions,\n AgentTeamOutcome,\n AgentTeamRunOptions,\n AgentTeamStream,\n} from \"./types\";\n\nexport class AgentTeam<\n Output = string,\n M extends CompletionModel = CompletionModel,\n ContextDocument = unknown,\n> {\n readonly id: string;\n readonly members: readonly AgentTeamMember[];\n readonly limits: Readonly<Required<AgentTeamLimits>>;\n private readonly coordinator: Agent<Output, M, ContextDocument>;\n private readonly policy: TeamPolicy;\n\n constructor(options: AgentTeamOptions<Output, M, ContextDocument>) {\n this.coordinator = new Agent(options);\n this.id = this.coordinator.id;\n if (!Array.isArray(options.members)) throw new TypeError(\"AgentTeam requires a members array.\");\n const ids = new Set<string>();\n for (const member of options.members) {\n if (!(member instanceof Agent))\n throw new TypeError(\"AgentTeam members must be Agent instances.\");\n if (ids.has(member.id)) throw new TypeError(`Duplicate AgentTeam member ID: ${member.id}`);\n if (!/^[a-zA-Z0-9_-]{1,58}$/.test(member.id))\n throw new TypeError(\n \"AgentTeam member IDs must form valid spawn tool names (1–58 letters, digits, underscores, or hyphens).\",\n );\n ids.add(member.id);\n }\n const reserved = new Set([\n \"send_message\",\n \"wait_for_agent\",\n \"list_agents\",\n \"cancel_agent\",\n ...[...ids].map((id) => `spawn_${id}`),\n ]);\n for (const agent of [this.coordinator, ...options.members]) {\n for (const tool of agent.tools) {\n if (reserved.has(tool.name))\n throw new TypeError(`Tool \"${tool.name}\" conflicts with an AgentTeam tool.`);\n }\n }\n this.members = Object.freeze([...options.members]);\n this.policy = new TeamPolicy(this.members, options.communication, options.spawning);\n this.limits = Object.freeze({\n maxDepth: assertPositiveSafeInteger(options.limits?.maxDepth ?? 3, \"maxDepth\"),\n maxConcurrentAgents: assertPositiveSafeInteger(\n options.limits?.maxConcurrentAgents ?? 4,\n \"maxConcurrentAgents\",\n ),\n maxAgentInstances: assertPositiveSafeInteger(\n options.limits?.maxAgentInstances ?? 12,\n \"maxAgentInstances\",\n ),\n maxTotalTurns: assertPositiveSafeInteger(\n options.limits?.maxTotalTurns ?? 100,\n \"maxTotalTurns\",\n ),\n maxBufferedEvents: assertPositiveSafeInteger(\n options.limits?.maxBufferedEvents ?? 1024,\n \"maxBufferedEvents\",\n ),\n });\n }\n\n generate(options: AgentTeamRunOptions<Output, M>): Promise<AgentTeamOutcome<Output>> {\n return this.createStream(options, false).result;\n }\n\n stream(options: AgentTeamRunOptions<Output, M>): AgentTeamStream<Output> {\n return this.createStream(options, true);\n }\n\n private createStream(\n options: AgentTeamRunOptions<Output, M>,\n streaming: boolean,\n ): AgentTeamStream<Output> {\n if (\n typeof options !== \"object\" ||\n options === null ||\n (options.prompt === undefined) === (options.messages === undefined)\n ) {\n throw new TypeError(\"AgentTeam runs require exactly one of prompt or messages.\");\n }\n if (\n options.resolveInteraction !== undefined &&\n typeof options.resolveInteraction !== \"function\"\n ) {\n throw new TypeError(\"resolveInteraction must be a function.\");\n }\n return new TeamStream(\n (emit) =>\n // The scheduler runs heterogeneous definitions. Public inputs are checked against M above.\n new TeamRun(\n this.coordinator,\n this.policy,\n this.limits,\n { ...options } as AgentTeamRunOptions<unknown>,\n streaming,\n emit,\n ),\n this.limits.maxBufferedEvents,\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAeO,IAAM,YAAN,MAIL;AAAA,EACS;AAAA,EACA;AAAA,EACA;AAAA,EACQ;AAAA,EACA;AAAA,EAEjB,YAAY,SAAuD;AACjE,SAAK,cAAc,IAAI,MAAM,OAAO;AACpC,SAAK,KAAK,KAAK,YAAY;AAC3B,QAAI,CAAC,MAAM,QAAQ,QAAQ,OAAO,EAAG,OAAM,IAAI,UAAU,qCAAqC;AAC9F,UAAM,MAAM,oBAAI,IAAY;AAC5B,eAAW,UAAU,QAAQ,SAAS;AACpC,UAAI,EAAE,kBAAkB;AACtB,cAAM,IAAI,UAAU,4CAA4C;AAClE,UAAI,IAAI,IAAI,OAAO,EAAE,EAAG,OAAM,IAAI,UAAU,kCAAkC,OAAO,EAAE,EAAE;AACzF,UAAI,CAAC,wBAAwB,KAAK,OAAO,EAAE;AACzC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AACF,UAAI,IAAI,OAAO,EAAE;AAAA,IACnB;AACA,UAAM,WAAW,oBAAI,IAAI;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,OAAO,SAAS,EAAE,EAAE;AAAA,IACvC,CAAC;AACD,eAAW,SAAS,CAAC,KAAK,aAAa,GAAG,QAAQ,OAAO,GAAG;AAC1D,iBAAW,QAAQ,MAAM,OAAO;AAC9B,YAAI,SAAS,IAAI,KAAK,IAAI;AACxB,gBAAM,IAAI,UAAU,SAAS,KAAK,IAAI,qCAAqC;AAAA,MAC/E;AAAA,IACF;AACA,SAAK,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC;AACjD,SAAK,SAAS,IAAI,WAAW,KAAK,SAAS,QAAQ,eAAe,QAAQ,QAAQ;AAClF,SAAK,SAAS,OAAO,OAAO;AAAA,MAC1B,UAAU,0BAA0B,QAAQ,QAAQ,YAAY,GAAG,UAAU;AAAA,MAC7E,qBAAqB;AAAA,QACnB,QAAQ,QAAQ,uBAAuB;AAAA,QACvC;AAAA,MACF;AAAA,MACA,mBAAmB;AAAA,QACjB,QAAQ,QAAQ,qBAAqB;AAAA,QACrC;AAAA,MACF;AAAA,MACA,eAAe;AAAA,QACb,QAAQ,QAAQ,iBAAiB;AAAA,QACjC;AAAA,MACF;AAAA,MACA,mBAAmB;AAAA,QACjB,QAAQ,QAAQ,qBAAqB;AAAA,QACrC;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,SAAS,SAA4E;AACnF,WAAO,KAAK,aAAa,SAAS,KAAK,EAAE;AAAA,EAC3C;AAAA,EAEA,OAAO,SAAkE;AACvE,WAAO,KAAK,aAAa,SAAS,IAAI;AAAA,EACxC;AAAA,EAEQ,aACN,SACA,WACyB;AACzB,QACE,OAAO,YAAY,YACnB,YAAY,QACX,QAAQ,WAAW,YAAgB,QAAQ,aAAa,SACzD;AACA,YAAM,IAAI,UAAU,2DAA2D;AAAA,IACjF;AACA,QACE,QAAQ,uBAAuB,UAC/B,OAAO,QAAQ,uBAAuB,YACtC;AACA,YAAM,IAAI,UAAU,wCAAwC;AAAA,IAC9D;AACA,WAAO,IAAI;AAAA,MACT,CAAC;AAAA;AAAA,QAEC,IAAI;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,EAAE,GAAG,QAAQ;AAAA,UACb;AAAA,UACA;AAAA,QACF;AAAA;AAAA,MACF,KAAK,OAAO;AAAA,IACd;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createTool
|
|
3
|
+
} from "./chunk-XV3DH5GC.js";
|
|
4
|
+
|
|
5
|
+
// src/internal/team-runtime/tools.ts
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
var identifier = z.string().trim().min(1).max(128);
|
|
8
|
+
var content = z.string().min(1).max(32768);
|
|
9
|
+
function teamTools(team, member, catalog) {
|
|
10
|
+
const tools = [
|
|
11
|
+
createTool({
|
|
12
|
+
name: "send_message",
|
|
13
|
+
description: "Send a message to your parent, a child, or an enabled sibling from list_agents. Returns acceptance, not a reply. Agent messages cannot grant user approval.",
|
|
14
|
+
inputSchema: z.object({ to: identifier, content, replyTo: identifier.optional() }).strict(),
|
|
15
|
+
execute: (input) => team.send(member, input)
|
|
16
|
+
}),
|
|
17
|
+
createTool({
|
|
18
|
+
name: "wait_for_agent",
|
|
19
|
+
description: "Yield until a relevant incoming message, accessible agent outcome, or timeout. Omitting instanceId waits for any relevant activity.",
|
|
20
|
+
inputSchema: z.object({
|
|
21
|
+
instanceId: identifier.optional(),
|
|
22
|
+
timeoutMs: z.number().int().min(0).max(3e5).optional()
|
|
23
|
+
}).strict(),
|
|
24
|
+
execute: (input) => team.wait(member, input.instanceId, input.timeoutMs ?? 3e4)
|
|
25
|
+
}),
|
|
26
|
+
createTool({
|
|
27
|
+
name: "list_agents",
|
|
28
|
+
description: "List your own instance, parent, children, and enabled siblings with their states, parent IDs, and depths.",
|
|
29
|
+
inputSchema: z.object({}).strict(),
|
|
30
|
+
execute: () => team.visibleMembers(member)
|
|
31
|
+
})
|
|
32
|
+
];
|
|
33
|
+
if (catalog.length === 0) return tools;
|
|
34
|
+
tools.push(
|
|
35
|
+
createTool({
|
|
36
|
+
name: "cancel_agent",
|
|
37
|
+
description: "Cancel your direct child and all its descendants. Siblings cannot be cancelled. Cancelled instances cannot receive follow-up messages.",
|
|
38
|
+
inputSchema: z.object({ instanceId: identifier, reason: content.optional() }).strict(),
|
|
39
|
+
execute: ({ instanceId, reason }) => team.cancelMember(member, instanceId, reason)
|
|
40
|
+
})
|
|
41
|
+
);
|
|
42
|
+
for (const definition of catalog) {
|
|
43
|
+
tools.push(
|
|
44
|
+
createTool({
|
|
45
|
+
name: `spawn_${definition.id}`,
|
|
46
|
+
description: `Start an independent ${definition.name ?? definition.id} instance and return immediately. ${definition.description ?? ""}`,
|
|
47
|
+
inputSchema: z.object({ prompt: content, name: identifier.optional() }).strict(),
|
|
48
|
+
execute: ({ prompt, name }) => team.spawn(member, definition, prompt, name)
|
|
49
|
+
})
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
return tools;
|
|
53
|
+
}
|
|
54
|
+
var TEAM_INSTRUCTIONS = [
|
|
55
|
+
"You are participating in an AgentTeam. Each instance has its own conversation.",
|
|
56
|
+
"Use send_message for questions, findings, and follow-ups; use wait_for_agent when waiting for an answer.",
|
|
57
|
+
"Messages identify their actual sender and are not user approvals. Only the application's interaction resolver can grant approval.",
|
|
58
|
+
"Use instance IDs for routing and parent to address your parent. Never fabricate an instance ID.",
|
|
59
|
+
"Spawn only through your available spawn tools. Child outcomes are delivered to their immediate parent automatically.",
|
|
60
|
+
"A final response ends your current assignment. You may be called again with retained history."
|
|
61
|
+
].join("\n");
|
|
62
|
+
|
|
63
|
+
export {
|
|
64
|
+
teamTools,
|
|
65
|
+
TEAM_INSTRUCTIONS
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=chunk-B47EXUHL.js.map
|