@reason-machines/cli-linux-arm64 0.2.406 → 0.2.408

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 (146) hide show
  1. package/THIRD_PARTY_NOTICES.txt +8 -7
  2. package/bin/reason +2 -2
  3. package/bin/runtime/srt/sandbox-runtime.mjs +52 -52
  4. package/bin/vm-hands/api-8d760ppa.js +2 -0
  5. package/bin/vm-hands/api-credentials-eea1g4aw.js +2 -0
  6. package/bin/vm-hands/connect-cli-m8xafyn5.js +2 -0
  7. package/bin/vm-hands/custom-endpoint-device-nfjhs9fv.js +2 -0
  8. package/bin/vm-hands/desktop-account-rx4ajy2j.js +2 -0
  9. package/bin/vm-hands/device-workspace-n9tn4bzw.js +2 -0
  10. package/bin/vm-hands/fsevents-vgg0dny6.js +2 -0
  11. package/bin/vm-hands/hands-worker-source-yxsap3qk.js +2 -0
  12. package/bin/vm-hands/index-kx10kwyx.js +12818 -0
  13. package/bin/vm-hands/install-receipt-rmsjtfqy.js +2 -0
  14. package/bin/vm-hands/local-automation-7qcnytj6.js +2 -0
  15. package/bin/vm-hands/local-capabilities-hchsc804.js +2 -0
  16. package/bin/vm-hands/local-desktop-users-c6858avg.js +2 -0
  17. package/bin/vm-hands/local-display-mac-zmbp9z4c.js +2 -0
  18. package/bin/vm-hands/local-display-session-7bgp7gvf.js +2 -0
  19. package/bin/vm-hands/local-pty-session-8m175hqx.js +2 -0
  20. package/bin/vm-hands/managed-runtime-nkmg5s5h.js +2 -0
  21. package/bin/vm-hands/network-contract-qt2s82ap.js +2 -0
  22. package/bin/vm-hands/package-11mkdcmn.js +2 -0
  23. package/bin/vm-hands/permissions-67xv16a5.js +2 -0
  24. package/bin/vm-hands/reason-hands-protocol-r356wr4t.js +2 -0
  25. package/bin/vm-hands/serve-service-4n7e0b08.js +2 -0
  26. package/bin/vm-hands/status-e7r62q4e.js +10 -0
  27. package/bin/vm-hands/version-vdev7tyq.js +2 -0
  28. package/bin/vm-hands/vm-hands-entry-lite-0n2f3kx7.js +3 -0
  29. package/bin/vm-hands/vm-hands-entry-lite-4aejamqr.js +3 -0
  30. package/bin/vm-hands/vm-hands-entry-lite-4geps3jz.js +5 -0
  31. package/bin/vm-hands/{vm-hands-entry-lite-xqve205b.js → vm-hands-entry-lite-51qvfk93.js} +2 -2
  32. package/bin/vm-hands/vm-hands-entry-lite-5p5h1eng.js +3 -0
  33. package/bin/vm-hands/vm-hands-entry-lite-6p9c8nhf.js +3 -0
  34. package/bin/vm-hands/vm-hands-entry-lite-6whxyzz2.js +52 -0
  35. package/bin/vm-hands/vm-hands-entry-lite-762fbns7.js +14 -0
  36. package/bin/vm-hands/vm-hands-entry-lite-79s23abx.js +7 -0
  37. package/bin/vm-hands/vm-hands-entry-lite-8bzqc4xa.js +2 -0
  38. package/bin/vm-hands/vm-hands-entry-lite-8evzzh7v.js +112 -0
  39. package/bin/vm-hands/vm-hands-entry-lite-8gtgr399.js +4 -0
  40. package/bin/vm-hands/vm-hands-entry-lite-9ym3sx81.js +2 -0
  41. package/bin/vm-hands/vm-hands-entry-lite-dkcm3hyn.js +3 -0
  42. package/bin/vm-hands/vm-hands-entry-lite-dq1m5ykp.js +5 -0
  43. package/bin/vm-hands/vm-hands-entry-lite-e5hbehqn.js +250 -0
  44. package/bin/vm-hands/vm-hands-entry-lite-et2bh990.js +458 -0
  45. package/bin/vm-hands/vm-hands-entry-lite-fyjzrvj5.js +3 -0
  46. package/bin/vm-hands/vm-hands-entry-lite-g3ja0c3y.js +2 -0
  47. package/bin/vm-hands/vm-hands-entry-lite-gc7c22pq.js +2 -0
  48. package/bin/vm-hands/{vm-hands-entry-lite-wer0qzxg.js → vm-hands-entry-lite-hcw5tk5d.js} +2 -2
  49. package/bin/vm-hands/vm-hands-entry-lite-hee1h411.js +105 -0
  50. package/bin/vm-hands/{vm-hands-entry-lite-dsh32j5a.js → vm-hands-entry-lite-hfmydph9.js} +5 -9
  51. package/bin/vm-hands/vm-hands-entry-lite-hzn1hf0p.js +3 -0
  52. package/bin/vm-hands/vm-hands-entry-lite-mvx29q2q.js +3 -0
  53. package/bin/vm-hands/vm-hands-entry-lite-mw0gzbds.js +6 -0
  54. package/bin/vm-hands/vm-hands-entry-lite-pmcz7j7t.js +3 -0
  55. package/bin/vm-hands/vm-hands-entry-lite-pn92kh7b.js +3 -0
  56. package/bin/vm-hands/vm-hands-entry-lite-ppytc9k7.js +3 -0
  57. package/bin/vm-hands/vm-hands-entry-lite-qffs74x1.js +540 -0
  58. package/bin/vm-hands/vm-hands-entry-lite-qy9xg6em.js +3 -0
  59. package/bin/vm-hands/vm-hands-entry-lite-rwr09j4w.js +3 -0
  60. package/bin/vm-hands/vm-hands-entry-lite-saqdrc2w.js +3 -0
  61. package/bin/vm-hands/vm-hands-entry-lite-snmxxhza.js +3 -0
  62. package/bin/vm-hands/{vm-hands-entry-lite-fbpxs065.js → vm-hands-entry-lite-t7an5zg2.js} +2 -2
  63. package/bin/vm-hands/vm-hands-entry-lite-v3xznxcw.js +4 -0
  64. package/bin/vm-hands/vm-hands-entry-lite-w8kc4jtb.js +3 -0
  65. package/bin/vm-hands/vm-hands-entry-lite-w9ckj5k4.js +5 -0
  66. package/bin/vm-hands/{vm-hands-entry-lite-jcd21jpm.js → vm-hands-entry-lite-wd576mgy.js} +54 -54
  67. package/bin/vm-hands/vm-hands-entry-lite-wf7ksh4e.js +9 -0
  68. package/bin/vm-hands/vm-hands-entry-lite-wyh6dp1t.js +4 -0
  69. package/bin/vm-hands/vm-hands-entry-lite-ym1djztp.js +42 -0
  70. package/bin/vm-hands/vm-hands-entry-lite-zg3b0c08.js +3 -0
  71. package/bin/vm-hands/vm-hands-entry-lite-zn0v259d.js +65 -0
  72. package/bin/vm-hands/vm-hands-entry-lite.js +3 -1
  73. package/bin/vm-hands/vm-hands-executor-79av9nam.js +11 -0
  74. package/bin/vm-hands/vm-hands-op-runner-kh1myd15.js +2 -0
  75. package/bin/vm-hands/vm-hands-runtime-yacvv937.js +4 -0
  76. package/bin/vm-hands/worker-sandbox-x8dsz324.js +2 -0
  77. package/package.json +1 -1
  78. package/bin/vm-hands/api-credentials-4e2gypqj.js +0 -2
  79. package/bin/vm-hands/api-f48wa4ym.js +0 -2
  80. package/bin/vm-hands/ask-relay-nydkgmvq.js +0 -8
  81. package/bin/vm-hands/connect-cli-10axcfnk.js +0 -2
  82. package/bin/vm-hands/custom-endpoint-device-8h95wy87.js +0 -2
  83. package/bin/vm-hands/desktop-account-2kkxwv1y.js +0 -2
  84. package/bin/vm-hands/device-workspace-nzz3kd5t.js +0 -2
  85. package/bin/vm-hands/hands-worker-source-as5wepvk.js +0 -2
  86. package/bin/vm-hands/index-2kk983b8.js +0 -12818
  87. package/bin/vm-hands/install-receipt-e6s355j1.js +0 -2
  88. package/bin/vm-hands/local-automation-nr2dg0t3.js +0 -2
  89. package/bin/vm-hands/local-capabilities-ep1d24ne.js +0 -2
  90. package/bin/vm-hands/local-desktop-users-sevkfkye.js +0 -2
  91. package/bin/vm-hands/local-display-mac-jzc0g5ge.js +0 -2
  92. package/bin/vm-hands/local-display-session-0vyd74rj.js +0 -2
  93. package/bin/vm-hands/local-pty-session-fe6jz2zy.js +0 -2
  94. package/bin/vm-hands/managed-runtime-5zrdx8xk.js +0 -2
  95. package/bin/vm-hands/network-contract-9smga6kn.js +0 -2
  96. package/bin/vm-hands/package-qjr5q0bp.js +0 -2
  97. package/bin/vm-hands/permissions-04sm9aq9.js +0 -2
  98. package/bin/vm-hands/reason-hands-protocol-5fhd49en.js +0 -2
  99. package/bin/vm-hands/serve-service-hd0k7s2x.js +0 -2
  100. package/bin/vm-hands/status-n3x94yjb.js +0 -96
  101. package/bin/vm-hands/version-aec5t9wd.js +0 -2
  102. package/bin/vm-hands/vm-hands-entry-lite-0c4nxpza.js +0 -3
  103. package/bin/vm-hands/vm-hands-entry-lite-159860ns.js +0 -52
  104. package/bin/vm-hands/vm-hands-entry-lite-1sc3wc94.js +0 -3
  105. package/bin/vm-hands/vm-hands-entry-lite-2nec0vk1.js +0 -3
  106. package/bin/vm-hands/vm-hands-entry-lite-40nkzw38.js +0 -3
  107. package/bin/vm-hands/vm-hands-entry-lite-5rkakg10.js +0 -4
  108. package/bin/vm-hands/vm-hands-entry-lite-5tgm1m3h.js +0 -458
  109. package/bin/vm-hands/vm-hands-entry-lite-69ray4x8.js +0 -6
  110. package/bin/vm-hands/vm-hands-entry-lite-6berk108.js +0 -3
  111. package/bin/vm-hands/vm-hands-entry-lite-72nn2b4n.js +0 -3
  112. package/bin/vm-hands/vm-hands-entry-lite-8f3px72v.js +0 -3
  113. package/bin/vm-hands/vm-hands-entry-lite-8gjrr6hg.js +0 -3
  114. package/bin/vm-hands/vm-hands-entry-lite-8tcnbfnm.js +0 -5
  115. package/bin/vm-hands/vm-hands-entry-lite-9vf97byd.js +0 -4
  116. package/bin/vm-hands/vm-hands-entry-lite-ac8sdh78.js +0 -105
  117. package/bin/vm-hands/vm-hands-entry-lite-bmywbwj4.js +0 -9
  118. package/bin/vm-hands/vm-hands-entry-lite-c60v3v0v.js +0 -540
  119. package/bin/vm-hands/vm-hands-entry-lite-er3nrbb9.js +0 -3
  120. package/bin/vm-hands/vm-hands-entry-lite-g1wjmmr9.js +0 -346
  121. package/bin/vm-hands/vm-hands-entry-lite-g5c9ec33.js +0 -5
  122. package/bin/vm-hands/vm-hands-entry-lite-h0y0xv5f.js +0 -3
  123. package/bin/vm-hands/vm-hands-entry-lite-h9t84ekh.js +0 -3
  124. package/bin/vm-hands/vm-hands-entry-lite-hd4a0a6f.js +0 -112
  125. package/bin/vm-hands/vm-hands-entry-lite-hepppjp0.js +0 -3
  126. package/bin/vm-hands/vm-hands-entry-lite-hye6r7dy.js +0 -3
  127. package/bin/vm-hands/vm-hands-entry-lite-jw5y1aa5.js +0 -3
  128. package/bin/vm-hands/vm-hands-entry-lite-ky0w7t09.js +0 -42
  129. package/bin/vm-hands/vm-hands-entry-lite-mapxp682.js +0 -4
  130. package/bin/vm-hands/vm-hands-entry-lite-np1fcr2t.js +0 -5
  131. package/bin/vm-hands/vm-hands-entry-lite-nqvb7a2m.js +0 -3
  132. package/bin/vm-hands/vm-hands-entry-lite-q4tcfj61.js +0 -3
  133. package/bin/vm-hands/vm-hands-entry-lite-qpba4sxt.js +0 -3
  134. package/bin/vm-hands/vm-hands-entry-lite-r2xmr627.js +0 -4
  135. package/bin/vm-hands/vm-hands-entry-lite-swwb5mp2.js +0 -3
  136. package/bin/vm-hands/vm-hands-entry-lite-vr38bh6k.js +0 -66
  137. package/bin/vm-hands/vm-hands-entry-lite-vwpraybq.js +0 -251
  138. package/bin/vm-hands/vm-hands-entry-lite-wa261sf8.js +0 -3
  139. package/bin/vm-hands/vm-hands-entry-lite-wn4gvb8w.js +0 -11
  140. package/bin/vm-hands/vm-hands-entry-lite-yg5h9mhm.js +0 -7
  141. package/bin/vm-hands/vm-hands-entry-lite-yqrmr2c8.js +0 -5
  142. package/bin/vm-hands/vm-hands-entry-lite-z5912r1q.js +0 -3
  143. package/bin/vm-hands/vm-hands-executor-m1jwswd0.js +0 -11
  144. package/bin/vm-hands/vm-hands-op-runner-6amaw4zn.js +0 -2
  145. package/bin/vm-hands/vm-hands-runtime-jt4j6362.js +0 -4
  146. package/bin/vm-hands/worker-sandbox-p242st5d.js +0 -2
