@reason-machines/cli-linux-x64 0.2.561 → 0.2.563

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 (129) hide show
  1. package/bin/reason +2 -2
  2. package/bin/vm-hands/agent-network-3stvmqsj.js +2 -0
  3. package/bin/vm-hands/api-9xm5e4g9.js +2 -0
  4. package/bin/vm-hands/api-credentials-3wwkpts2.js +2 -0
  5. package/bin/vm-hands/{ask-relay-xx0rzpch.js → ask-relay-5f92e4c5.js} +2 -2
  6. package/bin/vm-hands/connect-cli-d3dp0r1t.js +2 -0
  7. package/bin/vm-hands/credentials-sk4sag42.js +2 -0
  8. package/bin/vm-hands/custom-endpoint-device-3jscber1.js +2 -0
  9. package/bin/vm-hands/desktop-account-xma0330a.js +2 -0
  10. package/bin/vm-hands/desktop-components-p0zx6qxg.js +2 -0
  11. package/bin/vm-hands/desktop-delegate-tch2qzx0.js +2 -0
  12. package/bin/vm-hands/device-workspace-4bj43nxq.js +2 -0
  13. package/bin/vm-hands/{fsevents-vxv56sp5.js → fsevents-ezcg3e40.js} +1 -1
  14. package/bin/vm-hands/hands-worker-source-8pe7yv0m.js +2 -0
  15. package/bin/vm-hands/{index-03p9c17x.js → index-w92ys6ra.js} +16 -16
  16. package/bin/vm-hands/install-receipt-68xxg7hn.js +2 -0
  17. package/bin/vm-hands/local-automation-0a7enct8.js +2 -0
  18. package/bin/vm-hands/local-capabilities-d3ycjdyg.js +2 -0
  19. package/bin/vm-hands/local-desktop-users-jpf0resr.js +2 -0
  20. package/bin/vm-hands/local-display-mac-h5yz0ydd.js +2 -0
  21. package/bin/vm-hands/local-display-session-pc85z6mg.js +2 -0
  22. package/bin/vm-hands/local-display-video-40avbg94.js +2 -0
  23. package/bin/vm-hands/local-managed-process-ka331rcr.js +2 -0
  24. package/bin/vm-hands/local-pty-session-tqn2xmph.js +2 -0
  25. package/bin/vm-hands/managed-runtime-nwj7cn7c.js +2 -0
  26. package/bin/vm-hands/network-auto-update-tk104maa.js +3 -0
  27. package/bin/vm-hands/network-contract-nkwcf4r9.js +2 -0
  28. package/bin/vm-hands/{network-sign-in-61gmpmaa.js → network-sign-in-t9ng36rs.js} +2 -2
  29. package/bin/vm-hands/package-9w0mmxb5.js +2 -0
  30. package/bin/vm-hands/permissions-ywh8x4dq.js +2 -0
  31. package/bin/vm-hands/reason-hands-protocol-pck5har9.js +2 -0
  32. package/bin/vm-hands/serve-service-43kmwskj.js +2 -0
  33. package/bin/vm-hands/{status-khqk4cjw.js → status-ec366bs8.js} +7 -7
  34. package/bin/vm-hands/version-6ys9zwbj.js +2 -0
  35. package/bin/vm-hands/{vm-hands-entry-lite-ht6hzkgj.js → vm-hands-entry-lite-0jy8mv4a.js} +2 -2
  36. package/bin/vm-hands/{vm-hands-entry-lite-zawytz09.js → vm-hands-entry-lite-12ck5swp.js} +2 -2
  37. package/bin/vm-hands/{vm-hands-entry-lite-j10cw3d9.js → vm-hands-entry-lite-13nx02p7.js} +7 -7
  38. package/bin/vm-hands/{vm-hands-entry-lite-vdv4nm5f.js → vm-hands-entry-lite-1b21avcs.js} +2 -2
  39. package/bin/vm-hands/{vm-hands-entry-lite-bj3w2ven.js → vm-hands-entry-lite-1w39j6vz.js} +2 -2
  40. package/bin/vm-hands/{vm-hands-entry-lite-gxpw14jv.js → vm-hands-entry-lite-1wxwsb3f.js} +7 -7
  41. package/bin/vm-hands/{vm-hands-entry-lite-ms99mzp0.js → vm-hands-entry-lite-284z7ct8.js} +3 -3
  42. package/bin/vm-hands/{vm-hands-entry-lite-a7bf7xr7.js → vm-hands-entry-lite-2qfmabqn.js} +3 -3
  43. package/bin/vm-hands/{vm-hands-entry-lite-q9s1e2y1.js → vm-hands-entry-lite-33at6g06.js} +2 -2
  44. package/bin/vm-hands/{vm-hands-entry-lite-e3fn8ys2.js → vm-hands-entry-lite-3gc2bn5a.js} +2 -2
  45. package/bin/vm-hands/{vm-hands-entry-lite-hxfxs7r9.js → vm-hands-entry-lite-3q2ng4e9.js} +2 -2
  46. package/bin/vm-hands/vm-hands-entry-lite-41nn0vbf.js +150 -0
  47. package/bin/vm-hands/{vm-hands-entry-lite-5y4phfv1.js → vm-hands-entry-lite-43bv9hf0.js} +3 -3
  48. package/bin/vm-hands/{vm-hands-entry-lite-vkhacd00.js → vm-hands-entry-lite-61p78r72.js} +19 -19
  49. package/bin/vm-hands/{vm-hands-entry-lite-hs6sdn60.js → vm-hands-entry-lite-88dxn9b5.js} +2 -2
  50. package/bin/vm-hands/vm-hands-entry-lite-997y1m1r.js +3 -0
  51. package/bin/vm-hands/{vm-hands-entry-lite-zh6ncdjn.js → vm-hands-entry-lite-a3gq377t.js} +2 -2
  52. package/bin/vm-hands/{vm-hands-entry-lite-0wb1n769.js → vm-hands-entry-lite-b1vanmtv.js} +5 -5
  53. package/bin/vm-hands/{vm-hands-entry-lite-q9djb28r.js → vm-hands-entry-lite-cc8hwgxc.js} +3 -3
  54. package/bin/vm-hands/vm-hands-entry-lite-chq0qx9f.js +12 -0
  55. package/bin/vm-hands/{vm-hands-entry-lite-84mc1f7h.js → vm-hands-entry-lite-cmmb9k3g.js} +2 -2
  56. package/bin/vm-hands/{vm-hands-entry-lite-jgk5z8zc.js → vm-hands-entry-lite-d12hx1dk.js} +6 -6
  57. package/bin/vm-hands/{vm-hands-entry-lite-7pfhwxn5.js → vm-hands-entry-lite-d431ffz0.js} +1 -1
  58. package/bin/vm-hands/{vm-hands-entry-lite-ptycjmkc.js → vm-hands-entry-lite-fccn6s4j.js} +2 -2
  59. package/bin/vm-hands/{vm-hands-entry-lite-qf990rxw.js → vm-hands-entry-lite-fn2805g8.js} +2 -2
  60. package/bin/vm-hands/{vm-hands-entry-lite-y3nz20wb.js → vm-hands-entry-lite-frg1b1rg.js} +105 -105
  61. package/bin/vm-hands/{vm-hands-entry-lite-71ebge0c.js → vm-hands-entry-lite-fxptf351.js} +5 -5
  62. package/bin/vm-hands/{vm-hands-entry-lite-57ajjwmh.js → vm-hands-entry-lite-gxf2r5en.js} +1 -1
  63. package/bin/vm-hands/{vm-hands-entry-lite-h7nk2848.js → vm-hands-entry-lite-j8s2vqpf.js} +42 -42
  64. package/bin/vm-hands/{vm-hands-entry-lite-2dak7e1h.js → vm-hands-entry-lite-jgwjt10t.js} +3 -5
  65. package/bin/vm-hands/{vm-hands-entry-lite-hjjbjpd7.js → vm-hands-entry-lite-jj7873n8.js} +3 -3
  66. package/bin/vm-hands/{vm-hands-entry-lite-xvccy3z4.js → vm-hands-entry-lite-k4d5rhpw.js} +2 -2
  67. package/bin/vm-hands/{vm-hands-entry-lite-9g52kxyj.js → vm-hands-entry-lite-kbnxk71q.js} +2 -2
  68. package/bin/vm-hands/{vm-hands-entry-lite-m1we91g4.js → vm-hands-entry-lite-mn8rjpxq.js} +10 -10
  69. package/bin/vm-hands/{vm-hands-entry-lite-52qz0n30.js → vm-hands-entry-lite-ngry8nkq.js} +4 -4
  70. package/bin/vm-hands/vm-hands-entry-lite-pe374cn6.js +81 -0
  71. package/bin/vm-hands/{vm-hands-entry-lite-8xv6c0rm.js → vm-hands-entry-lite-pg7nnyc6.js} +2 -2
  72. package/bin/vm-hands/{vm-hands-entry-lite-tcmye5ny.js → vm-hands-entry-lite-q62g6sx0.js} +2 -2
  73. package/bin/vm-hands/{vm-hands-entry-lite-v4hr9x9h.js → vm-hands-entry-lite-qjrgvdbj.js} +34 -34
  74. package/bin/vm-hands/{vm-hands-entry-lite-krpqqx12.js → vm-hands-entry-lite-rxydyqke.js} +2 -2
  75. package/bin/vm-hands/{vm-hands-entry-lite-weqam12f.js → vm-hands-entry-lite-s93f3pbv.js} +3 -3
  76. package/bin/vm-hands/{vm-hands-entry-lite-z0ht62s4.js → vm-hands-entry-lite-sh4mqy93.js} +3 -3
  77. package/bin/vm-hands/vm-hands-entry-lite-srtqjjqb.js +48 -0
  78. package/bin/vm-hands/{vm-hands-entry-lite-6jxshhps.js → vm-hands-entry-lite-thstg177.js} +6 -6
  79. package/bin/vm-hands/vm-hands-entry-lite-vbqfmsd3.js +4 -0
  80. package/bin/vm-hands/vm-hands-entry-lite-wnqqjsew.js +3 -0
  81. package/bin/vm-hands/{vm-hands-entry-lite-pxtycfdv.js → vm-hands-entry-lite-xfak34av.js} +4 -4
  82. package/bin/vm-hands/{vm-hands-entry-lite-sy7dcccg.js → vm-hands-entry-lite-y0jtj8zz.js} +1 -1
  83. package/bin/vm-hands/{vm-hands-entry-lite-yvws5zpx.js → vm-hands-entry-lite-yg4dk99m.js} +1 -1
  84. package/bin/vm-hands/{vm-hands-entry-lite-2rgf8866.js → vm-hands-entry-lite-z65xva21.js} +2 -2
  85. package/bin/vm-hands/{vm-hands-entry-lite-wcgm41jq.js → vm-hands-entry-lite-zj9esd2g.js} +7 -7
  86. package/bin/vm-hands/{vm-hands-entry-lite-jpvmkce5.js → vm-hands-entry-lite-zp7chzcc.js} +1 -1
  87. package/bin/vm-hands/{vm-hands-entry-lite-k5ytpgzz.js → vm-hands-entry-lite-zpvr7wc6.js} +19 -19
  88. package/bin/vm-hands/vm-hands-entry-lite.js +2 -2
  89. package/bin/vm-hands/vm-hands-executor-2ngwj96m.js +12 -0
  90. package/bin/vm-hands/vm-hands-op-runner-te2ze1e7.js +2 -0
  91. package/bin/vm-hands/{vm-hands-runtime-1qxf96z7.js → vm-hands-runtime-09ehkm3c.js} +3 -3
  92. package/bin/vm-hands/worker-preview-readiness-h96yr4wf.js +2 -0
  93. package/bin/vm-hands/worker-sandbox-6kkhvryn.js +2 -0
  94. package/package.json +1 -1
  95. package/bin/vm-hands/agent-network-kk36zca7.js +0 -2
  96. package/bin/vm-hands/api-credentials-mtfdk175.js +0 -2
  97. package/bin/vm-hands/api-w6w7vfp3.js +0 -2
  98. package/bin/vm-hands/connect-cli-dmwph620.js +0 -2
  99. package/bin/vm-hands/credentials-s7ps7y6s.js +0 -2
  100. package/bin/vm-hands/custom-endpoint-device-3xnrp33e.js +0 -2
  101. package/bin/vm-hands/desktop-account-eg8thn79.js +0 -2
  102. package/bin/vm-hands/device-workspace-h5rsecq8.js +0 -2
  103. package/bin/vm-hands/hands-worker-source-vk664w8p.js +0 -2
  104. package/bin/vm-hands/install-receipt-j04hdw1k.js +0 -2
  105. package/bin/vm-hands/local-automation-vvt9d9xb.js +0 -2
  106. package/bin/vm-hands/local-capabilities-pwv76ns5.js +0 -2
  107. package/bin/vm-hands/local-desktop-users-sq4trh07.js +0 -2
  108. package/bin/vm-hands/local-display-mac-yxcxvg2z.js +0 -2
  109. package/bin/vm-hands/local-display-session-axh9mfdk.js +0 -2
  110. package/bin/vm-hands/local-display-video-pxhztqk7.js +0 -2
  111. package/bin/vm-hands/local-managed-process-4mgqn7tg.js +0 -2
  112. package/bin/vm-hands/local-pty-session-edd8ttf9.js +0 -2
  113. package/bin/vm-hands/managed-runtime-pcagtyfz.js +0 -2
  114. package/bin/vm-hands/network-auto-update-wkzb91qz.js +0 -3
  115. package/bin/vm-hands/network-contract-8mxtma3w.js +0 -2
  116. package/bin/vm-hands/package-vwvzjtn0.js +0 -2
  117. package/bin/vm-hands/permissions-348prrcx.js +0 -2
  118. package/bin/vm-hands/reason-hands-protocol-1nkpw1v3.js +0 -2
  119. package/bin/vm-hands/serve-service-3dkyznay.js +0 -2
  120. package/bin/vm-hands/version-c1hen0wn.js +0 -2
  121. package/bin/vm-hands/vm-hands-entry-lite-9yfmkd1f.js +0 -3
  122. package/bin/vm-hands/vm-hands-entry-lite-ab1pq3xg.js +0 -3
  123. package/bin/vm-hands/vm-hands-entry-lite-hn9pq7zj.js +0 -127
  124. package/bin/vm-hands/vm-hands-entry-lite-nn6zcvmp.js +0 -3
  125. package/bin/vm-hands/vm-hands-entry-lite-z213y4pj.js +0 -150
  126. package/bin/vm-hands/vm-hands-executor-csdtg7kj.js +0 -12
  127. package/bin/vm-hands/vm-hands-op-runner-z7tsd84c.js +0 -2
  128. package/bin/vm-hands/worker-preview-readiness-06tygyjs.js +0 -2
  129. package/bin/vm-hands/worker-sandbox-e1cpkzfz.js +0 -2
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Gt,lc,le,Kt,yn,wn,T}from"./vm-hands-entry-lite-hn9pq7zj.js";import{ue}from"./vm-hands-entry-lite-q9djb28r.js";import{Er}from"./vm-hands-entry-lite-j10cw3d9.js";import{kr}from"./vm-hands-entry-lite-6jxshhps.js";import{Li}from"./vm-hands-entry-lite-wcgm41jq.js";import{Br,pa}from"./vm-hands-entry-lite-z0ht62s4.js";import{Te,Ft}from"./vm-hands-entry-lite-z213y4pj.js";import{de,Ue}from"./vm-hands-entry-lite-m1we91g4.js";import{Tr}from"./vm-hands-entry-lite-71ebge0c.js";import{s}from"./vm-hands-entry-lite-zawytz09.js";import{B}from"./vm-hands-entry-lite-8xv6c0rm.js";import{r}from"./vm-hands-entry-lite-qy9xg6em.js";import{spawn as k,spawnSync as rt}from"child_process";import{createHash as nt,randomUUID as ge}from"crypto";import{closeSync as st,copyFileSync as ne,existsSync as M,fstatSync as it,mkdirSync as se,openSync as at,readdirSync as D,readFileSync as G,readlinkSync as ct,renameSync as he,rmSync as lt,statSync as ut,writeFileSync as dt}from"fs";import{connect as pt}from"net";import{tmpdir as L,userInfo as _e}from"os";import{basename as ie,delimiter as mt,dirname as U,join as f}from"path";var K=`import { spawn, execFileSync } from "node:child_process";
2
+ import{Xt,yc,le,Sr,Er,A}from"./vm-hands-entry-lite-pe374cn6.js";import{ue}from"./vm-hands-entry-lite-cc8hwgxc.js";import{Rr}from"./vm-hands-entry-lite-13nx02p7.js";import{Tr}from"./vm-hands-entry-lite-thstg177.js";import{Bi}from"./vm-hands-entry-lite-zj9esd2g.js";import{Ue,wr,br,Yo}from"./vm-hands-entry-lite-chq0qx9f.js";import{Kt}from"./vm-hands-entry-lite-srtqjjqb.js";import{qr,ba}from"./vm-hands-entry-lite-sh4mqy93.js";import{Te,jt}from"./vm-hands-entry-lite-41nn0vbf.js";import{de,ze}from"./vm-hands-entry-lite-mn8rjpxq.js";import{$r}from"./vm-hands-entry-lite-fxptf351.js";import{s}from"./vm-hands-entry-lite-12ck5swp.js";import{B}from"./vm-hands-entry-lite-pg7nnyc6.js";import{r}from"./vm-hands-entry-lite-qy9xg6em.js";import{spawn as S,spawnSync as De}from"child_process";import{createHash as Le,randomUUID as re}from"crypto";import{closeSync as $e,copyFileSync as J,existsSync as C,fstatSync as Be,mkdirSync as z,openSync as We,readdirSync as N,readFileSync as W,readlinkSync as qe,renameSync as ne,rmSync as Fe,statSync as He,writeFileSync as Ge}from"fs";import{connect as je}from"net";import{tmpdir as P,userInfo as ie}from"os";import{basename as V,delimiter as Xe,dirname as M,join as m}from"path";var q=`import { spawn, execFileSync } from "node:child_process";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import { readFileSync, readlinkSync, lstatSync, realpathSync, statSync, mkdtempSync, mkdirSync, chmodSync, writeFileSync, readdirSync, rmSync, openSync, readSync, closeSync, renameSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
@@ -950,7 +950,5 @@ if(process.env.REASON_CLOUD_GATEWAY_EXEC === "1") {
950
950
  process.stdout.write(JSON.stringify(cloudAutomationFailure(error))+"\\n");process.exitCode=1;
951
951
  }
952
952
  }
