@reason-machines/cli-linux-x64 0.2.415 → 0.2.419

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 (153) hide show
  1. package/THIRD_PARTY_NOTICES.txt +7 -8
  2. package/bin/reason +2 -2
  3. package/bin/runtime/srt/sandbox-runtime.mjs +52 -52
  4. package/bin/vm-hands/api-credentials-s4897qxy.js +2 -0
  5. package/bin/vm-hands/api-m73x3da5.js +2 -0
  6. package/bin/vm-hands/ask-relay-4kwcx2b7.js +8 -0
  7. package/bin/vm-hands/connect-cli-34b18gjs.js +2 -0
  8. package/bin/vm-hands/custom-endpoint-device-j012b4bd.js +2 -0
  9. package/bin/vm-hands/desktop-account-0q0arpzk.js +2 -0
  10. package/bin/vm-hands/device-workspace-3jxhs54b.js +2 -0
  11. package/bin/vm-hands/hands-worker-source-y64axsw3.js +2 -0
  12. package/bin/vm-hands/index-194s4vz0.js +12818 -0
  13. package/bin/vm-hands/install-receipt-1g68b446.js +2 -0
  14. package/bin/vm-hands/local-automation-k2w46hn2.js +2 -0
  15. package/bin/vm-hands/local-capabilities-tdzbqmrb.js +2 -0
  16. package/bin/vm-hands/local-desktop-users-6thzvydd.js +2 -0
  17. package/bin/vm-hands/local-display-mac-59ma7sxa.js +2 -0
  18. package/bin/vm-hands/local-display-session-4833qq7h.js +2 -0
  19. package/bin/vm-hands/local-display-video-c1143mz6.js +2 -0
  20. package/bin/vm-hands/local-managed-process-mr0zpk7c.js +2 -0
  21. package/bin/vm-hands/local-pty-session-bwarwpsd.js +2 -0
  22. package/bin/vm-hands/managed-runtime-vz1wqwwg.js +2 -0
  23. package/bin/vm-hands/network-contract-gprc37sw.js +2 -0
  24. package/bin/vm-hands/package-ej9snd47.js +2 -0
  25. package/bin/vm-hands/permissions-7sfghef4.js +2 -0
  26. package/bin/vm-hands/reason-hands-protocol-jsrkawe2.js +2 -0
  27. package/bin/vm-hands/serve-service-kngyzh74.js +2 -0
  28. package/bin/vm-hands/status-jz29fb95.js +96 -0
  29. package/bin/vm-hands/version-g29vt13t.js +2 -0
  30. package/bin/vm-hands/vm-hands-entry-lite-0h4qmgm2.js +9 -0
  31. package/bin/vm-hands/vm-hands-entry-lite-0k13wmzm.js +3 -0
  32. package/bin/vm-hands/vm-hands-entry-lite-1exfjv79.js +52 -0
  33. package/bin/vm-hands/vm-hands-entry-lite-26q3hbdc.js +3 -0
  34. package/bin/vm-hands/vm-hands-entry-lite-28s7v15d.js +4 -0
  35. package/bin/vm-hands/vm-hands-entry-lite-2m5dwrdf.js +6 -0
  36. package/bin/vm-hands/vm-hands-entry-lite-37hvds7z.js +5 -0
  37. package/bin/vm-hands/vm-hands-entry-lite-3rqdzqhk.js +112 -0
  38. package/bin/vm-hands/vm-hands-entry-lite-4gh5kfr4.js +3 -0
  39. package/bin/vm-hands/{vm-hands-entry-lite-t7an5zg2.js → vm-hands-entry-lite-4k4h9rcq.js} +2 -2
  40. package/bin/vm-hands/vm-hands-entry-lite-6nwbqg37.js +3 -0
  41. package/bin/vm-hands/{vm-hands-entry-lite-m11j0f9q.js → vm-hands-entry-lite-6y6pz2yw.js} +2 -2
  42. package/bin/vm-hands/vm-hands-entry-lite-714wspqb.js +3 -0
  43. package/bin/vm-hands/vm-hands-entry-lite-7zk0r3p9.js +5 -0
  44. package/bin/vm-hands/vm-hands-entry-lite-9qep7pka.js +4 -0
  45. package/bin/vm-hands/{vm-hands-entry-lite-bdhjpv7g.js → vm-hands-entry-lite-agsp101y.js} +2 -2
  46. package/bin/vm-hands/vm-hands-entry-lite-am6kj1n1.js +3 -0
  47. package/bin/vm-hands/vm-hands-entry-lite-as1tkffn.js +5 -0
  48. package/bin/vm-hands/vm-hands-entry-lite-bxt4n1nj.js +3 -0
  49. package/bin/vm-hands/vm-hands-entry-lite-c2g3wmkp.js +3 -0
  50. package/bin/vm-hands/vm-hands-entry-lite-d2w8tghq.js +3 -0
  51. package/bin/vm-hands/vm-hands-entry-lite-d98m00b8.js +3 -0
  52. package/bin/vm-hands/vm-hands-entry-lite-daxcxjze.js +344 -0
  53. package/bin/vm-hands/vm-hands-entry-lite-dcnyve97.js +3 -0
  54. package/bin/vm-hands/vm-hands-entry-lite-e1b89x66.js +3 -0
  55. package/bin/vm-hands/vm-hands-entry-lite-ej5ffjck.js +105 -0
  56. package/bin/vm-hands/vm-hands-entry-lite-ejkba2nk.js +3 -0
  57. package/bin/vm-hands/vm-hands-entry-lite-f3wh0dza.js +5 -0
  58. package/bin/vm-hands/vm-hands-entry-lite-f5xb489y.js +4 -0
  59. package/bin/vm-hands/vm-hands-entry-lite-feybcq63.js +3 -0
  60. package/bin/vm-hands/vm-hands-entry-lite-fpp2bs9y.js +452 -0
  61. package/bin/vm-hands/{vm-hands-entry-lite-qxchbbew.js → vm-hands-entry-lite-fzkfajew.js} +9 -5
  62. package/bin/vm-hands/vm-hands-entry-lite-gt497d5x.js +3 -0
  63. package/bin/vm-hands/vm-hands-entry-lite-gxper06w.js +3 -0
  64. package/bin/vm-hands/vm-hands-entry-lite-j2ng164q.js +9 -0
  65. package/bin/vm-hands/vm-hands-entry-lite-jp9q2vsx.js +127 -0
  66. package/bin/vm-hands/vm-hands-entry-lite-magmzx9c.js +3 -0
  67. package/bin/vm-hands/vm-hands-entry-lite-ntx8fdyq.js +5 -0
  68. package/bin/vm-hands/vm-hands-entry-lite-pfzczmaa.js +4 -0
  69. package/bin/vm-hands/vm-hands-entry-lite-pkc4ry5x.js +539 -0
  70. package/bin/vm-hands/vm-hands-entry-lite-pp7jfqzr.js +3 -0
  71. package/bin/vm-hands/vm-hands-entry-lite-q8wkrzer.js +66 -0
  72. package/bin/vm-hands/vm-hands-entry-lite-s823n1q9.js +3 -0
  73. package/bin/vm-hands/vm-hands-entry-lite-s9xf5z69.js +7 -0
  74. package/bin/vm-hands/vm-hands-entry-lite-tchc7z17.js +128 -0
  75. package/bin/vm-hands/vm-hands-entry-lite-tytfs183.js +42 -0
  76. package/bin/vm-hands/vm-hands-entry-lite-v4jtxgaj.js +4 -0
  77. package/bin/vm-hands/vm-hands-entry-lite-vgpt2n1v.js +11 -0
  78. package/bin/vm-hands/{vm-hands-entry-lite-9c95p6n9.js → vm-hands-entry-lite-vsa7t6m9.js} +54 -54
  79. package/bin/vm-hands/vm-hands-entry-lite-xp3qzxk5.js +3 -0
  80. package/bin/vm-hands/vm-hands-entry-lite.js +1 -3
  81. package/bin/vm-hands/vm-hands-executor-epyhpjv3.js +11 -0
  82. package/bin/vm-hands/vm-hands-op-runner-fn1qph82.js +2 -0
  83. package/bin/vm-hands/vm-hands-runtime-8vt9etvv.js +4 -0
  84. package/bin/vm-hands/worker-preview-readiness-yfjgban2.js +2 -0
  85. package/bin/vm-hands/worker-sandbox-z0t69av8.js +2 -0
  86. package/package.json +1 -1
  87. package/bin/vm-hands/api-cjv8m2zy.js +0 -2
  88. package/bin/vm-hands/api-credentials-m5akr9fv.js +0 -2
  89. package/bin/vm-hands/connect-cli-d60gmgnx.js +0 -2
  90. package/bin/vm-hands/custom-endpoint-device-dkqb4rqy.js +0 -2
  91. package/bin/vm-hands/desktop-account-5v7x0ajx.js +0 -2
  92. package/bin/vm-hands/device-workspace-p9q9dckg.js +0 -2
  93. package/bin/vm-hands/fsevents-ekt70rcc.js +0 -2
  94. package/bin/vm-hands/hands-worker-source-cgrpm21b.js +0 -2
  95. package/bin/vm-hands/index-k8kcz8a3.js +0 -12818
  96. package/bin/vm-hands/install-receipt-7vt2y2vh.js +0 -2
  97. package/bin/vm-hands/local-automation-4htjhv65.js +0 -2
  98. package/bin/vm-hands/local-capabilities-c04tbapa.js +0 -2
  99. package/bin/vm-hands/local-desktop-users-q886k0mm.js +0 -2
  100. package/bin/vm-hands/local-display-mac-w85956f1.js +0 -2
  101. package/bin/vm-hands/local-display-session-pkz7a5q9.js +0 -2
  102. package/bin/vm-hands/local-pty-session-5f50sqq0.js +0 -2
  103. package/bin/vm-hands/managed-runtime-ppypxbh9.js +0 -2
  104. package/bin/vm-hands/network-contract-9x9kc5vv.js +0 -2
  105. package/bin/vm-hands/package-78fkast4.js +0 -2
  106. package/bin/vm-hands/permissions-xt02c6dh.js +0 -2
  107. package/bin/vm-hands/reason-hands-protocol-2tnghj3b.js +0 -2
  108. package/bin/vm-hands/serve-service-wanptaqv.js +0 -2
  109. package/bin/vm-hands/status-gt7c4ke0.js +0 -10
  110. package/bin/vm-hands/version-bq5j7cqg.js +0 -2
  111. package/bin/vm-hands/vm-hands-entry-lite-09m2cdkw.js +0 -4
  112. package/bin/vm-hands/vm-hands-entry-lite-0xrsph3r.js +0 -3
  113. package/bin/vm-hands/vm-hands-entry-lite-1cwqa4jr.js +0 -3
  114. package/bin/vm-hands/vm-hands-entry-lite-1rrb66r9.js +0 -3
  115. package/bin/vm-hands/vm-hands-entry-lite-1rtkf2xm.js +0 -3
  116. package/bin/vm-hands/vm-hands-entry-lite-22kfyvnk.js +0 -2
  117. package/bin/vm-hands/vm-hands-entry-lite-2hvbgp1n.js +0 -9
  118. package/bin/vm-hands/vm-hands-entry-lite-2wgdvb15.js +0 -14
  119. package/bin/vm-hands/vm-hands-entry-lite-2wvsyggd.js +0 -540
  120. package/bin/vm-hands/vm-hands-entry-lite-463m6ejk.js +0 -458
  121. package/bin/vm-hands/vm-hands-entry-lite-6aeea05q.js +0 -3
  122. package/bin/vm-hands/vm-hands-entry-lite-88swf2qr.js +0 -6
  123. package/bin/vm-hands/vm-hands-entry-lite-89z488gz.js +0 -3
  124. package/bin/vm-hands/vm-hands-entry-lite-8ns59paz.js +0 -3
  125. package/bin/vm-hands/vm-hands-entry-lite-8t9xssf9.js +0 -3
  126. package/bin/vm-hands/vm-hands-entry-lite-907pa7f9.js +0 -65
  127. package/bin/vm-hands/vm-hands-entry-lite-9ay6f56v.js +0 -3
  128. package/bin/vm-hands/vm-hands-entry-lite-ab2m9erf.js +0 -2
  129. package/bin/vm-hands/vm-hands-entry-lite-b885gwfh.js +0 -7
  130. package/bin/vm-hands/vm-hands-entry-lite-cc2tgsqp.js +0 -105
  131. package/bin/vm-hands/vm-hands-entry-lite-ckv17tn8.js +0 -3
  132. package/bin/vm-hands/vm-hands-entry-lite-eqgj4acy.js +0 -112
  133. package/bin/vm-hands/vm-hands-entry-lite-ewwx4fr3.js +0 -250
  134. package/bin/vm-hands/vm-hands-entry-lite-f5e3dbgk.js +0 -4
  135. package/bin/vm-hands/vm-hands-entry-lite-grtycq6y.js +0 -52
  136. package/bin/vm-hands/vm-hands-entry-lite-gvwdy3rf.js +0 -4
  137. package/bin/vm-hands/vm-hands-entry-lite-hj8n59y9.js +0 -3
  138. package/bin/vm-hands/vm-hands-entry-lite-k278g9kj.js +0 -42
  139. package/bin/vm-hands/vm-hands-entry-lite-kq0qmsw8.js +0 -5
  140. package/bin/vm-hands/vm-hands-entry-lite-pgb514h0.js +0 -3
  141. package/bin/vm-hands/vm-hands-entry-lite-pmcz7j7t.js +0 -3
  142. package/bin/vm-hands/vm-hands-entry-lite-q0k6kx6d.js +0 -5
  143. package/bin/vm-hands/vm-hands-entry-lite-qq9w7wq6.js +0 -3
  144. package/bin/vm-hands/vm-hands-entry-lite-qy9xg6em.js +0 -3
  145. package/bin/vm-hands/vm-hands-entry-lite-qysyf65v.js +0 -2
  146. package/bin/vm-hands/vm-hands-entry-lite-rwxbhwky.js +0 -2
  147. package/bin/vm-hands/vm-hands-entry-lite-txn44020.js +0 -3
  148. package/bin/vm-hands/vm-hands-entry-lite-vrqzr15t.js +0 -3
  149. package/bin/vm-hands/vm-hands-entry-lite-zg36myyf.js +0 -5
  150. package/bin/vm-hands/vm-hands-executor-7k9z9988.js +0 -11
  151. package/bin/vm-hands/vm-hands-op-runner-n8p81rwm.js +0 -2
  152. package/bin/vm-hands/vm-hands-runtime-bqsz7h0h.js +0 -4
  153. package/bin/vm-hands/worker-sandbox-smqj3mbe.js +0 -2
