@robota-sdk/agent-cli 3.0.0-beta.10 → 3.0.0-beta.100

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 (156) hide show
  1. package/CHANGELOG.md +2998 -0
  2. package/LICENSE +661 -21
  3. package/README.md +527 -170
  4. package/bin/agent.cjs +39 -0
  5. package/dist/node/artifact-DrPhOb_v.d.ts +749 -0
  6. package/dist/node/artifact-DrPhOb_v.d.ts.map +1 -0
  7. package/dist/node/bin.js +35 -19
  8. package/dist/node/bounded-output-BdWv9SX3-28em7iHq.js +2 -0
  9. package/dist/node/bounded-output-BdWv9SX3-28em7iHq.js.map +1 -0
  10. package/dist/node/bounded-output-BdWv9SX3-C4ucXwLR.js +2 -0
  11. package/dist/node/cli-core-QK7sBRp8.js +2920 -0
  12. package/dist/node/command-executor-D_UBZHxh-CVZipoOV.js +2 -0
  13. package/dist/node/command-executor-D_UBZHxh-CVZipoOV.js.map +1 -0
  14. package/dist/node/command-executor-D_UBZHxh-D7UrdAlN.js +2 -0
  15. package/dist/node/desktop-host.d.ts +53 -0
  16. package/dist/node/desktop-host.d.ts.map +1 -0
  17. package/dist/node/desktop-host.js +2 -0
  18. package/dist/node/desktop-host.js.map +1 -0
  19. package/dist/node/headless.js +4 -0
  20. package/dist/node/host.d.ts +3 -0
  21. package/dist/node/host.js +1 -0
  22. package/dist/node/http-executor-ADn4locH-D-8crzF8.js +2 -0
  23. package/dist/node/http-executor-ADn4locH-D-8crzF8.js.map +1 -0
  24. package/dist/node/http-executor-ADn4locH-uz5KV6N-.js +2 -0
  25. package/dist/node/index.d.ts +790 -49
  26. package/dist/node/index.d.ts.map +1 -0
  27. package/dist/node/index.js +6 -13
  28. package/dist/node/index.js.map +1 -0
  29. package/dist/node/node-BRvqhy29.js +165 -0
  30. package/dist/node/node-BRvqhy29.js.map +1 -0
  31. package/dist/node/node-BTKWbzr0.js +15 -0
  32. package/dist/node/node-BZfTvzcV.js +15 -0
  33. package/dist/node/node-BZfTvzcV.js.map +1 -0
  34. package/dist/node/node-CdgadDFa.js +2 -0
  35. package/dist/node/node-CdgadDFa.js.map +1 -0
  36. package/dist/node/node-aM3G__lp.js +2 -0
  37. package/dist/node/node-zABT8WBL.js +165 -0
  38. package/dist/node/product-host-CwqVX6Xg.js +2954 -0
  39. package/dist/node/product-host-CwqVX6Xg.js.map +1 -0
  40. package/dist/node/product-host-DYR8lHfh.d.ts +4691 -0
  41. package/dist/node/product-host-DYR8lHfh.d.ts.map +1 -0
  42. package/dist/node/rolldown-runtime-C9xYM0wc.js +1 -0
  43. package/dist/node/rolldown-runtime-DK3Fl9T5-BeX3Bzvn.js +2 -0
  44. package/dist/node/rolldown-runtime-DK3Fl9T5-DK3Fl9T5.js +2 -0
  45. package/dist/node/rolldown-runtime-DK3Fl9T5-DK3Fl9T5.js.map +1 -0
  46. package/dist/node/rolldown-runtime-rs7quPpn.js +2 -0
  47. package/dist/node/verdict-decoder-Dz_rjoIZ-DA8BKB83.js +2 -0
  48. package/dist/node/verdict-decoder-Dz_rjoIZ-DA8BKB83.js.map +1 -0
  49. package/dist/node/verdict-decoder-Dz_rjoIZ-qM0jJVsB.js +2 -0
  50. package/dist/web/app-sandbox.html +145 -0
  51. package/dist/web/assets/PretendardVariable.subset.0-BHUkWNFR.woff2 +0 -0
  52. package/dist/web/assets/PretendardVariable.subset.1-C-__qv6_.woff2 +0 -0
  53. package/dist/web/assets/PretendardVariable.subset.10-DzSWztS8.woff2 +0 -0
  54. package/dist/web/assets/PretendardVariable.subset.11-CqVmlKJn.woff2 +0 -0
  55. package/dist/web/assets/PretendardVariable.subset.12-BHuZSgT0.woff2 +0 -0
  56. package/dist/web/assets/PretendardVariable.subset.13-C42mj_j2.woff2 +0 -0
  57. package/dist/web/assets/PretendardVariable.subset.14-Bl512uUX.woff2 +0 -0
  58. package/dist/web/assets/PretendardVariable.subset.15-D04iXIE3.woff2 +0 -0
  59. package/dist/web/assets/PretendardVariable.subset.16-BQUnS2GX.woff2 +0 -0
  60. package/dist/web/assets/PretendardVariable.subset.17-BfZSA-Xc.woff2 +0 -0
  61. package/dist/web/assets/PretendardVariable.subset.18-CwAxMC3C.woff2 +0 -0
  62. package/dist/web/assets/PretendardVariable.subset.19-CJu4Zcdo.woff2 +0 -0
  63. package/dist/web/assets/PretendardVariable.subset.2-dCZkyKLw.woff2 +0 -0
  64. package/dist/web/assets/PretendardVariable.subset.20-Ig1-z3n5.woff2 +0 -0
  65. package/dist/web/assets/PretendardVariable.subset.21-yKPEdLXC.woff2 +0 -0
  66. package/dist/web/assets/PretendardVariable.subset.22-CSqxKoOs.woff2 +0 -0
  67. package/dist/web/assets/PretendardVariable.subset.23-DK80wi0t.woff2 +0 -0
  68. package/dist/web/assets/PretendardVariable.subset.24-CmkE8Q8D.woff2 +0 -0
  69. package/dist/web/assets/PretendardVariable.subset.25-CsoWBIZB.woff2 +0 -0
  70. package/dist/web/assets/PretendardVariable.subset.26-Sozl8dw8.woff2 +0 -0
  71. package/dist/web/assets/PretendardVariable.subset.27-CT6nuW9L.woff2 +0 -0
  72. package/dist/web/assets/PretendardVariable.subset.28-CpO0Y96p.woff2 +0 -0
  73. package/dist/web/assets/PretendardVariable.subset.29-D6hjrUWm.woff2 +0 -0
  74. package/dist/web/assets/PretendardVariable.subset.3-Dqw33sf4.woff2 +0 -0
  75. package/dist/web/assets/PretendardVariable.subset.30-CWDM1c0J.woff2 +0 -0
  76. package/dist/web/assets/PretendardVariable.subset.31-CdmyZ5mm.woff2 +0 -0
  77. package/dist/web/assets/PretendardVariable.subset.32-CGnFWD2i.woff2 +0 -0
  78. package/dist/web/assets/PretendardVariable.subset.33--0OT__YQ.woff2 +0 -0
  79. package/dist/web/assets/PretendardVariable.subset.34-CaCS33Md.woff2 +0 -0
  80. package/dist/web/assets/PretendardVariable.subset.35-DWFYRGLp.woff2 +0 -0
  81. package/dist/web/assets/PretendardVariable.subset.36-Dn5IBRQB.woff2 +0 -0
  82. package/dist/web/assets/PretendardVariable.subset.37-BD6FyOtY.woff2 +0 -0
  83. package/dist/web/assets/PretendardVariable.subset.38-D4hu443z.woff2 +0 -0
  84. package/dist/web/assets/PretendardVariable.subset.39-B_7wfth9.woff2 +0 -0
  85. package/dist/web/assets/PretendardVariable.subset.4-Bvh2YGoc.woff2 +0 -0
  86. package/dist/web/assets/PretendardVariable.subset.40-BDaOfdUe.woff2 +0 -0
  87. package/dist/web/assets/PretendardVariable.subset.41-BUACvzZC.woff2 +0 -0
  88. package/dist/web/assets/PretendardVariable.subset.42-Dp-5mnyL.woff2 +0 -0
  89. package/dist/web/assets/PretendardVariable.subset.43-DHdpry7N.woff2 +0 -0
  90. package/dist/web/assets/PretendardVariable.subset.44-qHopVhdd.woff2 +0 -0
  91. package/dist/web/assets/PretendardVariable.subset.45-BniyRFfm.woff2 +0 -0
  92. package/dist/web/assets/PretendardVariable.subset.46-BMRq7xC-.woff2 +0 -0
  93. package/dist/web/assets/PretendardVariable.subset.47-B-cWO2pw.woff2 +0 -0
  94. package/dist/web/assets/PretendardVariable.subset.48-Ct-fWrPO.woff2 +0 -0
  95. package/dist/web/assets/PretendardVariable.subset.49-BblQVys9.woff2 +0 -0
  96. package/dist/web/assets/PretendardVariable.subset.5-K_MNGNCe.woff2 +0 -0
  97. package/dist/web/assets/PretendardVariable.subset.50-C8IyFH7L.woff2 +0 -0
  98. package/dist/web/assets/PretendardVariable.subset.51-Bxd0gTAs.woff2 +0 -0
  99. package/dist/web/assets/PretendardVariable.subset.52-CNgqKOOJ.woff2 +0 -0
  100. package/dist/web/assets/PretendardVariable.subset.53-BSRnyb-u.woff2 +0 -0
  101. package/dist/web/assets/PretendardVariable.subset.54-Dt2-cQkx.woff2 +0 -0
  102. package/dist/web/assets/PretendardVariable.subset.55-jFgflYjX.woff2 +0 -0
  103. package/dist/web/assets/PretendardVariable.subset.56-BwZdvJZQ.woff2 +0 -0
  104. package/dist/web/assets/PretendardVariable.subset.57-BwFDg-Fs.woff2 +0 -0
  105. package/dist/web/assets/PretendardVariable.subset.58-DlucQts_.woff2 +0 -0
  106. package/dist/web/assets/PretendardVariable.subset.59-CMkWjhdo.woff2 +0 -0
  107. package/dist/web/assets/PretendardVariable.subset.6-Bxhohlcm.woff2 +0 -0
  108. package/dist/web/assets/PretendardVariable.subset.60-CeHezjjf.woff2 +0 -0
  109. package/dist/web/assets/PretendardVariable.subset.61-PUuTnod4.woff2 +0 -0
  110. package/dist/web/assets/PretendardVariable.subset.62-DGSAWCfb.woff2 +0 -0
  111. package/dist/web/assets/PretendardVariable.subset.63-B35xsm4O.woff2 +0 -0
  112. package/dist/web/assets/PretendardVariable.subset.64-CTbrgYF9.woff2 +0 -0
  113. package/dist/web/assets/PretendardVariable.subset.65-B66rjuyf.woff2 +0 -0
  114. package/dist/web/assets/PretendardVariable.subset.66-C3HqaDeY.woff2 +0 -0
  115. package/dist/web/assets/PretendardVariable.subset.67-BmuXdlDy.woff2 +0 -0
  116. package/dist/web/assets/PretendardVariable.subset.68-DS9B48d0.woff2 +0 -0
  117. package/dist/web/assets/PretendardVariable.subset.69-YT16ymcp.woff2 +0 -0
  118. package/dist/web/assets/PretendardVariable.subset.7-E2HaA55t.woff2 +0 -0
  119. package/dist/web/assets/PretendardVariable.subset.70-BUXiAGMT.woff2 +0 -0
  120. package/dist/web/assets/PretendardVariable.subset.71-DuPZj8us.woff2 +0 -0
  121. package/dist/web/assets/PretendardVariable.subset.72-pYYGrEQR.woff2 +0 -0
  122. package/dist/web/assets/PretendardVariable.subset.73-DMrK970F.woff2 +0 -0
  123. package/dist/web/assets/PretendardVariable.subset.74-D4tQnymK.woff2 +0 -0
  124. package/dist/web/assets/PretendardVariable.subset.75-CxKdrRNf.woff2 +0 -0
  125. package/dist/web/assets/PretendardVariable.subset.76-DhPm2b_q.woff2 +0 -0
  126. package/dist/web/assets/PretendardVariable.subset.77-DwaxqOC8.woff2 +0 -0
  127. package/dist/web/assets/PretendardVariable.subset.78-DhqRbBzT.woff2 +0 -0
  128. package/dist/web/assets/PretendardVariable.subset.79-XpoyPP38.woff2 +0 -0
  129. package/dist/web/assets/PretendardVariable.subset.8-CRbJhhyA.woff2 +0 -0
  130. package/dist/web/assets/PretendardVariable.subset.80-DsV9Qp_h.woff2 +0 -0
  131. package/dist/web/assets/PretendardVariable.subset.81-BZzF9Hb3.woff2 +0 -0
  132. package/dist/web/assets/PretendardVariable.subset.82-BgAHe30u.woff2 +0 -0
  133. package/dist/web/assets/PretendardVariable.subset.83-DF-zBLLe.woff2 +0 -0
  134. package/dist/web/assets/PretendardVariable.subset.84-Brb8EsYQ.woff2 +0 -0
  135. package/dist/web/assets/PretendardVariable.subset.85-Byo_x2hf.woff2 +0 -0
  136. package/dist/web/assets/PretendardVariable.subset.86-XG7lTN_6.woff2 +0 -0
  137. package/dist/web/assets/PretendardVariable.subset.87-Lzui2vbK.woff2 +0 -0
  138. package/dist/web/assets/PretendardVariable.subset.88-CqX6JSgh.woff2 +0 -0
  139. package/dist/web/assets/PretendardVariable.subset.89-DOzqWPpX.woff2 +0 -0
  140. package/dist/web/assets/PretendardVariable.subset.9-Btb3bmS6.woff2 +0 -0
  141. package/dist/web/assets/PretendardVariable.subset.90-BF7RiZjm.woff2 +0 -0
  142. package/dist/web/assets/PretendardVariable.subset.91-Csm0YNoH.woff2 +0 -0
  143. package/dist/web/assets/index-2GhVGsHN.js +314 -0
  144. package/dist/web/assets/index-BSxTg2Py.css +1 -0
  145. package/dist/web/index.html +15 -0
  146. package/package.json +203 -34
  147. package/scripts/koffi-bun-plugin.mjs +116 -0
  148. package/scripts/native-build.d.mts +19 -0
  149. package/scripts/native-build.mjs +72 -0
  150. package/scripts/qualify-koffi-gc.mjs +28 -0
  151. package/dist/node/bin.cjs +0 -1368
  152. package/dist/node/bin.d.cts +0 -1
  153. package/dist/node/bin.d.ts +0 -1
  154. package/dist/node/chunk-UT4RQDTI.js +0 -1337
  155. package/dist/node/index.cjs +0 -1375
  156. package/dist/node/index.d.cts +0 -49
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-C9xYM0wc.js";import{r as t,s as n,w as r}from"./bounded-output-BdWv9SX3-28em7iHq.js";import{t as i}from"./rolldown-runtime-DK3Fl9T5-DK3Fl9T5.js";import{spawn as a}from"node:child_process";var o=e({n:()=>s,t:()=>d}),s=i({CommandExecutor:()=>d});const c=1e6;function l(e,n){let r=t({maxBytes:c}),i=t({maxBytes:c,retain:`tail`});return e.stdout?.on(`data`,e=>r.append(e)),e.stderr?.on(`data`,e=>i.append(e)),e.stdin?.on(`error`,()=>{}),e.stdin?.write(n),e.stdin?.end(),{stdoutOutput:r,stderrOutput:i}}function u(e,t,n,r){if(e===0)return{outcome:`allow`,source:`command`,stdout:n};if(e===2)return{outcome:`deny`,source:`command`,reason:r.trim()||`Blocked by hook`};let i=r.trim()?`: ${r.trim()}`:``;return{outcome:`error`,source:`command`,kind:`nonzero-exit`,reason:e===null?`Hook terminated by signal ${t??`unknown`}${i}`:`Hook exited ${e}${i}`}}var d=class{shellExecutable;type=`command`;constructor(e){this.shellExecutable=e}execute(e,t,i){let o=e.timeout??600,s=o*1e3,c=JSON.stringify(t);return new Promise(d=>{let f=!1,p=r({executable:this.shellExecutable}),m=a(p.command,p.commandArgs(e.command),{cwd:t.cwd,env:n(process.env,i,t.env)}),{stdoutOutput:h,stderrOutput:g}=l(m,c),_=setTimeout(()=>{f||(f=!0,m.kill(`SIGTERM`),d({outcome:`error`,source:`command`,kind:`timeout`,reason:`Hook timed out after ${o}s`}))},s);m.on(`close`,(e,t)=>{f||(f=!0,clearTimeout(_),d(u(e,t,h.toString(),g.toString())))}),m.on(`error`,e=>{f||(f=!0,clearTimeout(_),d({outcome:`error`,source:`command`,kind:`spawn-failure`,reason:e.message}))})})}};export{d as n,o as t};
2
+ //# sourceMappingURL=command-executor-D_UBZHxh-CVZipoOV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-executor-D_UBZHxh-CVZipoOV.js","names":["e","r","t","i","n"],"sources":["../../../agent-core/dist/node/command-executor-D_UBZHxh.js"],"sourcesContent":["import{t as e}from\"./rolldown-runtime-DK3Fl9T5.js\";import{f as t,s as n,t as r}from\"./bounded-output-BdWv9SX3.js\";import{spawn as i}from\"node:child_process\";var a=e({CommandExecutor:()=>l});const o=1e6;function s(e,t){let n=r({maxBytes:o}),i=r({maxBytes:o,retain:`tail`});return e.stdout?.on(`data`,e=>n.append(e)),e.stderr?.on(`data`,e=>i.append(e)),e.stdin?.on(`error`,()=>{}),e.stdin?.write(t),e.stdin?.end(),{stdoutOutput:n,stderrOutput:i}}function c(e,t,n,r){if(e===0)return{outcome:`allow`,source:`command`,stdout:n};if(e===2)return{outcome:`deny`,source:`command`,reason:r.trim()||`Blocked by hook`};let i=r.trim()?`: ${r.trim()}`:``;return{outcome:`error`,source:`command`,kind:`nonzero-exit`,reason:e===null?`Hook terminated by signal ${t??`unknown`}${i}`:`Hook exited ${e}${i}`}}var l=class{shellExecutable;type=`command`;constructor(e){this.shellExecutable=e}execute(e,r,a){let o=e.timeout??600,l=o*1e3,u=JSON.stringify(r);return new Promise(d=>{let f=!1,p=t({executable:this.shellExecutable}),m=i(p.command,p.commandArgs(e.command),{cwd:r.cwd,env:n(process.env,a,r.env)}),{stdoutOutput:h,stderrOutput:g}=s(m,u),_=setTimeout(()=>{f||(f=!0,m.kill(`SIGTERM`),d({outcome:`error`,source:`command`,kind:`timeout`,reason:`Hook timed out after ${o}s`}))},l);m.on(`close`,(e,t)=>{f||(f=!0,clearTimeout(_),d(c(e,t,h.toString(),g.toString())))}),m.on(`error`,e=>{f||(f=!0,clearTimeout(_),d({outcome:`error`,source:`command`,kind:`spawn-failure`,reason:e.message}))})})}};export{a as n,l as t};\n//# sourceMappingURL=command-executor-D_UBZHxh.js.map"],"mappings":"6PAAiK,EAAEA,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,EAAE,EAAE,CAAC,IAAI,EAAEC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAEA,EAAE,CAAC,SAAS,EAAE,OAAO,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,GAAG,YAAY,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,CAAC,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,QAAQ,QAAQ,OAAO,UAAU,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,QAAQ,OAAO,OAAO,UAAU,OAAO,EAAE,KAAK,GAAG,iBAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,MAAM,CAAC,QAAQ,QAAQ,OAAO,UAAU,KAAK,eAAe,OAAO,IAAI,KAAK,6BAA6B,GAAG,YAAY,IAAI,eAAe,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,KAAK,UAAU,YAAY,EAAE,CAAC,KAAK,gBAAgB,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,UAAU,CAAC,EAAE,OAAO,IAAI,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAEC,EAAE,CAAC,WAAW,KAAK,eAAe,CAAC,EAAE,EAAEC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,IAAIC,EAAE,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,CAAC,QAAQ,QAAQ,OAAO,UAAU,KAAK,UAAU,OAAO,wBAAwB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,QAAQ,QAAQ,OAAO,UAAU,KAAK,gBAAgB,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ ;(function(){var v=parseInt(process.versions.node.split('.')[0],10);if(v<22){process.stderr.write('\n✗ Node.js 22+ is required (current: '+process.version+')\n\nUpgrade:\n nvm: nvm install 22 && nvm use 22\n Volta: volta install node@22\n Download: https://nodejs.org/en/download\n\n');process.exit(1);}})();
2
+ import{n as e}from"./rolldown-runtime-rs7quPpn.js";import{r as t,s as n,w as r}from"./bounded-output-BdWv9SX3-C4ucXwLR.js";import{t as i}from"./rolldown-runtime-DK3Fl9T5-BeX3Bzvn.js";import{spawn as a}from"node:child_process";var o=e({n:()=>s,t:()=>d}),s=i({CommandExecutor:()=>d});const c=1e6;function l(e,n){let r=t({maxBytes:c}),i=t({maxBytes:c,retain:`tail`});return e.stdout?.on(`data`,e=>r.append(e)),e.stderr?.on(`data`,e=>i.append(e)),e.stdin?.on(`error`,()=>{}),e.stdin?.write(n),e.stdin?.end(),{stdoutOutput:r,stderrOutput:i}}function u(e,t,n,r){if(e===0)return{outcome:`allow`,source:`command`,stdout:n};if(e===2)return{outcome:`deny`,source:`command`,reason:r.trim()||`Blocked by hook`};let i=r.trim()?`: ${r.trim()}`:``;return{outcome:`error`,source:`command`,kind:`nonzero-exit`,reason:e===null?`Hook terminated by signal ${t??`unknown`}${i}`:`Hook exited ${e}${i}`}}var d=class{shellExecutable;type=`command`;constructor(e){this.shellExecutable=e}execute(e,t,i){let o=e.timeout??600,s=o*1e3,c=JSON.stringify(t);return new Promise(d=>{let f=!1,p=r({executable:this.shellExecutable}),m=a(p.command,p.commandArgs(e.command),{cwd:t.cwd,env:n(process.env,i,t.env)}),{stdoutOutput:h,stderrOutput:g}=l(m,c),_=setTimeout(()=>{f||(f=!0,m.kill(`SIGTERM`),d({outcome:`error`,source:`command`,kind:`timeout`,reason:`Hook timed out after ${o}s`}))},s);m.on(`close`,(e,t)=>{f||(f=!0,clearTimeout(_),d(u(e,t,h.toString(),g.toString())))}),m.on(`error`,e=>{f||(f=!0,clearTimeout(_),d({outcome:`error`,source:`command`,kind:`spawn-failure`,reason:e.message}))})})}};export{d as n,o as t};
@@ -0,0 +1,53 @@
1
+ import { i as TConfigEnvironment, r as IProductConfig, t as IProductCliArtifact } from "./artifact-DrPhOb_v.js";
2
+ //#region src/desktop-host.d.ts
3
+ interface IDesktopCliResult {
4
+ readonly exitCode: number | null;
5
+ readonly stdout: string;
6
+ readonly stderr: string;
7
+ }
8
+ interface IDesktopTrustQuestion {
9
+ readonly folder: string;
10
+ readonly loads: readonly string[];
11
+ }
12
+ type TDesktopTrustChoice = 'trust' | 'restricted' | 'quit';
13
+ interface IDesktopDaemonEndpoint {
14
+ readonly id: string;
15
+ readonly url: string;
16
+ readonly port: number;
17
+ }
18
+ type TDesktopAttachment = {
19
+ readonly ok: true;
20
+ readonly endpoint: IDesktopDaemonEndpoint;
21
+ } | {
22
+ readonly ok: false;
23
+ readonly detail: string;
24
+ };
25
+ interface IDesktopCliControllerOptions {
26
+ readonly artifact: IProductCliArtifact;
27
+ /** Snapshot supplied by the Electron main process; product aliases are scoped to the artifact. */
28
+ readonly environment: TConfigEnvironment;
29
+ /** The consumer wrapper runs its own packaged CLI executable with these args and curated env. */
30
+ readonly execute: (args: readonly string[], environment: Readonly<Record<string, string>>) => Promise<IDesktopCliResult>;
31
+ /** Main process displays a native trust prompt; no daemon starts until it resolves. */
32
+ readonly chooseTrust: (question: IDesktopTrustQuestion) => Promise<TDesktopTrustChoice>;
33
+ }
34
+ declare function parseDesktopTrustStatus(stdout: string): {
35
+ readonly trusted: boolean;
36
+ readonly question?: IDesktopTrustQuestion;
37
+ readonly providerEnvRefs: readonly string[];
38
+ } | undefined;
39
+ declare function parseDesktopDaemonStart(stdout: string): IDesktopDaemonEndpoint | undefined;
40
+ declare function desktopContentSecurityPolicy(port: number | undefined): string;
41
+ /** One attachment owner for initial launch and reconnect. The CLI daemon outlives this controller. */
42
+ declare function createDesktopCliController(options: IDesktopCliControllerOptions): Readonly<{
43
+ config: IProductConfig;
44
+ userDataPath: string;
45
+ start: () => Promise<TDesktopAttachment>;
46
+ reconnect: () => Promise<TDesktopAttachment>;
47
+ current: () => Promise<TDesktopAttachment> | null;
48
+ port: () => number | undefined;
49
+ csp: () => string;
50
+ }>;
51
+ //#endregion
52
+ export { IDesktopCliControllerOptions, IDesktopCliResult, IDesktopDaemonEndpoint, IDesktopTrustQuestion, TDesktopAttachment, TDesktopTrustChoice, createDesktopCliController, desktopContentSecurityPolicy, parseDesktopDaemonStart, parseDesktopTrustStatus };
53
+ //# sourceMappingURL=desktop-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop-host.d.ts","names":[],"sources":["../../src/desktop-host.ts"],"mappings":";;UASiB;WACN;WACA;WACA;;UAEM;WACN;WACA;;KAEC;UACK;WACN;WACA;WACA;;KAEC;WACG;WAAmB,UAAU;;WAC7B;WAAoB;;UAElB;WACN,UAAU;;WAEV,aAAa;;WAEb,UAAU,yBAAyB,aAAa,SAAS,4BAA4B,QAAQ;;WAE7F,cAAc,UAAU,0BAA0B,QAAQ;;iBAsBrD,wBAAwB;WAC7B;WACA,WAAW;WACX;;iBAkBK,wBAAwB,iBAAiB;iBAUzC,6BAA6B;;iBAM7B,2BAA2B,SAAS,+BAA4B;UAA5B;;EAuDhC,aAAA,QAAQ;EAAR,iBAAA,QAAQ;EAoBX,eAAA,QAAQ;EACX;EACD"}
@@ -0,0 +1,2 @@
1
+ import{D as e,O as t,k as n,t as r}from"./product-host-CwqVX6Xg.js";import{join as i}from"node:path";const a=[`PATH`,`HOME`,`USERPROFILE`,`SystemRoot`,`TEMP`,`TMP`,`LANG`,`LC_ALL`,`XDG_RUNTIME_DIR`,`DISPLAY`,`WAYLAND_DISPLAY`,`XAUTHORITY`,`DBUS_SESSION_BUS_ADDRESS`,`APPDATA`,`LOCALAPPDATA`,`PROGRAMDATA`],o=/^ws:\/\/127\.0\.0\.1:([0-9]{1,5})\/?\?token=([A-Za-z0-9%._~-]+)$/u;function s(e){let t=e.split(/\r?\n/u).filter(e=>e.trim()!==``);if(t.length===1)try{let e=JSON.parse(t[0]);return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}catch{return}}function c(e){let t=s(e);if(t===void 0)return;let n=t.providerEnvRefs;if(!(n!==void 0&&(!Array.isArray(n)||n.length>128||!n.every(e=>typeof e==`string`&&/^[A-Za-z_][A-Za-z0-9_]*$/u.test(e))))){if(t.state===`trusted`)return t.askable===!1?{trusted:!0,providerEnvRefs:Object.freeze([...new Set(n??[])])}:void 0;if(t.askable===!0&&typeof t.workspace==`string`&&t.workspace.trim()!==``){let e=Array.isArray(t.loads)?t.loads.filter(e=>typeof e==`string`):[];return{trusted:!1,question:{folder:t.workspace,loads:e.slice(0,64)},providerEnvRefs:[]}}return{trusted:!1,providerEnvRefs:[]}}}function l(e){let t=s(e);if(typeof t?.id!=`string`||t.id.trim()===``||typeof t.url!=`string`)return;let n=o.exec(t.url);if(!n)return;let r=Number(n[1]);return Number.isInteger(r)&&r>0&&r<=65535?{id:t.id,url:t.url,port:r}:void 0}function u(e){return`default-src 'self'; connect-src ${e===void 0?`'none'`:`ws://127.0.0.1:${e}`}; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'`}function d(o){let s=Object.freeze({...o.environment}),d=r(o.artifact).resolveRuntime({environment:s}).config,f=n(s,e(d)),p=null,m=null,h,g=!1,_=(e=[])=>{let n={};for(let e of a)f[e]!==void 0&&(n[e]=f[e]);for(let t of e)f[t]!==void 0&&(n[t]=f[t]);for(let{section:e,field:r,descriptor:i}of t()){if(i.exposure===`private`||!i.consumers.includes(`cli`))continue;let t=d[e][r];t!==void 0&&(n[i.variable]=typeof t==`string`?t:JSON.stringify(t))}return f.PRODUCT_CONFIG_FILE!==void 0&&(n.PRODUCT_CONFIG_FILE=f.PRODUCT_CONFIG_FILE),n};async function v(){let e=[],t=g?void 0:await o.execute([`trust`,`status`,`--json`],_()),n=t?.exitCode===0?c(t.stdout):void 0;if(!g&&n?.question!==void 0){let t=await o.chooseTrust(n.question);if(t!==`trust`&&t!==`restricted`&&t!==`quit`)return{ok:!1,detail:`Desktop trust answer was invalid.`};if(t===`quit`)return{ok:!1,detail:`Desktop launch cancelled.`};if(t===`restricted`&&(g=!0),t===`trust`){let t=await o.execute([`trust`,`--yes`],_());if(t.exitCode!==0)return{ok:!1,detail:t.stderr.trim()||`Workspace trust grant failed.`};let n=await o.execute([`trust`,`status`,`--json`],_()),r=n.exitCode===0?c(n.stdout):void 0;if(r?.trusted!==!0)return{ok:!1,detail:`Workspace trust could not be confirmed after grant.`};e=r.providerEnvRefs}}else e=n?.providerEnvRefs??[];let r=await o.execute([`daemon`,`start`,`--json`,...g?[`--restricted-workspace`]:[]],_(g?[]:e)),i=r.exitCode===0?l(r.stdout):void 0;return i===void 0?{ok:!1,detail:r.stderr.trim()||`Desktop daemon did not return a loopback endpoint.`}:{ok:!0,endpoint:i}}let y=()=>{if(m!==null)return m;let e=v().then(e=>(h=e.ok?e.endpoint.port:void 0,m=null,e),e=>{throw h=void 0,m=null,e});return p=m=e,e};return Object.freeze({config:d,userDataPath:i(d.storage.userRoot,`desktop`),start:y,reconnect:y,current:()=>p,port:()=>h,csp:()=>u(h)})}export{d as createDesktopCliController,u as desktopContentSecurityPolicy,l as parseDesktopDaemonStart,c as parseDesktopTrustStatus};
2
+ //# sourceMappingURL=desktop-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop-host.js","names":[],"sources":["../../src/desktop-host.ts"],"sourcesContent":["import { join } from 'node:path';\n\nimport { embeddedProductIdentity, productConfigEntries, scopeProductEnvironment } from '@robota-sdk/product-config';\n\nimport { createProductCliHost } from './product-host.js';\n\nimport type { TConfigEnvironment } from '@robota-sdk/product-config';\nimport type { IProductCliArtifact } from './product/artifact.js';\n\nexport interface IDesktopCliResult {\n readonly exitCode: number | null;\n readonly stdout: string;\n readonly stderr: string;\n}\nexport interface IDesktopTrustQuestion {\n readonly folder: string;\n readonly loads: readonly string[];\n}\nexport type TDesktopTrustChoice = 'trust' | 'restricted' | 'quit';\nexport interface IDesktopDaemonEndpoint {\n readonly id: string;\n readonly url: string;\n readonly port: number;\n}\nexport type TDesktopAttachment =\n | { readonly ok: true; readonly endpoint: IDesktopDaemonEndpoint }\n | { readonly ok: false; readonly detail: string };\n\nexport interface IDesktopCliControllerOptions {\n readonly artifact: IProductCliArtifact;\n /** Snapshot supplied by the Electron main process; product aliases are scoped to the artifact. */\n readonly environment: TConfigEnvironment;\n /** The consumer wrapper runs its own packaged CLI executable with these args and curated env. */\n readonly execute: (args: readonly string[], environment: Readonly<Record<string, string>>) => Promise<IDesktopCliResult>;\n /** Main process displays a native trust prompt; no daemon starts until it resolves. */\n readonly chooseTrust: (question: IDesktopTrustQuestion) => Promise<TDesktopTrustChoice>;\n}\n\nconst OS_VARIABLES = [\n 'PATH', 'HOME', 'USERPROFILE', 'SystemRoot', 'TEMP', 'TMP', 'LANG', 'LC_ALL',\n 'XDG_RUNTIME_DIR', 'DISPLAY', 'WAYLAND_DISPLAY', 'XAUTHORITY', 'DBUS_SESSION_BUS_ADDRESS',\n 'APPDATA', 'LOCALAPPDATA', 'PROGRAMDATA',\n] as const;\nconst DAEMON_URL = /^ws:\\/\\/127\\.0\\.0\\.1:([0-9]{1,5})\\/?\\?token=([A-Za-z0-9%._~-]+)$/u;\n\nfunction singleJsonLine(stdout: string): Record<string, unknown> | undefined {\n const lines = stdout.split(/\\r?\\n/u).filter((line) => line.trim() !== '');\n if (lines.length !== 1) return undefined;\n try {\n const value: unknown = JSON.parse(lines[0]!);\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? value as Record<string, unknown> : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function parseDesktopTrustStatus(stdout: string): {\n readonly trusted: boolean;\n readonly question?: IDesktopTrustQuestion;\n readonly providerEnvRefs: readonly string[];\n} | undefined {\n const value = singleJsonLine(stdout);\n if (value === undefined) return undefined;\n const refs = value.providerEnvRefs;\n if (refs !== undefined && (!Array.isArray(refs) || refs.length > 128 ||\n !refs.every((name) => typeof name === 'string' && /^[A-Za-z_][A-Za-z0-9_]*$/u.test(name)))) return undefined;\n if (value.state === 'trusted') {\n if (value.askable !== false) return undefined;\n return { trusted: true, providerEnvRefs: Object.freeze([...(new Set((refs ?? []) as string[]))]) };\n }\n if (value.askable === true && typeof value.workspace === 'string' && value.workspace.trim() !== '') {\n const loads = Array.isArray(value.loads) ? value.loads.filter((row): row is string => typeof row === 'string') : [];\n return { trusted: false, question: { folder: value.workspace, loads: loads.slice(0, 64) }, providerEnvRefs: [] };\n }\n return { trusted: false, providerEnvRefs: [] };\n}\n\nexport function parseDesktopDaemonStart(stdout: string): IDesktopDaemonEndpoint | undefined {\n const value = singleJsonLine(stdout);\n if (typeof value?.id !== 'string' || value.id.trim() === '' || typeof value.url !== 'string') return undefined;\n const match = DAEMON_URL.exec(value.url);\n if (!match) return undefined;\n const port = Number(match[1]);\n return Number.isInteger(port) && port > 0 && port <= 65_535\n ? { id: value.id, url: value.url, port } : undefined;\n}\n\nexport function desktopContentSecurityPolicy(port: number | undefined): string {\n const connect = port === undefined ? \"'none'\" : `ws://127.0.0.1:${port}`;\n return `default-src 'self'; connect-src ${connect}; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'`;\n}\n\n/** One attachment owner for initial launch and reconnect. The CLI daemon outlives this controller. */\nexport function createDesktopCliController(options: IDesktopCliControllerOptions) {\n const environment = Object.freeze({ ...options.environment });\n const runtime = createProductCliHost(options.artifact).resolveRuntime({ environment });\n const config = runtime.config;\n const scoped = scopeProductEnvironment(environment, embeddedProductIdentity(config));\n let latest: Promise<TDesktopAttachment> | null = null;\n let inFlight: Promise<TDesktopAttachment> | null = null;\n let settledPort: number | undefined;\n let restricted = false;\n\n const childEnvironment = (refs: readonly string[] = []): Record<string, string> => {\n const output: Record<string, string> = {};\n for (const key of OS_VARIABLES) if (scoped[key] !== undefined) output[key] = scoped[key]!;\n for (const key of refs) if (scoped[key] !== undefined) output[key] = scoped[key]!;\n for (const { section, field, descriptor } of productConfigEntries()) {\n if (descriptor.exposure === 'private' || !descriptor.consumers.includes('cli')) continue;\n const value = (config[section] as Readonly<Record<string, unknown>>)[field];\n if (value !== undefined) output[descriptor.variable] = typeof value === 'string' ? value : JSON.stringify(value);\n }\n if (scoped.PRODUCT_CONFIG_FILE !== undefined) output.PRODUCT_CONFIG_FILE = scoped.PRODUCT_CONFIG_FILE;\n return output;\n };\n\n async function attach(): Promise<TDesktopAttachment> {\n let refs: readonly string[] = [];\n const status = restricted\n ? undefined\n : await options.execute(['trust', 'status', '--json'], childEnvironment());\n const trust = status?.exitCode === 0 ? parseDesktopTrustStatus(status.stdout) : undefined;\n if (!restricted && trust?.question !== undefined) {\n const choice = await options.chooseTrust(trust.question);\n if (choice !== 'trust' && choice !== 'restricted' && choice !== 'quit')\n return { ok: false, detail: 'Desktop trust answer was invalid.' };\n if (choice === 'quit') return { ok: false, detail: 'Desktop launch cancelled.' };\n if (choice === 'restricted') restricted = true;\n if (choice === 'trust') {\n const grant = await options.execute(['trust', '--yes'], childEnvironment());\n if (grant.exitCode !== 0) return { ok: false, detail: grant.stderr.trim() || 'Workspace trust grant failed.' };\n const renewed = await options.execute(['trust', 'status', '--json'], childEnvironment());\n const renewedTrust = renewed.exitCode === 0 ? parseDesktopTrustStatus(renewed.stdout) : undefined;\n if (renewedTrust?.trusted !== true)\n return { ok: false, detail: 'Workspace trust could not be confirmed after grant.' };\n refs = renewedTrust.providerEnvRefs;\n }\n } else refs = trust?.providerEnvRefs ?? [];\n const result = await options.execute(\n ['daemon', 'start', '--json', ...(restricted ? ['--restricted-workspace'] : [])],\n childEnvironment(restricted ? [] : refs),\n );\n const endpoint = result.exitCode === 0 ? parseDesktopDaemonStart(result.stdout) : undefined;\n return endpoint === undefined\n ? { ok: false, detail: result.stderr.trim() || 'Desktop daemon did not return a loopback endpoint.' }\n : { ok: true, endpoint };\n }\n\n const start = (): Promise<TDesktopAttachment> => {\n if (inFlight !== null) return inFlight;\n const pending = attach().then((result) => {\n settledPort = result.ok ? result.endpoint.port : undefined;\n inFlight = null;\n return result;\n }, (error: unknown) => {\n settledPort = undefined;\n inFlight = null;\n throw error;\n });\n latest = inFlight = pending;\n return pending;\n };\n\n return Object.freeze({\n config,\n userDataPath: join(config.storage.userRoot, 'desktop'),\n start,\n reconnect: start,\n current: (): Promise<TDesktopAttachment> | null => latest,\n port: (): number | undefined => settledPort,\n csp: (): string => desktopContentSecurityPolicy(settledPort),\n });\n}\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ ;(function(){var v=parseInt(process.versions.node.split('.')[0],10);if(v<22){process.stderr.write('\n✗ Node.js 22+ is required (current: '+process.version+')\n\nUpgrade:\n nvm: nvm install 22 && nvm use 22\n Volta: volta install node@22\n Download: https://nodejs.org/en/download\n\n');process.exit(1);}})();
3
+ import{R as e,c as t,g as n,h as r,l as i,m as a,o,p as s,s as c,t as l,u}from"./cli-core-QK7sBRp8.js";if(r(c(process.argv)))try{let e=u({});s(e),a(e.config.identity.cliName),i(e.environment),n(o(e))}catch(e){process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1}else try{let n=u({});s(n),a(n.config.identity.cliName);let r=t();!r.serve||r.printMode||r.goal!==void 0||r.positional.length>0||r.reset||r.configure||r.configureProvider!==void 0||r.checkUpdate||r.help||r.version?(process.stderr.write(`This headless runtime accepts only --serve.
4
+ `),process.exitCode=2):l({productRuntime:n},e).catch(e=>{process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1})}catch(e){process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=2}export{};
@@ -0,0 +1,3 @@
1
+ import { t as IProductCliArtifact } from "./artifact-DrPhOb_v.js";
2
+ import { n as createProductCliHost, t as IProductCliHost } from "./product-host-DYR8lHfh.js";
3
+ export { type IProductCliArtifact, IProductCliHost, createProductCliHost };
@@ -0,0 +1 @@
1
+ import{t as e}from"./product-host-CwqVX6Xg.js";export{e as createProductCliHost};
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-C9xYM0wc.js";import{r as t}from"./verdict-decoder-Dz_rjoIZ-DA8BKB83.js";import{t as n}from"./rolldown-runtime-DK3Fl9T5-DK3Fl9T5.js";var r=e({n:()=>i,t:()=>o}),i=n({HttpExecutor:()=>o});function a(e){return e.replace(/\$([A-Za-z_][A-Za-z0-9_]*)/g,(e,t)=>{let n=process.env[t];return n===void 0?e:n})}var o=class{type=`http`;async execute(e,n){let r=(e.timeout??10)*1e3,i={"Content-Type":`application/json`};if(e.headers)for(let[t,n]of Object.entries(e.headers))i[t]=a(n);try{let a=await fetch(e.url,{method:`POST`,headers:i,body:JSON.stringify(n),signal:AbortSignal.timeout(r)});return a.ok?t(await a.text(),`http`,n.hook_event_name):{outcome:`error`,source:`http`,kind:`http-status`,reason:`HTTP ${a.status} ${a.statusText}`}}catch(e){return s(e)}}};function s(e){return{outcome:`error`,source:`http`,kind:e instanceof Error&&e.name===`TimeoutError`?`timeout`:`transport-failure`,reason:e instanceof Error?e.message:String(e)}}export{o as n,r as t};
2
+ //# sourceMappingURL=http-executor-ADn4locH-D-8crzF8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-executor-ADn4locH-D-8crzF8.js","names":["e","t"],"sources":["../../../agent-core/dist/node/http-executor-ADn4locH.js"],"sourcesContent":["import{t as e}from\"./rolldown-runtime-DK3Fl9T5.js\";import{t}from\"./verdict-decoder-Dz_rjoIZ.js\";var n=e({HttpExecutor:()=>i});function r(e){return e.replace(/\\$([A-Za-z_][A-Za-z0-9_]*)/g,(e,t)=>{let n=process.env[t];return n===void 0?e:n})}var i=class{type=`http`;async execute(e,n){let i=(e.timeout??10)*1e3,o={\"Content-Type\":`application/json`};if(e.headers)for(let[t,n]of Object.entries(e.headers))o[t]=r(n);try{let r=await fetch(e.url,{method:`POST`,headers:o,body:JSON.stringify(n),signal:AbortSignal.timeout(i)});return r.ok?t(await r.text(),`http`,n.hook_event_name):{outcome:`error`,source:`http`,kind:`http-status`,reason:`HTTP ${r.status} ${r.statusText}`}}catch(e){return a(e)}}};function a(e){return{outcome:`error`,source:`http`,kind:e instanceof Error&&e.name===`TimeoutError`?`timeout`:`transport-failure`,reason:e instanceof Error?e.message:String(e)}}export{n,i as t};\n//# sourceMappingURL=http-executor-ADn4locH.js.map"],"mappings":"qMAAoG,EAAEA,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,+BAA+B,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,GAAG,OAAO,IAAI,IAAK,GAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,OAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,SAAS,IAAI,IAAI,EAAE,CAAC,eAAe,kBAAkB,EAAE,GAAG,EAAE,QAAQ,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO,OAAO,QAAQ,EAAE,KAAK,KAAK,UAAU,CAAC,EAAE,OAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAGC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,QAAQ,QAAQ,OAAO,OAAO,KAAK,cAAc,OAAO,QAAQ,EAAE,OAAO,GAAG,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,QAAQ,OAAO,OAAO,KAAK,aAAa,OAAO,EAAE,OAAO,eAAe,UAAU,oBAAoB,OAAO,aAAa,MAAM,EAAE,QAAQ,OAAO,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ ;(function(){var v=parseInt(process.versions.node.split('.')[0],10);if(v<22){process.stderr.write('\n✗ Node.js 22+ is required (current: '+process.version+')\n\nUpgrade:\n nvm: nvm install 22 && nvm use 22\n Volta: volta install node@22\n Download: https://nodejs.org/en/download\n\n');process.exit(1);}})();
2
+ import{n as e}from"./rolldown-runtime-rs7quPpn.js";import{r as t}from"./verdict-decoder-Dz_rjoIZ-qM0jJVsB.js";import{t as n}from"./rolldown-runtime-DK3Fl9T5-BeX3Bzvn.js";var r=e({n:()=>i,t:()=>o}),i=n({HttpExecutor:()=>o});function a(e){return e.replace(/\$([A-Za-z_][A-Za-z0-9_]*)/g,(e,t)=>{let n=process.env[t];return n===void 0?e:n})}var o=class{type=`http`;async execute(e,n){let r=(e.timeout??10)*1e3,i={"Content-Type":`application/json`};if(e.headers)for(let[t,n]of Object.entries(e.headers))i[t]=a(n);try{let a=await fetch(e.url,{method:`POST`,headers:i,body:JSON.stringify(n),signal:AbortSignal.timeout(r)});return a.ok?t(await a.text(),`http`,n.hook_event_name):{outcome:`error`,source:`http`,kind:`http-status`,reason:`HTTP ${a.status} ${a.statusText}`}}catch(e){return s(e)}}};function s(e){return{outcome:`error`,source:`http`,kind:e instanceof Error&&e.name===`TimeoutError`?`timeout`:`transport-failure`,reason:e instanceof Error?e.message:String(e)}}export{o as n,r as t};