@theokit/sdk 4.39.0 → 4.39.2
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/CHANGELOG.md +61 -0
- package/dist/agent-KGKKAGXY.js +46 -0
- package/dist/{agent-KKZYLY5D.js.map → agent-KGKKAGXY.js.map} +1 -1
- package/dist/agent-TOWHPM7B.cjs +55 -0
- package/dist/{agent-I3EZZR6S.cjs.map → agent-TOWHPM7B.cjs.map} +1 -1
- package/dist/agent-session-store-EGTTYSKS.js +6 -0
- package/dist/{agent-session-store-RHMHP5DG.js.map → agent-session-store-EGTTYSKS.js.map} +1 -1
- package/dist/agent-session-store-RHTLZ5OX.cjs +23 -0
- package/dist/{agent-session-store-N4TVKHBU.cjs.map → agent-session-store-RHTLZ5OX.cjs.map} +1 -1
- package/dist/auth/index.cjs +15 -15
- package/dist/auth/index.js +4 -4
- package/dist/{batch-X6JKGDPK.cjs → batch-FO2KZN7W.cjs} +26 -26
- package/dist/{batch-X6JKGDPK.cjs.map → batch-FO2KZN7W.cjs.map} +1 -1
- package/dist/{batch-6KQM3EBA.js → batch-WX2HLXX2.js} +9 -9
- package/dist/{batch-6KQM3EBA.js.map → batch-WX2HLXX2.js.map} +1 -1
- package/dist/{chunk-ECHGWE47.cjs → chunk-27E4EMR6.cjs} +4 -4
- package/dist/{chunk-ECHGWE47.cjs.map → chunk-27E4EMR6.cjs.map} +1 -1
- package/dist/{chunk-DGLLVCNB.cjs → chunk-33B2BSME.cjs} +4 -4
- package/dist/{chunk-DGLLVCNB.cjs.map → chunk-33B2BSME.cjs.map} +1 -1
- package/dist/{chunk-KE6XKRLQ.js → chunk-3CAQCFVZ.js} +3 -3
- package/dist/{chunk-KE6XKRLQ.js.map → chunk-3CAQCFVZ.js.map} +1 -1
- package/dist/{chunk-XYOHKCYG.cjs → chunk-3LK3ZDL5.cjs} +5 -5
- package/dist/{chunk-XYOHKCYG.cjs.map → chunk-3LK3ZDL5.cjs.map} +1 -1
- package/dist/{chunk-I53ZQHU6.cjs → chunk-4E3HLSYE.cjs} +4 -4
- package/dist/{chunk-I53ZQHU6.cjs.map → chunk-4E3HLSYE.cjs.map} +1 -1
- package/dist/{chunk-AR5MQZ3J.js → chunk-4GGXF7YM.js} +3 -3
- package/dist/{chunk-AR5MQZ3J.js.map → chunk-4GGXF7YM.js.map} +1 -1
- package/dist/{chunk-4JSZYSGW.js → chunk-4H2DCO6P.js} +3 -3
- package/dist/{chunk-4JSZYSGW.js.map → chunk-4H2DCO6P.js.map} +1 -1
- package/dist/{chunk-75DSEWTJ.cjs → chunk-4H2QARXM.cjs} +7 -7
- package/dist/{chunk-75DSEWTJ.cjs.map → chunk-4H2QARXM.cjs.map} +1 -1
- package/dist/{chunk-JZUPMTJY.js → chunk-4HKAZRTC.js} +3 -3
- package/dist/{chunk-JZUPMTJY.js.map → chunk-4HKAZRTC.js.map} +1 -1
- package/dist/{chunk-CEIHCKTO.cjs → chunk-5COPO3H4.cjs} +4 -4
- package/dist/{chunk-CEIHCKTO.cjs.map → chunk-5COPO3H4.cjs.map} +1 -1
- package/dist/{chunk-KX7JV5KM.js → chunk-5XPKYDK7.js} +3 -3
- package/dist/{chunk-KX7JV5KM.js.map → chunk-5XPKYDK7.js.map} +1 -1
- package/dist/{chunk-E2FFG33C.js → chunk-7HP6N5X3.js} +5 -5
- package/dist/{chunk-E2FFG33C.js.map → chunk-7HP6N5X3.js.map} +1 -1
- package/dist/{chunk-3I4B3OIX.js → chunk-7PBAJ2WA.js} +3 -3
- package/dist/{chunk-3I4B3OIX.js.map → chunk-7PBAJ2WA.js.map} +1 -1
- package/dist/{chunk-KGRIHEDT.js → chunk-7WXT5M6P.js} +5 -5
- package/dist/{chunk-KGRIHEDT.js.map → chunk-7WXT5M6P.js.map} +1 -1
- package/dist/{chunk-BCQ3E2ZG.cjs → chunk-A76OFN2B.cjs} +8 -4
- package/dist/chunk-A76OFN2B.cjs.map +1 -0
- package/dist/{chunk-TOTP24P6.js → chunk-AFJAQ5JV.js} +4 -4
- package/dist/{chunk-TOTP24P6.js.map → chunk-AFJAQ5JV.js.map} +1 -1
- package/dist/{chunk-DKFGUOWL.js → chunk-AKMPQJPX.js} +3 -3
- package/dist/{chunk-DKFGUOWL.js.map → chunk-AKMPQJPX.js.map} +1 -1
- package/dist/{chunk-HIQFVHC6.cjs → chunk-ALDFVGQQ.cjs} +9 -9
- package/dist/{chunk-HIQFVHC6.cjs.map → chunk-ALDFVGQQ.cjs.map} +1 -1
- package/dist/{chunk-INSFS5GT.cjs → chunk-AYDSWY35.cjs} +293 -293
- package/dist/{chunk-INSFS5GT.cjs.map → chunk-AYDSWY35.cjs.map} +1 -1
- package/dist/{chunk-YRXY2A5L.js → chunk-BBMN4O6E.js} +4 -4
- package/dist/{chunk-YRXY2A5L.js.map → chunk-BBMN4O6E.js.map} +1 -1
- package/dist/{chunk-6EEYRFJC.js → chunk-BM7VYZED.js} +5 -5
- package/dist/{chunk-6EEYRFJC.js.map → chunk-BM7VYZED.js.map} +1 -1
- package/dist/{chunk-ML5A5DOJ.js → chunk-C64E2EJS.js} +4 -4
- package/dist/{chunk-ML5A5DOJ.js.map → chunk-C64E2EJS.js.map} +1 -1
- package/dist/{chunk-E4IUN3JB.cjs → chunk-CJHBSSAF.cjs} +15 -15
- package/dist/{chunk-E4IUN3JB.cjs.map → chunk-CJHBSSAF.cjs.map} +1 -1
- package/dist/{chunk-IHFNRNTJ.cjs → chunk-E7WWIX34.cjs} +8 -8
- package/dist/{chunk-IHFNRNTJ.cjs.map → chunk-E7WWIX34.cjs.map} +1 -1
- package/dist/{chunk-C7OP3FAK.cjs → chunk-EJNFZET4.cjs} +11 -11
- package/dist/{chunk-C7OP3FAK.cjs.map → chunk-EJNFZET4.cjs.map} +1 -1
- package/dist/{chunk-ECW2MLEW.cjs → chunk-ELYGL52R.cjs} +4 -4
- package/dist/{chunk-ECW2MLEW.cjs.map → chunk-ELYGL52R.cjs.map} +1 -1
- package/dist/{chunk-GIRD3RWH.js → chunk-ERBH54V3.js} +35 -35
- package/dist/{chunk-GIRD3RWH.js.map → chunk-ERBH54V3.js.map} +1 -1
- package/dist/{chunk-JRLXEYR4.js → chunk-EYUZZXHZ.js} +4 -4
- package/dist/{chunk-JRLXEYR4.js.map → chunk-EYUZZXHZ.js.map} +1 -1
- package/dist/{chunk-PI4RO4GR.js → chunk-F4SQTWVR.js} +3 -3
- package/dist/{chunk-PI4RO4GR.js.map → chunk-F4SQTWVR.js.map} +1 -1
- package/dist/{chunk-LALG2K33.cjs → chunk-FMDZZRYE.cjs} +8 -8
- package/dist/{chunk-LALG2K33.cjs.map → chunk-FMDZZRYE.cjs.map} +1 -1
- package/dist/{chunk-SCFW5MJZ.js → chunk-FUP3ZA5T.js} +4 -4
- package/dist/{chunk-SCFW5MJZ.js.map → chunk-FUP3ZA5T.js.map} +1 -1
- package/dist/{chunk-DWY25VLP.cjs → chunk-H2V6CXM7.cjs} +9 -9
- package/dist/{chunk-DWY25VLP.cjs.map → chunk-H2V6CXM7.cjs.map} +1 -1
- package/dist/{chunk-DU7DE543.js → chunk-HCRCNI7A.js} +3 -3
- package/dist/{chunk-DU7DE543.js.map → chunk-HCRCNI7A.js.map} +1 -1
- package/dist/{chunk-QKE556YD.js → chunk-HJMFPIRM.js} +5 -5
- package/dist/{chunk-QKE556YD.js.map → chunk-HJMFPIRM.js.map} +1 -1
- package/dist/{chunk-J3UK2GMN.js → chunk-IEKSEAIV.js} +3 -3
- package/dist/{chunk-J3UK2GMN.js.map → chunk-IEKSEAIV.js.map} +1 -1
- package/dist/{chunk-DMTZ3FII.cjs → chunk-JERO4TP6.cjs} +5 -5
- package/dist/{chunk-DMTZ3FII.cjs.map → chunk-JERO4TP6.cjs.map} +1 -1
- package/dist/{chunk-6LGQECT7.cjs → chunk-K6TWHNT4.cjs} +11 -11
- package/dist/{chunk-6LGQECT7.cjs.map → chunk-K6TWHNT4.cjs.map} +1 -1
- package/dist/{chunk-4F7JQZOX.js → chunk-KRPEPZQY.js} +7 -7
- package/dist/{chunk-4F7JQZOX.js.map → chunk-KRPEPZQY.js.map} +1 -1
- package/dist/{chunk-CN6UX5EV.cjs → chunk-LNTQRD23.cjs} +26 -26
- package/dist/{chunk-CN6UX5EV.cjs.map → chunk-LNTQRD23.cjs.map} +1 -1
- package/dist/{chunk-W4WKVOOQ.cjs → chunk-LOTWA65Z.cjs} +11 -11
- package/dist/{chunk-W4WKVOOQ.cjs.map → chunk-LOTWA65Z.cjs.map} +1 -1
- package/dist/{chunk-BPN5ONSW.cjs → chunk-LR3VKB7A.cjs} +124 -120
- package/dist/chunk-LR3VKB7A.cjs.map +1 -0
- package/dist/{chunk-ET6PHZRX.js → chunk-LWVKI75U.js} +3 -3
- package/dist/{chunk-ET6PHZRX.js.map → chunk-LWVKI75U.js.map} +1 -1
- package/dist/{chunk-G2Q3ZC6C.cjs → chunk-LY4KEOOY.cjs} +4 -4
- package/dist/{chunk-G2Q3ZC6C.cjs.map → chunk-LY4KEOOY.cjs.map} +1 -1
- package/dist/{chunk-42IFCKQZ.js → chunk-LYD3ALDT.js} +5 -5
- package/dist/{chunk-42IFCKQZ.js.map → chunk-LYD3ALDT.js.map} +1 -1
- package/dist/{chunk-KWUNN5J2.js → chunk-MDN44YMZ.js} +5 -5
- package/dist/{chunk-KWUNN5J2.js.map → chunk-MDN44YMZ.js.map} +1 -1
- package/dist/{chunk-HWNVAUK4.js → chunk-MI3OKONE.js} +3 -3
- package/dist/{chunk-HWNVAUK4.js.map → chunk-MI3OKONE.js.map} +1 -1
- package/dist/{chunk-VJYSQXN6.cjs → chunk-MM2JKFQV.cjs} +10 -10
- package/dist/{chunk-VJYSQXN6.cjs.map → chunk-MM2JKFQV.cjs.map} +1 -1
- package/dist/{chunk-74D7KSBP.cjs → chunk-MWVLE5RY.cjs} +11 -11
- package/dist/{chunk-74D7KSBP.cjs.map → chunk-MWVLE5RY.cjs.map} +1 -1
- package/dist/{chunk-V2RBCCN5.js → chunk-NHXPQN44.js} +3 -3
- package/dist/{chunk-V2RBCCN5.js.map → chunk-NHXPQN44.js.map} +1 -1
- package/dist/{chunk-Z2CUEBXV.cjs → chunk-NJVV5OAV.cjs} +8 -8
- package/dist/{chunk-Z2CUEBXV.cjs.map → chunk-NJVV5OAV.cjs.map} +1 -1
- package/dist/{chunk-J6T5LWJ4.cjs → chunk-OVGNXGCK.cjs} +9 -9
- package/dist/{chunk-J6T5LWJ4.cjs.map → chunk-OVGNXGCK.cjs.map} +1 -1
- package/dist/{chunk-TIMPJL5V.cjs → chunk-PDOLUFGY.cjs} +4 -4
- package/dist/{chunk-TIMPJL5V.cjs.map → chunk-PDOLUFGY.cjs.map} +1 -1
- package/dist/{chunk-FWBSDQZ7.cjs → chunk-PIBXDEZM.cjs} +5 -5
- package/dist/{chunk-FWBSDQZ7.cjs.map → chunk-PIBXDEZM.cjs.map} +1 -1
- package/dist/{chunk-USZTVNUQ.cjs → chunk-PY7G7YWK.cjs} +5 -5
- package/dist/{chunk-USZTVNUQ.cjs.map → chunk-PY7G7YWK.cjs.map} +1 -1
- package/dist/{chunk-N475ETD6.cjs → chunk-QMIG7TKG.cjs} +17 -17
- package/dist/{chunk-N475ETD6.cjs.map → chunk-QMIG7TKG.cjs.map} +1 -1
- package/dist/{chunk-D7IULBF2.js → chunk-RA2UZBYP.js} +3 -3
- package/dist/{chunk-D7IULBF2.js.map → chunk-RA2UZBYP.js.map} +1 -1
- package/dist/{chunk-7OLG7VI4.cjs → chunk-RHQJX3EI.cjs} +4 -4
- package/dist/{chunk-7OLG7VI4.cjs.map → chunk-RHQJX3EI.cjs.map} +1 -1
- package/dist/{chunk-YP67XZES.js → chunk-RMCHJZNZ.js} +4 -4
- package/dist/{chunk-YP67XZES.js.map → chunk-RMCHJZNZ.js.map} +1 -1
- package/dist/{chunk-ZYB6B7QJ.js → chunk-RMO7HAIF.js} +13 -9
- package/dist/chunk-RMO7HAIF.js.map +1 -0
- package/dist/{chunk-IVSD7L22.js → chunk-RNCN2TTP.js} +8 -4
- package/dist/chunk-RNCN2TTP.js.map +1 -0
- package/dist/{chunk-BQDUEG4C.js → chunk-RTDT2UMT.js} +3 -3
- package/dist/{chunk-BQDUEG4C.js.map → chunk-RTDT2UMT.js.map} +1 -1
- package/dist/{chunk-FRUBE44B.cjs → chunk-TZ47DTM2.cjs} +24 -24
- package/dist/{chunk-FRUBE44B.cjs.map → chunk-TZ47DTM2.cjs.map} +1 -1
- package/dist/{chunk-6YNYA7GD.cjs → chunk-U53AYSHS.cjs} +11 -11
- package/dist/{chunk-6YNYA7GD.cjs.map → chunk-U53AYSHS.cjs.map} +1 -1
- package/dist/{chunk-G4XUXSRN.cjs → chunk-UDSGSPUY.cjs} +12 -12
- package/dist/{chunk-G4XUXSRN.cjs.map → chunk-UDSGSPUY.cjs.map} +1 -1
- package/dist/{chunk-LJX2SQV2.js → chunk-UIPTINIF.js} +6 -6
- package/dist/{chunk-LJX2SQV2.js.map → chunk-UIPTINIF.js.map} +1 -1
- package/dist/{chunk-6NEHIHFU.cjs → chunk-V7CA3CX5.cjs} +4 -4
- package/dist/{chunk-6NEHIHFU.cjs.map → chunk-V7CA3CX5.cjs.map} +1 -1
- package/dist/{chunk-SG5ZWT6C.js → chunk-VQ33XLC6.js} +3 -3
- package/dist/{chunk-SG5ZWT6C.js.map → chunk-VQ33XLC6.js.map} +1 -1
- package/dist/{chunk-AECV3G5Z.js → chunk-VTDQRUAJ.js} +4 -4
- package/dist/{chunk-AECV3G5Z.js.map → chunk-VTDQRUAJ.js.map} +1 -1
- package/dist/{chunk-MC5EINBV.js → chunk-WJOLIPEM.js} +8 -8
- package/dist/{chunk-MC5EINBV.js.map → chunk-WJOLIPEM.js.map} +1 -1
- package/dist/{chunk-7U2HAAWB.cjs → chunk-X2LDDKFM.cjs} +10 -10
- package/dist/{chunk-7U2HAAWB.cjs.map → chunk-X2LDDKFM.cjs.map} +1 -1
- package/dist/{chunk-LGILIGV3.js → chunk-XKGOIGTJ.js} +3 -3
- package/dist/{chunk-LGILIGV3.js.map → chunk-XKGOIGTJ.js.map} +1 -1
- package/dist/{chunk-65ONFZWM.js → chunk-XZ7PO2FM.js} +4 -4
- package/dist/{chunk-65ONFZWM.js.map → chunk-XZ7PO2FM.js.map} +1 -1
- package/dist/{chunk-DCXRHCZJ.cjs → chunk-Z5DYGBPV.cjs} +8 -8
- package/dist/{chunk-DCXRHCZJ.cjs.map → chunk-Z5DYGBPV.cjs.map} +1 -1
- package/dist/{chunk-7YBJZS5P.cjs → chunk-ZAKTZ5B4.cjs} +8 -8
- package/dist/{chunk-7YBJZS5P.cjs.map → chunk-ZAKTZ5B4.cjs.map} +1 -1
- package/dist/compact-session-FCEFK2CG.cjs +55 -0
- package/dist/{compact-session-VVT6IBJG.cjs.map → compact-session-FCEFK2CG.cjs.map} +1 -1
- package/dist/compact-session-KPYRNTQN.js +18 -0
- package/dist/{compact-session-PYEC3NZV.js.map → compact-session-KPYRNTQN.js.map} +1 -1
- package/dist/compaction.cjs +16 -16
- package/dist/compaction.js +3 -3
- package/dist/concurrency.cjs +6 -6
- package/dist/concurrency.js +4 -4
- package/dist/context-DNFT4B5D.cjs +22 -0
- package/dist/{context-2FZSC6VQ.cjs.map → context-DNFT4B5D.cjs.map} +1 -1
- package/dist/context-LYE6TJL5.js +5 -0
- package/dist/{context-ATJJAFOS.js.map → context-LYE6TJL5.js.map} +1 -1
- package/dist/cron.cjs +31 -31
- package/dist/cron.js +30 -30
- package/dist/errors.cjs +21 -21
- package/dist/errors.js +2 -2
- package/dist/eval.cjs +36 -36
- package/dist/eval.js +30 -30
- package/dist/{executor-T65PPOPT.js → executor-PCRX3533.js} +7 -7
- package/dist/{executor-T65PPOPT.js.map → executor-PCRX3533.js.map} +1 -1
- package/dist/{executor-BMRICN46.cjs → executor-TQ3FSZ7F.cjs} +24 -24
- package/dist/{executor-BMRICN46.cjs.map → executor-TQ3FSZ7F.cjs.map} +1 -1
- package/dist/filesystem/index.cjs +7 -7
- package/dist/filesystem/index.js +3 -3
- package/dist/fs-session-store-V32XJ63Z.cjs +19 -0
- package/dist/{fs-session-store-J5MCFFUM.cjs.map → fs-session-store-V32XJ63Z.cjs.map} +1 -1
- package/dist/fs-session-store-YPZIOLJM.js +10 -0
- package/dist/{fs-session-store-O6FNHECD.js.map → fs-session-store-YPZIOLJM.js.map} +1 -1
- package/dist/generate-object-DLHT5RXH.js +7 -0
- package/dist/{generate-object-XDCBYVK3.js.map → generate-object-DLHT5RXH.js.map} +1 -1
- package/dist/generate-object-QILSGTEJ.cjs +20 -0
- package/dist/{generate-object-UF6WIZLF.cjs.map → generate-object-QILSGTEJ.cjs.map} +1 -1
- package/dist/index-manager-LEMQ73A7.cjs +20 -0
- package/dist/{index-manager-N7RQYUKT.cjs.map → index-manager-LEMQ73A7.cjs.map} +1 -1
- package/dist/index-manager-SXF3FAQV.js +11 -0
- package/dist/{index-manager-ZVZUHPP7.js.map → index-manager-SXF3FAQV.js.map} +1 -1
- package/dist/index.cjs +129 -129
- package/dist/index.js +43 -43
- package/dist/{inject-session-LFCYVSLJ.cjs → inject-session-BIVVFWGL.cjs} +9 -9
- package/dist/{inject-session-LFCYVSLJ.cjs.map → inject-session-BIVVFWGL.cjs.map} +1 -1
- package/dist/{inject-session-GQMTDZUN.js → inject-session-OLWZ2NJN.js} +7 -7
- package/dist/{inject-session-GQMTDZUN.js.map → inject-session-OLWZ2NJN.js.map} +1 -1
- package/dist/internal/memory/adapters/index.cjs +8 -8
- package/dist/internal/memory/adapters/index.js +7 -7
- package/dist/internal/persistence/index.cjs +25 -25
- package/dist/internal/persistence/index.js +6 -6
- package/dist/internal/security/index.cjs +13 -13
- package/dist/internal/security/index.js +3 -3
- package/dist/judge-call-AIT3EULV.cjs +22 -0
- package/dist/{judge-call-U2D33JOW.cjs.map → judge-call-AIT3EULV.cjs.map} +1 -1
- package/dist/judge-call-NPRU7JIQ.js +5 -0
- package/dist/{judge-call-NA2G6ZMJ.js.map → judge-call-NPRU7JIQ.js.map} +1 -1
- package/dist/models.cjs +20 -20
- package/dist/models.js +5 -5
- package/dist/path-safety.cjs +10 -10
- package/dist/path-safety.js +3 -3
- package/dist/persistence.cjs +26 -26
- package/dist/persistence.js +7 -7
- package/dist/project.cjs +5 -5
- package/dist/project.js +3 -3
- package/dist/registry-AXQXPLFH.js +9 -0
- package/dist/{registry-CAS6Y5ZY.js.map → registry-AXQXPLFH.js.map} +1 -1
- package/dist/registry-VKDFTK6L.cjs +46 -0
- package/dist/{registry-JSDI4WKA.cjs.map → registry-VKDFTK6L.cjs.map} +1 -1
- package/dist/retry.cjs +4 -4
- package/dist/retry.js +3 -3
- package/dist/sandbox/index.cjs +6 -6
- package/dist/sandbox/index.js +2 -2
- package/dist/server/errors-envelope.cjs +14 -14
- package/dist/server/errors-envelope.js +3 -3
- package/dist/session-transcript-SLQRKQ72.cjs +50 -0
- package/dist/{session-transcript-H7NUFXXM.cjs.map → session-transcript-SLQRKQ72.cjs.map} +1 -1
- package/dist/session-transcript-X3UMSVL2.js +5 -0
- package/dist/{session-transcript-3B52DKTG.js.map → session-transcript-X3UMSVL2.js.map} +1 -1
- package/dist/skills.cjs +7 -7
- package/dist/skills.js +5 -5
- package/dist/stream-object-3HEUGMQY.cjs +20 -0
- package/dist/{stream-object-4FDU76YW.cjs.map → stream-object-3HEUGMQY.cjs.map} +1 -1
- package/dist/stream-object-VWYW7FJ2.js +7 -0
- package/dist/{stream-object-HWDEEQN4.js.map → stream-object-VWYW7FJ2.js.map} +1 -1
- package/dist/subagents-loader-F52ARQ62.cjs +15 -0
- package/dist/{subagents-loader-A4W6C3QP.cjs.map → subagents-loader-F52ARQ62.cjs.map} +1 -1
- package/dist/subagents-loader-QUIK6GMV.js +6 -0
- package/dist/{subagents-loader-X33KH2SZ.js.map → subagents-loader-QUIK6GMV.js.map} +1 -1
- package/dist/subagents-loader.cjs +6 -6
- package/dist/subagents-loader.js +4 -4
- package/dist/subscription/index.cjs +3 -3
- package/dist/subscription/index.js +2 -2
- package/dist/task-store.cjs +7 -7
- package/dist/task-store.js +4 -4
- package/dist/workflow.cjs +27 -27
- package/dist/workflow.js +6 -6
- package/package.json +1 -1
- package/dist/agent-I3EZZR6S.cjs +0 -55
- package/dist/agent-KKZYLY5D.js +0 -46
- package/dist/agent-session-store-N4TVKHBU.cjs +0 -23
- package/dist/agent-session-store-RHMHP5DG.js +0 -6
- package/dist/chunk-BCQ3E2ZG.cjs.map +0 -1
- package/dist/chunk-BPN5ONSW.cjs.map +0 -1
- package/dist/chunk-IVSD7L22.js.map +0 -1
- package/dist/chunk-ZYB6B7QJ.js.map +0 -1
- package/dist/compact-session-PYEC3NZV.js +0 -18
- package/dist/compact-session-VVT6IBJG.cjs +0 -55
- package/dist/context-2FZSC6VQ.cjs +0 -22
- package/dist/context-ATJJAFOS.js +0 -5
- package/dist/fs-session-store-J5MCFFUM.cjs +0 -19
- package/dist/fs-session-store-O6FNHECD.js +0 -10
- package/dist/generate-object-UF6WIZLF.cjs +0 -20
- package/dist/generate-object-XDCBYVK3.js +0 -7
- package/dist/index-manager-N7RQYUKT.cjs +0 -20
- package/dist/index-manager-ZVZUHPP7.js +0 -11
- package/dist/judge-call-NA2G6ZMJ.js +0 -5
- package/dist/judge-call-U2D33JOW.cjs +0 -22
- package/dist/registry-CAS6Y5ZY.js +0 -9
- package/dist/registry-JSDI4WKA.cjs +0 -46
- package/dist/session-transcript-3B52DKTG.js +0 -5
- package/dist/session-transcript-H7NUFXXM.cjs +0 -50
- package/dist/stream-object-4FDU76YW.cjs +0 -20
- package/dist/stream-object-HWDEEQN4.js +0 -7
- package/dist/subagents-loader-A4W6C3QP.cjs +0 -15
- package/dist/subagents-loader-X33KH2SZ.js +0 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.39.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- The retry diagnostic reads `retry 1/3 in 431ms` — it said `em` in 4.39.1.
|
|
8
|
+
|
|
9
|
+
One Portuguese word shipped inside an English-only codebase. The lint gate that enforces the rule
|
|
10
|
+
cannot see a two-letter word inside a template literal, so it passed review and passed CI; it was
|
|
11
|
+
caught by reading the built artifact before a later publish.
|
|
12
|
+
|
|
13
|
+
The regression test now pins the WORDING and not just the fields (`/retry \d+\/\d+ in \d+ms/`), so a
|
|
14
|
+
language slip fails a test rather than depending on a gate that is structurally unable to catch it.
|
|
15
|
+
|
|
16
|
+
## 4.39.1
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- A retry no longer runs silently: each attempt announces itself through the diagnostics channel.
|
|
21
|
+
|
|
22
|
+
Every attempt now emits its number and ceiling, the backoff it is about to wait, the error class, and
|
|
23
|
+
the provider's `Retry-After` when one arrived. Nothing is written unless a host installs a sink
|
|
24
|
+
(`setDiagnosticsSink`), so the default stays silent — a library does not own the host's terminal.
|
|
25
|
+
|
|
26
|
+
The bug this closes is not a missing retry. `RetryingLlmClient` already wraps every arm of the
|
|
27
|
+
router, and `RateLimitError` is already retryable with a ceiling of 3. The defect was that the retry
|
|
28
|
+
was _unobservable_: the backoff is full-jitter, so three attempts can complete inside milliseconds
|
|
29
|
+
and disappear into the response latency. Issue #165 is the cost, measured — a 429 was investigated on
|
|
30
|
+
the wrong hypothesis for hours, because the available evidence could not distinguish "retried three
|
|
31
|
+
times and failed" from "never retried".
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
import { setDiagnosticsSink } from "@theokit/sdk";
|
|
35
|
+
setDiagnosticsSink((m) => process.stderr.write(m + "\n"));
|
|
36
|
+
```
|
|
37
|
+
|
|
3
38
|
## 4.39.0
|
|
4
39
|
|
|
5
40
|
### Minor Changes
|
|
@@ -237,6 +272,32 @@
|
|
|
237
272
|
what the loop consumes — previously it was produced and read by nobody, the same dead-channel shape
|
|
238
273
|
this release deletes elsewhere.
|
|
239
274
|
|
|
275
|
+
## 4.38.0
|
|
276
|
+
|
|
277
|
+
### Minor Changes
|
|
278
|
+
|
|
279
|
+
- New `run.events()` — every event of a run in true order, from a single source (theokit#140).
|
|
280
|
+
|
|
281
|
+
A consumer that wanted both structural messages and live token granularity had to fuse two
|
|
282
|
+
incomplete views by hand: `stream()` carries no token deltas, and `SendOptions.onDelta` carries no
|
|
283
|
+
`run_started` / `system`. Reconciling them in the consumer is what produced the ordering and
|
|
284
|
+
duplication bugs this replaces.
|
|
285
|
+
|
|
286
|
+
`events()` returns an `AsyncGenerator<RunTimelineEvent>`, a discriminated union of
|
|
287
|
+
`{ kind: "message" }` and `{ kind: "delta" }` — not a widened `SDKMessage`, because a token delta
|
|
288
|
+
is not a message and pretending otherwise would force every consumer to guess which of the two it
|
|
289
|
+
is holding.
|
|
290
|
+
|
|
291
|
+
Minor rather than major: `stream()` is untouched and remains the SDKMessage-only view, `onDelta` is
|
|
292
|
+
wrapped rather than replaced, and every existing consumer observes no change.
|
|
293
|
+
|
|
294
|
+
`RunTimelineEvent` is exported from the package barrel.
|
|
295
|
+
|
|
296
|
+
> Entry reconstructed on 2026-08-05. The 4.38.0 release was cut by a hand-written version bump
|
|
297
|
+
> (`8beb61da6`) that changed `package.json` alone — no changeset, so this section never existed and
|
|
298
|
+
> the published version shipped without notes. The facts here come from the release commit and the
|
|
299
|
+
> exported type contract, not from a recovered changeset.
|
|
300
|
+
|
|
240
301
|
## 4.37.2
|
|
241
302
|
|
|
242
303
|
### Patch Changes
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export { Agent } from './chunk-ERBH54V3.js';
|
|
2
|
+
import './chunk-2SFBB54R.js';
|
|
3
|
+
import './chunk-UIPTINIF.js';
|
|
4
|
+
import './chunk-K2BQQ445.js';
|
|
5
|
+
import './chunk-7HP6N5X3.js';
|
|
6
|
+
import './chunk-7WXT5M6P.js';
|
|
7
|
+
import './chunk-RMO7HAIF.js';
|
|
8
|
+
import './chunk-MI3OKONE.js';
|
|
9
|
+
import './chunk-5KOW3GLE.js';
|
|
10
|
+
import './chunk-7PBAJ2WA.js';
|
|
11
|
+
import './chunk-KRPEPZQY.js';
|
|
12
|
+
import './chunk-C64E2EJS.js';
|
|
13
|
+
import './chunk-7GFX45DD.js';
|
|
14
|
+
import './chunk-RMCHJZNZ.js';
|
|
15
|
+
import './chunk-HJMFPIRM.js';
|
|
16
|
+
import './chunk-FUP3ZA5T.js';
|
|
17
|
+
import './chunk-OXNYIMZZ.js';
|
|
18
|
+
import './chunk-FD2UT76F.js';
|
|
19
|
+
import './chunk-U54XCYG3.js';
|
|
20
|
+
import './chunk-RP5HQVLD.js';
|
|
21
|
+
import './chunk-6X6ID4MO.js';
|
|
22
|
+
import './chunk-UJ7IQJAG.js';
|
|
23
|
+
import './chunk-7AD3ZTZL.js';
|
|
24
|
+
import './chunk-XKGOIGTJ.js';
|
|
25
|
+
import './chunk-F4SQTWVR.js';
|
|
26
|
+
import './chunk-LWVKI75U.js';
|
|
27
|
+
import './chunk-EYUZZXHZ.js';
|
|
28
|
+
import './chunk-RTDT2UMT.js';
|
|
29
|
+
import './chunk-VTDQRUAJ.js';
|
|
30
|
+
import './chunk-2XLKLVVR.js';
|
|
31
|
+
import './chunk-BM7VYZED.js';
|
|
32
|
+
import './chunk-4VPXM6UU.js';
|
|
33
|
+
import './chunk-5XPKYDK7.js';
|
|
34
|
+
import './chunk-BBMN4O6E.js';
|
|
35
|
+
import './chunk-XZ7PO2FM.js';
|
|
36
|
+
import './chunk-X2FR4OIT.js';
|
|
37
|
+
import './chunk-AFJAQ5JV.js';
|
|
38
|
+
import './chunk-AKMPQJPX.js';
|
|
39
|
+
import './chunk-5NBUH3NO.js';
|
|
40
|
+
import './chunk-LYD3ALDT.js';
|
|
41
|
+
import './chunk-IEKSEAIV.js';
|
|
42
|
+
import './chunk-4GGXF7YM.js';
|
|
43
|
+
import './chunk-VQ33XLC6.js';
|
|
44
|
+
import './chunk-RNCN2TTP.js';
|
|
45
|
+
//# sourceMappingURL=agent-KGKKAGXY.js.map
|
|
46
|
+
//# sourceMappingURL=agent-KGKKAGXY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"agent-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"agent-KGKKAGXY.js"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkAYDSWY35_cjs = require('./chunk-AYDSWY35.cjs');
|
|
4
|
+
require('./chunk-BV2MWEMV.cjs');
|
|
5
|
+
require('./chunk-QMIG7TKG.cjs');
|
|
6
|
+
require('./chunk-BUUUWQMB.cjs');
|
|
7
|
+
require('./chunk-Z5DYGBPV.cjs');
|
|
8
|
+
require('./chunk-MWVLE5RY.cjs');
|
|
9
|
+
require('./chunk-LR3VKB7A.cjs');
|
|
10
|
+
require('./chunk-ELYGL52R.cjs');
|
|
11
|
+
require('./chunk-BURYFNOM.cjs');
|
|
12
|
+
require('./chunk-3LK3ZDL5.cjs');
|
|
13
|
+
require('./chunk-LNTQRD23.cjs');
|
|
14
|
+
require('./chunk-K6TWHNT4.cjs');
|
|
15
|
+
require('./chunk-WPZTYOUX.cjs');
|
|
16
|
+
require('./chunk-FMDZZRYE.cjs');
|
|
17
|
+
require('./chunk-X2LDDKFM.cjs');
|
|
18
|
+
require('./chunk-U53AYSHS.cjs');
|
|
19
|
+
require('./chunk-2RW7K6FN.cjs');
|
|
20
|
+
require('./chunk-MUUQ2WFJ.cjs');
|
|
21
|
+
require('./chunk-6JSIEDKL.cjs');
|
|
22
|
+
require('./chunk-B4YA6BRS.cjs');
|
|
23
|
+
require('./chunk-NINIJCHU.cjs');
|
|
24
|
+
require('./chunk-YPEPCZHF.cjs');
|
|
25
|
+
require('./chunk-VJ26EKGJ.cjs');
|
|
26
|
+
require('./chunk-RHQJX3EI.cjs');
|
|
27
|
+
require('./chunk-PDOLUFGY.cjs');
|
|
28
|
+
require('./chunk-4E3HLSYE.cjs');
|
|
29
|
+
require('./chunk-NJVV5OAV.cjs');
|
|
30
|
+
require('./chunk-JERO4TP6.cjs');
|
|
31
|
+
require('./chunk-4H2QARXM.cjs');
|
|
32
|
+
require('./chunk-YLQQX5W2.cjs');
|
|
33
|
+
require('./chunk-H2V6CXM7.cjs');
|
|
34
|
+
require('./chunk-WJVHMTKB.cjs');
|
|
35
|
+
require('./chunk-33B2BSME.cjs');
|
|
36
|
+
require('./chunk-LOTWA65Z.cjs');
|
|
37
|
+
require('./chunk-OVGNXGCK.cjs');
|
|
38
|
+
require('./chunk-VYHJZVL5.cjs');
|
|
39
|
+
require('./chunk-UDSGSPUY.cjs');
|
|
40
|
+
require('./chunk-V7CA3CX5.cjs');
|
|
41
|
+
require('./chunk-C6Y6CWYD.cjs');
|
|
42
|
+
require('./chunk-CJHBSSAF.cjs');
|
|
43
|
+
require('./chunk-ZAKTZ5B4.cjs');
|
|
44
|
+
require('./chunk-LY4KEOOY.cjs');
|
|
45
|
+
require('./chunk-E7WWIX34.cjs');
|
|
46
|
+
require('./chunk-A76OFN2B.cjs');
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
Object.defineProperty(exports, "Agent", {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
get: function () { return chunkAYDSWY35_cjs.Agent; }
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=agent-TOWHPM7B.cjs.map
|
|
55
|
+
//# sourceMappingURL=agent-TOWHPM7B.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"agent-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"agent-TOWHPM7B.cjs"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { appendCompactBoundaryRecord, persistTurn, readSessionMessages } from './chunk-7PBAJ2WA.js';
|
|
2
|
+
import './chunk-EYUZZXHZ.js';
|
|
3
|
+
import './chunk-5XPKYDK7.js';
|
|
4
|
+
import './chunk-RNCN2TTP.js';
|
|
5
|
+
//# sourceMappingURL=agent-session-store-EGTTYSKS.js.map
|
|
6
|
+
//# sourceMappingURL=agent-session-store-EGTTYSKS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"agent-session-store-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"agent-session-store-EGTTYSKS.js"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk3LK3ZDL5_cjs = require('./chunk-3LK3ZDL5.cjs');
|
|
4
|
+
require('./chunk-NJVV5OAV.cjs');
|
|
5
|
+
require('./chunk-33B2BSME.cjs');
|
|
6
|
+
require('./chunk-A76OFN2B.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Object.defineProperty(exports, "appendCompactBoundaryRecord", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () { return chunk3LK3ZDL5_cjs.appendCompactBoundaryRecord; }
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(exports, "persistTurn", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return chunk3LK3ZDL5_cjs.persistTurn; }
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "readSessionMessages", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return chunk3LK3ZDL5_cjs.readSessionMessages; }
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=agent-session-store-RHTLZ5OX.cjs.map
|
|
23
|
+
//# sourceMappingURL=agent-session-store-RHTLZ5OX.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"agent-session-store-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"agent-session-store-RHTLZ5OX.cjs"}
|
package/dist/auth/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkV7CA3CX5_cjs = require('../chunk-V7CA3CX5.cjs');
|
|
4
4
|
var chunkC6Y6CWYD_cjs = require('../chunk-C6Y6CWYD.cjs');
|
|
5
|
-
require('../chunk-
|
|
6
|
-
require('../chunk-
|
|
5
|
+
require('../chunk-E7WWIX34.cjs');
|
|
6
|
+
require('../chunk-A76OFN2B.cjs');
|
|
7
7
|
|
|
8
8
|
// src/internal/auth/oauth-device.ts
|
|
9
9
|
var POLLING_SAFETY_MARGIN_MS = 3e3;
|
|
@@ -183,7 +183,7 @@ async function openaiDeviceLogin(config, deps, hooks) {
|
|
|
183
183
|
"device poll returned no authorization_code"
|
|
184
184
|
);
|
|
185
185
|
}
|
|
186
|
-
const tokens = await
|
|
186
|
+
const tokens = await chunkV7CA3CX5_cjs.exchangeCode(
|
|
187
187
|
config,
|
|
188
188
|
{ code: data.authorization_code, verifier: data.code_verifier },
|
|
189
189
|
deps
|
|
@@ -227,47 +227,47 @@ function extractAccountId(tokens) {
|
|
|
227
227
|
|
|
228
228
|
Object.defineProperty(exports, "CredentialError", {
|
|
229
229
|
enumerable: true,
|
|
230
|
-
get: function () { return
|
|
230
|
+
get: function () { return chunkV7CA3CX5_cjs.CredentialError; }
|
|
231
231
|
});
|
|
232
232
|
Object.defineProperty(exports, "authFilePath", {
|
|
233
233
|
enumerable: true,
|
|
234
|
-
get: function () { return
|
|
234
|
+
get: function () { return chunkV7CA3CX5_cjs.authFilePath; }
|
|
235
235
|
});
|
|
236
236
|
Object.defineProperty(exports, "credentialHome", {
|
|
237
237
|
enumerable: true,
|
|
238
|
-
get: function () { return
|
|
238
|
+
get: function () { return chunkV7CA3CX5_cjs.credentialHome; }
|
|
239
239
|
});
|
|
240
240
|
Object.defineProperty(exports, "ensureFreshCredential", {
|
|
241
241
|
enumerable: true,
|
|
242
|
-
get: function () { return
|
|
242
|
+
get: function () { return chunkV7CA3CX5_cjs.ensureFreshCredential; }
|
|
243
243
|
});
|
|
244
244
|
Object.defineProperty(exports, "exchangeCode", {
|
|
245
245
|
enumerable: true,
|
|
246
|
-
get: function () { return
|
|
246
|
+
get: function () { return chunkV7CA3CX5_cjs.exchangeCode; }
|
|
247
247
|
});
|
|
248
248
|
Object.defineProperty(exports, "persistOAuthTokens", {
|
|
249
249
|
enumerable: true,
|
|
250
|
-
get: function () { return
|
|
250
|
+
get: function () { return chunkV7CA3CX5_cjs.persistOAuthTokens; }
|
|
251
251
|
});
|
|
252
252
|
Object.defineProperty(exports, "readAuthFile", {
|
|
253
253
|
enumerable: true,
|
|
254
|
-
get: function () { return
|
|
254
|
+
get: function () { return chunkV7CA3CX5_cjs.readAuthFile; }
|
|
255
255
|
});
|
|
256
256
|
Object.defineProperty(exports, "readStoredOAuth", {
|
|
257
257
|
enumerable: true,
|
|
258
|
-
get: function () { return
|
|
258
|
+
get: function () { return chunkV7CA3CX5_cjs.readStoredOAuth; }
|
|
259
259
|
});
|
|
260
260
|
Object.defineProperty(exports, "refreshOAuthTokens", {
|
|
261
261
|
enumerable: true,
|
|
262
|
-
get: function () { return
|
|
262
|
+
get: function () { return chunkV7CA3CX5_cjs.refreshOAuthTokens; }
|
|
263
263
|
});
|
|
264
264
|
Object.defineProperty(exports, "resolveCredential", {
|
|
265
265
|
enumerable: true,
|
|
266
|
-
get: function () { return
|
|
266
|
+
get: function () { return chunkV7CA3CX5_cjs.resolveCredential; }
|
|
267
267
|
});
|
|
268
268
|
Object.defineProperty(exports, "writeCredential", {
|
|
269
269
|
enumerable: true,
|
|
270
|
-
get: function () { return
|
|
270
|
+
get: function () { return chunkV7CA3CX5_cjs.writeCredential; }
|
|
271
271
|
});
|
|
272
272
|
exports.deviceLogin = deviceLogin;
|
|
273
273
|
exports.extractAccountId = extractAccountId;
|
package/dist/auth/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { exchangeCode } from '../chunk-
|
|
2
|
-
export { CredentialError, authFilePath, credentialHome, ensureFreshCredential, exchangeCode, persistOAuthTokens, readAuthFile, readStoredOAuth, refreshOAuthTokens, resolveCredential, writeCredential } from '../chunk-
|
|
1
|
+
import { exchangeCode } from '../chunk-AKMPQJPX.js';
|
|
2
|
+
export { CredentialError, authFilePath, credentialHome, ensureFreshCredential, exchangeCode, persistOAuthTokens, readAuthFile, readStoredOAuth, refreshOAuthTokens, resolveCredential, writeCredential } from '../chunk-AKMPQJPX.js';
|
|
3
3
|
import { AuthCallbackError } from '../chunk-5NBUH3NO.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-VQ33XLC6.js';
|
|
5
|
+
import '../chunk-RNCN2TTP.js';
|
|
6
6
|
|
|
7
7
|
// src/internal/auth/oauth-device.ts
|
|
8
8
|
var POLLING_SAFETY_MARGIN_MS = 3e3;
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkQMIG7TKG_cjs = require('./chunk-QMIG7TKG.cjs');
|
|
4
4
|
require('./chunk-BUUUWQMB.cjs');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
5
|
+
var chunkELYGL52R_cjs = require('./chunk-ELYGL52R.cjs');
|
|
6
|
+
var chunkPDOLUFGY_cjs = require('./chunk-PDOLUFGY.cjs');
|
|
7
7
|
require('./chunk-YLQQX5W2.cjs');
|
|
8
|
-
require('./chunk-
|
|
9
|
-
require('./chunk-
|
|
10
|
-
var
|
|
11
|
-
var
|
|
8
|
+
require('./chunk-H2V6CXM7.cjs');
|
|
9
|
+
require('./chunk-33B2BSME.cjs');
|
|
10
|
+
var chunkE7WWIX34_cjs = require('./chunk-E7WWIX34.cjs');
|
|
11
|
+
var chunkA76OFN2B_cjs = require('./chunk-A76OFN2B.cjs');
|
|
12
12
|
var crypto = require('crypto');
|
|
13
13
|
|
|
14
14
|
function validateBatchInput(prompts, options) {
|
|
15
15
|
const { concurrency } = options;
|
|
16
16
|
if (concurrency !== void 0 && (!Number.isInteger(concurrency) || concurrency < 1)) {
|
|
17
|
-
throw new
|
|
17
|
+
throw new chunkE7WWIX34_cjs.ConfigurationError(
|
|
18
18
|
`Agent.batch concurrency must be a positive integer, got ${concurrency}`,
|
|
19
19
|
{ code: "invalid_concurrency" }
|
|
20
20
|
);
|
|
@@ -23,7 +23,7 @@ function validateBatchInput(prompts, options) {
|
|
|
23
23
|
const item = prompts[i];
|
|
24
24
|
const prompt = typeof item === "string" ? item : item?.prompt;
|
|
25
25
|
if (typeof prompt !== "string" || prompt.length === 0) {
|
|
26
|
-
throw new
|
|
26
|
+
throw new chunkE7WWIX34_cjs.ConfigurationError(`Agent.batch prompt at index ${i} must be a non-empty string`, {
|
|
27
27
|
code: "invalid_batch_item"
|
|
28
28
|
});
|
|
29
29
|
}
|
|
@@ -37,7 +37,7 @@ async function batchImpl(prompts, options, deps) {
|
|
|
37
37
|
options.providers?.credentialPoolStrategy
|
|
38
38
|
);
|
|
39
39
|
const exec = () => runBatch(prompts, options, deps);
|
|
40
|
-
const withPool = () => sharedPools.size > 0 ?
|
|
40
|
+
const withPool = () => sharedPools.size > 0 ? chunkELYGL52R_cjs.withCredentialPool(sharedPools, exec) : exec();
|
|
41
41
|
if (options.task !== void 0) {
|
|
42
42
|
return wrapBatchAsTask(prompts.length, options.task, withPool);
|
|
43
43
|
}
|
|
@@ -51,7 +51,7 @@ async function wrapBatchAsTask(total, taskOpt, exec) {
|
|
|
51
51
|
...opts.meta ?? {}
|
|
52
52
|
};
|
|
53
53
|
let results = [];
|
|
54
|
-
await
|
|
54
|
+
await chunkQMIG7TKG_cjs.submit({
|
|
55
55
|
kind: "batch",
|
|
56
56
|
work: async (ctx) => {
|
|
57
57
|
results = await exec();
|
|
@@ -65,7 +65,7 @@ async function wrapBatchAsTask(total, taskOpt, exec) {
|
|
|
65
65
|
allowReservedPrefix: true
|
|
66
66
|
});
|
|
67
67
|
for (let i = 0; i < 5e3; i++) {
|
|
68
|
-
const h = await
|
|
68
|
+
const h = await chunkQMIG7TKG_cjs.get(id);
|
|
69
69
|
if (h?.state === "finished" || h?.state === "error" || h?.state === "cancelled") break;
|
|
70
70
|
await new Promise((r) => setTimeout(r, 5));
|
|
71
71
|
}
|
|
@@ -74,7 +74,7 @@ async function wrapBatchAsTask(total, taskOpt, exec) {
|
|
|
74
74
|
async function runBatch(prompts, options, deps) {
|
|
75
75
|
const requested = options.concurrency ?? 4;
|
|
76
76
|
const effective = Math.min(requested, prompts.length);
|
|
77
|
-
const semaphore =
|
|
77
|
+
const semaphore = chunkPDOLUFGY_cjs.createSemaphore(effective);
|
|
78
78
|
const items = prompts.map(normalizeItem);
|
|
79
79
|
const results = new Array(items.length);
|
|
80
80
|
const counters = { completed: 0, failed: 0 };
|
|
@@ -134,7 +134,7 @@ async function runOne(item, index, options, deps) {
|
|
|
134
134
|
try {
|
|
135
135
|
await agent.dispose();
|
|
136
136
|
} catch (disposeErr) {
|
|
137
|
-
|
|
137
|
+
chunkA76OFN2B_cjs.diag(
|
|
138
138
|
`[theokit-sdk] batch: agent.dispose failed for prompt ${index}: ${disposeErr instanceof Error ? disposeErr.message : String(disposeErr)}
|
|
139
139
|
`
|
|
140
140
|
);
|
|
@@ -172,15 +172,15 @@ function normalizeItem(promptOrItem) {
|
|
|
172
172
|
}
|
|
173
173
|
function abortResult(item, index, signal) {
|
|
174
174
|
let error;
|
|
175
|
-
if (signal?.reason instanceof
|
|
175
|
+
if (signal?.reason instanceof chunkE7WWIX34_cjs.TheokitAgentError) {
|
|
176
176
|
error = signal.reason;
|
|
177
177
|
} else if (signal?.reason instanceof Error) {
|
|
178
|
-
error = new
|
|
178
|
+
error = new chunkE7WWIX34_cjs.TheokitAgentError(signal.reason.message, {
|
|
179
179
|
code: "aborted",
|
|
180
180
|
cause: signal.reason
|
|
181
181
|
});
|
|
182
182
|
} else {
|
|
183
|
-
error = new
|
|
183
|
+
error = new chunkE7WWIX34_cjs.TheokitAgentError("Batch aborted via AbortSignal", { code: "aborted" });
|
|
184
184
|
}
|
|
185
185
|
return {
|
|
186
186
|
ok: false,
|
|
@@ -192,18 +192,18 @@ function abortResult(item, index, signal) {
|
|
|
192
192
|
};
|
|
193
193
|
}
|
|
194
194
|
function toTheokitError(err) {
|
|
195
|
-
if (err instanceof
|
|
195
|
+
if (err instanceof chunkE7WWIX34_cjs.TheokitAgentError) return err;
|
|
196
196
|
if (err instanceof Error) {
|
|
197
|
-
return new
|
|
197
|
+
return new chunkE7WWIX34_cjs.TheokitAgentError(err.message, { code: "unknown", cause: err });
|
|
198
198
|
}
|
|
199
|
-
return new
|
|
199
|
+
return new chunkE7WWIX34_cjs.TheokitAgentError(String(err), { code: "unknown" });
|
|
200
200
|
}
|
|
201
201
|
async function safeCallResult(cb, result) {
|
|
202
202
|
if (cb === void 0) return;
|
|
203
203
|
try {
|
|
204
204
|
await cb(result);
|
|
205
205
|
} catch (err) {
|
|
206
|
-
|
|
206
|
+
chunkA76OFN2B_cjs.diag(
|
|
207
207
|
`[theokit-sdk] batch: onResult callback threw: ${err instanceof Error ? err.message : String(err)}
|
|
208
208
|
`
|
|
209
209
|
);
|
|
@@ -214,7 +214,7 @@ function safeCallProgress(cb, progress) {
|
|
|
214
214
|
try {
|
|
215
215
|
cb(progress);
|
|
216
216
|
} catch (err) {
|
|
217
|
-
|
|
217
|
+
chunkA76OFN2B_cjs.diag(
|
|
218
218
|
`[theokit-sdk] batch: onProgress callback threw: ${err instanceof Error ? err.message : String(err)}
|
|
219
219
|
`
|
|
220
220
|
);
|
|
@@ -228,11 +228,11 @@ function buildPoolsFromApiKeys(apiKeys, strategy) {
|
|
|
228
228
|
const filtered = keys.filter((k) => typeof k === "string" && k.length > 0);
|
|
229
229
|
if (filtered.length < 2) continue;
|
|
230
230
|
const entries = filtered.map(
|
|
231
|
-
(token, i) =>
|
|
231
|
+
(token, i) => chunkELYGL52R_cjs.newPooledCredential({ provider, accessToken: token, priority: i, source: "manual" })
|
|
232
232
|
);
|
|
233
233
|
pools.set(
|
|
234
234
|
provider,
|
|
235
|
-
new
|
|
235
|
+
new chunkELYGL52R_cjs.CredentialPool(provider, entries, strategy?.[provider] ?? "fill_first")
|
|
236
236
|
);
|
|
237
237
|
}
|
|
238
238
|
return pools;
|
|
@@ -240,5 +240,5 @@ function buildPoolsFromApiKeys(apiKeys, strategy) {
|
|
|
240
240
|
|
|
241
241
|
exports.batchImpl = batchImpl;
|
|
242
242
|
exports.validateBatchInput = validateBatchInput;
|
|
243
|
-
//# sourceMappingURL=batch-
|
|
244
|
-
//# sourceMappingURL=batch-
|
|
243
|
+
//# sourceMappingURL=batch-FO2KZN7W.cjs.map
|
|
244
|
+
//# sourceMappingURL=batch-FO2KZN7W.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/batch.ts"],"names":["ConfigurationError","withCredentialPool","randomUUID","submit","get","createSemaphore","diag","TheokitAgentError","newPooledCredential","CredentialPool"],"mappings":"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","file":"batch-X6JKGDPK.cjs","sourcesContent":["/**\n * `Agent.batch(prompts, options)` core (ADRs D134-D140).\n *\n * Fans out N prompts via bounded concurrency, isolates failures per-prompt,\n * preserves input order in the result array, supports streaming callbacks\n * + AbortSignal. The credential pool (D131) is shared across all\n * in-flight agents via `withCredentialPool` ALS scope (EC-A fix).\n *\n * @internal\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport { ConfigurationError, TheokitAgentError } from \"./errors.js\";\nimport { diag } from \"./internal/diagnostics.js\";\nimport { CredentialPool, newPooledCredential } from \"./internal/llm/credential-pool.js\";\nimport { withCredentialPool } from \"./internal/llm/credential-pool-context.js\";\nimport type { CredentialPoolStrategy } from \"./internal/llm/credential-pool-types.js\";\nimport { createSemaphore } from \"./internal/runtime/concurrency/async-semaphore.js\";\nimport { get as taskRegistryGet, submit as taskRegistrySubmit } from \"./internal/task/registry.js\";\nimport type { AgentOptions, SDKAgent } from \"./types/agent.js\";\nimport type { BatchItem, BatchOptions, BatchProgress, BatchResult } from \"./types/batch.js\";\n\n/** DI contract — keeps batch.ts cycle-free from agent.ts. @internal */\ninterface BatchDeps {\n create: (options: AgentOptions) => Promise<SDKAgent>;\n}\n\n/**\n * Pre-flight boundary validation for `Agent.batch` (arch-review Gap 3).\n *\n * Mirrors the in-repo `validateAgentOptions` / `validateCronExpression`\n * pattern: throws `ConfigurationError` with a stable code on the first\n * violation, returns silently otherwise. Pure — no I/O.\n *\n * Rules:\n * - `concurrency`, when provided, must be a positive integer (rejects\n * 0/negative/non-integer/NaN/Infinity). Previously this was caught only\n * incidentally deep inside `createSemaphore` with a leaky \"permits\"\n * message, AND after task wrapping (dangling Task on invalid input).\n * - every prompt item must carry a non-empty string prompt. Previously\n * `normalizeItem` passed `prompt: \"\"` / non-string straight to\n * `agent.send`. (Whitespace-only strings are intentionally NOT rejected —\n * an empty string is a structural error; judging content is not this\n * validator's job, and the repo's property tests treat any length>=1\n * string as a valid prompt.)\n *\n * @internal\n */\nexport function validateBatchInput(\n prompts: ReadonlyArray<string | BatchItem>,\n options: BatchOptions,\n): void {\n const { concurrency } = options;\n if (concurrency !== undefined && (!Number.isInteger(concurrency) || concurrency < 1)) {\n throw new ConfigurationError(\n `Agent.batch concurrency must be a positive integer, got ${concurrency}`,\n { code: \"invalid_concurrency\" },\n );\n }\n for (let i = 0; i < prompts.length; i++) {\n const item = prompts[i];\n const prompt = typeof item === \"string\" ? item : item?.prompt;\n if (typeof prompt !== \"string\" || prompt.length === 0) {\n throw new ConfigurationError(`Agent.batch prompt at index ${i} must be a non-empty string`, {\n code: \"invalid_batch_item\",\n });\n }\n }\n}\n\n/**\n * Run N prompts in parallel with bounded concurrency.\n *\n * @internal\n */\nexport async function batchImpl(\n prompts: ReadonlyArray<string | BatchItem>,\n options: BatchOptions,\n deps: BatchDeps,\n): Promise<BatchResult[]> {\n // EC-1: empty array → no work, no agents created.\n if (prompts.length === 0) return [];\n\n // Pre-flight boundary validation (arch-review Gap 3). MUST run before pool\n // build AND before wrapBatchAsTask so invalid input never registers a\n // dangling Task or builds a credential pool (fail-fast, Rule 8).\n validateBatchInput(prompts, options);\n\n // EC-A fix: build credential pools ONCE and share via AsyncLocalStorage.\n // Without this each Agent.create() would build its own pool from identical\n // apiKeys → 4× rate-limit wastage per concurrency window.\n const sharedPools = buildPoolsFromApiKeys(\n options.providers?.apiKeys,\n options.providers?.credentialPoolStrategy,\n );\n const exec = (): Promise<BatchResult[]> => runBatch(prompts, options, deps);\n const withPool = (): Promise<BatchResult[]> =>\n sharedPools.size > 0 ? withCredentialPool(sharedPools, exec) : exec();\n // T3.3: opt-in Task wrapping (ADRs D363, D374). Register the whole\n // batch as a single Task (kind=\"batch\") with `b-` prefix (D368/EC-5).\n if (options.task !== undefined) {\n return wrapBatchAsTask(prompts.length, options.task, withPool);\n }\n return withPool();\n}\n\nasync function wrapBatchAsTask(\n total: number,\n taskOpt: true | { id?: string; meta?: Record<string, unknown> },\n exec: () => Promise<BatchResult[]>,\n): Promise<BatchResult[]> {\n const opts = taskOpt === true ? {} : taskOpt;\n const id = opts.id ?? `b-${randomUUID()}`;\n const meta: Record<string, unknown> = {\n total,\n ...(opts.meta ?? {}),\n };\n let results: BatchResult[] = [];\n await taskRegistrySubmit({\n kind: \"batch\",\n work: async (ctx) => {\n results = await exec();\n const succeeded = results.filter((r) => r.ok).length;\n const failed = results.length - succeeded;\n ctx.emit({ total: results.length, succeeded, failed });\n return { total: results.length, succeeded, failed };\n },\n id,\n meta,\n allowReservedPrefix: true,\n });\n // submit returns immediately with a queued handle. Wait for terminal.\n for (let i = 0; i < 5000; i++) {\n const h = await taskRegistryGet(id);\n if (h?.state === \"finished\" || h?.state === \"error\" || h?.state === \"cancelled\") break;\n await new Promise((r) => setTimeout(r, 5));\n }\n return results;\n}\n\nasync function runBatch(\n prompts: ReadonlyArray<string | BatchItem>,\n options: BatchOptions,\n deps: BatchDeps,\n): Promise<BatchResult[]> {\n const requested = options.concurrency ?? 4;\n // createSemaphore throws on invalid (EC-2).\n // EC-3: cap to prompts.length to avoid idle workers.\n const effective = Math.min(requested, prompts.length);\n const semaphore = createSemaphore(effective);\n const items = prompts.map(normalizeItem);\n const results: BatchResult[] = new Array(items.length);\n const counters = { completed: 0, failed: 0 };\n let aborted = false;\n\n const onAbort = (): void => {\n aborted = true;\n };\n options.signal?.addEventListener(\"abort\", onAbort);\n // EC-C: pre-aborted signal — treat as already-aborted before any work.\n if (options.signal?.aborted === true) aborted = true;\n\n try {\n await Promise.all(\n items.map(async (item, index) => {\n const release = await semaphore.acquire();\n try {\n if (aborted) {\n results[index] = abortResult(item, index, options.signal);\n } else {\n results[index] = await runOne(item, index, options, deps);\n }\n } finally {\n release();\n }\n if (results[index].ok) counters.completed += 1;\n else counters.failed += 1;\n await safeCallResult(options.onResult, results[index]);\n safeCallProgress(options.onProgress, {\n total: items.length,\n completed: counters.completed,\n failed: counters.failed,\n inFlight: semaphore.inFlight(),\n pending: Math.max(0, semaphore.pending() - semaphore.inFlight()),\n });\n }),\n );\n } finally {\n options.signal?.removeEventListener(\"abort\", onAbort);\n }\n\n return options.filter ? results.filter(options.filter) : results;\n}\n\nasync function runOne(\n item: BatchItem,\n index: number,\n options: BatchOptions,\n deps: BatchDeps,\n): Promise<BatchResult> {\n const t0 = Date.now();\n const agentOpts = buildAgentOptions(item, options);\n\n try {\n const agent = await deps.create(agentOpts);\n try {\n const run = await agent.send(item.prompt);\n const result = await run.wait();\n return {\n ok: true,\n index,\n prompt: item.prompt,\n result,\n ...(item.metadata !== undefined ? { metadata: item.metadata } : {}),\n durationMs: Date.now() - t0,\n };\n } finally {\n // EC-8: dispose failure → stderr warn, don't fail the result.\n try {\n await agent.dispose();\n } catch (disposeErr) {\n // theokit#147 — the interceptable channel; a batch run must not write onto a TUI's frame.\n diag(\n `[theokit-sdk] batch: agent.dispose failed for prompt ${index}: ${\n disposeErr instanceof Error ? disposeErr.message : String(disposeErr)\n }\\n`,\n );\n }\n }\n } catch (err) {\n return {\n ok: false,\n index,\n prompt: item.prompt,\n error: toTheokitError(err),\n ...(item.metadata !== undefined ? { metadata: item.metadata } : {}),\n durationMs: Date.now() - t0,\n };\n }\n}\n\nfunction buildAgentOptions(item: BatchItem, options: BatchOptions): AgentOptions {\n const {\n concurrency: _c,\n filter: _f,\n onResult: _or,\n onProgress: _op,\n signal: _s,\n task: _t,\n ...rest\n } = options;\n void _c;\n void _f;\n void _or;\n void _op;\n void _s;\n void _t;\n const agentOpts = rest as AgentOptions;\n if (item.systemPrompt !== undefined) {\n return { ...agentOpts, systemPrompt: item.systemPrompt };\n }\n return agentOpts;\n}\n\nfunction normalizeItem(promptOrItem: string | BatchItem): BatchItem {\n return typeof promptOrItem === \"string\" ? { prompt: promptOrItem } : promptOrItem;\n}\n\nfunction abortResult(item: BatchItem, index: number, signal?: AbortSignal): BatchResult {\n // EC-D: propagate signal.reason when set (preserves caller's error).\n let error: TheokitAgentError;\n if (signal?.reason instanceof TheokitAgentError) {\n error = signal.reason;\n } else if (signal?.reason instanceof Error) {\n error = new TheokitAgentError(signal.reason.message, {\n code: \"aborted\",\n cause: signal.reason,\n });\n } else {\n error = new TheokitAgentError(\"Batch aborted via AbortSignal\", { code: \"aborted\" });\n }\n return {\n ok: false,\n index,\n prompt: item.prompt,\n error,\n ...(item.metadata !== undefined ? { metadata: item.metadata } : {}),\n durationMs: 0,\n };\n}\n\nfunction toTheokitError(err: unknown): TheokitAgentError {\n if (err instanceof TheokitAgentError) return err;\n if (err instanceof Error) {\n return new TheokitAgentError(err.message, { code: \"unknown\", cause: err });\n }\n return new TheokitAgentError(String(err), { code: \"unknown\" });\n}\n\nasync function safeCallResult(cb: BatchOptions[\"onResult\"], result: BatchResult): Promise<void> {\n if (cb === undefined) return;\n try {\n await cb(result);\n } catch (err) {\n diag(\n `[theokit-sdk] batch: onResult callback threw: ${\n err instanceof Error ? err.message : String(err)\n }\\n`,\n );\n }\n}\n\nfunction safeCallProgress(cb: BatchOptions[\"onProgress\"], progress: BatchProgress): void {\n if (cb === undefined) return;\n try {\n cb(progress);\n } catch (err) {\n diag(\n `[theokit-sdk] batch: onProgress callback threw: ${\n err instanceof Error ? err.message : String(err)\n }\\n`,\n );\n }\n}\n\n/**\n * EC-A: construct shared pools from options.apiKeys. Empty/invalid → empty Map.\n *\n * @internal\n */\nfunction buildPoolsFromApiKeys(\n apiKeys: Record<string, string[]> | undefined,\n strategy: Record<string, CredentialPoolStrategy> | undefined,\n): Map<string, CredentialPool> {\n const pools = new Map<string, CredentialPool>();\n if (apiKeys === undefined) return pools;\n for (const [provider, keys] of Object.entries(apiKeys)) {\n if (!Array.isArray(keys)) continue;\n const filtered = keys.filter((k): k is string => typeof k === \"string\" && k.length > 0);\n if (filtered.length < 2) continue; // 1-key pools aren't pools\n const entries = filtered.map((token, i) =>\n newPooledCredential({ provider, accessToken: token, priority: i, source: \"manual\" }),\n );\n pools.set(\n provider,\n new CredentialPool(provider, entries, strategy?.[provider] ?? \"fill_first\"),\n );\n }\n return pools;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/batch.ts"],"names":["ConfigurationError","withCredentialPool","randomUUID","submit","get","createSemaphore","diag","TheokitAgentError","newPooledCredential","CredentialPool"],"mappings":"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","file":"batch-FO2KZN7W.cjs","sourcesContent":["/**\n * `Agent.batch(prompts, options)` core (ADRs D134-D140).\n *\n * Fans out N prompts via bounded concurrency, isolates failures per-prompt,\n * preserves input order in the result array, supports streaming callbacks\n * + AbortSignal. The credential pool (D131) is shared across all\n * in-flight agents via `withCredentialPool` ALS scope (EC-A fix).\n *\n * @internal\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport { ConfigurationError, TheokitAgentError } from \"./errors.js\";\nimport { diag } from \"./internal/diagnostics.js\";\nimport { CredentialPool, newPooledCredential } from \"./internal/llm/credential-pool.js\";\nimport { withCredentialPool } from \"./internal/llm/credential-pool-context.js\";\nimport type { CredentialPoolStrategy } from \"./internal/llm/credential-pool-types.js\";\nimport { createSemaphore } from \"./internal/runtime/concurrency/async-semaphore.js\";\nimport { get as taskRegistryGet, submit as taskRegistrySubmit } from \"./internal/task/registry.js\";\nimport type { AgentOptions, SDKAgent } from \"./types/agent.js\";\nimport type { BatchItem, BatchOptions, BatchProgress, BatchResult } from \"./types/batch.js\";\n\n/** DI contract — keeps batch.ts cycle-free from agent.ts. @internal */\ninterface BatchDeps {\n create: (options: AgentOptions) => Promise<SDKAgent>;\n}\n\n/**\n * Pre-flight boundary validation for `Agent.batch` (arch-review Gap 3).\n *\n * Mirrors the in-repo `validateAgentOptions` / `validateCronExpression`\n * pattern: throws `ConfigurationError` with a stable code on the first\n * violation, returns silently otherwise. Pure — no I/O.\n *\n * Rules:\n * - `concurrency`, when provided, must be a positive integer (rejects\n * 0/negative/non-integer/NaN/Infinity). Previously this was caught only\n * incidentally deep inside `createSemaphore` with a leaky \"permits\"\n * message, AND after task wrapping (dangling Task on invalid input).\n * - every prompt item must carry a non-empty string prompt. Previously\n * `normalizeItem` passed `prompt: \"\"` / non-string straight to\n * `agent.send`. (Whitespace-only strings are intentionally NOT rejected —\n * an empty string is a structural error; judging content is not this\n * validator's job, and the repo's property tests treat any length>=1\n * string as a valid prompt.)\n *\n * @internal\n */\nexport function validateBatchInput(\n prompts: ReadonlyArray<string | BatchItem>,\n options: BatchOptions,\n): void {\n const { concurrency } = options;\n if (concurrency !== undefined && (!Number.isInteger(concurrency) || concurrency < 1)) {\n throw new ConfigurationError(\n `Agent.batch concurrency must be a positive integer, got ${concurrency}`,\n { code: \"invalid_concurrency\" },\n );\n }\n for (let i = 0; i < prompts.length; i++) {\n const item = prompts[i];\n const prompt = typeof item === \"string\" ? item : item?.prompt;\n if (typeof prompt !== \"string\" || prompt.length === 0) {\n throw new ConfigurationError(`Agent.batch prompt at index ${i} must be a non-empty string`, {\n code: \"invalid_batch_item\",\n });\n }\n }\n}\n\n/**\n * Run N prompts in parallel with bounded concurrency.\n *\n * @internal\n */\nexport async function batchImpl(\n prompts: ReadonlyArray<string | BatchItem>,\n options: BatchOptions,\n deps: BatchDeps,\n): Promise<BatchResult[]> {\n // EC-1: empty array → no work, no agents created.\n if (prompts.length === 0) return [];\n\n // Pre-flight boundary validation (arch-review Gap 3). MUST run before pool\n // build AND before wrapBatchAsTask so invalid input never registers a\n // dangling Task or builds a credential pool (fail-fast, Rule 8).\n validateBatchInput(prompts, options);\n\n // EC-A fix: build credential pools ONCE and share via AsyncLocalStorage.\n // Without this each Agent.create() would build its own pool from identical\n // apiKeys → 4× rate-limit wastage per concurrency window.\n const sharedPools = buildPoolsFromApiKeys(\n options.providers?.apiKeys,\n options.providers?.credentialPoolStrategy,\n );\n const exec = (): Promise<BatchResult[]> => runBatch(prompts, options, deps);\n const withPool = (): Promise<BatchResult[]> =>\n sharedPools.size > 0 ? withCredentialPool(sharedPools, exec) : exec();\n // T3.3: opt-in Task wrapping (ADRs D363, D374). Register the whole\n // batch as a single Task (kind=\"batch\") with `b-` prefix (D368/EC-5).\n if (options.task !== undefined) {\n return wrapBatchAsTask(prompts.length, options.task, withPool);\n }\n return withPool();\n}\n\nasync function wrapBatchAsTask(\n total: number,\n taskOpt: true | { id?: string; meta?: Record<string, unknown> },\n exec: () => Promise<BatchResult[]>,\n): Promise<BatchResult[]> {\n const opts = taskOpt === true ? {} : taskOpt;\n const id = opts.id ?? `b-${randomUUID()}`;\n const meta: Record<string, unknown> = {\n total,\n ...(opts.meta ?? {}),\n };\n let results: BatchResult[] = [];\n await taskRegistrySubmit({\n kind: \"batch\",\n work: async (ctx) => {\n results = await exec();\n const succeeded = results.filter((r) => r.ok).length;\n const failed = results.length - succeeded;\n ctx.emit({ total: results.length, succeeded, failed });\n return { total: results.length, succeeded, failed };\n },\n id,\n meta,\n allowReservedPrefix: true,\n });\n // submit returns immediately with a queued handle. Wait for terminal.\n for (let i = 0; i < 5000; i++) {\n const h = await taskRegistryGet(id);\n if (h?.state === \"finished\" || h?.state === \"error\" || h?.state === \"cancelled\") break;\n await new Promise((r) => setTimeout(r, 5));\n }\n return results;\n}\n\nasync function runBatch(\n prompts: ReadonlyArray<string | BatchItem>,\n options: BatchOptions,\n deps: BatchDeps,\n): Promise<BatchResult[]> {\n const requested = options.concurrency ?? 4;\n // createSemaphore throws on invalid (EC-2).\n // EC-3: cap to prompts.length to avoid idle workers.\n const effective = Math.min(requested, prompts.length);\n const semaphore = createSemaphore(effective);\n const items = prompts.map(normalizeItem);\n const results: BatchResult[] = new Array(items.length);\n const counters = { completed: 0, failed: 0 };\n let aborted = false;\n\n const onAbort = (): void => {\n aborted = true;\n };\n options.signal?.addEventListener(\"abort\", onAbort);\n // EC-C: pre-aborted signal — treat as already-aborted before any work.\n if (options.signal?.aborted === true) aborted = true;\n\n try {\n await Promise.all(\n items.map(async (item, index) => {\n const release = await semaphore.acquire();\n try {\n if (aborted) {\n results[index] = abortResult(item, index, options.signal);\n } else {\n results[index] = await runOne(item, index, options, deps);\n }\n } finally {\n release();\n }\n if (results[index].ok) counters.completed += 1;\n else counters.failed += 1;\n await safeCallResult(options.onResult, results[index]);\n safeCallProgress(options.onProgress, {\n total: items.length,\n completed: counters.completed,\n failed: counters.failed,\n inFlight: semaphore.inFlight(),\n pending: Math.max(0, semaphore.pending() - semaphore.inFlight()),\n });\n }),\n );\n } finally {\n options.signal?.removeEventListener(\"abort\", onAbort);\n }\n\n return options.filter ? results.filter(options.filter) : results;\n}\n\nasync function runOne(\n item: BatchItem,\n index: number,\n options: BatchOptions,\n deps: BatchDeps,\n): Promise<BatchResult> {\n const t0 = Date.now();\n const agentOpts = buildAgentOptions(item, options);\n\n try {\n const agent = await deps.create(agentOpts);\n try {\n const run = await agent.send(item.prompt);\n const result = await run.wait();\n return {\n ok: true,\n index,\n prompt: item.prompt,\n result,\n ...(item.metadata !== undefined ? { metadata: item.metadata } : {}),\n durationMs: Date.now() - t0,\n };\n } finally {\n // EC-8: dispose failure → stderr warn, don't fail the result.\n try {\n await agent.dispose();\n } catch (disposeErr) {\n // theokit#147 — the interceptable channel; a batch run must not write onto a TUI's frame.\n diag(\n `[theokit-sdk] batch: agent.dispose failed for prompt ${index}: ${\n disposeErr instanceof Error ? disposeErr.message : String(disposeErr)\n }\\n`,\n );\n }\n }\n } catch (err) {\n return {\n ok: false,\n index,\n prompt: item.prompt,\n error: toTheokitError(err),\n ...(item.metadata !== undefined ? { metadata: item.metadata } : {}),\n durationMs: Date.now() - t0,\n };\n }\n}\n\nfunction buildAgentOptions(item: BatchItem, options: BatchOptions): AgentOptions {\n const {\n concurrency: _c,\n filter: _f,\n onResult: _or,\n onProgress: _op,\n signal: _s,\n task: _t,\n ...rest\n } = options;\n void _c;\n void _f;\n void _or;\n void _op;\n void _s;\n void _t;\n const agentOpts = rest as AgentOptions;\n if (item.systemPrompt !== undefined) {\n return { ...agentOpts, systemPrompt: item.systemPrompt };\n }\n return agentOpts;\n}\n\nfunction normalizeItem(promptOrItem: string | BatchItem): BatchItem {\n return typeof promptOrItem === \"string\" ? { prompt: promptOrItem } : promptOrItem;\n}\n\nfunction abortResult(item: BatchItem, index: number, signal?: AbortSignal): BatchResult {\n // EC-D: propagate signal.reason when set (preserves caller's error).\n let error: TheokitAgentError;\n if (signal?.reason instanceof TheokitAgentError) {\n error = signal.reason;\n } else if (signal?.reason instanceof Error) {\n error = new TheokitAgentError(signal.reason.message, {\n code: \"aborted\",\n cause: signal.reason,\n });\n } else {\n error = new TheokitAgentError(\"Batch aborted via AbortSignal\", { code: \"aborted\" });\n }\n return {\n ok: false,\n index,\n prompt: item.prompt,\n error,\n ...(item.metadata !== undefined ? { metadata: item.metadata } : {}),\n durationMs: 0,\n };\n}\n\nfunction toTheokitError(err: unknown): TheokitAgentError {\n if (err instanceof TheokitAgentError) return err;\n if (err instanceof Error) {\n return new TheokitAgentError(err.message, { code: \"unknown\", cause: err });\n }\n return new TheokitAgentError(String(err), { code: \"unknown\" });\n}\n\nasync function safeCallResult(cb: BatchOptions[\"onResult\"], result: BatchResult): Promise<void> {\n if (cb === undefined) return;\n try {\n await cb(result);\n } catch (err) {\n diag(\n `[theokit-sdk] batch: onResult callback threw: ${\n err instanceof Error ? err.message : String(err)\n }\\n`,\n );\n }\n}\n\nfunction safeCallProgress(cb: BatchOptions[\"onProgress\"], progress: BatchProgress): void {\n if (cb === undefined) return;\n try {\n cb(progress);\n } catch (err) {\n diag(\n `[theokit-sdk] batch: onProgress callback threw: ${\n err instanceof Error ? err.message : String(err)\n }\\n`,\n );\n }\n}\n\n/**\n * EC-A: construct shared pools from options.apiKeys. Empty/invalid → empty Map.\n *\n * @internal\n */\nfunction buildPoolsFromApiKeys(\n apiKeys: Record<string, string[]> | undefined,\n strategy: Record<string, CredentialPoolStrategy> | undefined,\n): Map<string, CredentialPool> {\n const pools = new Map<string, CredentialPool>();\n if (apiKeys === undefined) return pools;\n for (const [provider, keys] of Object.entries(apiKeys)) {\n if (!Array.isArray(keys)) continue;\n const filtered = keys.filter((k): k is string => typeof k === \"string\" && k.length > 0);\n if (filtered.length < 2) continue; // 1-key pools aren't pools\n const entries = filtered.map((token, i) =>\n newPooledCredential({ provider, accessToken: token, priority: i, source: \"manual\" }),\n );\n pools.set(\n provider,\n new CredentialPool(provider, entries, strategy?.[provider] ?? \"fill_first\"),\n );\n }\n return pools;\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { submit, get } from './chunk-
|
|
1
|
+
import { submit, get } from './chunk-UIPTINIF.js';
|
|
2
2
|
import './chunk-K2BQQ445.js';
|
|
3
|
-
import { newPooledCredential, CredentialPool, withCredentialPool } from './chunk-
|
|
4
|
-
import { createSemaphore } from './chunk-
|
|
3
|
+
import { newPooledCredential, CredentialPool, withCredentialPool } from './chunk-MI3OKONE.js';
|
|
4
|
+
import { createSemaphore } from './chunk-F4SQTWVR.js';
|
|
5
5
|
import './chunk-2XLKLVVR.js';
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
8
|
-
import { ConfigurationError, TheokitAgentError } from './chunk-
|
|
9
|
-
import { diag } from './chunk-
|
|
6
|
+
import './chunk-BM7VYZED.js';
|
|
7
|
+
import './chunk-5XPKYDK7.js';
|
|
8
|
+
import { ConfigurationError, TheokitAgentError } from './chunk-VQ33XLC6.js';
|
|
9
|
+
import { diag } from './chunk-RNCN2TTP.js';
|
|
10
10
|
import { randomUUID } from 'crypto';
|
|
11
11
|
|
|
12
12
|
function validateBatchInput(prompts, options) {
|
|
@@ -237,5 +237,5 @@ function buildPoolsFromApiKeys(apiKeys, strategy) {
|
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
export { batchImpl, validateBatchInput };
|
|
240
|
-
//# sourceMappingURL=batch-
|
|
241
|
-
//# sourceMappingURL=batch-
|
|
240
|
+
//# sourceMappingURL=batch-WX2HLXX2.js.map
|
|
241
|
+
//# sourceMappingURL=batch-WX2HLXX2.js.map
|