@@ -1,52 +0,0 @@
1
- // @bun
2
- import{g,Ki,ve}from"./vm-hands-entry-lite-ckv17tn8.js";import{l,Rt,Fe,Sr,Ot,xr,et}from"./vm-hands-entry-lite-q0k6kx6d.js";import{ut,Gt}from"./vm-hands-entry-lite-k278g9kj.js";import{Qr}from"./vm-hands-entry-lite-2wvsyggd.js";import{B,m,ee,Le}from"./vm-hands-entry-lite-463m6ejk.js";import{F}from"./vm-hands-entry-lite-ewwx4fr3.js";import{co}from"./vm-hands-entry-lite-2hvbgp1n.js";import{be,qe,An,Dr}from"./vm-hands-entry-lite-cc2tgsqp.js";import{f,b,h}from"./vm-hands-entry-lite-09m2cdkw.js";import{a}from"./vm-hands-entry-lite-89z488gz.js";import{go,Gr,y,t,A,mt,o,d,Te,u,i,c,_,$o,s,n,Kr}from"./vm-hands-entry-lite-907pa7f9.js";import{closeSync as Kh,existsSync as Vh,mkdirSync as Jh,openSync as Gh,readdirSync as Yh,realpathSync as pe,rmSync as Xh}from"fs";import{dirname as Qh,join as J,resolve as ew}from"path";import{createHash as At}from"crypto";import{platform as It}from"os";import{join as xt}from"path";var Lt=_("store",[c({version:n(1),store:n("keychain")}),c({version:n(1),store:n("file"),api_key:t().min(1).max(4096)})]),He=(e)=>xt(e,"api-key.json");function $e(e){let r=At("sha256").update(`reason-connect-api-key
3
- ${e}`).digest("hex");return new Fe(Rt(),It(),r)}function ge(e,r=$e(e)){if(!f(He(e)))return null;let p=Lt.parse(JSON.parse(h(He(e))));if(p.store==="file")return p.api_key;try{let k=r.loadBinding();return k?new TextDecoder().decode(k):null}catch(k){if(!(k instanceof l))throw k;throw Error("worker_api_key_unreadable")}}import{readdirSync as Yt,renameSync as Kn,rmSync as Vn}from"fs";import{join as te}from"path";import{createHash as Dt}from"crypto";import{platform as Wt}from"os";import{join as N}from"path";function w(e){return{state:N(m(e),"device.json"),control:N(m(e),"control.json"),lock:N(m(e),"lifecycle.lock"),socket:N(m(e),"control.sock"),daemon:N(m(e),"daemon.json"),releaseCheck:N(m(e),"release-check.json"),updateDeferral:N(m(e),"update-deferral.json"),firstHeartbeat:N(m(e),"first-heartbeat.json")}}var ln=i({version:n(1),device_id:t().min(1).max(160),offer:Te().optional(),enrollment_ms:o().int().nonnegative().max(Gt).optional()});function z(e,r=!1){b(m(e),r);let p=["local-device.key","local-device.binding","device.json"].filter((k)=>{let S=N(m(e),k);if(!f(S))return!1;return h(S),!0});return e.lifetime==="persistent"&&p.join()==="device.json"?Nt(e):new Sr(m(e))}function Nt(e){return new Fe(Rt(),Wt(),Ht(e))}function Ht(e){let r=Ut(e);return Dt("sha256").update(`reason-worker
4
- ${r?.directory??m(e)}`).digest("hex")}var $t="keychain-scope.json";var Bt=c({version:n(1),directory:t().min(1),devicePublicKey:t().min(1)});function Ut(e){let r=N(m(e),$t);if(!f(r))return null;let p=Bt.safeParse(JSON.parse(h(r))),k=w(e).state;if(!p.success||!f(k))return null;return JSON.parse(h(k))?.devicePublicKey===p.data.devicePublicKey?p.data:null}function M(e){if(!f(m(e)))return null;let r=xr(w(e).state,{proofStore:z(e),repair:!1}),p=r!==null&&Ki(e.apiOrigin,r.apiOrigin),k=p?[ee(e),ee({...e,apiOrigin:r.apiOrigin})]:[ee(e)];if(r&&(!k.includes(r.worker?.configDigest??"")||r.worker.lifetime!==e.lifetime||r.apiOrigin!==e.apiOrigin&&!p||r.roots.length>32||r.roots[0]?.path!==e.workspaceRoot||r.handsSlots!==e.slots))throw Error("worker_config_binding_mismatch");return r}var Ft=c({version:n(1),drained:d(),revoked:d()});function H(e){let r=w(e).control;return f(r)?Ft.parse(JSON.parse(h(r))):{version:1,drained:!1,revoked:!1}}var qt=c({read:d(),write:d(),execute:d(),discover_environment:d(),expose_mcp:n(!1)}),zt=c({version:n(1),organization_id:t().min(1).max(160),enrollment_ticket:t().min(1).max(4096),code_verifier:t().regex(/^[A-Za-z0-9._~-]{43,128}$/),root_fingerprint_key:t().regex(/^[a-f0-9]{64}$/),root:c({path_fingerprint:t().regex(/^[a-f0-9]{64}$/),permissions:qt,execution_mode:s(["confined","host"]).default("confined")}),folders:u(c({path_fingerprint:t().regex(/^[a-f0-9]{64}$/)})).min(1).max(31).optional()}),vn=i({device_id:t().min(1).max(160),organization_id:t().min(1).max(160),auth_scheme:n("p256"),protocol_version:n(2),roots:u(i({id:t().min(1),label:t(),path_fingerprint:t()})).min(1).max(32),headless:i({lifecycle:s(["persistent","ephemeral"]),expires_at:y.datetime({offset:!0})}),first_heartbeat:Te().optional()});var Un=c({version:n(1),install_id:A(),fingerprint_key:t().regex(/^[a-f0-9]{64}$/)}),Fn=i({enrollment_ticket:t().min(1).max(4096),expires_at:y.datetime({offset:!0}),device_kind:n("headless"),lifecycle:s(["persistent","ephemeral"]),device_expires_at:y.datetime({offset:!0})});var jn=i({credentialKind:s(["oauth","api_key"]).optional(),apiOrigin:mt(),clientId:t(),accessToken:t().min(1).max(32768),refreshToken:t().max(32768),expiresAt:y.datetime({offset:!0}),scopes:u(t().max(128)).max(128),orgId:t().min(1).max(160)});var ze=8;var Zt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,_e=(e)=>te(m(e),"workspaces"),Qt="account.json",er=(e)=>f(te(e,Qt));function Re(e){let r;try{r=Yt(_e(e))}catch{return[]}return r.filter((p)=>Zt.test(p)).sort().map((p)=>{let k=te(_e(e),p),S=te(k,"worker.json"),v=null;try{let P=B.safeParse(JSON.parse(h(S)));if(P.success&&P.data.stateDirectory===k)v=P.data}catch{}return{organizationId:p,directory:k,configPath:S,config:v,account:er(k)}})}var tr=(e)=>te(_e(e),"listed.json");function rr(e){try{let r=JSON.parse(h(tr(e))),p=r.names&&typeof r.names==="object"&&!Array.isArray(r.names)?Object.fromEntries(Object.entries(r.names).filter((k)=>typeof k[1]==="string")):{};return{listed:r.listed===!0,reason:r.reason==="sign_in"?"sign_in":null,blocked:Array.isArray(r.blocked)?r.blocked.filter((k)=>typeof k==="string"):[],names:p}}catch{return null}}function Ve(e,r){let p=Re(e),k=p.filter((E)=>E.account),S=p.filter((E)=>!E.account),v=rr(e),P=v&&!v.listed?v.reason:null,R=P||S.length===0&&v&&!v.listed?[]:S;if(k.length===0&&R.length===0&&(P||v&&!v.listed))return{workspaces:null,off:P};return{off:P,workspaces:[...k,...R].map(({organizationId:E,config:L,account:x})=>{let C=!1,T=null,D=!1,he=null;try{C=L?H(L).revoked:!1,T=L&&!C?M(L):null;let Ne=L?et(w(L).daemon):null;D=r&&!!T&&Ne?.state==="connected",he=D?Ot(Ne,T):null}catch{}return{...he?{permission_recovery:he}:{},organization_id:E,device_id:T?.deviceId??null,name:v?.names?.[E]??null,root:T?.roots[0]?{id:T.roots[0].id,permissions:T.roots[0].permissions}:null,state:C?"removed":D?"connected":"not_running",blocked:!x&&!C&&!D&&(v?.blocked.includes(E)??!1),...x?{account:!0}:{}}})}}import{readFileSync as nr}from"fs";function Xt(e){try{let r=JSON.parse(nr(`${e}.keep-awake.json`,"utf8"));return r!==null&&typeof r==="object"&&"version"in r&&r.version===1&&"enabled"in r&&r.enabled===!0?"battery_and_ac":void 0}catch(r){return r.code==="ENOENT"?"battery_and_ac":void 0}}import{chmodSync as Bi,lstatSync as Qe,mkdtempSync as Ui,realpathSync as ir,rmdirSync as Fi,rmSync as ji,unlinkSync as qi}from"fs";import{createConnection as ar,createServer as Vi}from"net";import{basename as Ye,dirname as Xe,join as oe}from"path";var sr=s(["status","drain","resume","stop","reload_roots"]),cr=c({version:n(1),instanceId:t(),deviceId:t(),phase:s(["starting","running","reconnecting","stopping"]),drained:d(),activeClaims:o().int().nonnegative(),activeSessions:o().int().nonnegative().optional(),executionEligible:d(),supportedOperations:u(s(ut)).max(ut.length).optional(),capabilityReadiness:$o(s(ut),d()).optional(),lastHeartbeat:t().nullable(),expiresAt:t()}),Qi=c({nonce:t(),action:sr}),lr=i({nonce:A()}),dr=c({version:n(1),nonce:A(),socketPath:t().max(100)});function ur(e){return oe(w(e).lock,"control.json")}function tt(e){return b(w(e).lock),lr.parse(JSON.parse(h(oe(w(e).lock,"owner.json"))))}function Ze(e){if(!f(e))return!1;let r=Qe(e);if(!r.isSocket()||r.uid!==process.getuid?.()||(r.mode&63)!==0)throw Error("worker_control_socket_not_private");return!0}function rt(e,r){let p=ur(e);if(!f(p)){let v=w(e).socket;if(!f(v)||!Qe(v).isSocket())return null;return Ze(v)?v:null}let k=dr.parse(JSON.parse(h(p)));if(k.nonce!==r)throw Error("worker_instance_changed");if(process.platform==="win32"){if(!fr.test(k.socketPath))throw Error("worker_control_endpoint_invalid");return k.socketPath}let S=Xe(k.socketPath);if(Xe(S)!==ir("/tmp")||!/^(?:reason|ara)-worker-[A-Za-z0-9]{6}$/.test(Ye(S))||Ye(k.socketPath)!=="control.sock"||Buffer.byteLength(k.socketPath)>100)throw Error("worker_control_endpoint_invalid");if(!f(S))return null;return b(S),Ze(k.socketPath)?k.socketPath:null}var fr=/^\\\\\.\\pipe\\reason-worker-[0-9a-f-]{36}$/;function mr(e,r){try{let p=JSON.parse(h(oe(w(e).lock,"owner.json"))),k=p&&typeof p==="object"?p[r]:void 0;return typeof k==="string"?k:null}catch{return null}}function ot(e){return mr(e,"runtime_version")}function nt(e,r){if(r)return r.message==="worker_control_timeout"?"socket_timeout":"bad_reply";try{if(!f(oe(w(e).lock,"owner.json")))return"no_lock";return rt(e,tt(e).nonce)?"socket_refused":"no_socket"}catch{return"bad_reply"}}var ea=c({instance:t().nullable(),since:o().int().nonnegative()});async function G(e,r){let p=w(e);if(!f(oe(p.lock,"owner.json")))return null;let k=tt(e),S=rt(e,k.nonce);if(!S)return null;return new Promise((v,P)=>{let R=ar(S),E="",L=!1,x=(C,T)=>{if(L)return;if(L=!0,R.destroy(),T)P(T);else v(C)};R.setTimeout(2000,()=>R.destroy(Error("worker_control_timeout"))),R.on("connect",()=>R.write(JSON.stringify({nonce:k.nonce,action:r})+`
5
- `)),R.on("data",(C)=>{if(E+=C.toString(),Buffer.byteLength(E)>16384)R.destroy(Error("worker_control_oversize"))}),R.on("error",(C)=>{if("code"in C&&["ECONNREFUSED","ENOENT"].includes(String(C.code)))x(null);else x(null,C.message==="worker_control_timeout"?C:Error("worker_control_unavailable"))}),R.on("end",()=>{try{let C=cr.parse(JSON.parse(E));if(C.instanceId!==k.nonce)throw Error("worker_instance_changed");x(C)}catch{x(null,Error("worker_control_invalid_response"))}}),R.once("close",()=>x(null,Error("worker_control_unavailable")))})}import{realpathSync as gr}from"fs";import{constants as Pe}from"fs";import{open as pr}from"fs/promises";var sa={platform:process.platform,home:a,async openFile(e){let r=await pr(e,Pe.O_RDONLY|Pe.O_NOFOLLOW|Pe.O_NONBLOCK);return{isFile:async()=>(await r.stat()).isFile(),close:()=>r.close()}}};var Fa=co(gr(process.execPath));var Ps=Buffer.from([0,255,3,4]);import{execFile as to}from"child_process";import{promisify as ro}from"util";var vr=new RegExp("^/media/pr-screenshots/([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/([a-z0-9][a-z0-9._-]*)\\.(png|jpe?g|gif|webp|webm|mp4)$","i");var Rr=new Set(["png","jpg","jpeg","gif","webp"]),Pr=new Set(["webm","mp4"]);function Er(e){if(!e)return null;try{return new URL(e).origin}catch{return null}}function st(e,r){let p;try{p=new URL(e)}catch{return null}let k=Er(r),S=p.hostname==="ara.so"||p.hostname.endsWith(".ara.so")||p.hostname==="reasonmachines.ai"||p.hostname.endsWith(".reasonmachines.ai")||p.hostname==="reasonmachines.com"||p.hostname.endsWith(".reasonmachines.com");if(p.protocol!=="https:"||!S&&p.origin!==k||p.username||p.password||p.port||p.search||p.hash)return null;let v=vr.exec(p.pathname);if(!v)return null;let P=v[1]?.toLowerCase(),R=v[2]?.toLowerCase(),E=v[3]?.toLowerCase(),L=v[4]?.toLowerCase();if(!P||!R||!E||!L)return null;let x=Rr.has(L)?"image":Pr.has(L)?"video":null;if(!x)return null;let C=/^(before|after)[\s:_-]+/.exec(E),T=p.pathname.replace(/^\/media\//,"");return{url:p.toString(),storagePath:T,runId:P,artifactId:R,fileName:`${E}.${L}`,kind:x,phase:C?.[1]==="before"||C?.[1]==="after"?C[1]:null}}var Cr=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,ct=(e)=>Boolean(e&&typeof e==="object"&&!Array.isArray(e)),K=()=>{throw Error("cloud_browser_media_request_invalid")};function Ce(e){if(!ct(e)||Object.keys(e).some((v)=>!["runId","configuredMediaOrigin","media"].includes(v))||typeof e.runId!=="string"||!Cr.test(e.runId)||typeof e.configuredMediaOrigin!=="string"||e.configuredMediaOrigin.length>2048||!Array.isArray(e.media)||e.media.length<1||e.media.length>8)return K();let r;try{r=new URL(e.configuredMediaOrigin)}catch{return K()}if(r.protocol!=="https:"||r.username||r.password||r.port||!Le(r.origin,{mode:"public_web"}).allowed)return K();let p=e.runId.toLowerCase(),k=new Set,S=e.media.map((v)=>{if(!ct(v)||Object.keys(v).some((R)=>!["url","sourceUrl","kind"].includes(R))||typeof v.url!=="string"||v.url.length>2048||typeof v.sourceUrl!=="string"||v.sourceUrl.length>8192||!["image","video"].includes(String(v.kind)))return K();let P=st(v.url,r.origin);if(!P||new URL(P.url).origin!==r.origin||P.runId!==p||P.kind!==v.kind||P.url!==v.url||k.has(v.url))return K();if(k.add(v.url),v.sourceUrl!==v.url){let R;try{R=new URL(v.sourceUrl)}catch{return K()}let E=/^\/(?:[a-f0-9]{40}|[a-f0-9]{64})\/([a-f0-9]+)$/.exec(R.pathname)?.[1];if(v.kind!=="image"||R.origin!=="https://camo.githubusercontent.com"||R.username||R.password||R.search||R.hash||!E||E.length%2!==0||Buffer.from(E,"hex").toString("utf8")!==v.url)return K()}return{url:v.url,sourceUrl:v.sourceUrl,kind:v.kind}});return{runId:e.runId,configuredMediaOrigin:r.origin,media:S}}var I=t().uuid(),X=t().regex(/^[a-f0-9]{64}$/),V=y.datetime({precision:3}),Ae=t().regex(/^[a-zA-Z0-9_-]{1,160}$/),ft=t().max(2048).regex(/^https:\/\/github\.com\/[A-Za-z0-9_-]+\/[A-Za-z0-9_.-]+\/pull\/[1-9][0-9]*$/).refine((e)=>![".",".."].includes(e.split("/")[4])),U=i({kind:n("primary_mac"),version:n(1),organizationId:Ae,userId:Ae,sessionId:Ae,runId:I,deviceId:I,rootId:I,rootRevision:t().min(1).max(64),binding:s(["workspace_source","mcp_control"]),targetRevision:o().int().nonnegative(),generation:I,profile:t().regex(/^(Default|Profile [0-9]+)$/),extensionInstanceId:t().min(1).max(1024)}).strict().refine((e)=>e.binding!=="workspace_source"||e.targetRevision===0),Ar=Kr().transform((e,r)=>{try{return Qr(e)}catch{return r.addIssue({code:"custom",message:"proof_visual_contract_invalid"}),go}}),ue=i({version:n(1),owner:U,contextId:I,preparedAt:V,expiresAt:V,prUrl:ft,headSha:t().regex(/^[a-f0-9]{40}$/),skillDigest:X,evidenceKind:s(["image","video"]),visualPlan:Ar.optional(),uploadOrigin:t().url().refine((e)=>{let r=new URL(e);return r.protocol==="https:"&&r.origin===e&&!r.username&&!r.password}).optional()}).strict().refine((e)=>Date.parse(e.expiresAt)>Date.parse(e.preparedAt)&&Date.parse(e.expiresAt)-Date.parse(e.preparedAt)<=300000),Ir=i({version:n(1),producer:n("primary_mac"),context:ue,captureId:I,operationId:I,attemptId:I,tabId:o().int().positive(),startedAt:V,finishedAt:V,sha256:X,media:_("contentType",[i({contentType:n("image/png"),sizeBytes:o().int().min(24).max(8388608),width:o().int().min(1).max(4096),height:o().int().min(1).max(4096)}).strict(),i({contentType:n("video/webm"),sizeBytes:o().int().min(128).max(10485760),durationSeconds:o().min(0.05).max(15),frameCount:o().int().min(1).max(450),receivedFrameCount:o().int().min(1).max(2000)}).strict()])}).strict().superRefine((e,r)=>{let p=Date.parse(e.startedAt),k=Date.parse(e.finishedAt);if(p<Date.parse(e.context.preparedAt)||k<p||k>Date.parse(e.context.expiresAt)||k-p>30000||e.media.contentType==="video/webm"&&(e.media.receivedFrameCount<e.media.frameCount||Math.abs((k-p)/1000-e.media.durationSeconds)>0.1))r.addIssue({code:"custom",message:"mac_pr_proof_capture_chronology_invalid"})}),vc=_("action",[i({action:n("screenshot"),context_id:I,tab_id:o().int().positive()}).strict(),i({action:n("start_video"),context_id:I,tab_id:o().int().positive(),seconds:o().int().min(1).max(15)}).strict(),i({action:n("stop_video"),recording_operation_id:I}).strict()]),fe=i({login:t().regex(/^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,37}[a-zA-Z0-9])?$/),id:t().regex(/^[1-9][0-9]{0,19}$/).nullable()}).strict(),ce=t().regex(/^[1-9][0-9]{0,19}$/),le=i({version:n(1),owner:U,expectedActorId:ce.nullable(),repositoryId:ce,repositoryFullName:t().max(200).regex(/^[A-Za-z0-9_-]+\/[A-Za-z0-9_.-]+$/).refine((e)=>![".",".."].includes(e.split("/")[1]))}).strict(),Or=["browser_unavailable","github_page_unavailable","identity_check_failed","operation_incomplete","attachment_unavailable"],Lr=_("status",[le.extend({status:n("ready"),observedActor:fe,checkedAt:V}),le.extend({status:n("not_ready"),reason:s(["authentication_required","identity_mismatch","authority_lost","unavailable"]),cause:s(Or).optional()})]).refine((e)=>e.status!=="ready"||e.expectedActorId===null||e.observedActor.id===e.expectedActorId),Y=i({version:n(1),owner:U,expectedActorId:ce.nullable(),authenticatedActor:fe,attemptId:I,captureId:I,prUrl:ft,repositoryId:ce,headSha:t().regex(/^[a-f0-9]{40}$/),sha256:X,sizeBytes:o().int().min(128).max(10485760),contentType:n("video/webm")}).strict(),pt=t().regex(/^https:\/\/github\.com\/user-attachments\/assets\/[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/),Mr=_("status",[Y.extend({status:n("not_attempted"),reason:s(["authentication_required","attachment_unavailable","identity_mismatch","capture_invalid","authority_lost"])}),Y.extend({status:n("uncertain"),reason:n("upload_outcome_unknown")}),Y.extend({status:n("uploaded"),observedActor:fe,nativeUrl:pt,uploadedAt:V})]).refine((e)=>(e.expectedActorId===null||e.authenticatedActor.id===e.expectedActorId)&&(e.status!=="uploaded"||e.observedActor.id===e.authenticatedActor.id&&e.observedActor.login===e.authenticatedActor.login)),de=Y.extend({nativeUrl:pt,observedActor:fe,bodySha256:X}),Tr=_("status",[de.extend({status:n("incomplete"),reason:s(["authentication_required","identity_mismatch","playback_unverified","authority_lost"])}),de.extend({status:n("verified"),sourceSha256:X,width:o().int().min(1).max(4096),height:o().int().min(1).max(4096),durationSeconds:o().positive().max(30),advancedSeconds:o().min(0.05).max(10),advancedFrames:o().int().positive(),playbackRestored:n(!0),verifiedAt:V})]).refine((e)=>(e.expectedActorId===null||e.authenticatedActor.id===e.expectedActorId)&&e.observedActor.id===e.authenticatedActor.id&&e.observedActor.login===e.authenticatedActor.login&&(e.status!=="verified"||e.sourceSha256===e.sha256)),Wr=Kr().transform((e,r)=>{try{let p=Ce(e);if(p.media.some((k)=>k.kind!=="image"))throw Error();return p}catch{return r.addIssue({code:"custom",message:"proof_media_request_invalid"}),go}}),Nr=_("action",[i({action:n("auth_check"),input:le}).strict(),i({action:n("prepare"),context:ue}).strict(),i({action:n("capture_png"),owner:U,contextId:I,tabId:o().int().positive()}).strict(),i({action:n("start_video"),owner:U,contextId:I,tabId:o().int().positive(),seconds:o().int().min(1).max(15)}).strict(),i({action:n("inspect_capture"),owner:U,captureId:I}).strict(),i({action:n("publish_video"),input:Y}).strict(),i({action:n("verify_png_media"),owner:U,media:Wr}).strict().refine((e)=>e.media.runId===e.owner.runId),i({action:n("verify_saved_media"),input:de}).strict(),i({action:n("publish_png"),owner:U,attemptId:I,captureId:I,sha256:X,sizeBytes:o().int().min(24).max(8388608),storagePath:t().max(512),uploadUrl:t().url().max(8192)}).strict()]);var Hr=i({requestId:I,command:Nr}).strict();var $r={type:"object",required:["action"],properties:{action:{type:"string",enum:["screenshot","start_video","stop_video"]},context_id:{type:"string",format:"uuid"},tab_id:{type:"integer",minimum:1},seconds:{type:"integer",minimum:1,maximum:15},recording_operation_id:{type:"string",format:"uuid"}},additionalProperties:!1},lt={type:"string",format:"uuid",description:"capture_context_id from tools.pr.prepareProof."},dt={type:"integer",minimum:1,description:"An already-owned tab's id."},Sc={...$r,oneOf:[{type:"object",required:["action","context_id","tab_id"],additionalProperties:!1,properties:{action:{type:"string",const:"screenshot"},context_id:lt,tab_id:dt}},{type:"object",required:["action","context_id","tab_id","seconds"],additionalProperties:!1,properties:{action:{type:"string",const:"start_video"},context_id:lt,tab_id:dt,seconds:{type:"integer",minimum:1,maximum:15}}},{type:"object",required:["action","recording_operation_id"],additionalProperties:!1,properties:{action:{type:"string",const:"stop_video"},recording_operation_id:{type:"string",format:"uuid",description:"The recording_operation_id start_video returned."}}}]};var Ac=i({operationId:t().uuid(),attemptId:t().uuid(),contextId:t().uuid(),tabId:o().int().positive()}).strict();var Br=String.raw`async (media) => {
6
- const deadline = (promise) => {
7
- let timer;
8
- return Promise.race([promise, new Promise((_, reject) => {
9
- timer = setTimeout(() => reject(new Error("media_decode_timeout")), 12000);
10
- })]).finally(() => clearTimeout(timer));
11
- };
12
- const items = await Promise.all(media.map(async (item) => {
13
- const element = document.createElement(item.kind === "image" ? "img" : "video");
14
- document.body.append(element);
15
- try {
16
- if (item.kind === "image") {
17
- element.src = item.sourceUrl;
18
- await deadline(element.decode());
19
- if (!element.complete || !element.naturalWidth || !element.naturalHeight) throw new Error("media_image_not_decoded");
20
- return { ...item, width: element.naturalWidth, height: element.naturalHeight };
21
- }
22
- element.muted = true;
23
- element.playsInline = true;
24
- element.preload = "auto";
25
- const loaded = new Promise((resolve, reject) => {
26
- element.addEventListener("loadeddata", resolve, { once: true });
27
- element.addEventListener("error", () => reject(new Error("media_video_not_decoded")), { once: true });
28
- });
29
- element.src = item.sourceUrl;
30
- await deadline(loaded);
31
- if (!element.videoWidth || !element.videoHeight || !Number.isFinite(element.duration) || element.duration <= 0) throw new Error("media_video_not_decoded");
32
- const initial = element.currentTime;
33
- await deadline(element.play());
34
- await deadline(new Promise((resolve, reject) => {
35
- let timer;
36
- const check = () => {
37
- if (element.error) { clearTimeout(timer); reject(new Error("media_video_not_decoded")); return; }
38
- if (element.currentTime - initial >= 0.05) { clearTimeout(timer); resolve(); return; }
39
- timer = setTimeout(check, 25);
40
- };
41
- element.addEventListener("pause", () => { clearTimeout(timer); reject(new Error("media_video_not_advancing")); }, { once: true });
42
- check();
43
- }));
44
- return { ...item, width: element.videoWidth, height: element.videoHeight, advancedSeconds: element.currentTime - initial };
45
- } finally {
46
- if (item.kind === "video") element.pause();
47
- element.removeAttribute("src");
48
- element.remove();
49
- }
50
- }));
51
- return { verified: true, items };
52
- }`;import{execFile as Ur}from"child_process";import{promisify as Fr}from"util";var Tc=Fr(Ur);var Xc=_("ok",[i({ok:n(!0),actor:i({login:t(),id:t().nullable()}).strict()}).strict(),i({ok:n(!1),reason:s(["authentication_required","identity_mismatch","attachment_unavailable"])}).strict()]),Zc=i({version:n("0.1.42"),metadata:i({extensionId:t(),extensionInstanceId:t(),nativeHostName:t()})});var tl=i({version:n(1),recording_operation_id:t().uuid(),proof_ready:n(!1),acknowledged_at:y.datetime()}).strict(),me=i({action:n("start"),request_id:t().uuid(),profile:t().regex(/^(Default|Profile [0-9]+)$/),tab_id:o().int().positive(),seconds:o().int().min(1).max(15)}).strict(),ht=i({action:n("inspect"),recording_operation_id:t().uuid()}).strict(),rl=_("action",[me,ht]),wt=i({recording_operation_id:t().uuid()}).strict(),xe={device_id:t().uuid(),root_id:t().uuid()},qr=_("action",[me.extend(xe),ht.extend(xe),wt.extend({...xe,action:n("stop")})]),ol=Gr(qr),nl=i({version:n(1),recordingId:t().uuid(),proofReady:n(!1),capture:i({captureId:t().uuid(),contentType:n("video/webm"),sha256:t().regex(/^[a-f0-9]{64}$/),sizeBytes:o().int().min(128).max(10485760),startedAt:y.datetime(),finishedAt:y.datetime(),durationSeconds:o().min(0.05).max(15),frameCount:o().int().min(1).max(450),receivedFrameCount:o().int().min(1).max(2000),owner:i({runId:t().uuid(),deviceId:t().uuid(),rootId:t().uuid(),rootRevision:t().max(64),profile:t().regex(/^(Default|Profile [0-9]+)$/),extensionInstanceId:t().min(1).max(1024),generation:t().uuid(),browserScope:t().max(128),tabId:o().int().positive()}).strict()}).strict().refine((e)=>e.receivedFrameCount>=e.frameCount&&Math.abs((Date.parse(e.finishedAt)-Date.parse(e.startedAt))/1000-e.durationSeconds)<=0.1)}).strict();var pl=me.extend({action:s(["start","inspect"]),recording_boot_generation:t().uuid(),recording_operation_id:t().uuid().optional(),recording_attempt_id:t().uuid().optional()}).strict();import{execFile as zr}from"child_process";import{promisify as Vr}from"util";var yl=Vr(zr);var Jr=s(["recording_failed","authority_lost","browser_timeout","cleanup_failed","no_frames","encoding_invalid","frame_invalid","timestamp_invalid","capture_bound","ack_failed","cancelled","detached","browser_changed","tab_not_owned","encoding_frames_failed","encoding_encode_failed","encoding_output_failed","encoding_probe_failed","encoding_probe_streams_failed","encoding_probe_dimensions_failed","encoding_probe_duration_failed","encoding_probe_frames_failed","encoding_probe_format_failed","encoding_decode_failed","encoding_pin_failed"]);var j=t().min(1).max(1024),gt=i({path:j,sha256:t().regex(/^[a-f0-9]{64}$/)}).strict(),Yr=i({owner:i({runId:j,deviceId:j,rootId:j,rootRevision:j,profile:t().regex(/^(Default|Profile [0-9]+)$/),extensionInstanceId:j,generation:j,browserScope:j,tabId:o().int().positive()}).strict(),socketPath:j,extensionId:t().regex(/^[a-p]{32}$/),nativeHostName:j,seconds:o().int().min(1).max(15),encoder:i({ffmpeg:gt,ffprobe:gt}).strict()}).strict();var $l=i({version:n("0.1.42"),metadata:i({extensionId:t(),extensionInstanceId:t(),nativeHostName:t()})});var Xl=i({operationId:t().uuid()}).strict();var yd=ro(to);var _d=i({version:n("0.1.42"),metadata:i({extensionId:n(F),extensionInstanceId:t().min(1).max(1024)})});var Oe=1;var Uf=c({type:n("configure"),protocol:n(Oe),version:t(),config:B}),Ff=c({type:n("ticket"),organizationId:t().min(1).max(160),receipt:Te()}),jf=c({type:s(["ping","stop"])});var im=c({type:n("hello"),protocol:n(Oe),version:t(),platform:s(["linux","darwin"]),architecture:s(["arm64","x64"]),enrolled:d()}),am=c({type:n("ticket-request"),request:c({install_id:A(),code_challenge:t().regex(/^[A-Za-z0-9_-]{43}$/),lifecycle:s(["persistent","ephemeral"]),roots:u(c({path_fingerprint:t().regex(/^[a-f0-9]{64}$/),execution_mode:s(["confined","host"]),permissions:c({read:n(!0),write:n(!0),execute:n(!0),discover_environment:n(!0),expose_mcp:n(!1)})})).length(1)})}),sm=_("type",[c({type:n("running"),deviceId:t().min(1).max(160),expiresAt:y.datetime({offset:!0}),lifetime:s(["persistent","ephemeral"]),supervision:n("ssh-foreground")}),c({type:n("pong")}),c({type:n("stopped")})]);var ko=1;var Z=A(),vo=c({kind:n("install_only"),authorityId:Z,organizationId:Z,userId:Z,connectionId:Z,attemptId:Z,purpose:n("install"),generation:o().int().positive(),transport:n("reverse_ssh"),expiresAt:y.datetime({offset:!0}),maxDurationMs:n(300000),maxChannels:n(1),allowTcpForwarding:n(!1),allowPty:n(!1)}),So=t().max(2048).superRefine((e,r)=>{let p;try{p=new URL(e)}catch{r.addIssue({code:"custom",message:"invalid relay url"});return}if(p.protocol!=="ws:"&&p.protocol!=="wss:"){r.addIssue({code:"custom",message:"invalid relay protocol"});return}if(p.username||p.password||p.search||p.hash){r.addIssue({code:"custom",message:"relay credentials or modifiers are not allowed"});return}let k=p.pathname.split("/");if(k.length!==4||k[1]!=="device"||!Z.safeParse(k[2]).success||!/^[a-f0-9]{64}$/.test(k[3]??""))r.addIssue({code:"custom",message:"invalid device relay path"});if(p.protocol==="ws:"&&!["127.0.0.1","[::1]"].includes(p.hostname))r.addIssue({code:"custom",message:"plaintext relay must be loopback"})});var dm=c({protocol:n(ko),type:n("ssh_install_relay"),authorityToken:t().regex(/^(?:reason|ara)_ssh_install_[A-Za-z0-9_-]{43}$/),authority:vo,relayUrl:So,endpoint:c({host:n("127.0.0.1"),port:n(22)})});class Et extends Error{}function De(e){if(!f(e))return null;let r=new Et(`${e} is not a valid worker config. Remove it to start over.`),p;try{p=JSON.parse(h(e))}catch(S){if(S instanceof SyntaxError)throw r;throw S}let k=B.safeParse(p);if(!k.success)throw r;return k.data}var Lo=200;var nh=c({version:n(1),session_ids:u(t().min(1).max(200)).max(Lo)});function Ke(e,r,p=!1){let k=Mo(e,r,p);return k.length===1?k[0]:J(ve(J(e,".config")),...Ct(r,p))}var Ct=(e,r)=>[...e==="production"?[]:[e],r?"connect-once":"connect"];function Mo(e,r,p=!1){let k=e;try{k=pe(e)}catch{}return["ara","reason"].map((S)=>J(k,".config",S,...Ct(r,p))).filter(To)}function To(e){try{if(pe(e)!==e)return!1;return De(J(e,"worker.json"))?.stateDirectory===e}catch{return!1}}var Do="disconnected.json";function jo(e,r){return f(J(Ke(e,r),Do))}function Wo(e,r){return r==="darwin"&&e.userChrome!==!1}var Mw=i({root:i({id:t().min(1).max(160),label:t().max(160),path_fingerprint:t()})});var Tw=Symbol("serve here");async function Uo(e={}){let r=pe(e.home??a()),p=De(J(Ke(r,e.channel??g()),"worker.json"));if(!p)return null;let k,S=await(e.controlWorker??G)(p,"status").catch((D)=>(k=D instanceof Error?D:Error(String(D)),null)),v=S?ot(p):null,P=e.serviceHost??be(r),R=qe(p,P,"connect"),E=H(p).revoked,L=!E&&!S,x=(()=>{try{return M(p)}catch{return null}})(),{workspaces:C,off:T}=E||ge(p.stateDirectory)!==null?{workspaces:null,off:null}:Ve(p,S?.phase==="running");return{workspaces:C,workspaces_off:T,workspaces_max:ze+(C?.filter((D)=>D.account).length??0),name:p.name,device_id:x?.deviceId??null,organization_id:x?.orgId??null,folder:p.workspaceRoot,mode:p.executionMode,sessions_max:null,user_chrome:Wo(p,P.platform),cloud_sessions:p.cloudSessions===!0,root:x?.roots[0]?{id:x.roots[0].id,permissions:x.roots[0].permissions}:null,roots:x?.roots.map((D)=>({id:D.id,folder:D.path,permissions:D.permissions}))??[],state:E?"removed":S?S.phase==="running"?"connected":S.phase:"not_running",not_running_reason:L?nt(p,k):null,worker_alive:L&&R?An(R,P):null,sessions_running:S?.activeSessions??null,version:v,service:R?{label:R.label,logs:R.logs}:null}}function Ho(e={}){let r=pe(e.home??a()),p=De(J(Ke(r,e.channel??g()),"worker.json"));if(!p)return null;return Dr(p,e.serviceHost??be(r),"connect")?.label??null}export{w,M,Xt,De,Ke,jo,Uo,Ho};
@@ -1,4 +0,0 @@
1
- // @bun
2
- import{x}from"./vm-hands-entry-lite-9ay6f56v.js";import{r}from"./vm-hands-entry-lite-qy9xg6em.js";import{execFileSync as b}from"child_process";import{mkdirSync as y,readdirSync as h,readFileSync as D,rmSync as f,statSync as k,writeFileSync as w}from"fs";import{join as p,sep as S}from"path";import{setTimeout as L}from"timers/promises";var _=3000,u=null;function g(e){return p(e,"users")}function gt(e){if(u?.root===e.root)return;let t=g(e.root);y(t,{recursive:!0,mode:448}),w(p(t,String(process.pid)),"",{mode:384}),u=e}function Us(){if(!u)return;f(p(g(u.root),String(process.pid)),{force:!0}),u=null}function m(e){try{return process.kill(e,0),!0}catch(t){return t instanceof Error&&"code"in t&&t.code==="EPERM"}}function P(){let e=process.getuid?.();if(process.platform==="linux")return h("/proc").flatMap((n)=>{if(!/^\d+$/.test(n))return[];try{if(k(`/proc/${n}`).uid!==e)return[];let s=D(`/proc/${n}/cmdline`).toString("utf8").split("\x00").join(" ").trim();return s?[{pid:Number(n),command:s}]:[]}catch{return[]}});if(process.platform==="win32")return b(x("powershell.exe"),["-NoLogo","-NoProfile","-NonInteractive","-Command",'Get-CimInstance Win32_Process | ForEach-Object { "$($_.ProcessId) $($_.CommandLine)" }'],{encoding:"utf8",maxBuffer:16777216,windowsHide:!0}).split(/\r?\n/).flatMap((s)=>{let c=/^(\d+) (.+)$/.exec(s.trim());return c?[{pid:Number(c[1]),command:c[2]}]:[]});return b("/bin/ps",["-axww","-o","pid=,uid=,command="],{encoding:"utf8",maxBuffer:16777216}).split(`
3
- `).flatMap((n)=>{let s=/^\s*(\d+)\s+(\d+)\s+(.+)$/.exec(n);return s&&Number(s[2])===e?[{pid:Number(s[1]),command:s[3]}]:[]})}async function Hs(){let e=u;if(!e)return{released:"unused",stopped:0};let t=g(e.root);f(p(t,String(process.pid)),{force:!0}),u=null;let n=!1;for(let o of h(t)){let i=Number(o);if(Number.isSafeInteger(i)&&i>0&&m(i))n=!0;else f(p(t,o),{force:!0})}if(n)return{released:"shared",stopped:0};let s=P().filter((o)=>o.pid!==process.pid&&(o.command.includes(`${e.root}${S}`)||o.command.includes(`${e.automation}${S}`)||o.command.includes(e.extensionDir))),c=(o,i)=>{try{process.kill(o,i)}catch{}};for(let o of s)c(o.pid,"SIGTERM");for(let o=Date.now()+_;Date.now()<o&&s.some((i)=>m(i.pid));)await new Promise((i)=>setTimeout(i,100));for(let o of s)if(m(o.pid))c(o.pid,"SIGKILL");return{released:"stopped",stopped:s.length}}var E=20000,M=30000,N=100,a=new Map,l=null,d=[];function gi(e){a.set(e,(a.get(e)??0)+1);let t=!1;return()=>{if(t)return;t=!0;let n=(a.get(e)??1)-1;if(n>0){a.set(e,n);return}if(a.delete(e),l?.run===e)l.idleUntil=0}}function O(){return new r("automation_desktop_busy","Another Session, or another agent of this Session, is using this worker's desktop. Retry after it finishes.")}function T(e,t){return l!==null&&l.run!==e&&(l.calls>0||t<l.idleUntil)}async function _i(e,t,n=Date.now){let s=Symbol(e);d.push(s);try{let i=n()+M;for(;;){if(!T(e,n())&&(l?.run===e||d[0]===s))break;if(n()>=i)throw O();await L(N,void 0,{signal:t}).catch(()=>t.throwIfAborted())}}finally{d.splice(d.indexOf(s),1)}if(l?.run!==e)l={run:e,calls:0,idleUntil:0};let c=l;c.calls+=1;let o=!1;return()=>{if(o)return;o=!0,c.calls-=1,c.idleUntil=n()+E}}
4
- export{gt,Us,Hs,gi,_i};
@@ -1,3 +0,0 @@
1
- // @bun
2
- import{statSync as f}from"fs";import{delimiter as l,join as d}from"path";function Et(e,o=process.env.PATH??"",i=process.env,u=process.platform){let r=u==="win32",a=e.includes("/")||r&&e.includes("\\");if(!e||a||e.includes("\x00"))return!1;let c=r?["",...(i.PATHEXT??".EXE;.CMD;.BAT;.COM").split(";")]:[""];return o.split(l).some((t)=>{if(!t)return!1;return c.some((n)=>{if(n===void 0)return!1;try{let s=f(d(t,`${e}${n}`));if(!s.isFile())return!1;return r||(s.mode&73)!==0}catch{return!1}})})}
3
- export{Et};
@@ -1,42 +0,0 @@
1
- // @bun
2
- import{t,ft,A,o,d,u,c,_,oe,s,n}from"./vm-hands-entry-lite-907pa7f9.js";var T=t().max(201).regex(/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/).refine((e)=>e.split("/").every((r)=>r!=="."&&r!=="..")),y=t().min(1).max(255).regex(/^[A-Za-z0-9_][A-Za-z0-9_./-]*$/).refine((e)=>!e.includes("..")&&!e.includes("//")&&!e.endsWith("/")&&!e.endsWith(".lock")),x=t().regex(/^[a-f0-9]{40}$/),O=o().int().positive(),k=t().min(1).max(256),D=t().max(60000),L={version:n(1),repoFullName:T},N=u(t().max(1024).regex(/^(?:Co-authored-by: [^<>\r\n\x00]+ <[^<>\s]+@[^<>\s]+>|Reason-Contributor-ID: rc_[a-f0-9]{32})$/)).max(1000),j=c({expectedTrailers:N,missingFromHead:N}),z=_("action",[c({action:n("edit"),title:k.optional(),body:D.optional(),base:y.optional()}),c({action:s(["ready","draft","close"])}),c({action:n("metadata"),field:s(["reviewer","assignee","label"]),change:s(["add","remove"]),value:t().min(1).max(100).refine((e)=>!/[\r\n\0]/.test(e))})]),ke=_("kind",[c({...L,kind:n("read"),path:t().min(1).max(2048),accept:s(["application/vnd.github+json","application/vnd.github.full+json","application/vnd.github.v3.diff"]).optional()}),c({...L,kind:n("pr_review_context"),number:O,after:t().min(1).max(1024).optional()}),c({...L,kind:n("prepare"),branch:y,baseSha:x,defaultBranch:y,diagnosticsVersion:n(1).optional()}),c({...L,kind:n("publish"),branch:y,defaultBranch:y,baseSha:x,remoteHeadSha:x.nullable(),contributorTrailers:N.optional()}),c({...L,kind:n("pr_create"),head:y,base:y,title:k,body:D,draft:d()}),c({...L,kind:n("pr_mutation"),number:O,mutation:z}),c({...L,kind:n("pr_merge"),number:O,expectedHeadSha:x,expectedBaseRef:y,method:s(["merge","squash","rebase"]),commitBody:t().max(65536).optional()})]),V=["local_device_gh_prepare_setup","local_device_gh_prepare_metadata","local_device_gh_prepare_private_init","local_device_gh_prepare_fetch","local_device_gh_prepare_base_mismatch","local_device_gh_prepare_checkout_validation","local_device_gh_prepare_checkout_init","local_device_gh_prepare_materialization"];function F(e){return V.some((r)=>r===e)}class Vt extends Error{code;constructor(e){super(e);this.code=e}}function $n(e,r,i){let l=ke.safeParse(e);return r==="failed"&&l.success&&l.data.kind==="prepare"&&l.data.diagnosticsVersion===1&&F(i)}var lt=245760,ho=_("kind",[c({kind:n("pr_review_context"),body:t().max(lt)}),c({kind:n("prepare"),headSha:x}),c({kind:n("read"),status:o().int().min(200).max(599),headers:oe(t(),t().max(8192)).refine((e)=>Object.keys(e).every((r)=>r==="link"||r==="content-type")),body:t().max(lt)}),c({kind:n("publish"),headSha:x,scannedObjectCount:o().int().min(0).max(5000),attribution:j.optional()}),c({kind:n("pr_create"),url:t().max(1024).regex(/^https:\/\/github\.com\/[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+\/pull\/[1-9][0-9]*$/)}),c({kind:n("pr_mutation"),number:O,applied:n(!0)}),c({kind:n("pr_merge"),number:O,merged:n(!0)})]).refine((e)=>new TextEncoder().encode(JSON.stringify(e)).byteLength<=lt,"local_device_gh_result_too_large"),B=c({source:s(["agent","human"]),operationId:A()}),ie=c({version:n(1),userId:ft(),deviceId:ft(),rootId:ft(),runId:ft(),merge:B.optional(),contributorRefresh:ft().optional(),repoFullName:T.nullable(),rootRevision:t().regex(/^[1-9][0-9]*$/),readOnly:d(),generation:o().int().positive().nullable(),fenceId:ft().nullable()}).refine((e)=>e.generation===null===(e.fenceId===null));function I(e){return/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(e)&&e.split("/").every((r)=>r!=="."&&r!=="..")}function fo(e,r,i={},l="read"){if(I(e)&&(r==="/search/issues"||r.startsWith("/search/issues?")))return W(e,r,i);if(!I(e)||!r.startsWith(`/repos/${e}/`)&&r!==`/repos/${e}`)throw Error("local_device_gh_repository_mismatch");if(/[\\#\u0000-\u001f]/.test(r)||/%(?:2e|5c|00)/i.test(r))throw Error("local_device_gh_path_denied");let g=new URL(r,"https://api.github.com");if(g.pathname!==r.split("?")[0]||g.username||g.password)throw Error("local_device_gh_path_denied");let h;try{h=decodeURIComponent(g.pathname.slice(`/repos/${e}`.length))}catch{throw Error("local_device_gh_path_denied")}if(h.includes("%")||h.split("/").some((p)=>p==="."||p===".."))throw Error("local_device_gh_path_denied");if((i.method??"GET").toUpperCase()!=="GET"||i.body!=null)throw Error("local_device_gh_mutation_not_admitted");if(![/^$/,/^\/commits$/,/^\/pulls$/,/^\/pulls\/[1-9][0-9]*(?:\/(?:commits|files|reviews|comments))?$/,/^\/issues\/[1-9][0-9]*(?:\/comments)?$/,/^\/issues\/comments\/[1-9][0-9]*\/reactions$/,/^\/commits\/[A-Za-z0-9_./-]+(?:\/(?:check-runs|status))?$/,/^\/check-runs\/[1-9][0-9]*(?:\/annotations)?$/,/^\/branches\/[A-Za-z0-9_./-]+$/,/^\/git\/ref\/heads\/[A-Za-z0-9_./-]+$/,/^\/compare\/[A-Za-z0-9_./-]+\.\.\.[A-Za-z0-9_./-]+$/].some((p)=>p.test(h)))throw Error("local_device_gh_path_denied");if(g.searchParams.forEach((p,b)=>{if(b==="per_page"&&/^[1-9][0-9]*$/.test(p)&&Number(p)<=100)return;if(b==="page"&&/^[1-9][0-9]*$/.test(p)&&Number(p)<=100)return;if(h==="/pulls"&&b==="state"&&["open","closed","all"].includes(p))return;if(h==="/pulls"&&b==="sort"&&p==="updated")return;if(h==="/pulls"&&b==="direction"&&p==="desc")return;if(h==="/pulls"&&["head","base"].includes(b)&&/^[A-Za-z0-9_./:-]{1,255}$/.test(p))return;throw Error("local_device_gh_query_denied")}),i.headers)new Headers(i.headers).forEach((b,G)=>{if(G!=="accept"||!["application/vnd.github+json","application/vnd.github.full+json","application/vnd.github.v3.diff"].includes(b))throw Error("local_device_gh_header_denied")})}function W(e,r,i){if(/[\\#\u0000-\u001f]/.test(r))throw Error("local_device_gh_path_denied");let l=new URL(r,"https://api.github.com");if(l.pathname!=="/search/issues"||l.username||l.password)throw Error("local_device_gh_path_denied");if((i.method??"GET").toUpperCase()!=="GET"||i.body!=null)throw Error("local_device_gh_mutation_not_admitted");let g=null;l.searchParams.forEach((f,p)=>{if(p==="q"&&g===null){g=f;return}if(p==="per_page"&&/^[1-9][0-9]*$/.test(f)&&Number(f)<=100)return;if(p==="page"&&/^[1-9][0-9]*$/.test(f)&&Number(f)<=100)return;throw Error("local_device_gh_query_denied")});let h=`repo:${e.toLowerCase()} `,S=g?.toLowerCase()??"";if(S.length>512||!(S+" ").startsWith(h)||/(?:^|\s)(?:repo|org|user):/.test(S.slice(h.length)))throw Error("local_device_gh_query_denied");if(i.headers)new Headers(i.headers).forEach((f,p)=>{if(p!=="accept"||f!=="application/vnd.github+json")throw Error("local_device_gh_header_denied")})}var mo=`query PullRequestReviewContext($owner: String!, $repo: String!, $number: Int!, $after: String) {
3
- repository(owner: $owner, name: $repo) {
4
- nameWithOwner
5
- pullRequest(number: $number) {
6
- number
7
- reviewDecision
8
- headRefOid
9
- baseRefOid
10
- baseRef {
11
- branchProtectionRule {
12
- requiresApprovingReviews
13
- requiredApprovingReviewCount
14
- requiresStatusChecks
15
- requiredStatusCheckContexts
16
- requiresConversationResolution
17
- dismissesStaleReviews
18
- }
19
- }
20
- reviewThreads(first: 100, after: $after) {
21
- nodes {
22
- id isResolved isOutdated viewerCanResolve viewerCanUnresolve
23
- path line originalLine startLine originalStartLine diffSide startDiffSide
24
- comments(first: 100) {
25
- nodes {
26
- id databaseId body createdAt updatedAt url
27
- author { __typename login }
28
- replyTo { databaseId }
29
- }
30
- pageInfo { hasNextPage }
31
- }
32
- }
33
- pageInfo { hasNextPage endCursor }
34
- }
35
- }
36
- }
37
- }`;function Ve(e){return e.kind==="read"||e.kind==="pr_review_context"}var ut=["inspect_project","fs.read","fs.write","fs.search","fs.watch","fs.upload","fs.export","fs.import","fs.download","exec.run","exec.full","process.run.v1","process.full.v1","pty.start","pty.input","pty.resize","pty.close","git.run","process.list","process.signal","ports.list","tunnel.open","tunnel.close","env.discover","setup.run","mcp.discover","mcp.start","mcp.proxy","browser.snapshot","browser.navigate","browser.act","computer.snapshot","computer.act","computer.use","browser.use","browser.recording.v1","browser.pr-proof.v1","hands.connect","jobs.control","environment.install","github.local.v1","inference.ollama.v1","inference.custom.v1","delegate.devin.copy.v1","delegate.cursor.copy.v1","display.stream.v1","automation.call.v1","preview.serve.v1","workspace.setup.v1","simulator.call.v1","simulator.stream.v1"];var Ge=2,w="/app/local-runtime",Ce=262144,vs="x-reason-relay-host-alias",Ss="v1";function m(e,r){return{path:`${w}${e}`,routerPath:e,auth:r}}function E(e,r){return{...m(e,"device_proof"),forOperation(i){return m(`/operations/${encodeURIComponent(i)}${r}`,"device_proof")}}}var Es={register:m("/register","registration_bearer"),enroll:m("/enroll","none"),authChallenge:m("/auth/challenge","none"),identity:m("/identity","device_proof"),heartbeat:m("/heartbeat","device_proof"),rootsSync:m("/roots/sync","device_proof"),disconnect:m("/disconnect","device_proof"),lifecycle:m("/lifecycle","device_proof"),localSubscription:m("/local-subscription","device_proof"),ownerWorkspaces:m("/owner-workspaces","device_proof"),ownerWorkspaceEnrollment:m("/owner-workspaces/enrollment","device_proof"),sessionWorktrees:m("/session-worktrees","device_proof"),operationClaim:m("/operations/claim","device_proof"),operationHeartbeat:E("/operations/:operationId/heartbeat","/heartbeat"),operationEvents:E("/operations/:operationId/events","/events"),operationComplete:E("/operations/:operationId/complete","/complete"),operationEnvironment:E("/operations/:operationId/environment","/environment"),operationEnvironmentAck:E("/operations/:operationId/environment-ack","/environment-ack"),operationCustomEndpointCredential:E("/operations/:operationId/custom-endpoint-credential","/custom-endpoint-credential")},Bn=`${w}/session`;var J=[/^\/app\/local-runtime\/heartbeat$/,/^\/app\/local-runtime\/operations\/claim$/,/^\/app\/local-runtime\/operations\/[0-9a-fA-F-]{36}\/(?:heartbeat|events|complete|environment|environment-ack)$/];function xs(e){return J.some((r)=>r.test(e))}var Vr=60000;var Fn="hands_control_v1",dt="environment.deliver",Ae="vm_hands_workspace_deferred",pt="vm_hands.workspace_grant",jn="hands.unbind_unverified",Un="claim_v1",Hn="environment_at_claim",qn="ready_v1",zn="workspace_check",Wn="rebind_v1",Vn="grant_v1",Gn="workspace_grant",Kn="resident_rebind",Jn="hands.rebind",Zn="snapshot_v1",Xn="cloud_access",Yn="playwright_v1",Qn="headless_browser",ei="v1",ti="job_env_large_values",pe="srt_root_v1",X="hands_confinement",Pe="gid_v1",q="model_jobs_egress",ri="setpriv_v1",ni="jobs_user",ii="spawning_attempt_v1",Y="hands_session_group";var oi="session_cap",si="none",ai="same_launch_v1",ci="exit_v1",li="start_wait",ht="user_chrome",ui="cloud_sessions";function v(e){if(!a(e)||Object.keys(e).length!==5||e.version!==1)return!1;let r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;return["boot_generation","recording_operation_id","recording_attempt_id"].every((i)=>typeof e[i]==="string"&&r.test(e[i]))&&typeof e.root_version==="string"&&/^[0-9]{1,20}(?:\.[0-9]{1,6})?$/.test(e.root_version)}function C(e){if(!a(e)||Object.keys(e).length!==6)return!1;let r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;return typeof e.device_id==="string"&&r.test(e.device_id)&&(e.binding==="workspace_source"||e.binding==="mcp_control")&&Number.isSafeInteger(e.target_revision)&&Number(e.target_revision)>=0&&Number.isSafeInteger(e.root_grant_revision)&&Number(e.root_grant_revision)>0&&Number.isSafeInteger(e.target_generation)&&Number(e.target_generation)>0&&typeof e.target_fence_id==="string"&&r.test(e.target_fence_id)}var ks=["lock_acquired","enrollment_started","enrollment_completed","readiness_started","readiness_completed","inventory_completed","control_ready"],Gt=86400000;var K=["production","staging"];function P(e){if(!a(e)||Object.keys(e).length!==3)return!1;let r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;return["organization_id","user_id","device_id"].every((i)=>Object.hasOwn(e,i)&&typeof e[i]==="string"&&r.test(e[i])&&e[i]!=="00000000-0000-0000-0000-000000000000")}var Z="DEVICE-PROOF-V2";function di(e,r=Z){let i=e.method.toUpperCase();if(!/^[A-Z]+$/.test(i)||!e.pathAndQuery.startsWith(`${w}/`)||e.pathAndQuery.includes(`
38
- `)||!/^[0-9]{1,20}$/.test(e.timestamp)||!/^[A-Za-z0-9_-]{22,43}$/.test(e.nonce)||e.challenge.length<16||e.challenge.length>1024||e.challenge.includes(`
39
- `)||!/^[a-f0-9]{64}$/.test(e.bodySha256))throw Error("Invalid Reason Device proof input.");return Buffer.from([r,i,e.pathAndQuery,e.timestamp,e.nonce,e.challenge,e.bodySha256].join(`
40
- `),"utf8")}function a(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function Q(e,r){return typeof e==="string"&&r.some((i)=>i===e)}function H(e){return a(e)&&typeof e.id==="string"&&typeof e.label==="string"&&typeof e.path_fingerprint==="string"}function ee(e){return a(e)&&Number.isInteger(e.seq)&&Number(e.seq)>=0&&typeof e.kind==="string"&&/^[A-Za-z0-9._:-]{1,64}$/.test(e.kind)&&a(e.payload)}function R(e){throw Error(e)}function Cs(e,r){let i=a(e)?e:{},l=typeof i.error==="string"?i.error:`http_${r}`,g=typeof i.detail==="string"?i.detail:typeof i.message==="string"?i.message:`Reason Device request failed (${r})`;return{code:l,message:g}}function No(e){if(!a(e)||typeof e.challenge!=="string"||e.challenge.length<16||e.challenge.length>1024||e.challenge.includes(`
41
- `)||typeof e.expires_at!=="string"||!Number.isFinite(Date.parse(e.expires_at)))R("Reason returned an invalid Device proof challenge.");return{challenge:e.challenge,expires_at:e.expires_at}}function M(e,r){if(!a(e)||typeof e.device_id!=="string"||e.auth_scheme!=="p256"||e.organization_id!==void 0&&typeof e.organization_id!=="string"||e.protocol_version!==Ge||!Array.isArray(e.roots)||!e.roots.every(H)||r&&typeof e.organization_id!=="string"||e.device_credential!==void 0)R(r?"Reason returned an invalid Device enrollment.":"Reason returned an invalid Device registration.");return{...{device_id:e.device_id,...typeof e.organization_id==="string"?{organization_id:e.organization_id}:{},protocol_version:Ge,roots:e.roots},auth_scheme:"p256"}}function As(e){return M(e,!1)}function Ps(e){let r=M(e,!0);if(typeof r.organization_id!=="string")return R("Reason returned an invalid Device enrollment.");return{...r,organization_id:r.organization_id}}function Ts(e){if(!a(e)||typeof e.server_time!=="string"||typeof e.drain!=="boolean")return R("Reason returned an invalid Device heartbeat.");return{server_time:e.server_time,drain:e.drain,...U(e),...typeof e.update_policy==="string"||e.update_policy===null?{update_policy:e.update_policy}:{},...typeof e.supported_protocol_version==="number"?{supported_protocol_version:e.supported_protocol_version}:{},...ne(e.latest_cli_versions),...e.hands_prespawn===!0?{hands_prespawn:!0}:{}}}var te=["account_root_metadata_supported","workspace_root_metadata_supported","account_root_path_supported","home_contained_roots_supported","root_paths_supported","startup_supported"];function U(e){return Object.fromEntries(te.filter((r)=>e[r]===!0).map((r)=>[r,!0]))}function Rs(e){if(!a(e))return;try{return{...No(e),...U(e)}}catch{return}}function ne(e){if(!a(e))return{};let r={};for(let i of K){let l=e[i];if(typeof l==="string"&&/^(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})$/.test(l))r[i]=l}return Object.keys(r).length>0?{latest_cli_versions:r}:{}}function Os(e){if(!a(e)||!Array.isArray(e.roots)||!e.roots.every(H))return R("Reason returned an invalid Device root sync.");return{roots:e.roots}}function Is(e){if(!a(e)||e.user_id!==void 0&&typeof e.user_id!=="string"||typeof e.organization_id!=="string"||typeof e.organization_name!=="string"||typeof e.organization_slug!=="string")return R("Reason returned an invalid Device identity.");return{...typeof e.user_id==="string"?{user_id:e.user_id}:{},organization_id:e.organization_id,organization_name:e.organization_name,organization_slug:e.organization_slug}}function Ds(e){if(!a(e)||e.disconnected!==!0)return R("Reason did not disconnect this Device.");let r=e.sessions_moved;return typeof r==="number"&&Number.isSafeInteger(r)&&r>=0?{disconnected:!0,sessions_moved:r}:{disconnected:!0}}function Ns(e){if(a(e)&&e.ok===!0&&typeof e.expires==="number")return{ok:!0,expires:e.expires};if(a(e)&&e.ok===!1&&typeof e.error==="string")return{ok:!1,error:e.error};return R("Reason did not answer the local login hand-over.")}function Ls(e){if(!a(e)||e.accepted!==!0)return R("Reason did not accept the Device lifecycle event.");return{accepted:!0}}function re(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function Ms(e,r=ut){if(!a(e)||typeof e.operation_id!=="string"||typeof e.attempt_id!=="string"||typeof e.attempt_token!=="string"||!/^(?:reason|ara)_attempt_/.test(e.attempt_token)||typeof e.lease_until!=="string"||typeof e.run_id!=="string"||typeof e.root_id!=="string"||e.owner!==void 0&&!P(e.owner)||!Q(e.capability,r)||!a(e.payload)||e.protocol_version!==Ge||re(e.payload)>Ce||e.authority!==void 0&&!C(e.authority)||e.local_github_authority!==void 0&&!ie.safeParse(e.local_github_authority).success||e.capability==="github.local.v1"&&!ie.safeParse(e.local_github_authority).success||e.recording_authority!==void 0&&!v(e.recording_authority)||e.capability==="browser.recording.v1"&&(!v(e.recording_authority)||!P(e.owner))||e.capability!=="browser.recording.v1"&&e.recording_authority!==void 0)return R("Reason returned an invalid Device operation claim.");let i={operation_id:e.operation_id,attempt_id:e.attempt_id,attempt_token:e.attempt_token,lease_until:e.lease_until,run_id:e.run_id,root_id:e.root_id,capability:e.capability,payload:e.payload,...C(e.authority)?{authority:e.authority}:{},...v(e.recording_authority)?{recording_authority:Object.freeze({...e.recording_authority})}:{},...e.local_github_authority!==void 0?{local_github_authority:ie.parse(e.local_github_authority)}:{},...e.capability==="hands.connect"&&a(e.environment)&&a(e.environment.payload)&&C(e.environment.authority)?{environment:{payload:e.environment.payload,authority:e.environment.authority}}:{},protocol_version:Ge};if(e.owner!==void 0)i.owner=Object.freeze({...e.owner});return i}function $s(e){if(!a(e)||typeof e.lease_until!=="string"||!Array.isArray(e.controls)||!e.controls.every(ee)||!Number.isInteger(e.next_control_seq)||Number(e.next_control_seq)<0)return R("Reason returned an invalid Device operation heartbeat.");return{lease_until:e.lease_until,controls:e.controls,next_control_seq:Number(e.next_control_seq)}}function Bs(e){if(!a(e)||!Number.isInteger(e.next_event_seq)||Number(e.next_event_seq)<0||typeof e.duplicate!=="boolean"||!Number.isInteger(e.accepted_count)||Number(e.accepted_count)<0)return R("Reason returned an invalid Device operation event result.");return{next_event_seq:Number(e.next_event_seq),duplicate:e.duplicate,accepted_count:Number(e.accepted_count)}}function Fs(e){if(!a(e)||!a(e.payload)||!C(e.authority))return R("Reason returned an invalid Device environment delivery.");return{payload:e.payload,authority:e.authority}}function ae(e){return e==="succeeded"||e==="failed"||e==="cancelled"||e==="expired"}function js(e){if(!a(e)||!ae(e.status)||typeof e.idempotent!=="boolean")return R("Reason returned an invalid Device operation completion.");return{status:e.status,idempotent:e.idempotent}}
42
- export{ke,Vt,$n,lt,ho,ie,fo,mo,Ve,ut,Ge,Ce,vs,Ss,Es,Bn,xs,Vr,Fn,dt,Ae,pt,jn,Un,Hn,qn,zn,Wn,Vn,Gn,Kn,Jn,Zn,Xn,Yn,Qn,ei,ti,pe,X,Pe,q,ri,ni,ii,Y,oi,si,ai,ci,li,ht,ui,ks,Gt,di,Cs,No,As,Ps,Ts,Rs,Os,Is,Ds,Ns,Ls,Ms,$s,Bs,Fs,js};
@@ -1,5 +0,0 @@
1
- // @bun
2
- import{C}from"./vm-hands-entry-lite-t7an5zg2.js";import{jr}from"./vm-hands-entry-lite-2hvbgp1n.js";import{rt}from"./vm-hands-entry-lite-1rrb66r9.js";import{a}from"./vm-hands-entry-lite-89z488gz.js";import{I}from"./vm-hands-entry-lite-9ay6f56v.js";import{randomUUID as f}from"crypto";import{chmodSync as U,closeSync as h,constants as g,existsSync as me,fstatSync as F,lstatSync as R,mkdirSync as B,openSync as G,readFileSync as Y,readdirSync as z,readlinkSync as J,realpathSync as x,renameSync as _,rmSync as p,statSync as K,symlinkSync as _t,unlinkSync as M,writeFileSync as L}from"fs";import{basename as vt,dirname as N,isAbsolute as fe,join as c,relative as ge,resolve as b,sep as _e}from"path";import{createRequire as H}from"module";var q=1,j=1,ye=128,ve=65536;var he=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;var P=/^[a-z0-9_.-]{1,80}$/,be=64,Ee="so.ara.device-broker",Me=[Ee,"com.reasonmachines.device-broker"],Pt=jr(Me);var we=["service.install_started","service.install_completed","service.install_failed","service.launcher_adopted","service.launcher_conflict","service.started","service.reconnecting","service.reconnected","service.idle_sleep_held","service.idle_sleep_released","service.idle_sleep_failed","service.start_failed","service.stopped","service.exit_failed","service.singleton_rejected","credential.migration_started","credential.migration_completed","credential.migration_failed","credential.store_started","credential.store_completed","credential.store_failed","credential.delete_started","credential.delete_completed","credential.delete_failed","update.check_started","update.not_available","update.download_started","update.downloaded","update.verified","update.activated","update.rollback","update.failed","executor.update.check_started","executor.update.not_available","executor.update.download_started","executor.update.downloaded","executor.update.verified","executor.update.activated","executor.update.rollback","executor.update.failed","identity.refresh_completed","identity.refresh_failed","update.device_moved","update.components_installed","update.deferred","update.deferral_expired","worker.previous_exit","worker.capabilities_withheld","identity.computer_use_unavailable"];function X(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function W(e,t,n=[]){let r=new Set([...t,...n]);return t.every((i)=>(i in e))&&Object.keys(e).every((i)=>r.has(i))}function E(e){return typeof e==="string"&&he.test(e)}function Z(e){return typeof e==="string"&&!Number.isNaN(Date.parse(e))&&new Date(e).toISOString()===e}function S(e){B(e,{recursive:!0,mode:448}),U(e,448)}function Re(e,t){S(N(e));let n=`${e}.${process.pid}.${f()}.tmp`;try{L(n,t,{mode:384,flag:"wx"}),U(n,384),_(n,e)}finally{if(me(n))M(n)}}function Go(e={}){if((e.platform??process.platform)!=="darwin")throw new rt("unsupported_platform","The managed Reason runtime is currently available only on macOS.");let n=e.environment??process.env,r=C(n,"REASON_CLI_CHANNEL")==="staging",i=r?C(n,"REASON_MANAGED_RUNTIME_ROOT")?.trim():void 0,o=e.root!==void 0||Boolean(i&&fe(i))?null:c(e.home??a(),"Library","Application Support"),d=e.root??(o?c(o,r?"Reason Staging":"Reason","CLI"):i);return{executableName:"reason",root:d,...o?{legacyRoot:c(o,"Ara",...r?["staging","runtime"]:["runtime"])}:{},versions:c(d,"versions"),current:c(d,"current"),previous:c(d,"previous"),brokerLock:c(d,"broker.lock"),transitionLock:c(d,"transition.lock"),lifecycleEvents:c(d,"lifecycle-events")}}function Ko(e){let t=e.legacyRoot;if(!t)return null;return{root:t,versions:c(t,"versions"),current:c(t,"current"),previous:c(t,"previous"),brokerLock:c(t,"broker.lock"),transitionLock:c(t,"transition.lock"),lifecycleEvents:c(t,"lifecycle-events")}}function pe(e,t){let n;try{if(!R(e).isSymbolicLink())return null;n=J(e)}catch{return null}let r=n.match(/^versions\/(\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?)\/(ara|Reason|reason)$/);return r&&(r[2]==="ara"||r[2]===t)?r[1]:null}function Jo(e){return pe(e.current,e.executableName)}function D(e,t,n){let i=ge(t,e).split(_e);return i.length===2&&E(i[0])&&(i[1]==="ara"||n!==void 0&&i[1]===n)?i[0]:null}function Le(e,t){try{return R(t).isSymbolicLink()&&b(N(t),J(t))===b(e.current)}catch{return!1}}function Zo(e,t=process.execPath){try{return D(x(t),x(e.versions),e.executableName)!==null}catch{let n=b(t);return n===b(e.current)||Le(e,n)||D(n,b(e.versions),e.executableName)!==null}}function Ae(e){return X(e)&&W(e,["schema_version","pid","nonce","started_at","runtime_version"])&&e.schema_version===q&&typeof e.pid==="number"&&Number.isSafeInteger(e.pid)&&e.pid>0&&typeof e.nonce==="string"&&/^[0-9a-f-]{36}$/.test(e.nonce)&&Z(e.started_at)&&E(e.runtime_version)}function Q(e,t){try{let n=R(e);if(!n.isDirectory()||!I(n))return null;let r=G(c(e,t),g.O_RDONLY|g.O_NOFOLLOW|g.O_NONBLOCK);try{let i=F(r);if(!i.isFile()||i.nlink!==1||!I(i)||i.size>4096)return null;return Y(r,"utf8")}finally{h(r)}}catch{return null}}function A(e){try{let t=JSON.parse(Q(e,"owner.json")??"null");return Ae(t)?t:null}catch{return null}}function ee(e){try{return process.kill(e,0),!0}catch(t){return!(t instanceof Error&&("code"in t)&&t.code==="ESRCH")}}var O="lease",Ne=2,Se=4,y;function ke(){if(y!==void 0)return y;if(y=null,process.platform!=="linux"&&process.platform!=="darwin")return null;let e;try{e=H(import.meta.url)("bun:ffi")}catch{return null}let t=process.platform==="darwin"?"__error":"__errno_location",n=process.platform==="darwin"?["/usr/lib/libSystem.B.dylib"]:["libc.so.6",`libc.musl-${process.arch==="arm64"?"aarch64":"x86_64"}.so.1`];for(let r of n)try{let i=e.dlopen(r,{flock:{args:[e.FFIType.i32,e.FFIType.i32],returns:e.FFIType.i32},[t]:{args:[],returns:e.FFIType.ptr}}),s=i.symbols[t]();if(s===null)continue;return y={flock:(o,d)=>i.symbols.flock(o,d),errno:()=>e.read.i32(s),wouldBlock:process.platform==="darwin"?35:11},y}catch{}return null}var v,Ie=3221225472,Te=4,xe=128,Pe=32;function De(e){if(v===void 0){v=null;try{let s=H(import.meta.url)("bun:ffi"),{FFIType:o}=s;v={kernel:s.dlopen("kernel32.dll",{CreateFileW:{args:[o.ptr,o.u32,o.u32,o.ptr,o.u32,o.u32,o.ptr],returns:o.i64_fast},CloseHandle:{args:[o.i64_fast],returns:o.i32},GetLastError:{args:[],returns:o.u32}}).symbols,ptr:(l)=>s.ptr(l)}}catch{return null}}if(!v)return null;let{kernel:t,ptr:n}=v,r=Buffer.from(`${e}\x00`,"utf16le"),i=t.CreateFileW(n(r),Ie,0,null,Te,xe,null);if(Number(i)===-1)return t.GetLastError()===Pe?"busy":null;return{release:()=>{t.CloseHandle(i)}}}function Oe(e){if(process.platform==="win32")return De(`${e}.lease`);let t=ke();if(!t)return null;let n=G(`${e}.lease`,g.O_RDWR|g.O_CREAT|g.O_NOFOLLOW,384);try{let r=F(n);if(!r.isFile()||r.nlink!==1||!I(r))return h(n),"busy";if(t.flock(n,Ne|Se)===0)return{release:()=>h(n)};let i=t.errno();return h(n),i===t.wouldBlock?"busy":null}catch(r){throw h(n),r}}function Xo(e){S(N(e.path));let t=Oe(e.path);if(t==="busy")return{acquired:!1,owner:A(e.path),recoveredStaleOwner:!1};let n=t!==null;try{let r=Ce(e,t);if(r.acquired)n=!1;return r}finally{if(n)t.release()}}function Ce(e,t){let n=e.alive??ee,r=!1;for(let i=0;i<4;i+=1){let s={schema_version:q,pid:e.pid??process.pid,nonce:e.nonce?.()??f(),started_at:(e.now?.()??new Date).toISOString(),runtime_version:e.runtimeVersion},o=`${e.path}.init-${process.pid}-${f()}`,d=!1;try{if(B(o,{mode:448}),L(c(o,"owner.json"),`${JSON.stringify(s)}
3
- `,{mode:384,flag:"wx"}),t!==null)L(c(o,O),`flock
4
- `,{mode:384,flag:"wx"});e.beforePublish?.();try{throw R(e.path),Object.assign(Error("Managed runtime lock exists."),{code:"EEXIST"})}catch(m){if(m.code!=="ENOENT")throw m}_(o,e.path),d=!0;let l=!1;return{acquired:!0,owner:s,recoveredStaleOwner:r,release(){if(l)return;if(l=!0,A(e.path)?.nonce===s.nonce)p(e.path,{recursive:!0,force:!0});t?.release()}}}catch(l){let m=l.code;if(!["EEXIST","ENOTEMPTY"].includes(m??""))throw l;let u=A(e.path),re=(e.now?.()??new Date).getTime(),ie=u&&e.staleAfterMs!==void 0?re-Date.parse(u.started_at)<e.staleAfterMs:!1,ae=u!==null&&!(t!==null&&Q(e.path,O)!==null)&&n(u.pid);if(!u||ae||ie)return{acquired:!1,owner:u,recoveredStaleOwner:!1};let k=`${e.path}.stale-${process.pid}-${f()}`;try{_(e.path,k),p(k,{recursive:!0,force:!0}),r=!0}catch(T){let oe=T.code;if(!["ENOENT","EEXIST"].includes(oe??""))throw T}}finally{if(!d)p(o,{recursive:!0,force:!0})}}throw new rt("lock_unavailable","Could not acquire the managed Reason runtime lock.")}function te(e){return X(e)&&W(e,["schema_version","event_id","occurred_at","event","runtime_version"],["from_version","to_version","reason_code","duration_ms","attempt_count","retry_in_ms","capabilities"])&&e.schema_version===j&&typeof e.event_id==="string"&&/^[0-9a-f-]{36}$/.test(e.event_id)&&Z(e.occurred_at)&&typeof e.event==="string"&&we.includes(e.event)&&E(e.runtime_version)&&(e.from_version===void 0||E(e.from_version))&&(e.to_version===void 0||E(e.to_version))&&(e.reason_code===void 0||typeof e.reason_code==="string"&&P.test(e.reason_code))&&(e.duration_ms===void 0||typeof e.duration_ms==="number"&&Number.isSafeInteger(e.duration_ms)&&e.duration_ms>=0&&e.duration_ms<=86400000)&&(e.attempt_count===void 0||typeof e.attempt_count==="number"&&Number.isSafeInteger(e.attempt_count)&&e.attempt_count>=1&&e.attempt_count<=1e5)&&(e.retry_in_ms===void 0||typeof e.retry_in_ms==="number"&&Number.isSafeInteger(e.retry_in_ms)&&e.retry_in_ms>=0&&e.retry_in_ms<=30000)&&(e.capabilities===void 0||Array.isArray(e.capabilities)&&e.capabilities.length<=be&&e.capabilities.every((t)=>typeof t==="string"&&P.test(t)))}var Ve=/^(\d{22}-[0-9a-f-]{36}\.json)$/,Ue=/^(\d{22}-[0-9a-f-]{36}\.json)\.sending-(\d+)-[0-9a-f-]{36}$/,Fe=300000,w=0n;function Be(e){let t=BigInt(new Date(e.occurred_at).getTime())*1000000n;return w=t>w?t:w+1n,`${String(w).padStart(22,"0")}-${e.event_id}.json`}function ne(e){try{return z(e.lifecycleEvents).filter((t)=>Ve.test(t)).sort()}catch{return[]}}function V(e){try{let t=JSON.parse(Y(e,"utf8"));return te(t)?t:null}catch{return null}}function $e(e,t=ee,n=Date.now()){let r;try{r=z(e.lifecycleEvents)}catch{return}for(let i of r){let s=i.match(Ue);if(!s)continue;let o=c(e.lifecycleEvents,i),d=c(e.lifecycleEvents,s[1]),l=!t(Number(s[2]));if(!l)try{l=n-K(o).mtimeMs>=Fe}catch{continue}if(!l)continue;try{_(o,d)}catch(m){let u=m.code;if(u==="EEXIST")M(o);else if(u!=="ENOENT")throw m}}}function Ge(e){let n=ne(e).flatMap((i)=>{try{return[{name:i,size:K(c(e.lifecycleEvents,i)).size}]}catch{return[]}}),r=n.reduce((i,s)=>i+s.size,0);while(n.length>ye||r>ve){let i=n.shift();if(!i)break;try{M(c(e.lifecycleEvents,i.name)),r-=i.size}catch(s){if(s.code!=="ENOENT")throw s}}}function Yo(e,t,n={}){let r={schema_version:j,event_id:n.eventId?.()??f(),occurred_at:(n.now?.()??new Date).toISOString(),...t};if(!te(r))throw new rt("invalid_lifecycle_event","Managed runtime lifecycle event is invalid.");return S(e.lifecycleEvents),Re(c(e.lifecycleEvents,Be(r)),`${JSON.stringify(r)}
5
- `),Ge(e),r}async function Qo(e,t,n){$e(e);let r=0;for(let i of ne(e)){let s=c(e.lifecycleEvents,i);if(n){let l=V(s);if(!l||!n(l))continue}let o=`${s}.sending-${process.pid}-${f()}`;try{_(s,o)}catch(l){if(l.code==="ENOENT")continue;throw l}let d=V(o);if(!d){M(o);continue}try{await t(d),M(o),r+=1}catch{try{_(o,s)}catch(l){if(l.code!=="ENOENT")throw l}break}}return r}export{Go,Ko,Jo,Zo,Xo,Yo,Qo};
@@ -1,3 +0,0 @@
1
- // @bun
2
- import{resolve as s,sep as i}from"path";var Se=[[".ssh"],[".gnupg"],[".aws"],[".azure"],[".kube"],[".docker"],[".infisical"],[".password-store"],[".terraform.d"],[".config","ara"],[".config","reason"],[".config","gh"],[".config","gcloud"],[".config","infisical"],[".config","op"],[".config","1password"],[".config","pass"],[".local","share","keyrings"],["library","keychains"],["library","application support","so.ara.desktop"],["appdata","roaming","github cli"],["appdata","roaming","gcloud"],["appdata","roaming","microsoft","credentials"],["appdata","local","microsoft","credentials"],["appdata","roaming","microsoft","protect"],["appdata","roaming","1password"],["appdata","local","1password"],["appdata","roaming","microsoft","windows","start menu","programs","startup"],["documents","windowspowershell"],["documents","powershell"],["appdata","local","reason"]],Bt=[[".codex","config.toml"],[".cursor","mcp.json"],[".claude","settings.json"],[".claude","settings.local.json"],[".cargo","credentials"],[".cargo","credentials.toml"],[".gem","credentials"],[".config","git","config"],[".config","git","credentials"],[".config","pip","pip.conf"]],Ft=new Set([".bash_login",".bash_profile",".bashrc",".bunfig.toml",".claude.json",".env",".envrc",".git-credentials",".gitconfig",".mcp.json",".netrc",".npmrc",".profile",".pypirc",".terraformrc",".yarnrc",".yarnrc.yml",".zlogin",".zlogout",".zprofile",".zshenv",".zshrc","auth.json","credentials.json","credentials.tfrc.json","local-daemon.json","local-device.json","mcp.json"]),jt=[".key",".p12",".pfx",".pem"];function t(n,a){if(n.length<a.length)return!1;for(let r=0;r<=n.length-a.length;r+=1)if(a.every((o,e)=>n[r+e]===o))return!0;return!1}function E(n){let a=s(n).split(i).filter(Boolean).map((o)=>o.toLowerCase());if(Se.some((o)=>t(a,o)))return!0;if(Bt.some((o)=>t(a,o)))return!0;let r=a.at(-1)??"";return Ft.has(r)||r.startsWith(".env.")||jt.some((o)=>r.endsWith(o))}
3
- export{Se,Bt,Ft,jt,E};
@@ -1,3 +0,0 @@
1
- // @bun
2
- function _e(n){return typeof n==="object"&&n!==null&&!Array.isArray(n)}
3
- export{_e};
@@ -1,5 +0,0 @@
1
- // @bun
2
- import{g,$r,it,ve}from"./vm-hands-entry-lite-ckv17tn8.js";import{Vi}from"./vm-hands-entry-lite-1rrb66r9.js";import{a}from"./vm-hands-entry-lite-89z488gz.js";import{t,i,s,n}from"./vm-hands-entry-lite-907pa7f9.js";import{createHmac as bt,createPublicKey as me,randomBytes as mt,randomUUID as he,verify as Se}from"crypto";import{chmodSync as L,existsSync as z,mkdirSync as Ie,readFileSync as ke,realpathSync as St,renameSync as De,statSync as kt,unlinkSync as Le,writeFileSync as we}from"fs";import{basename as Lt,dirname as w,isAbsolute as Ae,join as m,resolve as wt}from"path";var $e=[Object.freeze({family:"ara",channel:"stable",applicationId:"so.ara.desktop"}),Object.freeze({family:"ara",channel:"staging",applicationId:"so.ara.desktop.staging"}),Object.freeze({family:"reason",channel:"stable",applicationId:"com.reasonmachines.desktop"}),Object.freeze({family:"reason",channel:"staging",applicationId:"com.reasonmachines.desktop.staging"})];var Z="REASON_DESKTOP_RUNTIME",q="REASON_DESKTOP_RUNTIME_CHANNEL",Q="REASON_DESKTOP_RUNTIME_INSTANCE_ID",ee="REASON_DESKTOP_RUNTIME_WORKSPACE_SCOPE",We={[Z]:"ARA_DESKTOP_RUNTIME",[q]:"ARA_DESKTOP_RUNTIME_CHANNEL",[Q]:"ARA_DESKTOP_RUNTIME_INSTANCE_ID",[ee]:"ARA_DESKTOP_RUNTIME_WORKSPACE_SCOPE"};function x(r){if(r===void 0)return;if(!/^[a-f0-9]{64}$/.test(r))throw Error("Invalid desktop workspace scope.");return r}import{chmodSync as h,existsSync as f,mkdirSync as S,readFileSync as N,realpathSync as te,renameSync as ne,unlinkSync as I,writeFileSync as k}from"fs";import{createPrivateKey as ie,createPublicKey as re,generateKeyPairSync as oe,randomUUID as ae,sign as se}from"crypto";import{createRequire as ce}from"module";import{homedir as le,platform as T}from"os";import{dirname as de,join as y}from"path";var O=1,ue=16384,v=65536,pe=128,ge=128,U=65536;class l extends Error{code;nativeStatus;constructor(r,e){super(`Reason Device proof boundary failed (${r}).${e===void 0?"":` Native status: ${e}.`}`);this.code=r;this.nativeStatus=e;this.name="LocalCredentialBoundaryError"}}var D=null;function F(){if(!D)try{D=ce(import.meta.url)("bun:ffi")}catch{throw new l("native_boundary_unavailable")}return D}function fe(r){if(typeof r!=="string")return null;try{let e=new URL(r);if(e.protocol!=="https:"&&e.hostname!=="127.0.0.1"&&e.hostname!=="localhost"&&e.hostname!=="[::1]"&&e.hostname!=="::1")return null;return e.origin}catch{return null}}function ye(r){if(!r||typeof r!=="object"||Array.isArray(r))throw new l("invalid_credential_record");let e=r,o=fe(e.apiOrigin);if(e.version!==O||!o||typeof e.orgId!=="string"||e.orgId.length<1||e.orgId.length>160||typeof e.deviceId!=="string"||e.deviceId.length<1||e.deviceId.length>160||typeof e.credential!=="string"||!/^(?:reason|ara)_dev_/.test(e.credential)||e.credential.length>4096)throw new l("invalid_credential_record");return{version:O,apiOrigin:o,orgId:e.orgId,deviceId:e.deviceId,credential:e.credential}}function Rt(r=process.execPath){let e=r;try{e=te(r)}catch{}return Vi(de(e))}function u(r){return F().ptr(r)}function _e(r){if(!f(r))throw new l("native_boundary_unavailable");let{dlopen:e,FFIType:o}=F();try{return e(r,{ara_device_configure_scope:{args:[o.ptr,o.u64],returns:o.i32},ara_device_key_load_public:{args:[o.ptr,o.u64,o.ptr],returns:o.i32},ara_device_key_create_fresh_public:{args:[o.ptr,o.u64,o.ptr],returns:o.i32},ara_device_key_sign:{args:[o.ptr,o.u64,o.ptr,o.u64,o.ptr],returns:o.i32},ara_device_key_is_non_extractable:{args:[o.ptr],returns:o.i32},ara_device_key_delete:{args:[o.ptr],returns:o.i32},ara_device_binding_read:{args:[o.ptr,o.u64,o.ptr],returns:o.i32},ara_device_binding_create:{args:[o.ptr,o.u64],returns:o.i32},ara_device_binding_update:{args:[o.ptr,o.u64],returns:o.i32},ara_device_binding_delete:{args:[o.ptr],returns:o.i32},ara_device_keychain_read:{args:[o.ptr,o.u64,o.ptr],returns:o.i32},ara_device_keychain_delete:{args:[o.ptr],returns:o.i32}})}catch(c){if(c instanceof l)throw c;throw new l("native_boundary_unavailable")}}function K(r){return Buffer.from(r).toString("base64url")}function _(r){if(typeof r!=="string"||!/^[A-Za-z0-9_-]{87}$/.test(r))return!1;try{let e=Buffer.from(r,"base64url");return e.byteLength===65&&e[0]===4}catch{return!1}}function M(r){if(r.byteLength<8||r.byteLength>72||r[0]!==48)return!1;let e=r[1];return e!==void 0&&e<128&&e+2===r.byteLength}class Fe{libraryPath;runtimePlatform;workspaceScope;library=null;constructor(r=Rt(),e=T(),o){this.libraryPath=r;this.runtimePlatform=e;this.workspaceScope=o;x(o)}symbols(){if(this.runtimePlatform!=="darwin")throw new l("unsupported_platform");this.library??=_e(this.libraryPath);let r=new TextEncoder().encode(this.workspaceScope??""),e=this.library.symbols.ara_device_configure_scope(u(r.length?r:new Uint8Array(1)),BigInt(r.length));if(e!==0)throw new l("native_boundary_unavailable",e);return this.library.symbols}publicKey(r){let e=new Uint8Array(pe),o=new BigUint64Array(1),c=r==="load"?this.symbols().ara_device_key_load_public(u(e),BigInt(e.byteLength),u(o)):this.symbols().ara_device_key_create_fresh_public(u(e),BigInt(e.byteLength),u(o));if(c!==0)throw new l(r==="load"?"proof_key_read_failed":"proof_key_generation_failed",c);let d=Number(o[0]);if(!Number.isSafeInteger(d)||d!==65)throw new l("invalid_public_key");let p=K(e.subarray(0,d));if(!_(p))throw new l("invalid_public_key");return p}loadPublicKey(){return this.publicKey("load")}createFreshPublicKey(){return this.publicKey("create_fresh")}sign(r){if(r.byteLength<1||r.byteLength>U)throw new l("proof_sign_failed");let e=new Uint8Array(ge),o=new BigUint64Array(1),c=this.symbols().ara_device_key_sign(u(r),BigInt(r.byteLength),u(e),BigInt(e.byteLength),u(o));if(c!==0)throw new l("proof_sign_failed",c);let d=Number(o[0]);if(!Number.isSafeInteger(d)||d<1||d>e.byteLength)throw new l("invalid_signature");let p=e.subarray(0,d);if(!M(p))throw new l("invalid_signature");return K(p)}privateKeyIsNonExtractable(){let r=new Uint8Array(1),e=this.symbols().ara_device_key_is_non_extractable(u(r));if(e!==0||r[0]!==1)throw new l("proof_key_read_failed",e);return!0}deleteKey(){let r=new Uint8Array(1),e=this.symbols().ara_device_key_delete(u(r));if(e!==0)throw new l("proof_key_delete_failed",e);return r[0]===1}loadBinding(){let r=new Uint8Array(v),e=new BigUint64Array(1),o=this.symbols().ara_device_binding_read(u(r),BigInt(r.byteLength),u(e));if(o===1)return null;if(o!==0)throw new l("binding_read_failed",o);let c=Number(e[0]);if(!Number.isSafeInteger(c)||c<1||c>r.byteLength)throw new l("invalid_binding");return r.slice(0,c)}createBinding(r){if(r.byteLength<1||r.byteLength>v)throw new l("invalid_binding");let e=this.symbols().ara_device_binding_create(u(r),BigInt(r.byteLength));if(e!==0)throw new l("binding_create_failed",e)}updateBinding(r){if(r.byteLength<1||r.byteLength>v)throw new l("invalid_binding");let e=this.symbols().ara_device_binding_update(u(r),BigInt(r.byteLength));if(e!==0)throw new l("binding_update_failed",e)}deleteBinding(){let r=new Uint8Array(1),e=this.symbols().ara_device_binding_delete(u(r));if(e!==0)throw new l("binding_delete_failed",e);return r[0]===1}loadLegacyCredential(){let r=new Uint8Array(ue),e=new BigUint64Array(1),o=this.symbols().ara_device_keychain_read(u(r),BigInt(r.byteLength),u(e));if(o===1)return null;if(o!==0)throw new l("legacy_credential_read_failed",o);let c=Number(e[0]);if(!Number.isSafeInteger(c)||c<1||c>r.byteLength)throw new l("invalid_credential_record");try{let d=new TextDecoder("utf-8",{fatal:!0}).decode(r.subarray(0,c));return ye(JSON.parse(d))}catch(d){if(d instanceof l)throw d;throw new l("invalid_credential_record")}}deleteLegacyCredential(){let r=new Uint8Array(1),e=this.symbols().ara_device_keychain_delete(u(r));if(e!==0)throw new l("legacy_credential_delete_failed",e);return r[0]===1}}function C(r){let e=r.export({format:"jwk"});if(e.crv!=="P-256"||typeof e.x!=="string"||typeof e.y!=="string")throw new l("invalid_public_key");let o=Buffer.from(e.x,"base64url"),c=Buffer.from(e.y,"base64url");if(o.byteLength!==32||c.byteLength!==32)throw new l("invalid_public_key");let d=Buffer.concat([Buffer.of(4),o,c]).toString("base64url");if(!_(d))throw new l("invalid_public_key");return d}function be(){let r=process.env.XDG_CONFIG_HOME?.trim()||y(le(),".config");it(r);let e=y(r,"ara");return $r(e)?e:y(r,"reason")}class Sr{directory;constructor(r=be()){this.directory=r}keyPath(){return y(this.directory,"local-device.key")}bindingPath(){return y(this.directory,"local-device.binding")}loadPrivateKeyObject(){let r=this.keyPath();if(!f(r))throw new l("proof_key_read_failed");try{let e=N(r,"utf8");return ie({key:e,format:"pem"})}catch{throw new l("proof_key_read_failed")}}loadPublicKey(){let r=this.loadPrivateKeyObject(),e=re(r);return C(e)}createFreshPublicKey(){S(this.directory,{recursive:!0,mode:448});let{privateKey:r,publicKey:e}=oe("ec",{namedCurve:"P-256"}),o=r.export({type:"pkcs8",format:"pem"}),c=this.keyPath();return k(c,o,{mode:384}),h(c,384),C(e)}sign(r){if(r.byteLength<1||r.byteLength>U)throw new l("proof_sign_failed");let e=this.loadPrivateKeyObject(),o;try{o=se("sha256",r,e)}catch{throw new l("proof_sign_failed")}if(!M(o))throw new l("invalid_signature");return o.toString("base64url")}privateKeyIsNonExtractable(){return!1}deleteKey(){let r=this.keyPath();if(!f(r))return!1;return I(r),!0}loadBinding(){let r=this.bindingPath();if(!f(r))return null;try{return new Uint8Array(N(r))}catch{return null}}createBinding(r){if(r.byteLength<1||r.byteLength>v)throw new l("invalid_binding");S(this.directory,{recursive:!0,mode:448});let e=this.bindingPath();if(f(e))throw new l("binding_create_failed");k(e,r,{mode:384}),h(e,384)}updateBinding(r){if(r.byteLength<1||r.byteLength>v)throw new l("invalid_binding");S(this.directory,{recursive:!0,mode:448});let e=this.bindingPath();if(!f(e))throw new l("binding_update_failed");let o=`${e}.${ae()}`;try{k(o,r,{mode:384,flag:"wx"}),h(o,384),ne(o,e)}finally{if(f(o))I(o)}}deleteBinding(){let r=this.bindingPath();if(!f(r))return!1;return I(r),!0}loadLegacyCredential(){return null}deleteLegacyCredential(){return!1}}function V(){return T()==="darwin"?new Fe:new Sr}var b=t().min(1).max(160).regex(/^[A-Za-z0-9._:-]+$/),B=i({id:b,kind:n("permission_denied"),operation:s(["bash","read","write","edit"]),provenance:s(["sandbox_policy","os_permission_unknown"]),occurredAt:t().datetime(),expiresAt:t().datetime(),sessionId:b,deviceId:b,organizationId:b}).strict();var A=4;var P="macos-keychain-p256-v1",Pe=1,Ee=`ARA-DEVICE-BINDING-V1
3
- `;function Re(r){return r===void 0||typeof r==="number"&&Number.isInteger(r)&&r>=1&&r<=4}function G(r,e=Date.now()){let o=B.safeParse(r);if(!o.success)return!1;let c=o.data,d=typeof c.occurredAt==="string"?Date.parse(c.occurredAt):NaN,p=typeof c.expiresAt==="string"?Date.parse(c.expiresAt):NaN;return c.kind==="permission_denied"&&["bash","read","write","edit"].includes(c.operation)&&["sandbox_policy","os_permission_unknown"].includes(c.provenance)&&Number.isFinite(d)&&d<=e&&p>e&&p>d&&p-d<=600000}function Ot(r,e,o=Date.now()){if(!r||!e||r.state!=="connected"||r.deviceId!==e.deviceId)return null;let c=Date.parse(r.lastHeartbeatAt??""),d=r.permissionRecovery;if(!(o-c>=0&&o-c<30000)||!G(d,o)||d.deviceId!==e.deviceId||d.organizationId!==e.orgId)return null;try{process.kill(r.pid,0)}catch{return null}return d}function H(r={},e=a()){let o=g({env:{...process.env,...r}}),c=r.XDG_CONFIG_HOME?.trim()||m(e,".config");return ve(c,...o==="staging"?["staging"]:[])}function Er(r={},e=a()){return m(H(r,e),"local-device.json")}function xe(r={},e=a()){return m(H(r,e),"local-daemon.json")}function Ne(r,e){Ie(w(r),{recursive:!0,mode:448}),L(w(r),448);let o=`${r}.${process.pid}.${he()}.tmp`;try{we(o,`${JSON.stringify(e,null,2)}
4
- `,{mode:384,flag:"wx"}),L(o,384),De(o,r),L(r,384)}finally{if(z(o))Le(o)}return r}function E(r){if(!z(r))return null;try{return JSON.parse(ke(r,"utf8"))}catch{return null}}function Oe(r){if(!Array.isArray(r))return null;let e=[];for(let o of r){if(!o||typeof o!=="object")return null;let c=o;if(typeof c.id!=="string"||typeof c.label!=="string"||typeof c.path!=="string"||typeof c.pathFingerprint!=="string"||!c.permissions||typeof c.permissions.read!=="boolean"||typeof c.permissions.write!=="boolean"||typeof c.permissions.execute!=="boolean"||typeof c.permissions.discover_environment!=="boolean"||typeof c.permissions.expose_mcp!=="boolean")return null;e.push({id:c.id,label:c.label,path:c.path,pathFingerprint:c.pathFingerprint,permissions:c.permissions})}return e}function J(r,e,o=[]){let c=Object.keys(r);return e.every((d)=>Object.hasOwn(r,d))&&c.every((d)=>e.includes(d)||o.includes(d))}function Ke(r){if(typeof r!=="string")return null;try{let e=new URL(r);if(e.protocol!=="https:"&&e.hostname!=="127.0.0.1"&&e.hostname!=="localhost")return null;return e.origin}catch{return null}}function Y(r){if(!r||typeof r!=="object"||Array.isArray(r))return null;let e=r,o=Oe(e.roots),c=Ke(e.apiOrigin);if(!c||typeof e.orgId!=="string"||typeof e.deviceId!=="string"||typeof e.displayName!=="string"||typeof e.registeredAt!=="string"||!Re(e.handsSlots)||e.worker!==void 0&&(!e.worker||!/^[a-f0-9]{64}$/.test(e.worker.configDigest)||!["persistent","ephemeral"].includes(e.worker.lifetime)||!Number.isFinite(Date.parse(e.worker.expiresAt)))||!o)return null;return{apiOrigin:c,orgId:e.orgId,deviceId:e.deviceId,displayName:e.displayName,registeredAt:e.registeredAt,...e.handsSlots!==void 0?{handsSlots:e.handsSlots}:{},...e.worker!==void 0?{worker:e.worker}:{},roots:o}}function Ce(r){return{version:A,apiOrigin:r.apiOrigin,orgId:r.orgId,deviceId:r.deviceId,devicePublicKey:r.devicePublicKey,displayName:r.displayName,registeredAt:r.registeredAt,...r.handsSlots!==void 0?{handsSlots:r.handsSlots}:{},...r.worker!==void 0?{worker:r.worker}:{},roots:r.roots.map((e)=>({id:e.id,label:e.label,path:e.path,pathFingerprint:e.pathFingerprint,permissions:{read:e.permissions.read,write:e.permissions.write,execute:e.permissions.execute,discover_environment:e.permissions.discover_environment,expose_mcp:e.permissions.expose_mcp}})),credentialStorage:P}}function X(r){if(!r||typeof r!=="object"||Array.isArray(r))return null;let e=r;if(!J(e,["version","apiOrigin","orgId","deviceId","devicePublicKey","displayName","registeredAt","roots","credentialStorage"],["handsSlots","worker"]))return null;let o=Y(e);if(!o||e.version!==A||e.credentialStorage!==P||!_(e.devicePublicKey))return null;return{version:A,...o,devicePublicKey:e.devicePublicKey,credentialStorage:P}}function Te(r){return new TextEncoder().encode(`${Ee}${JSON.stringify(Ce(r))}`)}function Ue(r){let e=Buffer.from(r,"base64url");return me({format:"jwk",key:{kty:"EC",crv:"P-256",x:e.subarray(1,33).toString("base64url"),y:e.subarray(33,65).toString("base64url")}})}function Me(r){let e;try{e=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(r))}catch{throw new l("invalid_binding")}if(!e||typeof e!=="object"||Array.isArray(e))throw new l("invalid_binding");let o=e;if(!J(o,["version","state","signature"])||o.version!==Pe||typeof o.signature!=="string"||!/^[A-Za-z0-9_-]{10,128}$/.test(o.signature))throw new l("invalid_binding");let c=X(o.state);if(!c)throw new l("invalid_binding");let d=!1;try{d=Se("sha256",Te(c),Ue(c.devicePublicKey),Buffer.from(o.signature,"base64url"))}catch{d=!1}if(!d)throw new l("invalid_binding");return c}function je(r){let{credentialStorage:e,...o}=r;return o}function xr(r=Er(),e={}){let o=E(r),c=e.proofStore??e.credentialStore??V(),d=c.loadBinding();if(!d){if(o&&typeof o==="object"&&!Array.isArray(o)&&Ve(o))return null;if(o!==null)throw new l("invalid_binding");return null}let p=Me(d),W=c.loadPublicKey();if(c.privateKeyIsNonExtractable(),W!==p.devicePublicKey)throw new l("invalid_public_key");let R=X(o);if(e.repair!==!1&&(!R||JSON.stringify(R)!==JSON.stringify(p)))Ne(r,p);return je(p)}function Ve(r){let e=r,o=Y(r);if(!o)return null;if(e.version===2){if(typeof e.deviceCredential!=="string"||!/^(?:reason|ara)_dev_/.test(e.deviceCredential)||e.deviceCredential.length>4096)return null;return{state:o,credentialSource:"plaintext-v2"}}if(e.version!==3||e.credentialStorage!=="macos-keychain-v1"||"deviceCredential"in e)return null;return{state:o,credentialSource:"keychain-v3"}}function et(r=xe()){let e=E(r);if(!e||typeof e!=="object")return null;let o=e;if(o.version!==1||typeof o.pid!=="number"||!Number.isInteger(o.pid)||!["starting","connected","stopped","error"].includes(o.state??"")||typeof o.startedAt!=="string"||o.lastHeartbeatAt!==void 0&&typeof o.lastHeartbeatAt!=="string"||o.lastUsedAt!==void 0&&typeof o.lastUsedAt!=="string"||o.organizationId!==void 0&&typeof o.organizationId!=="string"||o.organizationName!==void 0&&typeof o.organizationName!=="string"||o.organizationSlug!==void 0&&typeof o.organizationSlug!=="string"||o.error!==void 0&&typeof o.error!=="string"||o.reconnectingSince!==void 0&&typeof o.reconnectingSince!=="string"||o.workspace!==void 0&&typeof o.workspace!=="string")return null;if(o.permissionRecovery!==void 0&&!G(o.permissionRecovery))delete o.permissionRecovery;return o}var It=1;function Be(r=Er()){return m(w(r),"local-device.proxy.json")}function j(r=Be()){let e=E(r);if(!e||typeof e!=="object"||Array.isArray(e))return null;let o=e;if(o.version!==It||typeof o.url!=="string"||o.url.length===0||o.caFile!==void 0&&(typeof o.caFile!=="string"||!Ae(o.caFile)))return null;return{version:It,url:o.url,...o.caFile?{caFile:o.caFile}:{}}}
5
- export{l,Rt,Fe,Sr,Ot,Er,xr,et,It,j};
@@ -1,3 +0,0 @@
1
- // @bun
2
- import{r}from"./vm-hands-entry-lite-qy9xg6em.js";import{readdirSync as g,readFileSync as S}from"fs";import{userInfo as b}from"os";var Yt="--vm-hands-op-runner-kind=person";function P(n){let a=new Set([n]),i=[];try{i=g("/proc")}catch{}for(let t of i){if(!/^\d+$/.test(t))continue;try{let c=S(`/proc/${t}/stat`,"utf8");if(Number(c.slice(c.lastIndexOf(")")+2).split(" ")[3])===n)a.add(Number(t))}catch{}}for(let t of a)try{process.kill(t,"SIGKILL")}catch{}}var k=(n)=>{let a=globalThis.Bun;if(!a)throw new r("pty_unavailable","Reason terminals require the Bun runtime.");let i=a.spawn({cmd:[n.shell,...n.args],cwd:n.cwd,env:{...n.environment,TERM:"xterm-256color"},terminal:{cols:n.cols,rows:n.rows,data:(s,l)=>n.onData(l)}}),t=i.terminal,c=()=>{P(i.pid);try{t?.close()}catch{}};if(!t)throw c(),new r("pty_unavailable","Reason could not allocate a pseudo-terminal.");return{write:(s)=>t.write(s),resize:(s,l)=>t.resize(s,l),kill:c,exited:i.exited.then((s)=>typeof s==="number"?s:null,()=>null)}};function _(){let n=(()=>{try{return b().username}catch{return}})();return{PATH:process.env.PATH,HOME:process.env.HOME,SHELL:process.env.SHELL,LANG:"C.UTF-8",...n?{USER:n,LOGNAME:n}:{}}}async function zo(){let[{executeLocalOperation:n,spawnCaptured:a},{runLocalPtySession:i},{configureDesktopAccount:t},{configureWorkerSandbox:c}]=await Promise.all([import("./local-capabilities-c04tbapa.js"),import("./local-pty-session-5f50sqq0.js"),import("./desktop-account-5v7x0ajx.js"),import("./worker-sandbox-smqj3mbe.js")]);c();let y=process.argv.includes(Yt),s=(p,e,m)=>a(p,e[0]==="-lic"?["-lc",...e.slice(1)]:e,m),l=(process.geteuid?.()??0)!==0,u=new Map,d=(p)=>{try{process.send?.(p)}catch{}};process.on("message",(p)=>{let e=p;if(e?.t==="cancel"){u.get(e.id)?.abort();return}if(e?.t!=="op")return;if(!l){d({t:"done",id:e.id,completion:{status:"failed",error_code:"vm_hands_payload_account_unavailable"}});return}let m=e.claim.capability;if(m==="pty.start"&&!y){d({t:"done",id:e.id,completion:{status:"failed",error_code:"capability_not_granted"}});return}let f=new AbortController;u.set(e.id,f);let w=m==="pty.start"?{runPtySession:(o)=>i(o,{spawnPty:k,environment:_(),loadProxy:()=>null})}:{worker:e.worker,...m==="exec.full"?{spawnFullControl:s}:{}};n(e.state,e.claim,{...w,signal:f.signal,emit:(o)=>{let{deliverySignal:h,...v}=o;d({t:"event",id:e.id,event:v})}}).then((o)=>d({t:"done",id:e.id,completion:o}),(o)=>d({t:"done",id:e.id,completion:{status:"failed",error_code:o&&typeof o==="object"&&"code"in o&&typeof o.code==="string"?o.code:"vm_hands_op_failed"}})).finally(()=>u.delete(e.id))}),process.on("disconnect",()=>process.exit(0)),await new Promise(()=>{})}
3
- export{Yt,zo};
@@ -1,3 +0,0 @@
1
- // @bun
2
- class r extends Error{code;constructor(a,o){super(o);this.code=a;this.name="LocalCapabilityError"}}
3
- export{r};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{nt,g,it}from"./vm-hands-entry-lite-ckv17tn8.js";import{chmodSync as Q,existsSync as C,mkdirSync as Z,readlinkSync as S,readFileSync as b,renameSync as nn,unlinkSync as tn,writeFileSync as en}from"fs";import{homedir as u}from"os";import{basename as _,dirname as h,isAbsolute as p,join as o,normalize as A,relative as O,resolve as N}from"path";var c=3,P=1,D=2,x=1,T=1,L="Reason may read and write files and run commands in this signed-in OS account, subject to saved restrictions and operating system permissions.",M="Reason may later execute on this computer inside a Reason sandbox, limited to folders explicitly attached by the user.",F=[M,"Ara may later execute on this computer inside an Ara sandbox, limited to folders explicitly attached by the user."];function B(n){return typeof n==="string"&&F.includes(n)}var U=["future_device","updates_only","cli_only"];function f(n){return typeof n==="string"&&U.some((t)=>t===n)}function V(n=process.env,t=u()){return n.XDG_CONFIG_HOME?.trim()||o(t,".config")}function Nr(n=process.env,t=u()){let r=g({env:n}),e=V(n,t);return o(e,it(e).state==="kept"?"ara":"reason",...r==="staging"?["staging"]:[],"installation.json")}function a(n){return typeof n==="string"&&n.trim().length>0}var K=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function z(n){return typeof n==="string"&&K.test(n)}function l(n){return a(n)&&p(n)&&A(n)===n}function y(n){if(!n||typeof n!=="object"||Array.isArray(n))return!1;let t=n;return l(t.path)&&(t.role==="launcher"&&(t.kind==="file"||t.kind==="symlink")||t.role==="worker_root"&&t.kind==="directory"||t.role==="alias"&&t.kind==="symlink"&&l(t.target))}function m(n){return n==="staging"?["reason-staging","ara-staging"]:["reason","ara"]}function Pn(n){let t=n.owned_paths.filter((e)=>e.role==="launcher").map((e)=>e.path),[r]=m(n.channel);return t.find((e)=>_(e)===r)??t[0]??null}function I(n){let[t,r]=m(n.channel==="staging"?"staging":"production"),e=[[t,r],[r,t]];return n.owned_paths?.every((i)=>i.role!=="alias"||n.installer==="shell"&&e.some(([s,R])=>i.path===o(n.install_dir,s)&&i.target===o(n.install_dir,R))&&n.owned_paths?.some((s)=>s.role==="launcher"&&s.path===i.target))??!1}function d(n,t){try{return N(h(n),S(n))===t}catch{return!1}}function Lr(n){let t=_(n),r=t==="ara"?"reason":t==="ara-staging"?"reason-staging":null;if(!r)return n;let e=o(h(n),r);return d(e,n)||d(n,e)?e:n}function w(n,t){let r=O(n,t);return r.length>0&&!r.startsWith("..")&&!p(r)}function E(n){if(n===null)return!0;if(!n||typeof n!=="object"||Array.isArray(n))return!1;let t=n;return(t.kind==="shell_profile"||t.kind==="windows_user_path")&&a(t.location)&&a(t.value)&&(typeof t.added_by_installer==="boolean"||typeof t.added_by_ara==="boolean")&&(t.added_by_installer===void 0||typeof t.added_by_installer==="boolean")&&(t.added_by_ara===void 0||typeof t.added_by_ara==="boolean")}function k(n,t){if(t===null)return n==="cli_only";if(!t||typeof t!=="object"||Array.isArray(t))return!1;let r=t;if(r.version!==x||!a(r.recorded_at))return!1;if(n==="future_device")return r.decision==="authorized"&&B(r.scope);return r.scope===null&&r.decision===(n==="updates_only"?"ask":"disabled")}function G(n){if(!n||typeof n!=="object"||Array.isArray(n))return null;let t=n;if(t.schema_version!==P||!nt.includes(t.channel)||t.install_method!=="curl"||t.installer!=="shell"&&t.installer!=="powershell"||!a(t.installed_at)||!a(t.version)||!a(t.target)||!l(t.install_dir)||!Array.isArray(t.owned_paths)||!t.owned_paths.every(y)||!t.owned_paths.every((r)=>w(t.install_dir,r.path))||!I(t)||!E(t.path_entry))return null;return{...t,schema_version:c,installation_id:null,background_mode:"cli_only",device_consent:null}}function j(n){if(!n||typeof n!=="object"||Array.isArray(n))return null;let t=n;if(t.schema_version!==D||!v(t)||!f(t.background_mode)||!k(t.background_mode,t.device_consent))return null;return{...t,schema_version:c,installation_id:null}}function v(n){return nt.includes(n.channel)&&(n.install_method==="curl"&&(n.installer==="shell"||n.installer==="powershell")||n.install_method==="desktop"&&n.installer==="desktop"&&Array.isArray(n.owned_paths)&&n.owned_paths.length===0&&n.path_entry===null)&&a(n.installed_at)&&a(n.version)&&a(n.target)&&l(n.install_dir)&&Array.isArray(n.owned_paths)&&n.owned_paths.every(y)&&n.owned_paths.every((t)=>w(n.install_dir,t.path))&&I(n)&&E(n.path_entry)}function H(n){let t=G(n);if(t)return t;let r=j(n);if(r)return r;if(!n||typeof n!=="object"||Array.isArray(n))return null;let e=n;if(e.schema_version!==c||!z(e.installation_id)||!v(e)||!f(e.background_mode)||!k(e.background_mode,e.device_consent)||e.desktop_account_access!==void 0&&(e.desktop_account_access===null||typeof e.desktop_account_access!=="object"||Array.isArray(e.desktop_account_access)||e.desktop_account_access.version!==T||e.desktop_account_access.scope!==L||!a(e.desktop_account_access.recorded_at)||!Number.isFinite(Date.parse(e.desktop_account_access.recorded_at))))return null;return e}function Tn(n=Nr()){if(!C(n))return null;try{return H(JSON.parse(b(n,"utf8")))}catch{return null}}export{Nr,Pn,Lr,Tn};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{Ht}from"./vm-hands-entry-lite-txn44020.js";var ct=Ht.version;export{ct};
@@ -1,3 +0,0 @@
1
- // @bun
2
- var Ht={name:"github-native-engineer-device-worker-production",version:"0.2.415",private:!0,type:"module",engines:{node:">=22",bun:">=1.3.0"},workspaces:["../../packages/runtime-distribution"],dependencies:{"@anthropic-ai/sandbox-runtime":"^0.0.73","@earendil-works/pi-tui":"1.0.0","@modelcontextprotocol/sdk":"^1.29.0","@reason/runtime-distribution":"workspace:*","playwright-core":"1.60.0",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.1",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:"^4.2.0",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{Ht};
@@ -1,3 +0,0 @@
1
- // @bun
2
- import{Ni,Li}from"./vm-hands-entry-lite-b885gwfh.js";function qo(o=process.platform){if(Ni(),o==="linux"||o==="win32")Li("strict")}
3
- export{qo};
@@ -1,5 +0,0 @@
1
- // @bun
2
- import{C}from"./vm-hands-entry-lite-t7an5zg2.js";import{g,Mr,Gi,ve}from"./vm-hands-entry-lite-ckv17tn8.js";import{t,o,d,u,i,Mo,Q,_,s,n}from"./vm-hands-entry-lite-907pa7f9.js";var J=/^(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})$/;function P(e){let r=typeof e==="string"?J.exec(e):null;return r?{major:Number(r[1]),minor:Number(r[2])}:null}var K=25,Le=i({machine:t().min(1).max(200),person:t().min(1).max(200),team:t().min(1).max(200),version:t().max(64).optional(),wait_seconds:o().int().min(0).max(K).optional()}),W=_("kind",[i({id:t(),kind:n("who"),all:d().optional()}),i({id:t(),kind:n("send"),to:t(),body:t(),from_name:t(),from_agent:t(),wake:d(),reply_to:t().max(100).optional(),notify:d().optional()})]),x=i({job:W.nullable(),retry_after_seconds:o().optional()}),V=i({address:t(),person:t(),machine:t(),agent:t(),repo:t().nullable(),branch:t().nullable(),status:t(),since:o().nullable(),doing:t().nullable(),worker:d(),tier:t().max(10).optional()}),Y=i({person:t(),machine:t(),online:d()}),X=i({team:t().nullable(),sessions:u(V).max(2000),machines:u(Y).max(500),all:d().optional()}),Z=i({address:t().max(300),state:t().max(40),note:t().max(500)}),Ne=Q([i({who:X}),i({sent:i({ids:u(t().max(100)).max(500),recipients:u(t().max(300)).max(500),from:t().max(300),deliveries:u(Z).max(500).optional()})}),i({error:t().min(1).max(2000)})]),ee=i({id:t().max(100),from:t().max(300),from_agent:t().max(100).nullable(),to:t().max(300),reply_to:t().max(100).nullable(),body:t().max(64000),sent_at:o()}),De=i({messages:u(ee).max(100)});import{randomBytes as ne}from"crypto";import{chmodSync as A,existsSync as U,lstatSync as te,mkdirSync as se,readFileSync as T,renameSync as oe,unlinkSync as q,writeFileSync as O}from"fs";import{homedir as re}from"os";import{dirname as ie,join as I}from"path";function b(e=process.env,r=re()){let a=e.XDG_CONFIG_HOME?.trim()||I(r,".config"),c=g({env:e})==="staging"?["staging"]:[];return I(ve(a,...c),"credentials.json")}function z(e,r=b()){return se(ie(r),{recursive:!0,mode:448}),O(r,`${JSON.stringify(e,null,2)}
3
- `,{mode:384}),A(r,384),r}function v(e=b()){if(!U(e))return null;try{let r=T(e,"utf8"),a=JSON.parse(r);if(typeof a.apiOrigin!=="string"||typeof a.clientId!=="string"||typeof a.accessToken!=="string"||typeof a.refreshToken!=="string"||typeof a.expiresAt!=="string"||typeof a.orgId!=="string"||!Array.isArray(a.scopes))return null;let l=new URL(a.apiOrigin).origin,c=Mr(l);if(c!==l)ae(e,r,c);return{apiOrigin:c,clientId:a.clientId,accessToken:a.accessToken,refreshToken:a.refreshToken,expiresAt:a.expiresAt,scopes:a.scopes.filter((m)=>typeof m==="string"),orgId:a.orgId}}catch{return null}}function ae(e,r,a){let l=`${e}.${process.pid}.${ne(6).toString("hex")}.tmp`;try{let c=te(e);if(!c.isFile()||process.platform!=="win32"&&c.uid!==process.geteuid?.())return;let m=JSON.parse(r);if(O(l,`${JSON.stringify({...m,apiOrigin:a},null,2)}
4
- `,{mode:384,flag:"wx"}),A(l,384),T(e,"utf8")!==r)throw Error("credentials_changed");oe(l,e)}catch{try{q(l)}catch{}}}function M(e=b()){if(!U(e))return!1;return q(e),!0}var j=["run","mcp:read","mcp:write","secrets:read","secrets:write","sessions:read","sessions:debug","devices:read","devices:write","devices:use","ssh:write","knowledge:read","memory:read","memory:write","skills:read","skills:write","repos:read","repos:write","reviews:read","reviews:write","deployment:read","analytics:read","org:read","org:write","attachments:read","attachments:write","guardrails:read","guardrails:write","network:read","network:write","automations:read","automations:write","agent_auth:read"];var cn=j.filter((e)=>e!=="network:read"&&e!=="network:write");class w extends Error{oauthCode;constructor(e,r=null){super(e);this.oauthCode=r;this.name="LoginError"}}function le(e,r){let a=typeof e.error==="string"?e.error:null,l=typeof e.error_description==="string"?e.error_description:a?a:r;return new w(l,a)}async function ce(e,r,a,l){let c=await a(`${e}/mcp/oauth/token`,{method:"POST",redirect:"error",headers:{"content-type":"application/x-www-form-urlencoded"},body:r,signal:l}),m=await c.json().catch(()=>({}));if(!c.ok)throw le(m,`OAuth token request failed (${c.status})`);return m}var de=1e4;async function me(e,r={}){let a=r.fetchImpl??fetch,l=await ce(e.apiOrigin,new URLSearchParams({grant_type:"refresh_token",client_id:e.clientId,refresh_token:e.refreshToken}),a,AbortSignal.timeout(de)).catch((m)=>{if(m instanceof Error&&m.name==="TimeoutError")throw new w("Reason did not answer the login refresh in time. Check the network and retry.");throw m});if(typeof l.access_token!=="string"||typeof l.refresh_token!=="string"||typeof l.expires_in!=="number")throw new w("Reason returned an incomplete refreshed login.");let c={...e,accessToken:l.access_token,refreshToken:l.refresh_token,expiresAt:new Date(Date.now()+l.expires_in*1000).toISOString(),scopes:typeof l.scope==="string"?l.scope.split(/\s+/).filter(Boolean):e.scopes};return z(c,r.path??b()),c}var S=new Map;function E(e,r){if(!r)return e;if(r.aborted)return Promise.reject(r.reason);return new Promise((a,l)=>{let c=()=>l(r.reason);r.addEventListener("abort",c,{once:!0}),e.then(a,l).finally(()=>r.removeEventListener("abort",c))})}async function _t(e={}){let r=e.path??b(),a=v(r);if(!a)return null;let l=e.apiOrigin??C(process.env,"REASON_API_URL")?.trim();if(l&&!Gi(a.apiOrigin,new URL(l).origin))return null;let c=Date.parse(a.expiresAt)<=Date.now()+60000;if(!e.forceRefresh&&!c)return a;let m=[r,a.apiOrigin,a.clientId,a.refreshToken].join("\x00"),p=S.get(m);if(p)return E(p,e.signal);let f;return f=me(a,{fetchImpl:e.fetchImpl,path:r}).catch(async(y)=>{if(!(y instanceof w)||y.oauthCode!=="invalid_grant"&&y.oauthCode!=="invalid_client")throw y;let k=v(r),B=y.oauthCode==="invalid_client"?k?.clientId!==a.clientId:k?.refreshToken!==a.refreshToken;if(k&&B)return _t({fetchImpl:e.fetchImpl,path:r});return M(r),null}).finally(()=>{if(S.get(m)===f)S.delete(m)}),S.set(m,f),E(f,e.signal)}var ue=i({label:t(),used_percent:o().min(0).max(100).nullable(),resets_at:t().nullable(),exhausted:d().nullable()}),ge=i({groups:u(i({selectable:d().optional(),accounts:u(i({source_id:t().min(1),model_ids:u(t().min(1)).optional()}))}))});function he(e){let r=ge.safeParse(e);if(!r.success)return;return r.data.groups.some((a)=>a.selectable!==!1&&a.accounts.some((l)=>l.model_ids===void 0||l.model_ids.length>0))}class R extends Error{status;code;suggestedModel;retryAfterMs;resolutionReason;constructor(e,r,a,l,c,m){super(a);this.status=e;this.code=r;this.suggestedModel=l;this.retryAfterMs=c;this.resolutionReason=m;this.name="ApiError"}static rateLimitDelayMs(e,r){if(!(e instanceof R)||e.status!==429)return null;return Math.min(60000,Math.max(r,e.retryAfterMs??0))}}var pe=["minimal","low","medium","high","xhigh","max"],fe=i({id:t().min(1),kind:t(),name:t(),custom_name:t().nullish(),status:t(),online:d(),compatible:d().optional(),compatibility_reason:t().nullish(),folder_lane_of:t().nullish(),roots:u(i({id:t().min(1),label:t()}))}),ye=i({devices:u(fe),end_cursor:t().nullish(),has_next_page:d().optional()}),_e=i({id:t().min(1),name:t()}),be=i({items:u(_e)}),Re=i({id:t().min(1),name:t(),main:d(),mine:d(),session_id:t().nullish(),appearance:i({color:t().nullish()}).nullish().catch(null)}),we=i({items:u(Re)}),Se=i({skill_id:t().min(1),name:t(),description:t().nullish(),activation_keywords:u(t()).default([]),is_enabled:d().default(!0)}),ke=i({items:u(Se).default([])}),Pe=i({id:t().min(1),kind:t(),enabled:d(),schedule:i({expression:t().nullish(),every_seconds:o().nullish(),next_run_at:t().nullish()}).nullish(),github:i({event:t().nullish(),action:t().nullish(),repo:t().nullish()}).nullish(),last_fired_at:t().nullish()}),N=i({id:t().min(1),name:t().nullish(),instructions:t().nullish(),enabled:d(),triggers:u(Pe).default([])}),xe=i({items:u(N).default([]),end_cursor:t().nullish(),has_next_page:d().optional()}),Ie=i({id:t().min(1),slug:t().nullish(),name:t(),description:t().nullish(),transport:t().nullish(),url:t().nullish(),enabled:d()}),Ce=i({items:u(Ie).default([])}),$e=i({status:t(),summary:t().nullish(),category:t().nullish(),outcome:t().nullish(),message_count:o().nullish(),pr_url:t().nullish(),cost_usd:o().nullish(),generated_at:t().nullish()}),L=i({tags:u(t()).default([])}),Ae=s(["linux","macos"]),D=i({id:t().min(1),name:t().min(1),platform:Ae.nullable(),workers:i({total:o().int(),online:o().int(),busy:o().int(),idle:o().int()}),sessions:i({queued:o().int(),running:o().int()})}),Ue=i({machines:u(D)}),Te=i({machine:D}),qe=i({deleted:n(!0),revoked_workers:o().int(),revoked_tokens:o().int()}),Oe=i({token:i({id:t().min(1),machine_id:t().min(1),token_prefix:t()}),secret:t().startsWith("rmt_")}),H=Mo({machine_id:t().min(1),machine_name:t().min(1)}),ze=H.extend({organization_id:t().min(1)}),pn=i({id:t().min(1),name:t().min(1),state:s(["waiting","placed"]),queue_position:o().int().nullable()});var fn=Q([i({kind:n("cloud")}),i({kind:s(["mac","headless"]),device_id:t().min(1),root_id:t().min(1)})]);function h(e,r,a){let l=e.safeParse(r);if(!l.success)throw new R(502,a,"Reason returned an unexpected response.");return l.data}var Me=i({error:i({type:t(),message:t()})});function F(e,r,a){let l=Me.safeParse(r),c=typeof r.error==="string"?r.error:l.success?l.data.error.type:`http_${e}`,m=typeof r.detail==="string"?r.detail:typeof r.message==="string"?r.message:l.success?l.data.error.message:`Reason request failed (${e}${typeof r.error==="string"?` ${r.error}`:""})`,p=c==="github_connection_required"&&typeof r.connect_url==="string"&&/^https?:\/\//.test(r.connect_url)?` Connect it at ${r.connect_url}`:"",f=a===null||a.trim()===""?NaN:Number(a);return new R(e,c,`${m}${p}`,typeof r.suggested_model==="string"?r.suggested_model:void 0,Number.isFinite(f)&&f>=0?f*1000:void 0,typeof r.resolution_reason==="string"?r.resolution_reason:void 0)}async function Vo(e){let r=await(e.fetchImpl??fetch)(`${e.apiOrigin}/v3/machines/enrollment-tickets`,{method:"POST",headers:{authorization:`Bearer ${e.token}`,accept:"application/json","content-type":"application/json"},body:JSON.stringify(e.body),signal:AbortSignal.timeout(30000),redirect:"error"}),a=await r.json().catch(()=>({}));if(!r.ok)throw F(r.status,a,r.headers.get("retry-after"));return h(ze,a,"invalid_machine_ticket")}class Eo{options;credentials;constructor(e,r={}){this.options=r;this.credentials=e}trackEvent(e,r={}){}async request(e,r={},a=!1){let l=this.options.fetchImpl??fetch,c=await l(`${this.credentials.apiOrigin}/v3${e}`,{method:r.method??"GET",headers:{authorization:`Bearer ${this.credentials.accessToken}`,accept:"application/json","user-agent":"reason-cli","x-reason-agent":"Reason CLI",...r.raw?{"content-type":r.raw.contentType}:r.body===void 0?{}:{"content-type":"application/json"},...r.headers},body:r.raw?r.raw.bytes:r.body===void 0?void 0:JSON.stringify(r.body),signal:r.signal,redirect:"error"}),m=await c.json().catch(()=>({}));if(c.status===401&&!a&&r.retryUnauthorized!==!1&&this.credentials.credentialKind!=="api_key"){let p=await _t({fetchImpl:l,path:this.options.credentialsPath,forceRefresh:!0,signal:r.signal});if(p)return this.credentials=p,this.request(e,r,!0)}if(!c.ok)throw F(c.status,m,c.headers.get("retry-after"));return m}createHeadlessDeviceEnrollmentTicket(e){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/devices/enrollment-tickets`,{method:"POST",body:e,signal:AbortSignal.timeout(30000),retryUnauthorized:!1})}async enrollHeadlessDevice(e){try{return await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/devices/enrollments`,{method:"POST",body:e,signal:AbortSignal.timeout(30000),retryUnauthorized:!1})}catch(r){if(r instanceof R&&(r.status===404||r.status===405||r.status===403&&r.code==="endpoint_not_available"))return null;throw r}}addDeviceRoot(e,r){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/devices/${encodeURIComponent(e)}/roots`,{method:"POST",body:r,signal:AbortSignal.timeout(30000)})}removeDeviceRoot(e,r){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/devices/${encodeURIComponent(e)}/roots/${encodeURIComponent(r)}`,{method:"DELETE",signal:AbortSignal.timeout(30000)})}machinePath(e,r=""){let a=`/organizations/${encodeURIComponent(this.credentials.orgId)}/machines`;return e===void 0?a:`${a}/${encodeURIComponent(e)}${r}`}async listMachines(){return h(Ue,await this.request(this.machinePath()),"invalid_machine_list").machines}async createMachine(e){let r=await this.request(this.machinePath(),{method:"POST",body:{name:e.name,...e.platform?{platform:e.platform}:{}}});return h(Te,r,"invalid_machine").machine}async deleteMachine(e){let r=await this.request(this.machinePath(e),{method:"DELETE"});return h(qe,r,"invalid_machine_deletion")}async createMachineToken(e){let r=await this.request(this.machinePath(e,"/tokens"),{method:"POST",body:{}});return h(Oe,r,"invalid_machine_token")}async createMachineEnrollmentTicket(e,r){let a=await this.request(this.machinePath(e,"/enrollment-tickets"),{method:"POST",body:r,signal:AbortSignal.timeout(30000),retryUnauthorized:!1});return h(H,a,"invalid_machine_ticket")}self(e){return this.request("/self",{signal:e})}agentNetwork(){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/agent-network`,{signal:AbortSignal.timeout(30000)})}startAgentNetwork(e){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/agent-network`,{method:"POST",body:e,signal:AbortSignal.timeout(30000)})}rotateAgentNetwork(e){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/agent-network`,{method:"PUT",body:e,signal:AbortSignal.timeout(30000)})}async claimAgentNetworkRelayJob(e,r){let a=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/agent-network/relay/claim`,{method:"POST",body:e,signal:r});return h(x,a,"invalid_agent_network_job")}async completeAgentNetworkRelayJob(e,r){await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/agent-network/relay/jobs/${encodeURIComponent(e)}`,{method:"POST",body:r,signal:AbortSignal.timeout(30000)})}async recordAgentNetworkRelayReplies(e){await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/agent-network/relay/replies`,{method:"POST",body:{messages:e},signal:AbortSignal.timeout(30000)})}async workspaceMembers(){return((await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/members/users`,{signal:AbortSignal.timeout(30000)})).items??[]).flatMap((r)=>typeof r.email==="string"?[{email:r.email,role:typeof r.role==="string"?r.role:"member"}]:[])}claimExistingCliPairing(e){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/onboarding/import/pairing/claim-existing`,{method:"POST",body:{pairing_code:e}})}async claudeCodeSignIn(e){return(await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/provider-credentials`,{retryUnauthorized:!1,signal:e?AbortSignal.any([e,AbortSignal.timeout(15000)]):AbortSignal.timeout(15000)})).claude_code_sign_in===!0}connectAnthropicProvider(e,r,a={}){let l=e.kind==="setup_token"?{setup_token:e.token}:{access_token:e.credential.access,refresh_token:e.credential.refresh,expires_at:new Date(e.credential.expires).toISOString()};return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/provider-credentials/anthropic`,{method:"POST",retryUnauthorized:a.retryUnauthorized,signal:a.signal,body:{...l,...r?{account_key:r}:{}}})}async listRepositories(){return((await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/repositories`)).items??[]).flatMap((r)=>{let a=typeof r.full_name==="string"?r.full_name:typeof r.repo_full_name==="string"?r.repo_full_name:null;if(!a)return[];return[{repo_id:typeof r.repo_id==="string"?r.repo_id:void 0,full_name:a,provider:r.provider==="gitlab"?"gitlab":"github",default_branch:typeof r.default_branch==="string"?r.default_branch:null,private:typeof r.private==="boolean"?r.private:void 0}]})}async listProjects(){let e=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/projects`),r=be.safeParse(e);if(!r.success)throw new R(502,"invalid_project_list","Reason returned an unexpected project list.");return r.data.items}async listReasons(){let e=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/reasons`);return h(we,e,"invalid_reason_list").items}async openReasonConversation(e){let r=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/reasons/${encodeURIComponent(e)}/conversation`,{method:"POST"});return h(i({session_id:t().min(1)}),r,"invalid_reason_conversation").session_id}async listSkills(){try{let e=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/skills`);return h(ke,e,"invalid_skill_list").items}catch(e){if(e instanceof R&&(e.status===403||e.status===404))return[];throw e}}async listDevices(){let e=[],r=null;for(let a=0;a<50;a+=1){let l=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/devices${r?`?after=${encodeURIComponent(r)}`:""}`),c=ye.safeParse(l);if(!c.success)throw new R(502,"invalid_device_list","Reason returned an unexpected machine list.");if(e.push(...c.data.devices),r=c.data.has_next_page?c.data.end_cursor??null:null,!r)break}return e}async listModels(){try{let r=((await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/agent-auth/models`)).models??[]).filter((c)=>c.hidden!==!0),a=r.filter((c)=>c.available!==!1).map(({reasoning_efforts:c,hidden:m,available:p,...f})=>({...f,...Array.isArray(c)?{reasoning_efforts:pe.filter((y)=>c.includes(y))}:{}})),l=new Set(a.map((c)=>c.detail));return{models:a.length>1&&l.size===1?a.map(({detail:c,...m})=>m):a,runnable:a.length>0||r.length===0}}catch(e){if(e instanceof R&&(e.status===403||e.status===404))return{models:[],runnable:!0};throw e}}async getAgentVersion(e){try{let r=await this.request("/deployment",{signal:e,retryUnauthorized:!1});return P(r.reason_version)?r.reason_version:null}catch{return null}}async getUsageQuota(){try{let e=ue.safeParse(await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/usage/quota`));if(!e.success)return null;let r;try{r=he(await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/agent-auth/models`))}catch{}return{...e.data,own_inference:r}}catch(e){if(e instanceof R&&(e.status===403||e.status===404))return null;throw e}}async listSessions(e=50,r,a={}){let l=new URLSearchParams({first:String(Math.min(Math.max(e,1),200)),status:a.status??"active"});if(r)l.set("project_id",r);if(a.origin)l.set("origin",a.origin);return(await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions?${l.toString()}`)).items??[]}getSession(e,r){let a=r?.fields.length?`?fields=${encodeURIComponent(r.fields.join(","))}`:"";return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}${a}`)}async prestartSession(e){let r=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/prestart`,{method:"POST",body:{client_session_id:e}});return r?.status==="starting"||r?.status==="ready"}async createSession(e){let r=e.mode==="ephemeral"||e.workspaceOwnership==="externally-managed";if(e.attachments?.length)await this.requireSessionAttachments();if(r||e.runtimeProfile){let c=await this.request("/deployment");if(r&&(!Array.isArray(c.session_modes)||!c.session_modes.includes(e.mode??"standard")||!Array.isArray(c.workspace_ownerships)||!c.workspace_ownerships.includes(e.workspaceOwnership??"managed")))throw Error("Deployment does not support the requested Session policy; refusing to create a Session.");if(e.runtimeProfile&&(!Array.isArray(c.experimental_runtime_profiles)||!c.experimental_runtime_profiles.includes(e.runtimeProfile)))throw Error("Deployment does not support the requested runtime profile; refusing to create a Session.")}let a=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions`,{method:"POST",body:{prompt:e.prompt,...e.attachments?.length?{attachments:e.attachments}:{},...e.mode?{mode:e.mode}:{},...e.workspaceOwnership?{workspace_ownership:e.workspaceOwnership}:{},...e.target?{target:e.target}:{},...e.repo?{repo:e.repo}:{},...e.provider?{provider:e.provider}:{},...e.model?{model:e.model}:{},...e.reasoningEffort?{reasoning_effort:e.reasoningEffort}:{},...e.runtimeProfile?{experimental_runtime_profile:e.runtimeProfile}:{},...e.ref?{ref:e.ref}:{},...e.branch?{branch:e.branch}:{},...e.completionMode?{completion_mode:e.completionMode}:{},...e.env&&Object.keys(e.env).length>0?{env:e.env}:{},...e.clientSessionId?{client_session_id:e.clientSessionId}:{},...e.longRunning?{long_running:{enabled:!0}}:{},...e.spendLimitRcu?{spend_limit_rcu:e.spendLimitRcu}:{},idempotency_key:`cli-${crypto.randomUUID()}`}}),l=await this.getSession(a.session_id);if(r){let c=l.session_policy,m=["memoryRead","memoryWrite","skills","inheritedInstructions","integrations","secretInjection"];if(!c||c.version!==1||c.mode!==(e.mode??"standard")||c.workspaceOwnership!==(e.workspaceOwnership??"managed")||!c.components||m.some((p)=>c.components[p]!==!0))throw await this.cancelSession(a.session_id),Error("Server did not attest the requested Session policy; cancellation requested.")}if(e.runtimeProfile&&l.experimental_runtime_profile!==e.runtimeProfile)throw await this.cancelSession(a.session_id),Error("Server did not attest the requested runtime profile; cancellation requested.");return l}async getEvents(e,r=-1,a={}){try{return await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}/events?after_seq=${r}&limit=500${a.waitMs?`&wait_ms=${a.waitMs}`:""}`,a.signal?{signal:a.signal}:{})}catch(l){if(!(l instanceof R)||l.status!==403&&l.status!==404)throw l;return{session:await this.getSession(e),items:[],next_seq:r}}}async getMessages(e,r){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}/messages?first=500${r===void 0?"":`&after_seq=${r}`}`)}async getAttachments(e,r){try{return(await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}/attachments${r?`?view=${r}`:""}`)).items??[]}catch(a){if(a instanceof R&&(a.status===403||a.status===404))return[];throw a}}async requireSessionAttachments(){let e=await this.request("/deployment",{headers:{"cache-control":"no-cache"}});if(e.session_attachments!==!0){let r=typeof e.reason_version==="string"&&/^\d+\.\d+(?:\.\d+)?$/.test(e.reason_version)?`Agent ${e.reason_version}`:null,a=typeof e.commit_sha==="string"&&/^[a-f0-9]{40,64}$/i.test(e.commit_sha)?`server ${e.commit_sha.slice(0,12)}`:null,l=[r,a].filter(Boolean).join(", ");throw Error(`This server does not support Session image attachments: ${new URL(this.credentials.apiOrigin).host}${l?` (${l})`:""}. The API server needs an attachment-capable deployment; updating the Agent version alone is not enough. Your image was not sent; retry after the server update.`)}}async sendMessage(e,r,a={}){if(a.attachments?.length)await this.requireSessionAttachments();return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}/messages`,{method:"POST",body:{message:r,...a.attachments?.length?{attachments:a.attachments}:{},...a.model?{model:a.model}:{},...a.reasoningEffort?{reasoning_effort:a.reasoningEffort}:{},...a.target?{target:a.target}:{},...a.delivery?{delivery:a.delivery}:{}}})}async steerQueuedMessage(e,r){await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}/messages/${encodeURIComponent(r)}/steer`,{method:"POST",body:{}})}async withdrawQueuedMessage(e,r){await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}/messages/${encodeURIComponent(r)}/queued`,{method:"DELETE"})}async getConversation(e){let r=[],a=null;for(let l=0;l<50;l+=1){let c=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}/conversation${a?`?after=${encodeURIComponent(a)}`:""}`);if(r.push(...c.items??[]),!c.has_next_page||!c.end_cursor)break;a=c.end_cursor}return r}createSharedLink(e,r){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}/shared-links`,{method:"POST",body:{url:r.url,...r.label?{label:r.label}:{},...r.expiresInSeconds!==void 0?{expires_in_seconds:r.expiresInSeconds}:{}}})}sessionAction(e,r,a={}){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}/${r}`,{method:"POST",body:a})}renameSession(e,r){return this.sessionAction(e,"rename",{title:r||null})}moveSessionToProject(e,r){return this.sessionAction(e,"project",{project_id:r})}compactSession(e){return this.sessionAction(e,"compact")}retrySession(e){return this.sessionAction(e,"retry")}rewindSession(e,r){return this.sessionAction(e,"rewind",{message_id:r.messageId,content:r.content,request_id:r.requestId})}forkSession(e,r){return this.sessionAction(e,"fork",{...r.message?{message:r.message}:{},client_session_id:r.clientSessionId})}cancelSession(e,r={}){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}/cancel`,{method:"POST",body:r.mode==="hard"?{mode:"hard"}:{}})}sessionPath(e,r=""){return`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent(e)}${r}`}async archiveSession(e){await this.request(this.sessionPath(e,"/archive"),{method:"POST",body:{}})}async unarchiveSession(e){await this.request(this.sessionPath(e,"/unarchive"),{method:"POST",body:{}})}async deleteSession(e){await this.request(this.sessionPath(e),{method:"DELETE"})}async listSessionTags(e){return h(L,await this.request(this.sessionPath(e,"/tags")),"invalid_session_tags").tags}async appendSessionTags(e,r){let a=await this.request(this.sessionPath(e,"/tags"),{method:"POST",body:{tags:r}});return h(L,a,"invalid_session_tags").tags}async sessionInsight(e,r=!1){let a=await this.request(this.sessionPath(e,r?"/insights/generate":"/insights"),r?{method:"POST",body:{}}:{});return h($e,a,"invalid_session_insight")}async listAutomations(){let e=[],r=null;for(let a=0;a<20;a+=1){let l=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/automations?first=100${r?`&after=${encodeURIComponent(r)}`:""}`),c=h(xe,l,"invalid_automation_list");if(e.push(...c.items),r=c.has_next_page?c.end_cursor??null:null,!r)break}return e}async createScheduledAutomation(e,r){let a=`/organizations/${encodeURIComponent(this.credentials.orgId)}/automations`,l=h(N,await this.request(a,{method:"POST",body:{name:e.name,instructions:e.instructions,...e.repo?{repo:e.repo.full_name,provider:e.repo.provider}:{}}}),"invalid_automation");try{await this.request(`${a}/${encodeURIComponent(l.id)}/triggers`,{method:"POST",body:r})}catch(c){throw await this.deleteAutomation(l.id).catch(()=>{return}),c}return l}async setAutomationEnabled(e,r){await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/automations/${encodeURIComponent(e)}`,{method:"PATCH",body:{enabled:r}})}async deleteAutomation(e){await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/automations/${encodeURIComponent(e)}`,{method:"DELETE"})}async transcribe(e,r){let a=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/transcribe`,{method:"POST",raw:{bytes:e,contentType:r}});return h(i({transcript:t()}),a,"invalid_transcript").transcript}async listMcpServers(){let e=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/mcp-servers`);return h(Ce,e,"invalid_mcp_server_list").items}async setSkillEnabled(e,r){await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/skills/${encodeURIComponent(e)}`,{method:"PUT",body:{is_enabled:r}})}}
5
- export{_t,R,Vo,Eo};
@@ -1,11 +0,0 @@
1
- // @bun
2
- import"./vm-hands-entry-lite-k278g9kj.js";import"./vm-hands-entry-lite-8t9xssf9.js";import"./vm-hands-entry-lite-22kfyvnk.js";import"./vm-hands-entry-lite-m11j0f9q.js";import{Je,Ii,ur,vt}from"./vm-hands-entry-lite-463m6ejk.js";import"./vm-hands-entry-lite-f5e3dbgk.js";import"./vm-hands-entry-lite-9c95p6n9.js";import"./vm-hands-entry-lite-gvwdy3rf.js";import"./vm-hands-entry-lite-t7an5zg2.js";import"./vm-hands-entry-lite-88swf2qr.js";import"./vm-hands-entry-lite-ckv17tn8.js";import"./vm-hands-entry-lite-q0k6kx6d.js";import"./vm-hands-entry-lite-bdhjpv7g.js";import{Yt}from"./vm-hands-entry-lite-qq9w7wq6.js";import"./vm-hands-entry-lite-09m2cdkw.js";import"./vm-hands-entry-lite-89z488gz.js";import"./vm-hands-entry-lite-9ay6f56v.js";import{spawn as De}from"child_process";import{chmodSync as Me,chownSync as Le,existsSync as U,lstatSync as V,mkdirSync as ee,mkdtempSync as Ae,readdirSync as Z,readFileSync as P,realpathSync as Te,rmdirSync as ne,rmSync as ze,writeFileSync as K}from"fs";import{join as p}from"path";import{readFileSync as ae,readlinkSync as ce}from"fs";import{relative as $e}from"path";var le=16;function de(n){return n.replace(/\\([0-7]{3})/g,(r,i)=>String.fromCharCode(Number.parseInt(i,8)))}function Ie(n){let r=[];for(let i of n.split(`
3
- `)){let e=i.split(" ");if(e.length<10||!/^\d+:\d+$/.test(e[2]))continue;r.push({device:e[2],root:de(e[3]),mountPoint:de(e[4])})}return r}function Ne(n,r,i){let e=n.replace(/\/+$/,"")||"/",c=(m)=>e==="/"||m===e||m.startsWith(`${e}/`),a=(m)=>new Map(Ie(m).filter((b)=>c(b.mountPoint)).map((b)=>[`${b.mountPoint}\x00${b.device}\x00${b.root}`,b.mountPoint])),l=a(r),v=a(i),y=(m)=>$e(e,m)||".",O=[...l].filter(([m])=>!v.has(m)).map(([,m])=>y(m)),R=[...v].filter(([m])=>!l.has(m)).map(([,m])=>y(m));return{missing:O,extra:R,referenceCount:l.size,ownCount:v.size}}function ue(n,r,i,e="/proc"){let c,a,l=null;try{c=ae(`${e}/1/mountinfo`,"utf8"),a=ae(`${e}/self/mountinfo`,"utf8")}catch(b){let I=b&&typeof b==="object"&&"code"in b&&typeof b.code==="string"?b.code:"unreadable";r("vm_hands.mount_check_unavailable",{code:I});return}try{l=ce(`${e}/1/ns/mnt`)===ce(`${e}/self/ns/mnt`)}catch{}let{missing:v,extra:y,referenceCount:O,ownCount:R}=Ne(n,c,a),m={reference_count:O,own_count:R,missing_count:v.length,extra_count:y.length,same_namespace:l};if(y.length)r("vm_hands.mount_extra",{...m,extra:y.slice(0,le)});if(v.length)throw r("vm_hands.mount_mismatch",{...m,missing:v.slice(0,le)}),i(`${v.length} mount(s) under the Session root are missing from vm-hands' namespace`)}var we="/sys/fs/cgroup/reason-payload",M="vm-hands",We="/run/ara-srt/fallbacks.jsonl",B="/reason-person",te=5000,Be=1e4,pe="__VM_HANDS_PROOF_DIR__",Ke="__VM_HANDS_PROBE_NONCE__";class h extends Error{code;constructor(n,r){super(r);this.code=n}}function je(n,r){if(!/^[0-9a-f-]{36}$/i.test(r))throw new h("vm_hands_bind_invalid","bad bind id");return p(n,M,`b-${r.toLowerCase()}`)}var He=5000,ve=(n)=>`'${n.replaceAll("'","'\\''")}'`;function on(n){let r=n.cgroup??we,i=n.init.layout.payload_uid,e=n.log??(()=>{}),c=new Map,a=new Map,l=0,v=()=>{try{let t=P("/run/ara-srt/starts.jsonl","utf8"),o=t.slice(l>t.length?0:l).split(`
4
- `).filter(Boolean);l=t.length;let d=o.map((f)=>{try{return Number(JSON.parse(f).elapsed_ms)||0}catch{return 0}});if(d.length)e("vm_hands.srt_server_starts",{count:d.length,elapsed_ms:d.slice(0,8)})}catch{}},y=null,O=!1,R=n.srtCgroup??"/sys/fs/cgroup/reason-srt",m=()=>{y??=me()},b=0,I=()=>{try{let t=P(We,"utf8"),o=t.slice(b>t.length?0:b);b=t.length;let d=o.split(`
5
- `).filter(Boolean).slice(0,1000);if(!d.length)return null;let f={},g=0;for(let w of d)try{let _=JSON.parse(w),u=typeof _.code==="string"&&/^[a-z_]{1,40}$/.test(_.code)?_.code:"other";if(f[u]=(f[u]??0)+1,typeof _.elapsed_ms==="number")g=Math.max(g,_.elapsed_ms)}catch{f.unparsed=(f.unparsed??0)+1}return e("vm_hands.srt_fallbacks",{count:d.length,codes:f,max_elapsed_ms:g}),{count:d.length,codes:f,max_elapsed_ms:g}}catch{return null}},S=!1,j=(t,o,d)=>{if(S)throw Error("vm_hands_pool_held");return Ce(t,o,d)},X=(t)=>(o,d,f)=>De("/bin/sh",["-c",`echo $$ > ${ve(p(t,"cgroup.procs"))} || exit 125; exec "$@"`,"vm-hands-join",o,...d],f),Ce=X(p(r,M)),H=p(r,M,"probe"),z=(t)=>je(r,t),Oe=(t)=>{let o=z(t);try{ee(o,{mode:493})}catch(d){if(!(d&&typeof d==="object"&&("code"in d)&&d.code==="EEXIST"))throw new h("vm_hands_bind_failed","bind cgroup")}return o},Re=(t)=>{try{ne(z(t))}catch{}},D=n.prespawn?Ii({spawnProcess:j,...n.relayDependencies?.sourceEntrypoint?{sourceEntrypoint:n.relayDependencies.sourceEntrypoint}:{},log:(t,o)=>e(t,o??{})}):null;D?.arm();let Q=D?setInterval(()=>{D.arm()},He):null;Q?.unref?.();async function F(t){let o=c.get(t);if(c.delete(t),!o)return;o.abort.abort(),await o.done}return{bindCgroup:z,async startExecutor(t){if(m(),a.set(t.bindId,me()),O=!0,!t.claim)throw new h("vm_hands_bind_invalid","an executor needs the claim it serves");await F(t.bindId);let{claim:o,bindId:d}=t,f=Oe(d),g=o.owner;if(!g||typeof g.device_id!=="string"||typeof o.root_id!=="string")throw new h("vm_hands_bind_invalid","claim without its owner Device or root");let w=new AbortController,_,u,x=new Promise((s,k)=>{_=s,u=k}),L,C=new Promise((s)=>{L=s}),W=vt({headless:!0,hostExecution:!0,runtimeDirectory:n.runtimeDirectory,deviceIdentity:{deviceId:g.device_id,rootId:o.root_id,apiOrigin:n.apiOrigin},claimOwner:o.owner,root:n.root,runId:o.run_id,operationId:o.operation_id,attemptId:o.attempt_id,payload:Object.fromEntries(Object.entries(o.payload).filter(([s])=>!s.startsWith("vm_hands_"))),signal:w.signal,...t.workspaceGrant?{workspaceGrant:t.workspaceGrant}:{},emitEvent:async(s,k)=>{if(s==="hands.ready"){_(k);return}if(s==="hands.started"||s==="hands.stopped"||s==="hands.failed")return;await n.forward(d,s,k)}},{...n.relayDependencies,spawnWorker:(s)=>X(f)(s.command,s.args,s.options),...D?{takePrespawnedWorker:(s)=>{let k=D.take(s);if(!k?.pid)return k;try{return K(p(f,"cgroup.procs"),String(k.pid)),k}catch{try{k.kill("SIGKILL")}catch{}return null}},adoptSpawnedWorker:D.adopt}:{}}).then(()=>{L("executor_stopped")},(s)=>{let k=s&&typeof s==="object"&&"code"in s?String(s.code):"executor_failed";u(new h(k,s instanceof Error?s.message:String(s))),L(k)}).finally(()=>u(new h("vm_hands_executor_exited","executor ended before it was ready")));c.set(d,{abort:w,done:W,exited:C,operationId:o.operation_id,runId:o.run_id,expiresAtMs:Date.parse(String(o.payload.expires_at??""))||0});let A=await x,G=A.executor_launch_id;if(typeof G!=="string")throw new h("vm_hands_bind_failed","executor ready without a launch id");return{launchId:G,readyData:A,applied:{hands_confinement:typeof o.payload.hands_confinement==="string"?o.payload.hands_confinement:null,browser_egress:o.payload.browser_egress??null}}},takeSrtFallbacks:I,executorExited(t){return c.get(t)?.exited??new Promise(()=>{})},freezeBind(t){let o=z(t);if(U(p(o,"cgroup.freeze")))K(p(o,"cgroup.freeze"),"1")},async killAndVerifyPayload(t){let o=new Set(t?.keep??[]);if(o.size||t?.own)return xe(t?.bindId??null,o,t?.own===!0);S=!0;let d=he();try{await ye();let f=Promise.all([...c.keys()].map((u)=>F(u).catch(()=>{return})));v();let g=Date.now()+te;await J(r,g,"payload"),await f;let w=(O||n.srtWarmLate?.()===!0)&&U(p(R,"cgroup.events"));if(w)await J(R,g,"srt");let _=se(i).filter((u)=>!N(u,B));if(y!==null){let u=re(y).filter((x)=>x!==process.pid&&!N(x,B));if(u.length)throw e("vm_hands.kill_strays",{strays:E(u)}),new h("vm_hands_kill_unverified",`${u.length} process(es) the run started survived it`);y=null}if(O=!1,w)n.onSrtReset?.();if(_.length)throw e("vm_hands.kill_survivors",{pids:_.slice(0,16)}),new h("vm_hands_kill_unverified",`${_.length} payload-uid process(es) outside the payload cgroup`);a.clear();for(let u of ie())try{ne(p(r,M,u))}catch{}}finally{S=!1,d()}if(D)setTimeout(()=>{if(!c.size)D.arm()},100).unref?.()},async killProbe(){let t=Date.now()+te;if(U(p(H,"cgroup.events"))){await J(H,t,"probe");try{ne(H)}catch{}}let o=oe(process.pid);if(o===null)throw new h("vm_hands_kill_unverified","agent start time unreadable");await Ue(r,o,t);let d=(g)=>{let w=oe(g);return w!==null&&w<=o},f=se(i).filter((g)=>d(g)&&!N(g,B));if(f.length)throw e("vm_hands.kill_survivors",{pids:f.slice(0,16),at:"attest"}),new h("vm_hands_kill_unverified",`${f.length} payload-uid process(es) from before this agent`);if(y!==null){let g=[r,p(r,M)].map((u)=>u.replace(/^\/sys\/fs\/cgroup/,"")),w=R.replace(/^\/sys\/fs\/cgroup/,""),_=re(y).filter((u)=>u!==process.pid&&!N(u,B)&&!N(u,"/reason-vm-hands")&&!N(u,w)&&!g.some((x)=>fe(u,x)));if(_.length&&O)throw e("vm_hands.kill_strays",{strays:E(_),at:"attest"}),new h("vm_hands_kill_unverified",`${_.length} process(es) the run started survived it`);if(_.length)e("vm_hands.attest_concurrent",{processes:E(_),count:_.length});y=null}},async runProbe({nonce:t,script:o}){if(m(),!o.includes(pe))throw new h("vm_hands_probe_failed","probe names no proof directory");let d=n.proofParent??"/tmp/reason-vm-hands-proof";ee(d,{mode:457,recursive:!0});let f=V(d);if(f.isSymbolicLink()||!f.isDirectory()||f.uid!==(process.getuid?.()??-1)||(f.mode&4095)!==457)throw new h("vm_hands_probe_failed","proof parent is not root's 0711 directory");let g=Ae(p(d,"p-")),w=!1;try{if(!/^[A-Za-z0-9/._-]+$/.test(g)||!/^[A-Za-z0-9_-]{1,128}$/.test(t))throw new h("vm_hands_probe_failed","proof directory path or nonce");Le(g,i,i),Me(g,448);let _=V(g).ino;try{ee(H,{mode:493})}catch(C){if(!(C&&typeof C==="object"&&("code"in C)&&C.code==="EEXIST"))throw new h("vm_hands_probe_failed","probe cgroup")}let u=X(H)("/bin/bash",["-c",o.replaceAll(pe,g).replaceAll(Ke,t)],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:["ignore","pipe","ignore"]}),x="";u.stdout?.on("data",(C)=>{if(x.length<16384)x+=C.toString("utf8").slice(0,16384-x.length)});let L=await new Promise((C)=>{let W=setTimeout(()=>{w=!0,u.kill("SIGKILL"),C(124)},Be);u.once("error",()=>{clearTimeout(W),C(127)}),u.once("close",(A)=>{clearTimeout(W),C(A??1)})});return e("vm_hands.probe",{nonce_len:t.length,exit_code:L}),{exitCode:L,markers:x,proofDirInode:_}}finally{if(!w)ze(g,{recursive:!0,force:!0})}},restatLayout(){let{session_root:t,alias:o}=n.init.layout,d="invalid";try{ur(t),d="0:0:755"}catch{}let f=!1,g=-1;try{let w=V(o);g=w.uid,f=d==="0:0:755"&&o===p(t,"repo")&&!w.isSymbolicLink()&&w.isDirectory()&&Te(o)===o&&w.uid===i}catch{}return{root_mode:d,alias_ok:f,owner_uid:g}},verifyMounts(){ue(n.init.layout.session_root,e,(t)=>new h("vm_hands_mount_mismatch",t))},installEnvironment(t,o){let d=c.get(t);if(!d)throw new h("environment_unavailable","no executor owns an environment");return Je({root:n.root,operationId:d.operationId,payload:o}).installed_revision},async stop(){if(Q)clearInterval(Q);D?.close(),await Promise.all([...c.keys()].map((t)=>F(t)))}};function ie(){try{return Z(p(r,M),{withFileTypes:!0}).filter((t)=>t.isDirectory()&&/^b-[0-9a-f-]{36}$/.test(t.name)).map((t)=>t.name)}catch{return[]}}async function xe(t,o,d=!1){let f=new Set([...o].map((w)=>w.toLowerCase())),g=he();try{await ye();let w=Date.now()+te,_=new Set(ie().filter((s)=>!f.has(s.slice(2))).map((s)=>s.slice(2)));if(t)_.add(t.toLowerCase());let u=null;for(let s of _){let k=F(s).catch(()=>{return}),q=a.get(s);if(q!==void 0)u=u===null?q:Math.min(u,q);if(U(p(z(s),"cgroup.events")))await J(z(s),w,"bind");await k}let x=[...f].map((s)=>z(s).replace(/^\/sys\/fs\/cgroup/,"")),L=[r,p(r,M)].map((s)=>s.replace(/^\/sys\/fs\/cgroup/,"")),C=R.replace(/^\/sys\/fs\/cgroup/,""),W=(s)=>N(s,B)||x.some((k)=>N(s,k)),A=d?[]:se(i).filter((s)=>!W(s));if(A.length)throw e("vm_hands.kill_survivors",{pids:A.slice(0,16),beside:f.size}),new h("vm_hands_kill_unverified",`${A.length} payload-uid process(es) outside a live bind`);let G=(s)=>!W(s)&&!N(s,"/reason-vm-hands")&&!N(s,C)&&!L.some((k)=>fe(s,k));if(u!==null){let s=re(u).filter((k)=>k!==process.pid&&G(k));if(s.length)throw e("vm_hands.kill_strays",{strays:E(s),beside:f.size}),new h("vm_hands_kill_unverified",`${s.length} process(es) the run started survived it`)}for(let s of _)a.delete(s),Re(s)}finally{g()}}}function oe(n,r="/proc"){try{let i=P(p(r,String(n),"stat"),"utf8"),e=Number(i.slice(i.lastIndexOf(")")+2).split(" ")[19]);return Number.isFinite(e)?e:null}catch{return null}}function be(n,r="/proc"){try{let i=P(p(r,String(n),"stat"),"utf8"),e=Number(i.slice(i.lastIndexOf(")")+2).split(" ")[1]);return Number.isFinite(e)?e:null}catch{return null}}async function Ue(n,r,i){try{K(p(n,"cgroup.freeze"),"1")}catch(e){throw new h("vm_hands_kill_unverified",`payload cgroup.freeze: ${e instanceof Error?e.message:String(e)}`)}try{for(;;){let e=Se(n).filter((a)=>ke(a,n)),c=new Set(e.filter((a)=>{let l=oe(a);return l!==null&&l<=r}));for(let a=!0;a;){a=!1;for(let l of e){if(c.has(l))continue;let v=be(l);if(v!==null&&c.has(v))c.add(l),a=!0}}if(c.size===0)return;if(Date.now()>i)throw new h("vm_hands_kill_unverified",`${c.size} previous-boot process(es) survived`);for(let a of c)try{process.kill(a,"SIGKILL")}catch{}await new Promise((a)=>setTimeout(a,10))}}finally{try{K(p(n,"cgroup.freeze"),"0")}catch{}}}function fe(n,r,i="/proc"){try{return P(p(i,String(n),"cgroup"),"utf8").split(`
6
- `).find((c)=>c.startsWith("0::"))?.slice(3)===r}catch{return!1}}function N(n,r,i="/proc"){try{let c=P(p(i,String(n),"cgroup"),"utf8").split(`
7
- `).find((a)=>a.startsWith("0::"))?.slice(3)??"";return c===r||c.startsWith(`${r}/`)}catch{return!1}}var Fe=100;function me(){try{return Math.floor(Number(P("/proc/uptime","utf8").split(" ")[0])*Fe)}catch{return 0}}async function J(n,r,i){try{K(p(n,"cgroup.freeze"),"1")}catch(e){throw new h("vm_hands_kill_unverified",`${i} cgroup.freeze: ${e instanceof Error?e.message:String(e)}`)}while(!/^populated 0$/m.test(P(p(n,"cgroup.events"),"utf8"))){if(Date.now()>r)throw new h("vm_hands_kill_unverified",`${i} cgroup still populated (left frozen)`);for(let e of Se(n)){if(!ke(e,n))continue;try{process.kill(e,"SIGKILL")}catch{}}await new Promise((e)=>setTimeout(e,10))}try{K(p(n,"cgroup.freeze"),"0")}catch(e){throw new h("vm_hands_kill_unverified",`${i} cgroup thaw: ${e instanceof Error?e.message:String(e)}`)}}function ke(n,r){let i=r.replace(/^\/sys\/fs\/cgroup/,"")||"/",e="";try{e=P(`/proc/${n}/cgroup`,"utf8").split(`
8
- `).find((a)=>a.startsWith("0::"))??""}catch{return!1}let c=e.slice(3);return c===i||c.startsWith(`${i}/`)}function Se(n){let r=[],i=(e)=>{try{for(let a of P(p(e,"cgroup.procs"),"utf8").split(`
9
- `))if(/^\d+$/.test(a))r.push(Number(a))}catch{}let c=[];try{c=Z(e,{withFileTypes:!0}).filter((a)=>a.isDirectory()).map((a)=>a.name)}catch{}for(let a of c)i(p(e,a))};return i(n),r}function E(n,r="/proc"){return n.slice(0,16).map((i)=>{let e="?",c="?";try{e=P(p(r,String(i),"comm"),"utf8").trim().slice(0,32)}catch{}try{c=(P(p(r,String(i),"cgroup"),"utf8").split(`
10
- `).find((a)=>a.startsWith("0::"))??"").slice(3,120)}catch{}return{pid:i,comm:e,ppid:be(i,r),cgroup:c}})}function re(n,r="/proc"){let i=[];for(let e of Z(r)){if(!/^\d+$/.test(e))continue;let c;try{c=P(p(r,e,"stat"),"utf8")}catch{continue}let a=c.slice(c.lastIndexOf(")")+2).split(" "),l=Number(a[1]),v=Number(a[6]),y=Number(a[19]);if(!((v&2097152)!==0||l===2||e==="2")&&a[0]!=="Z"&&y>=n)i.push(Number(e))}return i}function se(n,r="/proc"){let i=[];for(let e of Z(r)){if(!/^\d+$/.test(e))continue;let c;try{c=P(p(r,e,"status"),"utf8")}catch{continue}let a=/^Uid:\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/m.exec(c);if(a&&a.slice(1).some((l)=>Number(l)===n))i.push(Number(e))}return i}function ge(n="/proc/sys/kernel/yama/ptrace_scope"){try{return Number(P(n,"utf8").trim())>=1}catch{return!1}}var T=0,Pe=[],Y=new Set;function he(){T++;let n=!1;return()=>{if(n)return;if(n=!0,--T===0)for(let r of Pe.splice(0))r()}}function Ge(){return T===0?Promise.resolve():new Promise((n)=>{Pe.push(n)})}async function _e(){while(T>0)await Ge()}async function ye(){let n=Date.now()+1000;while(Y.size&&Date.now()<n)await new Promise((r)=>setTimeout(r,2))}function Ee(n,r){let i=r.replace(/^\/sys\/fs\/cgroup/,"");Y.add(n);let e=()=>{let c="";try{c=P(`/proc/${n}/cgroup`,"utf8").split(`
11
- `).find((a)=>a.startsWith("0::"))??""}catch{Y.delete(n);return}if(c.slice(3)===i){Y.delete(n);return}setTimeout(e,1)};e()}function an(n){let r={person:n.personCgroup??p("/sys/fs/cgroup",B,M),model:n.payloadCgroup??p(we,M)},i=n.entry??process.argv[1]??"",e={},c=(l)=>l.startsWith("model:")&&n.bindCgroup?n.bindCgroup(l.slice(6)):r[l.startsWith("model")?"model":"person"],a=(l)=>{let v=l.startsWith("model")?"model":"person",y=new Map,O=String(n.payloadUid),R=String(n.payloadGid),m=Bun.spawn(["/bin/sh","-c",`echo $$ > ${ve(p(c(l),"cgroup.procs"))} || exit 125; exec /usr/bin/setpriv --no-new-privs --reuid=${O} --regid=${R} --clear-groups -- "$@"`,"vm-hands-op-join",process.execPath,"--no-install",i,"--vm-hands-op-runner",...v==="person"?[Yt]:[]],{cwd:"/",env:{PATH:process.env.PATH??"/usr/bin:/bin",BUN_BE_BUN:"1",HOME:"/home/runner",...U("/bin/bash")?{SHELL:"/bin/bash"}:{}},stdio:["ignore","ignore","ignore"],ipc(I){let S=I,j=y.get(S.id);if(!j)return;if(S.t==="event"&&S.event)j.onEvent(S.event);if(S.t==="done")y.delete(S.id),j.done(S.completion??{status:"failed",error_code:"vm_hands_op_failed"})}});m.exited.then((I)=>{if(e[l]?.child===m)delete e[l];for(let[,S]of y)S.done({status:"failed",error_code:"vm_hands_op_runner_exited"});y.clear(),n.log?.("vm_hands.op_runner_exited",{kind:v,code:I})}),Ee(m.pid,c(l));let b={child:m,pending:y};return e[l]=b,b};return{run(l,v,y,O,R){if(!ge())return Promise.resolve({status:"failed",error_code:"vm_hands_ptrace_unprotected"});let m=l==="model"&&R&&n.bindCgroup?`model:${R.toLowerCase()}`:l,b=async()=>{while(!e[m]&&T>0)await _e()};return b().then(async()=>{if(!e[m]&&T>0)await b()}).then(()=>new Promise((I)=>{if(!e[m]&&T>0){I({status:"failed",error_code:"vm_hands_op_runner_unavailable"});return}let S=e[m]??a(m);S.pending.set(v.id,{onEvent:y,done:I}),O.addEventListener("abort",()=>{try{S.child.send({t:"cancel",id:v.id})}catch{}},{once:!0});try{S.child.send({t:"op",...v})}catch{S.pending.delete(v.id),I({status:"failed",error_code:"vm_hands_op_runner_unavailable"})}}))},warm(l){if(!e[l]&&ge())_e().then(()=>{if(!e[l]&&T===0)a(l)})},stop(){for(let l of Object.keys(e))e[l]?.child.kill()}}}export{we as VM_HANDS_PAYLOAD_CGROUP,M as VM_HANDS_PAYLOAD_JOIN,B as VM_HANDS_PERSON_CGROUP,Ke as VM_HANDS_PROBE_NONCE_TOKEN,pe as VM_HANDS_PROOF_DIR_TOKEN,h as VmHandsExecutorError,on as createVmHandsExecutor,an as createVmHandsOpRunners,E as describeProcesses,N as inCgroup,se as payloadUidProcesses,re as processesStartedSince,ge as ptraceProtected,Se as subtreePids,je as vmHandsBindCgroup};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{Yt,zo}from"./vm-hands-entry-lite-qq9w7wq6.js";export{Yt as VM_HANDS_OP_RUNNER_PERSON_ARG,zo as runVmHandsOpRunner};
@@ -1,4 +0,0 @@
1
- // @bun
2
- import{Ge}from"./vm-hands-entry-lite-k278g9kj.js";import{wi,Xr,bi}from"./vm-hands-entry-lite.js";import{spawn as G}from"child_process";import{createHash as z}from"crypto";import{lstatSync as E,mkdirSync as K,readFileSync as W,statSync as X,writeFileSync as F}from"fs";var v="/run/reason-vm-hands",D="/run/reason-vm-hands/env",A="/home/runner/.reason/workspace",J=/^https:\/\/[a-z0-9.-]+(?::\d{1,5})?$/,V="/sys/fs/cgroup/reason-srt",q=["/usr/local/bin/reason-srt-exec","/usr/local/bin/ara-srt-exec"],Q=65536,Z=21600000;function ee(r,e="/run/ara-srt"){try{if((process.getuid?.()??-1)!==0)return;K(e,{recursive:!0,mode:448});let n=E(e);if(!n.isDirectory()||n.uid!==0||(n.mode&63)!==0){r("srt_base_keyed_skipped",{reason:"socket_dir_unsafe"});return}F(`${e}/base-keyed`,`1
3
- `,{mode:420}),r("srt_base_keyed",{})}catch{r("srt_base_keyed_skipped",{reason:"error"})}}function C(r,e){let n=(c)=>(e("srt_warm_skipped",{reason:c}),Promise.resolve());if(typeof r.srt_base_settings!=="string")return n("no_settings");let o=Buffer.from(r.srt_base_settings,"base64");if(o.length===0||o.length>Q||o.toString("base64")!==r.srt_base_settings)return n("settings_invalid");let a;try{let c=E(V);if(!c.isDirectory()||c.uid!==0||(c.mode&18)!==0)return n("cgroup_unsafe");let p=q.find((f)=>E(f,{throwIfNoEntry:!1})!==void 0);if(!p)return n("cgroup_or_exec_missing");a=p;for(let[f,w]of[[a,!1],["/usr/local/bin",!0]]){let u=E(f);if((w?!u.isDirectory():!u.isFile())||u.uid!==0||(u.mode&18)!==0)return n("srt_exec_unsafe")}}catch{return n("cgroup_or_exec_missing")}if((process.getuid?.()??-1)!==0)return n("not_root");let i=performance.now(),R=z("sha256").update(o).digest("hex"),S=`${v}/srt-base-settings.json`;try{F(S,o,{mode:384,flag:"w"})}catch{return n("settings_write")}let g=G("/bin/sh",["-c",`echo $$ > ${V}/cgroup.procs || exit 125; exec "$@"`,"vm-hands-srt",a,"--settings",S,"--idle-ms",String(Z),"--","/bin/true"],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:"ignore"});return new Promise((c)=>{g.once("error",()=>{e("srt_warm_failed",{reason:"spawn"}),c()}),g.once("close",(p)=>{e(p===0?"srt_warm_done":"srt_warm_failed",{exit_code:p,warm_ms:Math.round(performance.now()-i),settings_sha256:R}),c()})})}var M=3000;function pe(r){if(!r||typeof r!=="object"||Array.isArray(r))return null;let e=r,{layout:n,device_key:o,credential:a}=e;return typeof e.workspace_id==="string"&&Number.isSafeInteger(e.instance_generation)&&typeof e.api_origin==="string"&&J.test(e.api_origin)&&typeof e.manifest_digest==="string"&&!!a&&typeof a.key_id==="string"&&Number.isSafeInteger(a.expires_at_ms)&&typeof a.signature==="string"&&!!n&&typeof n.session_root==="string"&&typeof n.alias==="string"&&Number.isSafeInteger(n.payload_uid)&&typeof n.kind==="string"&&!!o&&typeof o.pkcs8==="string"&&typeof o.spki==="string"?e:null}function L(r){K(r,{recursive:!0,mode:448});let e=X(r);if(!e.isDirectory()||(e.mode&63)!==0||e.uid!==(process.getuid?.()??-1))throw Error(`vm_hands_runtime_directory_unsafe: ${r}`)}async function ne(r){let[{CLI_VERSION:e},n,o,a]=await Promise.all([import("./version-bq5j7cqg.js"),import("./hands-worker-source-cgrpm21b.js"),import("./network-contract-9x9kc5vv.js"),import("./device-workspace-p9q9dckg.js")]),{REASON_HANDS_PROTOCOL_VERSION:i}=await import("./reason-hands-protocol-2tnghj3b.js");return{reason_runtime_version:e,bridge_version:e,protocol_version:Ge,execution_eligible:!0,instance_generation:r.instance_generation,capabilities:{supported_operations:["hands.connect"],hands_worker_artifact_sha256:n.REASON_HANDS_WORKER_ARTIFACT_SHA256,hands_worker_entrypoint:n.REASON_HANDS_WORKER_ENTRYPOINT,hands_slots:1,max_payload_bytes:o.LOCAL_OPERATION_MAX_BYTES,max_result_bytes:o.LOCAL_OPERATION_MAX_BYTES,operation_constraints:{"hands.connect":{ready:!0,execution_mode:"host",transport:"wss_relay",worker:"ara_hands",slots:1,session_group:o.HANDS_SESSION_GROUP,worker_version:n.REASON_HANDS_WORKER_VERSION,protocol_version:i,worker_artifact_sha256:n.REASON_HANDS_WORKER_ARTIFACT_SHA256,worker_entrypoint:n.REASON_HANDS_WORKER_ENTRYPOINT,policy_mode:"full_access",policy_version:1,workspace_base:a.REASON_WORKSPACE_BASE,workspace_layout:a.SESSION_WORKSPACE_LAYOUT,browser_state:"optional_headless",desktop:!1,max_session_ms:43200000,environment_delivery:o.HANDS_ENVIRONMENT_DELIVERY,[o.HANDS_ENVIRONMENT_AT_CLAIM_KEY]:o.HANDS_ENVIRONMENT_AT_CLAIM,[o.HANDS_CLOUD_ACCESS_KEY]:o.HANDS_CLOUD_ACCESS,[o.HANDS_LARGE_ENVIRONMENT_KEY]:o.HANDS_LARGE_ENVIRONMENT,[o.HANDS_CONFINEMENT_KEY]:o.HANDS_CONFINEMENT,[o.HANDS_JOBS_USER_KEY]:o.HANDS_JOBS_USER,vm_hands:"v1"}}}}}var k=["fs.read","fs.write","fs.export","fs.import","exec.run","exec.full","process.list","ports.list","pty.start","jobs.control"],te=new Set(["pty.start","jobs.control"]);function re(r,e){let n=e([{id:"vm-hands",label:"workspace",path:A,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}],{worker:{executionMode:"unsandboxed",readiness:Object.fromEntries(k.map((i)=>[i,!0]))}}),o=r.capabilities,a={...o.operation_constraints};for(let i of k)a[i]={...n.operation_constraints?.[i]??{},ready:!0,execution_mode:n.operation_constraints?.[i]?.execution_mode??"host"};return{...r,capabilities:{...o,supported_operations:["hands.connect",...k],operation_constraints:a}}}function oe(r){for(let e of W("/etc/passwd","utf8").split(`
4
- `)){let n=e.split(":");if(n.length>=4&&Number(n[2])===r&&/^\d+$/.test(n[3]??"")&&Number(n[3])>0)return Number(n[3])}throw Error("vm_hands_payload_account_unavailable")}function se(r,e){let n=e.owner;if(!n||typeof n.organization_id!=="string"||typeof n.device_id!=="string"||typeof e.root_id!=="string")return null;return{version:4,apiOrigin:r.api_origin,orgId:n.organization_id,deviceId:n.device_id,devicePublicKey:"",displayName:"vm-hands",registeredAt:new Date(0).toISOString(),handsSlots:1,roots:[{id:e.root_id,label:"workspace",path:A,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}]}}function ae(r=process.platform,e="/proc/self/oom_score_adj"){if(r!=="linux")return null;let n;try{n=W(e,"utf8").trim()}catch{return{value:"unreadable"}}if(!/^-?\d+$/.test(n))return{value:"unreadable"};let o=Number(n);return o<0?{value:o}:null}async function fe(r,e){let n=ae();if(n)e("vm_hands.oom_protected",{code:"vm_hands_oom_protected",value:n.value}),await new Promise(()=>{setInterval(()=>{return},1073741824)});L(v),L(D),ee(e);let o=C(r,e),a=!1,i=async()=>{if(!await Promise.race([o.then(()=>!0),new Promise((s)=>setTimeout(()=>s(!1),M).unref?.())]))a=!0,e("srt_warm_late",{wait_ms:M})},[{configureDesktopAccount:R},{configureWorkerSandbox:S}]=await Promise.all([import("./desktop-account-5v7x0ajx.js"),import("./worker-sandbox-smqj3mbe.js")]);S();try{R({value:String(r.layout.payload_uid)})}catch{e("payload_account_unavailable"),await new Promise(()=>{setInterval(()=>{return},1073741824)})}let g=new AbortController;for(let t of["SIGTERM","SIGINT"])process.on(t,()=>g.abort());let c=new Map,p,f=new Promise((t)=>{p=t}),w=f.then(()=>import("./vm-hands-executor-7k9z9988.js")).then(({createVmHandsExecutor:t})=>{let s=t({init:r,root:A,runtimeDirectory:v,apiOrigin:r.api_origin,prespawn:!0,onSrtReset:()=>{a=!1,o=C(r,e)},srtWarmLate:()=>a,forward:(_,d,y)=>c.get(_)?.(d,y)??Promise.reject(Error("vm_hands_not_bound")),log:(_,d)=>e(_,d)});return e("executor_loaded"),s}),u=(t)=>async(...s)=>(await w)[t](...s),h=null;w.then((t)=>{h=(s)=>t.executorExited(s)});let m={startExecutor:async(...t)=>(await i(),u("startExecutor")(...t)),killAndVerifyPayload:u("killAndVerifyPayload"),killProbe:u("killProbe"),runProbe:async(...t)=>(await i(),u("runProbe")(...t)),restatLayout:()=>{throw Error("replaced below")},verifyMounts:()=>{throw Error("replaced below")},installEnvironment:()=>{throw Error("replaced below")},executorExited:(t)=>h?h(t):new Promise(()=>{}),takeSrtFallbacks:()=>null};w.then((t)=>{m.restatLayout=()=>t.restatLayout(),m.verifyMounts=()=>t.verifyMounts(),m.installEnvironment=(s,_)=>t.installEnvironment(s,_),m.freezeBind=(s)=>t.freezeBind(s),m.takeSrtFallbacks=()=>t.takeSrtFallbacks?.()??null});let B=await wi(r),Y=new Xr(r,B,m,{envRoot:D}),x=ne(r),I=null,U=Promise.all([x,import("./local-capabilities-c04tbapa.js")]).then(([t,s])=>{I=re(t,s.capabilityInventoryForRoots),e("device_ops_loaded")}).catch((t)=>e("device_ops_unavailable",{error:t instanceof Error?t.name:"error"})),N=f.then(()=>import("./vm-hands-executor-7k9z9988.js")).then(({createVmHandsOpRunners:t,vmHandsBindCgroup:s,VM_HANDS_PAYLOAD_CGROUP:_})=>t({payloadUid:r.layout.payload_uid,payloadGid:oe(r.layout.payload_uid),bindCgroup:(d)=>s(_,d),log:(d,y)=>e(d,y)})).catch(()=>null);N.then((t)=>t?.warm("person")),e("agent_ready"),await bi({apiOrigin:r.api_origin,agent:Y,signal:g.signal,heartbeat:async()=>I??await x,executeOp:async({kind:t,claim:s,bindId:_,signal:d,emit:y})=>{let O=se(r,s);if(!O)return{status:"failed",error_code:"vm_hands_bind_invalid"};let H={executionMode:"unsandboxed",runtimeDirectory:v,readiness:Object.fromEntries(k.map((l)=>[l,!0]))},P=(l)=>{let b=typeof l.kind==="string"?l.kind:"";if(b)y({kind:b,...l.data&&typeof l.data==="object"?{data:l.data}:{}})};if(s.capability==="exec.full"&&t!=="person")return{status:"failed",error_code:"capability_not_granted"};if(s.capability==="automation.call.v1"&&t!=="model")return{status:"failed",error_code:"capability_not_granted"};let j=s.capability==="pty.start"&&t==="person"&&!s.authority;if(te.has(String(s.capability))&&!j){let{executeLocalOperation:l}=await import("./local-capabilities-c04tbapa.js");return l(O,s,{worker:H,signal:d,emit:(b)=>P(b)})}let T=await N;if(!T)return{status:"failed",error_code:"vm_hands_payload_account_unavailable"};return T.run(t,{id:String(s.attempt_id),claim:s,state:O,worker:H},P,d,_)},readyData:({launchId:t})=>({executor_launch_id:t}),log:(t,s)=>{if(t==="vm_hands.registered"||t==="vm_hands.reconnected")p();e(t,s)},onTurn:(t,s)=>{if(s)c.set(t,s);else c.delete(t)}}),await(await w).stop(),(await N)?.stop()}export{pe as parseVmHandsInit,fe as runVmHands};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{qo}from"./vm-hands-entry-lite-vrqzr15t.js";import"./vm-hands-entry-lite-b885gwfh.js";import"./vm-hands-entry-lite-88swf2qr.js";import"./vm-hands-entry-lite-9ay6f56v.js";import"./vm-hands-entry-lite-m11j0f9q.js";export{qo as configureWorkerSandbox};