@bunny-agent/manager 0.9.28

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 (71) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +198 -0
  3. package/dist/__tests__/bunny-agent.test.d.ts +2 -0
  4. package/dist/__tests__/bunny-agent.test.d.ts.map +1 -0
  5. package/dist/__tests__/bunny-agent.test.js +274 -0
  6. package/dist/__tests__/bunny-agent.test.js.map +1 -0
  7. package/dist/__tests__/coding-run.test.d.ts +2 -0
  8. package/dist/__tests__/coding-run.test.d.ts.map +1 -0
  9. package/dist/__tests__/coding-run.test.js +27 -0
  10. package/dist/__tests__/coding-run.test.js.map +1 -0
  11. package/dist/__tests__/daemon-health.test.d.ts +2 -0
  12. package/dist/__tests__/daemon-health.test.d.ts.map +1 -0
  13. package/dist/__tests__/daemon-health.test.js +113 -0
  14. package/dist/__tests__/daemon-health.test.js.map +1 -0
  15. package/dist/__tests__/env.test.d.ts +2 -0
  16. package/dist/__tests__/env.test.d.ts.map +1 -0
  17. package/dist/__tests__/env.test.js +82 -0
  18. package/dist/__tests__/env.test.js.map +1 -0
  19. package/dist/__tests__/local-sandbox.test.d.ts +2 -0
  20. package/dist/__tests__/local-sandbox.test.d.ts.map +1 -0
  21. package/dist/__tests__/local-sandbox.test.js +274 -0
  22. package/dist/__tests__/local-sandbox.test.js.map +1 -0
  23. package/dist/__tests__/signal-integration.test.d.ts +2 -0
  24. package/dist/__tests__/signal-integration.test.d.ts.map +1 -0
  25. package/dist/__tests__/signal-integration.test.js +135 -0
  26. package/dist/__tests__/signal-integration.test.js.map +1 -0
  27. package/dist/__tests__/transcript.test.d.ts +2 -0
  28. package/dist/__tests__/transcript.test.d.ts.map +1 -0
  29. package/dist/__tests__/transcript.test.js +144 -0
  30. package/dist/__tests__/transcript.test.js.map +1 -0
  31. package/dist/__tests__/types.test.d.ts +2 -0
  32. package/dist/__tests__/types.test.d.ts.map +1 -0
  33. package/dist/__tests__/types.test.js +148 -0
  34. package/dist/__tests__/types.test.js.map +1 -0
  35. package/dist/bunny-agent.d.ts +50 -0
  36. package/dist/bunny-agent.d.ts.map +1 -0
  37. package/dist/bunny-agent.js +206 -0
  38. package/dist/bunny-agent.js.map +1 -0
  39. package/dist/coding-run.d.ts +40 -0
  40. package/dist/coding-run.d.ts.map +1 -0
  41. package/dist/coding-run.js +111 -0
  42. package/dist/coding-run.js.map +1 -0
  43. package/dist/constants.d.ts +7 -0
  44. package/dist/constants.d.ts.map +1 -0
  45. package/dist/constants.js +7 -0
  46. package/dist/constants.js.map +1 -0
  47. package/dist/daemon-health.d.ts +16 -0
  48. package/dist/daemon-health.d.ts.map +1 -0
  49. package/dist/daemon-health.js +66 -0
  50. package/dist/daemon-health.js.map +1 -0
  51. package/dist/env.d.ts +55 -0
  52. package/dist/env.d.ts.map +1 -0
  53. package/dist/env.js +113 -0
  54. package/dist/env.js.map +1 -0
  55. package/dist/index.d.ts +13 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +10 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/local-sandbox.d.ts +83 -0
  60. package/dist/local-sandbox.d.ts.map +1 -0
  61. package/dist/local-sandbox.js +364 -0
  62. package/dist/local-sandbox.js.map +1 -0
  63. package/dist/transcript.d.ts +112 -0
  64. package/dist/transcript.d.ts.map +1 -0
  65. package/dist/transcript.js +176 -0
  66. package/dist/transcript.js.map +1 -0
  67. package/dist/types.d.ts +249 -0
  68. package/dist/types.d.ts.map +1 -0
  69. package/dist/types.js +2 -0
  70. package/dist/types.js.map +1 -0
  71. package/package.json +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bunny-agent.test.js","sourceRoot":"","sources":["../../src/__tests__/bunny-agent.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C;;GAEG;AACH,SAAS,mBAAmB,CAAI,IAAS;IACvC,OAAO;QACL,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE;YAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,OAAO;gBACL,KAAK,CAAC,IAAI;oBACR,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;wBACxB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;oBAC/C,CAAC;oBACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC1C,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,MAAM,MAAM,GAAkB;QAC5B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC;QACjD,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QAC3C,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QACzC,IAAI,EAAE,EAAE;aACL,EAAE,EAAE;aACJ,eAAe,CACd,mBAAmB,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAC/D;QACH,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC5C,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;KAC9C,CAAC;IAEF,MAAM,OAAO,GAA+C;QAC1D,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACzC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC;QAC1C,MAAM;KACP,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;gBAChC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;aAC/C,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC,MAAM,CAAC;gBACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;aAC/C,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC9C,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,EAC/C,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC,MAAM,CAAC;gBACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;aAC/C,CAAC,CAAC;YAEH,+EAA+E;YAC/E,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC9C,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,EAC/C,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC,MAAM,CAAC;gBACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;aACvD,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC9C,MAAM,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC,CAAC,EACzC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,QAAQ,GAAG,qBAAqB,CAAC;YACvC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YAEpC,gEAAgE;YAChE,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE;iBACrB,EAAE,EAAE;iBACJ,eAAe,CACd,mBAAmB,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC1D,CAAC;YAEJ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;gBAChC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;aAC/C,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAClC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YAE1E,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAChD,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,EAChD,YAAY,CACb,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC,WAAW,CACrB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,EAChD,aAAa,CACd,CAAC;YAEF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAChD,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,EAChD,aAAa,CACd,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,0BAA0B;YAC1B,MAAM,KAAK,CAAC,MAAM,CAAC;gBACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;aAC/C,CAAC,CAAC;YAEH,eAAe;YACf,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;YAEtB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,kCAAkC;YAClC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;YAEtB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAEjC,MAAM,KAAK,CAAC,MAAM,CAAC;gBACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBAC9C,MAAM;aACP,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EACjB,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAEjC,MAAM,MAAM,CACV,KAAK,CAAC,MAAM,CAAC;gBACX,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBAC9C,MAAM;aACP,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YAEzC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE;iBACrB,EAAE,EAAE;iBACJ,eAAe,CACd,mBAAmB,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAC/D,CAAC;YAEJ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC,MAAM,CAAC;gBACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBAC9C,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,mCAAmC;YACnC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EACjB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,MAAM,iBAAiB,GAOlB,EAAE,CAAC;YAER,MAAM,oBAAoB,GAAG;gBAC3B,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC1C,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC,CAAC;aACH,CAAC;YAEF,uCAAuC;YACvC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;gBAC5C,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,SAAS,CAAC;oBACrC,MAAM,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACzC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;oBACrD,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC;oBAC1B,MAAM,KAAK,CAAC;gBACd,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;gBAC3B,OAAO;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,0BAA0B;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;gBAChC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBAC9C,gBAAgB,EAAE,oBAAoB;aACvC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAElC,mBAAmB;YACnB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAEpB,wCAAwC;YACxC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAE9C,qCAAqC;YACrC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CACvC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAClC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YAEjC,4CAA4C;YAC5C,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CACvC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAClC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YAEjC,mEAAmE;YACnE,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CACvC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAClC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=coding-run.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-run.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/coding-run.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { buildCodingRunShellScript, buildDefaultDaemonCodingRunExecCommand, } from "../coding-run.js";