@@ -1,11 +0,0 @@
1
- // @bun
2
- import{s as wq}from"./vm-hands-entry-lite-qpba4sxt.js";import{Ob as Nq,sc as Aq,yb as jq,yc as Rq}from"./vm-hands-entry-lite-5tgm1m3h.js";import"./vm-hands-entry-lite-69ray4x8.js";import"./vm-hands-entry-lite-jcd21jpm.js";import"./vm-hands-entry-lite-5rkakg10.js";import"./vm-hands-entry-lite-ky0w7t09.js";import"./vm-hands-entry-lite-yqrmr2c8.js";import"./vm-hands-entry-lite-9vf97byd.js";import"./vm-hands-entry-lite-xqve205b.js";import"./vm-hands-entry-lite-mapxp682.js";import"./vm-hands-entry-lite-2nec0vk1.js";import"./vm-hands-entry-lite-q4tcfj61.js";import"./vm-hands-entry-lite-fbpxs065.js";import"./vm-hands-entry-lite-8f3px72v.js";import"./vm-hands-entry-lite-hye6r7dy.js";import"./vm-hands-entry-lite-6berk108.js";import"./vm-hands-entry-lite-z5912r1q.js";import"./vm-hands-entry-lite-vr38bh6k.js";import"./vm-hands-entry-lite-r2xmr627.js";import"./vm-hands-entry-lite-8gjrr6hg.js";import"./vm-hands-entry-lite-hepppjp0.js";import"./vm-hands-entry-lite-wer0qzxg.js";import"./vm-hands-entry-lite-40nkzw38.js";import"./vm-hands-entry-lite-72nn2b4n.js";import{spawn as gq}from"child_process";import{chmodSync as Sq,chownSync as Eq,existsSync as l,lstatSync as e,mkdirSync as r,mkdtempSync as yq,readdirSync as s,readFileSync as I,realpathSync as mq,rmdirSync as qq,rmSync as uq,writeFileSync as y}from"fs";import{join as L}from"path";import{readFileSync as Wq,readlinkSync as Gq}from"fs";import{relative as _q}from"path";var Jq=16;function Yq(X){return X.replace(/\\([0-7]{3})/g,($,W)=>String.fromCharCode(Number.parseInt(W,8)))}function hq(X){let $=[];for(let W of X.split(`
3
- `)){let q=W.split(" ");if(q.length<10||!/^\d+:\d+$/.test(q[2]))continue;$.push({device:q[2],root:Yq(q[3]),mountPoint:Yq(q[4])})}return $}function kq(X,$,W){let q=X.replace(/\/+$/,"")||"/",J=(F)=>q==="/"||F===q||F.startsWith(`${q}/`),G=(F)=>new Map(hq(F).filter((R)=>J(R.mountPoint)).map((R)=>[`${R.mountPoint}\x00${R.device}\x00${R.root}`,R.mountPoint])),Y=G($),A=G(W),j=(F)=>_q(q,F)||".",f=[...Y].filter(([F])=>!A.has(F)).map(([,F])=>j(F)),O=[...A].filter(([F])=>!Y.has(F)).map(([,F])=>j(F));return{missing:f,extra:O,referenceCount:Y.size,ownCount:A.size}}function Kq(X,$,W,q="/proc"){let J,G,Y=null;try{J=Wq(`${q}/1/mountinfo`,"utf8"),G=Wq(`${q}/self/mountinfo`,"utf8")}catch(R){let v=R&&typeof R==="object"&&"code"in R&&typeof R.code==="string"?R.code:"unreadable";$("vm_hands.mount_check_unavailable",{code:v});return}try{Y=Gq(`${q}/1/ns/mnt`)===Gq(`${q}/self/ns/mnt`)}catch{}let{missing:A,extra:j,referenceCount:f,ownCount:O}=kq(X,J,G),F={reference_count:f,own_count:O,missing_count:A.length,extra_count:j.length,same_namespace:Y};if(j.length)$("vm_hands.mount_extra",{...F,extra:j.slice(0,Jq)});if(A.length)throw $("vm_hands.mount_mismatch",{...F,missing:A.slice(0,Jq)}),W(`${A.length} mount(s) under the Session root are missing from vm-hands' namespace`)}var Pq="/sys/fs/cgroup/reason-payload",H="vm-hands",lq="/run/ara-srt/fallbacks.jsonl",E="/reason-person",Xq=5000,cq=1e4,Bq="__VM_HANDS_PROOF_DIR__",pq="__VM_HANDS_PROBE_NONCE__";class D extends Error{code;constructor(X,$){super($);this.code=X}}function aq(X,$){if(!/^[0-9a-f-]{36}$/i.test($))throw new D("vm_hands_bind_invalid","bad bind id");return L(X,H,`b-${$.toLowerCase()}`)}var tq=5000,Iq=(X)=>`'${X.replaceAll("'","'\\''")}'`;function JX(X){let $=X.cgroup??Pq,W=X.init.layout.payload_uid,q=X.log??(()=>{}),J=new Map,G=new Map,Y=0,A=()=>{try{let Z=I("/run/ara-srt/starts.jsonl","utf8"),z=Z.slice(Y>Z.length?0:Y).split(`
4
- `).filter(Boolean);Y=Z.length;let K=z.map((U)=>{try{return Number(JSON.parse(U).elapsed_ms)||0}catch{return 0}});if(K.length)q("vm_hands.srt_server_starts",{count:K.length,elapsed_ms:K.slice(0,8)})}catch{}},j=null,f=!1,O=X.srtCgroup??"/sys/fs/cgroup/reason-srt",F=()=>{j??=Uq()},R=0,v=()=>{try{let Z=I(lq,"utf8"),z=Z.slice(R>Z.length?0:R);R=Z.length;let K=z.split(`
5
- `).filter(Boolean).slice(0,1000);if(!K.length)return null;let U={},T=0;for(let N of K)try{let M=JSON.parse(N),B=typeof M.code==="string"&&/^[a-z_]{1,40}$/.test(M.code)?M.code:"other";if(U[B]=(U[B]??0)+1,typeof M.elapsed_ms==="number")T=Math.max(T,M.elapsed_ms)}catch{U.unparsed=(U.unparsed??0)+1}return q("vm_hands.srt_fallbacks",{count:K.length,codes:U,max_elapsed_ms:T}),{count:K.length,codes:U,max_elapsed_ms:T}}catch{return null}},P=!1,m=(Z,z,K)=>{if(P)throw Error("vm_hands_pool_held");return vq(Z,z,K)},i=(Z)=>(z,K,U)=>gq("/bin/sh",["-c",`echo $$ > ${Iq(L(Z,"cgroup.procs"))} || exit 125; exec "$@"`,"vm-hands-join",z,...K],U),vq=i(L($,H)),u=L($,H,"probe"),g=(Z)=>aq($,Z),bq=(Z)=>{let z=g(Z);try{r(z,{mode:493})}catch(K){if(!(K&&typeof K==="object"&&("code"in K)&&K.code==="EEXIST"))throw new D("vm_hands_bind_failed","bind cgroup")}return z},xq=(Z)=>{try{qq(g(Z))}catch{}},x=X.prespawn?Nq({spawnProcess:m,...X.relayDependencies?.sourceEntrypoint?{sourceEntrypoint:X.relayDependencies.sourceEntrypoint}:{},log:(Z,z)=>q(Z,z??{})}):null;x?.arm();let n=x?setInterval(()=>{x.arm()},tq):null;n?.unref?.();async function c(Z){let z=J.get(Z);if(J.delete(Z),!z)return;z.abort.abort(),await z.done}return{bindCgroup:g,async startExecutor(Z){if(F(),G.set(Z.bindId,Uq()),f=!0,!Z.claim)throw new D("vm_hands_bind_invalid","an executor needs the claim it serves");await c(Z.bindId);let{claim:z,bindId:K}=Z,U=bq(K),T=z.owner;if(!T||typeof T.device_id!=="string"||typeof z.root_id!=="string")throw new D("vm_hands_bind_invalid","claim without its owner Device or root");let N=new AbortController,M,B,V=new Promise((Q,w)=>{M=Q,B=w}),_,C=new Promise((Q)=>{_=Q}),S=Rq({headless:!0,hostExecution:!0,runtimeDirectory:X.runtimeDirectory,deviceIdentity:{deviceId:T.device_id,rootId:z.root_id,apiOrigin:X.apiOrigin},claimOwner:z.owner,root:X.root,runId:z.run_id,operationId:z.operation_id,attemptId:z.attempt_id,payload:Object.fromEntries(Object.entries(z.payload).filter(([Q])=>!Q.startsWith("vm_hands_"))),signal:N.signal,...Z.workspaceGrant?{workspaceGrant:Z.workspaceGrant}:{},emitEvent:async(Q,w)=>{if(Q==="hands.ready"){M(w);return}if(Q==="hands.started"||Q==="hands.stopped"||Q==="hands.failed")return;await X.forward(K,Q,w)}},{...X.relayDependencies,spawnWorker:(Q)=>i(U)(Q.command,Q.args,Q.options),...x?{takePrespawnedWorker:(Q)=>{let w=x.take(Q);if(!w?.pid)return w;try{return y(L(U,"cgroup.procs"),String(w.pid)),w}catch{try{w.kill("SIGKILL")}catch{}return null}},adoptSpawnedWorker:x.adopt}:{}}).then(()=>{_("executor_stopped")},(Q)=>{let w=Q&&typeof Q==="object"&&"code"in Q?String(Q.code):"executor_failed";B(new D(w,Q instanceof Error?Q.message:String(Q))),_(w)}).finally(()=>B(new D("vm_hands_executor_exited","executor ended before it was ready")));J.set(K,{abort:N,done:S,exited:C,operationId:z.operation_id,runId:z.run_id,expiresAtMs:Date.parse(String(z.payload.expires_at??""))||0});let h=await V,p=h.executor_launch_id;if(typeof p!=="string")throw new D("vm_hands_bind_failed","executor ready without a launch id");return{launchId:p,readyData:h,applied:{hands_confinement:typeof z.payload.hands_confinement==="string"?z.payload.hands_confinement:null,browser_egress:z.payload.browser_egress??null}}},takeSrtFallbacks:v,executorExited(Z){return J.get(Z)?.exited??new Promise(()=>{})},freezeBind(Z){let z=g(Z);if(l(L(z,"cgroup.freeze")))y(L(z,"cgroup.freeze"),"1")},async killAndVerifyPayload(Z){let z=new Set(Z?.keep??[]);if(z.size||Z?.own)return Hq(Z?.bindId??null,z,Z?.own===!0);P=!0;let K=Tq();try{await Mq();let U=Promise.all([...J.keys()].map((B)=>c(B).catch(()=>{return})));A();let T=Date.now()+Xq;await a($,T,"payload"),await U;let N=(f||X.srtWarmLate?.()===!0)&&l(L(O,"cgroup.events"));if(N)await a(O,T,"srt");let M=$q(W).filter((B)=>!b(B,E));if(j!==null){let B=Zq(j).filter((V)=>V!==process.pid&&!b(V,E));if(B.length)throw q("vm_hands.kill_strays",{strays:t(B)}),new D("vm_hands_kill_unverified",`${B.length} process(es) the run started survived it`);j=null}if(f=!1,N)X.onSrtReset?.();if(M.length)throw q("vm_hands.kill_survivors",{pids:M.slice(0,16)}),new D("vm_hands_kill_unverified",`${M.length} payload-uid process(es) outside the payload cgroup`);G.clear();for(let B of zq())try{qq(L($,H,B))}catch{}}finally{P=!1,K()}if(x)setTimeout(()=>{if(!J.size)x.arm()},100).unref?.()},async killProbe(){let Z=Date.now()+Xq;if(l(L(u,"cgroup.events"))){await a(u,Z,"probe");try{qq(u)}catch{}}let z=Qq(process.pid);if(z===null)throw new D("vm_hands_kill_unverified","agent start time unreadable");await dq($,z,Z);let K=(T)=>{let N=Qq(T);return N!==null&&N<=z},U=$q(W).filter((T)=>K(T)&&!b(T,E));if(U.length)throw q("vm_hands.kill_survivors",{pids:U.slice(0,16),at:"attest"}),new D("vm_hands_kill_unverified",`${U.length} payload-uid process(es) from before this agent`);if(j!==null){let T=[$,L($,H)].map((B)=>B.replace(/^\/sys\/fs\/cgroup/,"")),N=O.replace(/^\/sys\/fs\/cgroup/,""),M=Zq(j).filter((B)=>B!==process.pid&&!b(B,E)&&!b(B,"/reason-vm-hands")&&!b(B,N)&&!T.some((V)=>Lq(B,V)));if(M.length&&f)throw q("vm_hands.kill_strays",{strays:t(M),at:"attest"}),new D("vm_hands_kill_unverified",`${M.length} process(es) the run started survived it`);if(M.length)q("vm_hands.attest_concurrent",{processes:t(M),count:M.length});j=null}},async runProbe({nonce:Z,script:z}){if(F(),!z.includes(Bq))throw new D("vm_hands_probe_failed","probe names no proof directory");let K=X.proofParent??"/tmp/reason-vm-hands-proof";r(K,{mode:457,recursive:!0});let U=e(K);if(U.isSymbolicLink()||!U.isDirectory()||U.uid!==(process.getuid?.()??-1)||(U.mode&4095)!==457)throw new D("vm_hands_probe_failed","proof parent is not root's 0711 directory");let T=yq(L(K,"p-")),N=!1;try{if(!/^[A-Za-z0-9/._-]+$/.test(T)||!/^[A-Za-z0-9_-]{1,128}$/.test(Z))throw new D("vm_hands_probe_failed","proof directory path or nonce");Eq(T,W,W),Sq(T,448);let M=e(T).ino;try{r(u,{mode:493})}catch(C){if(!(C&&typeof C==="object"&&("code"in C)&&C.code==="EEXIST"))throw new D("vm_hands_probe_failed","probe cgroup")}let B=i(u)("/bin/bash",["-c",z.replaceAll(Bq,T).replaceAll(pq,Z)],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:["ignore","pipe","ignore"]}),V="";B.stdout?.on("data",(C)=>{if(V.length<16384)V+=C.toString("utf8").slice(0,16384-V.length)});let _=await new Promise((C)=>{let S=setTimeout(()=>{N=!0,B.kill("SIGKILL"),C(124)},cq);B.once("error",()=>{clearTimeout(S),C(127)}),B.once("close",(h)=>{clearTimeout(S),C(h??1)})});return q("vm_hands.probe",{nonce_len:Z.length,exit_code:_}),{exitCode:_,markers:V,proofDirInode:M}}finally{if(!N)uq(T,{recursive:!0,force:!0})}},restatLayout(){let{session_root:Z,alias:z}=X.init.layout,K="invalid";try{Aq(Z),K="0:0:755"}catch{}let U=!1,T=-1;try{let N=e(z);T=N.uid,U=K==="0:0:755"&&z===L(Z,"repo")&&!N.isSymbolicLink()&&N.isDirectory()&&mq(z)===z&&N.uid===W}catch{}return{root_mode:K,alias_ok:U,owner_uid:T}},verifyMounts(){Kq(X.init.layout.session_root,q,(Z)=>new D("vm_hands_mount_mismatch",Z))},installEnvironment(Z,z){let K=J.get(Z);if(!K)throw new D("environment_unavailable","no executor owns an environment");return jq({root:X.root,operationId:K.operationId,payload:z}).installed_revision},async stop(){if(n)clearInterval(n);x?.close(),await Promise.all([...J.keys()].map((Z)=>c(Z)))}};function zq(){try{return s(L($,H),{withFileTypes:!0}).filter((Z)=>Z.isDirectory()&&/^b-[0-9a-f-]{36}$/.test(Z.name)).map((Z)=>Z.name)}catch{return[]}}async function Hq(Z,z,K=!1){let U=new Set([...z].map((N)=>N.toLowerCase())),T=Tq();try{await Mq();let N=Date.now()+Xq,M=new Set(zq().filter((Q)=>!U.has(Q.slice(2))).map((Q)=>Q.slice(2)));if(Z)M.add(Z.toLowerCase());let B=null;for(let Q of M){let w=c(Q).catch(()=>{return}),o=G.get(Q);if(o!==void 0)B=B===null?o:Math.min(B,o);if(l(L(g(Q),"cgroup.events")))await a(g(Q),N,"bind");await w}let V=[...U].map((Q)=>g(Q).replace(/^\/sys\/fs\/cgroup/,"")),_=[$,L($,H)].map((Q)=>Q.replace(/^\/sys\/fs\/cgroup/,"")),C=O.replace(/^\/sys\/fs\/cgroup/,""),S=(Q)=>b(Q,E)||V.some((w)=>b(Q,w)),h=K?[]:$q(W).filter((Q)=>!S(Q));if(h.length)throw q("vm_hands.kill_survivors",{pids:h.slice(0,16),beside:U.size}),new D("vm_hands_kill_unverified",`${h.length} payload-uid process(es) outside a live bind`);let p=(Q)=>!S(Q)&&!b(Q,"/reason-vm-hands")&&!b(Q,C)&&!_.some((w)=>Lq(Q,w));if(B!==null){let Q=Zq(B).filter((w)=>w!==process.pid&&p(w));if(Q.length)throw q("vm_hands.kill_strays",{strays:t(Q),beside:U.size}),new D("vm_hands_kill_unverified",`${Q.length} process(es) the run started survived it`)}for(let Q of M)G.delete(Q),xq(Q)}finally{T()}}}function Qq(X,$="/proc"){try{let W=I(L($,String(X),"stat"),"utf8"),q=Number(W.slice(W.lastIndexOf(")")+2).split(" ")[19]);return Number.isFinite(q)?q:null}catch{return null}}function Cq(X,$="/proc"){try{let W=I(L($,String(X),"stat"),"utf8"),q=Number(W.slice(W.lastIndexOf(")")+2).split(" ")[1]);return Number.isFinite(q)?q:null}catch{return null}}async function dq(X,$,W){try{y(L(X,"cgroup.freeze"),"1")}catch(q){throw new D("vm_hands_kill_unverified",`payload cgroup.freeze: ${q instanceof Error?q.message:String(q)}`)}try{for(;;){let q=Oq(X).filter((G)=>fq(G,X)),J=new Set(q.filter((G)=>{let Y=Qq(G);return Y!==null&&Y<=$}));for(let G=!0;G;){G=!1;for(let Y of q){if(J.has(Y))continue;let A=Cq(Y);if(A!==null&&J.has(A))J.add(Y),G=!0}}if(J.size===0)return;if(Date.now()>W)throw new D("vm_hands_kill_unverified",`${J.size} previous-boot process(es) survived`);for(let G of J)try{process.kill(G,"SIGKILL")}catch{}await new Promise((G)=>setTimeout(G,10))}}finally{try{y(L(X,"cgroup.freeze"),"0")}catch{}}}function Lq(X,$,W="/proc"){try{return I(L(W,String(X),"cgroup"),"utf8").split(`
6
- `).find((J)=>J.startsWith("0::"))?.slice(3)===$}catch{return!1}}function b(X,$,W="/proc"){try{let J=I(L(W,String(X),"cgroup"),"utf8").split(`
7
- `).find((G)=>G.startsWith("0::"))?.slice(3)??"";return J===$||J.startsWith(`${$}/`)}catch{return!1}}var sq=100;function Uq(){try{return Math.floor(Number(I("/proc/uptime","utf8").split(" ")[0])*sq)}catch{return 0}}async function a(X,$,W){try{y(L(X,"cgroup.freeze"),"1")}catch(q){throw new D("vm_hands_kill_unverified",`${W} cgroup.freeze: ${q instanceof Error?q.message:String(q)}`)}while(!/^populated 0$/m.test(I(L(X,"cgroup.events"),"utf8"))){if(Date.now()>$)throw new D("vm_hands_kill_unverified",`${W} cgroup still populated (left frozen)`);for(let q of Oq(X)){if(!fq(q,X))continue;try{process.kill(q,"SIGKILL")}catch{}}await new Promise((q)=>setTimeout(q,10))}try{y(L(X,"cgroup.freeze"),"0")}catch(q){throw new D("vm_hands_kill_unverified",`${W} cgroup thaw: ${q instanceof Error?q.message:String(q)}`)}}function fq(X,$){let W=$.replace(/^\/sys\/fs\/cgroup/,"")||"/",q="";try{q=I(`/proc/${X}/cgroup`,"utf8").split(`
8
- `).find((G)=>G.startsWith("0::"))??""}catch{return!1}let J=q.slice(3);return J===W||J.startsWith(`${W}/`)}function Oq(X){let $=[],W=(q)=>{try{for(let G of I(L(q,"cgroup.procs"),"utf8").split(`
9
- `))if(/^\d+$/.test(G))$.push(Number(G))}catch{}let J=[];try{J=s(q,{withFileTypes:!0}).filter((G)=>G.isDirectory()).map((G)=>G.name)}catch{}for(let G of J)W(L(q,G))};return W(X),$}function t(X,$="/proc"){return X.slice(0,16).map((W)=>{let q="?",J="?";try{q=I(L($,String(W),"comm"),"utf8").trim().slice(0,32)}catch{}try{J=(I(L($,String(W),"cgroup"),"utf8").split(`
10
- `).find((G)=>G.startsWith("0::"))??"").slice(3,120)}catch{}return{pid:W,comm:q,ppid:Cq(W,$),cgroup:J}})}function Zq(X,$="/proc"){let W=[];for(let q of s($)){if(!/^\d+$/.test(q))continue;let J;try{J=I(L($,q,"stat"),"utf8")}catch{continue}let G=J.slice(J.lastIndexOf(")")+2).split(" "),Y=Number(G[1]),A=Number(G[6]),j=Number(G[19]);if(!((A&2097152)!==0||Y===2||q==="2")&&G[0]!=="Z"&&j>=X)W.push(Number(q))}return W}function $q(X,$="/proc"){let W=[];for(let q of s($)){if(!/^\d+$/.test(q))continue;let J;try{J=I(L($,q,"status"),"utf8")}catch{continue}let G=/^Uid:\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/m.exec(J);if(G&&G.slice(1).some((Y)=>Number(Y)===X))W.push(Number(q))}return W}function Fq(X="/proc/sys/kernel/yama/ptrace_scope"){try{return Number(I(X,"utf8").trim())>=1}catch{return!1}}var k=0,Vq=[],d=new Set;function Tq(){k++;let X=!1;return()=>{if(X)return;if(X=!0,--k===0)for(let $ of Vq.splice(0))$()}}function iq(){return k===0?Promise.resolve():new Promise((X)=>{Vq.push(X)})}async function Dq(){while(k>0)await iq()}async function Mq(){let X=Date.now()+1000;while(d.size&&Date.now()<X)await new Promise(($)=>setTimeout($,2))}function nq(X,$){let W=$.replace(/^\/sys\/fs\/cgroup/,"");d.add(X);let q=()=>{let J="";try{J=I(`/proc/${X}/cgroup`,"utf8").split(`
11
- `).find((G)=>G.startsWith("0::"))??""}catch{d.delete(X);return}if(J.slice(3)===W){d.delete(X);return}setTimeout(q,1)};q()}function YX(X){let $={person:X.personCgroup??L("/sys/fs/cgroup",E,H),model:X.payloadCgroup??L(Pq,H)},W=X.entry??process.argv[1]??"",q={},J=(Y)=>Y.startsWith("model:")&&X.bindCgroup?X.bindCgroup(Y.slice(6)):$[Y.startsWith("model")?"model":"person"],G=(Y)=>{let A=Y.startsWith("model")?"model":"person",j=new Map,f=String(X.payloadUid),O=String(X.payloadGid),F=Bun.spawn(["/bin/sh","-c",`echo $$ > ${Iq(L(J(Y),"cgroup.procs"))} || exit 125; exec /usr/bin/setpriv --no-new-privs --reuid=${f} --regid=${O} --clear-groups -- "$@"`,"vm-hands-op-join",process.execPath,"--no-install",W,"--vm-hands-op-runner",...A==="person"?[wq]:[]],{cwd:"/",env:{PATH:process.env.PATH??"/usr/bin:/bin",BUN_BE_BUN:"1",HOME:"/home/runner",...l("/bin/bash")?{SHELL:"/bin/bash"}:{}},stdio:["ignore","ignore","ignore"],ipc(v){let P=v,m=j.get(P.id);if(!m)return;if(P.t==="event"&&P.event)m.onEvent(P.event);if(P.t==="done")j.delete(P.id),m.done(P.completion??{status:"failed",error_code:"vm_hands_op_failed"})}});F.exited.then((v)=>{if(q[Y]?.child===F)delete q[Y];for(let[,P]of j)P.done({status:"failed",error_code:"vm_hands_op_runner_exited"});j.clear(),X.log?.("vm_hands.op_runner_exited",{kind:A,code:v})}),nq(F.pid,J(Y));let R={child:F,pending:j};return q[Y]=R,R};return{run(Y,A,j,f,O){if(!Fq())return Promise.resolve({status:"failed",error_code:"vm_hands_ptrace_unprotected"});let F=Y==="model"&&O&&X.bindCgroup?`model:${O.toLowerCase()}`:Y,R=async()=>{while(!q[F]&&k>0)await Dq()};return R().then(async()=>{if(!q[F]&&k>0)await R()}).then(()=>new Promise((v)=>{if(!q[F]&&k>0){v({status:"failed",error_code:"vm_hands_op_runner_unavailable"});return}let P=q[F]??G(F);P.pending.set(A.id,{onEvent:j,done:v}),f.addEventListener("abort",()=>{try{P.child.send({t:"cancel",id:A.id})}catch{}},{once:!0});try{P.child.send({t:"op",...A})}catch{P.pending.delete(A.id),v({status:"failed",error_code:"vm_hands_op_runner_unavailable"})}}))},warm(Y){if(!q[Y]&&Fq())Dq().then(()=>{if(!q[Y]&&k===0)G(Y)})},stop(){for(let Y of Object.keys(q))q[Y]?.child.kill()}}}export{aq as vmHandsBindCgroup,Oq as subtreePids,Fq as ptraceProtected,Zq as processesStartedSince,$q as payloadUidProcesses,b as inCgroup,t as describeProcesses,YX as createVmHandsOpRunners,JX as createVmHandsExecutor,D as VmHandsExecutorError,Bq as VM_HANDS_PROOF_DIR_TOKEN,pq as VM_HANDS_PROBE_NONCE_TOKEN,E as VM_HANDS_PERSON_CGROUP,H as VM_HANDS_PAYLOAD_JOIN,Pq as VM_HANDS_PAYLOAD_CGROUP};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{s as a,t as b,u as c}from"./vm-hands-entry-lite-qpba4sxt.js";import"./vm-hands-entry-lite-40nkzw38.js";import"./vm-hands-entry-lite-72nn2b4n.js";export{b as spawnSessionPty,c as runVmHandsOpRunner,a as VM_HANDS_OP_RUNNER_PERSON_ARG};
@@ -1,4 +0,0 @@
1
- // @bun
2
- import{Aa as m,Ba as l,za as k}from"./vm-hands-entry-lite-8tcnbfnm.js";import{Oe as p}from"./vm-hands-entry-lite-ky0w7t09.js";import"./vm-hands-entry-lite-vr38bh6k.js";import{Xk as F}from"./vm-hands-entry-lite-72nn2b4n.js";import{spawn as i}from"child_process";import{createHash as t}from"crypto";import{lstatSync as A,mkdirSync as s,readFileSync as d,statSync as e,writeFileSync as c}from"fs";var C="/run/reason-vm-hands",R="/run/reason-vm-hands/env",h="/home/runner/.reason/workspace",jj=/^https:\/\/[a-z0-9.-]+(?::\d{1,5})?$/,S="/sys/fs/cgroup/reason-srt",qj=["/usr/local/bin/reason-srt-exec","/usr/local/bin/ara-srt-exec"],Jj=65536,Qj=21600000;function Zj(Q,j="/run/ara-srt"){try{if((process.getuid?.()??-1)!==0)return;s(j,{recursive:!0,mode:448});let q=A(j);if(!q.isDirectory()||q.uid!==0||(q.mode&63)!==0){Q("srt_base_keyed_skipped",{reason:"socket_dir_unsafe"});return}c(`${j}/base-keyed`,`1
3
- `,{mode:420}),Q("srt_base_keyed",{})}catch{Q("srt_base_keyed_skipped",{reason:"error"})}}function y(Q,j){let q=(G)=>{return j("srt_warm_skipped",{reason:G}),Promise.resolve()};if(typeof Q.srt_base_settings!=="string")return q("no_settings");let Z=Buffer.from(Q.srt_base_settings,"base64");if(Z.length===0||Z.length>Jj||Z.toString("base64")!==Q.srt_base_settings)return q("settings_invalid");let X;try{let G=A(S);if(!G.isDirectory()||G.uid!==0||(G.mode&18)!==0)return q("cgroup_unsafe");let L=qj.find((M)=>A(M,{throwIfNoEntry:!1})!==void 0);if(!L)return q("cgroup_or_exec_missing");X=L;for(let[M,H]of[[X,!1],["/usr/local/bin",!0]]){let Y=A(M);if((H?!Y.isDirectory():!Y.isFile())||Y.uid!==0||(Y.mode&18)!==0)return q("srt_exec_unsafe")}}catch{return q("cgroup_or_exec_missing")}if((process.getuid?.()??-1)!==0)return q("not_root");let z=performance.now(),f=t("sha256").update(Z).digest("hex"),D=`${C}/srt-base-settings.json`;try{c(D,Z,{mode:384,flag:"w"})}catch{return q("settings_write")}let W=i("/bin/sh",["-c",`echo $$ > ${S}/cgroup.procs || exit 125; exec "$@"`,"vm-hands-srt",X,"--settings",D,"--idle-ms",String(Qj),"--","/bin/true"],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:"ignore"});return new Promise((G)=>{W.once("error",()=>{j("srt_warm_failed",{reason:"spawn"}),G()}),W.once("close",(L)=>{j(L===0?"srt_warm_done":"srt_warm_failed",{exit_code:L,warm_ms:Math.round(performance.now()-z),settings_sha256:f}),G()})})}var u=3000;function Nj(Q){if(!Q||typeof Q!=="object"||Array.isArray(Q))return null;let j=Q,q=j.layout,Z=j.device_key,X=j.credential;return typeof j.workspace_id==="string"&&Number.isSafeInteger(j.instance_generation)&&typeof j.api_origin==="string"&&jj.test(j.api_origin)&&typeof j.manifest_digest==="string"&&!!X&&typeof X.key_id==="string"&&Number.isSafeInteger(X.expires_at_ms)&&typeof X.signature==="string"&&!!q&&typeof q.session_root==="string"&&typeof q.alias==="string"&&Number.isSafeInteger(q.payload_uid)&&typeof q.kind==="string"&&!!Z&&typeof Z.pkcs8==="string"&&typeof Z.spki==="string"?j:null}function v(Q){s(Q,{recursive:!0,mode:448});let j=e(Q);if(!j.isDirectory()||(j.mode&63)!==0||j.uid!==(process.getuid?.()??-1))throw Error(`vm_hands_runtime_directory_unsafe: ${Q}`)}async function $j(Q){let[{CLI_VERSION:j},q,Z,X]=await Promise.all([import("./version-aec5t9wd.js"),import("./hands-worker-source-as5wepvk.js"),import("./network-contract-9smga6kn.js"),import("./device-workspace-nzz3kd5t.js")]),{REASON_HANDS_PROTOCOL_VERSION:z}=await import("./reason-hands-protocol-5fhd49en.js");return{reason_runtime_version:j,bridge_version:j,protocol_version:p,execution_eligible:!0,instance_generation:Q.instance_generation,capabilities:{supported_operations:["hands.connect"],hands_worker_artifact_sha256:q.REASON_HANDS_WORKER_ARTIFACT_SHA256,hands_worker_entrypoint:q.REASON_HANDS_WORKER_ENTRYPOINT,hands_slots:1,max_payload_bytes:Z.LOCAL_OPERATION_MAX_BYTES,max_result_bytes:Z.LOCAL_OPERATION_MAX_BYTES,operation_constraints:{"hands.connect":{ready:!0,execution_mode:"host",transport:"wss_relay",worker:"ara_hands",slots:1,session_group:Z.HANDS_SESSION_GROUP,worker_version:q.REASON_HANDS_WORKER_VERSION,protocol_version:z,worker_artifact_sha256:q.REASON_HANDS_WORKER_ARTIFACT_SHA256,worker_entrypoint:q.REASON_HANDS_WORKER_ENTRYPOINT,policy_mode:"full_access",policy_version:1,workspace_base:X.REASON_WORKSPACE_BASE,workspace_layout:X.SESSION_WORKSPACE_LAYOUT,browser_state:"optional_headless",desktop:!1,max_session_ms:43200000,environment_delivery:Z.HANDS_ENVIRONMENT_DELIVERY,[Z.HANDS_ENVIRONMENT_AT_CLAIM_KEY]:Z.HANDS_ENVIRONMENT_AT_CLAIM,[Z.HANDS_CLOUD_ACCESS_KEY]:Z.HANDS_CLOUD_ACCESS,[Z.HANDS_LARGE_ENVIRONMENT_KEY]:Z.HANDS_LARGE_ENVIRONMENT,[Z.HANDS_CONFINEMENT_KEY]:Z.HANDS_CONFINEMENT,[Z.HANDS_JOBS_USER_KEY]:Z.HANDS_JOBS_USER,vm_hands:"v1"}}}}}var P=["fs.read","fs.write","fs.export","fs.import","exec.run","exec.full","process.list","ports.list","pty.start","jobs.control","automation.call.v1"],Xj=new Set(["pty.start","jobs.control"]);function zj(Q,j){let q=j([{id:"vm-hands",label:"workspace",path:h,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}],{worker:{executionMode:"unsandboxed",readiness:Object.fromEntries(P.map((z)=>[z,!0]))}}),Z=Q.capabilities,X={...Z.operation_constraints};for(let z of P)X[z]={...q.operation_constraints?.[z]??{},ready:!0,execution_mode:q.operation_constraints?.[z]?.execution_mode??"host"};return{...Q,capabilities:{...Z,supported_operations:["hands.connect",...P],operation_constraints:X}}}function Gj(Q){for(let j of d("/etc/passwd","utf8").split(`
4
- `)){let q=j.split(":");if(q.length>=4&&Number(q[2])===Q&&/^\d+$/.test(q[3]??"")&&Number(q[3])>0)return Number(q[3])}throw Error("vm_hands_payload_account_unavailable")}function Fj(Q,j){let q=j.owner;if(!q||typeof q.organization_id!=="string"||typeof q.device_id!=="string"||typeof j.root_id!=="string")return null;return{version:4,apiOrigin:Q.api_origin,orgId:q.organization_id,deviceId:q.device_id,devicePublicKey:"",displayName:"vm-hands",registeredAt:new Date(0).toISOString(),handsSlots:1,roots:[{id:j.root_id,label:"workspace",path:h,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}]}}function Kj(Q=process.platform,j="/proc/self/oom_score_adj"){if(Q!=="linux")return null;let q;try{q=d(j,"utf8").trim()}catch{return{value:"unreadable"}}if(!/^-?\d+$/.test(q))return{value:"unreadable"};let Z=Number(q);return Z<0?{value:Z}:null}async function Wj(Q,j){let q=Kj();if(q)j("vm_hands.oom_protected",{code:"vm_hands_oom_protected",value:q.value}),await new Promise(()=>{setInterval(()=>{return},1073741824)});v(C),v(R),Zj(j);let Z=y(Q,j),X=!1,z=async()=>{if(!await Promise.race([Z.then(()=>!0),new Promise(($)=>setTimeout(()=>$(!1),u).unref?.())]))X=!0,j("srt_warm_late",{wait_ms:u})},[{configureDesktopAccount:f},{configureWorkerSandbox:D}]=await Promise.all([import("./desktop-account-2kkxwv1y.js"),import("./worker-sandbox-p242st5d.js")]);D();try{f({value:String(Q.layout.payload_uid)})}catch{j("payload_account_unavailable"),await new Promise(()=>{setInterval(()=>{return},1073741824)})}let W=new AbortController;for(let J of["SIGTERM","SIGINT"])process.on(J,()=>W.abort());let G=new Map,L,M=new Promise((J)=>{L=J}),H=M.then(()=>import("./vm-hands-executor-m1jwswd0.js")).then(({createVmHandsExecutor:J})=>{let $=J({init:Q,root:h,runtimeDirectory:C,apiOrigin:Q.api_origin,prespawn:!0,onSrtReset:()=>{X=!1,Z=y(Q,j)},srtWarmLate:()=>X,forward:(B,K,g)=>G.get(B)?.(K,g)??Promise.reject(Error("vm_hands_not_bound")),log:(B,K)=>j(B,K)});return j("executor_loaded"),$}),Y=(J)=>async(...$)=>(await H)[J](...$),w=null;H.then((J)=>{w=($)=>J.executorExited($)});let N={startExecutor:async(...J)=>{return await z(),Y("startExecutor")(...J)},killAndVerifyPayload:Y("killAndVerifyPayload"),killProbe:Y("killProbe"),runProbe:async(...J)=>{return await z(),Y("runProbe")(...J)},restatLayout:()=>{throw Error("replaced below")},verifyMounts:()=>{throw Error("replaced below")},installEnvironment:()=>{throw Error("replaced below")},executorExited:(J)=>w?w(J):new Promise(()=>{}),takeSrtFallbacks:()=>null};H.then((J)=>{N.restatLayout=()=>J.restatLayout(),N.verifyMounts=()=>J.verifyMounts(),N.installEnvironment=($,B)=>J.installEnvironment($,B),N.freezeBind=($)=>J.freezeBind($),N.takeSrtFallbacks=()=>J.takeSrtFallbacks?.()??null});let o=await k(Q),n=new m(Q,o,N,{envRoot:R}),b=$j(Q),E=null,a=Promise.all([b,import("./local-capabilities-ep1d24ne.js")]).then(([J,$])=>{E=zj(J,$.capabilityInventoryForRoots),j("device_ops_loaded")}).catch((J)=>j("device_ops_unavailable",{error:J instanceof Error?J.name:"error"})),T=M.then(()=>import("./vm-hands-executor-m1jwswd0.js")).then(({createVmHandsOpRunners:J,vmHandsBindCgroup:$,VM_HANDS_PAYLOAD_CGROUP:B})=>J({payloadUid:Q.layout.payload_uid,payloadGid:Gj(Q.layout.payload_uid),bindCgroup:(K)=>$(B,K),log:(K,g)=>j(K,g)})).catch(()=>null);T.then((J)=>J?.warm("person")),j("agent_ready"),await l({apiOrigin:Q.api_origin,agent:n,signal:W.signal,heartbeat:async()=>E??await b,executeOp:async({kind:J,claim:$,bindId:B,signal:K,emit:g})=>{let x=Fj(Q,$);if(!x)return{status:"failed",error_code:"vm_hands_bind_invalid"};let _={executionMode:"unsandboxed",runtimeDirectory:C,readiness:Object.fromEntries(P.map((U)=>[U,!0]))},I=(U)=>{let V=typeof U.kind==="string"?U.kind:"";if(V)g({kind:V,...U.data&&typeof U.data==="object"?{data:U.data}:{}})};if($.capability==="exec.full"&&J!=="person")return{status:"failed",error_code:"capability_not_granted"};if($.capability==="automation.call.v1"&&J!=="model")return{status:"failed",error_code:"capability_not_granted"};let r=$.capability==="pty.start"&&J==="person"&&!$.authority;if(Xj.has(String($.capability))&&!r){let{executeLocalOperation:U}=await import("./local-capabilities-ep1d24ne.js");return U(x,$,{worker:_,signal:K,emit:(V)=>I(V)})}let O=await T;if(!O)return{status:"failed",error_code:"vm_hands_payload_account_unavailable"};return O.run(J,{id:String($.attempt_id),claim:$,state:x,worker:_},I,K,B)},readyData:({launchId:J})=>({executor_launch_id:J}),log:(J,$)=>{if(J==="vm_hands.registered"||J==="vm_hands.reconnected")L();j(J,$)},onTurn:(J,$)=>{if($)G.set(J,$);else G.delete(J)}}),await(await H).stop(),(await T)?.stop()}export{Kj as vmHandsOomProtection,y as startBaseSrtServer,Wj as runVmHands,Nj as parseVmHandsInit,$j as heartbeatBody,Zj as enableBaseKeyedSrt};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{r as a}from"./vm-hands-entry-lite-wa261sf8.js";import"./vm-hands-entry-lite-yg5h9mhm.js";import"./vm-hands-entry-lite-69ray4x8.js";import"./vm-hands-entry-lite-nqvb7a2m.js";import"./vm-hands-entry-lite-8f3px72v.js";import"./vm-hands-entry-lite-8gjrr6hg.js";import"./vm-hands-entry-lite-hepppjp0.js";import"./vm-hands-entry-lite-wer0qzxg.js";import"./vm-hands-entry-lite-40nkzw38.js";import"./vm-hands-entry-lite-72nn2b4n.js";export{a as configureWorkerSandbox};