953
- `;import{spawn as Ce}from"child_process";import{lstatSync as J,readFileSync as Y,rmSync as Ne}from"fs";import{basename as Pe}from"path";var Me="__desktop-call",De="/usr/bin/setpriv",Le=27262976,$e=8192,Be=2000;function q(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function qe(e){try{return JSON.parse(e)}catch{return null}}function We(){return[process.execPath,...Pe(process.execPath).startsWith("bun")&&process.argv[1]?[process.argv[1]]:[],Me]}function Fe(e){let o=(a)=>{try{return J(a).uid}catch{return null}},t=J("/tmp/.X11-unix",{throwIfNoEntry:!1});if(!t?.isDirectory()||t.uid!==0)return;let n=["/tmp/.X99-lock","/tmp/.X11-unix/X99"].filter((a)=>{let u=o(a);return u!==null&&u!==e.uid});if(!n.length)return;let i="";try{let a=Y("/tmp/.X99-lock","utf8").trim();if(/^\d+$/.test(a))i=Y(`/proc/${a}/comm`,"utf8").trim()}catch{}if(/^X/.test(i))return;for(let a of n)Ne(a,{force:!0})}function nn(e,o,t,n={}){if(t.throwIfAborted(),(o.op==="display"||o.op==="automation")&&process.platform==="linux"&&process.getuid?.()===0)try{Fe(e)}catch{}let i=n.command??We();return new Promise((a,u)=>{let c=(n.spawnProcess??Ce)(De,[`--reuid=${e.uid}`,`--regid=${e.gid}`,"--clear-groups","--no-new-privs","--",...i],{cwd:e.home,detached:!0,stdio:["pipe","pipe","pipe"],env:{HOME:e.home,USER:e.username,LOGNAME:e.username,PATH:"/usr/local/bin:/usr/bin:/bin"}}),d=[],m=0,l="",p=null,g=!1,_,h=(y)=>{try{process.kill(-c.pid,y)}catch{c.kill(y)}},v=(y)=>{p??=y,h("SIGTERM"),_??=setTimeout(()=>h("SIGKILL"),Be)},S=()=>v(new r("cancelled","Reason cancelled the desktop operation."));t.addEventListener("abort",S,{once:!0});let w=(y)=>{if(g)return;g=!0,clearTimeout(_),t.removeEventListener("abort",S),y()};if(c.stdout.on("data",(y)=>{if(m+=y.byteLength,m>Le)v(new r("desktop_delegate_failed","Reason's desktop reply is too large."));else d.push(y)}),c.stderr.setEncoding("utf8").on("data",(y)=>{l=(l+y).slice(-$e)}),c.stdin.on("error",()=>{}),c.once("error",()=>w(()=>u(p??new r("desktop_delegate_unavailable","Reason could not start its desktop as the desktop account.")))),c.once("close",(y,Oe)=>w(()=>{if(p)return u(p);let b=qe(Buffer.concat(d).toString("utf8"));if(q(b)&&b.ok===!0&&q(b.result))return a(b.result);let R=q(b)&&b.ok===!1&&typeof b.code==="string"&&typeof b.message==="string"?new r(b.code.slice(0,120),b.message.slice(0,2000)):null,j=`exited ${y??Oe}${R?"":" with no reply"}`,X=l.trim().split(`
954
- `).at(-1)?.slice(-300)??"";if(!R||R.code==="desktop_delegate_failed")process.stderr.write(`Reason worker: desktop call ${j}${l?`: ${l.trim().slice(-500)}`:""}
955
- `);if(R)return u(R);u(new r("desktop_delegate_failed",`Reason's desktop operation failed (${j}${X?`: ${X}`:""}).`))})),t.aborted)S();c.stdin.end(JSON.stringify(o))})}async function z(e,o,t,n={}){let i=await nn(e,{op:"automation",call:o},t,n);if(!Number.isSafeInteger(i.code)||typeof i.stdout!=="string"||typeof i.stderr!=="string")throw new r("desktop_delegate_failed","Reason's desktop reply is malformed.");return{code:i.code,stdout:Buffer.from(i.stdout,"base64"),stderr:i.stderr}}import{execFile as He,spawn as Ge}from"child_process";import{closeSync as je,mkdirSync as Xe,openSync as Ke}from"fs";import{dirname as O,join as Je}from"path";import{promisify as Ye}from"util";var ze=Ye(He),V="x-apple.systempreferences:com.apple.preference.security",Ve={accessibility:`${V}?Privacy_Accessibility`,screen:`${V}?Privacy_ScreenCapture`},Ze=64,A=new Map;function E(e,o){let t=A.get(e);if(t?.has(o))return!1;if(!t){if(A.size>=Ze)A.delete(A.keys().next().value);t=new Set,A.set(e,t)}return t.add(o),!0}function Qe(){let e=s(),o=Ue(de(e),process.env),t=Je(e,".local","share","reason","desktop-install.log");Xe(O(t),{recursive:!0,mode:448});let n=Ke(t,"a",384);try{let i=Ge(o,["desktop","install"],{detached:!0,stdio:["ignore",n,n],env:{...process.env,REASON_DESKTOP_BACKGROUND:"1"}});i.on("error",()=>{return}),i.unref()}finally{je(n)}}var C={open:async(e,o)=>{await ze("/usr/bin/open",e,{signal:o,timeout:1e4,maxBuffer:8192})},request:(e,o)=>Er(e,o),tile:Li,installDesktop:Qe},Z=!1;async function Q(e,o,t){try{await o.open(["-a","Google Chrome",e],t)}catch{t.throwIfAborted(),await o.open([e],t)}}async function te(e,o,t,n){if(await t.open([Ve[o]],n).catch(()=>{}),e[0]&&!n.aborted)t.tile(O(O(O(e[0]))),o)}async function et(e,o,t,n,i){for(let a of t){if(!E(e,`grant:${a}`))continue;i.throwIfAborted(),await n.request(o,a).catch(()=>null),await te(o,a,n,i)}}var tt={name:"open_tab",description:"Open a web page in the user's own Chrome on this Mac. Reason cannot read, screenshot or click in that tab, and no tab_id is returned: browser control needs Reason's Chrome extension. An actual browser call opens its setup page.",inputSchema:{type:"object",properties:{url:{type:"string",description:"An http or https URL."}},required:["url"],additionalProperties:!1}};function ee(e){return{code:0,stderr:"",stdout:Buffer.from(JSON.stringify({ok:!0,...e}))}}function ot(e){if(typeof e!=="string")return null;try{let o=new URL(e);return o.protocol==="https:"||o.protocol==="http:"?o.href:null}catch{return null}}async function oe(e,o=C){let{call:t,runId:n,signal:i}=e;if(t.kind==="browser"){if(t.operation==="discover")return ee({result:{tools:[tt]}});if(t.operation!=="call")throw new r("automation_browser_setup_required","Browser control is not set up on this Mac yet. Request a browser operation or connect Chrome from Reason to set it up.")}if(e.desktopMissing&&!Z){Z=!0;try{o.installDesktop()}catch{}}if(t.kind==="computer"){if(e.identity.length>0&&E(n,"grant:probe")){let c=await o.request(e.identity).catch(()=>null),d=c?[...c.accessibility?[]:["accessibility"],...c.screen?[]:["screen"]]:[];for(let m of d)E(n,`grant:${m}`);for(let m of d)await te(e.identity,m,o,i)}throw new r("automation_computer_setup_required","Computer use is not set up on this Mac yet; Reason asked macOS for any missing permission.")}if(E(n,"page:chrome-extension"))await Q(lc,o,i).catch(()=>{});let a=t.arguments,u=t.operation==="call"&&t.tool==="open_tab"&&a&&typeof a==="object"&&!Array.isArray(a)?ot(a.url):null;if(!u)throw new r("automation_browser_setup_required","Browser control is not set up on this Mac yet; Reason opened its Chrome Web Store page. open_tab still opens pages.");return await Q(u,o,i),ee({result:{content:[{type:"text",text:JSON.stringify({opened:u,browser:"the user's Chrome",controllable:!1,note:"Opened for the user to see. Reason cannot read or act in this tab until Reason's Chrome extension is added (its Chrome Web Store page is open)."})}]}})}async function re(e,o=C){if(e.call.kind!=="computer"||e.call.operation!=="permission_status"||e.output.code!==0||e.identity.length===0)return e.output;let t;try{t=JSON.parse(e.output.stdout.toString("utf8"))}catch{return e.output}if(!t||typeof t!=="object"||Array.isArray(t))return e.output;let n=t.permissions;if(!n||typeof n!=="object")return e.output;let i=n,a=[...i.accessibility==="missing"?["accessibility"]:[],...i.screenRecording==="missing"?["screen"]:[]];if(a.length===0)return e.output;return await et(e.runId,e.identity,a,o,e.signal),{...e.output,stdout:Buffer.from(JSON.stringify({...t,requested:a}))}}var H=172032,ft=18874368,gt=8192,ht=65536,_t=55000,wt=60000,yt=4,bt=40000,St=/^[0-9a-f-]{36}$/,ae=K,xt=ge();function N(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function P(){throw new r("invalid_automation_request","Reason automation request is malformed.")}function we(e){let o=Object.keys(e).sort().join(",");if(o==="call"||o==="browser,call"){let t=e.call,n=o==="browser,call";if(!N(t)||t.version!==1||t.kind!=="computer"&&t.kind!=="browser"||n&&(e.browser!==Tr||t.kind!=="browser")||JSON.stringify(t).length>ht)P();return{call:t,userChrome:n}}if(o==="offset,output_id"){if(typeof e.output_id!=="string"||!St.test(e.output_id)||!Number.isSafeInteger(e.offset)||e.offset<0)P();return{output_id:e.output_id,offset:e.offset}}return P()}function hr(e=process.platform,o=T){if(e==="darwin")return!0;return(e==="linux"||e==="win32")&&o()?.features.computer===!0}var kt="__computer-use";function To(e=T){return e()?.userChrome??{code:"user_chrome_browser_use_missing"}}function ye(e,o,t,n){return new Promise((i)=>{let a=k(e,o,{env:t,stdio:"ignore",windowsHide:!0}),u=setTimeout(()=>{a.kill("SIGKILL"),i(-1)},n);a.once("error",()=>{clearTimeout(u),i(-1)}),a.once("exit",(c)=>{clearTimeout(u),i(c??-1)})})}function vt(e,o,t,n){return new Promise((i)=>{let a=k(e,o,{env:t,stdio:["ignore","pipe","ignore"],windowsHide:!0}),u="";a.stdout.setEncoding("utf8").on("data",(d)=>{u+=d});let c=setTimeout(()=>{a.kill("SIGKILL"),i(null)},n);a.once("error",()=>{clearTimeout(c),i(null)}),a.once("close",(d)=>{clearTimeout(c),i(d===0?u:null)})})}function It(e){return I(e)?f(L(),"open-browser-use"):"/tmp/open-browser-use"}function I(e){return e.platform==="win32-x64"||e.platform==="win32-arm64"}var Rt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,At=33554432;function Ot(e,o){let t;try{t=e===null?null:JSON.parse(e)}catch{return null}let n=N(t)&&N(t.result)?t.result.metadata:null;if(!N(n)||n.extensionId!==o)return null;return typeof n.extensionInstanceId==="string"&&Rt.test(n.extensionInstanceId)?n.extensionInstanceId:null}async function be(e,o,t){let n=t.storages.map((c)=>{try{return D(c).filter((d)=>d.endsWith(".log")||d.endsWith(".ldb")).map((d)=>f(c,d))}catch{return[]}}),i;try{i=n.some((c)=>c.length>0)?D(t.socketDir).filter((c)=>c.endsWith(".sock")):[]}catch{return[]}let a=[];for(let c of i){let d=f(t.socketDir,c),m=Ot(await vt(e,["info","--socket",d,"--timeout","2s"],o,5000),t.extensionId);if(m)a.push({instance:m,socket:d})}let u=[];for(let[c,d]of(a.length>0?n:[]).entries())for(let m of d)try{if(ut(m).size>At)continue;let l=G(m),p=a.find((g)=>l.includes(g.instance));if(p){u.push({storage:t.storages[c],...p});break}}catch{}return u}async function Et(e,o,t){return(await be(e,o,t))[0]?.instance??null}function Se(e,o,t){return Et(e.nativeHost,o,{socketDir:It(e),extensionId:le,storages:[f(t,"browser-profile","Default","Local Extension Settings",le)]})}var ce=/^(Default|Profile ([0-9]+))$/;async function Tt(e,o,t=s(),n=yn){let i=f(t,"Library","Application Support","Google","Chrome"),a=[];try{a=D(i)}catch(l){if(l.code==="EPERM")throw new r("browser_use_chrome_access_denied","macOS blocked Reason from reading Chrome's profiles. Allow Full Disk Access for Reason on this Mac and try again.")}let u=(l)=>Number(ce.exec(l)?.[2]??-1),c=a.filter((l)=>ce.test(l)&&M(f(i,l,"Extensions",Gt))).sort((l,p)=>u(l)-u(p)),d=(l)=>f(i,l,"Local Extension Settings",Gt);return(await be(e,o,{socketDir:n,extensionId:Gt,storages:c.map(d)})).map(({storage:l,instance:p,socket:g})=>({profile:c.find((_)=>d(_)===l),instance:p,socket:g}))}async function Ct(e,o,t=s(),n=yn){let i=(await Tt(e,o,t,n))[0]?.instance;if(!i)throw new r("automation_user_chrome_not_connected","No Chrome profile on this Mac is connected to Reason. Open Chrome with the Reason extension, then try again.");return i}function pe(e){return new Promise((o)=>{let t=pt({path:e}),n=(i)=>{t.destroy(),o(i)};t.setTimeout(1000,()=>n(!1)),t.once("error",()=>n(!1)),t.once("connect",()=>n(!0))})}async function xe(e,o){let t=Date.now()+o;while(Date.now()<t){if(await e())return!0;await new Promise((n)=>setTimeout(n,200))}return!1}var W=new Map;function F(e,o){let t=W.get(e);if(!t)t=o().finally(()=>W.delete(e)),W.set(e,t);return t}async function Nt(e,o){if(await pe(e))return;if(lt(e,{force:!0}),await ye("dbus-daemon",["--session",`--address=unix:path=${e}`,"--fork"],o,1e4)!==0||!await xe(()=>pe(e),5000))throw new r("automation_unavailable","Reason could not start the desktop session bus.")}async function me(e,o,t){let n=e.platform==="darwin-arm64"||I(e)?async()=>await Se(e,o,t)!==null:async()=>await ye(e.nativeHost,["info"],o,5000)===0;if(await n())return;let i=["--profile-directory=Default",`--load-extension=${e.extensionDir}`,"--no-first-run","--no-default-browser-check","--window-size=1280,800","about:blank"],a,u=null,c=0;if(e.platform==="darwin-arm64"){let l=f(t,"browser-profile");Te(l);let p=f(l,"NativeMessagingHosts");se(p,{recursive:!0,mode:448});let g=wn(e.platform).nativeHostManifests[0];ne(g,f(p,ie(g)));let _=e.browser.slice(0,e.browser.indexOf(".app/")+4),h=i.filter((v)=>v!=="about:blank").concat("--no-startup-window","--use-mock-keychain");a=k("/usr/bin/open",["-g","-n","-a",_,"--args",`--user-data-dir=${l}`,...h],{env:o,stdio:"ignore"})}else if(I(e)){let l=f(t,"browser-profile");Te(l),rt(B("icacls"),[U(e.browser),"/grant","*S-1-15-2-1:(OI)(CI)(RX)","*S-1-15-2-2:(OI)(CI)(RX)"],{stdio:"ignore",windowsHide:!0,timeout:60000});let p=i.filter((g)=>g!=="about:blank").concat("--no-startup-window","--keep-alive-for-test");a=k(e.browser,[`--user-data-dir=${l}`,...p],{detached:!0,stdio:"ignore",env:o})}else{let l=f(o.HOME,".config","google-chrome"),p=f(l,"NativeMessagingHosts");se(p,{recursive:!0,mode:448});let g=wn(e.platform).nativeHostManifests[0];ne(g,f(p,ie(g)));let _=process.geteuid?.()===0?["--no-sandbox"]:[];u=f(t,"browser.log");let h=at(u,"a",384);c=it(h).size,a=k(e.browser,[`--user-data-dir=${l}`,...i,..._,"--force-renderer-accessibility"],{detached:!0,stdio:["ignore",h,h],env:{...o,ACCESSIBILITY_ENABLED:"1"}}),st(h)}let d=!1;a.once("error",()=>{d=!0}),a.once("exit",(l)=>{d||=l!==0}),a.unref();let m=!1;if(await xe(async()=>d||(m=await n()),bt),!m){if(u&&G(u).subarray(c).toString("utf8").includes("No usable sandbox"))throw new r("automation_browser_sandbox_unavailable","Chromium found no usable sandbox on this machine. Run the worker as a non-root user with unprivileged user namespaces enabled, or in a container with seccomp unconfined.");throw new r("automation_browser_unavailable","Reason could not connect the desktop browser.")}}async function Io(e){await Ie(e,!0)}function Do(e){return ke(e,ve(e))}function ke(e,o){return e.platform==="darwin-arm64"||I(e)?f(o,"browser-profile"):f(o,"home",".config","google-chrome")}function ve(e){let o=f(e.root,"automation");if(!M(o)||!Pt(e.automation))return e.automation;if(!Mt(ke(e,o)))try{he(o,e.automation)}catch{}return M(o)?o:e.automation}function Pt(e){try{return D(e).length===0}catch(o){return o.code==="ENOENT"}}function Mt(e){let o;try{o=ct(f(e,"SingletonLock"))}catch{return!1}let t=Number(o.slice(o.lastIndexOf("-")+1));if(!Number.isSafeInteger(t)||t<=0)return!0;try{return process.kill(t,0),!0}catch(n){return n.code==="EPERM"}}async function Ie(e,o){Br({root:e.root,automation:e.automation,extensionDir:e.extensionDir});let t=ve(e);Te(t);let n=_e().username,i={USER:n,LOGNAME:n,REASON_AUTOMATION_OCU:e.ocu,REASON_AUTOMATION_OBU:e.nativeHost};if(e.platform==="darwin-arm64"||I(e)){let l=I(e)?{...i,...Dt(),HOME:s()}:{...i,HOME:s(),PATH:`${U(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OCU:process.execPath,REASON_AUTOMATION_OCU_SUBCOMMAND:kt};if(!o)return l;await F("browser",()=>me(e,l,t));let p=await Se(e,l,t);if(!p)throw new r("automation_browser_unavailable","Reason could not connect the desktop browser.");return{...l,REASON_AUTOMATION_OBU_INSTANCE:p,REASON_AUTOMATION_BACKGROUND_TABS:"1"}}let a=await Ft(),u=f(t,"home"),c=f(t,"runtime");Te(u),Te(c);let d=f(t,"bus"),m={...i,HOME:u,PATH:`${U(e.node)}:/usr/bin:/bin`,DISPLAY:a.display,XAUTHORITY:a.xauthority,XDG_RUNTIME_DIR:c,DBUS_SESSION_BUS_ADDRESS:`unix:path=${d}`,...a.sound?{PULSE_SERVER:Kt(a.sound)}:{}};if(await F("bus",()=>Nt(d,m)),o)await F("browser",()=>me(e,m,t));return m}function Dt(){let e=process.env.SystemRoot??"C:\\Windows",o=Object.fromEntries(["SystemDrive","USERPROFILE","LOCALAPPDATA","APPDATA","ProgramData","ProgramFiles","PATHEXT","ComSpec","USERNAME","USERDOMAIN","COMPUTERNAME","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE","PSModuleAnalysisCachePath"].flatMap((n)=>process.env[n]?[[n,process.env[n]]]:[])),t=f(e,"System32");return{...o,SystemRoot:e,windir:e,TEMP:L(),TMP:L(),PATH:[t,f(t,"WindowsPowerShell","v1.0"),e].join(mt)}}async function Lt(e,o,t){let n=_e().username,i={USER:n,LOGNAME:n,HOME:s(),PATH:`${U(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OBU:o,REASON_AUTOMATION_BACKGROUND_TABS:"1"},a=await Ct(o,i);return t.throwIfAborted(),{...i,REASON_AUTOMATION_OBU_INSTANCE:a}}function Ut(e){if(process.platform!=="win32")return["--input-type=module","--eval",e];let o=f(L(),`reason-automation-${nt("sha256").update(e).digest("hex").slice(0,16)}.mjs`);if(!M(o)||G(o,"utf8")!==e){let t=`${o}.${process.pid}.tmp`;dt(t,e,{mode:384}),he(t,o)}return[o]}function Re(e,o,t,n){if(typeof ae!=="string")return Promise.reject(new r("automation_unavailable","This Reason build has no automation runtime."));let i=ae;return new Promise((a,u)=>{let c=k(e,Ut(i),{env:{...o,REASON_CLOUD_GATEWAY_EXEC:"1",REASON_AUTOMATION_INLINE_RESULT:"1"},stdio:["pipe","pipe","pipe"],detached:process.platform!=="win32",windowsHide:!0}),d=[],m=0,l="",p=null,g=!1,_=(w)=>{if(p??=w,process.platform==="win32"&&c.pid){k(f(process.env.SystemRoot??"C:\\Windows","System32","taskkill.exe"),["/pid",String(c.pid),"/t","/f"],{stdio:"ignore",windowsHide:!0}).once("error",()=>c.kill("SIGKILL"));return}try{process.kill(-c.pid,"SIGKILL")}catch{c.kill("SIGKILL")}},h=(w)=>{if(g)return;g=!0,clearTimeout(v),n.removeEventListener("abort",S),w()},v=setTimeout(()=>_(new r("automation_timed_out","Reason automation did not finish in time.")),_t),S=()=>_(new r("cancelled","Reason cancelled the automation call."));if(n.addEventListener("abort",S,{once:!0}),c.stdout.on("data",(w)=>{if(m+=w.byteLength,m>ft)_(new r("automation_output_too_large","Reason automation output is too large."));else d.push(w)}),c.stderr.setEncoding("utf8").on("data",(w)=>{l=(l+w).slice(-gt)}),c.stdin.on("error",()=>{}),c.once("error",()=>h(()=>u(p??new r("automation_unavailable","Reason could not start the automation runtime.")))),c.once("close",(w)=>h(()=>{if(p)u(p);else a({code:w??1,stdout:Buffer.concat(d),stderr:l})})),n.aborted)S();c.stdin.end(t)})}var x=new Map;function $t(e,o,t){for(let[i,a]of x)if(a.expiresAt<=t)x.delete(i);while(x.size>=yt)x.delete(x.keys().next().value);let n=ge();return x.set(n,{runId:e,bytes:o,expiresAt:t+wt}),n}async function Ae(e,o,t,n={}){let i=await(n.environment??Ie)(e,o.kind==="browser");return t.throwIfAborted(),await(n.runtime??Re)(e.node,i,JSON.stringify(o),t)}async function wl(e,o){let t=we({call:e});if(!("call"in t))P();let n=T();if(!n?.features.computer||t.call.kind==="browser"&&!n.features.browser)throw new r("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");return await Ae(n,t.call,o)}function fe(e,o,t){let n=e.stdout.byteLength>H?$t(o,e.stdout,t):void 0;return{code:e.code,stderr:e.stderr,instance_id:xt,output_bytes:e.stdout.byteLength,chunk:e.stdout.subarray(0,H).toString("base64"),...n?{output_id:n}:{}}}async function Oo(e,o={}){let t=we(e.payload),n=(o.now??Date.now)();if("output_id"in t){let h=x.get(t.output_id);if(!h||h.runId!==e.runId||h.expiresAt<=n||t.offset>h.bytes.byteLength)throw new r("automation_output_unavailable","Reason automation output expired.");return{chunk:h.bytes.subarray(t.offset,t.offset+H).toString("base64")}}let i=(o.components??T)(),a=(o.platform??process.platform)==="darwin",u=a?(o.macIdentity??kr)():[],c=o.macSetup??C,d=!i?.features.computer||t.call.kind==="browser"&&!t.userChrome&&!i.features.browser;if(a&&(d||u.length===0||t.call.kind==="browser"&&t.userChrome&&!e.userChrome))return fe(await oe({runId:e.runId,call:t.call,identity:u,desktopMissing:d,signal:e.signal},c),e.runId,n);if(!i?.features.computer)throw new r("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");let m=t.userChrome?e.userChrome:void 0;if(t.userChrome&&!m)throw new r("automation_user_chrome_unavailable","Your own Chrome is not enabled on this computer: run `reason desktop install` on this Mac (and `reason connect --user-chrome on` if you turned it off).");if(t.call.kind==="browser"&&!m&&!i.features.browser)throw new r("automation_browser_not_installed",!i.platform.startsWith("linux")?"Browser use is unavailable on this machine: re-run `reason desktop install`.":"Browser use is unavailable on this machine: install a non-snap Chromium at /usr/bin/chromium, then re-run `reason desktop install`.");e.signal.throwIfAborted();let l=t.call.kind==="browser"&&t.call.operation!=="record_start"&&t.call.operation!=="record_stop",p=await pa(e.runId,e.signal,o.now,l?"call":"run"),g="account"in o?o.account??null:ue(),_;try{if(m){let h=await(o.userChromeEnvironment??Lt)(i,m,e.signal);e.signal.throwIfAborted(),_=await(o.runtime??Re)(i.node,h,JSON.stringify(t.call),e.signal)}else if(g)_=await(o.delegate??z)(g,t.call,e.signal);else _=await Ae(i,t.call,e.signal,o)}finally{p()}if(a)_=await re({runId:e.runId,call:t.call,identity:u,output:_,signal:e.signal},c);return fe(_,e.runId,n)}
956
- export{nn,hr,To,Io,Do,wl,Oo};
953
+ `;import{execFile as be,spawn as Se}from"child_process";import{closeSync as xe,mkdirSync as ve,openSync as Ie}from"fs";import{dirname as R,join as Re}from"path";import{promisify as ke}from"util";var Oe=ke(be),F="x-apple.systempreferences:com.apple.preference.security",Ae={accessibility:`${F}?Privacy_Accessibility`,screen:`${F}?Privacy_ScreenCapture`},Ee=64,I=new Map;function k(e,o){let t=I.get(e);if(t?.has(o))return!1;if(!t){if(I.size>=Ee)I.delete(I.keys().next().value);t=new Set,I.set(e,t)}return t.add(o),!0}function Ce(){let e=s(),o=ze(de(e),process.env),t=Re(e,".local","share","reason","desktop-install.log");ve(R(t),{recursive:!0,mode:448});let n=Ie(t,"a",384);try{let i=Se(o,["desktop","install"],{detached:!0,stdio:["ignore",n,n],env:{...process.env,REASON_DESKTOP_BACKGROUND:"1"}});i.on("error",()=>{return}),i.unref()}finally{xe(n)}}var O={open:async(e,o)=>{await Oe("/usr/bin/open",e,{signal:o,timeout:1e4,maxBuffer:8192})},request:(e,o)=>Rr(e,o),tile:Bi,installDesktop:Ce},H=!1;async function G(e,o,t){try{await o.open(["-a","Google Chrome",e],t)}catch{t.throwIfAborted(),await o.open([e],t)}}async function X(e,o,t,n){if(await t.open([Ae[o]],n).catch(()=>{}),e[0]&&!n.aborted)t.tile(R(R(R(e[0]))),o)}async function Ne(e,o,t,n,i){for(let a of t){if(!k(e,`grant:${a}`))continue;i.throwIfAborted(),await n.request(o,a).catch(()=>null),await X(o,a,n,i)}}var Pe={name:"open_tab",description:"Open a web page in the user's own Chrome on this Mac. Reason cannot read, screenshot or click in that tab, and no tab_id is returned: browser control needs Reason's Chrome extension. An actual browser call opens its setup page.",inputSchema:{type:"object",properties:{url:{type:"string",description:"An http or https URL."}},required:["url"],additionalProperties:!1}};function j(e){return{code:0,stderr:"",stdout:Buffer.from(JSON.stringify({ok:!0,...e}))}}function Me(e){if(typeof e!=="string")return null;try{let o=new URL(e);return o.protocol==="https:"||o.protocol==="http:"?o.href:null}catch{return null}}async function K(e,o=O){let{call:t,runId:n,signal:i}=e;if(t.kind==="browser"){if(t.operation==="discover")return j({result:{tools:[Pe]}});if(t.operation!=="call")throw new r("automation_browser_setup_required","Browser control is not set up on this Mac yet. Request a browser operation or connect Chrome from Reason to set it up.")}if(e.desktopMissing&&!H){H=!0;try{o.installDesktop()}catch{}}if(t.kind==="computer"){if(e.identity.length>0&&k(n,"grant:probe")){let c=await o.request(e.identity).catch(()=>null),l=c?[...c.accessibility?[]:["accessibility"],...c.screen?[]:["screen"]]:[];for(let f of l)k(n,`grant:${f}`);for(let f of l)await X(e.identity,f,o,i)}throw new r("automation_computer_setup_required","Computer use is not set up on this Mac yet; Reason asked macOS for any missing permission.")}if(k(n,"page:chrome-extension"))await G(yc,o,i).catch(()=>{});let a=t.arguments,u=t.operation==="call"&&t.tool==="open_tab"&&a&&typeof a==="object"&&!Array.isArray(a)?Me(a.url):null;if(!u)throw new r("automation_browser_setup_required","Browser control is not set up on this Mac yet; Reason opened its Chrome Web Store page. open_tab still opens pages.");return await G(u,o,i),j({result:{content:[{type:"text",text:JSON.stringify({opened:u,browser:"the user's Chrome",controllable:!1,note:"Opened for the user to see. Reason cannot read or act in this tab until Reason's Chrome extension is added (its Chrome Web Store page is open)."})}]}})}async function Y(e,o=O){if(e.call.kind!=="computer"||e.call.operation!=="permission_status"||e.output.code!==0||e.identity.length===0)return e.output;let t;try{t=JSON.parse(e.output.stdout.toString("utf8"))}catch{return e.output}if(!t||typeof t!=="object"||Array.isArray(t))return e.output;let n=t.permissions;if(!n||typeof n!=="object")return e.output;let i=n,a=[...i.accessibility==="missing"?["accessibility"]:[],...i.screenRecording==="missing"?["screen"]:[]];if(a.length===0)return e.output;return await Ne(e.runId,e.identity,a,o,e.signal),{...e.output,stdout:Buffer.from(JSON.stringify({...t,requested:a}))}}var L=172032,Ke=18874368,Ye=8192,Je=65536,Ve=55000,Ze=60000,Qe=4,et=40000,tt=/^[0-9a-f-]{36}$/,Z=q,ot=re();function E(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function T(){throw new r("invalid_automation_request","Reason automation request is malformed.")}function se(e){let o=Object.keys(e).sort().join(",");if(o==="call"||o==="browser,call"){let t=e.call,n=o==="browser,call";if(!E(t)||t.version!==1||t.kind!=="computer"&&t.kind!=="browser"||n&&(e.browser!==$r||t.kind!=="browser")||JSON.stringify(t).length>Je)T();return{call:t,userChrome:n}}if(o==="offset,output_id"){if(typeof e.output_id!=="string"||!tt.test(e.output_id)||!Number.isSafeInteger(e.offset)||e.offset<0)T();return{output_id:e.output_id,offset:e.offset}}return T()}function hr(e=process.platform,o=A){if(e==="darwin")return!0;return(e==="linux"||e==="win32")&&o()?.features.computer===!0}var rt="__computer-use";function Oo(e=A){return e()?.userChrome??{code:"user_chrome_browser_use_missing"}}function ae(e,o,t,n){return new Promise((i)=>{let a=S(e,o,{env:t,stdio:"ignore",windowsHide:!0}),u=setTimeout(()=>{a.kill("SIGKILL"),i(-1)},n);a.once("error",()=>{clearTimeout(u),i(-1)}),a.once("exit",(c)=>{clearTimeout(u),i(c??-1)})})}function nt(e,o,t,n){return new Promise((i)=>{let a=S(e,o,{env:t,stdio:["ignore","pipe","ignore"],windowsHide:!0}),u="";a.stdout.setEncoding("utf8").on("data",(l)=>{u+=l});let c=setTimeout(()=>{a.kill("SIGKILL"),i(null)},n);a.once("error",()=>{clearTimeout(c),i(null)}),a.once("close",(l)=>{clearTimeout(c),i(l===0?u:null)})})}function it(e){return x(e)?m(P(),"open-browser-use"):"/tmp/open-browser-use"}function x(e){return e.platform==="win32-x64"||e.platform==="win32-arm64"}var st=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,at=33554432;function ct(e,o){let t;try{t=e===null?null:JSON.parse(e)}catch{return null}let n=E(t)&&E(t.result)?t.result.metadata:null;if(!E(n)||n.extensionId!==o)return null;return typeof n.extensionInstanceId==="string"&&st.test(n.extensionInstanceId)?n.extensionInstanceId:null}async function ce(e,o,t){let n=t.storages.map((c)=>{try{return N(c).filter((l)=>l.endsWith(".log")||l.endsWith(".ldb")).map((l)=>m(c,l))}catch{return[]}}),i;try{i=n.some((c)=>c.length>0)?N(t.socketDir).filter((c)=>c.endsWith(".sock")):[]}catch{return[]}let a=[];for(let c of i){let l=m(t.socketDir,c),f=ct(await nt(e,["info","--socket",l,"--timeout","2s"],o,5000),t.extensionId);if(f)a.push({instance:f,socket:l})}let u=[];for(let[c,l]of(a.length>0?n:[]).entries())for(let f of l)try{if(He(f).size>at)continue;let p=W(f),d=a.find((g)=>p.includes(g.instance));if(d){u.push({storage:t.storages[c],...d});break}}catch{}return u}async function lt(e,o,t){return(await ce(e,o,t))[0]?.instance??null}function pe(e,o,t){return lt(e.nativeHost,o,{socketDir:it(e),extensionId:le,storages:[m(t,"browser-profile","Default","Local Extension Settings",le)]})}var Q=/^(Default|Profile ([0-9]+))$/;async function ut(e,o,t=s(),n=Sr){let i=m(t,"Library","Application Support","Google","Chrome"),a=[];try{a=N(i)}catch(p){if(p.code==="EPERM")throw new r("browser_use_chrome_access_denied","macOS blocked Reason from reading Chrome's profiles. Allow Full Disk Access for Reason on this Mac and try again.")}let u=(p)=>Number(Q.exec(p)?.[2]??-1),c=a.filter((p)=>Q.test(p)&&C(m(i,p,"Extensions",Xt))).sort((p,d)=>u(p)-u(d)),l=(p)=>m(i,p,"Local Extension Settings",Xt);return(await ce(e,o,{socketDir:n,extensionId:Xt,storages:c.map(l)})).map(({storage:p,instance:d,socket:g})=>({profile:c.find((h)=>l(h)===p),instance:d,socket:g}))}async function dt(e,o,t=s(),n=Sr){let i=(await ut(e,o,t,n))[0]?.instance;if(!i)throw new r("automation_user_chrome_not_connected","No Chrome profile on this Mac is connected to Reason. Open Chrome with the Reason extension, then try again.");return i}function ee(e){return new Promise((o)=>{let t=je({path:e}),n=(i)=>{t.destroy(),o(i)};t.setTimeout(1000,()=>n(!1)),t.once("error",()=>n(!1)),t.once("connect",()=>n(!0))})}async function me(e,o){let t=Date.now()+o;while(Date.now()<t){if(await e())return!0;await new Promise((n)=>setTimeout(n,200))}return!1}var D=new Map;function U(e,o){let t=D.get(e);if(!t)t=o().finally(()=>D.delete(e)),D.set(e,t);return t}async function pt(e,o){if(await ee(e))return;if(Fe(e,{force:!0}),await ae("dbus-daemon",["--session",`--address=unix:path=${e}`,"--fork"],o,1e4)!==0||!await me(()=>ee(e),5000))throw new r("automation_unavailable","Reason could not start the desktop session bus.");br("dbus-daemon",`--address=unix:path=${e}`)}async function te(e,o,t){let n=e.platform==="darwin-arm64"||x(e)?async()=>await pe(e,o,t)!==null:async()=>await ae(e.nativeHost,["info"],o,5000)===0;if(await n())return;let i=["--profile-directory=Default",`--load-extension=${e.extensionDir}`,"--no-first-run","--no-default-browser-check","--window-size=1280,800","about:blank"],a,u=null,c=0;if(e.platform==="darwin-arm64"){let d=m(t,"browser-profile");Te(d);let g=m(d,"NativeMessagingHosts");z(g,{recursive:!0,mode:448});let h=Er(e.platform).nativeHostManifests[0];J(h,m(g,V(h)));let _=e.browser.slice(0,e.browser.indexOf(".app/")+4),y=i.filter((v)=>v!=="about:blank").concat("--no-startup-window","--use-mock-keychain");a=S("/usr/bin/open",["-g","-n","-a",_,"--args",`--user-data-dir=${d}`,...y],{env:o,stdio:"ignore"})}else if(x(e)){let d=m(t,"browser-profile");Te(d),De(B("icacls"),[M(e.browser),"/grant","*S-1-15-2-1:(OI)(CI)(RX)","*S-1-15-2-2:(OI)(CI)(RX)"],{stdio:"ignore",windowsHide:!0,timeout:60000});let g=i.filter((h)=>h!=="about:blank").concat("--no-startup-window","--keep-alive-for-test");a=S(e.browser,[`--user-data-dir=${d}`,...g],{detached:!0,stdio:"ignore",env:o})}else{let d=m(o.HOME,".config","google-chrome"),g=m(d,"NativeMessagingHosts");z(g,{recursive:!0,mode:448});let h=Er(e.platform).nativeHostManifests[0];J(h,m(g,V(h)));let _=process.geteuid?.()===0?["--no-sandbox"]:[];u=m(t,"browser.log");let y=We(u,"a",384);c=Be(y).size,a=S(e.browser,[`--user-data-dir=${d}`,...i,..._,"--force-renderer-accessibility"],{detached:!0,stdio:["ignore",y,y],env:{...o,ACCESSIBILITY_ENABLED:"1"}}),$e(y),Ue(a.pid)}let l=!1,f=!1;a.once("error",()=>{l=!0}),a.once("exit",(d)=>{l||=d!==0,f=d===0}),a.unref();let p=!1;if(await me(async()=>l||(p=await n()),et),!p){if(u&&W(u).subarray(c).toString("utf8").includes("No usable sandbox"))throw new r("automation_browser_sandbox_unavailable","Chromium found no usable sandbox on this machine. Run the worker as a non-root user with unprivileged user namespaces enabled, or in a container with seccomp unconfined.");if(f)wr("browser");throw new r("automation_browser_unavailable","Reason could not connect the desktop browser.")}}async function No(e){await ge(e,!0)}function Lo(e){return fe(e,he(e))}function fe(e,o){return e.platform==="darwin-arm64"||x(e)?m(o,"browser-profile"):m(o,"home",".config","google-chrome")}function he(e){let o=m(e.root,"automation");if(!C(o)||!mt(e.automation))return e.automation;if(!ft(fe(e,o)))try{ne(o,e.automation)}catch{}return C(o)?o:e.automation}function mt(e){try{return N(e).length===0}catch(o){return o.code==="ENOENT"}}function ft(e){let o;try{o=qe(m(e,"SingletonLock"))}catch{return!1}let t=Number(o.slice(o.lastIndexOf("-")+1));if(!Number.isSafeInteger(t)||t<=0)return!0;try{return process.kill(t,0),!0}catch(n){return n.code==="EPERM"}}async function ge(e,o){qr({root:e.root,automation:e.automation,extensionDir:e.extensionDir});let t=he(e);Te(t);let n=ie().username,i={USER:n,LOGNAME:n,REASON_AUTOMATION_OCU:e.ocu,REASON_AUTOMATION_OBU:e.nativeHost};if(e.platform==="darwin-arm64"||x(e)){let p=x(e)?{...i,...ht(),HOME:s()}:{...i,HOME:s(),PATH:`${M(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OCU:process.execPath,REASON_AUTOMATION_OCU_SUBCOMMAND:rt};if(!o)return p;await U("browser",()=>te(e,p,t));let d=await pe(e,p,t);if(!d)throw new r("automation_browser_unavailable","Reason could not connect the desktop browser.");return{...p,REASON_AUTOMATION_OBU_INSTANCE:d,REASON_AUTOMATION_BACKGROUND_TABS:"1"}}let a=await jt(),u=m(t,"home"),c=m(t,"runtime");Te(u),Te(c);let l=m(t,"bus"),f={...i,HOME:u,PATH:`${M(e.node)}:/usr/bin:/bin`,DISPLAY:a.display,XAUTHORITY:a.xauthority,XDG_RUNTIME_DIR:c,DBUS_SESSION_BUS_ADDRESS:`unix:path=${l}`,...a.sound?{PULSE_SERVER:Kt(a.sound)}:{}};if(await U("bus",()=>pt(l,f)),o)await U("browser",()=>te(e,f,t));return f}function ht(){let e=process.env.SystemRoot??"C:\\Windows",o=Object.fromEntries(["SystemDrive","USERPROFILE","LOCALAPPDATA","APPDATA","ProgramData","ProgramFiles","PATHEXT","ComSpec","USERNAME","USERDOMAIN","COMPUTERNAME","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE","PSModuleAnalysisCachePath"].flatMap((n)=>process.env[n]?[[n,process.env[n]]]:[])),t=m(e,"System32");return{...o,SystemRoot:e,windir:e,TEMP:P(),TMP:P(),PATH:[t,m(t,"WindowsPowerShell","v1.0"),e].join(Xe)}}async function gt(e,o,t){let n=ie().username,i={USER:n,LOGNAME:n,HOME:s(),PATH:`${M(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OBU:o,REASON_AUTOMATION_BACKGROUND_TABS:"1"},a=await dt(o,i);return t.throwIfAborted(),{...i,REASON_AUTOMATION_OBU_INSTANCE:a}}function _t(e){if(process.platform!=="win32")return["--input-type=module","--eval",e];let o=m(P(),`reason-automation-${Le("sha256").update(e).digest("hex").slice(0,16)}.mjs`);if(!C(o)||W(o,"utf8")!==e){let t=`${o}.${process.pid}.tmp`;Ge(t,e,{mode:384}),ne(t,o)}return[o]}function _e(e,o,t,n){if(typeof Z!=="string")return Promise.reject(new r("automation_unavailable","This Reason build has no automation runtime."));let i=Z;return new Promise((a,u)=>{let c=S(e,_t(i),{env:{...o,REASON_CLOUD_GATEWAY_EXEC:"1",REASON_AUTOMATION_INLINE_RESULT:"1"},stdio:["pipe","pipe","pipe"],detached:process.platform!=="win32",windowsHide:!0}),l=[],f=0,p="",d=null,g=!1,h=(w)=>{if(d??=w,process.platform==="win32"&&c.pid){S(m(process.env.SystemRoot??"C:\\Windows","System32","taskkill.exe"),["/pid",String(c.pid),"/t","/f"],{stdio:"ignore",windowsHide:!0}).once("error",()=>c.kill("SIGKILL"));return}try{process.kill(-c.pid,"SIGKILL")}catch{c.kill("SIGKILL")}},_=(w)=>{if(g)return;g=!0,clearTimeout(y),n.removeEventListener("abort",v),w()},y=setTimeout(()=>h(new r("automation_timed_out","Reason automation did not finish in time.")),Ve),v=()=>h(new r("cancelled","Reason cancelled the automation call."));if(n.addEventListener("abort",v,{once:!0}),c.stdout.on("data",(w)=>{if(f+=w.byteLength,f>Ke)h(new r("automation_output_too_large","Reason automation output is too large."));else l.push(w)}),c.stderr.setEncoding("utf8").on("data",(w)=>{p=(p+w).slice(-Ye)}),c.stdin.on("error",()=>{}),c.once("error",()=>_(()=>u(d??new r("automation_unavailable","Reason could not start the automation runtime.")))),c.once("close",(w)=>_(()=>{if(d)u(d);else a({code:w??1,stdout:Buffer.concat(l),stderr:p})})),n.aborted)v();c.stdin.end(t)})}var b=new Map;function wt(e,o,t){for(let[i,a]of b)if(a.expiresAt<=t)b.delete(i);while(b.size>=Qe)b.delete(b.keys().next().value);let n=re();return b.set(n,{runId:e,bytes:o,expiresAt:t+Ze}),n}async function we(e,o,t,n={}){let i=await(n.environment??ge)(e,o.kind==="browser");return t.throwIfAborted(),await(n.runtime??_e)(e.node,i,JSON.stringify(o),t)}async function Cl(e,o){let t=se({call:e});if(!("call"in t))T();let n=A();if(!n?.features.computer||t.call.kind==="browser"&&!n.features.browser)throw new r("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");return await we(n,t.call,o)}function oe(e,o,t){let n=e.stdout.byteLength>L?wt(o,e.stdout,t):void 0;return{code:e.code,stderr:e.stderr,instance_id:ot,output_bytes:e.stdout.byteLength,chunk:e.stdout.subarray(0,L).toString("base64"),...n?{output_id:n}:{}}}async function $o(e,o={}){let t=se(e.payload),n=(o.now??Date.now)();if("output_id"in t){let _=b.get(t.output_id);if(!_||_.runId!==e.runId||_.expiresAt<=n||t.offset>_.bytes.byteLength)throw new r("automation_output_unavailable","Reason automation output expired.");return{chunk:_.bytes.subarray(t.offset,t.offset+L).toString("base64")}}let i=(o.components??A)(),a=(o.platform??process.platform)==="darwin",u=a?(o.macIdentity??Tr)():[],c=o.macSetup??O,l=!i?.features.computer||t.call.kind==="browser"&&!t.userChrome&&!i.features.browser;if(a&&(l||u.length===0||t.call.kind==="browser"&&t.userChrome&&!e.userChrome))return oe(await K({runId:e.runId,call:t.call,identity:u,desktopMissing:l,signal:e.signal},c),e.runId,n);if(!i?.features.computer)throw new r("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");let f=t.userChrome?e.userChrome:void 0;if(t.userChrome&&!f)throw new r("automation_user_chrome_unavailable","Your own Chrome is not enabled on this computer: run `reason desktop install` on this Mac (and `reason connect --user-chrome on` if you turned it off).");if(t.call.kind==="browser"&&!f&&!i.features.browser)throw new r("automation_browser_not_installed",!i.platform.startsWith("linux")?"Browser use is unavailable on this machine: re-run `reason desktop install`.":"Browser use is unavailable on this machine: install a non-snap Chromium at /usr/bin/chromium, then re-run `reason desktop install`.");e.signal.throwIfAborted();let p=t.call.kind==="browser"&&t.call.operation!=="record_start"&&t.call.operation!=="record_stop",d=await ba(e.runId,e.signal,o.now,p?"call":"run"),g="account"in o?o.account??null:ue(),h;try{if(f){let _=await(o.userChromeEnvironment??gt)(i,f,e.signal);e.signal.throwIfAborted(),h=await(o.runtime??_e)(i.node,_,JSON.stringify(t.call),e.signal)}else if(g)h=await(o.delegate??Yo)(g,t.call,e.signal);else h=await we(i,t.call,e.signal,o)}finally{d()}if(a)h=await Y({runId:e.runId,call:t.call,identity:u,output:h,signal:e.signal},c);return oe(h,e.runId,n)}
954
+ export{hr,Oo,No,Lo,Cl,$o};
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{w}from"./vm-hands-entry-lite-q9s1e2y1.js";import{existsSync as T,mkdirSync as k,readFileSync as d,rmSync as y,writeFileSync as b}from"fs";import{homedir as l,hostname as M}from"os";import{dirname as N,join as h}from"path";function f(t){let e=t.trim().slice(t.trim().indexOf("#")+1),o=["rn1-","tincan1"].find((a)=>e.startsWith(a));if(!o)return null;let n=Buffer.from(e.slice(o.length),"base64url"),r=32,i=(a)=>(r+=a,r<=n.length),m=()=>{let a=n[r];if(a===void 0||!i(1))return!1;if(a!==255)return i(a);let s=n[r];return s!==void 0&&i(1)&&i(s)};if(n.length<32||!m()||!m()||!m())return null;let u=n[r];if(u===void 0||!i(1))return null;for(let a=0;a<u;a+=1){let s=n[r];if(!i(1)||!i(s===4?4:s===6?16:Number.NaN)||!i(2))return null}let g=[];for(;r+32<=n.length;r+=32)g.push(n.subarray(r,r+32).toString("hex"));return{team:n.subarray(0,16).toString("hex"),name:n.subarray(33,33+n[32]).toString("utf8"),secret:n.subarray(16,32).toString("hex"),machines:g}}var p=(t)=>h(t,".reason","ask.json");function A(t){try{let e=JSON.parse(d(p(t),"utf8"));if(typeof e.orgId!=="string"||typeof e.team!=="string")return null;let o=e.pendingRotation;return{orgId:e.orgId,team:e.team,...typeof e.checkedAt==="number"?{checkedAt:e.checkedAt}:{},...o&&typeof o.link==="string"&&typeof o.team==="string"&&typeof o.replaces==="string"?{pendingRotation:o}:{}}}catch{return null}}var c=(t)=>{let e=w();return h(t,".reason",e==="production"?"network-team.json":`network-team.${e}.json`)};function ma(t=l()){return c(t).replace(/\.json$/,"-login.json")}function ga(t=l()){try{let e=JSON.parse(d(c(t),"utf8"));return typeof e.team==="string"?{team:e.team,setupDone:e.setupDone===!0,registered:typeof e.registered==="string"?e.registered:null,account:typeof e.account==="string"?e.account:null}:null}catch{return null}}function _a(t,e=l()){k(N(c(e)),{recursive:!0}),b(c(e),`${JSON.stringify(t)}
3
- `,{mode:384}),y(p(e),{force:!0})}function Ur(t=l()){let e=A(t);return e?{orgId:e.orgId,team:e.team}:null}function zr(t){let e=f(t);return e&&e.machines.length>0?{teamId:e.team,teamName:e.name,secret:e.secret}:null}
4
- export{ma,ga,_a,Ur,zr};
2
+ import{w}from"./vm-hands-entry-lite-33at6g06.js";import{existsSync as T,mkdirSync as k,readFileSync as d,rmSync as y,writeFileSync as b}from"fs";import{homedir as l,hostname as M}from"os";import{dirname as N,join as h}from"path";function f(t){let e=t.trim().slice(t.trim().indexOf("#")+1),o=["rn1-","tincan1"].find((a)=>e.startsWith(a));if(!o)return null;let n=Buffer.from(e.slice(o.length),"base64url"),r=32,i=(a)=>(r+=a,r<=n.length),m=()=>{let a=n[r];if(a===void 0||!i(1))return!1;if(a!==255)return i(a);let s=n[r];return s!==void 0&&i(1)&&i(s)};if(n.length<32||!m()||!m()||!m())return null;let u=n[r];if(u===void 0||!i(1))return null;for(let a=0;a<u;a+=1){let s=n[r];if(!i(1)||!i(s===4?4:s===6?16:Number.NaN)||!i(2))return null}let g=[];for(;r+32<=n.length;r+=32)g.push(n.subarray(r,r+32).toString("hex"));return{team:n.subarray(0,16).toString("hex"),name:n.subarray(33,33+n[32]).toString("utf8"),secret:n.subarray(16,32).toString("hex"),machines:g}}var p=(t)=>h(t,".reason","ask.json");function A(t){try{let e=JSON.parse(d(p(t),"utf8"));if(typeof e.orgId!=="string"||typeof e.team!=="string")return null;let o=e.pendingRotation;return{orgId:e.orgId,team:e.team,...typeof e.checkedAt==="number"?{checkedAt:e.checkedAt}:{},...o&&typeof o.link==="string"&&typeof o.team==="string"&&typeof o.replaces==="string"?{pendingRotation:o}:{}}}catch{return null}}var c=(t)=>{let e=w();return h(t,".reason",e==="production"?"network-team.json":`network-team.${e}.json`)};function Ea(t=l()){return c(t).replace(/\.json$/,"-login.json")}function ka(t=l()){try{let e=JSON.parse(d(c(t),"utf8"));return typeof e.team==="string"?{team:e.team,setupDone:e.setupDone===!0,registered:typeof e.registered==="string"?e.registered:null,account:typeof e.account==="string"?e.account:null}:null}catch{return null}}function xa(t,e=l()){k(N(c(e)),{recursive:!0}),b(c(e),`${JSON.stringify(t)}
3
+ `,{mode:384}),y(p(e),{force:!0})}function Kr(t=l()){let e=A(t);return e?{orgId:e.orgId,team:e.team}:null}function Jr(t){let e=f(t);return e&&e.machines.length>0?{teamId:e.team,teamName:e.name,secret:e.secret}:null}
4
+ export{Ea,ka,xa,Kr,Jr};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- var On={name:"github-native-engineer-device-worker-production",version:"0.2.561",private:!0,type:"module",engines:{node:">=22",bun:">=1.3.0"},workspaces:["../../packages/runtime-distribution"],dependencies:{"@agentclientprotocol/sdk":"1.9.0","@anthropic-ai/sandbox-runtime":"^0.0.80","@earendil-works/pi-tui":"1.0.0","@reason/runtime-distribution":"workspace:*",diff:"8.0.4","open-browser-use-sdk":"0.1.42","playwright-core":"1.60.0",toml:"5.0.1",zod:"^4.4.3"},overrides:{"@hono/node-server":"^1.19.15","@earendil-works/pi-agent-core":"1.0.0","@earendil-works/pi-ai":"1.0.0","@earendil-works/pi-coding-agent":"1.0.0","@earendil-works/chord":"1.0.0","@earendil-works/pi-codemode":"1.0.0","@earendil-works/pi-mcp":"1.0.0","@earendil-works/pi-telemetry":"1.0.0","@earendil-works/pi-tui":"1.0.0","brace-expansion":"2.1.7",axios:"^1.20.0","basic-ftp":"^6.2.1","@grpc/grpc-js":"^1.14.5",browserslist:"^4.28.8","engine.io":"^6.6.7","fast-uri":"^3.1.8",hono:"^4.13.7","ip-address":"^10.7.4",nanoid:"^3.3.18",dompurify:"^3.4.17",postcss:"^8.5.23",qs:"^6.16.0","shell-quote":"^1.11.0","socket.io-parser":"^4.2.7",tmp:"^0.2.7",toml:"^5.0.1",undici:"^8.10.2",ws:"^8.21.0","js-yaml":"^4.3.2","@modelcontextprotocol/sdk":"^1.31.0","proxy-addr":"^2.0.8","source-map-js":"^1.2.2"}};
3
- export{On};
2
+ var $n={name:"github-native-engineer-device-worker-production",version:"0.2.563",private:!0,type:"module",engines:{node:">=22",bun:">=1.3.0"},workspaces:["../../packages/runtime-distribution"],dependencies:{"@agentclientprotocol/sdk":"1.9.0","@anthropic-ai/sandbox-runtime":"^0.0.80","@earendil-works/pi-tui":"1.0.0","@reason/runtime-distribution":"workspace:*",diff:"8.0.4","open-browser-use-sdk":"0.1.42","playwright-core":"1.60.0",toml:"5.0.1",zod:"^4.4.3"},overrides:{"@hono/node-server":"^1.19.15","@earendil-works/pi-agent-core":"1.0.0","@earendil-works/pi-ai":"1.0.0","@earendil-works/pi-coding-agent":"1.0.0","@earendil-works/chord":"1.0.0","@earendil-works/pi-codemode":"1.0.0","@earendil-works/pi-mcp":"1.0.0","@earendil-works/pi-telemetry":"1.0.0","@earendil-works/pi-tui":"1.0.0","brace-expansion":"2.1.7",axios:"^1.20.0","basic-ftp":"^6.2.1","@grpc/grpc-js":"^1.14.5",browserslist:"^4.28.8","engine.io":"^6.6.7","fast-uri":"^3.1.8",hono:"^4.13.7","ip-address":"^10.7.4",nanoid:"^3.3.18",dompurify:"^3.4.17",postcss:"^8.5.23",qs:"^6.16.0","shell-quote":"^1.11.0","socket.io-parser":"^4.2.7",tmp:"^0.2.7",toml:"^5.0.1",undici:"^8.10.2",ws:"^8.21.0","js-yaml":"^4.3.2","@modelcontextprotocol/sdk":"^1.31.0","proxy-addr":"^2.0.8","source-map-js":"^1.2.2"}};
3
+ export{$n};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- var st=".reason/workspace",Et="workspace_base",Oe="sessions",kt="workspace_layout",Ge=".reason/workspace/sessions",Cr=/^[0-9a-f]{8}$/;function Zt(t){if(!Ne(t))return!1;let e=".reason/workspace/sessions/";if(!t.startsWith(e))return!1;let n=t.slice(e.length).split("/");return n.length===2&&Cr.test(n[0])}var i=4096,S="workspaces/pi";function Ne(t){if(typeof t!=="string"||!t||t.length>i)return!1;if(t.startsWith("/")||t.includes("\x00")||t.includes("\\"))return!1;return t.split("/").every((e)=>e!==""&&e!=="."&&e!=="..")}function X(t){if(t.kind==="root"){if(t.path===void 0)return".";if(!Ne(t.path))throw Error("invalid_device_workspace_identity");return t.path}if(!/^[A-Za-z0-9][A-Za-z0-9._:-]{0,159}$/.test(t.workspaceId)||t.workspaceId==="."||t.workspaceId==="..")throw Error("invalid_device_workspace_identity");let e=t.layout==="sessions"?"sessions":S;return`${t.base?`${t.base}/`:""}${e}/${t.workspaceId}/repo`}function te(t){if(!t||typeof t!=="object"||Array.isArray(t))return null;let e=t;if(e.kind==="root"&&Object.keys(e).length===1)return{kind:"root"};if(e.kind==="root"&&Object.keys(e).length===2&&Ne(e.path))return{kind:"root",path:e.path};if(e.kind!=="managed"||typeof e.workspaceId!=="string"||Object.keys(e).length!==2+(e.base===void 0?0:1)+(e.layout===void 0?0:1)||e.base!==void 0&&e.base!==".reason/workspace"||e.layout!==void 0&&e.layout!=="sessions")return null;let n={kind:"managed",workspaceId:e.workspaceId,...e.base===".reason/workspace"?{base:".reason/workspace"}:{},...e.layout==="sessions"?{layout:"sessions"}:{}};try{return X(n),n}catch{return null}}var c="/home/runner";var Fi="/run/reason/sessions",O=/^(?:\/[A-Za-z0-9._-]+)+$/,ji=/-sidechat-([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/,Hi=/^(.+)-repository-[a-z0-9][a-z0-9._-]*-[0-9a-f]{12}$/;function a(t){return ji.exec(t)?.[1]??Hi.exec(t)?.[1]??t}var Nn=/^((?:\/[A-Za-z0-9._-]+)+)\/\.reason\/workspace\/(workspaces\/pi|sessions)\/([^/]+)$/;function _(t,e=c,n="sessions"){if(!O.test(e)||e.split("/").some((s)=>s==="."||s===".."))throw Error("invalid_cloud_payload_home");let r=`${e}/${X({kind:"managed",workspaceId:t,base:".reason/workspace",...n?{layout:n}:{}})}`,o=`${Fi}/${a(t)}`;return{home:e,root:r.slice(0,-5),checkout:r,control:o,jobEnv:`${o}/job.env`,cloudAccess:`${o}/cloud-access`,logs:`${o}/logs`,pin:`${o}/ws`}}function E(t){return Nn.exec(t.replace(/\/+$/,""))?.[2]==="sessions"?"sessions":null}function Ui(t){let e=Nn.exec(t.replace(/\/+$/,""));if(!e)return null;try{let n=_(e[3],e[1],E(t));return n.root===t.replace(/\/+$/,"")?n:null}catch{return null}}
3
- export{st,Et,Oe,kt,Ge,Cr,Zt,Ne,X,te,Fi,ji,Hi,Nn,Ui};
2
+ var at=".reason/workspace",kt="workspace_base",Oe="sessions",xt="workspace_layout",Ke=".reason/workspace/sessions",Dr=/^[0-9a-f]{8}$/;function Zt(t){if(!Ne(t))return!1;let e=".reason/workspace/sessions/";if(!t.startsWith(e))return!1;let n=t.slice(e.length).split("/");return n.length===2&&Dr.test(n[0])}var i=4096,S="workspaces/pi";function Ne(t){if(typeof t!=="string"||!t||t.length>i)return!1;if(t.startsWith("/")||t.includes("\x00")||t.includes("\\"))return!1;return t.split("/").every((e)=>e!==""&&e!=="."&&e!=="..")}function X(t){if(t.kind==="root"){if(t.path===void 0)return".";if(!Ne(t.path))throw Error("invalid_device_workspace_identity");return t.path}if(!/^[A-Za-z0-9][A-Za-z0-9._:-]{0,159}$/.test(t.workspaceId)||t.workspaceId==="."||t.workspaceId==="..")throw Error("invalid_device_workspace_identity");let e=t.layout==="sessions"?"sessions":S;return`${t.base?`${t.base}/`:""}${e}/${t.workspaceId}/repo`}function te(t){if(!t||typeof t!=="object"||Array.isArray(t))return null;let e=t;if(e.kind==="root"&&Object.keys(e).length===1)return{kind:"root"};if(e.kind==="root"&&Object.keys(e).length===2&&Ne(e.path))return{kind:"root",path:e.path};if(e.kind!=="managed"||typeof e.workspaceId!=="string"||Object.keys(e).length!==2+(e.base===void 0?0:1)+(e.layout===void 0?0:1)||e.base!==void 0&&e.base!==".reason/workspace"||e.layout!==void 0&&e.layout!=="sessions")return null;let n={kind:"managed",workspaceId:e.workspaceId,...e.base===".reason/workspace"?{base:".reason/workspace"}:{},...e.layout==="sessions"?{layout:"sessions"}:{}};try{return X(n),n}catch{return null}}var c="/home/runner";var Ui="/run/reason/sessions",O=/^(?:\/[A-Za-z0-9._-]+)+$/,zi=/-sidechat-([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/,qi=/^(.+)-repository-[a-z0-9][a-z0-9._-]*-[0-9a-f]{12}$/;function a(t){return zi.exec(t)?.[1]??qi.exec(t)?.[1]??t}var Mn=/^((?:\/[A-Za-z0-9._-]+)+)\/\.reason\/workspace\/(workspaces\/pi|sessions)\/([^/]+)$/;function _(t,e=c,n="sessions"){if(!O.test(e)||e.split("/").some((s)=>s==="."||s===".."))throw Error("invalid_cloud_payload_home");let r=`${e}/${X({kind:"managed",workspaceId:t,base:".reason/workspace",...n?{layout:n}:{}})}`,o=`${Ui}/${a(t)}`;return{home:e,root:r.slice(0,-5),checkout:r,control:o,jobEnv:`${o}/job.env`,cloudAccess:`${o}/cloud-access`,logs:`${o}/logs`,pin:`${o}/ws`}}function E(t){return Mn.exec(t.replace(/\/+$/,""))?.[2]==="sessions"?"sessions":null}function Wi(t){let e=Mn.exec(t.replace(/\/+$/,""));if(!e)return null;try{let n=_(e[3],e[1],E(t));return n.root===t.replace(/\/+$/,"")?n:null}catch{return null}}
3
+ export{at,kt,Oe,xt,Ke,Dr,Zt,Ne,X,te,Ui,zi,qi,Mn,Wi};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{P}from"./vm-hands-entry-lite-2rgf8866.js";import{w}from"./vm-hands-entry-lite-q9s1e2y1.js";import{it,Qo,Oi,qe}from"./vm-hands-entry-lite-sy7dcccg.js";import{ss,Dn,Oc}from"./vm-hands-entry-lite-6jxshhps.js";import{B}from"./vm-hands-entry-lite-8xv6c0rm.js";import{spawnSync as v}from"child_process";import{createHash as Se,randomUUID as we}from"crypto";import{chmodSync as $e,existsSync as T,mkdirSync as ye,readdirSync as Fe,readFileSync as p,renameSync as ve,rmSync as u,statSync as be,writeFileSync as We}from"fs";import{dirname as Ae,isAbsolute as q,join as g}from"path";import{spawnSync as ue}from"child_process";import{readFileSync as me}from"fs";import{userInfo as O}from"os";import{join as fe}from"path";var ge="REASON_SCHEDULED_TASK";function Ti(r){return fe(r,"AppData","Local","Reason","Tasks")}function S(r){if(/[\0-\x1f\x7f"%]/.test(r))throw Error(`A background task cannot use a value with a double quote, percent sign or control character: ${r}`);return`'${r.replace(/['\u2018\u2019\u201a\u201b]/g,"$&$&")}'`}function D(r){if(!/^[A-Za-z0-9._-]+$/.test(r))throw Error(`Invalid Windows Scheduled Task name: ${r}`);return`$env:${ge}=${S(r)};`}function H(r){let e=Object.entries(r.environment).map(([t,i])=>{if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw Error(`Invalid Windows Scheduled Task environment name: ${t}`);return`$env:${t}=${S(i)};`}),n=`$global:LASTEXITCODE=1; & ${[r.program,...r.args].map(S).join(" ")} 2>&1 | ForEach-Object { Add-Content -LiteralPath ${S(r.log)} -Value $_.ToString() -Encoding UTF8 }; $c=$LASTEXITCODE;`;return[D(r.name),...e,"$ErrorActionPreference='Continue';",r.keepAlive?`do { ${n} if ($c) { Start-Sleep -Seconds 10 } } while ($c)`:`${n} exit $c`].join(" ")}function I(r){return r.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&apos;")}function pe(){let r=process.env.USERDOMAIN?.trim();return r?`${r}\\${O().username}`:O().username}function M(r){let e=I(r.user??pe()),n=r.schedule==="logon",t=r.schedule==="logon"?`<LogonTrigger><Enabled>true</Enabled><UserId>${e}</UserId></LogonTrigger>`:`<TimeTrigger><Repetition><Interval>PT${r.schedule.everyMinutes}M</Interval><StopAtDurationEnd>false</StopAtDurationEnd></Repetition><StartBoundary>2026-01-01T00:00:00</StartBoundary><Enabled>true</Enabled></TimeTrigger>`,i=`-NoProfile -NonInteractive -ExecutionPolicy Bypass -WindowStyle Hidden -Command "${r.script}"`;return`<?xml version="1.0" encoding="UTF-16"?>
2
+ import{R}from"./vm-hands-entry-lite-z65xva21.js";import{w}from"./vm-hands-entry-lite-33at6g06.js";import{ot,as,$i,We}from"./vm-hands-entry-lite-y0jtj8zz.js";import{fs,Ln,jc}from"./vm-hands-entry-lite-thstg177.js";import{B}from"./vm-hands-entry-lite-pg7nnyc6.js";import{spawnSync as v}from"child_process";import{createHash as Se,randomUUID as we}from"crypto";import{chmodSync as $e,existsSync as T,mkdirSync as ye,readdirSync as Fe,readFileSync as p,renameSync as ve,rmSync as u,statSync as be,writeFileSync as Ae}from"fs";import{dirname as xe,isAbsolute as q,join as g}from"path";import{spawnSync as ue}from"child_process";import{readFileSync as me}from"fs";import{userInfo as O}from"os";import{join as fe}from"path";var ge="REASON_SCHEDULED_TASK";function Oi(r){return fe(r,"AppData","Local","Reason","Tasks")}function S(r){if(/[\0-\x1f\x7f"%]/.test(r))throw Error(`A background task cannot use a value with a double quote, percent sign or control character: ${r}`);return`'${r.replace(/['\u2018\u2019\u201a\u201b]/g,"$&$&")}'`}function D(r){if(!/^[A-Za-z0-9._-]+$/.test(r))throw Error(`Invalid Windows Scheduled Task name: ${r}`);return`$env:${ge}=${S(r)};`}function H(r){let e=Object.entries(r.environment).map(([t,i])=>{if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw Error(`Invalid Windows Scheduled Task environment name: ${t}`);return`$env:${t}=${S(i)};`}),n=`$global:LASTEXITCODE=1; & ${[r.program,...r.args].map(S).join(" ")} 2>&1 | ForEach-Object { Add-Content -LiteralPath ${S(r.log)} -Value $_.ToString() -Encoding UTF8 }; $c=$LASTEXITCODE;`;return[D(r.name),...e,"$ErrorActionPreference='Continue';",r.keepAlive?`do { ${n} if ($c) { Start-Sleep -Seconds 10 } } while ($c)`:`${n} exit $c`].join(" ")}function I(r){return r.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&apos;")}function pe(){let r=process.env.USERDOMAIN?.trim();return r?`${r}\\${O().username}`:O().username}function M(r){let e=I(r.user??pe()),n=r.schedule==="logon",t=r.schedule==="logon"?`<LogonTrigger><Enabled>true</Enabled><UserId>${e}</UserId></LogonTrigger>`:`<TimeTrigger><Repetition><Interval>PT${r.schedule.everyMinutes}M</Interval><StopAtDurationEnd>false</StopAtDurationEnd></Repetition><StartBoundary>2026-01-01T00:00:00</StartBoundary><Enabled>true</Enabled></TimeTrigger>`,i=`-NoProfile -NonInteractive -ExecutionPolicy Bypass -WindowStyle Hidden -Command "${r.script}"`;return`<?xml version="1.0" encoding="UTF-16"?>
3
3
  <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
4
4
  <RegistrationInfo>
5
5
  <Description>${I(r.description)}</Description>
@@ -42,12 +42,12 @@ import{P}from"./vm-hands-entry-lite-2rgf8866.js";import{w}from"./vm-hands-entry-
42
42
  `)}function V(r,e){return["/Create","/TN",r,"/XML",e,"/F"]}function x(r){return["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",Buffer.from(r,"utf16le").toString("base64")]}function E(r){return`'*${D(r).replaceAll("'","''")}*'`}function _(r,e){return x(["$all = @(Get-CimInstance Win32_Process)",`$wrappers = @($all | ? { $_.ProcessId -ne $PID -and $_.CommandLine -like ${E(r)} })`,...e.keepWrapper?[]:["foreach ($w in $wrappers) { Stop-Process -Id $w.ProcessId -Force -ErrorAction SilentlyContinue }"],`foreach ($w in $wrappers) { $all | ? { $_.ParentProcessId -eq $w.ProcessId } | % { taskkill.exe /F ${e.tree?"/T ":""}/PID $_.ProcessId | Out-Null } }`].join(`
43
43
  `))}function F(r){return x(["$all = @(Get-CimInstance Win32_Process)",`$wrappers = @($all | ? { $_.ProcessId -ne $PID -and $_.CommandLine -like ${E(r)} })`,"foreach ($w in $wrappers) { if ($all | ? { $_.ParentProcessId -eq $w.ProcessId -and $_.Name -ne 'conhost.exe' }) { 'running'; exit 0 } }","exit 1"].join(`
44
44
  `))}function X(r,e=process.pid){let n=ue(B("powershell.exe"),x(["$all = @{}; Get-CimInstance Win32_Process | % { $all[[int]$_.ProcessId] = $_ }",`$p = $all[${Math.trunc(e)}]`,"for ($i = 0; $p -and $i -lt 64; $i++) {",` if ($p.CommandLine -like ${E(r)}) { exit 10 }`," $n = $all[[int]$p.ParentProcessId]"," if (-not $n -or $n.ProcessId -eq $p.ProcessId -or $n.CreationDate -gt $p.CreationDate) { exit 11 }"," $p = $n","}","exit 11"].join(`
45
- `)),{stdio:"ignore",timeout:15000,windowsHide:!0});return n.status===10?!0:n.status===11?!1:null}var ke="REASON_WORKER_SERVICE",xe="worker_identity_unavailable";function de(r){return{platform:process.platform,home:r,uid:process.getuid?.(),command:(e,n)=>v(B(e),[...n],{stdio:"ignore"}).status??1,read:(e,n)=>{let t=v(B(e),[...n],{stdio:["ignore","pipe","ignore"],encoding:"utf8",timeout:1e4});return t.status===0?t.stdout:null},sleep:(e)=>Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e),workerIdentity:(e)=>Oc(r,e),insideService:(e,n)=>Ee(e,process.platform,process.getuid?.(),n)}}function Ee(r,e,n,t=!0){if(process.env[ke]===r||process.env.XPC_SERVICE_NAME===r)return!0;if(e==="linux")try{return p("/proc/self/cgroup","utf8").includes(`/${r}.service`)}catch{return!0}if(e==="win32")return X(r)??t;if(e!=="darwin")return!1;if(typeof n!=="number")return!0;let i=v("/bin/launchctl",["print",`gui/${n}/${r}`],{encoding:"utf8",timeout:5000});if(i.status===_e)return!1;if(i.error||i.status!==0)return!0;let s=Number(/^\s*pid = (\d+)$/m.exec(i.stdout??"")?.[1]??0);if(!s)return!1;let a=process.pid;for(let o=0;o<64&&a>1;o+=1){if(a===s)return!0;let l=v("/bin/ps",["-o","ppid=","-p",String(a)],{encoding:"utf8",timeout:5000}),c=Number(l.stdout?.trim());if(l.error||l.status!==0||!Number.isSafeInteger(c)||c<=0)return!0;if(c===a)return!1;a=c}return a>1}var _e=113;class j extends Error{code;constructor(r,e){super(r);this.code=e}}function Ue(r,e){if(!ee(r.home,r.platform))throw new j(Q);if(r.platform==="darwin")k(r);let n=qe(it(e,r.home)),t=w({env:e})==="staging",i=t?"ara-staging":"ara",s=[n?Qo(n):null,P(e,"REASON_CLI_LAUNCHER_PATH")?.trim(),r.platform==="win32"?g(r.home,"AppData","Local","Reason",...t?["staging"]:[],"bin",t?"reason-staging.exe":"reason.exe"):g(r.home,".local","bin",i)];for(let a of s)try{if(a&&q(a)&&be(a).isFile())return Oi(a)}catch{}throw new j(`A background service runs the installed Reason launcher, which was not found. Install Reason with: ${r.platform==="win32"?"irm https://reasonmachines.com/install.ps1 | iex":"curl -fsSL https://reasonmachines.com/install | sh"}`,"worker_launcher_missing")}var R=/(<key>ProgramArguments<\/key>\s*<array>\n)((?:\s*<string>[^<]*<\/string>\n)*)(\s*<\/array>)/,y=new RegExp(`(\\n\\s*<key>${Dn}</key>\\s*<string>)[^<]*(</string>)`),Te=/(<key>EnvironmentVariables<\/key>\s*<dict>[\s\S]*?)(\n\s*<\/dict>)/;function Pe(r){return r.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&quot;",'"').replaceAll("&apos;","'").replaceAll("&amp;","&")}function Y(r){let e=[...(R.exec(r)?.[2]??"").matchAll(/<string>([^<]*)<\/string>/g)].map((t)=>Pe(t[1])),n=e[1]==="--run-worker"?e.slice(2):e;return n[0]?{launcher:n[0],args:n.slice(1)}:null}function J(r,e,n){let t=n.workerIdentity?.(r)??null;return{program:t?[t.executable,"--run-worker",r,...e]:[r,...e],identity:t}}function C(r){return r.map((e)=>` <string>${d(e)}</string>`).join(`
46
- `)}function z(r,e){let n;try{n=p(r,"utf8")}catch{return null}let t=Y(n);if(!t)return null;let i=q(t.launcher)?Oi(t.launcher):t.launcher,{program:s,identity:a}=J(i,t.args,e),o=n.replace(R,(l,c,m,L)=>`${c}${C(s)}
47
- ${L}`);if(!a)o=o.replace(y,"");else if(y.test(o))o=o.replace(y,(l,c,m)=>`${c}${d(a.app)}${m}`);else o=o.replace(Te,(l,c,m)=>`${c}
48
- <key>${Dn}</key>
49
- <string>${d(a.app)}</string>${m}`);return o===n?null:o}function Re(r,e){let n=z(r,e);if(n!==null)A(r,n)}function Jo(r,e,n){if(e.platform!=="darwin")return!1;let t=ze(r,e,n);return t!==null&&z(t.definition,e)!==null}var W="com.reasonmachines.worker.",h="so.reason.worker.",Z=[W,h];function bn(r,e=W){return`${e}connect${r==="production"?"":`.${r}`}`}function Xo(r,e){return Z.some((n)=>r===bn(e,n))}function Ce(r,e,n){if(e==="connect")return bn(r.channel,n);let t=Se("sha256").update(r.workspaceRoot).digest("hex").slice(0,8);return`${n}${r.name.toLowerCase()}.${t}`}var Q="A background service needs macOS (launchd), Linux (systemd --user) or Windows (Task Scheduler).";function ee(r,e){if(e==="darwin")return{directory:g(r,"Library","LaunchAgents"),suffix:".plist"};if(e==="linux")return{directory:g(r,".config","systemd","user"),suffix:".service"};if(e==="win32")return{directory:Ti(r),suffix:".xml"};return null}function f(r,e,n,t=W){let i=Ce(r,n,t),s=ee(e.home,e.platform);if(!s)return null;return{label:i,definition:g(s.directory,`${i}${s.suffix}`),logs:e.platform==="linux"?`journalctl --user -u ${i}.service`:g(r.stateDirectory,"service.log")}}function ze(r,e,n="serve"){return re(r,e,n)[0]??null}function re(r,e,n){return Z.map((t)=>f(r,e,n,t)).filter((t)=>t!==null&&T(t.definition))}function ne(r,e,n){let t=f(r,e,n,h);return t&&T(t.definition)?t:null}function Ii(r,e,n){let t=f(r,e,n),i=ne(r,e,n);if(!t||!i||!T(t.definition)||e.insideService?.(i.label))return null;if(!he(t,e))return"current_not_running";if(e.platform==="darwin"){if(typeof e.uid==="number"&&e.uid>0)e.command("/bin/launchctl",["bootout",`gui/${e.uid}/${i.label}`]);return u(i.definition,{force:!0}),"retired"}if(e.platform==="win32")return b(i,e,!0),"retired";return e.command("systemctl",["--user","disable","--now",`${i.label}.service`]),u(i.definition,{force:!0}),e.command("systemctl",["--user","daemon-reload"]),"retired"}function he(r,e){if(e.platform==="darwin")return typeof e.uid==="number"&&e.uid>0&&e.command("/bin/launchctl",["print",`gui/${e.uid}/${r.label}`])===0;if(e.platform==="win32")return e.command("schtasks",["/Query","/TN",r.label])===0;let n=`${r.label}.service`;return e.command("systemctl",["--user","is-enabled","--quiet",n])===0&&Ne.has(e.read("systemctl",["--user","show","--property=ActiveState","--value",n])?.trim()??"")}var Ne=new Set(["active","activating","reloading"]);function Di(r,e){if(e.platform==="darwin"){if(typeof e.uid!=="number"||e.uid<=0)return!1;let n=e.read("/bin/launchctl",["print",`gui/${e.uid}/${r.label}`]);return Number(/^\s*pid = (\d+)$/m.exec(n??"")?.[1]??0)>0}if(e.platform==="win32")return e.read("powershell.exe",F(r.label))?.trim()==="running";return Number(e.read("systemctl",["--user","show","--property=MainPID","--value",`${r.label}.service`])?.trim()??0)>0}function Yo(r){let{config:e,launcher:n,host:t,kind:i}=r,s=f(e,t,i);if(!s)return!1;let a;try{a=t.platform==="win32"?U(s.definition):p(s.definition,"utf8")}catch{return!1}if(t.platform==="win32")return a===oe(e,i,s,n);if(t.platform!=="darwin")return a===ie(e,i,s,n,t.home,r.path);let o=Y(a);return a.replace(y,"").replace(R,(c,m,L,ce)=>`${m}${o?`${C([o.launcher,...o.args])}
50
- `:""}${ce}`)===te(e,i,s,n,{...t,workerIdentity:()=>null},r.path).plist}function N(r,e){if(e==="connect")return{args:["connect"],environment:{REASON_CLI_CHANNEL:r.channel},description:"Reason connection of this computer"};return{args:["serve",r.name,"--dir",r.workspaceRoot,...r.executionMode==="confined"?["--sandbox"]:[]],environment:{},description:`Reason machine ${r.name} worker`}}function d(r){return r.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&apos;")}function G(r,e=!1){if(/[\0-\x1f\x7f]/.test(r))throw new j("A background service cannot use a path with control characters.");let n=r.replaceAll("\\","\\\\").replaceAll('"',"\\\"").replaceAll("%","%%");return`"${e?n.replaceAll("$","$$$$"):n}"`}function te(r,e,n,t,i,s){let a=N(r,e),o=J(t,a.args,i),l={HOME:i.home,PATH:s,[ke]:n.label,...a.environment,...o.identity?{[Dn]:o.identity.app}:{}};return{identity:o.identity,plist:`<?xml version="1.0" encoding="UTF-8"?>
45
+ `)),{stdio:"ignore",timeout:15000,windowsHide:!0});return n.status===10?!0:n.status===11?!1:null}var ke="REASON_WORKER_SERVICE",Ee="worker_identity_unavailable";function de(r){return{platform:process.platform,home:r,uid:process.getuid?.(),command:(e,n)=>v(B(e),[...n],{stdio:"ignore"}).status??1,read:(e,n)=>{let t=v(B(e),[...n],{stdio:["ignore","pipe","ignore"],encoding:"utf8",timeout:1e4});return t.status===0?t.stdout:null},sleep:(e)=>Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e),workerIdentity:(e)=>jc(r,e),insideService:(e,n)=>_e(e,process.platform,process.getuid?.(),n)}}function _e(r,e,n,t=!0){if(process.env[ke]===r||process.env.XPC_SERVICE_NAME===r)return!0;if(e==="linux")try{return p("/proc/self/cgroup","utf8").includes(`/${r}.service`)}catch{return!0}if(e==="win32")return X(r)??t;if(e!=="darwin")return!1;if(typeof n!=="number")return!0;let i=v("/bin/launchctl",["print",`gui/${n}/${r}`],{encoding:"utf8",timeout:5000});if(i.status===Te)return!1;if(i.error||i.status!==0)return!0;let s=Number(/^\s*pid = (\d+)$/m.exec(i.stdout??"")?.[1]??0);if(!s)return!1;let a=process.pid;for(let o=0;o<64&&a>1;o+=1){if(a===s)return!0;let l=v("/bin/ps",["-o","ppid=","-p",String(a)],{encoding:"utf8",timeout:5000}),c=Number(l.stdout?.trim());if(l.error||l.status!==0||!Number.isSafeInteger(c)||c<=0)return!0;if(c===a)return!1;a=c}return a>1}var Te=113;class j extends Error{code;constructor(r,e){super(r);this.code=e}}function ze(r,e){if(!ee(r.home,r.platform))throw new j(Q);if(r.platform==="darwin")k(r);let n=We(ot(e,r.home)),t=w({env:e})==="staging",i=t?"ara-staging":"ara",s=[n?as(n):null,R(e,"REASON_CLI_LAUNCHER_PATH")?.trim(),r.platform==="win32"?g(r.home,"AppData","Local","Reason",...t?["staging"]:[],"bin",t?"reason-staging.exe":"reason.exe"):g(r.home,".local","bin",i)];for(let a of s)try{if(a&&q(a)&&be(a).isFile())return $i(a)}catch{}throw new j(`A background service runs the installed Reason launcher, which was not found. Install Reason with: ${r.platform==="win32"?"irm https://reasonmachines.com/install.ps1 | iex":"curl -fsSL https://reasonmachines.com/install | sh"}`,"worker_launcher_missing")}var P=/(<key>ProgramArguments<\/key>\s*<array>\n)((?:\s*<string>[^<]*<\/string>\n)*)(\s*<\/array>)/,y=new RegExp(`(\\n\\s*<key>${Ln}</key>\\s*<string>)[^<]*(</string>)`),Pe=/(<key>EnvironmentVariables<\/key>\s*<dict>[\s\S]*?)(\n\s*<\/dict>)/;function Re(r){return r.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&quot;",'"').replaceAll("&apos;","'").replaceAll("&amp;","&")}function Y(r){let e=[...(P.exec(r)?.[2]??"").matchAll(/<string>([^<]*)<\/string>/g)].map((t)=>Re(t[1])),n=e[1]==="--run-worker"?e.slice(2):e;return n[0]?{launcher:n[0],args:n.slice(1)}:null}function J(r,e,n){let t=n.workerIdentity?.(r)??null;return{program:t?[t.executable,"--run-worker",r,...e]:[r,...e],identity:t}}function C(r){return r.map((e)=>` <string>${d(e)}</string>`).join(`
46
+ `)}function z(r,e){let n;try{n=p(r,"utf8")}catch{return null}let t=Y(n);if(!t)return null;let i=q(t.launcher)?$i(t.launcher):t.launcher,{program:s,identity:a}=J(i,t.args,e),o=n.replace(P,(l,c,m,L)=>`${c}${C(s)}
47
+ ${L}`);if(!a)o=o.replace(y,"");else if(y.test(o))o=o.replace(y,(l,c,m)=>`${c}${d(a.app)}${m}`);else o=o.replace(Pe,(l,c,m)=>`${c}
48
+ <key>${Ln}</key>
49
+ <string>${d(a.app)}</string>${m}`);return o===n?null:o}function Ce(r,e){let n=z(r,e);if(n!==null)A(r,n)}function ns(r,e,n){if(e.platform!=="darwin")return!1;let t=qe(r,e,n);return t!==null&&z(t.definition,e)!==null}var W="com.reasonmachines.worker.",h="so.reason.worker.",Z=[W,h];function En(r,e=W){return`${e}connect${r==="production"?"":`.${r}`}`}function is(r,e){return Z.some((n)=>r===En(e,n))}function he(r,e,n){if(e==="connect")return En(r.channel,n);let t=Se("sha256").update(r.workspaceRoot).digest("hex").slice(0,8);return`${n}${r.name.toLowerCase()}.${t}`}var Q="A background service needs macOS (launchd), Linux (systemd --user) or Windows (Task Scheduler).";function ee(r,e){if(e==="darwin")return{directory:g(r,"Library","LaunchAgents"),suffix:".plist"};if(e==="linux")return{directory:g(r,".config","systemd","user"),suffix:".service"};if(e==="win32")return{directory:Oi(r),suffix:".xml"};return null}function f(r,e,n,t=W){let i=he(r,n,t),s=ee(e.home,e.platform);if(!s)return null;return{label:i,definition:g(s.directory,`${i}${s.suffix}`),logs:e.platform==="linux"?`journalctl --user -u ${i}.service`:g(r.stateDirectory,"service.log")}}function qe(r,e,n="serve"){return re(r,e,n)[0]??null}function re(r,e,n){return Z.map((t)=>f(r,e,n,t)).filter((t)=>t!==null&&T(t.definition))}function ne(r,e,n){let t=f(r,e,n,h);return t&&T(t.definition)?t:null}function Ni(r,e,n){let t=f(r,e,n),i=ne(r,e,n);if(!t||!i||!T(t.definition)||e.insideService?.(i.label))return null;if(!Ne(t,e))return"current_not_running";if(e.platform==="darwin"){if(typeof e.uid==="number"&&e.uid>0)e.command("/bin/launchctl",["bootout",`gui/${e.uid}/${i.label}`]);return u(i.definition,{force:!0}),"retired"}if(e.platform==="win32")return b(i,e,!0),"retired";return e.command("systemctl",["--user","disable","--now",`${i.label}.service`]),u(i.definition,{force:!0}),e.command("systemctl",["--user","daemon-reload"]),"retired"}function Ne(r,e){if(e.platform==="darwin")return typeof e.uid==="number"&&e.uid>0&&e.command("/bin/launchctl",["print",`gui/${e.uid}/${r.label}`])===0;if(e.platform==="win32")return e.command("schtasks",["/Query","/TN",r.label])===0;let n=`${r.label}.service`;return e.command("systemctl",["--user","is-enabled","--quiet",n])===0&&Le.has(e.read("systemctl",["--user","show","--property=ActiveState","--value",n])?.trim()??"")}var Le=new Set(["active","activating","reloading"]);function Li(r,e){if(e.platform==="darwin"){if(typeof e.uid!=="number"||e.uid<=0)return!1;let n=e.read("/bin/launchctl",["print",`gui/${e.uid}/${r.label}`]);return Number(/^\s*pid = (\d+)$/m.exec(n??"")?.[1]??0)>0}if(e.platform==="win32")return e.read("powershell.exe",F(r.label))?.trim()==="running";return Number(e.read("systemctl",["--user","show","--property=MainPID","--value",`${r.label}.service`])?.trim()??0)>0}function os(r){let{config:e,launcher:n,host:t,kind:i}=r,s=f(e,t,i);if(!s)return!1;let a;try{a=t.platform==="win32"?U(s.definition):p(s.definition,"utf8")}catch{return!1}if(t.platform==="win32")return a===oe(e,i,s,n);if(t.platform!=="darwin")return a===ie(e,i,s,n,t.home,r.path);let o=Y(a);return a.replace(y,"").replace(P,(c,m,L,ce)=>`${m}${o?`${C([o.launcher,...o.args])}
50
+ `:""}${ce}`)===te(e,i,s,n,{...t,workerIdentity:()=>null},r.path).plist}function N(r,e){if(e==="connect")return{args:["connect"],environment:{REASON_CLI_CHANNEL:r.channel},description:"Reason connection of this computer"};return{args:["serve",r.name,"--dir",r.workspaceRoot,...r.executionMode==="confined"?["--sandbox"]:[]],environment:{},description:`Reason machine ${r.name} worker`}}function d(r){return r.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&apos;")}function G(r,e=!1){if(/[\0-\x1f\x7f]/.test(r))throw new j("A background service cannot use a path with control characters.");let n=r.replaceAll("\\","\\\\").replaceAll('"',"\\\"").replaceAll("%","%%");return`"${e?n.replaceAll("$","$$$$"):n}"`}function te(r,e,n,t,i,s){let a=N(r,e),o=J(t,a.args,i),l={HOME:i.home,PATH:s,[ke]:n.label,...a.environment,...o.identity?{[Ln]:o.identity.app}:{}};return{identity:o.identity,plist:`<?xml version="1.0" encoding="UTF-8"?>
51
51
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
52
52
  <plist version="1.0">
53
53
  <dict>
@@ -55,7 +55,7 @@ ${L}`);if(!a)o=o.replace(y,"");else if(y.test(o))o=o.replace(y,(l,c,m)=>`${c}${d
55
55
  <string>${d(n.label)}</string>
56
56
  <key>AssociatedBundleIdentifiers</key>
57
57
  <array>
58
- <string>${ss}</string>
58
+ <string>${fs}</string>
59
59
  </array>
60
60
  <key>ProgramArguments</key>
61
61
  <array>
@@ -101,5 +101,5 @@ UMask=0077
101
101
 
102
102
  [Install]
103
103
  WantedBy=default.target
104
- `}function oe(r,e,n,t){let i=N(r,e);return M({description:i.description,schedule:"logon",script:H({name:n.label,program:t,args:i.args,environment:{[ke]:n.label,...i.environment},log:n.logs,keepAlive:!0})})}function se(r,e,n){e.command("powershell.exe",_(r.label,{tree:n,keepWrapper:!n}))}function b(r,e,n){e.command("schtasks",["/Delete","/F","/TN",r.label]),e.command("powershell.exe",_(r.label,{tree:n,keepWrapper:!1})),u(r.definition,{force:!0})}function A(r,e){ye(Ae(r),{recursive:!0,mode:448});let n=`${r}.${we()}.tmp`;try{We(n,e,{mode:384,flag:"wx"}),$e(n,384),ve(n,r)}finally{u(n,{force:!0})}}function k(r){if(typeof r.uid!=="number"||!Number.isSafeInteger(r.uid)||r.uid<=0)throw new j("Set up a background service as your own user, not with sudo.","worker_service_root_user");return`gui/${r.uid}`}function vn(r){let{config:e,launcher:n,host:t}=r,i=r.kind??"serve",s=ne(e,t,i),a=s!==null&&t.insideService?.(s.label)===!0,o=f(e,t,i,a?h:W);if(!o)throw new j(Q);if(t.platform==="darwin")k(t);if(t.platform==="linux"&&t.command("systemctl",["--user","show-environment"])!==0)throw new j("No background service here: this computer has no systemd user session.","worker_service_manager_missing");let l=t.platform==="darwin"?te(e,i,o,n,t,r.path):null;if(A(o.definition,l?l.plist:t.platform==="win32"?K(oe(e,i,o,n)):ie(e,i,o,n,t.home,r.path)),ae(e,t,o,a?null:s),l)return l.identity?o:{...o,identityProblem:xe};if(t.platform==="win32")return o;return{...o,lingering:t.command("loginctl",["enable-linger"])===0}}function ae(r,e,n,t){if(e.platform==="darwin"){let a=k(e);if(t)e.command("/bin/launchctl",["bootout",`${a}/${t.label}`]);if(le(r,n,e)){if(t)u(t.definition,{force:!0});return}if(u(n.definition,{force:!0}),t)e.command("/bin/launchctl",["bootstrap",a,t.definition]);throw new j("Could not start the background service (launchctl bootstrap failed).","worker_service_start_failed")}if(e.platform==="win32"){if(t)b(t,e,!0);if(e.command("schtasks",V(n.label,n.definition))===0){if(se(n,e,e.insideService?.(n.label)!==!0),e.command("schtasks",["/Run","/TN",n.label])===0)return}throw b(n,e,!0),new j("Could not start the background service (schtasks failed).")}let i=`${n.label}.service`,s=t?`${t.label}.service`:null;if(e.command("systemctl",["--user","daemon-reload"])!==0||s!==null&&e.command("systemctl",["--user","disable","--now",s])!==0||e.command("systemctl",["--user","enable",i])!==0||e.command("systemctl",["--user","restart",i])!==0){if(e.command("systemctl",["--user","disable",i]),u(n.definition,{force:!0}),e.command("systemctl",["--user","daemon-reload"]),s)e.command("systemctl",["--user","enable","--now",s]);throw new j("Could not start the background service (systemctl --user failed).","worker_service_start_failed")}if(t)u(t.definition,{force:!0}),e.command("systemctl",["--user","daemon-reload"])}function le(r,e,n){let t=k(n);n.command("/bin/launchctl",["bootout",`${t}/${e.label}`]);let i=(Math.ceil(r.shutdownGraceMs/1000)+10)*1000;for(let s=0,a=100;;a=Math.min(a*2,2000)){if(n.command("/bin/launchctl",["bootstrap",t,e.definition])===0)return!0;if(s>=i)return!1;n.sleep(a),s+=a}}function Ie(r,e,n){let t=ze(r,e,n);if(!t)return null;let i=e.insideService?.(t.label)===!0;if(e.platform==="darwin"&&!i)Re(t.definition,e);let s=f(r,e,n);if(s&&t.label!==s.label&&!i)return A(s.definition,p(t.definition,"utf8").replaceAll(t.label,s.label)),ae(r,e,s,t),s;let a=e.platform==="darwin"&&i,o;if(e.platform==="win32")se(t,e,!i),o=e.command("schtasks",["/Run","/TN",t.label])===0;else if(a)o=e.command("/bin/launchctl",["kickstart","-k",`${k(e)}/${t.label}`])===0;else if(e.platform==="darwin")o=le(r,t,e);else e.command("systemctl",["--user","enable",`${t.label}.service`]),o=e.command("systemctl",["--user","restart",`${t.label}.service`])===0;if(!o)throw new j(`Could not restart the background service ${t.label}.`,"worker_service_restart_failed");if(s&&t.label===s.label)Ii(r,e,n);return t}function Zo(r,e,n,t){let i=ze(r,n,t),s=f(e,n,t);if(n.platform!=="darwin"||!i||!s)return;let a=`<string>${d(i.logs)}</string>`,o=p(i.definition,"utf8");if(o.includes(a))A(i.definition,o.replaceAll(a,`<string>${d(s.logs)}</string>`))}function Sn(r,e,n="serve"){let t=re(r,e,n);for(let i of t){if(e.platform==="win32"){b(i,e,e.insideService?.(i.label,!1)!==!0);continue}if(e.platform==="darwin"){if(typeof e.uid==="number"&&e.uid>0)e.command("/bin/launchctl",["bootout",`gui/${e.uid}/${i.label}`]);u(i.definition,{force:!0});continue}e.command("systemctl",["--user","disable","--now",`${i.label}.service`]),u(i.definition,{force:!0}),e.command("systemctl",["--user","daemon-reload"])}return t[0]??null}
105
- export{Ti,ke,de,j,Ue,Jo,bn,Xo,ze,Ii,Di,Yo,vn,Ie,Zo,Sn};
104
+ `}function oe(r,e,n,t){let i=N(r,e);return M({description:i.description,schedule:"logon",script:H({name:n.label,program:t,args:i.args,environment:{[ke]:n.label,...i.environment},log:n.logs,keepAlive:!0})})}function se(r,e,n){e.command("powershell.exe",_(r.label,{tree:n,keepWrapper:!n}))}function b(r,e,n){e.command("schtasks",["/Delete","/F","/TN",r.label]),e.command("powershell.exe",_(r.label,{tree:n,keepWrapper:!1})),u(r.definition,{force:!0})}function A(r,e){ye(xe(r),{recursive:!0,mode:448});let n=`${r}.${we()}.tmp`;try{Ae(n,e,{mode:384,flag:"wx"}),$e(n,384),ve(n,r)}finally{u(n,{force:!0})}}function k(r){if(typeof r.uid!=="number"||!Number.isSafeInteger(r.uid)||r.uid<=0)throw new j("Set up a background service as your own user, not with sudo.","worker_service_root_user");return`gui/${r.uid}`}function kn(r){let{config:e,launcher:n,host:t}=r,i=r.kind??"serve",s=ne(e,t,i),a=s!==null&&t.insideService?.(s.label)===!0,o=f(e,t,i,a?h:W);if(!o)throw new j(Q);if(t.platform==="darwin")k(t);if(t.platform==="linux"&&t.command("systemctl",["--user","show-environment"])!==0)throw new j("No background service here: this computer has no systemd user session.","worker_service_manager_missing");let l=t.platform==="darwin"?te(e,i,o,n,t,r.path):null;if(A(o.definition,l?l.plist:t.platform==="win32"?K(oe(e,i,o,n)):ie(e,i,o,n,t.home,r.path)),ae(e,t,o,a?null:s),l)return l.identity?o:{...o,identityProblem:Ee};if(t.platform==="win32")return o;return{...o,lingering:t.command("loginctl",["enable-linger"])===0}}function ae(r,e,n,t){if(e.platform==="darwin"){let a=k(e);if(t)e.command("/bin/launchctl",["bootout",`${a}/${t.label}`]);if(le(r,n,e)){if(t)u(t.definition,{force:!0});return}if(u(n.definition,{force:!0}),t)e.command("/bin/launchctl",["bootstrap",a,t.definition]);throw new j("Could not start the background service (launchctl bootstrap failed).","worker_service_start_failed")}if(e.platform==="win32"){if(t)b(t,e,!0);if(e.command("schtasks",V(n.label,n.definition))===0){if(se(n,e,e.insideService?.(n.label)!==!0),e.command("schtasks",["/Run","/TN",n.label])===0)return}throw b(n,e,!0),new j("Could not start the background service (schtasks failed).")}let i=`${n.label}.service`,s=t?`${t.label}.service`:null;if(e.command("systemctl",["--user","daemon-reload"])!==0||s!==null&&e.command("systemctl",["--user","disable","--now",s])!==0||e.command("systemctl",["--user","enable",i])!==0||e.command("systemctl",["--user","restart",i])!==0){if(e.command("systemctl",["--user","disable",i]),u(n.definition,{force:!0}),e.command("systemctl",["--user","daemon-reload"]),s)e.command("systemctl",["--user","enable","--now",s]);throw new j("Could not start the background service (systemctl --user failed).","worker_service_start_failed")}if(t)u(t.definition,{force:!0}),e.command("systemctl",["--user","daemon-reload"])}function le(r,e,n){let t=k(n);n.command("/bin/launchctl",["bootout",`${t}/${e.label}`]);let i=(Math.ceil(r.shutdownGraceMs/1000)+10)*1000;for(let s=0,a=100;;a=Math.min(a*2,2000)){if(n.command("/bin/launchctl",["bootstrap",t,e.definition])===0)return!0;if(s>=i)return!1;n.sleep(a),s+=a}}function Ie(r,e,n){let t=qe(r,e,n);if(!t)return null;let i=e.insideService?.(t.label)===!0;if(e.platform==="darwin"&&!i)Ce(t.definition,e);let s=f(r,e,n);if(s&&t.label!==s.label&&!i)return A(s.definition,p(t.definition,"utf8").replaceAll(t.label,s.label)),ae(r,e,s,t),s;let a=e.platform==="darwin"&&i,o;if(e.platform==="win32")se(t,e,!i),o=e.command("schtasks",["/Run","/TN",t.label])===0;else if(a)o=e.command("/bin/launchctl",["kickstart","-k",`${k(e)}/${t.label}`])===0;else if(e.platform==="darwin")o=le(r,t,e);else e.command("systemctl",["--user","enable",`${t.label}.service`]),o=e.command("systemctl",["--user","restart",`${t.label}.service`])===0;if(!o)throw new j(`Could not restart the background service ${t.label}.`,"worker_service_restart_failed");if(s&&t.label===s.label)Ni(r,e,n);return t}function ss(r,e,n,t){let i=qe(r,n,t),s=f(e,n,t);if(n.platform!=="darwin"||!i||!s)return;let a=`<string>${d(i.logs)}</string>`,o=p(i.definition,"utf8");if(o.includes(a))A(i.definition,o.replaceAll(a,`<string>${d(s.logs)}</string>`))}function xn(r,e,n="serve"){let t=re(r,e,n);for(let i of t){if(e.platform==="win32"){b(i,e,e.insideService?.(i.label,!1)!==!0);continue}if(e.platform==="darwin"){if(typeof e.uid==="number"&&e.uid>0)e.command("/bin/launchctl",["bootout",`gui/${e.uid}/${i.label}`]);u(i.definition,{force:!0});continue}e.command("systemctl",["--user","disable","--now",`${i.label}.service`]),u(i.definition,{force:!0}),e.command("systemctl",["--user","daemon-reload"])}return t[0]??null}
105
+ export{Oi,ke,de,j,ze,ns,En,is,qe,Ni,Li,os,kn,Ie,ss,xn};
@@ -1,7 +1,7 @@
1
1
  // @bun
2
- import{Bt}from"./vm-hands-entry-lite-weqam12f.js";import{rn}from"./vm-hands-entry-lite-tcmye5ny.js";import{Y,Xe,B}from"./vm-hands-entry-lite-8xv6c0rm.js";import{r}from"./vm-hands-entry-lite-qy9xg6em.js";import{spawn as k,spawnSync as N}from"child_process";import{existsSync as S,mkdtempSync as z,readFileSync as j,readdirSync as we,realpathSync as Se,rmSync as q,statSync as Q}from"fs";import{platform as W,tmpdir as V}from"os";import{dirname as A,join as u,win32 as x}from"path";import{fileURLToPath as be,pathToFileURL as F}from"url";var xe=["bwrap","socat","rg"],he=2000,I=20000,ye=3,O=4000,Pe=new Set([".git",".hg",".svn","node_modules"]),Ee=["runAsHostUid","sysrq-trigger"],Z=u(A(A(be(import.meta.url))),"packages","sandbox-runtime"),Re=u(Z,"src","index.ts"),ee=!1;function cr(){ee=!0}function ne(){return ee?u(A(Se(process.execPath)),"runtime","srt"):void 0}function Ae(){let e=u(ne()??Z,"vendor","srt-win");return u(e,process.arch,"srt-win.exe")}var ka="confined commands need the Windows sandbox: run `reason connect` and approve the Windows prompt.";function Jr(e=Ae()){let n=N(e,["status"],{encoding:"utf8",timeout:15000,windowsHide:!0});try{let o=JSON.parse(n.stdout??"");return n.status===0&&o.user?.user?.exists===!0&&o.user.cred_present===!0}catch{return!1}}function xa(e=Ae()){let n=N(e,["install"],{stdio:["ignore","ignore","ignore"],timeout:120000,windowsHide:!0});return n.status===0?"installed":n.status===10?"cancelled":"failed"}async function te(){let e=ne();if(e&&process.platform==="linux"&&!S(u(e,"vendor","seccomp",process.arch,"apply-seccomp")))throw Error("packaged_sandbox_runtime_vendor_missing");if(e&&process.platform==="win32"&&!S(Ae()))throw Error("packaged_sandbox_runtime_vendor_missing");if(e){let i=j(u(e,"sandbox-runtime.mjs"),"utf8");for(let s of Ee)if(!i.includes(s))throw Error(`packaged_sandbox_runtime_fork_missing:${s}`)}let t=(await import(e?F(u(e,"sandbox-runtime.mjs")).href:F(Re).href)).SandboxManager;if(!t||typeof t.initialize!=="function"||typeof t.wrapWithSandboxArgv!=="function")throw Error("sandbox-runtime does not expose the expected SandboxManager API.");return{SandboxManager:t}}function _e(e={}){if((e.platformName??W())!=="linux")return!1;let o=e.fileExists??S,t=e.readFile??((i)=>j(i,"utf8"));for(let i of["/.dockerenv","/run/.containerenv"])try{if(o(i))return!0}catch{}try{return/docker|containerd|kubepods|lxc|libpod/.test(t("/proc/1/cgroup"))}catch{return!1}}function re(e){return["/bin/true","/usr/bin/true"].find((n)=>e(n))??null}function Me(e,n){return e==="strict"?["--ro-bind","/","/","--unshare-pid","--unshare-user","--cap-drop","ALL","--proc","/proc","--",n]:["--ro-bind","/","/","--unshare-pid","--unshare-user","--bind","/proc","/proc","--",n]}function Ce(e,n){try{let o=N("bwrap",Me(e,n),{stdio:"ignore",timeout:he});return!o.error&&o.status===0}catch{return!1}}function ve(e){let n=e.platformName??W(),o=e.fileExists??S;if(n==="win32")return(e.bash??Y)()&&o(Ae())?m??"strict":null;if(n!=="linux")return null;let t=e.hasExecutable??rn;if(!xe.every((l)=>t(l)))return null;let i=re(o);if(!i)return null;let s=m??(e.containerized??_e({platformName:n})?"weak":"strict");return(e.probeNamespaces??((l)=>Ce(l,i)))(s)?s:null}var h=null,M=!1,p=null,U=null,H=null,m=null,y=null,_=null,P=null,C=[],b=new Map;function v(){throw g("sandbox_mode_conflict"),new r("sandbox_unavailable","Sandbox process policy conflicts with an existing probe or session. Restart the worker.")}function Ca(e){if(m!==null&&m!==e||M&&h!==null&&h!==e||y!==null&&y!==e)v();m=e}function g(e){if(!p)process.stderr.write(`Reason worker: confined commands are off (${e})
3
- `);p=e}function Gn(e){if(p)return!1;if(!M){if(h=ve(e??{}),M=!0,h&&!e)ue()}return h!==null}function De(){return Gn()?h:null}var E=null,w=0;function D(e,n){if(p)throw new r("sandbox_unavailable","Confined execution is unavailable in this worker process.");if(m&&e.sandboxMode&&m!==e.sandboxMode)v();let o=m??e.sandboxMode??De();if(!o)throw new r("sandbox_unavailable","Confined command execution is unavailable on this operating system.");if(y&&y!==o)v();return y=o,E??=(async()=>{let{SandboxManager:t}=await(e.loadSandboxRuntime??te)();return await t.initialize(Ie(o,n)),t})().catch((t)=>{if(E=null,n)_=null,process.stderr.write(`Reason worker: the Windows sandbox did not start for this folder (${String(t).slice(0,500)})
2
+ import{Ft}from"./vm-hands-entry-lite-s93f3pbv.js";import{ln}from"./vm-hands-entry-lite-q62g6sx0.js";import{Y,Ye,B}from"./vm-hands-entry-lite-pg7nnyc6.js";import{r}from"./vm-hands-entry-lite-qy9xg6em.js";import{spawn as k,spawnSync as N}from"child_process";import{existsSync as S,mkdtempSync as z,readFileSync as j,readdirSync as we,realpathSync as Se,rmSync as q,statSync as Q}from"fs";import{platform as W,tmpdir as V}from"os";import{dirname as A,join as u,win32 as x}from"path";import{fileURLToPath as be,pathToFileURL as F}from"url";var xe=["bwrap","socat","rg"],he=2000,I=20000,ye=3,O=4000,Pe=new Set([".git",".hg",".svn","node_modules"]),Ee=["runAsHostUid","sysrq-trigger"],Z=u(A(A(be(import.meta.url))),"packages","sandbox-runtime"),Re=u(Z,"src","index.ts"),ee=!1;function cr(){ee=!0}function ne(){return ee?u(A(Se(process.execPath)),"runtime","srt"):void 0}function Ae(){let e=u(ne()??Z,"vendor","srt-win");return u(e,process.arch,"srt-win.exe")}var Da="confined commands need the Windows sandbox: run `reason connect` and approve the Windows prompt.";function tn(e=Ae()){let n=N(e,["status"],{encoding:"utf8",timeout:15000,windowsHide:!0});try{let o=JSON.parse(n.stdout??"");return n.status===0&&o.user?.user?.exists===!0&&o.user.cred_present===!0}catch{return!1}}function Oa(e=Ae()){let n=N(e,["install"],{stdio:["ignore","ignore","ignore"],timeout:120000,windowsHide:!0});return n.status===0?"installed":n.status===10?"cancelled":"failed"}async function te(){let e=ne();if(e&&process.platform==="linux"&&!S(u(e,"vendor","seccomp",process.arch,"apply-seccomp")))throw Error("packaged_sandbox_runtime_vendor_missing");if(e&&process.platform==="win32"&&!S(Ae()))throw Error("packaged_sandbox_runtime_vendor_missing");if(e){let i=j(u(e,"sandbox-runtime.mjs"),"utf8");for(let s of Ee)if(!i.includes(s))throw Error(`packaged_sandbox_runtime_fork_missing:${s}`)}let t=(await import(e?F(u(e,"sandbox-runtime.mjs")).href:F(Re).href)).SandboxManager;if(!t||typeof t.initialize!=="function"||typeof t.wrapWithSandboxArgv!=="function")throw Error("sandbox-runtime does not expose the expected SandboxManager API.");return{SandboxManager:t}}function _e(e={}){if((e.platformName??W())!=="linux")return!1;let o=e.fileExists??S,t=e.readFile??((i)=>j(i,"utf8"));for(let i of["/.dockerenv","/run/.containerenv"])try{if(o(i))return!0}catch{}try{return/docker|containerd|kubepods|lxc|libpod/.test(t("/proc/1/cgroup"))}catch{return!1}}function re(e){return["/bin/true","/usr/bin/true"].find((n)=>e(n))??null}function Me(e,n){return e==="strict"?["--ro-bind","/","/","--unshare-pid","--unshare-user","--cap-drop","ALL","--proc","/proc","--",n]:["--ro-bind","/","/","--unshare-pid","--unshare-user","--bind","/proc","/proc","--",n]}function Ce(e,n){try{let o=N("bwrap",Me(e,n),{stdio:"ignore",timeout:he});return!o.error&&o.status===0}catch{return!1}}function ve(e){let n=e.platformName??W(),o=e.fileExists??S;if(n==="win32")return(e.bash??Y)()&&o(Ae())?m??"strict":null;if(n!=="linux")return null;let t=e.hasExecutable??ln;if(!xe.every((l)=>t(l)))return null;let i=re(o);if(!i)return null;let s=m??(e.containerized??_e({platformName:n})?"weak":"strict");return(e.probeNamespaces??((l)=>Ce(l,i)))(s)?s:null}var h=null,M=!1,p=null,U=null,H=null,m=null,y=null,_=null,P=null,C=[],b=new Map;function v(){throw g("sandbox_mode_conflict"),new r("sandbox_unavailable","Sandbox process policy conflicts with an existing probe or session. Restart the worker.")}function Na(e){if(m!==null&&m!==e||M&&h!==null&&h!==e||y!==null&&y!==e)v();m=e}function g(e){if(!p)process.stderr.write(`Reason worker: confined commands are off (${e})
3
+ `);p=e}function Xn(e){if(p)return!1;if(!M){if(h=ve(e??{}),M=!0,h&&!e)ue()}return h!==null}function De(){return Xn()?h:null}var E=null,w=0;function D(e,n){if(p)throw new r("sandbox_unavailable","Confined execution is unavailable in this worker process.");if(m&&e.sandboxMode&&m!==e.sandboxMode)v();let o=m??e.sandboxMode??De();if(!o)throw new r("sandbox_unavailable","Confined command execution is unavailable on this operating system.");if(y&&y!==o)v();return y=o,E??=(async()=>{let{SandboxManager:t}=await(e.loadSandboxRuntime??te)();return await t.initialize(Ie(o,n)),t})().catch((t)=>{if(E=null,n)_=null,process.stderr.write(`Reason worker: the Windows sandbox did not start for this folder (${String(t).slice(0,500)})
4
4
  `);else g(`initialize_failed: ${String(t)}`);throw t instanceof r?t:new r("sandbox_unavailable","The confined execution sandbox failed to start.")}),E.then((t)=>{if(p)throw new r("sandbox_unavailable","Confined execution became unavailable during sandbox initialization.");return t})}function T(){if(w-=1,w===0)for(let e of C.splice(0))e()}async function oe(e,n=!0,o,t){let i=t===void 0?1/0:Date.now()+t;await le();let s=ke();if(n)await s;let a=JSON.stringify(e),l=!1,c=()=>{if(!l)return;l=!1;let d=(b.get(a)??1)-1;if(d>0)b.set(a,d);else b.delete(a)};try{for(;;){if(o?.aborted)throw new r("cancelled","Operation was cancelled.");if(Date.now()>=i)return!1;if(P){await P;continue}let d=b.keys().next().value;if(_??=d??a,_===a&&(d===void 0||d===a))break;if(!l){l=!0,b.set(a,(b.get(a)??0)+1);continue}if(w===0&&d===a){ie();continue}await new Promise((f)=>{if(C.push(f),o?.addEventListener("abort",()=>f(),{once:!0}),i!==1/0)setTimeout(f,Math.max(0,i-Date.now())).unref?.()})}return w+=1,!0}finally{if(l&&w===0)for(let d of C.splice(0))d();c()}}function ie(){return P??=ce().finally(()=>{P=null}),P}function se(e,n,o=process.env){let t=o.USERPROFILE?x.resolve(o.USERPROFILE).toLowerCase():null,i=x.resolve(e).toLowerCase(),s=t!==null&&i.startsWith(`${t}\\`),a=n?ae(o).filter((l)=>l.toLowerCase()===i||l.toLowerCase().startsWith(`${i}\\`)):[];return{denyRead:[],allowRead:[e],allowWrite:n?[e]:[],denyWrite:n?a:s?[]:[e]}}function ae(e,n=process.execPath){let o=new Map;for(let t of[...(e.PATH??e.Path??"").split(";"),x.dirname(n)]){if(!t||!x.isAbsolute(t))continue;let i=x.resolve(t);if(!o.has(i.toLowerCase()))o.set(i.toLowerCase(),i)}return[...o.values()]}function Te(e=process.env,n=process.execPath){let o=[e.SystemRoot,e.ProgramFiles,e["ProgramFiles(x86)"],e.ProgramW6432,e.ProgramData,e.USERPROFILE].filter((t)=>!!t).map((t)=>x.resolve(t).toLowerCase());return ae(e,n).filter((t)=>{let i=t.toLowerCase();return!o.some((s)=>i===s||i.startsWith(`${s}\\`))})}var J=null,K=null;function le(e=Ae()){return K??=(async()=>{let n;try{n=JSON.parse((await de(e,["status"])).stdout).user?.user?.sid}catch{return null}if(typeof n!=="string"||!/^S-1-[0-9-]+$/.test(n))return null;if(!await new Promise((t)=>{let i=k(B("icacls"),[e,"/grant",`*${n}:(RX)`],{stdio:"ignore",windowsHide:!0,timeout:30000});i.on("error",()=>t(!1)),i.on("close",(s)=>t(s===0))}))process.stderr.write(`Reason worker: could not let the Windows sandbox user run srt-win.exe
5
5
  `);return n})(),K}function de(e,n,o){return new Promise((t)=>{let i=k(e,n,{stdio:["pipe","pipe","ignore"],windowsHide:!0,timeout:120000}),s="";i.stdout?.setEncoding("utf8").on("data",(a)=>{s+=a}),i.on("error",()=>t({status:null,stdout:s})),i.on("close",(a)=>t({status:a,stdout:s})),i.stdin?.end(o??"")})}function ke(e=Ae()){return J??=(async()=>{let n=Te();if(n.length===0)return;let o=await le(e),t=o?await de(e,["acl","stamp","--holder-pid",String(process.ppid),"--sandbox-user-sid",o],JSON.stringify({denyRead:[],denyWrite:n})):null;if(!t||t.status!==0&&t.status!==2)g(`program_folder_deny_failed: ${t?`exit ${t.status}`:"no sandbox user"}`),process.stderr.write(`Reason worker: could not deny the Windows sandbox writes to PATH folders (${t?`exit ${t.status}`:"no sandbox user"}); confined commands are off
6
- `)})(),J}var Ne=`h=$(mktemp -d) || exit 125; trap 'rm -rf "$h"' EXIT; mkdir -p "$h/AppData/Roaming" "$h/AppData/Local"; w=$(cygpath -w "$h"); export HOME="$h" USERPROFILE="$w" APPDATA="$w\\AppData\\Roaming" LOCALAPPDATA="$w\\AppData\\Local" TEMP="$w" TMP="$w"; `;async function ce(){let e=E;if(E=null,_=null,!e)return;try{await(await e).reset()}catch{}}async function ue(e={}){if(p)return!1;if(e.loadSandboxRuntime)return G(e.loadSandboxRuntime);if(!Gn())return!1;return U??=G(te),U}async function G(e){try{let{SandboxManager:n}=await e();if(process.platform==="win32"){if(!S(Ae()))g("dependencies_missing: srt-win.exe");return!p}let o=n.checkDependencies().errors;if(o.length>0)return g(`dependencies_missing: ${o.join(", ")}`),!1;return!p}catch(n){return g(`load_failed: ${String(n)}`),!1}}async function Aa(e={}){if(!e.loadSandboxRuntime&&!e.sandboxMode){if(!await ue())return!1;return H??=X({}),H}return X(e)}async function X(e){let n=process.platform==="win32",o=z(u(V(),"reason-device-probe-"));try{let t=n?se(o,!1):void 0;if(t)await oe(t,!1);let i;try{i=await We(await D(e,t),o)}catch{return!1}finally{if(n)T()}if(!i)g("confined_command_failed");if(w===0)await(n?ie():ce());return i}finally{q(o,{recursive:!0,force:!0})}}async function We(e,n){let o=process.platform==="win32",t=o?"true":re(S);if(!t)return!1;try{let{argv:i,env:s}=await e.wrapWithSandboxArgv(fe([t]),Kn(),{filesystem:o?pe([],n):me({root:n,allowWrite:!1,temporaryDirectory:n,protectedPaths:[]})},void 0,n),[a,...l]=i;if(!a)return!1;return await Le(a,l,n,o?{env:s}:{})}catch{return!1}finally{try{e.cleanupAfterCommand()}catch{}}}function Le(e,n,o,t={}){return new Promise((i)=>{let s=!1,a,l=(f)=>{if(s)return;s=!0,clearTimeout(a),i(f)},c;try{c=(t.spawnChild??k)(e,n,{cwd:o,env:t.env??{PATH:Bt,HOME:o,TMPDIR:o},stdio:"ignore",windowsHide:!0})}catch{l(!1);return}c.once("error",()=>l(!1));let d=(f,R)=>l(f===0&&R===null);if(c.once("exit",d),c.once("close",d),c.exitCode!==null||c.signalCode!==null)d(c.exitCode,c.signalCode);if(s)return;a=setTimeout(()=>{l(!1);try{c.kill("SIGKILL")}catch{}},Math.min(t.timeoutMs??I,I))})}function Kn(e=S,n=W()){if(n==="win32")return Xe("win32");return["/bin/bash","/bin/sh"].find((o)=>e(o))??"/bin/sh"}function fe(e){return e.map((n)=>`'${n.replaceAll("'","'\\''")}'`).join(" ")}function Fe(e,n,o=(t)=>we(t,{withFileTypes:!0}).filter((i)=>i.isDirectory()||i.isFile()).map((i)=>i.name)){let t=[],i=[{path:e,depth:0}],s=0;while(i.length>0&&s<O){let a=i.pop(),l;try{l=o(a.path)}catch{continue}for(let c of l){if(s+=1,s>O)break;let d=u(a.path,c);if(n(d)){t.push(d);continue}if(a.depth+1<ye&&!Pe.has(c))i.push({path:d,depth:a.depth+1})}}return t}function me(e){let n=u(e.root,".git"),o=[];try{if(Q(n).isDirectory())o=[u(n,"config"),u(n,"hooks")]}catch{}return{denyRead:["/home","/root","/tmp","/tmp/.X11-unix",...e.protectedPaths],allowRead:[e.root,e.temporaryDirectory],allowWrite:[...e.allowWrite?[e.root]:[],e.temporaryDirectory],denyWrite:[...e.protectedPaths,...o]}}function pe(e,n){let o=u(n,".git"),t=[];try{if(Q(o).isDirectory())t=[u(o,"config"),u(o,"hooks")]}catch{}return{denyRead:[...e],allowRead:[],allowWrite:[],denyWrite:[...e,...t]}}function Ie(e,n){if(n)return{network:{allowedDomains:[],deniedDomains:[]},filesystem:n,windows:{srtWin:{path:Ae()}}};return{network:{allowedDomains:[],deniedDomains:[]},filesystem:{denyRead:[],allowRead:[],allowWrite:[],denyWrite:[]},...e==="weak"?{enableWeakerNestedSandbox:!0}:{}}}function Pa(e){let n=e.createTemporaryDirectory??(()=>z(u(V(),"reason-device-"))),o=e.removeTemporaryDirectory??((t)=>q(t,{recursive:!0,force:!0}));return async(t,i,s)=>{let a=process.platform==="win32",l;if(a){let d=se(s.root,s.allowWrite);if(!await oe(d,!s.workerProbe,s.signal,s.timeoutMs))return{exitCode:null,signal:null,stdout:"",stderr:"",timedOut:!0,truncated:!1};try{l=await D(e,d)}catch(f){throw T(),f}}else l=await D(e),w+=1;let c;try{c=n();let d=Fe(s.root,e.isProtectedPath),f;try{f=await l.wrapWithSandboxArgv((a?Ne:"")+fe([t,...i]),e.shell??Kn(),{filesystem:a?pe(d,s.root):me({root:s.root,allowWrite:s.allowWrite,temporaryDirectory:c,protectedPaths:d})},s.signal,s.cwd)}catch(L){throw L instanceof r?L:new r("sandbox_unavailable","The confined execution sandbox could not wrap the command.")}let[R,...ge]=f.argv;if(!R)throw new r("sandbox_unavailable","The confined execution sandbox produced no command.");return await e.spawnCaptured(R,ge,{cwd:s.cwd,timeoutMs:s.timeoutMs,signal:s.signal,env:a?f.env:e.scrubEnvironment(s.root,c)})}finally{T();try{l.cleanupAfterCommand()}catch{}if(c!==void 0)o(c)}}}
7
- export{cr,Ae,ka,Jr,xa,Ca,Gn,Aa,Kn,Pa};
6
+ `)})(),J}var Ne=`h=$(mktemp -d) || exit 125; trap 'rm -rf "$h"' EXIT; mkdir -p "$h/AppData/Roaming" "$h/AppData/Local"; w=$(cygpath -w "$h"); export HOME="$h" USERPROFILE="$w" APPDATA="$w\\AppData\\Roaming" LOCALAPPDATA="$w\\AppData\\Local" TEMP="$w" TMP="$w"; `;async function ce(){let e=E;if(E=null,_=null,!e)return;try{await(await e).reset()}catch{}}async function ue(e={}){if(p)return!1;if(e.loadSandboxRuntime)return G(e.loadSandboxRuntime);if(!Xn())return!1;return U??=G(te),U}async function G(e){try{let{SandboxManager:n}=await e();if(process.platform==="win32"){if(!S(Ae()))g("dependencies_missing: srt-win.exe");return!p}let o=n.checkDependencies().errors;if(o.length>0)return g(`dependencies_missing: ${o.join(", ")}`),!1;return!p}catch(n){return g(`load_failed: ${String(n)}`),!1}}async function La(e={}){if(!e.loadSandboxRuntime&&!e.sandboxMode){if(!await ue())return!1;return H??=X({}),H}return X(e)}async function X(e){let n=process.platform==="win32",o=z(u(V(),"reason-device-probe-"));try{let t=n?se(o,!1):void 0;if(t)await oe(t,!1);let i;try{i=await We(await D(e,t),o)}catch{return!1}finally{if(n)T()}if(!i)g("confined_command_failed");if(w===0)await(n?ie():ce());return i}finally{q(o,{recursive:!0,force:!0})}}async function We(e,n){let o=process.platform==="win32",t=o?"true":re(S);if(!t)return!1;try{let{argv:i,env:s}=await e.wrapWithSandboxArgv(fe([t]),Yn(),{filesystem:o?pe([],n):me({root:n,allowWrite:!1,temporaryDirectory:n,protectedPaths:[]})},void 0,n),[a,...l]=i;if(!a)return!1;return await Le(a,l,n,o?{env:s}:{})}catch{return!1}finally{try{e.cleanupAfterCommand()}catch{}}}function Le(e,n,o,t={}){return new Promise((i)=>{let s=!1,a,l=(f)=>{if(s)return;s=!0,clearTimeout(a),i(f)},c;try{c=(t.spawnChild??k)(e,n,{cwd:o,env:t.env??{PATH:Ft,HOME:o,TMPDIR:o},stdio:"ignore",windowsHide:!0})}catch{l(!1);return}c.once("error",()=>l(!1));let d=(f,R)=>l(f===0&&R===null);if(c.once("exit",d),c.once("close",d),c.exitCode!==null||c.signalCode!==null)d(c.exitCode,c.signalCode);if(s)return;a=setTimeout(()=>{l(!1);try{c.kill("SIGKILL")}catch{}},Math.min(t.timeoutMs??I,I))})}function Yn(e=S,n=W()){if(n==="win32")return Ye("win32");return["/bin/bash","/bin/sh"].find((o)=>e(o))??"/bin/sh"}function fe(e){return e.map((n)=>`'${n.replaceAll("'","'\\''")}'`).join(" ")}function Fe(e,n,o=(t)=>we(t,{withFileTypes:!0}).filter((i)=>i.isDirectory()||i.isFile()).map((i)=>i.name)){let t=[],i=[{path:e,depth:0}],s=0;while(i.length>0&&s<O){let a=i.pop(),l;try{l=o(a.path)}catch{continue}for(let c of l){if(s+=1,s>O)break;let d=u(a.path,c);if(n(d)){t.push(d);continue}if(a.depth+1<ye&&!Pe.has(c))i.push({path:d,depth:a.depth+1})}}return t}function me(e){let n=u(e.root,".git"),o=[];try{if(Q(n).isDirectory())o=[u(n,"config"),u(n,"hooks")]}catch{}return{denyRead:["/home","/root","/tmp","/tmp/.X11-unix",...e.protectedPaths],allowRead:[e.root,e.temporaryDirectory],allowWrite:[...e.allowWrite?[e.root]:[],e.temporaryDirectory],denyWrite:[...e.protectedPaths,...o]}}function pe(e,n){let o=u(n,".git"),t=[];try{if(Q(o).isDirectory())t=[u(o,"config"),u(o,"hooks")]}catch{}return{denyRead:[...e],allowRead:[],allowWrite:[],denyWrite:[...e,...t]}}function Ie(e,n){if(n)return{network:{allowedDomains:[],deniedDomains:[]},filesystem:n,windows:{srtWin:{path:Ae()}}};return{network:{allowedDomains:[],deniedDomains:[]},filesystem:{denyRead:[],allowRead:[],allowWrite:[],denyWrite:[]},...e==="weak"?{enableWeakerNestedSandbox:!0}:{}}}function $a(e){let n=e.createTemporaryDirectory??(()=>z(u(V(),"reason-device-"))),o=e.removeTemporaryDirectory??((t)=>q(t,{recursive:!0,force:!0}));return async(t,i,s)=>{let a=process.platform==="win32",l;if(a){let d=se(s.root,s.allowWrite);if(!await oe(d,!s.workerProbe,s.signal,s.timeoutMs))return{exitCode:null,signal:null,stdout:"",stderr:"",timedOut:!0,truncated:!1};try{l=await D(e,d)}catch(f){throw T(),f}}else l=await D(e),w+=1;let c;try{c=n();let d=Fe(s.root,e.isProtectedPath),f;try{f=await l.wrapWithSandboxArgv((a?Ne:"")+fe([t,...i]),e.shell??Yn(),{filesystem:a?pe(d,s.root):me({root:s.root,allowWrite:s.allowWrite,temporaryDirectory:c,protectedPaths:d})},s.signal,s.cwd)}catch(L){throw L instanceof r?L:new r("sandbox_unavailable","The confined execution sandbox could not wrap the command.")}let[R,...ge]=f.argv;if(!R)throw new r("sandbox_unavailable","The confined execution sandbox produced no command.");return await e.spawnCaptured(R,ge,{cwd:s.cwd,timeoutMs:s.timeoutMs,signal:s.signal,env:a?f.env:e.scrubEnvironment(s.root,c)})}finally{T();try{l.cleanupAfterCommand()}catch{}if(c!==void 0)o(c)}}}
7
+ export{cr,Ae,Da,tn,Oa,Na,Xn,La,Yn,$a};
@@ -0,0 +1,81 @@
1
+ // @bun
2
+ import{D}from"./vm-hands-entry-lite-13nx02p7.js";import{_s}from"./vm-hands-entry-lite-thstg177.js";import{rs}from"./vm-hands-entry-lite-cc8hwgxc.js";import{s}from"./vm-hands-entry-lite-12ck5swp.js";import{r}from"./vm-hands-entry-lite-qy9xg6em.js";import{createHash as pe}from"crypto";import{once as Te}from"events";import{createWriteStream as Ne,existsSync as Ae,mkdirSync as Me,mkdtempSync as Pt,readFileSync as L,readdirSync as Dt,renameSync as Ue,realpathSync as He,rmSync as Le,statSync as z,writeFileSync as je}from"fs";import{delimiter as Nt,dirname as J,join as a}from"path";import{finished as Fe}from"stream/promises";var Xt="omljlfpmafedpplnpkkahegadhkimdje",yc="https://chromewebstore.google.com/detail/reason/omljlfpmafedpplnpkkahegadhkimdje";var x={ocu:{repository:"https://github.com/iFurySt/open-codex-computer-use.git",revision:"386a260d1ab8b690adbbb27f7471595cf0c2b752",version:"0.3.5"},obu:{repository:"https://github.com/iFurySt/open-browser-use.git",revision:"ac015846df75928fbcf0f3a0f3ba3a210ce1a507",version:"0.1.42"}},S={version:"155.0.8059.84",macArm64Sha256:"13b9e98ce56f5ce18e100a009f455c9285f399e7c9dc8a76fdf2f3a9755bb5f2",linux64Sha256:"cf0f049892dea22e6a6db26d47ed0d7776b7158edcbec4634086633df8bafcbc",win64Sha256:"507f2a031441d10c62b5e3d4e863f09ac1198a571c1419976cbd8387f639afde"};var R={ocu:{url:`https://registry.npmjs.org/open-computer-use/-/open-computer-use-${x.ocu.version}.tgz`,sha256:"7c16a87c8cd357787b02c0ebd040dd5f93880c1fb51c1901caa2e0c05d063130",size_bytes:5844280},obu:{url:`https://registry.npmjs.org/open-browser-use/-/open-browser-use-${x.obu.version}.tgz`,sha256:"9386d8ce0a147b3f55e1807b68edf736836378807541c457c9b5f6ca2cabaa4e",size_bytes:21372018},extension:{url:`https://github.com/iFurySt/open-browser-use/releases/download/v${x.obu.version}/open-browser-use-chrome-extension-${x.obu.version}.zip`,sha256:"c9c07bec1175e12ea6985b0e7784a5ef01fd03f014b958224a1e17dcd838a241",size_bytes:31070}},le="pnbmoicbkopffjjgfgfglopechaiemkp";import{spawn as B}from"child_process";import{createRequire as Se}from"module";import{join as ke}from"path";var Ee=30000,Ce=1048576;function G(){return process.env.SystemRoot??"C:\\Windows"}function Ie(){return ke(G(),"System32","WindowsPowerShell","v1.0","powershell.exe")}var Oe=String.raw`
3
+ $ErrorActionPreference = "Stop"
4
+ Add-Type -TypeDefinition @"
5
+ using System;
6
+ using System.Runtime.InteropServices;
7
+ public static class ReasonInput {
8
+ [StructLayout(LayoutKind.Sequential)] public struct MOUSEINPUT { public int dx; public int dy; public int mouseData; public uint dwFlags; public uint time; public IntPtr dwExtraInfo; }
9
+ [StructLayout(LayoutKind.Sequential)] public struct KEYBDINPUT { public ushort wVk; public ushort wScan; public uint dwFlags; public uint time; public IntPtr dwExtraInfo; }
10
+ [StructLayout(LayoutKind.Explicit)] public struct UNION { [FieldOffset(0)] public MOUSEINPUT mi; [FieldOffset(0)] public KEYBDINPUT ki; }
11
+ [StructLayout(LayoutKind.Sequential)] public struct INPUT { public uint type; public UNION u; }
12
+ [DllImport("user32.dll")] static extern uint SendInput(uint count, INPUT[] inputs, int size);
13
+ [DllImport("user32.dll")] public static extern bool SetProcessDPIAware();
14
+ [DllImport("user32.dll")] public static extern int GetSystemMetrics(int index);
15
+ [DllImport("user32.dll")] static extern uint MapVirtualKey(uint code, uint type);
16
+ [DllImport("user32.dll")] public static extern uint GetClipboardSequenceNumber();
17
+ static void Send(INPUT input) { SendInput(1, new INPUT[] { input }, Marshal.SizeOf(typeof(INPUT))); }
18
+ public static void Mouse(uint flags, int x, int y, int data) {
19
+ INPUT input = new INPUT(); input.type = 0;
20
+ input.u.mi.dx = x; input.u.mi.dy = y; input.u.mi.mouseData = data; input.u.mi.dwFlags = flags; Send(input);
21
+ }
22
+ public static void Key(ushort vk, ushort unit, uint flags) {
23
+ INPUT input = new INPUT(); input.type = 1;
24
+ input.u.ki.wVk = vk; input.u.ki.wScan = vk != 0 ? (ushort)MapVirtualKey(vk, 0) : unit; input.u.ki.dwFlags = flags; Send(input);
25
+ }
26
+ }
27
+ "@
28
+ [void][ReasonInput]::SetProcessDPIAware()
29
+ $width = [ReasonInput]::GetSystemMetrics(0)
30
+ $height = [ReasonInput]::GetSystemMetrics(1)
31
+ $session = [Diagnostics.Process]::GetCurrentProcess().SessionId
32
+ [Console]::Out.WriteLine('{"session":' + $session + ',"width":' + $width + ',"height":' + $height + '}')
33
+ [Console]::Out.Flush()
34
+ $mode = "__MODE__"
35
+ if ($mode -eq "probe") { exit 0 }
36
+ if ($mode -eq "clipboard") {
37
+ # Only changes made during this pairing: never export the initial clipboard.
38
+ $parent = Get-Process -Id __PARENT__
39
+ $last = [ReasonInput]::GetClipboardSequenceNumber()
40
+ while (-not $parent.HasExited) {
41
+ Start-Sleep -Milliseconds 100
42
+ $count = [ReasonInput]::GetClipboardSequenceNumber()
43
+ if ($count -eq $last) { continue }
44
+ $last = $count
45
+ try { $text = Get-Clipboard -Raw } catch { continue }
46
+ if (-not $text) { continue }
47
+ $bytes = [Text.Encoding]::UTF8.GetBytes($text)
48
+ if ($bytes.Length -gt __MAX_TEXT_BYTES__) { continue }
49
+ [Console]::Out.WriteLine("c " + [Convert]::ToBase64String($bytes))
50
+ [Console]::Out.Flush()
51
+ }
52
+ exit 0
53
+ }
54
+ $scaleX = 65535.0 / [Math]::Max(1, $width - 1)
55
+ $scaleY = 65535.0 / [Math]::Max(1, $height - 1)
56
+ while ($null -ne ($line = [Console]::In.ReadLine())) {
57
+ $n = $line.Split(" ")
58
+ try {
59
+ switch ($n[0]) {
60
+ "p" { [ReasonInput]::Mouse(0x8001, [int]([int]$n[1] * $scaleX), [int]([int]$n[2] * $scaleY), 0) }
61
+ "b" { [ReasonInput]::Mouse([uint32]$n[1], 0, 0, [int]$n[2]) }
62
+ "k" { [ReasonInput]::Key([uint16]$n[1], [uint16]$n[2], [uint32]$n[3]) }
63
+ "c" { Set-Clipboard -Value ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($n[1]))) }
64
+ }
65
+ } catch { [Console]::Error.WriteLine("input: $_") }
66
+ }
67
+ `;function W(e){let t=Oe.replace("__MODE__",e).replace("__PARENT__",String(process.pid)).replace("__MAX_TEXT_BYTES__",String(D));return[Ie(),["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",Buffer.from(t,"utf16le").toString("base64")]]}var Re=["USERPROFILE","LOCALAPPDATA","APPDATA","TEMP","TMP","PSModuleAnalysisCachePath"];function K(){let e=Re.flatMap((t)=>process.env[t]?[[t,process.env[t]]]:[]);return{...Object.fromEntries(e),SystemRoot:G(),windir:G()}}function ie(e){let t;try{t=JSON.parse(e)}catch{return null}if(!t||typeof t!=="object")return null;let n=t,o=(i,l)=>typeof i==="number"&&Number.isSafeInteger(i)&&i>=l;return o(n.session,0)&&o(n.width,1)&&o(n.height,1)?{session:n.session,width:n.width,height:n.height}:null}function wc(){return new Promise((e)=>{let t=B(...W("probe"),{env:K(),stdio:["ignore","pipe","ignore"],windowsHide:!0}),n="",o=setTimeout(()=>{t.kill("SIGKILL"),e(null)},Ee);t.stdout.setEncoding("utf8").on("data",(i)=>{n+=i}),t.once("error",()=>{clearTimeout(o),e(null)}),t.once("close",()=>{clearTimeout(o),e(ie(n.split(/\r?\n/)[0]??""))})})}var P;function ae(){if(P!==void 0)return P;if(process.platform!=="win32")return P=!1;try{let e=Se(import.meta.url)("bun:ffi"),{symbols:t}=e.dlopen("kernel32.dll",{GetCurrentProcessId:{args:[],returns:e.FFIType.u32},ProcessIdToSessionId:{args:[e.FFIType.u32,e.FFIType.ptr],returns:e.FFIType.i32}}),n=new Uint32Array(1);return P=t.ProcessIdToSessionId(t.GetCurrentProcessId(),n)!==0&&n[0]>0}catch{return P=!1}}var ee=[{bit:1,down:2,up:4},{bit:2,down:32,up:64},{bit:4,down:8,up:16}],te=2048,ne=4096,$e=[[8,te,120],[16,te,-120],[32,ne,-120],[64,ne,120]],oe=1,F=2,Pe=4,De=new Set([65505,65506]),se=new Set([65507,65508,65511,65512,65513,65514,65027,65515,65516]),re=new Map([[65505,[160,!1]],[65506,[161,!1]],[65507,[162,!1]],[65508,[163,!0]],[65511,[164,!1]],[65512,[165,!0]],[65513,[164,!1]],[65514,[165,!0]],[65027,[165,!0]],[65515,[91,!0]],[65516,[92,!0]],[65288,[8,!1]],[65289,[9,!1]],[65056,[9,!1]],[65293,[13,!1]],[65307,[27,!1]],[65535,[46,!0]],[65379,[45,!0]],[65360,[36,!0]],[65367,[35,!0]],[65365,[33,!0]],[65366,[34,!0]],[65361,[37,!0]],[65362,[38,!0]],[65363,[39,!0]],[65364,[40,!0]],[65383,[93,!0]],[65509,[20,!1]],[65299,[19,!1]],[65300,[145,!1]],[65377,[44,!0]],[65407,[144,!0]],[32,[32,!1]],[65421,[13,!0]],[65408,[32,!1]],[65450,[106,!1]],[65451,[107,!1]],[65452,[108,!1]],[65453,[109,!1]],[65454,[110,!1]],[65455,[111,!0]],[65429,[36,!1]],[65430,[37,!1]],[65431,[38,!1]],[65432,[39,!1]],[65433,[40,!1]],[65434,[33,!1]],[65435,[34,!1]],[65436,[35,!1]],[65438,[45,!1]],[65439,[46,!1]],...Array.from({length:10},(e,t)=>[65456+t,[96+t,!1]]),...Array.from({length:24},(e,t)=>[65470+t,[112+t,!1]])]);class ce{x=-1;y=-1;mask=0;held=new Set;pressed=new Set;pointer(e,t,n){let o=[];if(e!==this.x||t!==this.y)this.x=e,this.y=t,o.push(`p ${e} ${t}`);for(let i of ee){let l=(this.mask&i.bit)!==0,c=(n&i.bit)!==0;if(l!==c)o.push(`b ${c?i.down:i.up} 0`)}for(let[i,l,c]of $e)if(!(this.mask&i)&&n&i)o.push(`b ${l} ${c}`);return this.mask=n,o}key(e,t){let n=e?0:F;if(De.has(t)||se.has(t))if(e)this.held.add(t);else this.held.delete(t);let o=re.get(t);if(o)return[`k ${o[0]} 0 ${n|(o[1]?oe:0)}`];let i=t<256?t:(t&4278190080)===16777216?t&16777215:0,l=String.fromCharCode(i),c=[...this.held].some((f)=>se.has(f)),d=/^[A-Za-z0-9]$/.test(l)?l.toUpperCase().charCodeAt(0):0;if(d&&(e?c:this.pressed.has(d))){if(e)this.pressed.add(d);else this.pressed.delete(d);return[`k ${d} 0 ${n}`]}if(i<33||i>=127&&i<160||i>65535||i>=55296&&i<57344)return[];return[`k 0 ${i} ${n|Pe}`]}release(){let e=ee.filter((t)=>this.mask&t.bit).map((t)=>`b ${t.up} 0`);for(let t of this.pressed)e.push(`k ${t} 0 ${F}`);for(let t of this.held){let[n,o]=re.get(t);e.push(`k ${n} 0 ${F|(o?oe:0)}`)}return this.mask=0,this.pressed.clear(),this.held.clear(),e}}function bc(e){let t=B(...W("input"),{env:K(),stdio:["pipe","pipe","ignore"],windowsHide:!0}),n=new ce,o="",i=!1,l=null,c=()=>{if(l?.kill("SIGKILL"),t.exitCode!==null||t.signalCode!==null)return;t.stdin.end(n.release().map((u)=>`${u}
68
+ `).join("")),setTimeout(()=>t.kill("SIGKILL"),2000).unref()},d=(u)=>{if(i)return;i=!0,c(),e.end(u)},f=(u)=>d({error:new r("display_unavailable",u)}),h=(u)=>{if(i||u.length===0)return;if(t.stdin.write(u.map((m)=>`${m}
69
+ `).join("")),t.stdin.writableLength>Ce)d({reason:"input_backpressure"})},y=()=>{l=B(...W("clipboard"),{env:K(),stdio:["ignore","pipe","ignore"],windowsHide:!0});let u="";l.stdout?.on("data",(m)=>{if(i)return;u+=m.toString("ascii");for(let g=u.indexOf(`
70
+ `);g>=0;g=u.indexOf(`
71
+ `)){let T=u.slice(0,g).replace(/\r$/,"");if(u=u.slice(g+1),!T.startsWith("c "))continue;let v=T.slice(2);if(v.length>Math.ceil(D/3)*4||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(v)){d({reason:"display_protocol"});return}let p=Buffer.from(v,"base64");if(p.byteLength<=D)e.clipboard(p.toString("utf8"));if(i)return}if(u.length>Math.ceil(D/3)*4+4)d({reason:"display_protocol"})}),l.once("error",()=>f("Reason could not watch this computer's desktop clipboard.")),l.once("exit",()=>{if(!i)f("Reason could not watch this computer's desktop clipboard.")})};return t.stdout.on("data",(u)=>{if(i||o===null)return;o+=u.toString("utf8");let m=o.indexOf(`
72
+ `);if(m<0){if(o.length>4096)d({reason:"display_protocol"});return}let g=ie(o.slice(0,m).trim());if(o=null,!g)d({reason:"display_protocol"});else if(g.session===0)f("This Windows worker runs as a service, which has no desktop: run it in the signed-in desktop session.");else y(),e.ready({width:g.width,height:g.height})}),t.stdin.on("error",()=>{return}),t.once("error",()=>f("Reason could not start this computer's desktop input.")),t.once("exit",()=>{if(o!==null)f("Reason could not start this computer's desktop input.");else d({reason:"display_closed"})}),{pointer:(u,m,g)=>h(n.pointer(u,m,g)),key:(u,m)=>h(n.key(u,m)),clipboard:(u)=>h([`c ${Buffer.from(u,"utf8").toString("base64")}`]),close(){i=!0,c()}}}var Be=["none","standard","all"],H="22.23.4",Ge={"linux-x64":"b8492284c76a54baf58d61668dd0e41ee0fc98adabf9503d30f05d08f55b4406","linux-arm64":"f7a1e486dbc8b286847815b477d4fb5e9fb963ed4489c3e1588853d685f589f9","darwin-arm64":"c9e1dbc748b33ed2d14f42445191ecaf14c56259c7a9a26d0042c49ec2b66428","win32-x64":"cbc74b5e0982c9dbb41525fd8fb5dcd32fbee237863f7829072f4639a1ce5f20","win32-arm64":"a8b8cd79cbbb3062435f449591d98dd63730bbbf30ce2d7cc3a6376c236cb111"},X={"linux-x64":{ocu:"dist/linux/amd64/open-computer-use",obu:"native/linux-amd64/open-browser-use"},"linux-arm64":{ocu:"dist/linux/arm64/open-computer-use",obu:"native/linux-arm64/open-browser-use"},"darwin-arm64":{ocu:"dist/Open Computer Use.app/Contents/MacOS/OpenComputerUse",obu:"native/darwin-arm64/open-browser-use"},"win32-x64":{ocu:"dist/windows/amd64/open-computer-use.exe",obu:"native/windows-amd64/open-browser-use.exe"},"win32-arm64":{ocu:"dist/windows/arm64/open-computer-use.exe",obu:"native/windows-arm64/open-browser-use.exe"}},fe="chrome-mac-arm64/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing",me="chrome-win64/chrome.exe",E={version:"9.0.2",url:"https://ffmpeg.martin-riedl.de/download/macos/arm64/1789931890_9.0.2/ffmpeg.zip",sha256:"c8ed4c4e6978a03c485edbfe4e0a5dc2380f8a30bba5150531b31b094492d924"},We={version:E.version,url:"https://ffmpeg.martin-riedl.de/download/macos/arm64/1789931890_9.0.2/ffprobe.zip",sha256:"fcbe839537485eaee7a7a8bc5cbc0f90d53617e80943e8a5b2e31cb851197ea6"},V={version:E.version,url:`https://github.com/GyanD/codexffmpeg/releases/download/${E.version}/ffmpeg-${E.version}-essentials_build.zip`,sha256:"60f467265b1e312373dbcd92200c2618a74850f98d3d078e94296bb3fa2047ba"},ue=`ffmpeg-${V.version}-essentials_build/bin`,k="com.ifuryst.open_browser_use.extension",ge="com.reasonmachines.browser_use.extension",Sr="/tmp/reason-browser-use",q=["tint2","picom","xterm","pcmanfm"],he=["fonts-droid-fallback"],be=["pulseaudio"],xe=["tigervnc-standalone-server"],Ke=["xvfb","openbox","x11vnc","x11-utils","x11-xserver-utils","xdotool","dbus-x11","at-spi2-core","python3","python3-gi","gir1.2-atspi-2.0","gir1.2-gtk-3.0","fonts-dejavu-core",...he,"galculator","chromium","ffmpeg","tmux",...be,...xe,...q],Xe=new Set([...q,...he,...be,...xe]),de=Ke.filter((e)=>e!=="chromium"&&!Xe.has(e)),Ve=["Xvfb","openbox","x11vnc","xdotool","dbus-launch","python3","ffmpeg","tmux"],U="/usr/bin/chromium",ze=["/usr/local/bin","/usr/bin","/bin","/opt/homebrew/bin"];function we(e=process.platform,t=process.arch){let n=`${e}-${t}`;return n==="linux-x64"||n==="linux-arm64"||n==="darwin-arm64"||n==="win32-x64"||n==="win32-arm64"?n:null}function C(e){return e==="win32-x64"||e==="win32-arm64"}function Y(e){return C(e)?`node-v${H}-${e.replace("win32","win")}`:`node-v${H}-${e}`}function j(e){return{node:{version:H,url:`https://nodejs.org/dist/v${H}/${Y(e)}${C(e)?".zip":".tar.gz"}`,sha256:Ge[e]},open_computer_use:{version:x.ocu.version,url:R.ocu.url,sha256:R.ocu.sha256},open_browser_use:{version:x.obu.version,url:R.obu.url,sha256:R.obu.sha256},...e==="darwin-arm64"?{chrome_for_testing:{version:S.version,url:`https://storage.googleapis.com/chrome-for-testing-public/${S.version}/mac-arm64/chrome-mac-arm64.zip`,sha256:S.macArm64Sha256}}:C(e)?{chrome_for_testing:{version:S.version,url:`https://storage.googleapis.com/chrome-for-testing-public/${S.version}/win64/chrome-win64.zip`,sha256:S.win64Sha256}}:{}}}function Je(e){let t={extension:le};for(let[n,o]of Object.entries(j(e)))t[n]=`${o.version}@${o.sha256}`;return t}function ye(e){return a(e,".local","share","reason","desktop")}function Er(e,t=rs()){let n=ye(t),o=(u)=>a(n,u,j(e)[u]?.version??""),i=o("open_computer_use"),l=o("open_browser_use"),c=e==="darwin-arm64",d=C(e),f=a(t,"Library","Application Support"),h=a(process.platform==="win32"&&process.env.LOCALAPPDATA?process.env.LOCALAPPDATA:a(t,"AppData","Local"),"OpenBrowserUse"),y=c?a(f,"Google","Chrome","NativeMessagingHosts",`${k}.json`):d?a(h,"NativeMessagingHosts",`${k}.json`):a(t,".config","google-chrome","NativeMessagingHosts",`${k}.json`);return{root:n,automation:a(J(n),"automation"),receipt:a(n,"receipt.json"),minimal:Q(t),node:d?a(o("node"),Y(e),"node.exe"):a(o("node"),"bin","node"),ocuDir:i,ocu:a(i,X[e].ocu),ocuApp:c?a(i,"dist","Open Computer Use.app"):null,obuDir:l,obu:a(l,"cli","open-browser-use.js"),nativeHost:a(l,X[e].obu),extensionDir:c?a(f,"OpenBrowserUse","chrome-extension","release"):d?a(h,"chrome-extension","release"):a(t,".local","share","open-browser-use","chrome-extension","release"),setupNativeHostManifest:y,nativeHostManifests:c?[y,a(f,"Google","ChromeForTesting","NativeMessagingHosts",`${k}.json`)]:d?[y]:[a(t,".config","chromium","NativeMessagingHosts",`${k}.json`),a(t,".config","google-chrome-for-testing","NativeMessagingHosts",`${k}.json`)],browser:c?a(o("chrome_for_testing"),fe):d?a(o("chrome_for_testing"),me):U,userChromeHost:c?a(n,"user-chrome","reason-browser-use"):null,userChromeRegistration:c?a(f,"Google","Chrome","NativeMessagingHosts",`${ge}.json`):null,ffmpegDir:a(n,"ffmpeg"),ffmpeg:c?a(n,"ffmpeg",E.version,"ffmpeg"):d?a(n,"ffmpeg",V.version,ue,"ffmpeg.exe"):null,ffprobe:c?a(n,"ffprobe",We.version,"ffprobe"):d?a(n,"ffmpeg",V.version,ue,"ffprobe.exe"):null}}function _e(e){try{let t=JSON.parse(L(e,"utf8"));if(typeof t!=="object"||t===null)return null;let n=t,o=n.pins;if(n.schema_version!==1||typeof n.platform!=="string"||typeof o!=="object"||o===null||!Object.values(o).every((i)=>typeof i==="string")||!Be.includes(n.permissions)||!Array.isArray(n.missing_system_packages)||!n.missing_system_packages.every((i)=>typeof i==="string")||typeof n.updated_at!=="string")return null;return{schema_version:1,platform:n.platform,pins:o,permissions:n.permissions,missing_system_packages:n.missing_system_packages,updated_at:n.updated_at}}catch{return null}}function qe(e,t,n=384){Me(J(e),{recursive:!0,mode:448});let o=`${e}.pending.${process.pid}`;je(o,t,{mode:n}),Ue(o,e)}function w(e){try{return z(e).isFile()}catch{return!1}}function ve(e){try{let t=z(e);return t.isFile()&&(t.mode&73)!==0}catch{return!1}}function Ye(e){try{return L(e,"utf8")}catch{return null}}function _(e){for(let t of ze){let n=a(t,e);try{let o=z(n);if(o.isFile()&&(o.mode&73)!==0)return n}catch{}}return null}function Ze(e){try{let t=JSON.parse(L(a(e,"package.json"),"utf8"));return typeof t==="object"&&t!==null&&typeof t.version==="string"?t.version:null}catch{return null}}function Qe(e,t,n){let o=j(n)[e];if(!o)return!1;let i=C(n);if(e==="node")return w(i?a(t,Y(n),"node.exe"):a(t,"bin","node"));if(e==="chrome_for_testing")return w(a(t,i?me:fe));let l=X[n][e==="open_computer_use"?"ocu":"obu"];return Ze(t)===o.version&&w(a(t,l))&&(e==="open_computer_use"||w(a(t,"cli","open-browser-use.js")))}function et(e){return pe("sha256").update(Buffer.from(e,"base64")).digest("hex").slice(0,32).replace(/./g,(t)=>String.fromCharCode(97+Number.parseInt(t,16)))}function Z(e){try{let t=JSON.parse(L(e,"utf8"));return typeof t==="object"&&t!==null&&!Array.isArray(t)?t:null}catch{return null}}function tt(e){let t=Z(a(e.extensionDir,"manifest.json"));return t!==null&&t.version===x.obu.version&&typeof t.key==="string"&&et(t.key)===le}function nt(e,t){let n=e?.allowed_origins;return e!==null&&e.name===k&&Array.isArray(n)&&n.length===1&&n[0]===`chrome-extension://${le}/`&&(t===void 0||e.path===t)}function ot(e){return tt(e)&&w(e.nativeHost)&&e.nativeHostManifests.every((t)=>nt(Z(t),e.nativeHost))}function st(e){return`#!/bin/sh
73
+ # Reason's Chrome extension host (reason desktop install): Open Browser Use on Reason's socket directory.
74
+ obu=${`'${e.replaceAll("'","'\\''")}'`}
75
+ case "$1" in
76
+ chrome-extension://*) exec "$obu" host --socket-dir ${Sr} ;;
77
+ mcp) shift; exec "$obu" mcp --socket-dir ${Sr} "$@" ;;
78
+ esac
79
+ exec "$obu" "$@"
80
+ `}function rt(e){let t=Z(e),n=t?.allowed_origins;return t!==null&&t.name===ge&&t.type==="stdio"&&Array.isArray(n)&&n.includes(`chrome-extension://${Xt}/`)&&typeof t.path==="string"&&ve(t.path)}function it(e,t){if(!e.userChromeHost||!e.userChromeRegistration)return null;if(!t||Ye(e.userChromeHost)!==st(e.nativeHost)||!ve(e.userChromeHost))return{code:"user_chrome_browser_use_missing"};return rt(e.userChromeRegistration)?{host:e.userChromeHost}:{code:"user_chrome_native_host_unregistered"}}var at={display:["display","desktop_session","desktop_video"],computer:["display","desktop_session","system_packages","node","open_computer_use"],browser:["display","desktop_session","system_packages","node","open_computer_use","open_browser_use","browser_extension","browser","chrome_for_testing"]};function A(e={}){let t=e.platform===void 0?we():e.platform;if(!t)return null;let n=Er(t,e.home),o=_e(n.receipt),i=Je(t),l=o!==null&&o.platform===t&&JSON.stringify(Object.entries(o.pins).sort())===JSON.stringify(Object.entries(i).sort()),c=[],d=j(t);for(let p of["node","open_computer_use","open_browser_use","chrome_for_testing"]){let b=d[p];if(!b)continue;let N=Qe(p,a(n.root,p,b.version),t),I=o?.pins[p],M=N&&I===i[p]?"ready":I!==void 0&&I!==i[p]?"outdated":"missing";c.push({name:p,state:M,detail:b.version})}let f=o?.pins.extension===le&&ot(n);c.push({name:"browser_extension",state:f?"ready":"missing",detail:le});let h=_("Xvfb"),y=_("x11vnc"),u=_("openbox");if(C(t))c.push(ae()?{name:"desktop_session",state:"ready",detail:"signed-in desktop session"}:{name:"desktop_session",state:"missing",detail:"run the worker in the signed-in desktop session, not as a service"}),c.push(n.ffmpeg&&w(n.ffmpeg)?{name:"desktop_video",state:"ready",detail:n.ffmpeg}:{name:"desktop_video",state:"missing",detail:"run `reason desktop install` for desktop video"});else if(t!=="darwin-arm64"){c.push(w(U)?{name:"browser",state:"ready",detail:U}:{name:"browser",state:"missing",detail:`non-snap Chromium at ${U}`});let p=h!==null&&y!==null&&u!==null;c.push({name:"display",state:p?"ready":"missing",detail:"Xvfb + openbox + x11vnc"});let b=Ve.filter((O)=>_(O)===null),N=(o?.missing_system_packages??de).filter((O)=>de.includes(O)),I=b.length===0&&N.length===0;c.push(I?{name:"system_packages",state:"ready"}:{name:"system_packages",state:"missing",detail:[...new Set([...N,...b])].join(" ")});let M=q.filter((O)=>_(O)===null);c.push(M.length===0?{name:"desktop_look",state:"ready"}:{name:"desktop_look",state:"missing",detail:M.join(" ")})}let m=n.ffmpeg&&w(n.ffmpeg)?n.ffmpeg:_("ffmpeg"),g=!m?null:m===n.ffmpeg?n.ffprobe:a(J(He(m)),"ffprobe"),T=l&&c.every((p)=>p.state==="ready"),v=(p)=>l&&c.every((b)=>!at[p].includes(b.name)||b.state==="ready");return{platform:t,root:n.root,automation:n.automation,ready:T,features:{display:v("display"),computer:v("computer"),browser:v("browser")},node:n.node,ocu:n.ocu,obu:n.obu,nativeHost:n.nativeHost,extensionDir:n.extensionDir,browser:n.browser,ffmpeg:m,ffprobe:g&&w(g)?g:null,userChrome:it(n,l&&["node","open_browser_use"].every((p)=>c.find((b)=>b.name===p)?.state==="ready")),pulseaudio:_("pulseaudio"),xvnc:_("Xvnc"),xvfb:h,x11vnc:y,openbox:u,components:c}}function Zo(e){return ct(e)?_s():[]}function ct(e){return e?.platform==="darwin-arm64"&&e.ffmpeg===a(e.root,"ffmpeg",E.version,"ffmpeg")}async function Qo(e,t,n,o=fetch){try{let i=await o(e,{redirect:"follow"});if(!i.ok||!i.body)throw Error(`download failed (HTTP ${i.status}): ${e}`);let l=pe("sha256"),c=Ne(n,{mode:384});try{let f=i.body.getReader();for(let h=await f.read();!h.done;h=await f.read())if(l.update(h.value),!c.write(h.value))await Te(c,"drain")}finally{c.end(),await Fe(c)}let d=l.digest("hex");if(d!==t)throw Error(`digest mismatch for ${e}: expected ${t}, got ${d}`)}catch(i){throw Le(n,{force:!0}),i}}function Q(e){return a(ye(e),"minimal.json")}function ut(e=s()){return Ae(Q(e))}function es(e={}){qe(Q(e.home??s()),`${JSON.stringify({version:1,minimal_at:(e.now?.()??new Date).toISOString()})}
81
+ `)}function ts(e={}){let t=e.platform===void 0?we():e.platform;if(t===null)return null;let n=e.home??s();if(_e(Er(t,n).receipt)!==null)return"refresh";return ut(n)?null:"install"}export{Xt,yc,le,wc,bc,Sr,Er,A,Zo,Qo,es,ts};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{Fn}from"./vm-hands-entry-lite-krpqqx12.js";import{Dt}from"./vm-hands-entry-lite-ab1pq3xg.js";import{execFileSync as p}from"child_process";import{realpathSync as S,statSync as w}from"fs";import{tmpdir as P}from"os";import{createRequire as b}from"module";import{win32 as r}from"path";var h=["/bin/bash","/usr/bin/bash"],ha="Git Bash was not found. Install Git for Windows (https://git-scm.com/download/win), then run `reason connect`.";function c(o){try{return w(o).isFile()}catch{return!1}}var i=(o)=>[r.join(o,"bin","bash.exe"),r.join(o,"usr","bin","bash.exe")];function g(o,e){let t=r.normalize(o).toLowerCase(),s=(e.SystemRoot??e.SYSTEMROOT??"C:\\Windows").toLowerCase();return t.startsWith(r.join(s,"system32").toLowerCase()+"\\")||t.startsWith(r.join(s,"sysnative").toLowerCase()+"\\")||t.includes("\\windowsapps\\")}function f(o=process.env,e=c){let t=[];for(let s of(o.PATH??o.Path??"").split(";"))if(s&&r.isAbsolute(s))t.push(r.join(s,"git.exe"));for(let s of[o.ProgramW6432,o.ProgramFiles,o["ProgramFiles(x86)"]])if(s)t.push(r.join(s,"Git","cmd","git.exe"));if(o.LOCALAPPDATA)t.push(r.join(o.LOCALAPPDATA,"Programs","Git","cmd","git.exe"));return t.find(e)??null}var a;function Wc(o=process.platform){if(o!=="win32")return"git";return a??=f(),a}function x(o){let e=process.platform==="win32"?f(o):"git";if(!e)return null;try{return p(e,["--exec-path"],{encoding:"utf8",timeout:5000,windowsHide:!0,stdio:["ignore","pipe","ignore"],env:o}).trim()||null}catch{return null}}function J(o=process.env,e=x,t=c){let s=[],l=e(o);if(l)s.push(...i(r.resolve(l,"..","..","..")));for(let n of[o.ProgramW6432,o.ProgramFiles,o["ProgramFiles(x86)"]])if(n)s.push(...i(r.join(n,"Git")));if(o.LOCALAPPDATA)s.push(...i(r.join(o.LOCALAPPDATA,"Programs","Git")));for(let n of(o.PATH??o.Path??"").split(";"))if(n&&r.isAbsolute(n))s.push(r.join(n,"bash.exe"));return s.find((n)=>!g(n,o)&&t(n))??null}var d;function Y(o=process.platform){if(o!=="win32")return h.find(c)??null;return d??=J(),d}function Xe(o=process.platform){let e=Y(o);if(!e)throw Error(o==="win32"?ha:"bash_unavailable");return e}function fa(o=process.platform){return S(o==="win32"?P():"/tmp")}function Rt(o=process.platform,e=process.env){if(o!=="win32")return"/usr/bin:/bin";let t=e.SystemRoot??e.SYSTEMROOT??"C:\\Windows";return[r.join(t,"System32"),t,r.join(t,"System32","Wbem"),r.join(t,"System32","WindowsPowerShell","v1.0")].join(";")}function B(o,e=process.platform){if(e!=="win32"||/[\\/]/.test(o))return o;let t=/\.exe$/i.test(o)?o:`${o}.exe`,s=Rt(e).split(";");return r.join(t.toLowerCase()==="powershell.exe"?s[3]:s[0],t)}function Tt(o=process.platform,e=process.env){if(o!=="win32")return{PATH:Rt(o)};let t=e.SystemRoot??e.SYSTEMROOT??"C:\\Windows";return{PATH:Rt(o,e),SystemRoot:t,WINDIR:t}}function Me(o=process.platform){return o==="win32"?{windowsHide:!0}:{detached:!0}}var u;function m(){if(u===void 0)u=Dt(Fn)(b(import.meta.url));return u}function It(o,e=process.platform){let t=o.pid;if(e!=="win32"||t===void 0)return;let s=m();if(s?.track(t))o.once("close",()=>s.release(t))}function Be(o,e="SIGTERM",t=process.platform){if(t!=="win32"){process.kill(-o,e);return}if(e===0){process.kill(o,0);return}if(m()?.terminate(o))return;p(B("taskkill",t),["/PID",String(o),"/T","/F"],{stdio:"ignore",timeout:1e4,windowsHide:!0})}function G(o,e=63,t=process.platform){return t==="win32"||o.uid===process.getuid?.()&&(o.mode&e)===0}var y=/^(?:con|prn|aux|nul|com[0-9\u00b9\u00b2\u00b3]|lpt[0-9\u00b9\u00b2\u00b3]|conin\$|conout\$)(?:\..*)?$|:|[. ]$/i;function Ki(o){return o!=="."&&o!==".."&&y.test(o)}
3
- export{ha,Wc,Y,Xe,fa,Rt,B,Tt,Me,It,Be,G,Ki};
2
+ import{Un}from"./vm-hands-entry-lite-rxydyqke.js";import{Ot}from"./vm-hands-entry-lite-wnqqjsew.js";import{execFileSync as p}from"child_process";import{realpathSync as S,statSync as w}from"fs";import{tmpdir as P}from"os";import{createRequire as b}from"module";import{win32 as r}from"path";var h=["/bin/bash","/usr/bin/bash"],va="Git Bash was not found. Install Git for Windows (https://git-scm.com/download/win), then run `reason connect`.";function c(o){try{return w(o).isFile()}catch{return!1}}var i=(o)=>[r.join(o,"bin","bash.exe"),r.join(o,"usr","bin","bash.exe")];function g(o,e){let t=r.normalize(o).toLowerCase(),s=(e.SystemRoot??e.SYSTEMROOT??"C:\\Windows").toLowerCase();return t.startsWith(r.join(s,"system32").toLowerCase()+"\\")||t.startsWith(r.join(s,"sysnative").toLowerCase()+"\\")||t.includes("\\windowsapps\\")}function f(o=process.env,e=c){let t=[];for(let s of(o.PATH??o.Path??"").split(";"))if(s&&r.isAbsolute(s))t.push(r.join(s,"git.exe"));for(let s of[o.ProgramW6432,o.ProgramFiles,o["ProgramFiles(x86)"]])if(s)t.push(r.join(s,"Git","cmd","git.exe"));if(o.LOCALAPPDATA)t.push(r.join(o.LOCALAPPDATA,"Programs","Git","cmd","git.exe"));return t.find(e)??null}var a;function Zc(o=process.platform){if(o!=="win32")return"git";return a??=f(),a}function x(o){let e=process.platform==="win32"?f(o):"git";if(!e)return null;try{return p(e,["--exec-path"],{encoding:"utf8",timeout:5000,windowsHide:!0,stdio:["ignore","pipe","ignore"],env:o}).trim()||null}catch{return null}}function J(o=process.env,e=x,t=c){let s=[],l=e(o);if(l)s.push(...i(r.resolve(l,"..","..","..")));for(let n of[o.ProgramW6432,o.ProgramFiles,o["ProgramFiles(x86)"]])if(n)s.push(...i(r.join(n,"Git")));if(o.LOCALAPPDATA)s.push(...i(r.join(o.LOCALAPPDATA,"Programs","Git")));for(let n of(o.PATH??o.Path??"").split(";"))if(n&&r.isAbsolute(n))s.push(r.join(n,"bash.exe"));return s.find((n)=>!g(n,o)&&t(n))??null}var d;function Y(o=process.platform){if(o!=="win32")return h.find(c)??null;return d??=J(),d}function Ye(o=process.platform){let e=Y(o);if(!e)throw Error(o==="win32"?va:"bash_unavailable");return e}function Sa(o=process.platform){return S(o==="win32"?P():"/tmp")}function Tt(o=process.platform,e=process.env){if(o!=="win32")return"/usr/bin:/bin";let t=e.SystemRoot??e.SYSTEMROOT??"C:\\Windows";return[r.join(t,"System32"),t,r.join(t,"System32","Wbem"),r.join(t,"System32","WindowsPowerShell","v1.0")].join(";")}function B(o,e=process.platform){if(e!=="win32"||/[\\/]/.test(o))return o;let t=/\.exe$/i.test(o)?o:`${o}.exe`,s=Tt(e).split(";");return r.join(t.toLowerCase()==="powershell.exe"?s[3]:s[0],t)}function It(o=process.platform,e=process.env){if(o!=="win32")return{PATH:Tt(o)};let t=e.SystemRoot??e.SYSTEMROOT??"C:\\Windows";return{PATH:Tt(o,e),SystemRoot:t,WINDIR:t}}function Me(o=process.platform){return o==="win32"?{windowsHide:!0}:{detached:!0}}var u;function m(){if(u===void 0)u=Ot(Un)(b(import.meta.url));return u}function Dt(o,e=process.platform){let t=o.pid;if(e!=="win32"||t===void 0)return;let s=m();if(s?.track(t))o.once("close",()=>s.release(t))}function Be(o,e="SIGTERM",t=process.platform){if(t!=="win32"){process.kill(-o,e);return}if(e===0){process.kill(o,0);return}if(m()?.terminate(o))return;p(B("taskkill",t),["/PID",String(o),"/T","/F"],{stdio:"ignore",timeout:1e4,windowsHide:!0})}function G(o,e=63,t=process.platform){return t==="win32"||o.uid===process.getuid?.()&&(o.mode&e)===0}var y=/^(?:con|prn|aux|nul|com[0-9\u00b9\u00b2\u00b3]|lpt[0-9\u00b9\u00b2\u00b3]|conin\$|conout\$)(?:\..*)?$|:|[. ]$/i;function Yi(o){return o!=="."&&o!==".."&&y.test(o)}
3
+ export{va,Zc,Y,Ye,Sa,Tt,B,It,Me,Dt,Be,G,Yi};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{spawn as m}from"child_process";import{statSync as p}from"fs";import{delimiter as b,join as g}from"path";function rn(e,r=process.env.PATH??"",s=process.env,u=process.platform){let t=u==="win32",a=e.includes("/")||t&&e.includes("\\");if(!e||a||e.includes("\x00"))return!1;let c=t?["",...(s.PATHEXT??".EXE;.CMD;.BAT;.COM").split(";")]:[""];return r.split(b).some((n)=>{if(!n)return!1;return c.some((o)=>{if(o===void 0)return!1;try{let f=p(g(n,`${e}${o}`));if(!f.isFile())return!1;return t||(f.mode&73)!==0}catch{return!1}})})}async function l(e){if(!e)return"";let r=[];try{for await(let s of e)r.push(Buffer.from(s))}catch{}return Buffer.concat(r).toString("utf8")}async function rc(e,r){let[s,...u]=e;if(!s)throw Error("A child process probe requires a program.");if(r.signal?.aborted)return{exitCode:-1,stdout:"",stderr:""};let t=m(s,u,{stdio:["ignore","pipe","pipe"],...r.env?{env:r.env}:{}}),a=l(t.stdout),c=l(t.stderr),n=()=>{try{t.kill()}catch{}};if(r.signal?.aborted)n();else r.signal?.addEventListener("abort",n,{once:!0});let o;try{return{exitCode:await Promise.race([new Promise((i)=>{t.once("error",()=>i(-1)),t.once("close",(d)=>i(d??-1))}),new Promise((i)=>{o=setTimeout(()=>{n(),i(-1)},r.timeoutMs)})]),stdout:await a,stderr:await c}}finally{if(o)clearTimeout(o);r.signal?.removeEventListener("abort",n)}}function nc(e){if(!(e>0))return;Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}
3
- export{rn,rc,nc};
2
+ import{spawn as m}from"child_process";import{statSync as p}from"fs";import{delimiter as b,join as g}from"path";function ln(e,r=process.env.PATH??"",s=process.env,u=process.platform){let t=u==="win32",a=e.includes("/")||t&&e.includes("\\");if(!e||a||e.includes("\x00"))return!1;let c=t?["",...(s.PATHEXT??".EXE;.CMD;.BAT;.COM").split(";")]:[""];return r.split(b).some((n)=>{if(!n)return!1;return c.some((o)=>{if(o===void 0)return!1;try{let f=p(g(n,`${e}${o}`));if(!f.isFile())return!1;return t||(f.mode&73)!==0}catch{return!1}})})}async function l(e){if(!e)return"";let r=[];try{for await(let s of e)r.push(Buffer.from(s))}catch{}return Buffer.concat(r).toString("utf8")}async function uc(e,r){let[s,...u]=e;if(!s)throw Error("A child process probe requires a program.");if(r.signal?.aborted)return{exitCode:-1,stdout:"",stderr:""};let t=m(s,u,{stdio:["ignore","pipe","pipe"],...r.env?{env:r.env}:{}}),a=l(t.stdout),c=l(t.stderr),n=()=>{try{t.kill()}catch{}};if(r.signal?.aborted)n();else r.signal?.addEventListener("abort",n,{once:!0});let o;try{return{exitCode:await Promise.race([new Promise((i)=>{t.once("error",()=>i(-1)),t.once("close",(d)=>i(d??-1))}),new Promise((i)=>{o=setTimeout(()=>{n(),i(-1)},r.timeoutMs)})]),stdout:await a,stderr:await c}}finally{if(o)clearTimeout(o);r.signal?.removeEventListener("abort",n)}}function dc(e){if(!(e>0))return;Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}
3
+ export{ln,uc,dc};