3
+ describe("coding-run", () => {
4
+ it("builds curl POST with Content-Type and body file", () => {
5
+ const args = buildDefaultDaemonCodingRunExecCommand({
6
+ url: "http://127.0.0.1:3080/api/coding/run",
7
+ reqPath: "/tmp/req.json",
8
+ });
9
+ expect(args[0]).toBe("curl");
10
+ expect(args).toContain("--fail");
11
+ expect(args).toContain("-N");
12
+ expect(args).toContain("POST");
13
+ expect(args).toContain("http://127.0.0.1:3080/api/coding/run");
14
+ expect(args).toContain("Content-Type: application/json");
15
+ expect(args).toContain("--data-binary");
16
+ expect(args).toContain("@/tmp/req.json");
17
+ });
18
+ it("buildCodingRunShellScript registers trap and curl with quoted paths", () => {
19
+ const script = buildCodingRunShellScript("http://127.0.0.1:3080/", "/tmp/.bunny-agent-req.json");
20
+ expect(script).toContain("trap 'rm -f \"$REQ\"' EXIT INT TERM");
21
+ expect(script).toContain("curl --fail -sS -N -X POST");
22
+ expect(script).toContain("http://127.0.0.1:3080/api/coding/run");
23
+ expect(script).toContain('--data-binary @"$REQ"');
24
+ expect(script).toMatch(/^REQ='/);
25
+ });
26
+ });
27
+ //# sourceMappingURL=coding-run.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-run.test.js","sourceRoot":"","sources":["../../src/__tests__/coding-run.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,yBAAyB,EACzB,sCAAsC,GACvC,MAAM,kBAAkB,CAAC;AAE1B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAG,sCAAsC,CAAC;YAClD,GAAG,EAAE,sCAAsC;YAC3C,OAAO,EAAE,eAAe;SACzB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,MAAM,GAAG,yBAAyB,CACtC,wBAAwB,EACxB,4BAA4B,CAC7B,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=daemon-health.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-health.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/daemon-health.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { isBunnyAgentDaemonHealthy } from "../daemon-health.js";
3
+ function mockHandle(execImpl) {
4
+ return {
5
+ getSandboxId: () => "mock",
6
+ getVolumes: () => null,
7
+ getWorkdir: () => "/workspace",
8
+ exec: vi.fn().mockImplementation(() => execImpl()),
9
+ upload: vi.fn(),
10
+ readFile: vi.fn(),
11
+ destroy: vi.fn(),
12
+ };
13
+ }
14
+ describe("isBunnyAgentDaemonHealthy", () => {
15
+ it("curls deduped /healthz when base already ends with /healthz", async () => {
16
+ const exec = vi.fn().mockImplementation(() => (async function* () {
17
+ yield new TextEncoder().encode("200");
18
+ })());
19
+ const handle = {
20
+ getSandboxId: () => "mock",
21
+ getVolumes: () => null,
22
+ getWorkdir: () => "/workspace",
23
+ exec,
24
+ upload: vi.fn(),
25
+ readFile: vi.fn(),
26
+ destroy: vi.fn(),
27
+ };
28
+ await expect(isBunnyAgentDaemonHealthy(handle, "http://127.0.0.1:3080/healthz", {
29
+ maxAttempts: 1,
30
+ delayMs: 0,
31
+ })).resolves.toBe(true);
32
+ const curlUrl = exec.mock.calls[0]?.[0]?.at(-1);
33
+ expect(curlUrl).toBe("http://127.0.0.1:3080/healthz");
34
+ });
35
+ it("returns true when curl prints 200", async () => {
36
+ const handle = mockHandle(async function* () {
37
+ yield new TextEncoder().encode("200");
38
+ });
39
+ await expect(isBunnyAgentDaemonHealthy(handle, "http://127.0.0.1:3080", {
40
+ maxAttempts: 1,
41
+ delayMs: 0,
42
+ })).resolves.toBe(true);
43
+ });
44
+ it("returns false for non-200 status code", async () => {
45
+ const handle = mockHandle(async function* () {
46
+ yield new TextEncoder().encode("503");
47
+ });
48
+ await expect(isBunnyAgentDaemonHealthy(handle, "http://127.0.0.1:3080", {
49
+ maxAttempts: 1,
50
+ delayMs: 0,
51
+ })).resolves.toBe(false);
52
+ });
53
+ it("returns false for HTTP 500", async () => {
54
+ const handle = mockHandle(async function* () {
55
+ yield new TextEncoder().encode("500");
56
+ });
57
+ await expect(isBunnyAgentDaemonHealthy(handle, "http://127.0.0.1:3080", {
58
+ maxAttempts: 1,
59
+ delayMs: 0,
60
+ })).resolves.toBe(false);
61
+ });
62
+ it("returns false when curl reports 000 (unreachable host / no TCP connection)", async () => {
63
+ const handle = mockHandle(async function* () {
64
+ yield new TextEncoder().encode("000");
65
+ });
66
+ await expect(isBunnyAgentDaemonHealthy(handle, "http://192.0.2.1:3080", {
67
+ maxAttempts: 1,
68
+ delayMs: 0,
69
+ })).resolves.toBe(false);
70
+ });
71
+ it("returns false when exec throws synchronously (e.g. curl binary missing)", async () => {
72
+ const handle = {
73
+ getSandboxId: () => "mock",
74
+ getVolumes: () => null,
75
+ getWorkdir: () => "/workspace",
76
+ exec: vi.fn(() => {
77
+ throw new Error("spawn curl ENOENT");
78
+ }),
79
+ upload: vi.fn(),
80
+ readFile: vi.fn(),
81
+ destroy: vi.fn(),
82
+ };
83
+ await expect(isBunnyAgentDaemonHealthy(handle, "http://127.0.0.1:3080", {
84
+ maxAttempts: 1,
85
+ delayMs: 0,
86
+ })).resolves.toBe(false);
87
+ });
88
+ it("returns false for empty stdout", async () => {
89
+ const handle = mockHandle(async function* () {
90
+ // no chunks
91
+ });
92
+ await expect(isBunnyAgentDaemonHealthy(handle, "http://127.0.0.1:3080", {
93
+ maxAttempts: 1,
94
+ delayMs: 0,
95
+ })).resolves.toBe(false);
96
+ });
97
+ it("returns false when iterator rejects on first chunk (e.g. curl runtime error)", async () => {
98
+ const handle = mockHandle(() => ({
99
+ [Symbol.asyncIterator]() {
100
+ return {
101
+ next() {
102
+ return Promise.reject(new Error("curl failed"));
103
+ },
104
+ };
105
+ },
106
+ }));
107
+ await expect(isBunnyAgentDaemonHealthy(handle, "http://127.0.0.1:3080", {
108
+ maxAttempts: 1,
109
+ delayMs: 0,
110
+ })).resolves.toBe(false);
111
+ });
112
+ });
113
+ //# sourceMappingURL=daemon-health.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-health.test.js","sourceRoot":"","sources":["../../src/__tests__/daemon-health.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=env.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/env.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,82 @@
1
+ import { afterEach, describe, expect, it } from "vitest";
2
+ import { buildRunnerEnv } from "../env.js";
3
+ describe("buildRunnerEnv", () => {
4
+ const originalEnv = { ...process.env };
5
+ afterEach(() => {
6
+ process.env = { ...originalEnv };
7
+ });
8
+ it("includes BRAVE_API_KEY from params", () => {
9
+ const env = buildRunnerEnv({ BRAVE_API_KEY: "bsk-123" });
10
+ expect(env.BRAVE_API_KEY).toBe("bsk-123");
11
+ });
12
+ it("includes TAVILY_API_KEY from params", () => {
13
+ const env = buildRunnerEnv({ TAVILY_API_KEY: "tvly-456" });
14
+ expect(env.TAVILY_API_KEY).toBe("tvly-456");
15
+ });
16
+ it("falls back to process.env for BRAVE_API_KEY", () => {
17
+ process.env.BRAVE_API_KEY = "env-brave";
18
+ const env = buildRunnerEnv({});
19
+ expect(env.BRAVE_API_KEY).toBe("env-brave");
20
+ });
21
+ it("falls back to process.env for TAVILY_API_KEY", () => {
22
+ process.env.TAVILY_API_KEY = "env-tavily";
23
+ const env = buildRunnerEnv({});
24
+ expect(env.TAVILY_API_KEY).toBe("env-tavily");
25
+ });
26
+ it("params override process.env for web search keys", () => {
27
+ process.env.BRAVE_API_KEY = "env-brave";
28
+ const env = buildRunnerEnv({ BRAVE_API_KEY: "param-brave" });
29
+ expect(env.BRAVE_API_KEY).toBe("param-brave");
30
+ });
31
+ it("omits web search keys when neither params nor process.env has them", () => {
32
+ delete process.env.BRAVE_API_KEY;
33
+ delete process.env.TAVILY_API_KEY;
34
+ const env = buildRunnerEnv({});
35
+ expect(env.BRAVE_API_KEY).toBeUndefined();
36
+ expect(env.TAVILY_API_KEY).toBeUndefined();
37
+ });
38
+ it("includes both web search keys alongside runner-specific keys", () => {
39
+ const env = buildRunnerEnv({
40
+ runnerType: "pi",
41
+ OPENAI_API_KEY: "sk-openai",
42
+ BRAVE_API_KEY: "bsk-brave",
43
+ TAVILY_API_KEY: "tvly-tavily",
44
+ });
45
+ expect(env.OPENAI_API_KEY).toBe("sk-openai");
46
+ expect(env.BRAVE_API_KEY).toBe("bsk-brave");
47
+ expect(env.TAVILY_API_KEY).toBe("tvly-tavily");
48
+ });
49
+ it("includes IMAGE_GENERATION_MODEL from params", () => {
50
+ const env = buildRunnerEnv({
51
+ IMAGE_GENERATION_MODEL: "openai:gpt-image-1",
52
+ });
53
+ expect(env.IMAGE_GENERATION_MODEL).toBe("openai:gpt-image-1");
54
+ });
55
+ it("falls back to process.env for IMAGE_GENERATION_MODEL", () => {
56
+ process.env.IMAGE_GENERATION_MODEL = "openai:dall-e-3";
57
+ const env = buildRunnerEnv({});
58
+ expect(env.IMAGE_GENERATION_MODEL).toBe("openai:dall-e-3");
59
+ });
60
+ it("params override process.env for IMAGE_GENERATION_MODEL", () => {
61
+ process.env.IMAGE_GENERATION_MODEL = "openai:dall-e-3";
62
+ const env = buildRunnerEnv({
63
+ IMAGE_GENERATION_MODEL: "openai:gpt-image-1",
64
+ });
65
+ expect(env.IMAGE_GENERATION_MODEL).toBe("openai:gpt-image-1");
66
+ });
67
+ it("omits IMAGE_GENERATION_MODEL when neither params nor process.env has it", () => {
68
+ delete process.env.IMAGE_GENERATION_MODEL;
69
+ const env = buildRunnerEnv({});
70
+ expect(env.IMAGE_GENERATION_MODEL).toBeUndefined();
71
+ });
72
+ it("includes IMAGE_GENERATION_MODEL alongside runner-specific keys", () => {
73
+ const env = buildRunnerEnv({
74
+ runnerType: "pi",
75
+ OPENAI_API_KEY: "sk-openai",
76
+ IMAGE_GENERATION_MODEL: "openai:gpt-image-1",
77
+ });
78
+ expect(env.OPENAI_API_KEY).toBe("sk-openai");
79
+ expect(env.IMAGE_GENERATION_MODEL).toBe("openai:gpt-image-1");
80
+ });
81
+ });
82
+ //# sourceMappingURL=env.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.test.js","sourceRoot":"","sources":["../../src/__tests__/env.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=local-sandbox.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-sandbox.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/local-sandbox.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,274 @@
1
+ import * as fs from "node:fs/promises";
2
+ import * as os from "node:os";
3
+ import * as path from "node:path";
4
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
5
+ import { LocalSandbox } from "../local-sandbox.js";
6
+ describe("LocalSandbox", () => {
7
+ let tempDir;
8
+ beforeEach(async () => {
9
+ // Create a temporary directory for testing
10
+ tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "local-sandbox-test-"));
11
+ });
12
+ afterEach(async () => {
13
+ // Clean up temporary directory
14
+ try {
15
+ await fs.rm(tempDir, { recursive: true, force: true });
16
+ }
17
+ catch (error) {
18
+ console.warn(`Failed to clean up temp dir: ${tempDir}`, error);
19
+ }
20
+ });
21
+ describe("constructor", () => {
22
+ it("should create an instance with default options", () => {
23
+ const sandbox = new LocalSandbox();
24
+ expect(sandbox).toBeInstanceOf(LocalSandbox);
25
+ });
26
+ it("should accept custom options", () => {
27
+ const sandbox = new LocalSandbox({
28
+ workdir: tempDir,
29
+ defaultTimeout: 30000,
30
+ });
31
+ expect(sandbox).toBeInstanceOf(LocalSandbox);
32
+ });
33
+ it("should use process.cwd() as default workdir", () => {
34
+ const sandbox = new LocalSandbox();
35
+ expect(sandbox).toBeInstanceOf(LocalSandbox);
36
+ });
37
+ });
38
+ describe("attach", () => {
39
+ it("should use workdir as working directory", async () => {
40
+ const sandbox = new LocalSandbox({
41
+ workdir: tempDir,
42
+ });
43
+ const handle = await sandbox.attach();
44
+ expect(handle).toBeDefined();
45
+ expect(handle.getWorkdir()).toBe(tempDir);
46
+ await handle.destroy();
47
+ });
48
+ it("should return a SandboxHandle", async () => {
49
+ const sandbox = new LocalSandbox({ workdir: tempDir });
50
+ const handle = await sandbox.attach();
51
+ expect(typeof handle.exec).toBe("function");
52
+ expect(typeof handle.upload).toBe("function");
53
+ expect(typeof handle.destroy).toBe("function");
54
+ await handle.destroy();
55
+ });
56
+ });
57
+ describe("SandboxHandle.exec", () => {
58
+ it("should execute a simple command", async () => {
59
+ const sandbox = new LocalSandbox({ workdir: tempDir });
60
+ const handle = await sandbox.attach();
61
+ const chunks = [];
62
+ for await (const chunk of handle.exec(["echo", "hello world"])) {
63
+ chunks.push(new TextDecoder().decode(chunk));
64
+ }
65
+ const output = chunks.join("");
66
+ expect(output.trim()).toBe("hello world");
67
+ await handle.destroy();
68
+ });
69
+ it("should execute commands in specified working directory", async () => {
70
+ const sandbox = new LocalSandbox({ workdir: tempDir });
71
+ const handle = await sandbox.attach();
72
+ // Create a subdirectory
73
+ const subDir = "subdir";
74
+ await handle.upload([], subDir); // Creates the directory
75
+ // Create a test file in the subdirectory
76
+ await handle.upload([{ path: "test.txt", content: "test content" }], subDir);
77
+ // List files in the subdirectory
78
+ const chunks = [];
79
+ for await (const chunk of handle.exec(["ls"], { cwd: subDir })) {
80
+ chunks.push(new TextDecoder().decode(chunk));
81
+ }
82
+ const output = chunks.join("");
83
+ expect(output).toContain("test.txt");
84
+ await handle.destroy();
85
+ });
86
+ it("should pass environment variables", async () => {
87
+ const sandbox = new LocalSandbox({ workdir: tempDir });
88
+ const handle = await sandbox.attach();
89
+ const chunks = [];
90
+ for await (const chunk of handle.exec(["sh", "-c", "echo $TEST_VAR"], {
91
+ env: { TEST_VAR: "test-value" },
92
+ })) {
93
+ chunks.push(new TextDecoder().decode(chunk));
94
+ }
95
+ const output = chunks.join("");
96
+ expect(output.trim()).toBe("test-value");
97
+ await handle.destroy();
98
+ });
99
+ it("should throw error for non-existent command", async () => {
100
+ const sandbox = new LocalSandbox({ workdir: tempDir });
101
+ const handle = await sandbox.attach();
102
+ await expect(async () => {
103
+ const chunks = [];
104
+ for await (const chunk of handle.exec([
105
+ "non-existent-command-xyz123",
106
+ ])) {
107
+ chunks.push(chunk);
108
+ }
109
+ }).rejects.toThrow();
110
+ await handle.destroy();
111
+ });
112
+ it("should throw error for empty command", async () => {
113
+ const sandbox = new LocalSandbox({ workdir: tempDir });
114
+ const handle = await sandbox.attach();
115
+ await expect(async () => {
116
+ const chunks = [];
117
+ for await (const chunk of handle.exec([])) {
118
+ chunks.push(chunk);
119
+ }
120
+ }).rejects.toThrow("Command cannot be empty");
121
+ await handle.destroy();
122
+ });
123
+ it("should handle command timeout", async () => {
124
+ const sandbox = new LocalSandbox({ workdir: tempDir });
125
+ const handle = await sandbox.attach();
126
+ await expect(async () => {
127
+ const chunks = [];
128
+ for await (const chunk of handle.exec(["sleep", "10"], {
129
+ timeout: 100, // 100ms timeout
130
+ })) {
131
+ chunks.push(chunk);
132
+ }
133
+ }).rejects.toThrow(/timed out/i);
134
+ await handle.destroy();
135
+ }, 10000); // Test timeout of 10 seconds
136
+ it("should support abort signal", async () => {
137
+ const sandbox = new LocalSandbox({ workdir: tempDir });
138
+ const handle = await sandbox.attach();
139
+ const abortController = new AbortController();
140
+ // Abort after 100ms
141
+ setTimeout(() => abortController.abort(), 100);
142
+ await expect(async () => {
143
+ const chunks = [];
144
+ for await (const chunk of handle.exec(["sleep", "10"], {
145
+ signal: abortController.signal,
146
+ })) {
147
+ chunks.push(chunk);
148
+ }
149
+ }).rejects.toThrow();
150
+ await handle.destroy();
151
+ }, 10000);
152
+ });
153
+ describe("SandboxHandle.upload", () => {
154
+ it("should upload a single file", async () => {
155
+ const sandbox = new LocalSandbox({ workdir: tempDir });
156
+ const handle = await sandbox.attach();
157
+ await handle.upload([{ path: "test.txt", content: "Hello, World!" }], ".");
158
+ // Verify the file was created
159
+ const filePath = path.join(tempDir, "test.txt");
160
+ const content = await fs.readFile(filePath, "utf-8");
161
+ expect(content).toBe("Hello, World!");
162
+ await handle.destroy();
163
+ });
164
+ it("should upload multiple files", async () => {
165
+ const sandbox = new LocalSandbox({ workdir: tempDir });
166
+ const handle = await sandbox.attach();
167
+ await handle.upload([
168
+ { path: "file1.txt", content: "Content 1" },
169
+ { path: "file2.txt", content: "Content 2" },
170
+ { path: "file3.txt", content: "Content 3" },
171
+ ], "uploads");
172
+ // Verify all files were created
173
+ const uploadsDir = path.join(tempDir, "uploads");
174
+ const files = await fs.readdir(uploadsDir);
175
+ expect(files).toContain("file1.txt");
176
+ expect(files).toContain("file2.txt");
177
+ expect(files).toContain("file3.txt");
178
+ await handle.destroy();
179
+ });
180
+ it("should upload binary content", async () => {
181
+ const sandbox = new LocalSandbox({ workdir: tempDir });
182
+ const handle = await sandbox.attach();
183
+ const binaryData = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f]); // "Hello"
184
+ await handle.upload([{ path: "binary.dat", content: binaryData }], ".");
185
+ // Verify the binary file
186
+ const filePath = path.join(tempDir, "binary.dat");
187
+ const content = await fs.readFile(filePath);
188
+ expect(content).toEqual(Buffer.from(binaryData));
189
+ await handle.destroy();
190
+ });
191
+ it("should create nested directories", async () => {
192
+ const sandbox = new LocalSandbox({ workdir: tempDir });
193
+ const handle = await sandbox.attach();
194
+ await handle.upload([{ path: "deep/nested/dir/file.txt", content: "Nested content" }], ".");
195
+ // Verify nested file
196
+ const filePath = path.join(tempDir, "deep/nested/dir/file.txt");
197
+ const content = await fs.readFile(filePath, "utf-8");
198
+ expect(content).toBe("Nested content");
199
+ await handle.destroy();
200
+ });
201
+ it("should upload to custom target directory", async () => {
202
+ const sandbox = new LocalSandbox({ workdir: tempDir });
203
+ const handle = await sandbox.attach();
204
+ await handle.upload([{ path: "file.txt", content: "Custom target" }], "custom/target");
205
+ // Verify file in custom location
206
+ const filePath = path.join(tempDir, "custom/target/file.txt");
207
+ const content = await fs.readFile(filePath, "utf-8");
208
+ expect(content).toBe("Custom target");
209
+ await handle.destroy();
210
+ });
211
+ });
212
+ describe("SandboxHandle.destroy", () => {
213
+ it("should complete successfully", async () => {
214
+ const sandbox = new LocalSandbox({ workdir: tempDir });
215
+ const handle = await sandbox.attach();
216
+ await expect(handle.destroy()).resolves.toBeUndefined();
217
+ });
218
+ it("should not delete the working directory by default", async () => {
219
+ const sandbox = new LocalSandbox({ workdir: tempDir });
220
+ const handle = await sandbox.attach();
221
+ await handle.upload([{ path: "file.txt", content: "Test" }], ".");
222
+ await handle.destroy();
223
+ // Directory should still exist
224
+ const stat = await fs.stat(tempDir);
225
+ expect(stat.isDirectory()).toBe(true);
226
+ // File should still exist
227
+ const filePath = path.join(tempDir, "file.txt");
228
+ const fileStat = await fs.stat(filePath);
229
+ expect(fileStat.isFile()).toBe(true);
230
+ });
231
+ });
232
+ describe("Integration tests", () => {
233
+ it("should support a complete workflow", async () => {
234
+ const sandbox = new LocalSandbox({ workdir: tempDir });
235
+ const handle = await sandbox.attach();
236
+ // Upload a Python script
237
+ await handle.upload([
238
+ {
239
+ path: "script.py",
240
+ content: 'print("Hello from Python!")\nprint("Line 2")',
241
+ },
242
+ ], ".");
243
+ // Execute the script
244
+ const chunks = [];
245
+ for await (const chunk of handle.exec(["python3", "script.py"])) {
246
+ chunks.push(new TextDecoder().decode(chunk));
247
+ }
248
+ const output = chunks.join("");
249
+ expect(output).toContain("Hello from Python!");
250
+ expect(output).toContain("Line 2");
251
+ await handle.destroy();
252
+ });
253
+ it("should handle multiple sequential commands", async () => {
254
+ const sandbox = new LocalSandbox({ workdir: tempDir });
255
+ const handle = await sandbox.attach();
256
+ // Create a file
257
+ await handle.upload([{ path: "data.txt", content: "test data" }], ".");
258
+ // Read the file with cat
259
+ const chunks1 = [];
260
+ for await (const chunk of handle.exec(["cat", "data.txt"])) {
261
+ chunks1.push(new TextDecoder().decode(chunk));
262
+ }
263
+ expect(chunks1.join("")).toContain("test data");
264
+ // List files
265
+ const chunks2 = [];
266
+ for await (const chunk of handle.exec(["ls", "-la"])) {
267
+ chunks2.push(new TextDecoder().decode(chunk));
268
+ }
269
+ expect(chunks2.join("")).toContain("data.txt");
270
+ await handle.destroy();
271
+ });
272
+ });
273
+ });
274
+ //# sourceMappingURL=local-sandbox.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-sandbox.test.js","sourceRoot":"","sources":["../../src/__tests__/local-sandbox.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,2CAA2C;QAC3C,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,+BAA+B;QAC/B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,gCAAgC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC;gBAC/B,OAAO,EAAE,OAAO;gBAChB,cAAc,EAAE,KAAK;aACtB,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC;gBAC/B,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE1C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE/C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;gBAC/D,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE1C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,wBAAwB;YACxB,MAAM,MAAM,GAAG,QAAQ,CAAC;YACxB,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,wBAAwB;YAEzD,yCAAyC;YACzC,MAAM,MAAM,CAAC,MAAM,CACjB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,EAC/C,MAAM,CACP,CAAC;YAEF,iCAAiC;YACjC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBAC/D,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAErC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE;gBACpE,GAAG,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE;aAChC,CAAC,EAAE,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEzC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;gBACtB,MAAM,MAAM,GAAG,EAAE,CAAC;gBAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC;oBACpC,6BAA6B;iBAC9B,CAAC,EAAE,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAErB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;gBACtB,MAAM,MAAM,GAAG,EAAE,CAAC;gBAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;YAE9C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;gBACtB,MAAM,MAAM,GAAG,EAAE,CAAC;gBAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;oBACrD,OAAO,EAAE,GAAG,EAAE,gBAAgB;iBAC/B,CAAC,EAAE,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAEjC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,6BAA6B;QAExC,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;YAE9C,oBAAoB;YACpB,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;YAE/C,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;gBACtB,MAAM,MAAM,GAAG,EAAE,CAAC;gBAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;oBACrD,MAAM,EAAE,eAAe,CAAC,MAAM;iBAC/B,CAAC,EAAE,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAErB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,CAAC,MAAM,CACjB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,EAChD,GAAG,CACJ,CAAC;YAEF,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEtC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,CAAC,MAAM,CACjB;gBACE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE;gBAC3C,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE;gBAC3C,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE;aAC5C,EACD,SAAS,CACV,CAAC;YAEF,gCAAgC;YAChC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAErC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU;YAE7E,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAExE,yBAAyB;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAEjD,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,CAAC,MAAM,CACjB,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,EACjE,GAAG,CACJ,CAAC;YAEF,qBAAqB;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEvC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,CAAC,MAAM,CACjB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,EAChD,eAAe,CAChB,CAAC;YAEF,iCAAiC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEtC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAClE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YAEvB,+BAA+B;YAC/B,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,yBAAyB;YACzB,MAAM,MAAM,CAAC,MAAM,CACjB;gBACE;oBACE,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,8CAA8C;iBACxD;aACF,EACD,GAAG,CACJ,CAAC;YAEF,qBAAqB;YACrB,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAEnC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAEtC,gBAAgB;YAChB,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAEvE,yBAAyB;YACzB,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAEhD,aAAa;YACb,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAE/C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signal-integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/signal-integration.test.ts"],"names":[],"mappings":""}