zidane 4.0.2 → 4.1.4

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.
Files changed (77) hide show
  1. package/README.md +196 -614
  2. package/dist/agent-BoV5Twdl.d.ts +2347 -0
  3. package/dist/agent-BoV5Twdl.d.ts.map +1 -0
  4. package/dist/contexts-3Arvn7yR.js +321 -0
  5. package/dist/contexts-3Arvn7yR.js.map +1 -0
  6. package/dist/contexts.d.ts +2 -25
  7. package/dist/contexts.js +2 -10
  8. package/dist/errors-D1lhd6mX.js +118 -0
  9. package/dist/errors-D1lhd6mX.js.map +1 -0
  10. package/dist/index-28otmfLX.d.ts +400 -0
  11. package/dist/index-28otmfLX.d.ts.map +1 -0
  12. package/dist/index-BfSdALzk.d.ts +113 -0
  13. package/dist/index-BfSdALzk.d.ts.map +1 -0
  14. package/dist/index-DPsd0qwm.d.ts +254 -0
  15. package/dist/index-DPsd0qwm.d.ts.map +1 -0
  16. package/dist/index.d.ts +5 -95
  17. package/dist/index.js +141 -271
  18. package/dist/index.js.map +1 -0
  19. package/dist/interpolate-CukJwP2G.js +887 -0
  20. package/dist/interpolate-CukJwP2G.js.map +1 -0
  21. package/dist/mcp-8wClKY-3.js +771 -0
  22. package/dist/mcp-8wClKY-3.js.map +1 -0
  23. package/dist/mcp.d.ts +2 -4
  24. package/dist/mcp.js +2 -13
  25. package/dist/messages-z5Pq20p7.js +1020 -0
  26. package/dist/messages-z5Pq20p7.js.map +1 -0
  27. package/dist/presets-Cs7_CsMk.js +39 -0
  28. package/dist/presets-Cs7_CsMk.js.map +1 -0
  29. package/dist/presets.d.ts +2 -43
  30. package/dist/presets.js +2 -17
  31. package/dist/providers-CX-R-Oy-.js +969 -0
  32. package/dist/providers-CX-R-Oy-.js.map +1 -0
  33. package/dist/providers.d.ts +2 -4
  34. package/dist/providers.js +3 -23
  35. package/dist/session/sqlite.d.ts +7 -12
  36. package/dist/session/sqlite.d.ts.map +1 -0
  37. package/dist/session/sqlite.js +67 -79
  38. package/dist/session/sqlite.js.map +1 -0
  39. package/dist/session-Cn68UASv.js +440 -0
  40. package/dist/session-Cn68UASv.js.map +1 -0
  41. package/dist/session.d.ts +2 -4
  42. package/dist/session.js +3 -27
  43. package/dist/skills.d.ts +3 -322
  44. package/dist/skills.js +24 -47
  45. package/dist/skills.js.map +1 -0
  46. package/dist/stats-DoKUtF5T.js +58 -0
  47. package/dist/stats-DoKUtF5T.js.map +1 -0
  48. package/dist/tools-DpeWKzP1.js +3941 -0
  49. package/dist/tools-DpeWKzP1.js.map +1 -0
  50. package/dist/tools.d.ts +3 -95
  51. package/dist/tools.js +2 -40
  52. package/dist/tui.d.ts +533 -0
  53. package/dist/tui.d.ts.map +1 -0
  54. package/dist/tui.js +2004 -0
  55. package/dist/tui.js.map +1 -0
  56. package/dist/types-Bx_F8jet.js +39 -0
  57. package/dist/types-Bx_F8jet.js.map +1 -0
  58. package/dist/types.d.ts +4 -55
  59. package/dist/types.js +4 -28
  60. package/package.json +38 -4
  61. package/dist/agent-BAHrGtqu.d.ts +0 -2425
  62. package/dist/chunk-4ILGBQ23.js +0 -803
  63. package/dist/chunk-4LPBN547.js +0 -3540
  64. package/dist/chunk-64LLNY7F.js +0 -28
  65. package/dist/chunk-6STZTA4N.js +0 -830
  66. package/dist/chunk-7GQ7P6DM.js +0 -566
  67. package/dist/chunk-IC7FT4OD.js +0 -37
  68. package/dist/chunk-JCOB6IYO.js +0 -22
  69. package/dist/chunk-JH6IAAFA.js +0 -28
  70. package/dist/chunk-LNN5UTS2.js +0 -97
  71. package/dist/chunk-PMCQOMV4.js +0 -490
  72. package/dist/chunk-UD25QF3H.js +0 -304
  73. package/dist/chunk-W57VY6DJ.js +0 -834
  74. package/dist/sandbox-D7v6Wy62.d.ts +0 -28
  75. package/dist/skills-use-DwZrNmcw.d.ts +0 -80
  76. package/dist/types-Bai5rKpa.d.ts +0 -89
  77. package/dist/validation-Pm--dQEU.d.ts +0 -185
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-BoV5Twdl.d.ts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/providers/anthropic.ts","../src/providers/cerebras.ts","../src/providers/openai.ts","../src/providers/openai-compat.ts","../src/providers/openrouter.ts","../src/providers/index.ts","../src/session/file-map.ts","../src/session/memory.ts","../src/session/messages.ts","../src/session/remote.ts","../src/session/index.ts","../src/skills/types.ts","../src/tools/types.ts","../src/mcp/index.ts","../src/skills/activation.ts","../src/agent.ts"],"mappings":";;;;;;;;;;AAYA;;;;;KAAY,mBAAA;;UAGK,eAAA;EACf,IAAA,EAAM,mBAAA;EAAN;EAEA,YAAA;EAAA;EAEA,OAAA;EAOA;;;AACD;;;EADC,SAAA;AAAA;AAAA,UAGQ,iBAAA;EAMR;EAJA,QAAA;EAMS;EAJT,YAAA;EAWW;EATX,KAAA;;EAEA,SAAA;AAAA;;;;;cAOW,yBAAA,SAAkC,KAAA;EAAA,SACpC,IAAA;EAAA,SACA,QAAA;EAAA,SACA,YAAA;cAEG,OAAA,UAAiB,OAAA,EAAS,iBAAA;AAAA;;;;;cAY3B,kBAAA,SAA2B,KAAA;EAAA,SAC7B,IAAA;EAAA,SACA,QAAA;EAAA,SACA,YAAA;;;;;;WAMA,SAAA;cAEG,OAAA,UAAiB,OAAA,EAAS,iBAAA;AAAA;;;;cAY3B,iBAAA,SAA0B,KAAA;EAAA,SAC5B,IAAA;cAEG,OAAA,WAA+B,OAAA;IAAY,KAAA;EAAA;AAAA;;AAczD;;;;;;;cAAa,wBAAA,SAAiC,KAAA;EAAA,SACnC,IAAA;EAQA;EAAA,SANA,QAAA;EASP;EAAA,SAPO,WAAA;EASP;EAAA,SAPO,YAAA;EASP;EAAA,SAPO,YAAA;cAEG,OAAA;IACV,QAAA;IACA,WAAA;IACA,YAAA;IACA,YAAA;IACA,KAAA;EAAA;AAAA;;;;;AAyCJ;;cApBa,iCAAA,WAA4C,MAAA;;;;;iBAWzC,sBAAA,CAAuB,OAAA;;;;iBASvB,YAAA,CACd,cAAA,EAAgB,eAAA,EAChB,QAAA,UACA,KAAA,YACC,yBAAA,GAA4B,kBAAA,GAAqB,iBAAA;;;;;AAvJpD;;;;;AAGA;;;;KCOY,aAAA;AAAA,UAMK,eAAA;EDVf;ECYA,IAAA;EDHA;ECKA,SAAA;EDLS;ECOT,OAAA;EDJyB;ECMzB,IAAA;EDNyB;;;;;;;AAe3B;;ECCE,GAAA,GAAM,MAAA;EDD4C;;;;;;;ECSlD,SAAA;EDJ6B;ECM7B,GAAA;EDNuD;ECQvD,OAAA,GAAU,MAAA;EDIoB;;;;;;;;;ECM9B,gBAAA;EDKsC;ECHtC,WAAA;EDGuD;;AAYzD;;;;;;;;;;;ECDE,YAAA;EDkBW;;;;ECbX,aAAA;EDcS;;;;;;;;ECLT,UAAA,IAAc,IAAA;IAAQ,IAAA;IAAc,WAAA;IAA6B,WAAA;EAAA;EDqBhE;AAoBH;;;;;AAWA;;EC3CE,UAAA;AAAA;AAAA,KAOU,iBAAA;AAAA,UAEK,aAAA;ED2CW;ECzC1B,aAAA,GAAgB,iBAAA;ED0CA;;;;;;;EClChB,QAAA;EDmCA;ECjCA,SAAA;EDmCC;ECjCD,cAAA;EDiCkD;EC/BlD,MAAA,GAAS,MAAA;ED+B0D;;;;AC7IrE;;;;;AAMA;;;;;;EAwHE,KAAA;EAhHA;;;;;;;;;;EA2HA,gBAAA;EA7DA;;;;;;;;AAgBF;;;;EA0DE,UAAA;EAxDe;;;;;;;;;;;;;;;;;;EA2Ef,aAAA;IAAkB,SAAA;IAAmB,MAAA;IAAgB,KAAA;EAAA,MAAoB,OAAA,UAAiB,UAAA;EAArC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoPvD;EArNE,WAAA,GAAc,MAAA;IACZ,GAAA;IACA,QAAA,yBAAiC,GAAA;MAC/B,IAAA;MACA,KAAA;MACA,GAAA;IAAA;MACM,IAAA;MAAyB,OAAA;IAAA;EAAA;EAkNb;AAExB;;;;;AAKA;;;;;;;;;;AAUA;;;;;;;;;;;AA2BA;;;;;AAIA;;;;;AAKA;;;;;;;;;AAeA;;;;;AAwBA;;;;EArPE,UAAA,GAAa,MAAA,UAAgB,KAAA,EAAO,MAAA;EAkQ1B;;;;;;;;;;;;EArPV,qBAAA;EAwP0D;;;;;;;;;;;;;;;;EAvO1D,eAAA;EAiRS;AAGX;;;;;EA7QE,gBAAA;EA+QS;;;AAGX;;EA5QE,gBAAA;EAoRiB;;;;;;;;;;;AAcnB;;EApRE,eAAA;EAoR6B;;;;;;AAE/B;;;;;;;;;;;;;EAlQE,eAAA;EA0QkB;;;;;;;;;;;;;;;;;AAmDpB;;;;;AAEA;;;;;EAnSE,cAAA;EAuSA;;;;;;;;;AAmBF;;;;;;;;;;;;;;EAlSE,UAAA;IACE,IAAA;IACA,KAAA;EAAA;AAAA;;;;;;AAkWJ;;;;;;KA/UY,UAAA,GACN,cAAA,GACA,eAAA,GACA,kBAAA;AAAA,UAEW,cAAA;EACf,IAAA;EACA,IAAA;AAAA;AAAA,UAGe,eAAA;EACf,IAAA;EA+Ve;EA7Vf,SAAA;EAiX8B;EA/W9B,IAAA;EAsXa;EApXb,IAAA;AAAA;AAAA,UAGe,kBAAA;EACf,IAAA;EAgXA;EA9WA,SAAA;EA8Wa;EA5Wb,IAAA;EACA,QAAA;EAwXiC;EAtXjC,IAAA;AAAA;;;;;;;;;;AAiYF;;;KA9WY,iBAAA,GACN,qBAAA,GACA,sBAAA;AAAA,UAEW,qBAAA;EACf,IAAA;EACA,IAAA;AAAA;AAAA,UAGe,sBAAA;EACf,IAAA;EA2WA;EAzWA,SAAA;EA+WK;EA7WL,IAAA;AAAA;;;;;AAsXF;;;iBA5WgB,gBAAA,CAAiB,OAAA,WAAkB,iBAAA;;;;;;;;;;;;;iBAwBnC,oBAAA,CAAqB,OAAA,WAAkB,iBAAA;AAAA,KAa3C,mBAAA;EACJ,IAAA;EAAc,IAAA;AAAA;EACd,IAAA;EAAe,SAAA;EAAmB,IAAA;AAAA;EAClC,IAAA;EAAmB,EAAA;EAAY,IAAA;EAAc,KAAA,EAAO,MAAA;AAAA;EAEtD,IAAA;EACA,MAAA;ECtfI;;;;ED2fJ,MAAA,WAAiB,iBAAA;EACjB,OAAA;AAAA;EAGA,IAAA;EACA,IAAA;EACA,SAAA;EC3fJ;;;;;EDigBI,iBAAA;AAAA;EAEE,IAAA;EAA2B,IAAA;AAAA;ECzcT;;AA6Y1B;;;;;;;;EDwEM,IAAA;EACA,QAAA;EACA,OAAA;;AEjkBN;;;;EFukBM,KAAA;AAAA;AAAA,UAGW,cAAA;EACf,IAAA;EACA,OAAA,EAAS,mBAAA;AAAA;AAAA,UAGM,WAAA;EEhjBO;EFkjBtB,EAAA;EEljByD;EFojBzD,KAAA;EACA,IAAA;EACA,OAAA,EAAS,mBAAA;EEtjBgD;EFwjBzD,KAAA,GAAQ,SAAA;;EAER,SAAA;AAAA;AGpkBF;;;;;AAAA,KHglBY,UAAA,GAAa,MAAA,WAAiB,GAAA,uBAA0B,GAAA;AAAA,UAEnD,eAAA;EACf,KAAA;EG5kBA;;;;;AA+NF;EHoXE,MAAA,YAAkB,UAAA;EAClB,MAAA;EACA,QAAA,GAAW,aAAA;EGtXmB;EHwX9B,MAAA,GAAS,WAAA;EGxXoC;EH0X7C,QAAA,GAAW,aAAA;EG1X0C;EH4XrD,KAAA,GAAQ,MAAA,SAAe,OAAA;;;AI5CzB;;;;EJmDE,KAAA,GAAQ,UAAA;EIlDC;;;;;EJwDT,WAAA;EIpD4C;;AA+B9C;;;EJ2BE,KAAA;AAAA;AIgCF;;;;;AAgCA;;;;;AAKA;;;;;;;AArCA,KJRY,gBAAA;AAAA,UAEK,SAAA;EACf,KAAA;EACA,MAAA;EI+CA;EJ7CA,aAAA;EIiDA;EJ/CA,SAAA;EIiDA;EJ/CA,QAAA;EI0DA;EJxDA,IAAA;EIsEA;;;;EJjEA,YAAA,GAAe,gBAAA;EI6FS;AA6C1B;;;EJrIE,OAAA;AAAA;AAAA,UAGe,UAAA;EIkIyC;;;;;EJ5HxD,OAAA;EKjsBe;ELmsBf,QAAA;;;;;;;;;EASA,cAAA;EK3qBwB;;;;;;ELkrBxB,kBAAA;EKlrB6D;;;;ACnC/D;;;;EN8tBE,KAAA;EM5tBA;;;;;AAIF;EN+tBE,OAAA;;;;;;EAMA,SAAA,GAAY,SAAA;EMluBC;;AAGf;;;ENquBE,IAAA;EMpuBA;ENsuBA,QAAA,GAAW,aAAA;EM9tBO;ENguBlB,MAAA,GAAS,MAAA;EMhuB0B;AAWrC;;;;;EN4tBE,oBAAA;AAAA;AAAA,UAGe,aAAA;EACf,EAAA;EACA,IAAA;EMzsBS;;;;;;ENgtBT,KAAA,EAAO,UAAA;EM9sB0D;;AAGnE;;;ENitBE,KAAA;EM3sBW;;;;;ENitBX,MAAA;EMntBA;;;;;ENytBA,MAAA,GAAS,MAAA;AAAA;;AMjtBX;;;;;;;;;;;;UNquBiB,eAAA;EACf,MAAA;EACA,MAAA;EMhuBW;ENkuBX,IAAA;EM9tBA;ENguBA,WAAA;EACA,KAAA,EAAO,MAAA;AAAA;;;;;AMptBT;;;;;;UNiuBiB,kBAAA;EACf,MAAA;EACA,MAAA;EACA,MAAA;EACA,IAAA;EMhtB4C;ENktB5C,WAAA;EACA,KAAA,EAAO,MAAA;AAAA;;UAIQ,kBAAA;EACf,SAAA;AAAA;;UAIe,gBAAA;EACf,EAAA;EACA,IAAA;EM9uBiB;;;;;ENovBjB,KAAA;AAAA;;UAIe,iBAAA;EACf,MAAA;AAAA;;UAIe,uBAAA;EACf,QAAA;EACA,UAAA;EACA,MAAA;EACA,mBAAA,EAAqB,MAAA;IAA4B,MAAA;IAAgB,OAAA;IAAiB,OAAA;EAAA;EAClF,WAAA,EAAa,MAAA;IAA4B,MAAA;IAAgB,OAAA;IAAiB,OAAA;EAAA;AAAA;AAAA,KAGhE,gBAAA;;;;;ADl2BZ;;;;;AAGA;UE+BiB,0BAAA;EACf,KAAA,GAAQ,KAAA,CAAM,MAAA;EAAA,CACb,GAAA;AAAA;AAAA,UAGc,eAAA;EACf,MAAA;EACA,MAAA;EACA,OAAA;EACA,OAAA;EACA,YAAA;EF1BQ;;;;;EEgCR,OAAA;EF1BA;;;;AASF;;;;;;;;;;;;EEkCE,UAAA;EF7BuD;AAYzD;;;;;;;;;;;;;;;AAuBA;;;EEcE,iBAAA,GAAoB,0BAAA;EFdiB;;;;;;;;AAiBvC;;;EESE,eAAA,GAAkB,MAAA;AAAA;AAAA,iBA6YJ,SAAA,CACd,eAAA,GAAkB,eAAA,GACjB,QAAA;;;UCzfc,cAAA;EACf,MAAA;EACA,YAAA;;;AHKF;;;EGCE,YAAA,GAAe,oBAAA;AAAA;AHEjB;;;;;;AAAA,iBGqBgB,QAAA,CAAS,MAAA,GAAS,cAAA,GAAiB,QAAA;;;UCVlC,YAAA;;EAEf,MAAA;;EAEA,MAAA;EACA,OAAA;EACA,OAAA;EACA,SAAA;EACA,YAAA;EACA,SAAA;AAAA;AAAA,iBA6Nc,MAAA,CAAO,MAAA,GAAS,YAAA,GAAe,QAAA;;;AH1O/C;;;;;AAMA;AANA,cI0jBa,qBAAA,SAA8B,KAAA;EAAA,SAChC,MAAA;EAAA,SACA,YAAA;EAAA,SACA,QAAA;cAEG,MAAA,UAAgB,QAAA;AAAA;;;;;;;;;;;iBA+Bd,yBAAA,CAA0B,GAAA,YAAe,eAAA;;;;iBA2DzC,kBAAA,CAAmB,MAAA,8BAAoC,gBAAA;;;;;AJ7jBvE;;;;;AAEA;UI2lBiB,sBAAA;EACf,IAAA;EACA,MAAA;AAAA;AAAA,UAGe,kBAAA;EJvbqB;EIybpC,MAAA;EJzbmB;EI2bnB,OAAA;EJlmBA;EIomBA,YAAA;EJ5lBA;EI8lBA,IAAA;EJ1lBA;EI4lBA,UAAA,GAAa,sBAAA;EJ1lBJ;EI4lBT,YAAA,GAAe,MAAA;EJjkBf;;;;;;;;;;EI4kBA,YAAA,GAAe,oBAAA;EJ3gBb;;;;;;;;;;;;;EIyhBF,gBAAA;EJjbA;;;;;;;;;AA2GF;;;;;;;EIuVE,iBAAA;EJtVI;;;;;AAIN;;;;;EI6VE,eAAA,GAAkB,MAAA;AAAA;;;;;;;;;AJ9UpB;;;;;;;;iBI2XgB,YAAA,CAAa,MAAA,EAAQ,kBAAA,GAAqB,QAAA;;;UC7zBzC,gBAAA;EACf,MAAA;EACA,YAAA;;;ANKF;;;;;AAGA;;EMEE,YAAA,GAAe,oBAAA;AAAA;;;;;;;iBAqBD,UAAA,CAAW,MAAA,GAAS,gBAAA,GAAmB,QAAA;;;UCnCtC,QAAA;EACf,IAAA;EACA,WAAA;EACA,WAAA,EAAa,MAAA;AAAA;AAAA,UAGE,QAAA;EACf,EAAA;EACA,IAAA;EACA,KAAA,EAAO,MAAA;AAAA;AAAA,UAGQ,UAAA;EACf,EAAA;EPAyB;;;;;;;EOQzB,OAAA,WAAkB,iBAAA;AAAA;;;;;;;;;UAWH,oBAAA;EPUJ;;;;;;;;EODX,MAAA;EPMY;;;;;AAYd;;;;;EOPE,iBAAA;AAAA;AAAA,UAGe,eAAA;EACf,MAAA,GAAS,KAAA;EACT,UAAA,IAAc,KAAA;EACd,cAAA,IAAkB,GAAA,EAAK,uBAAA,YAAmC,OAAA;AAAA;AAAA,UAG3C,UAAA;EPSwC;EOPvD,gBAAA,EAAkB,cAAA;EPmBP;EOjBX,IAAA;;EAEA,SAAA,EAAW,QAAA;EPe0B;EObrC,IAAA;EACA,KAAA,EAAO,SAAA;AAAA;AAAA,UAGQ,aAAA;EACf,KAAA;EACA,MAAA;EACA,KAAA;EACA,QAAA,EAAU,cAAA;EACV,SAAA;;EAEA,QAAA,GAAW,aAAA;EPmBiC;EOjB5C,cAAA;EPoBS;EOlBT,UAAA;IAAe,IAAA;IAAoC,IAAA;EAAA;EP2BjD;;;;;;;EOnBF,KAAA;EP4CW;EO1CX,MAAA,GAAS,WAAA;AAAA;AAAA,UAGM,QAAA;EAAA,SACN,IAAA;EAAA,SACA,IAAA;IACP,YAAA,UP+CkC;IO7ClC,YAAA,GAAe,oBAAA;EAAA,IACb,MAAA;EPqDU;EOlDd,WAAA,GAAc,KAAA,EAAO,QAAA;;EAGrB,WAAA,GAAc,OAAA,aAAoB,cAAA;EPmDjC;EOhDD,gBAAA,GAAmB,OAAA,aAAoB,cAAA;EPgDW;EO7ClD,kBAAA,GAAqB,OAAA,EAAS,UAAA,OAAiB,cAAA;EP6CoB;EO1CnE,MAAA,GAAS,OAAA,EAAS,aAAA,EAAe,SAAA,EAAW,eAAA,KAAoB,OAAA,CAAQ,UAAA;EPuCxE;;;;;;;;EO7BA,aAAA,IAAiB,KAAA,EAAO,UAAA,OAAiB,cAAA;;;AN7G3C;;;;;EMsHE,aAAA,IAAiB,GAAA,cAAiB,eAAA;AAAA;;;;;AP/FpC;;UQRiB,cAAA;ERQmC;EQNlD,GAAA,QAAW,OAAA;IAAU,KAAA,EAAO,MAAA;EAAA;ERSnB;EQPT,IAAA,GAAO,KAAA,EAAO,MAAA,qBAA2B,OAAA;ERS7B;EQPZ,MAAA,QAAc,OAAA;AAAA;AAAA,UAGC,mBAAA;ERIwC;EQFvD,SAAA;ERc8B;EQZ9B,QAAA;AAAA;;;;;;;;;;;iBAwEc,kBAAA,CACd,OAAA,EAAS,cAAA,EACT,OAAA,GAAS,mBAAA,GACR,YAAA;;;iBCrHa,iBAAA,CAAA,GAAqB,YAAA;;;iBCuErB,aAAA,CAAc,GAAA;EAAO,IAAA;EAAc,OAAA;AAAA,IAAqB,cAAA;AAAA,iBAkExD,UAAA,CAAW,GAAA;EAAO,IAAA;EAAc,OAAA;AAAA,IAAqB,cAAA;AAAA,iBA2ErD,WAAA,CAAY,GAAA,EAAK,cAAA;EAAmB,IAAA;EAAc,OAAA;AAAA;AAAA,iBAoDlD,QAAA,CAAS,GAAA,EAAK,cAAA;EAAmB,IAAA;EAAc,OAAA;AAAA;AAAA,iBAqE/C,oBAAA,CAAqB,GAAA;EAAO,IAAA;EAAc,OAAA;AAAA,IAAqB,cAAA;;;UCpU9D,kBAAA;EXDf;EWGA,GAAA;EXDA;EWGA,OAAA,GAAU,MAAA;AAAA;AAAA,iBAKI,iBAAA,CAAkB,OAAA,EAAS,kBAAA,GAAqB,YAAA;;;UCT/C,UAAA;EACf,EAAA;EACA,SAAA;EACA,OAAA;EACA,MAAA;EACA,MAAA;EACA,KAAA;EACA,QAAA;EACA,SAAA;EACA,KAAA;EZCS;EYCT,SAAA,GAAY,SAAA;EZEJ;EYAR,UAAA,GAAa,SAAA;;EAEb,IAAA;EZAA;;;;;EYMA,WAAA;EZOW;;;;EYFX,KAAA;AAAA;AAAA,UAGe,WAAA;EACf,EAAA;EACA,OAAA;EACA,KAAA,EAAO,WAAA;EACP,IAAA,EAAM,UAAA;EACN,MAAA;EACA,QAAA,EAAU,MAAA;EACV,SAAA;EACA,SAAA;AAAA;AAAA,UAOe,YAAA;EZC4B;EYC3C,iBAAA,kBAAmC,OAAA;EZA1B;EYGT,cAAA,kBAAgC,OAAA;EZDvB;EYIT,IAAA,GAAO,SAAA,aAAsB,OAAA,CAAQ,WAAA;;EAGrC,IAAA,GAAO,OAAA,EAAS,WAAA,KAAgB,OAAA;EZCM;EYEtC,MAAA,GAAS,SAAA,aAAsB,OAAA;EZFwB;EYKvD,IAAA,GAAO,MAAA;IAAW,OAAA;IAAkB,KAAA;EAAA,MAAqB,OAAA;EZOf;EYJ1C,WAAA,GAAc,SAAA,UAAmB,KAAA,EAAO,WAAA,OAAkB,OAAA;EZKjD;EYFT,QAAA,GAAW,SAAA,UAAmB,IAAA,WAAe,KAAA,cAAmB,OAAA,CAAQ,WAAA;EZI5D;EYDZ,SAAA,GAAY,SAAA,UAAmB,GAAA,EAAK,UAAA,KAAe,OAAA;EZCR;EYE3C,YAAA,GAAe,SAAA,UAAmB,MAAA,EAAQ,WAAA,eAA0B,OAAA;AAAA;AAAA,UAOrD,OAAA;EZKqB;EAAA,SYH3B,EAAA;EZGwC;EAAA,SYAxC,OAAA;EZCA;EAAA,SYEA,KAAA,EAAO,WAAA;EZEP;;;;;;EAAA,SYMA,OAAA;EZIP;EAAA,SYDO,MAAA,EAAQ,WAAA;EZHL;EAAA,SYMH,IAAA,EAAM,UAAA;EZAd;EAAA,SYGQ,QAAA,EAAU,MAAA;EZsBpB;;;;AAMD;EYrBE,QAAA,GAAW,KAAA,UAAe,MAAA,WAAiB,MAAA;IAAW,WAAA;IAAsB,KAAA;EAAA;EZ8B9D;EY3Bd,WAAA,GAAc,KAAA,UAAe,KAAA;IAAS,KAAA;IAAe,QAAA;IAAkB,SAAA;IAAmB,SAAA,GAAY,SAAA;IAAa,IAAA;EAAA;EZ+BhD;EY5BnE,QAAA,GAAW,KAAA;EZyBX;EYtBA,QAAA,GAAW,KAAA,UAAe,KAAA;EZwB1B;EYrBA,WAAA,GAAc,KAAA,EAAO,WAAA,OAAkB,OAAA;EZsBV;EYnB7B,QAAA,GAAW,KAAA,EAAO,WAAA;EZmBiD;EYhBnE,YAAA,GAAe,MAAA,EAAQ,WAAA,eAA0B,OAAA;;EAGjD,SAAA,GAAY,GAAA,EAAK,UAAA,KAAe,OAAA;;EAGhC,cAAA,iBAA+B,OAAA;EXnIR;EWsIvB,OAAA,GAAU,GAAA,UAAa,KAAA;EXtIA;EWyIvB,IAAA,QAAY,OAAA;EXnIG;EWsIf,MAAA,QAAc,WAAA;AAAA;AAAA,UAOC,oBAAA;EX3If;EW6IA,EAAA;EXzIA;EW2IA,OAAA;EX/HA;EWiIA,QAAA,GAAW,MAAA;EXzHX;EW2HA,KAAA,GAAQ,YAAA;EAER,KAAA,GAAQ,WAAA;AAAA;;;;;iBAOY,aAAA,CAAc,OAAA,GAAS,oBAAA,GAA4B,OAAA,CAAQ,OAAA;;;;iBA+J3D,WAAA,CAAY,KAAA,EAAO,YAAA,EAAc,SAAA,WAAoB,OAAA,CAAQ,OAAA;;;;;;;;;AZ7UnF;UaAiB,aAAA;;EAEf,IAAA;EbF6B;EaI7B,IAAA;AAAA;;;;;KAWU,WAAA;;UAGK,eAAA;EACf,QAAA;EbJS;EaMT,IAAA;EbHyB;EaKzB,OAAA;EbLyB;EaOzB,KAAA;AAAA;AAAA,UAOe,WAAA;EbNf;EaQA,IAAA;EbRS;EaUT,WAAA;EbHqC;EaKrC,YAAA;EbLkD;;;;;EaWlD,MAAA,GAAS,WAAA;EbNG;EaQZ,QAAA;EbR6B;EaU7B,OAAA;EbVuD;EaYvD,OAAA;EbA8B;EaE9B,aAAA;EbF2C;;;;EaO3C,QAAA,GAAW,MAAA;EbEF;EaAT,YAAA;EbEY;EaAZ,SAAA,GAAY,aAAA;EbAiB;;;AAY/B;EaPE,WAAA,GAAc,eAAA;AAAA;AAAA,UAOC,YAAA;EbAsB;;;;;;EaOrC,OAAA;EbJwE;EaMxE,IAAA;EbQoC;EaNpC,KAAA,GAAQ,WAAA;EbMyC;EaJjD,OAAA;EbKS;EaHT,gBAAA;EbOS;;;;;;EaAT,IAAA;EbUE;;;;EaLF,SAAA;Eb2BW;EazBX,eAAA;;;;AboCF;;Ea9BE,kBAAA;AAAA;;;;;;;AbzGF;;;UcAiB,WAAA;EdCf;EcCA,QAAA,EAAU,QAAA;EdCV;EcCA,MAAA,EAAQ,WAAA;EdQR;EcNA,SAAA,EAAW,gBAAA;EdMF;EcJT,MAAA,EAAQ,eAAA;EdOiB;EcLzB,KAAA,EAAO,QAAA,CAAS,UAAA;EdKS;EcHzB,IAAA;EdOA;EcLA,MAAA;EdSA;EcPA,KAAA,EAAO,MAAA,SAAe,OAAA;EdOb;AAOX;;;;;;;;;EcHE,WAAA,GAAc,MAAA;EdQwB;EcNtC,UAAA,GAAa,eAAA;EdM0C;EcJvD,MAAA,GAAS,YAAA;EdgBE;EcdX,QAAA,GAAW,aAAA;;EAEX,MAAA;EdYsC;EcVtC,MAAA;EdYS;;;;;;;;EcHT,KAAA;EdwBW;;;;;EclBX,OAAA,GAAU,OAAA;;;;;;EAMV,KAAA;AAAA;AAAA,UAGe,OAAA;EACf,IAAA,EAAM,QAAA;EdyB2C;;;;;;;;;EcfjD,OAAA,GAAU,KAAA,EAAO,MAAA,mBAAyB,GAAA,EAAK,WAAA,KAAgB,OAAA,UAAiB,iBAAA;AAAA;AAAA,KAGtE,OAAA,GAAU,GAAA,SAAY,OAAA;;;UCpEjB,aAAA;EACf,KAAA,EAAO,MAAA,SAAe,OAAA;EACtB,KAAA,QAAa,OAAA;AAAA;;;;;;;AfId;;;;;;iBe6Fe,mBAAA,CAAoB,KAAA,YAAiB,eAAA;;;;Af5ErD;;;;;;iBekHgB,cAAA,CAAe,OAAA;;;;;;;;AfjG/B;;;;;;iBe6HgB,kBAAA,CAAmB,OAAA,YAAmB,iBAAA;;;;;;;;;AftGtD;;iBe6NsB,iBAAA,CACpB,OAAA,EAAS,eAAA,IACT,cAAA,SAAuB,MAAA,EACvB,KAAA,GAAQ,QAAA,CAAS,UAAA,IAChB,OAAA,CAAQ,aAAA;;;;KCxRC,aAAA;;KAGA,kBAAA;;UAGK,WAAA;EACf,KAAA,EAAO,WAAA;EACP,WAAA;EACA,YAAA,EAAc,aAAA;AAAA;;;;;UAOC,oBAAA;EhBCN;EgBCT,MAAA,iBAAuB,WAAA;;EAEvB,QAAA,GAAW,IAAA;EhBA2B;EgBEtC,GAAA,GAAM,IAAA,aAAiB,WAAA;EhBFgC;;AAYzD;;;;EgBHE,QAAA,GAAW,KAAA,EAAO,WAAA,EAAa,GAAA,EAAK,aAAA;EhBI3B;;;;EgBCT,UAAA,GAAa,IAAA,aAAiB,WAAA;EhBSlB;EgBPZ,KAAA,iBAAsB,WAAA;AAAA;AAAA,UAGP,2BAAA;EhBIwC;AAYzD;;;EgBXE,SAAA;AAAA;AAAA,iBAOc,0BAAA,CACd,OAAA,GAAS,2BAAA,GACR,oBAAA;;;UC9Cc,UAAA;EAEf,eAAA,GAAkB,GAAA;IAAO,MAAA;EAAA;EAGzB,aAAA,GAAgB,GAAA;IAAO,IAAA;IAAc,MAAA;IAAgB,OAAA,EAAS,aAAA;EAAA;EjBfrD;AACV;;;;;;;;;;AAiBD;;;;;;;;EiBiBE,YAAA,GAAe,GAAA;IACb,IAAA;IACA,MAAA;IACA,KAAA,EAAO,SAAA;IACP,OAAA,EAAS,WAAA;IACT,UAAA;MACE,IAAA,EAAM,QAAA,CAAS,MAAA;MACf,GAAA,EAAK,QAAA,CAAS,MAAA;IAAA;EAAA;EAKlB,aAAA,GAAgB,GAAA,EAAK,iBAAA;IAAsB,KAAA;IAAe,IAAA;EAAA;EAC1D,YAAA,GAAe,GAAA,EAAK,iBAAA;IAAsB,IAAA;EAAA;EAC1C,iBAAA,GAAoB,GAAA,EAAK,iBAAA;IAAsB,KAAA;IAAe,QAAA;EAAA;EAC9D,eAAA,GAAkB,GAAA,EAAK,uBAAA;EjBQM;;;;;;;;;;;AAiB/B;;;;;;;;;;;;;;;;;;;AAqCA;;EiB3BE,WAAA,GAAc,GAAA,EAAK,eAAA;IACjB,KAAA;IACA,MAAA;IACA,MAAA,YAAkB,iBAAA;IAClB,aAAA,EAAe,QAAA,CAAS,MAAA;EAAA;EAE1B,aAAA,GAAgB,GAAA,EAAK,eAAA;IACnB,SAAA;IACA,aAAA,EAAe,QAAA,CAAS,MAAA;EAAA;EAE1B,YAAA,GAAe,GAAA,EAAK,eAAA;IAClB,MAAA,WAAiB,iBAAA;IACjB,WAAA;IACA,SAAA;IACA,aAAA,EAAe,QAAA,CAAS,MAAA;EAAA;EjBqCyC;;;;;;;;;EiB1BnE,YAAA,GAAe,GAAA,EAAK,eAAA;IAAoB,KAAA,EAAO,KAAA;IAAO,MAAA,YAAkB,iBAAA;EAAA;EACxE,gBAAA,GAAmB,GAAA,EAAK,eAAA;IAAoB,MAAA,WAAiB,iBAAA;IAAqB,OAAA;IAAkB,WAAA;IAAqB,SAAA;EAAA;EhB9G3F;;;;;;;;;EgBwH9B,cAAA,GAAiB,GAAA,EAAK,eAAA;IACpB,MAAA,YAAkB,iBAAA;IAClB,aAAA;EAAA;EhBlFF;;;;;;EgB0FA,mBAAA,GAAsB,GAAA,EAAK,eAAA;IACzB,MAAA;IACA,MAAA,EAAQ,MAAA;EAAA;EhBrDA;;AAOZ;;;;;AAEA;;;EgBwDE,mBAAA,GAAsB,GAAA,EAAK,eAAA;IACzB,SAAA;IACA,MAAA,EAAQ,MAAA;EAAA;EAIV,mBAAA,GAAsB,GAAA;IAAO,QAAA,EAAU,cAAA;EAAA;EhB5DvC;;;;;;;;;;;;;;EgB2EA,kBAAA,GAAqB,GAAA;IAAO,MAAA;IAAgB,QAAA,WAAmB,cAAA;IAAkB,IAAA;IAAc,MAAA;IAAgB,OAAA,GAAU,OAAA;EAAA;EACzH,cAAA,GAAiB,GAAA;IAAO,OAAA;EAAA;EAGxB,cAAA,GAAiB,GAAA,EAAK,gBAAA;EACtB,gBAAA,GAAmB,GAAA,EAAK,aAAA;EACxB,aAAA,GAAgB,GAAA,EAAK,gBAAA;IAAqB,KAAA,EAAO,KAAA;EAAA;EAQjD,mBAAA,GAAsB,GAAA,EAAK,iBAAA;IAAsB,KAAA;IAAe,IAAA;IAAc,OAAA;IAAiB,KAAA;EAAA;EAC/F,uBAAA,GAA0B,GAAA,EAAK,iBAAA;IAAsB,KAAA;IAAe,QAAA;IAAkB,OAAA;IAAiB,KAAA;EAAA;EACvG,kBAAA,GAAqB,GAAA,EAAK,iBAAA;IAAsB,IAAA;IAAc,OAAA;IAAiB,KAAA;EAAA;EAC/E,mBAAA,GAAsB,GAAA,EAAK,eAAA;IACzB,SAAA;IACA,aAAA,EAAe,QAAA,CAAS,MAAA;IACxB,OAAA;IACA,KAAA;EAAA;EAEF,kBAAA,GAAqB,GAAA,EAAK,eAAA;IACxB,MAAA,WAAiB,iBAAA;IACjB,WAAA;IACA,SAAA;IACA,aAAA,EAAe,QAAA,CAAS,MAAA;IACxB,OAAA;IACA,KAAA;EAAA;EAEF,kBAAA,GAAqB,GAAA,EAAK,eAAA;IAAoB,KAAA,EAAO,KAAA;IAAO,OAAA;IAAiB,KAAA;EAAA;EAC7E,kBAAA,GAAqB,GAAA;IACnB,IAAA;IACA,MAAA;IACA,KAAA,EAAO,SAAA;IACP,OAAA,EAAS,WAAA;IACT,UAAA;MAAc,IAAA,EAAM,QAAA,CAAS,MAAA;MAAyB,GAAA,EAAK,QAAA,CAAS,MAAA;IAAA;IACpE,OAAA;IACA,KAAA;EAAA;EAIF,aAAA,GAAgB,GAAA;IAAO,IAAA;IAAc,SAAA;IAAmB,KAAA;EAAA;EACxD,WAAA,GAAc,GAAA;IAAO,IAAA;IAAc,KAAA,EAAO,KAAA;EAAA;EAC1C,WAAA,GAAc,GAAA;IAAO,IAAA;EAAA;EhByPrB;;AAIF;;EgBxPE,qBAAA,GAAwB,GAAA;IAAO,IAAA;IAAc,SAAA;EAAA;EhB6P7C;;;AAUF;;EgBjQE,mBAAA,GAAsB,GAAA;IAAO,IAAA;IAAc,SAAA;IAAmB,UAAA;EAAA;IAA0B,EAAA;IAAU,SAAA;EAAA;IAAwB,EAAA;IAAW,KAAA,EAAO,KAAA;EAAA;EhBiTtG;;;;;;;;;;;;EgBpStC,kBAAA,GAAqB,GAAA;IACnB,MAAA;IACA,SAAA;IACA,KAAA,EAAO,KAAA;MAAQ,IAAA;MAAc,WAAA;MAA6B,WAAA;IAAA;EAAA;EhB+S3B;;;;;;;AAuBnC;;;;;EgBtTE,eAAA,GAAkB,GAAA,EAAK,kBAAA;IACrB,KAAA;IACA,MAAA;IACA,MAAA,YAAkB,iBAAA;EAAA;EAEpB,iBAAA,GAAoB,GAAA,EAAK,kBAAA;EACzB,gBAAA,GAAmB,GAAA,EAAK,kBAAA;IAAuB,MAAA,WAAiB,iBAAA;IAAqB,WAAA;EAAA;EACrF,oBAAA,GAAuB,GAAA,EAAK,kBAAA;IAAuB,MAAA,WAAiB,iBAAA;IAAqB,WAAA;EAAA;EACzF,gBAAA,GAAmB,GAAA,EAAK,kBAAA;IAAuB,KAAA,EAAO,KAAA;EAAA;EAGtD,gBAAA,GAAmB,GAAA;IAAO,MAAA,EAAQ,WAAA;EAAA;EAClC,gBAAA,GAAmB,GAAA;IAAO,OAAA;IAAiB,MAAA,EAAQ,WAAA;EAAA;EACnD,iBAAA,GAAoB,GAAA;IAAO,KAAA,EAAO,WAAA;IAAa,GAAA,EAAK,aAAA;EAAA;EACpD,mBAAA,GAAsB,GAAA;IAAO,KAAA,EAAO,WAAA;IAAa,MAAA,EAAQ,kBAAA;EAAA;EAGzD,OAAA,GAAU,GAAA;IAAO,IAAA;IAAc,MAAA;IAAgB,KAAA,EAAO,SAAA;IAAW,OAAA;IAAiB,QAAA;EAAA;EAClF,QAAA,GAAW,GAAA;IAAO,MAAA,EAAQ,MAAA;IAAyB,MAAA,EAAQ,MAAA;EAAA;EhB2U3D;;;;;EgBrUA,iBAAA,GAAoB,GAAA;IAAO,IAAA;IAAc,MAAA;IAAgB,KAAA;IAAe,MAAA;EAAA;EhBwVxE;;;;AA8BF;;;;;AAEA;;EgB5WE,sBAAA,GAAyB,GAAA;IACvB,IAAA;IACA,KAAA;IACA,GAAA;IACA,MAAA;IACA,IAAA;EAAA;EAIF,aAAA,GAAgB,GAAA;EhBkXhB;;;;;AAQF;;;;EgBhXE,YAAA,GAAe,GAAA,EAAK,UAAA;EAGpB,eAAA,GAAkB,GAAA,EAAK,kBAAA;IAAuB,KAAA;IAAe,MAAA;EAAA;EAC7D,aAAA,GAAgB,GAAA,EAAK,kBAAA;IAAuB,KAAA;IAAe,MAAA,EAAQ,gBAAA;IAAkB,SAAA;EAAA;EACrF,eAAA,GAAkB,GAAA,EAAK,kBAAA;IAAuB,KAAA,EAAO,WAAA;IAAe,KAAA;EAAA;EACpE,cAAA,GAAiB,GAAA,EAAK,kBAAA;IAAuB,GAAA;IAAa,KAAA;EAAA;EAC1D,cAAA,GAAiB,GAAA,EAAK,kBAAA;AAAA;AAAA,UA0EP,YAAA;EACf,QAAA,EAAU,QAAA;;EAEV,IAAA;EhB+VA;EgB7VA,MAAA;EhBqWA;EgBnWA,KAAA,GAAQ,MAAA,SAAe,OAAA;EhByWvB;;;;;;AAgCF;EgBjYE,WAAA,GAAc,MAAA;;EAEd,QAAA,GAAW,aAAA;EhBgYX;EgB9XA,SAAA,GAAY,gBAAA;EhBiYZ;EgB/XA,UAAA,GAAa,eAAA;EhBkYb;EgBhYA,OAAA,GAAU,OAAA;EhBgYG;EgB9Xb,MAAA,GAAS,YAAA;EhB2YM;;;;;;;;EgBlYf,YAAA,IAAgB,OAAA,EAAS,eAAA,OAAsB,OAAA,CAAQ,aAAA;EhByYvD;;;;AAIF;;;;;AAKA;;;EgBrYE,KAAA;AAAA;AAAA,UAGe,KAAA;EACf,KAAA,EAAO,QAAA,CAAS,UAAA;EAChB,GAAA,GAAM,OAAA,EAAS,eAAA,KAAoB,OAAA,CAAQ,UAAA;EAC3C,KAAA;EACA,KAAA,GAAQ,OAAA;EACR,QAAA,GAAW,OAAA;EACX,WAAA,QAAmB,OAAA;EhByYnB;;AAIF;;;EgBvYE,KAAA,QAAa,OAAA;EhBwYb;;;;EgBnYA,OAAA,QAAe,OAAA;EhBsYkC;;;;;;EgB/XjD,aAAA,GAAgB,IAAA,aAAiB,OAAA;EhBgYyC;;;AAG5E;EgB9XE,eAAA,GAAkB,IAAA,aAAiB,OAAA;;;;;;;AflcrC;;;;Ee6cE,MAAA,QAAc,OAAA;EAAA,SACL,SAAA;EAAA,SACA,KAAA,EAAO,WAAA;EAAA,SACP,SAAA,EAAW,gBAAA;EAAA,SACX,MAAA,EAAQ,eAAA;EAAA,SACR,OAAA,EAAS,OAAA;Ef7cH;EAAA,Se+cN,YAAA,WAAuB,WAAA;;;;;;;WAOvB,IAAA,EAAM,QAAA,CAAS,MAAA;AAAA;AAAA,iBAiOV,WAAA,CAAA;EAAc,QAAA;EAAU,IAAA,EAAM,SAAA;EAAW,MAAA,EAAQ,WAAA;EAAa,KAAA,EAAO,UAAA;EAAY,WAAA;EAAa,QAAA,EAAU,aAAA;EAAe,SAAA;EAAW,UAAA;EAAY,OAAA;EAAS,MAAA,EAAQ,WAAA;EAAa,YAAA;EAAc;AAAA,GAAS,YAAA,GAAe,KAAA"}
@@ -0,0 +1,321 @@
1
+ import { exec } from "node:child_process";
2
+ import { mkdir, readFile, readdir, writeFile } from "node:fs/promises";
3
+ import { dirname, resolve } from "node:path";
4
+ import { promisify } from "node:util";
5
+ //#region src/contexts/docker.ts
6
+ const SINGLE_QUOTE_RE = /'/g;
7
+ function createDockerContext(config) {
8
+ let counter = 0;
9
+ const containers = /* @__PURE__ */ new Map();
10
+ const defaultImage = config?.image ?? "oven/bun:latest";
11
+ const defaultCwd = config?.cwd ?? "/workspace";
12
+ const defaultEnv = config?.env;
13
+ const defaultLimits = config?.limits;
14
+ async function getDockerode() {
15
+ try {
16
+ const Dockerode = (await import("dockerode")).default;
17
+ return new Dockerode();
18
+ } catch {
19
+ throw new Error("dockerode is required for Docker execution context. Install it with: bun add dockerode");
20
+ }
21
+ }
22
+ const ctx = {
23
+ type: "docker",
24
+ capabilities: {
25
+ shell: true,
26
+ filesystem: true,
27
+ network: true,
28
+ gpu: false
29
+ },
30
+ async spawn(overrides) {
31
+ const docker = await getDockerode();
32
+ const id = `docker-${++counter}`;
33
+ const image = overrides?.image ?? defaultImage;
34
+ const cwd = overrides?.cwd ?? defaultCwd;
35
+ try {
36
+ await docker.getImage(image).inspect();
37
+ } catch {
38
+ await new Promise((resolve, reject) => {
39
+ docker.pull(image, (err, stream) => {
40
+ if (err) return reject(err);
41
+ docker.modem.followProgress(stream, (err2) => {
42
+ err2 ? reject(err2) : resolve();
43
+ });
44
+ });
45
+ });
46
+ }
47
+ const limits = {
48
+ ...defaultLimits,
49
+ ...overrides?.limits
50
+ };
51
+ const hostConfig = {};
52
+ if (limits?.memory) hostConfig.Memory = limits.memory * 1024 * 1024;
53
+ if (limits?.cpu) hostConfig.NanoCpus = Number.parseFloat(limits.cpu) * 1e9;
54
+ const env = {
55
+ ...defaultEnv,
56
+ ...overrides?.env
57
+ };
58
+ const container = await docker.createContainer({
59
+ Image: image,
60
+ Cmd: ["sleep", "infinity"],
61
+ WorkingDir: cwd,
62
+ Env: Object.entries(env).map(([k, v]) => `${k}=${v}`),
63
+ HostConfig: hostConfig
64
+ });
65
+ await container.start();
66
+ const handle = {
67
+ id,
68
+ type: "docker",
69
+ cwd
70
+ };
71
+ containers.set(id, {
72
+ handle,
73
+ container,
74
+ docker
75
+ });
76
+ return handle;
77
+ },
78
+ async exec(handle, command, options) {
79
+ const ref = containers.get(handle.id);
80
+ if (!ref) throw new Error(`Container ${handle.id} not found`);
81
+ const execCwd = options?.cwd ?? handle.cwd;
82
+ const env = options?.env ? Object.entries(options.env).map(([k, v]) => `${k}=${v}`) : [];
83
+ const exec = await ref.container.exec({
84
+ Cmd: [
85
+ "sh",
86
+ "-c",
87
+ command
88
+ ],
89
+ WorkingDir: execCwd,
90
+ Env: env,
91
+ AttachStdout: true,
92
+ AttachStderr: true
93
+ });
94
+ const stream = await exec.start({ Detach: false });
95
+ return new Promise((resolve) => {
96
+ let stdout = "";
97
+ let stderr = "";
98
+ let resolved = false;
99
+ const stdoutSink = {
100
+ write(chunk) {
101
+ stdout += typeof chunk === "string" ? chunk : chunk.toString("utf-8");
102
+ return true;
103
+ },
104
+ end() {},
105
+ on() {},
106
+ once() {},
107
+ emit() {
108
+ return true;
109
+ }
110
+ };
111
+ const stderrSink = {
112
+ write(chunk) {
113
+ stderr += typeof chunk === "string" ? chunk : chunk.toString("utf-8");
114
+ return true;
115
+ },
116
+ end() {},
117
+ on() {},
118
+ once() {},
119
+ emit() {
120
+ return true;
121
+ }
122
+ };
123
+ try {
124
+ ref.docker.modem.demuxStream(stream, stdoutSink, stderrSink);
125
+ } catch {
126
+ stream.on("data", (chunk) => {
127
+ stdout += chunk.toString("utf-8");
128
+ });
129
+ }
130
+ const timeout = options?.timeout ?? defaultLimits?.timeout ?? 30;
131
+ const timer = setTimeout(() => {
132
+ if (resolved) return;
133
+ resolved = true;
134
+ try {
135
+ stream.destroy?.();
136
+ } catch {}
137
+ resolve({
138
+ stdout,
139
+ stderr: stderr ? `${stderr}\n[timeout]` : "[timeout]",
140
+ exitCode: 124
141
+ });
142
+ }, timeout * 1e3);
143
+ stream.on("end", async () => {
144
+ if (resolved) return;
145
+ resolved = true;
146
+ clearTimeout(timer);
147
+ let exitCode = 0;
148
+ try {
149
+ exitCode = (await exec.inspect()).ExitCode ?? 0;
150
+ } catch {}
151
+ resolve({
152
+ stdout,
153
+ stderr,
154
+ exitCode
155
+ });
156
+ });
157
+ stream.on("error", (err) => {
158
+ if (resolved) return;
159
+ resolved = true;
160
+ clearTimeout(timer);
161
+ resolve({
162
+ stdout,
163
+ stderr: stderr ? `${stderr}\n${err.message}` : err.message,
164
+ exitCode: 1
165
+ });
166
+ });
167
+ });
168
+ },
169
+ async readFile(handle, path) {
170
+ const result = await ctx.exec(handle, `cat ${JSON.stringify(path)}`);
171
+ if (result.exitCode !== 0) throw new Error(`Failed to read file: ${result.stderr}`);
172
+ return result.stdout;
173
+ },
174
+ async writeFile(handle, path, content) {
175
+ const escaped = content.replace(SINGLE_QUOTE_RE, String.raw`'\''`);
176
+ const result = await ctx.exec(handle, `mkdir -p "$(dirname ${JSON.stringify(path)})" && printf '%s' '${escaped}' > ${JSON.stringify(path)}`);
177
+ if (result.exitCode !== 0) throw new Error(`Failed to write file: ${result.stderr}`);
178
+ },
179
+ async listFiles(handle, path) {
180
+ const result = await ctx.exec(handle, `ls -1 ${JSON.stringify(path)}`);
181
+ if (result.exitCode !== 0) return [];
182
+ return result.stdout.trim().split("\n").filter(Boolean);
183
+ },
184
+ async destroy(handle) {
185
+ const ref = containers.get(handle.id);
186
+ if (!ref) return;
187
+ try {
188
+ await ref.container.stop({ t: 5 });
189
+ await ref.container.remove({ force: true });
190
+ } catch {}
191
+ containers.delete(handle.id);
192
+ }
193
+ };
194
+ return ctx;
195
+ }
196
+ //#endregion
197
+ //#region src/contexts/process.ts
198
+ const execAsync = promisify(exec);
199
+ function createProcessContext(config) {
200
+ let counter = 0;
201
+ const handles = /* @__PURE__ */ new Map();
202
+ const defaultCwd = config?.cwd ?? process.cwd();
203
+ const defaultEnv = config?.env;
204
+ return {
205
+ type: "process",
206
+ capabilities: {
207
+ shell: true,
208
+ filesystem: true,
209
+ network: true,
210
+ gpu: false
211
+ },
212
+ async spawn(overrides) {
213
+ const id = `process-${++counter}`;
214
+ const cwd = overrides?.cwd ?? defaultCwd;
215
+ await mkdir(cwd, { recursive: true });
216
+ const handle = {
217
+ id,
218
+ type: "process",
219
+ cwd
220
+ };
221
+ handles.set(id, handle);
222
+ return handle;
223
+ },
224
+ async exec(handle, command, options) {
225
+ const cwd = options?.cwd ? resolve(handle.cwd, options.cwd) : handle.cwd;
226
+ try {
227
+ const { stdout, stderr } = await execAsync(command, {
228
+ cwd,
229
+ env: {
230
+ ...process.env,
231
+ ...defaultEnv,
232
+ ...options?.env
233
+ },
234
+ timeout: (options?.timeout ?? config?.limits?.timeout ?? 30) * 1e3,
235
+ maxBuffer: 10 * 1024 * 1024
236
+ });
237
+ return {
238
+ stdout,
239
+ stderr,
240
+ exitCode: 0
241
+ };
242
+ } catch (err) {
243
+ const e = err;
244
+ return {
245
+ stdout: typeof e.stdout === "string" ? e.stdout : "",
246
+ stderr: typeof e.stderr === "string" ? e.stderr : typeof e.message === "string" ? e.message : String(err),
247
+ exitCode: typeof e.code === "number" ? e.code : 1
248
+ };
249
+ }
250
+ },
251
+ async readFile(handle, path) {
252
+ return readFile(resolve(handle.cwd, path), "utf-8");
253
+ },
254
+ async readFileBinary(handle, path) {
255
+ const buf = await readFile(resolve(handle.cwd, path));
256
+ return new Uint8Array(buf);
257
+ },
258
+ async writeFile(handle, path, content) {
259
+ const fullPath = resolve(handle.cwd, path);
260
+ await mkdir(dirname(fullPath), { recursive: true });
261
+ await writeFile(fullPath, content, "utf-8");
262
+ },
263
+ async listFiles(handle, path) {
264
+ return readdir(resolve(handle.cwd, path));
265
+ },
266
+ async destroy(handle) {
267
+ handles.delete(handle.id);
268
+ }
269
+ };
270
+ }
271
+ //#endregion
272
+ //#region src/contexts/sandbox.ts
273
+ function createSandboxContext(provider) {
274
+ const sandboxes = /* @__PURE__ */ new Map();
275
+ function getSandboxId(handle) {
276
+ const id = sandboxes.get(handle.id);
277
+ if (!id) throw new Error(`Sandbox ${handle.id} not found`);
278
+ return id;
279
+ }
280
+ return {
281
+ type: "sandbox",
282
+ capabilities: {
283
+ shell: true,
284
+ filesystem: true,
285
+ network: true,
286
+ gpu: false
287
+ },
288
+ async spawn(config) {
289
+ const result = await provider.spawn(config ?? {});
290
+ const handle = {
291
+ id: result.id,
292
+ type: "sandbox",
293
+ cwd: result.cwd
294
+ };
295
+ sandboxes.set(handle.id, result.id);
296
+ return handle;
297
+ },
298
+ async exec(handle, command, options) {
299
+ return provider.exec(getSandboxId(handle), command, options);
300
+ },
301
+ async readFile(handle, path) {
302
+ return provider.readFile(getSandboxId(handle), path);
303
+ },
304
+ async writeFile(handle, path, content) {
305
+ return provider.writeFile(getSandboxId(handle), path, content);
306
+ },
307
+ async listFiles(handle, path) {
308
+ return provider.listFiles(getSandboxId(handle), path);
309
+ },
310
+ async destroy(handle) {
311
+ const id = sandboxes.get(handle.id);
312
+ if (!id) return;
313
+ await provider.destroy(id);
314
+ sandboxes.delete(handle.id);
315
+ }
316
+ };
317
+ }
318
+ //#endregion
319
+ export { createProcessContext as n, createDockerContext as r, createSandboxContext as t };
320
+
321
+ //# sourceMappingURL=contexts-3Arvn7yR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contexts-3Arvn7yR.js","names":["execCb"],"sources":["../src/contexts/docker.ts","../src/contexts/process.ts","../src/contexts/sandbox.ts"],"sourcesContent":["/**\n * Docker execution context.\n *\n * Runs tools inside a Docker container via dockerode.\n * Full isolation with configurable resource limits.\n *\n * Requires `dockerode` as an optional peer dependency.\n */\n\nimport type { Buffer } from 'node:buffer'\nimport type { ContextCapabilities, ExecResult, ExecutionContext, ExecutionHandle, SpawnConfig } from './types'\n\nconst SINGLE_QUOTE_RE = /'/g\n\ninterface ContainerRef {\n handle: ExecutionHandle\n container: any\n docker: any\n}\n\nexport function createDockerContext(config?: SpawnConfig): ExecutionContext {\n let counter = 0\n const containers = new Map<string, ContainerRef>()\n const defaultImage = config?.image ?? 'oven/bun:latest'\n const defaultCwd = config?.cwd ?? '/workspace'\n const defaultEnv = config?.env\n const defaultLimits = config?.limits\n\n async function getDockerode() {\n try {\n const Dockerode = (await import('dockerode')).default\n return new Dockerode()\n }\n catch {\n throw new Error('dockerode is required for Docker execution context. Install it with: bun add dockerode')\n }\n }\n\n const ctx: ExecutionContext = {\n type: 'docker',\n\n capabilities: {\n shell: true,\n filesystem: true,\n network: true,\n gpu: false,\n } satisfies ContextCapabilities,\n\n async spawn(overrides?: SpawnConfig): Promise<ExecutionHandle> {\n const docker = await getDockerode()\n const id = `docker-${++counter}`\n const image = overrides?.image ?? defaultImage\n const cwd = overrides?.cwd ?? defaultCwd\n\n // Pull image if not available\n try {\n await docker.getImage(image).inspect()\n }\n catch {\n await new Promise<void>((resolve, reject) => {\n docker.pull(image, (err: Error | null, stream: NodeJS.ReadableStream) => {\n if (err)\n return reject(err)\n docker.modem.followProgress(stream, (err2: Error | null) => {\n err2 ? reject(err2) : resolve()\n })\n })\n })\n }\n\n const limits = { ...defaultLimits, ...overrides?.limits }\n const hostConfig: Record<string, unknown> = {}\n\n if (limits?.memory) {\n hostConfig.Memory = limits.memory * 1024 * 1024\n }\n if (limits?.cpu) {\n hostConfig.NanoCpus = Number.parseFloat(limits.cpu) * 1e9\n }\n\n const env = { ...defaultEnv, ...overrides?.env }\n\n const container = await docker.createContainer({\n Image: image,\n Cmd: ['sleep', 'infinity'],\n WorkingDir: cwd,\n Env: Object.entries(env).map(([k, v]) => `${k}=${v}`),\n HostConfig: hostConfig,\n })\n\n await container.start()\n\n const handle: ExecutionHandle = { id, type: 'docker', cwd }\n containers.set(id, { handle, container, docker })\n return handle\n },\n\n async exec(handle: ExecutionHandle, command: string, options?: { cwd?: string, env?: Record<string, string>, timeout?: number }): Promise<ExecResult> {\n const ref = containers.get(handle.id)\n if (!ref)\n throw new Error(`Container ${handle.id} not found`)\n\n const execCwd = options?.cwd ?? handle.cwd\n const env = options?.env\n ? Object.entries(options.env).map(([k, v]) => `${k}=${v}`)\n : []\n\n const exec = await ref.container.exec({\n Cmd: ['sh', '-c', command],\n WorkingDir: execCwd,\n Env: env,\n AttachStdout: true,\n AttachStderr: true,\n })\n\n const stream = await exec.start({ Detach: false })\n\n return new Promise<ExecResult>((resolve) => {\n let stdout = ''\n let stderr = ''\n let resolved = false\n\n // Docker's exec stream is a multiplexed protocol — a single byte\n // stream that interleaves stdout/stderr frames. `demuxStream`\n // splits the two onto separate writable sinks. Without it, every\n // byte landed on `stdout` and `stderr` was permanently empty.\n const stdoutSink = {\n write(chunk: Buffer | string) {\n stdout += typeof chunk === 'string' ? chunk : chunk.toString('utf-8')\n return true\n },\n end() {},\n on() {},\n once() {},\n emit() { return true },\n }\n const stderrSink = {\n write(chunk: Buffer | string) {\n stderr += typeof chunk === 'string' ? chunk : chunk.toString('utf-8')\n return true\n },\n end() {},\n on() {},\n once() {},\n emit() { return true },\n }\n try {\n ref.docker.modem.demuxStream(stream, stdoutSink, stderrSink)\n }\n catch {\n // Older / different transports may not be multiplexed (TTY mode);\n // fall back to a raw stdout reader so we don't lose output entirely.\n stream.on('data', (chunk: Buffer) => {\n stdout += chunk.toString('utf-8')\n })\n }\n\n const timeout = options?.timeout ?? defaultLimits?.timeout ?? 30\n const timer = setTimeout(() => {\n if (resolved)\n return\n resolved = true\n // Best-effort: detach the stream so we stop accumulating bytes\n // from a runaway exec. The exec itself can't be killed cleanly\n // through the dockerode exec API; the container's destroy() path\n // (or a manual `docker exec kill`) is the real cleanup.\n try { stream.destroy?.() }\n catch { /* swallow */ }\n resolve({ stdout, stderr: stderr ? `${stderr}\\n[timeout]` : '[timeout]', exitCode: 124 })\n }, timeout * 1000)\n\n stream.on('end', async () => {\n if (resolved)\n return\n resolved = true\n clearTimeout(timer)\n let exitCode = 0\n try {\n const inspect = await exec.inspect()\n exitCode = inspect.ExitCode ?? 0\n }\n catch {\n // If inspect fails after a clean stream end, treat as success\n // — we already received the full output stream.\n }\n resolve({ stdout, stderr, exitCode })\n })\n\n stream.on('error', (err: Error) => {\n if (resolved)\n return\n resolved = true\n clearTimeout(timer)\n resolve({ stdout, stderr: stderr ? `${stderr}\\n${err.message}` : err.message, exitCode: 1 })\n })\n })\n },\n\n async readFile(handle: ExecutionHandle, path: string): Promise<string> {\n const result = await ctx.exec(handle, `cat ${JSON.stringify(path)}`)\n if (result.exitCode !== 0)\n throw new Error(`Failed to read file: ${result.stderr}`)\n return result.stdout\n },\n\n async writeFile(handle: ExecutionHandle, path: string, content: string): Promise<void> {\n const escaped = content.replace(SINGLE_QUOTE_RE, String.raw`'\\''`)\n const result = await ctx.exec(handle, `mkdir -p \"$(dirname ${JSON.stringify(path)})\" && printf '%s' '${escaped}' > ${JSON.stringify(path)}`)\n if (result.exitCode !== 0)\n throw new Error(`Failed to write file: ${result.stderr}`)\n },\n\n async listFiles(handle: ExecutionHandle, path: string): Promise<string[]> {\n const result = await ctx.exec(handle, `ls -1 ${JSON.stringify(path)}`)\n if (result.exitCode !== 0)\n return []\n return result.stdout.trim().split('\\n').filter(Boolean)\n },\n\n async destroy(handle: ExecutionHandle): Promise<void> {\n const ref = containers.get(handle.id)\n if (!ref)\n return\n\n try {\n await ref.container.stop({ t: 5 })\n await ref.container.remove({ force: true })\n }\n catch {\n // Container may already be stopped\n }\n\n containers.delete(handle.id)\n },\n }\n\n return ctx\n}\n","/**\n * In-process execution context.\n *\n * Runs everything in the current Node/Bun process.\n * No isolation — fastest, used as the default.\n */\n\nimport type { ContextCapabilities, ExecResult, ExecutionContext, ExecutionHandle, SpawnConfig } from './types'\nimport { exec as execCb } from 'node:child_process'\nimport { mkdir, readdir, readFile, writeFile } from 'node:fs/promises'\nimport { dirname, resolve } from 'node:path'\nimport { promisify } from 'node:util'\n\nconst execAsync = promisify(execCb)\n\nexport function createProcessContext(config?: SpawnConfig): ExecutionContext {\n let counter = 0\n const handles = new Map<string, ExecutionHandle>()\n const defaultCwd = config?.cwd ?? process.cwd()\n const defaultEnv = config?.env\n\n return {\n type: 'process',\n\n capabilities: {\n shell: true,\n filesystem: true,\n network: true,\n gpu: false,\n } satisfies ContextCapabilities,\n\n async spawn(overrides?: SpawnConfig): Promise<ExecutionHandle> {\n const id = `process-${++counter}`\n const cwd = overrides?.cwd ?? defaultCwd\n\n await mkdir(cwd, { recursive: true })\n\n const handle: ExecutionHandle = { id, type: 'process', cwd }\n handles.set(id, handle)\n return handle\n },\n\n async exec(handle: ExecutionHandle, command: string, options?: { cwd?: string, env?: Record<string, string>, timeout?: number }): Promise<ExecResult> {\n const cwd = options?.cwd ? resolve(handle.cwd, options.cwd) : handle.cwd\n\n try {\n const { stdout, stderr } = await execAsync(command, {\n cwd,\n env: { ...process.env, ...defaultEnv, ...options?.env },\n timeout: (options?.timeout ?? config?.limits?.timeout ?? 30) * 1000,\n maxBuffer: 10 * 1024 * 1024,\n })\n return { stdout, stderr, exitCode: 0 }\n }\n catch (err) {\n // node's execAsync rejects with a decorated `Error` whose extra fields\n // carry captured output and exit code — narrow defensively so a stray\n // plain-string rejection doesn't crash the tool.\n const e = err as { stdout?: unknown, stderr?: unknown, message?: unknown, code?: unknown }\n return {\n stdout: typeof e.stdout === 'string' ? e.stdout : '',\n stderr: typeof e.stderr === 'string'\n ? e.stderr\n : (typeof e.message === 'string' ? e.message : String(err)),\n exitCode: typeof e.code === 'number' ? e.code : 1,\n }\n }\n },\n\n async readFile(handle: ExecutionHandle, path: string): Promise<string> {\n return readFile(resolve(handle.cwd, path), 'utf-8')\n },\n\n async readFileBinary(handle: ExecutionHandle, path: string): Promise<Uint8Array> {\n // No encoding → returns a Buffer (which is a Uint8Array). Used by\n // read_file to ferry image / binary content into the multimodal route.\n const buf = await readFile(resolve(handle.cwd, path))\n return new Uint8Array(buf)\n },\n\n async writeFile(handle: ExecutionHandle, path: string, content: string): Promise<void> {\n const fullPath = resolve(handle.cwd, path)\n await mkdir(dirname(fullPath), { recursive: true })\n await writeFile(fullPath, content, 'utf-8')\n },\n\n async listFiles(handle: ExecutionHandle, path: string): Promise<string[]> {\n return readdir(resolve(handle.cwd, path))\n },\n\n async destroy(handle: ExecutionHandle): Promise<void> {\n handles.delete(handle.id)\n },\n }\n}\n","/**\n * Remote sandbox execution context.\n *\n * Offloads execution to a remote sandbox API (e.g. Rivet, E2B).\n * Specific providers implement the SandboxProvider interface.\n */\n\nimport type { ContextCapabilities, ExecResult, ExecutionContext, ExecutionHandle, SpawnConfig } from './types'\n\n// ---------------------------------------------------------------------------\n// Sandbox provider interface\n// ---------------------------------------------------------------------------\n\nexport interface SandboxProvider {\n name: string\n spawn: (config: SpawnConfig) => Promise<{ id: string, cwd: string }>\n exec: (sandboxId: string, command: string, options?: { cwd?: string, env?: Record<string, string>, timeout?: number }) => Promise<ExecResult>\n readFile: (sandboxId: string, path: string) => Promise<string>\n writeFile: (sandboxId: string, path: string, content: string) => Promise<void>\n listFiles: (sandboxId: string, path: string) => Promise<string[]>\n destroy: (sandboxId: string) => Promise<void>\n}\n\n// ---------------------------------------------------------------------------\n// Sandbox execution context\n// ---------------------------------------------------------------------------\n\nexport function createSandboxContext(provider: SandboxProvider): ExecutionContext {\n const sandboxes = new Map<string, string>()\n\n function getSandboxId(handle: ExecutionHandle): string {\n const id = sandboxes.get(handle.id)\n if (!id)\n throw new Error(`Sandbox ${handle.id} not found`)\n return id\n }\n\n return {\n type: 'sandbox',\n\n capabilities: {\n shell: true,\n filesystem: true,\n network: true,\n gpu: false,\n } satisfies ContextCapabilities,\n\n async spawn(config?: SpawnConfig): Promise<ExecutionHandle> {\n const result = await provider.spawn(config ?? {})\n const handle: ExecutionHandle = { id: result.id, type: 'sandbox', cwd: result.cwd }\n sandboxes.set(handle.id, result.id)\n return handle\n },\n\n async exec(handle: ExecutionHandle, command: string, options?): Promise<ExecResult> {\n return provider.exec(getSandboxId(handle), command, options)\n },\n\n async readFile(handle: ExecutionHandle, path: string): Promise<string> {\n return provider.readFile(getSandboxId(handle), path)\n },\n\n async writeFile(handle: ExecutionHandle, path: string, content: string): Promise<void> {\n return provider.writeFile(getSandboxId(handle), path, content)\n },\n\n async listFiles(handle: ExecutionHandle, path: string): Promise<string[]> {\n return provider.listFiles(getSandboxId(handle), path)\n },\n\n async destroy(handle: ExecutionHandle): Promise<void> {\n const id = sandboxes.get(handle.id)\n if (!id)\n return\n await provider.destroy(id)\n sandboxes.delete(handle.id)\n },\n }\n}\n"],"mappings":"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"}
@@ -1,25 +1,2 @@
1
- import { S as SpawnConfig, a as ExecutionContext } from './types-Bai5rKpa.js';
2
- export { C as ContextCapabilities, b as ContextType, E as ExecResult, c as ExecutionHandle } from './types-Bai5rKpa.js';
3
- export { S as SandboxProvider, c as createSandboxContext } from './sandbox-D7v6Wy62.js';
4
-
5
- /**
6
- * Docker execution context.
7
- *
8
- * Runs tools inside a Docker container via dockerode.
9
- * Full isolation with configurable resource limits.
10
- *
11
- * Requires `dockerode` as an optional peer dependency.
12
- */
13
-
14
- declare function createDockerContext(config?: SpawnConfig): ExecutionContext;
15
-
16
- /**
17
- * In-process execution context.
18
- *
19
- * Runs everything in the current Node/Bun process.
20
- * No isolation — fastest, used as the default.
21
- */
22
-
23
- declare function createProcessContext(config?: SpawnConfig): ExecutionContext;
24
-
25
- export { ExecutionContext, SpawnConfig, createDockerContext, createProcessContext };
1
+ import { a as ContextCapabilities, c as ExecutionContext, i as createDockerContext, l as ExecutionHandle, n as createSandboxContext, o as ContextType, r as createProcessContext, s as ExecResult, t as SandboxProvider, u as SpawnConfig } from "./index-BfSdALzk.js";
2
+ export { ContextCapabilities, ContextType, ExecResult, ExecutionContext, ExecutionHandle, SandboxProvider, SpawnConfig, createDockerContext, createProcessContext, createSandboxContext };
package/dist/contexts.js CHANGED
@@ -1,10 +1,2 @@
1
- import {
2
- createDockerContext,
3
- createProcessContext,
4
- createSandboxContext
5
- } from "./chunk-UD25QF3H.js";
6
- export {
7
- createDockerContext,
8
- createProcessContext,
9
- createSandboxContext
10
- };
1
+ import { n as createProcessContext, r as createDockerContext, t as createSandboxContext } from "./contexts-3Arvn7yR.js";
2
+ export { createDockerContext, createProcessContext, createSandboxContext };
@@ -0,0 +1,118 @@
1
+ //#region src/errors.ts
2
+ /**
3
+ * Thrown when the model or provider signals that the context window was exceeded.
4
+ * Downstream consumers should catch this, prune history, and retry.
5
+ */
6
+ var AgentContextExceededError = class extends Error {
7
+ code = "context_exceeded";
8
+ provider;
9
+ providerCode;
10
+ constructor(message, options) {
11
+ super(message, options.cause !== void 0 ? { cause: options.cause } : void 0);
12
+ this.name = "AgentContextExceededError";
13
+ this.provider = options.provider;
14
+ this.providerCode = options.providerCode;
15
+ }
16
+ };
17
+ /**
18
+ * Thrown when the provider returns a non-context error (auth, rate limit, server error, etc.).
19
+ * Catch-all for unclassified provider failures.
20
+ */
21
+ var AgentProviderError = class extends Error {
22
+ code = "provider_error";
23
+ provider;
24
+ providerCode;
25
+ /**
26
+ * Whether a retry with backoff is likely to succeed. See
27
+ * {@link ClassifiedError.retryable}. Absent when the provider did not
28
+ * classify the error — callers should treat absent as "don't retry".
29
+ */
30
+ retryable;
31
+ constructor(message, options) {
32
+ super(message, options.cause !== void 0 ? { cause: options.cause } : void 0);
33
+ this.name = "AgentProviderError";
34
+ this.provider = options.provider;
35
+ this.providerCode = options.providerCode;
36
+ this.retryable = options.retryable;
37
+ }
38
+ };
39
+ /**
40
+ * Thrown when a run is aborted by the consumer via `agent.abort()` or an external `AbortSignal`.
41
+ */
42
+ var AgentAbortedError = class extends Error {
43
+ code = "aborted";
44
+ constructor(message = "Agent run aborted", options) {
45
+ super(message, options?.cause !== void 0 ? { cause: options.cause } : void 0);
46
+ this.name = "AgentAbortedError";
47
+ }
48
+ };
49
+ /**
50
+ * Thrown (well — constructed; attach via the `tool:gate` block signal) when the
51
+ * union of `allowed-tools` across active skills does not permit a tool call.
52
+ *
53
+ * Produced by the allowed-tools middleware registered on `tool:gate` /
54
+ * `mcp:tool:gate`. The gate's `block = true` + `reason` carry the same message
55
+ * so consumers that don't look at this typed error still get a useful string.
56
+ */
57
+ var AgentToolNotAllowedError = class extends Error {
58
+ code = "tool_not_allowed";
59
+ /** Canonical tool name the agent tried to call. */
60
+ toolName;
61
+ /** Aliased / wire name the LLM saw. */
62
+ displayName;
63
+ /** Flattened union of `allowedTools` patterns across active skills. */
64
+ allowedUnion;
65
+ /** Names of the skills currently active when the block fired. */
66
+ activeSkills;
67
+ constructor(options) {
68
+ const msg = `Tool "${options.displayName}" is not in the allowed-tools union of the active skill(s) [${options.activeSkills.join(", ")}]. Union: [${options.allowedUnion.join(" ")}].`;
69
+ super(msg, options.cause !== void 0 ? { cause: options.cause } : void 0);
70
+ this.name = "AgentToolNotAllowedError";
71
+ this.toolName = options.toolName;
72
+ this.displayName = options.displayName;
73
+ this.allowedUnion = options.allowedUnion;
74
+ this.activeSkills = options.activeSkills;
75
+ }
76
+ };
77
+ /**
78
+ * Regex patterns matching common "context window exceeded" messages across providers.
79
+ *
80
+ * Use {@link matchesContextExceeded} to test a free-form error message against them.
81
+ * Provider authors can also compose these into their own `classifyError` fallbacks.
82
+ */
83
+ const CONTEXT_EXCEEDED_MESSAGE_PATTERNS = [
84
+ /context[_\s]length[_\s]exceeded/i,
85
+ /maximum context length/i,
86
+ /prompt is too long/i,
87
+ /context window/i
88
+ ];
89
+ /**
90
+ * Return true when `message` matches any of the known "context window exceeded"
91
+ * phrasings. Safe for `''` / non-strings (returns false).
92
+ */
93
+ function matchesContextExceeded(message) {
94
+ if (typeof message !== "string" || message.length === 0) return false;
95
+ return CONTEXT_EXCEEDED_MESSAGE_PATTERNS.some((re) => re.test(message));
96
+ }
97
+ /**
98
+ * Convert a `ClassifiedError` + underlying cause into the matching typed error instance.
99
+ */
100
+ function toTypedError(classification, provider, cause) {
101
+ const message = classification.message ?? (cause instanceof Error ? cause.message : String(cause));
102
+ if (classification.kind === "context_exceeded") return new AgentContextExceededError(message, {
103
+ provider,
104
+ providerCode: classification.providerCode,
105
+ cause
106
+ });
107
+ if (classification.kind === "aborted") return new AgentAbortedError(message, { cause });
108
+ return new AgentProviderError(message, {
109
+ provider,
110
+ providerCode: classification.providerCode,
111
+ retryable: classification.retryable,
112
+ cause
113
+ });
114
+ }
115
+ //#endregion
116
+ export { CONTEXT_EXCEEDED_MESSAGE_PATTERNS as a, AgentToolNotAllowedError as i, AgentContextExceededError as n, matchesContextExceeded as o, AgentProviderError as r, toTypedError as s, AgentAbortedError as t };
117
+
118
+ //# sourceMappingURL=errors-D1lhd6mX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-D1lhd6mX.js","names":[],"sources":["../src/errors.ts"],"sourcesContent":["/**\n * Typed error classes for agent runs.\n *\n * Providers classify native errors into one of these so downstream consumers\n * can react without string-sniffing messages.\n *\n * Provider authors: implement `Provider.classifyError` to map native errors\n * (SDK exceptions, HTTP responses) to a `ClassifiedError`. The loop wraps\n * unclassified errors in `AgentProviderError` automatically.\n */\n\n/** Kind of classified provider error */\nexport type ClassifiedErrorKind = 'context_exceeded' | 'provider_error' | 'aborted'\n\n/** Structured classification returned by `Provider.classifyError` */\nexport interface ClassifiedError {\n kind: ClassifiedErrorKind\n /** Upstream error code as surfaced by the provider (e.g. `context_length_exceeded`). Optional. */\n providerCode?: string\n /** Optional human-readable message override. Falls back to the underlying error's message. */\n message?: string\n /**\n * Hint that the error is transient and a retry with backoff is reasonable\n * (e.g. 429, 5xx, truncated stream). Omitted when the provider can't decide;\n * callers should default to \"do not retry\" when absent to avoid hammering\n * terminal failures (auth, invalid request).\n */\n retryable?: boolean\n}\n\ninterface TypedErrorOptions {\n /** Provider name, always set (e.g. `anthropic`, `openrouter`) */\n provider: string\n /** Optional upstream error code */\n providerCode?: string\n /** Original error from the provider SDK/HTTP layer */\n cause?: unknown\n /** See {@link ClassifiedError.retryable}. */\n retryable?: boolean\n}\n\n/**\n * Thrown when the model or provider signals that the context window was exceeded.\n * Downstream consumers should catch this, prune history, and retry.\n */\nexport class AgentContextExceededError extends Error {\n readonly code = 'context_exceeded' as const\n readonly provider: string\n readonly providerCode?: string\n\n constructor(message: string, options: TypedErrorOptions) {\n super(message, options.cause !== undefined ? { cause: options.cause } : undefined)\n this.name = 'AgentContextExceededError'\n this.provider = options.provider\n this.providerCode = options.providerCode\n }\n}\n\n/**\n * Thrown when the provider returns a non-context error (auth, rate limit, server error, etc.).\n * Catch-all for unclassified provider failures.\n */\nexport class AgentProviderError extends Error {\n readonly code = 'provider_error' as const\n readonly provider: string\n readonly providerCode?: string\n /**\n * Whether a retry with backoff is likely to succeed. See\n * {@link ClassifiedError.retryable}. Absent when the provider did not\n * classify the error — callers should treat absent as \"don't retry\".\n */\n readonly retryable?: boolean\n\n constructor(message: string, options: TypedErrorOptions) {\n super(message, options.cause !== undefined ? { cause: options.cause } : undefined)\n this.name = 'AgentProviderError'\n this.provider = options.provider\n this.providerCode = options.providerCode\n this.retryable = options.retryable\n }\n}\n\n/**\n * Thrown when a run is aborted by the consumer via `agent.abort()` or an external `AbortSignal`.\n */\nexport class AgentAbortedError extends Error {\n readonly code = 'aborted' as const\n\n constructor(message = 'Agent run aborted', options?: { cause?: unknown }) {\n super(message, options?.cause !== undefined ? { cause: options.cause } : undefined)\n this.name = 'AgentAbortedError'\n }\n}\n\n/**\n * Thrown (well — constructed; attach via the `tool:gate` block signal) when the\n * union of `allowed-tools` across active skills does not permit a tool call.\n *\n * Produced by the allowed-tools middleware registered on `tool:gate` /\n * `mcp:tool:gate`. The gate's `block = true` + `reason` carry the same message\n * so consumers that don't look at this typed error still get a useful string.\n */\nexport class AgentToolNotAllowedError extends Error {\n readonly code = 'tool_not_allowed' as const\n /** Canonical tool name the agent tried to call. */\n readonly toolName: string\n /** Aliased / wire name the LLM saw. */\n readonly displayName: string\n /** Flattened union of `allowedTools` patterns across active skills. */\n readonly allowedUnion: readonly string[]\n /** Names of the skills currently active when the block fired. */\n readonly activeSkills: readonly string[]\n\n constructor(options: {\n toolName: string\n displayName: string\n allowedUnion: readonly string[]\n activeSkills: readonly string[]\n cause?: unknown\n }) {\n const msg = (\n `Tool \"${options.displayName}\" is not in the allowed-tools union of the active `\n + `skill(s) [${options.activeSkills.join(', ')}]. Union: [${options.allowedUnion.join(' ')}].`\n )\n super(msg, options.cause !== undefined ? { cause: options.cause } : undefined)\n this.name = 'AgentToolNotAllowedError'\n this.toolName = options.toolName\n this.displayName = options.displayName\n this.allowedUnion = options.allowedUnion\n this.activeSkills = options.activeSkills\n }\n}\n\n/**\n * Regex patterns matching common \"context window exceeded\" messages across providers.\n *\n * Use {@link matchesContextExceeded} to test a free-form error message against them.\n * Provider authors can also compose these into their own `classifyError` fallbacks.\n */\nexport const CONTEXT_EXCEEDED_MESSAGE_PATTERNS: readonly RegExp[] = [\n /context[_\\s]length[_\\s]exceeded/i,\n /maximum context length/i,\n /prompt is too long/i,\n /context window/i,\n]\n\n/**\n * Return true when `message` matches any of the known \"context window exceeded\"\n * phrasings. Safe for `''` / non-strings (returns false).\n */\nexport function matchesContextExceeded(message: unknown): boolean {\n if (typeof message !== 'string' || message.length === 0)\n return false\n return CONTEXT_EXCEEDED_MESSAGE_PATTERNS.some(re => re.test(message))\n}\n\n/**\n * Convert a `ClassifiedError` + underlying cause into the matching typed error instance.\n */\nexport function toTypedError(\n classification: ClassifiedError,\n provider: string,\n cause: unknown,\n): AgentContextExceededError | AgentProviderError | AgentAbortedError {\n const message = classification.message ?? (cause instanceof Error ? cause.message : String(cause))\n\n if (classification.kind === 'context_exceeded') {\n return new AgentContextExceededError(message, {\n provider,\n providerCode: classification.providerCode,\n cause,\n })\n }\n\n if (classification.kind === 'aborted') {\n return new AgentAbortedError(message, { cause })\n }\n\n return new AgentProviderError(message, {\n provider,\n providerCode: classification.providerCode,\n retryable: classification.retryable,\n cause,\n })\n}\n"],"mappings":";;;;;AA6CA,IAAa,4BAAb,cAA+C,MAAM;CACnD,OAAgB;CAChB;CACA;CAEA,YAAY,SAAiB,SAA4B;EACvD,MAAM,SAAS,QAAQ,UAAU,KAAA,IAAY,EAAE,OAAO,QAAQ,OAAO,GAAG,KAAA,EAAU;EAClF,KAAK,OAAO;EACZ,KAAK,WAAW,QAAQ;EACxB,KAAK,eAAe,QAAQ;;;;;;;AAQhC,IAAa,qBAAb,cAAwC,MAAM;CAC5C,OAAgB;CAChB;CACA;;;;;;CAMA;CAEA,YAAY,SAAiB,SAA4B;EACvD,MAAM,SAAS,QAAQ,UAAU,KAAA,IAAY,EAAE,OAAO,QAAQ,OAAO,GAAG,KAAA,EAAU;EAClF,KAAK,OAAO;EACZ,KAAK,WAAW,QAAQ;EACxB,KAAK,eAAe,QAAQ;EAC5B,KAAK,YAAY,QAAQ;;;;;;AAO7B,IAAa,oBAAb,cAAuC,MAAM;CAC3C,OAAgB;CAEhB,YAAY,UAAU,qBAAqB,SAA+B;EACxE,MAAM,SAAS,SAAS,UAAU,KAAA,IAAY,EAAE,OAAO,QAAQ,OAAO,GAAG,KAAA,EAAU;EACnF,KAAK,OAAO;;;;;;;;;;;AAYhB,IAAa,2BAAb,cAA8C,MAAM;CAClD,OAAgB;;CAEhB;;CAEA;;CAEA;;CAEA;CAEA,YAAY,SAMT;EACD,MAAM,MACJ,SAAS,QAAQ,YAAY,8DACd,QAAQ,aAAa,KAAK,KAAK,CAAC,aAAa,QAAQ,aAAa,KAAK,IAAI,CAAC;EAE7F,MAAM,KAAK,QAAQ,UAAU,KAAA,IAAY,EAAE,OAAO,QAAQ,OAAO,GAAG,KAAA,EAAU;EAC9E,KAAK,OAAO;EACZ,KAAK,WAAW,QAAQ;EACxB,KAAK,cAAc,QAAQ;EAC3B,KAAK,eAAe,QAAQ;EAC5B,KAAK,eAAe,QAAQ;;;;;;;;;AAUhC,MAAa,oCAAuD;CAClE;CACA;CACA;CACA;CACD;;;;;AAMD,SAAgB,uBAAuB,SAA2B;CAChE,IAAI,OAAO,YAAY,YAAY,QAAQ,WAAW,GACpD,OAAO;CACT,OAAO,kCAAkC,MAAK,OAAM,GAAG,KAAK,QAAQ,CAAC;;;;;AAMvE,SAAgB,aACd,gBACA,UACA,OACoE;CACpE,MAAM,UAAU,eAAe,YAAY,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;CAEjG,IAAI,eAAe,SAAS,oBAC1B,OAAO,IAAI,0BAA0B,SAAS;EAC5C;EACA,cAAc,eAAe;EAC7B;EACD,CAAC;CAGJ,IAAI,eAAe,SAAS,WAC1B,OAAO,IAAI,kBAAkB,SAAS,EAAE,OAAO,CAAC;CAGlD,OAAO,IAAI,mBAAmB,SAAS;EACrC;EACA,cAAc,eAAe;EAC7B,WAAW,eAAe;EAC1B;EACD,CAAC"}