@reason-machines/cli-linux-arm64-musl 0.2.335 → 0.2.337
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.
- package/bin/ara +1 -1
- package/bin/vm-hands/api-credentials-etg0qnwq.js +2 -0
- package/bin/vm-hands/api-j19tqbqn.js +2 -0
- package/bin/vm-hands/ask-relay-1vtqq978.js +8 -0
- package/bin/vm-hands/connect-cli-d0zvjmkf.js +2 -0
- package/bin/vm-hands/{custom-endpoint-device-dt74zv7m.js → custom-endpoint-device-km6xxtg0.js} +1 -1
- package/bin/vm-hands/desktop-account-cjwaktbe.js +2 -0
- package/bin/vm-hands/{device-workspace-nqxczwd3.js → device-workspace-5xp75zxs.js} +1 -1
- package/bin/vm-hands/{hands-worker-source-tc1snvve.js → hands-worker-source-45asfw2g.js} +1 -1
- package/bin/vm-hands/{index-g4t2q0ep.js → index-rf7w928b.js} +1 -1
- package/bin/vm-hands/local-automation-jkq9qqyt.js +2 -0
- package/bin/vm-hands/local-capabilities-0v47dkgd.js +2 -0
- package/bin/vm-hands/local-desktop-users-t01f06c6.js +2 -0
- package/bin/vm-hands/local-display-mac-ykh2dzvh.js +2 -0
- package/bin/vm-hands/local-display-session-dczh64rd.js +2 -0
- package/bin/vm-hands/local-pty-session-kxj5vhby.js +2 -0
- package/bin/vm-hands/network-contract-4f9xfjwz.js +2 -0
- package/bin/vm-hands/package-9cdhcvkp.js +2 -0
- package/bin/vm-hands/permissions-cyjxf3as.js +2 -0
- package/bin/vm-hands/{reason-hands-protocol-n14gyf7k.js → reason-hands-protocol-t8676r1f.js} +1 -1
- package/bin/vm-hands/{status-4cjtwybf.js → status-p03d7jan.js} +2 -2
- package/bin/vm-hands/version-474ad9ns.js +2 -0
- package/bin/vm-hands/{vm-hands-entry-lite-zgs6j8wj.js → vm-hands-entry-lite-02t1tfe7.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-4b8f37q4.js → vm-hands-entry-lite-1hpmjd5x.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-feaxcj0x.js → vm-hands-entry-lite-2wa0aq74.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-c64behya.js → vm-hands-entry-lite-3dh55nnz.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-dea36bpb.js → vm-hands-entry-lite-3fddeh8v.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-hzqdhpr9.js → vm-hands-entry-lite-4kwqp4rz.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-m0epceqg.js → vm-hands-entry-lite-547nmvs3.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-9rr6gh58.js → vm-hands-entry-lite-6j29vkh5.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-3dx1yqhd.js → vm-hands-entry-lite-8ga7m5ph.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-px64jhhn.js → vm-hands-entry-lite-ah89nzd4.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-5q96en2m.js → vm-hands-entry-lite-bpvxdk3g.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-xa9mfp55.js → vm-hands-entry-lite-cavgmkjf.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-tf5mepq5.js → vm-hands-entry-lite-d8myh0nx.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-qbr9m7zh.js → vm-hands-entry-lite-ewpfck9v.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-cnmd8nft.js → vm-hands-entry-lite-h12jx2e8.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-zykqwmp1.js → vm-hands-entry-lite-hkw64faw.js} +3 -3
- package/bin/vm-hands/{vm-hands-entry-lite-dtcpbbkc.js → vm-hands-entry-lite-hmva2yc7.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-qx8702e7.js → vm-hands-entry-lite-hybhzkvj.js} +75 -75
- package/bin/vm-hands/{vm-hands-entry-lite-9k57wmkv.js → vm-hands-entry-lite-jgjvs1tq.js} +5 -5
- package/bin/vm-hands/{vm-hands-entry-lite-dhzcvvt2.js → vm-hands-entry-lite-kh7w4cpj.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-983czfdb.js → vm-hands-entry-lite-rwp6km63.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-070nd0vy.js → vm-hands-entry-lite-sjfdhffh.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-s64raarx.js → vm-hands-entry-lite-tcewjhvf.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-jzms4xs2.js → vm-hands-entry-lite-tmc063vj.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-mm72ht4e.js → vm-hands-entry-lite-vx5y8jc7.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-h0vcj8z0.js → vm-hands-entry-lite-wfr5mnge.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-awwev9zg.js → vm-hands-entry-lite-xd9vwd5k.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-mtp2h66e.js → vm-hands-entry-lite-y06rgq4n.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-5n6vc7je.js → vm-hands-entry-lite-y9rzr1a3.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-hj6jjk24.js → vm-hands-entry-lite-ytwa3p73.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-7kzy7rxj.js → vm-hands-entry-lite-z55phtry.js} +1 -1
- package/bin/vm-hands/vm-hands-entry-lite.js +1 -1
- package/bin/vm-hands/{vm-hands-executor-5k6sf08v.js → vm-hands-executor-682amrtn.js} +1 -1
- package/bin/vm-hands/vm-hands-op-runner-zhndrtp2.js +2 -0
- package/bin/vm-hands/{vm-hands-runtime-3yefd59g.js → vm-hands-runtime-kdtdv05m.js} +3 -3
- package/bin/vm-hands/worker-sandbox-dhw5qf92.js +2 -0
- package/package.json +1 -1
- package/bin/vm-hands/api-36ywgdp3.js +0 -2
- package/bin/vm-hands/api-credentials-41xjt55r.js +0 -2
- package/bin/vm-hands/ask-relay-9p6w86km.js +0 -8
- package/bin/vm-hands/connect-cli-08yfjvjr.js +0 -2
- package/bin/vm-hands/desktop-account-a16gh9sj.js +0 -2
- package/bin/vm-hands/local-automation-y1qmkezf.js +0 -2
- package/bin/vm-hands/local-capabilities-fsyc3jn0.js +0 -2
- package/bin/vm-hands/local-desktop-users-qej2mfhx.js +0 -2
- package/bin/vm-hands/local-display-mac-4pddah9q.js +0 -2
- package/bin/vm-hands/local-display-session-6ra0rewx.js +0 -2
- package/bin/vm-hands/local-pty-session-kq8bd4pm.js +0 -2
- package/bin/vm-hands/network-contract-qxn4pg15.js +0 -2
- package/bin/vm-hands/package-s8sef5wh.js +0 -2
- package/bin/vm-hands/permissions-83qxqzvy.js +0 -2
- package/bin/vm-hands/version-103dg9h8.js +0 -2
- package/bin/vm-hands/vm-hands-op-runner-zc5pddhs.js +0 -2
- package/bin/vm-hands/worker-sandbox-1m0s1vnq.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{kc as i,lc as l,mc as g,nc as y}from"./vm-hands-entry-lite-t5h3g60g.js";import{Ag as
|
|
2
|
+
import{kc as i,lc as l,mc as g,nc as y}from"./vm-hands-entry-lite-t5h3g60g.js";import{Ag as Y,Bg as H,Cg as V,Eg as S,Fg as _,Hg as P,Ig as C,Jg as I,Lg as O,Og as A,og as Q,pg as J,qg as z,rg as Z,sg as K,tg as $,ug as k,wg as G,yg as X,zg as M}from"./vm-hands-entry-lite-h12jx2e8.js";import{Xh as L,Yh as W,Zh as F,_h as j}from"./vm-hands-entry-lite-6j29vkh5.js";var d=["cgroup_membership_read_failed","cgroup_v2_membership_absent","cgroup_scope_invalid","cgroup_root_unavailable","cgroup_directory_unavailable","cgroup_limit_read_failed","cgroup_events_read_failed","cgroup_current_read_failed","cgroup_stat_read_failed","boot_id_read_failed","boot_id_invalid","guest_meminfo_read_failed","guest_vmstat_read_failed","memory_counter_invalid","memory_field_missing","memory_capacity_invalid"];var a=String.raw`(function(fs, path) {
|
|
3
3
|
const fail = (message, reasonCode) => { throw Object.assign(Error(message), {reasonCode}); };
|
|
4
4
|
const read = (p, reasonCode, trim=true) => { try { const text=fs.readFileSync(p, "utf8"); return trim?text.trim():text; }
|
|
5
5
|
catch { fail("memory_read", reasonCode); } };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Lb as j,Mb as q}from"./vm-hands-entry-lite-
|
|
2
|
+
import{Lb as j,Mb as q}from"./vm-hands-entry-lite-z55phtry.js";function y(v=process.platform){if(j(),v==="linux")q("strict")}
|
|
3
3
|
export{y as t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Rb as D}from"./vm-hands-entry-lite-h01d2fbm.js";import{
|
|
2
|
+
import{Rb as D}from"./vm-hands-entry-lite-h01d2fbm.js";import{li as j}from"./vm-hands-entry-lite-sjfdhffh.js";import{statSync as i}from"fs";import{delimiter as n,join as t}from"path";function _(q,z=process.env.PATH??""){if(!q||q.includes("/")||q.includes("\x00"))return!1;return z.split(n).some((G)=>{if(!G)return!1;try{let Q=i(t(G,q));return Q.isFile()&&(Q.mode&73)!==0}catch{return!1}})}import{spawn as r,spawnSync as e}from"child_process";import{existsSync as k,mkdtempSync as E,readFileSync as O,readdirSync as o,realpathSync as qq,rmSync as b,statSync as zq}from"fs";import{platform as y,tmpdir as g}from"os";import{dirname as A,join as Z}from"path";import{fileURLToPath as Gq,pathToFileURL as T}from"url";var Hq=["bwrap","socat","rg"],Jq=2000,v=20000,Qq=3,P=4000,Vq=new Set([".git",".hg",".svn","node_modules"]),Wq=["runAsHostUid","sysrq-trigger"],Yq=Z(A(A(Gq(import.meta.url))),"packages/sandbox-runtime/src/index.ts"),h=!1;function fq(){h=!0}async function u(){let z=h?Z(A(qq(process.execPath)),"runtime","srt"):void 0;if(z&&process.platform==="linux"&&!k(Z(z,"vendor","seccomp",process.arch,"apply-seccomp")))throw Error("packaged_sandbox_runtime_vendor_missing");if(z){let J=O(Z(z,"sandbox-runtime.mjs"),"utf8");for(let Y of Wq)if(!J.includes(Y))throw Error(`packaged_sandbox_runtime_fork_missing:${Y}`)}let H=(await import(z?T(Z(z,"sandbox-runtime.mjs")).href:T(Yq).href)).SandboxManager;if(!H||typeof H.initialize!=="function"||typeof H.wrapWithSandboxArgv!=="function")throw Error("sandbox-runtime does not expose the expected SandboxManager API.");return{SandboxManager:H}}function Zq(q={}){if((q.platformName??y())!=="linux")return!1;let G=q.fileExists??k,Q=q.readFile??((H)=>O(H,"utf8"));for(let H of["/.dockerenv","/run/.containerenv"])try{if(G(H))return!0}catch{}try{return/docker|containerd|kubepods|lxc|libpod/.test(Q("/proc/1/cgroup"))}catch{return!1}}function l(q){return["/bin/true","/usr/bin/true"].find((z)=>q(z))??null}function $q(q,z){return q==="strict"?["--ro-bind","/","/","--unshare-pid","--unshare-user","--cap-drop","ALL","--proc","/proc","--",z]:["--ro-bind","/","/","--unshare-pid","--unshare-user","--bind","/proc","/proc","--",z]}function jq(q,z){try{let G=e("bwrap",$q(q,z),{stdio:"ignore",timeout:Jq});return!G.error&&G.status===0}catch{return!1}}function Bq(q){let z=q.platformName??y();if(z!=="linux")return null;let G=q.hasExecutable??_;if(!Hq.every((V)=>G(V)))return null;let Q=q.fileExists??k,H=l(Q);if(!H)return null;let J=B??(q.containerized??Zq({platformName:z})?"weak":"strict");return(q.probeNamespaces??((V)=>jq(V,H)))(J)?J:null}var L=null,C=!1,K=null,S=null,f=null,B=null,F=null;function M(){throw I("sandbox_mode_conflict"),new j("sandbox_unavailable","Sandbox process policy conflicts with an existing probe or session. Restart the worker.")}function xq(q){if(B!==null&&B!==q||C&&L!==null&&L!==q||F!==null&&F!==q)M();B=q}function I(q){K=q}function c(q){if(K)return!1;if(!C){if(L=Bq(q??{}),C=!0,L&&!q)d()}return L!==null}function Lq(){return c()?L:null}var U=null,w=0;function m(q){if(K)throw new j("sandbox_unavailable","Confined execution is unavailable in this worker process.");if(B&&q.sandboxMode&&B!==q.sandboxMode)M();let z=B??q.sandboxMode??Lq();if(!z)throw new j("sandbox_unavailable","Confined command execution is unavailable on this operating system.");if(F&&F!==z)M();return F=z,U??=(async()=>{let{SandboxManager:G}=await(q.loadSandboxRuntime??u)();return await G.initialize(Iq(z)),G})().catch((G)=>{throw U=null,I(`initialize_failed: ${String(G)}`),G instanceof j?G:new j("sandbox_unavailable","The confined execution sandbox failed to start.")}),U.then((G)=>{if(K)throw new j("sandbox_unavailable","Confined execution became unavailable during sandbox initialization.");return G})}async function Kq(){let q=U;if(U=null,!q)return;try{await(await q).reset()}catch{}}async function d(q={}){if(K)return!1;if(q.loadSandboxRuntime)return x(q.loadSandboxRuntime);if(!c())return!1;return S??=x(u),S}async function x(q){try{let{SandboxManager:z}=await q(),G=z.checkDependencies().errors;if(G.length>0)return I(`dependencies_missing: ${G.join(", ")}`),!1;return!K}catch(z){return I(`load_failed: ${String(z)}`),!1}}async function Rq(q={}){if(!q.loadSandboxRuntime&&!q.sandboxMode){if(!await d())return!1;return f??=R({}),f}return R(q)}async function R(q){let z;try{z=await m(q)}catch{return!1}let G=await Xq(z);if(!G)I("confined_command_failed");if(w===0)await Kq();return G}async function Xq(q){let z=l(k);if(!z)return!1;let G=E(Z(g(),"reason-device-probe-"));try{let{argv:Q}=await q.wrapWithSandboxArgv(a([z]),p(),{filesystem:s({root:G,allowWrite:!1,temporaryDirectory:G,protectedPaths:[]})},void 0,G),[H,...J]=Q;if(!H)return!1;return await Fq(H,J,G)}catch{return!1}finally{try{q.cleanupAfterCommand()}catch{}b(G,{recursive:!0,force:!0})}}function Fq(q,z,G,Q={}){return new Promise((H)=>{let J=!1,Y,V=(X)=>{if(J)return;J=!0,clearTimeout(Y),H(X)},W;try{W=(Q.spawnChild??r)(q,z,{cwd:G,env:{PATH:D,HOME:G,TMPDIR:G},stdio:"ignore"})}catch{V(!1);return}W.once("error",()=>V(!1));let $=(X,N)=>V(X===0&&N===null);if(W.once("exit",$),W.once("close",$),W.exitCode!==null||W.signalCode!==null)$(W.exitCode,W.signalCode);if(J)return;Y=setTimeout(()=>{V(!1);try{W.kill("SIGKILL")}catch{}},Math.min(Q.timeoutMs??v,v))})}function p(q=k){return["/bin/bash","/bin/sh"].find((z)=>q(z))??"/bin/sh"}function a(q){return q.map((z)=>`'${z.replaceAll("'","'\\''")}'`).join(" ")}function Uq(q,z,G=(Q)=>o(Q,{withFileTypes:!0}).filter((H)=>H.isDirectory()||H.isFile()).map((H)=>H.name)){let Q=[],H=[{path:q,depth:0}],J=0;while(H.length>0&&J<P){let Y=H.pop(),V;try{V=G(Y.path)}catch{continue}for(let W of V){if(J+=1,J>P)break;let $=Z(Y.path,W);if(z($)){Q.push($);continue}if(Y.depth+1<Qq&&!Vq.has(W))H.push({path:$,depth:Y.depth+1})}}return Q}function s(q){let z=Z(q.root,".git"),G=[];try{if(zq(z).isDirectory())G=[Z(z,"config"),Z(z,"hooks")]}catch{}return{denyRead:["/home","/root","/tmp","/tmp/.X11-unix",...q.protectedPaths],allowRead:[q.root,q.temporaryDirectory],allowWrite:[...q.allowWrite?[q.root]:[],q.temporaryDirectory],denyWrite:[...q.protectedPaths,...G]}}function Iq(q){return{network:{allowedDomains:[],deniedDomains:[]},filesystem:{denyRead:[],allowRead:[],allowWrite:[],denyWrite:[]},...q==="weak"?{enableWeakerNestedSandbox:!0}:{}}}function Dq(q){let z=q.createTemporaryDirectory??(()=>E(Z(g(),"reason-device-"))),G=q.removeTemporaryDirectory??((Q)=>b(Q,{recursive:!0,force:!0}));return async(Q,H,J)=>{let Y=await m(q),V=z();w+=1;try{let W;try{W=await Y.wrapWithSandboxArgv(a([Q,...H]),q.shell??p(),{filesystem:s({root:J.root,allowWrite:J.allowWrite,temporaryDirectory:V,protectedPaths:Uq(J.root,q.isProtectedPath)})},J.signal,J.cwd)}catch(N){throw N instanceof j?N:new j("sandbox_unavailable","The confined execution sandbox could not wrap the command.")}let[$,...X]=W.argv;if(!$)throw new j("sandbox_unavailable","The confined execution sandbox produced no command.");return await q.spawnCaptured($,X,{cwd:J.cwd,timeoutMs:J.timeoutMs,signal:J.signal,env:q.scrubEnvironment(J.root,V)})}finally{w-=1;try{Y.cleanupAfterCommand()}catch{}G(V)}}}
|
|
3
3
|
export{_ as Kb,fq as Lb,xq as Mb,c as Nb,Rq as Ob,p as Pb,Dq as Qb};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import"./vm-hands-entry-lite-
|
|
2
|
+
import"./vm-hands-entry-lite-8ga7m5ph.js";import"./vm-hands-entry-lite-jgjvs1tq.js";import"./vm-hands-entry-lite-y06rgq4n.js";import{ri as A}from"./vm-hands-entry-lite-ah89nzd4.js";import{readFileSync as J}from"fs";var G=performance.now();delete process.env.BUN_BE_BUN;var q=(j,b={})=>console.log(JSON.stringify({stage:j,ms:Math.round(performance.now()),...b}));async function K(){if(process.argv.includes("--vm-hands-op-runner")){let{runVmHandsOpRunner:D}=await import("./vm-hands-op-runner-zhndrtp2.js");await D();return}q("parsed",{t0:Math.round(G)});let j="";try{j=J(3,"utf8")}catch{}q("fd3_read",{bytes:j.length});let b=null;if(j.trim())try{b=JSON.parse(j)}catch{b=null}if(!b||typeof b!=="object"||Array.isArray(b))q(j.trim()?"identity_invalid":"identity_free"),await new Promise(()=>{setInterval(()=>{return},1073741824)});let{parseVmHandsInit:B,runVmHands:C}=await import("./vm-hands-runtime-kdtdv05m.js"),z=B(b);if(!z)q("identity_invalid"),await new Promise(()=>{setInterval(()=>{return},1073741824)});await C(z,q),process.exit(0)}K();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{a as Tq}from"./vm-hands-entry-lite-
|
|
2
|
+
import{a as Tq}from"./vm-hands-entry-lite-wfr5mnge.js";import{$a as Lq,Fb as Uq,Ha as Bq,Jb as Fq}from"./vm-hands-entry-lite-bpvxdk3g.js";import"./vm-hands-entry-lite-h01d2fbm.js";import"./vm-hands-entry-lite-y9rzr1a3.js";import"./vm-hands-entry-lite-t5h3g60g.js";import"./vm-hands-entry-lite-jgjvs1tq.js";import"./vm-hands-entry-lite-y06rgq4n.js";import"./vm-hands-entry-lite-d8myh0nx.js";import"./vm-hands-entry-lite-cavgmkjf.js";import"./vm-hands-entry-lite-kh7w4cpj.js";import"./vm-hands-entry-lite-h12jx2e8.js";import"./vm-hands-entry-lite-vx5y8jc7.js";import"./vm-hands-entry-lite-tcewjhvf.js";import"./vm-hands-entry-lite-6j29vkh5.js";import"./vm-hands-entry-lite-rwp6km63.js";import"./vm-hands-entry-lite-sjfdhffh.js";import"./vm-hands-entry-lite-ah89nzd4.js";import{spawn as Cq}from"child_process";import{chmodSync as Iq,chownSync as vq,existsSync as c,lstatSync as i,mkdirSync as o,mkdtempSync as Oq,readdirSync as s,readFileSync as P,realpathSync as bq,rmdirSync as e,rmSync as hq,writeFileSync as m}from"fs";import{join as F}from"path";var Mq="/sys/fs/cgroup/reason-payload",H="vm-hands",xq="/run/ara-srt/fallbacks.jsonl",E="/reason-person",r=5000,Vq=1e4,Qq="__VM_HANDS_PROOF_DIR__",_q="__VM_HANDS_PROBE_NONCE__";class M extends Error{code;constructor(q,Q){super(Q);this.code=q}}function Hq(q,Q){if(!/^[0-9a-f-]{36}$/i.test(Q))throw new M("vm_hands_bind_invalid","bad bind id");return F(q,H,`b-${Q.toLowerCase()}`)}var gq=5000,wq=(q)=>`'${q.replaceAll("'","'\\''")}'`;function dq(q){let Q=q.cgroup??Mq,J=q.init.layout.payload_uid,X=q.log??(()=>{}),G=new Map,z=new Map,K=0,C=()=>{try{let Z=P("/run/ara-srt/starts.jsonl","utf8"),$=Z.slice(K>Z.length?0:K).split(`
|
|
3
3
|
`).filter(Boolean);K=Z.length;let W=$.map((T)=>{try{return Number(JSON.parse(T).elapsed_ms)||0}catch{return 0}});if(W.length)X("vm_hands.srt_server_starts",{count:W.length,elapsed_ms:W.slice(0,8)})}catch{}},j=null,g=!1,h=q.srtCgroup??"/sys/fs/cgroup/reason-srt",I=()=>{j??=Wq()},x=0,V=()=>{try{let Z=P(xq,"utf8"),$=Z.slice(x>Z.length?0:x);x=Z.length;let W=$.split(`
|
|
4
4
|
`).filter(Boolean).slice(0,1000);if(!W.length)return null;let T={},L=0;for(let w of W)try{let R=JSON.parse(w),B=typeof R.code==="string"&&/^[a-z_]{1,40}$/.test(R.code)?R.code:"other";if(T[B]=(T[B]??0)+1,typeof R.elapsed_ms==="number")L=Math.max(L,R.elapsed_ms)}catch{T.unparsed=(T.unparsed??0)+1}return X("vm_hands.srt_fallbacks",{count:W.length,codes:T,max_elapsed_ms:L}),{count:W.length,codes:T,max_elapsed_ms:L}}catch{return null}},f=!1,u=(Z,$,W)=>{if(f)throw Error("vm_hands_pool_held");return jq(Z,$,W)},d=(Z)=>($,W,T)=>Cq("/bin/sh",["-c",`echo $$ > ${wq(F(Z,"cgroup.procs"))} || exit 125; exec "$@"`,"vm-hands-join",$,...W],T),jq=d(F(Q,H)),l=F(Q,H,"probe"),S=(Z)=>Hq(Q,Z),Nq=(Z)=>{let $=S(Z);try{o($,{mode:493})}catch(W){if(!(W&&typeof W==="object"&&("code"in W)&&W.code==="EEXIST"))throw new M("vm_hands_bind_failed","bind cgroup")}return $},Aq=(Z)=>{try{e(S(Z))}catch{}},_=q.prespawn?Lq({spawnProcess:u,...q.relayDependencies?.sourceEntrypoint?{sourceEntrypoint:q.relayDependencies.sourceEntrypoint}:{},log:(Z,$)=>X(Z,$??{})}):null;_?.arm();let n=_?setInterval(()=>{_.arm()},gq):null;n?.unref?.();async function a(Z){let $=G.get(Z);if(G.delete(Z),!$)return;$.abort.abort(),await $.done}return{bindCgroup:S,async startExecutor(Z){if(I(),z.set(Z.bindId,Wq()),g=!0,!Z.claim)throw new M("vm_hands_bind_invalid","an executor needs the claim it serves");await a(Z.bindId);let{claim:$,bindId:W}=Z,T=Nq(W),L=$.owner;if(!L||typeof L.device_id!=="string"||typeof $.root_id!=="string")throw new M("vm_hands_bind_invalid","claim without its owner Device or root");let w=new AbortController,R,B,N=new Promise((Y,A)=>{R=Y,B=A}),v,D=new Promise((Y)=>{v=Y}),O=Fq({headless:!0,hostExecution:!0,runtimeDirectory:q.runtimeDirectory,deviceIdentity:{deviceId:L.device_id,rootId:$.root_id,apiOrigin:q.apiOrigin},claimOwner:$.owner,root:q.root,runId:$.run_id,operationId:$.operation_id,attemptId:$.attempt_id,payload:Object.fromEntries(Object.entries($.payload).filter(([Y])=>!Y.startsWith("vm_hands_"))),signal:w.signal,emitEvent:async(Y,A)=>{if(Y==="hands.ready"){R(A);return}if(Y==="hands.started"||Y==="hands.stopped"||Y==="hands.failed")return;await q.forward(W,Y,A)}},{...q.relayDependencies,spawnWorker:(Y)=>d(T)(Y.command,Y.args,Y.options),..._?{takePrespawnedWorker:(Y)=>{let A=_.take(Y);if(!A?.pid)return A;try{return m(F(T,"cgroup.procs"),String(A.pid)),A}catch{try{A.kill("SIGKILL")}catch{}return null}},adoptSpawnedWorker:_.adopt}:{}}).then(()=>{v("executor_stopped")},(Y)=>{let A=Y&&typeof Y==="object"&&"code"in Y?String(Y.code):"executor_failed";B(new M(A,Y instanceof Error?Y.message:String(Y))),v(A)}).finally(()=>B(new M("vm_hands_executor_exited","executor ended before it was ready")));G.set(W,{abort:w,done:O,exited:D,operationId:$.operation_id,runId:$.run_id,expiresAtMs:Date.parse(String($.payload.expires_at??""))||0});let y=await N,U=y.executor_launch_id;if(typeof U!=="string")throw new M("vm_hands_bind_failed","executor ready without a launch id");return{launchId:U,readyData:y,applied:{hands_confinement:typeof $.payload.hands_confinement==="string"?$.payload.hands_confinement:null,browser_egress:$.payload.browser_egress??null}}},takeSrtFallbacks:V,executorExited(Z){return G.get(Z)?.exited??new Promise(()=>{})},freezeBind(Z){let $=S(Z);if(c(F($,"cgroup.freeze")))m(F($,"cgroup.freeze"),"1")},async killAndVerifyPayload(Z){let $=new Set(Z?.keep??[]);if($.size)return Pq(Z?.bindId??null,$);f=!0;let W=Jq();try{await Kq();let T=Promise.all([...G.keys()].map((B)=>a(B).catch(()=>{return})));C();let L=Date.now()+r;await p(Q,L,"payload"),await T;let w=(g||q.srtWarmLate?.()===!0)&&c(F(h,"cgroup.events"));if(w)await p(h,L,"srt");let R=Xq(J).filter((B)=>!b(B,E));if(j!==null){let B=qq(j).filter((N)=>N!==process.pid&&!b(N,E));if(B.length)throw X("vm_hands.kill_strays",{strays:B.slice(0,16).map((N)=>{let v="?",D="?";try{v=P(`/proc/${N}/comm`,"utf8").trim().slice(0,32)}catch{}try{D=(P(`/proc/${N}/cgroup`,"utf8").split(`
|
|
5
5
|
`).find((O)=>O.startsWith("0::"))??"").slice(3,80)}catch{}return{pid:N,comm:v,cgroup:D}})}),new M("vm_hands_kill_unverified",`${B.length} process(es) the run started survived it`);j=null}if(g=!1,w)q.onSrtReset?.();if(R.length)throw X("vm_hands.kill_survivors",{pids:R.slice(0,16)}),new M("vm_hands_kill_unverified",`${R.length} payload-uid process(es) outside the payload cgroup`);z.clear();for(let B of $q())try{e(F(Q,H,B))}catch{}}finally{f=!1,W()}if(_)setTimeout(()=>{if(!G.size)_.arm()},100).unref?.()},async killProbe(){let Z=Date.now()+r;if(c(F(l,"cgroup.events"))){await p(l,Z,"probe");try{e(l)}catch{}}let $=Zq(process.pid);if($===null)throw new M("vm_hands_kill_unverified","agent start time unreadable");await Sq(Q,$,Z);let W=(L)=>{let w=Zq(L);return w!==null&&w<=$},T=Xq(J).filter((L)=>W(L)&&!b(L,E));if(T.length)throw X("vm_hands.kill_survivors",{pids:T.slice(0,16),at:"attest"}),new M("vm_hands_kill_unverified",`${T.length} payload-uid process(es) from before this agent`);if(j!==null){let L=[Q,F(Q,H)].map((B)=>B.replace(/^\/sys\/fs\/cgroup/,"")),w=h.replace(/^\/sys\/fs\/cgroup/,""),R=qq(j).filter((B)=>B!==process.pid&&!b(B,E)&&!b(B,"/reason-vm-hands")&&!b(B,w)&&!L.some((N)=>zq(B,N)));if(R.length)throw X("vm_hands.kill_strays",{strays:R.slice(0,16).map((B)=>({pid:B})),at:"attest"}),new M("vm_hands_kill_unverified",`${R.length} process(es) the probe started survived it`);j=null}},async runProbe({nonce:Z,script:$}){if(I(),!$.includes(Qq))throw new M("vm_hands_probe_failed","probe names no proof directory");let W=q.proofParent??"/tmp/reason-vm-hands-proof";o(W,{mode:457,recursive:!0});let T=i(W);if(T.isSymbolicLink()||!T.isDirectory()||T.uid!==(process.getuid?.()??-1)||(T.mode&4095)!==457)throw new M("vm_hands_probe_failed","proof parent is not root's 0711 directory");let L=Oq(F(W,"p-")),w=!1;try{if(!/^[A-Za-z0-9/._-]+$/.test(L)||!/^[A-Za-z0-9_-]{1,128}$/.test(Z))throw new M("vm_hands_probe_failed","proof directory path or nonce");vq(L,J,J),Iq(L,448);let R=i(L).ino;try{o(l,{mode:493})}catch(D){if(!(D&&typeof D==="object"&&("code"in D)&&D.code==="EEXIST"))throw new M("vm_hands_probe_failed","probe cgroup")}let B=d(l)("/bin/bash",["-c",$.replaceAll(Qq,L).replaceAll(_q,Z)],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:["ignore","pipe","ignore"]}),N="";B.stdout?.on("data",(D)=>{if(N.length<16384)N+=D.toString("utf8").slice(0,16384-N.length)});let v=await new Promise((D)=>{let O=setTimeout(()=>{w=!0,B.kill("SIGKILL"),D(124)},Vq);B.once("error",()=>{clearTimeout(O),D(127)}),B.once("close",(y)=>{clearTimeout(O),D(y??1)})});return X("vm_hands.probe",{nonce_len:Z.length,exit_code:v}),{exitCode:v,markers:N,proofDirInode:R}}finally{if(!w)hq(L,{recursive:!0,force:!0})}},restatLayout(){let{session_root:Z,alias:$}=q.init.layout,W="invalid";try{Uq(Z),W="0:0:755"}catch{}let T=!1,L=-1;try{let w=i($);L=w.uid,T=W==="0:0:755"&&$===F(Z,"repo")&&!w.isSymbolicLink()&&w.isDirectory()&&bq($)===$&&w.uid===J}catch{}return{root_mode:W,alias_ok:T,owner_uid:L}},installEnvironment(Z,$){let W=G.get(Z);if(!W)throw new M("environment_unavailable","no executor owns an environment");return Bq({root:q.root,operationId:W.operationId,payload:$}).installed_revision},async stop(){if(n)clearInterval(n);_?.close(),await Promise.all([...G.keys()].map((Z)=>a(Z)))}};function $q(){try{return s(F(Q,H),{withFileTypes:!0}).filter((Z)=>Z.isDirectory()&&/^b-[0-9a-f-]{36}$/.test(Z.name)).map((Z)=>Z.name)}catch{return[]}}async function Pq(Z,$){let W=new Set([...$].map((L)=>L.toLowerCase())),T=Jq();try{await Kq();let L=Date.now()+r,w=new Set($q().filter((U)=>!W.has(U.slice(2))).map((U)=>U.slice(2)));if(Z)w.add(Z.toLowerCase());let R=null;for(let U of w){let Y=a(U).catch(()=>{return}),A=z.get(U);if(A!==void 0)R=R===null?A:Math.min(R,A);if(c(F(S(U),"cgroup.events")))await p(S(U),L,"bind");await Y}let B=[...W].map((U)=>S(U).replace(/^\/sys\/fs\/cgroup/,"")),N=[Q,F(Q,H)].map((U)=>U.replace(/^\/sys\/fs\/cgroup/,"")),v=h.replace(/^\/sys\/fs\/cgroup/,""),D=(U)=>b(U,E)||B.some((Y)=>b(U,Y)),O=Xq(J).filter((U)=>!D(U));if(O.length)throw X("vm_hands.kill_survivors",{pids:O.slice(0,16),beside:W.size}),new M("vm_hands_kill_unverified",`${O.length} payload-uid process(es) outside a live bind`);let y=(U)=>!D(U)&&!b(U,"/reason-vm-hands")&&!b(U,v)&&!N.some((Y)=>zq(U,Y));if(R!==null){let U=qq(R).filter((Y)=>Y!==process.pid&&y(Y));if(U.length)throw X("vm_hands.kill_strays",{strays:U.slice(0,16).map((Y)=>({pid:Y})),beside:W.size}),new M("vm_hands_kill_unverified",`${U.length} process(es) the run started survived it`)}for(let U of w)z.delete(U),Aq(U)}finally{T()}}}function Zq(q,Q="/proc"){try{let J=P(F(Q,String(q),"stat"),"utf8"),X=Number(J.slice(J.lastIndexOf(")")+2).split(" ")[19]);return Number.isFinite(X)?X:null}catch{return null}}function kq(q,Q="/proc"){try{let J=P(F(Q,String(q),"stat"),"utf8"),X=Number(J.slice(J.lastIndexOf(")")+2).split(" ")[1]);return Number.isFinite(X)?X:null}catch{return null}}async function Sq(q,Q,J){try{m(F(q,"cgroup.freeze"),"1")}catch(X){throw new M("vm_hands_kill_unverified",`payload cgroup.freeze: ${X instanceof Error?X.message:String(X)}`)}try{for(;;){let X=fq(q).filter((z)=>Rq(z,q)),G=new Set(X.filter((z)=>{let K=Zq(z);return K!==null&&K<=Q}));for(let z=!0;z;){z=!1;for(let K of X){if(G.has(K))continue;let C=kq(K);if(C!==null&&G.has(C))G.add(K),z=!0}}if(G.size===0)return;if(Date.now()>J)throw new M("vm_hands_kill_unverified",`${G.size} previous-boot process(es) survived`);for(let z of G)try{process.kill(z,"SIGKILL")}catch{}await new Promise((z)=>setTimeout(z,10))}}finally{try{m(F(q,"cgroup.freeze"),"0")}catch{}}}function zq(q,Q,J="/proc"){try{return P(F(J,String(q),"cgroup"),"utf8").split(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{M as k,N as m,O as l}from"./vm-hands-entry-lite-
|
|
3
|
-
`,{mode:420}),Q("srt_base_keyed",{})}catch{Q("srt_base_keyed_skipped",{reason:"error"})}}function R(Q,j){let J=(F)=>{return j("srt_warm_skipped",{reason:F}),Promise.resolve()};if(typeof Q.srt_base_settings!=="string")return J("no_settings");let Z=Buffer.from(Q.srt_base_settings,"base64");if(Z.length===0||Z.length>qj||Z.toString("base64")!==Q.srt_base_settings)return J("settings_invalid");try{let F=w(S);if(!F.isDirectory()||F.uid!==0||(F.mode&18)!==0)return J("cgroup_unsafe");for(let[H,g]of[[p,!1],["/usr/local/bin",!0]]){let Y=w(H);if((g?!Y.isDirectory():!Y.isFile())||Y.uid!==0||(Y.mode&18)!==0)return J("srt_exec_unsafe")}}catch{return J("cgroup_or_exec_missing")}if((process.getuid?.()??-1)!==0)return J("not_root");let X=performance.now(),z=t("sha256").update(Z).digest("hex"),W=`${P}/srt-base-settings.json`;try{d(W,Z,{mode:384,flag:"w"})}catch{return J("settings_write")}let L=a("/bin/sh",["-c",`echo $$ > ${S}/cgroup.procs || exit 125; exec "$@"`,"vm-hands-srt",p,"--settings",W,"--idle-ms",String(Jj),"--","/bin/true"],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:"ignore"});return new Promise((F)=>{L.once("error",()=>{j("srt_warm_failed",{reason:"spawn"}),F()}),L.once("close",(H)=>{j(H===0?"srt_warm_done":"srt_warm_failed",{exit_code:H,warm_ms:Math.round(performance.now()-X),settings_sha256:z}),F()})})}var u=3000;function Lj(Q){if(!Q||typeof Q!=="object"||Array.isArray(Q))return null;let j=Q,J=j.layout,Z=j.device_key,X=j.credential;return typeof j.workspace_id==="string"&&Number.isSafeInteger(j.instance_generation)&&typeof j.api_origin==="string"&&jj.test(j.api_origin)&&typeof j.manifest_digest==="string"&&!!X&&typeof X.key_id==="string"&&Number.isSafeInteger(X.expires_at_ms)&&typeof X.signature==="string"&&!!J&&typeof J.session_root==="string"&&typeof J.alias==="string"&&Number.isSafeInteger(J.payload_uid)&&typeof J.kind==="string"&&!!Z&&typeof Z.pkcs8==="string"&&typeof Z.spki==="string"?j:null}function y(Q){s(Q,{recursive:!0,mode:448});let j=e(Q);if(!j.isDirectory()||(j.mode&63)!==0||j.uid!==(process.getuid?.()??-1))throw Error(`vm_hands_runtime_directory_unsafe: ${Q}`)}async function Zj(Q){let[{CLI_VERSION:j},J,Z,X]=await Promise.all([import("./version-
|
|
4
|
-
`)){let J=j.split(":");if(J.length>=4&&Number(J[2])===Q&&/^\d+$/.test(J[3]??"")&&Number(J[3])>0)return Number(J[3])}throw Error("vm_hands_payload_account_unavailable")}function Fj(Q,j){let J=j.owner;if(!J||typeof J.organization_id!=="string"||typeof J.device_id!=="string"||typeof j.root_id!=="string")return null;return{version:4,apiOrigin:Q.api_origin,orgId:J.organization_id,deviceId:J.device_id,devicePublicKey:"",displayName:"vm-hands",registeredAt:new Date(0).toISOString(),handsSlots:1,roots:[{id:j.root_id,label:"workspace",path:T,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}]}}async function Mj(Q,j){y(P),y(O),Qj(j);let J=R(Q,j),Z=!1,X=async()=>{if(!await Promise.race([J.then(()=>!0),new Promise(($)=>setTimeout(()=>$(!1),u).unref?.())]))Z=!0,j("srt_warm_late",{wait_ms:u})},[{configureDesktopAccount:z},{configureWorkerSandbox:W}]=await Promise.all([import("./desktop-account-
|
|
2
|
+
import{M as k,N as m,O as l}from"./vm-hands-entry-lite-8ga7m5ph.js";import{qd as v}from"./vm-hands-entry-lite-jgjvs1tq.js";import"./vm-hands-entry-lite-y06rgq4n.js";import{ri as G}from"./vm-hands-entry-lite-ah89nzd4.js";import{spawn as a}from"child_process";import{createHash as t}from"crypto";import{lstatSync as w,mkdirSync as s,readFileSync as i,statSync as e,writeFileSync as d}from"fs";var P="/run/reason-vm-hands",O="/run/reason-vm-hands/env",T="/home/runner/.reason/workspace",jj=/^https:\/\/[a-z0-9.-]+(?::\d{1,5})?$/,S="/sys/fs/cgroup/reason-srt",p="/usr/local/bin/ara-srt-exec",qj=65536,Jj=21600000;function Qj(Q,j="/run/ara-srt"){try{if((process.getuid?.()??-1)!==0)return;s(j,{recursive:!0,mode:448});let J=w(j);if(!J.isDirectory()||J.uid!==0||(J.mode&63)!==0){Q("srt_base_keyed_skipped",{reason:"socket_dir_unsafe"});return}d(`${j}/base-keyed`,`1
|
|
3
|
+
`,{mode:420}),Q("srt_base_keyed",{})}catch{Q("srt_base_keyed_skipped",{reason:"error"})}}function R(Q,j){let J=(F)=>{return j("srt_warm_skipped",{reason:F}),Promise.resolve()};if(typeof Q.srt_base_settings!=="string")return J("no_settings");let Z=Buffer.from(Q.srt_base_settings,"base64");if(Z.length===0||Z.length>qj||Z.toString("base64")!==Q.srt_base_settings)return J("settings_invalid");try{let F=w(S);if(!F.isDirectory()||F.uid!==0||(F.mode&18)!==0)return J("cgroup_unsafe");for(let[H,g]of[[p,!1],["/usr/local/bin",!0]]){let Y=w(H);if((g?!Y.isDirectory():!Y.isFile())||Y.uid!==0||(Y.mode&18)!==0)return J("srt_exec_unsafe")}}catch{return J("cgroup_or_exec_missing")}if((process.getuid?.()??-1)!==0)return J("not_root");let X=performance.now(),z=t("sha256").update(Z).digest("hex"),W=`${P}/srt-base-settings.json`;try{d(W,Z,{mode:384,flag:"w"})}catch{return J("settings_write")}let L=a("/bin/sh",["-c",`echo $$ > ${S}/cgroup.procs || exit 125; exec "$@"`,"vm-hands-srt",p,"--settings",W,"--idle-ms",String(Jj),"--","/bin/true"],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:"ignore"});return new Promise((F)=>{L.once("error",()=>{j("srt_warm_failed",{reason:"spawn"}),F()}),L.once("close",(H)=>{j(H===0?"srt_warm_done":"srt_warm_failed",{exit_code:H,warm_ms:Math.round(performance.now()-X),settings_sha256:z}),F()})})}var u=3000;function Lj(Q){if(!Q||typeof Q!=="object"||Array.isArray(Q))return null;let j=Q,J=j.layout,Z=j.device_key,X=j.credential;return typeof j.workspace_id==="string"&&Number.isSafeInteger(j.instance_generation)&&typeof j.api_origin==="string"&&jj.test(j.api_origin)&&typeof j.manifest_digest==="string"&&!!X&&typeof X.key_id==="string"&&Number.isSafeInteger(X.expires_at_ms)&&typeof X.signature==="string"&&!!J&&typeof J.session_root==="string"&&typeof J.alias==="string"&&Number.isSafeInteger(J.payload_uid)&&typeof J.kind==="string"&&!!Z&&typeof Z.pkcs8==="string"&&typeof Z.spki==="string"?j:null}function y(Q){s(Q,{recursive:!0,mode:448});let j=e(Q);if(!j.isDirectory()||(j.mode&63)!==0||j.uid!==(process.getuid?.()??-1))throw Error(`vm_hands_runtime_directory_unsafe: ${Q}`)}async function Zj(Q){let[{CLI_VERSION:j},J,Z,X]=await Promise.all([import("./version-474ad9ns.js"),import("./hands-worker-source-45asfw2g.js"),import("./network-contract-4f9xfjwz.js"),import("./device-workspace-5xp75zxs.js")]),{REASON_HANDS_PROTOCOL_VERSION:z}=await import("./reason-hands-protocol-t8676r1f.js");return{reason_runtime_version:j,bridge_version:j,protocol_version:v,execution_eligible:!0,instance_generation:Q.instance_generation,capabilities:{supported_operations:["hands.connect"],hands_worker_artifact_sha256:J.REASON_HANDS_WORKER_ARTIFACT_SHA256,hands_worker_entrypoint:J.REASON_HANDS_WORKER_ENTRYPOINT,hands_slots:1,max_payload_bytes:Z.LOCAL_OPERATION_MAX_BYTES,max_result_bytes:Z.LOCAL_OPERATION_MAX_BYTES,operation_constraints:{"hands.connect":{ready:!0,execution_mode:"host",transport:"wss_relay",worker:"ara_hands",slots:1,session_group:Z.HANDS_SESSION_GROUP,worker_version:J.REASON_HANDS_WORKER_VERSION,protocol_version:z,worker_artifact_sha256:J.REASON_HANDS_WORKER_ARTIFACT_SHA256,worker_entrypoint:J.REASON_HANDS_WORKER_ENTRYPOINT,policy_mode:"full_access",policy_version:1,workspace_base:X.REASON_WORKSPACE_BASE,workspace_layout:X.SESSION_WORKSPACE_LAYOUT,browser_state:"optional_headless",desktop:!1,max_session_ms:43200000,environment_delivery:Z.HANDS_ENVIRONMENT_DELIVERY,[Z.HANDS_ENVIRONMENT_AT_CLAIM_KEY]:Z.HANDS_ENVIRONMENT_AT_CLAIM,[Z.HANDS_CLOUD_ACCESS_KEY]:Z.HANDS_CLOUD_ACCESS,[Z.HANDS_LARGE_ENVIRONMENT_KEY]:Z.HANDS_LARGE_ENVIRONMENT,[Z.HANDS_CONFINEMENT_KEY]:Z.HANDS_CONFINEMENT,[Z.HANDS_JOBS_USER_KEY]:Z.HANDS_JOBS_USER,vm_hands:"v1"}}}}}var V=["fs.read","fs.write","fs.export","fs.import","exec.run","exec.full","process.list","ports.list","pty.start","jobs.control","automation.call.v1"],$j=new Set(["pty.start","jobs.control"]);function Xj(Q,j){let J=j([{id:"vm-hands",label:"workspace",path:T,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}],{worker:{executionMode:"unsandboxed",readiness:Object.fromEntries(V.map((z)=>[z,!0]))}}),Z=Q.capabilities,X={...Z.operation_constraints};for(let z of V)X[z]={...J.operation_constraints?.[z]??{},ready:!0,execution_mode:J.operation_constraints?.[z]?.execution_mode??"host"};return{...Q,capabilities:{...Z,supported_operations:["hands.connect",...V],operation_constraints:X}}}function zj(Q){for(let j of i("/etc/passwd","utf8").split(`
|
|
4
|
+
`)){let J=j.split(":");if(J.length>=4&&Number(J[2])===Q&&/^\d+$/.test(J[3]??"")&&Number(J[3])>0)return Number(J[3])}throw Error("vm_hands_payload_account_unavailable")}function Fj(Q,j){let J=j.owner;if(!J||typeof J.organization_id!=="string"||typeof J.device_id!=="string"||typeof j.root_id!=="string")return null;return{version:4,apiOrigin:Q.api_origin,orgId:J.organization_id,deviceId:J.device_id,devicePublicKey:"",displayName:"vm-hands",registeredAt:new Date(0).toISOString(),handsSlots:1,roots:[{id:j.root_id,label:"workspace",path:T,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}]}}async function Mj(Q,j){y(P),y(O),Qj(j);let J=R(Q,j),Z=!1,X=async()=>{if(!await Promise.race([J.then(()=>!0),new Promise(($)=>setTimeout(()=>$(!1),u).unref?.())]))Z=!0,j("srt_warm_late",{wait_ms:u})},[{configureDesktopAccount:z},{configureWorkerSandbox:W}]=await Promise.all([import("./desktop-account-cjwaktbe.js"),import("./worker-sandbox-dhw5qf92.js")]);W();try{z({value:String(Q.layout.payload_uid)})}catch{j("payload_account_unavailable"),await new Promise(()=>{setInterval(()=>{return},1073741824)})}let L=new AbortController;for(let q of["SIGTERM","SIGINT"])process.on(q,()=>L.abort());let F=new Map,H,g=new Promise((q)=>{H=q}),Y=g.then(()=>import("./vm-hands-executor-682amrtn.js")).then(({createVmHandsExecutor:q})=>{let $=q({init:Q,root:T,runtimeDirectory:P,apiOrigin:Q.api_origin,prespawn:!0,onSrtReset:()=>{Z=!1,J=R(Q,j)},srtWarmLate:()=>Z,forward:(B,K,N)=>F.get(B)?.(K,N)??Promise.reject(Error("vm_hands_not_bound")),log:(B,K)=>j(B,K)});return j("executor_loaded"),$}),A=(q)=>async(...$)=>(await Y)[q](...$),C=null;Y.then((q)=>{C=($)=>q.executorExited($)});let M={startExecutor:async(...q)=>{return await X(),A("startExecutor")(...q)},killAndVerifyPayload:A("killAndVerifyPayload"),killProbe:A("killProbe"),runProbe:async(...q)=>{return await X(),A("runProbe")(...q)},restatLayout:()=>{throw Error("replaced below")},installEnvironment:()=>{throw Error("replaced below")},executorExited:(q)=>C?C(q):new Promise(()=>{}),takeSrtFallbacks:()=>null};Y.then((q)=>{M.restatLayout=()=>q.restatLayout(),M.installEnvironment=($,B)=>q.installEnvironment($,B),M.freezeBind=($)=>q.freezeBind($),M.takeSrtFallbacks=()=>q.takeSrtFallbacks?.()??null});let c=await k(Q),o=new m(Q,c,M,{envRoot:O}),h=Zj(Q),b=null,n=Promise.all([h,import("./local-capabilities-0v47dkgd.js")]).then(([q,$])=>{b=Xj(q,$.capabilityInventoryForRoots),j("device_ops_loaded")}).catch((q)=>j("device_ops_unavailable",{error:q instanceof Error?q.name:"error"})),f=g.then(()=>import("./vm-hands-executor-682amrtn.js")).then(({createVmHandsOpRunners:q,vmHandsBindCgroup:$,VM_HANDS_PAYLOAD_CGROUP:B})=>q({payloadUid:Q.layout.payload_uid,payloadGid:zj(Q.layout.payload_uid),bindCgroup:(K)=>$(B,K),log:(K,N)=>j(K,N)})).catch(()=>null);f.then((q)=>q?.warm("person")),j("agent_ready"),await l({apiOrigin:Q.api_origin,agent:o,signal:L.signal,heartbeat:async()=>b??await h,executeOp:async({kind:q,claim:$,bindId:B,signal:K,emit:N})=>{let x=Fj(Q,$);if(!x)return{status:"failed",error_code:"vm_hands_bind_invalid"};let E={executionMode:"unsandboxed",runtimeDirectory:P,readiness:Object.fromEntries(V.map((U)=>[U,!0]))},_=(U)=>{let D=typeof U.kind==="string"?U.kind:"";if(D)N({kind:D,...U.data&&typeof U.data==="object"?{data:U.data}:{}})};if($.capability==="exec.full"&&q!=="person")return{status:"failed",error_code:"capability_not_granted"};if($.capability==="automation.call.v1"&&q!=="model")return{status:"failed",error_code:"capability_not_granted"};let r=$.capability==="pty.start"&&q==="person"&&!$.authority;if($j.has(String($.capability))&&!r){let{executeLocalOperation:U}=await import("./local-capabilities-0v47dkgd.js");return U(x,$,{worker:E,signal:K,emit:(D)=>_(D)})}let I=await f;if(!I)return{status:"failed",error_code:"vm_hands_payload_account_unavailable"};return I.run(q,{id:String($.attempt_id),claim:$,state:x,worker:E},_,K,B)},readyData:({launchId:q})=>({executor_launch_id:q}),log:(q,$)=>{if(q==="vm_hands.registered"||q==="vm_hands.reconnected")H();j(q,$)},onTurn:(q,$)=>{if($)F.set(q,$);else F.delete(q)}}),await(await Y).stop(),(await f)?.stop()}export{R as startBaseSrtServer,Mj as runVmHands,Lj as parseVmHandsInit,Zj as heartbeatBody,Qj as enableBaseKeyedSrt};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{t as a}from"./vm-hands-entry-lite-ytwa3p73.js";import"./vm-hands-entry-lite-z55phtry.js";import"./vm-hands-entry-lite-h01d2fbm.js";import"./vm-hands-entry-lite-t5h3g60g.js";import"./vm-hands-entry-lite-sjfdhffh.js";import"./vm-hands-entry-lite-ah89nzd4.js";export{a as configureWorkerSandbox};
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{E as a,F as b,G as c,H as d,I as e,J as f}from"./vm-hands-entry-lite-feaxcj0x.js";import"./vm-hands-entry-lite-zgs6j8wj.js";import"./vm-hands-entry-lite-mtp2h66e.js";import"./vm-hands-entry-lite-mm72ht4e.js";import"./vm-hands-entry-lite-s64raarx.js";import"./vm-hands-entry-lite-9rr6gh58.js";import"./vm-hands-entry-lite-px64jhhn.js";export{d as sessionPlace,c as sessionMachine,e as createMachineEnrollmentTicketWithToken,f as ReasonApi,b as REASONING_EFFORTS,a as ApiError};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{u as a,v as b,w as c,x as d,y as e}from"./vm-hands-entry-lite-dtcpbbkc.js";import"./vm-hands-entry-lite-feaxcj0x.js";import"./vm-hands-entry-lite-zgs6j8wj.js";import"./vm-hands-entry-lite-ffgjezmx.js";import"./vm-hands-entry-lite-mtp2h66e.js";import"./vm-hands-entry-lite-mm72ht4e.js";import"./vm-hands-entry-lite-s64raarx.js";import"./vm-hands-entry-lite-9rr6gh58.js";import"./vm-hands-entry-lite-px64jhhn.js";export{d as resolveApiCredentials,e as requireApiCredentials,b as explicitApiOrigin,c as environmentApiKey,a as apiOriginFromEnvironment};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{K as _}from"./vm-hands-entry-lite-zgs6j8wj.js";import"./vm-hands-entry-lite-mtp2h66e.js";import{pf as k}from"./vm-hands-entry-lite-m0epceqg.js";import"./vm-hands-entry-lite-xa9mfp55.js";import{qi as y}from"./vm-hands-entry-lite-px64jhhn.js";import{existsSync as Fz,mkdirSync as Gz,readFileSync as Pz,writeFileSync as Uz}from"fs";import{homedir as Cz}from"os";import{dirname as g,join as Mz}from"path";import{spawnSync as L}from"child_process";import{createHash as l}from"crypto";import{chmodSync as m,existsSync as f,mkdirSync as N,mkdtempSync as p,readFileSync as a,renameSync as i,rmSync as t,statSync as r,writeFileSync as b}from"fs";import{connect as s}from"net";import{homedir as R}from"os";import{dirname as M,join as H}from"path";class K extends Error{}var W="reason-network",P="0.10.0",n={"aarch64-apple-darwin":"9d08c12e41aff910b7723474d1888857a1e76b10be65f7d49e3298ff5c19e35f","x86_64-apple-darwin":"8be45c20bf13259aead0604d7c756d511f80fd353d0ca3378af7c94623b53b39","aarch64-unknown-linux-musl":"5aff9d8154dd2cf9a08452a1c07bab0a99fa0ce50accd173001346c0730453fa","x86_64-unknown-linux-musl":"fb17ff47abf4a14173accb97dcb6d1d95066969f98380f5f475f83509437c275"},o="https://reasonmachines.com/cli/engine",D="REASON_AGENT_NETWORK_BIN";function e(){let z=process.arch==="arm64"?"aarch64":process.arch==="x64"?"x86_64":null,X=process.platform==="darwin"?"apple-darwin":process.platform==="linux"?"unknown-linux-musl":null;return z&&X?`${z}-${X}`:null}function zz(z){let X=L(z,["--version"],{encoding:"utf8",timeout:5000}),[Z,$]=X.status===0?X.stdout.trim().split(/\s+/):[];return Z===W?$??null:null}function Xz(z,X){let Z=z.split(".").map(Number),$=X.split(".").map(Number);for(let q=0;q<3;q+=1)if((Z[q]??0)!==($[q]??0))return(Z[q]??0)>($[q]??0);return!0}function S(){return H(R(),".reason","bin","reason-network")}async function Zz(z=process.env){if(z[D])return z[D];let X=S(),Z=E();if(Z?.path===X&&T(X)===Z.fingerprint)return X;let $=f(X)?zz(X):null;if(!$||!Xz($,P))await Bz(X);let q=L(X,["setup",...$z(z)?["--no-service"]:[]],{env:z,encoding:"utf8",timeout:60000});if(q.status!==0){let Q=G((q.stderr||q.stdout||"").trim().split(`
|
|
3
|
-
`).pop()??"");throw new K(`Couldn't connect this computer's agents to the network${Q?` (${Q})`:""}. Run reason network setup to try again.`)}return L(X,["stop"],{env:z,stdio:"ignore",timeout:15000}),qz(X)}function $z(z=process.env){return Boolean(z.REASON_NETWORK_NO_SERVICE||z.TINCAN_NO_SERVICE)}var O=()=>H(R(),".reason","ask-engine.json");function T(z){try{let X=r(z);return`${X.size}:${X.mtimeMs}:${X.ino}`}catch{return null}}function E(){try{let z=JSON.parse(a(O(),"utf8"));return typeof z.path==="string"&&typeof z.fingerprint==="string"&&z.version===P?{path:z.path,fingerprint:z.fingerprint}:null}catch{return null}}function qz(z){let X=T(z);if(!X)return z;let Z=M(O());if(!f(Z))N(Z,{recursive:!0});return b(O(),JSON.stringify({path:z,fingerprint:X,version:P})),z}async function Bz(z){let X=e(),Z=X?n[X]:void 0;if(!X||!Z)throw new K(`Reason Network runs on macOS and Linux (arm64 or x64); this is ${process.platform} ${process.arch}.`);let $=`${o}/${P}/${W}-${X}.tar.gz`,q;try{let Y=await fetch($,{signal:AbortSignal.timeout(120000)});if(!Y.ok)throw Error(`HTTP ${Y.status}`);q=Buffer.from(await Y.arrayBuffer())}catch(Y){let x=Y instanceof Error&&Y.name==="TimeoutError"?"no download within 2 minutes":Y instanceof Error?Y.message.replace(/\.$/,""):String(Y);throw new K(`Couldn't download the network engine from ${new URL($).host} (${x}). Check the connection and run reason network again.`)}if(l("sha256").update(q).digest("hex")!==Z)throw new K("The downloaded network engine didn't match its checksum, so it wasn't installed.");N(M(z),{recursive:!0});let B=p(H(M(z),".reason-engine-"));try{if(b(H(B,"engine.tar.gz"),q),L("tar",["-xzf",H(B,"engine.tar.gz"),"-C",B]).status!==0||!f(H(B,W)))throw new K("Couldn't unpack the network engine.");m(H(B,W),493),i(H(B,W),z)}finally{t(B,{recursive:!0,force:!0})}}function Qz(z=process.env,X=R()){return z.REASON_NETWORK_HOME?.trim()||z.TINCAN_HOME?.trim()||H(X,".tincan")}var v=15000,Yz=new Set(["who","team","inbox","unread","held"]),Hz=90000;class F{socket;nextId=1;buffer="";pending=new Map;closed=null;constructor(z){this.socket=z;z.setEncoding("utf8"),z.on("data",(Z)=>this.read(Z));let X=(Z)=>{this.closed=Z;for(let $ of this.pending.values())$.reject(Z);this.pending.clear()};z.on("error",(Z)=>X(Z)),z.on("close",()=>X(Error("the network daemon closed the connection")))}static open(z){return new Promise((X,Z)=>{let $=s(z);$.once("connect",()=>X(new F($))),$.once("error",Z)})}read(z){this.buffer+=z;let X=this.buffer.indexOf(`
|
|
4
|
-
`);while(X>=0){let Z=this.buffer.slice(0,X);if(this.buffer=this.buffer.slice(X+1),X=this.buffer.indexOf(`
|
|
5
|
-
`),!Z.trim())continue;let $;try{$=JSON.parse(Z)}catch{continue}if(typeof $.id!=="number")continue;let q=this.pending.get($.id);if(!q)continue;if(this.pending.delete($.id),$.ok)q.resolve($.result);else q.reject(Error(G($.error??"the network daemon refused the request")))}}call(z,X={},Z=v){if(this.closed)return Promise.reject(this.closed);let $=this.nextId++;return this.socket.write(`${JSON.stringify({id:$,op:z,...X})}
|
|
6
|
-
`),new Promise((q,Q)=>{let B=setTimeout(()=>{this.pending.delete($),Q(Error(`the network daemon didn't answer ${z} within ${Math.round(Z/1000)}s`))},Z);this.pending.set($,{resolve:(Y)=>{clearTimeout(B),q(Y)},reject:(Y)=>{clearTimeout(B),Q(Y)}})})}get isClosed(){return this.closed!==null}close(){this.socket.end()}}var C=/^(Claude Code|Grok|Codex) \u00B7 (.*)$/,Jz={"Claude Code":"claude-code",Grok:"grok",Codex:"codex"},Kz=/^ask-[0-9a-f]{6}$/;function j(z){return{id:z.id,from:z.from,fromAgent:z.from_agent,to:z.to,replyTo:z.reply_to,body:z.body,sentAt:z.sent_at}}function A(z){return{person:z.person,machine:z.machine,isMe:z.is_me,online:z.online,link:z.link,rttMs:z.rtt_ms}}class V{engine;env;connection=null;waits=new Set;constructor(z,X){this.engine=z;this.env=X}static async open(z=process.env){return new V(await Zz(z),z)}static openInstalled(z=process.env){if(z[D])return new V(z[D],z);let X=S(),Z=E();return Z?.path===X&&T(X)===Z.fingerprint?new V(X,z):null}socketPath(){return H(Qz(this.env),"tincan.sock")}async open(){try{return await F.open(this.socketPath())}catch{return L(this.engine,["who","--json"],{env:this.env,stdio:"ignore",timeout:15000}),await F.open(this.socketPath())}}async call(z,X={},Z){if(!this.connection||this.connection.isClosed)this.connection=await this.open();try{return await this.connection.call(z,X,Z)}catch($){if(!/closed|ECONNRESET|EPIPE/.test(String($)))throw $;if(this.connection=await this.open(),!Yz.has(z))throw $;return await this.connection.call(z,X)}}async waitOn(z,X){let Z=await this.open();this.waits.add(Z);try{return await Z.call(z,X,X.wait_secs*1000+v)}finally{this.waits.delete(Z),Z.close()}}close(){this.connection?.close(),this.connection=null;for(let z of this.waits)z.close();this.waits.clear()}async team(){try{let z=await this.call("team");return{...z,machines:z.machines.map(A)}}catch(z){if(/team/i.test(String(z)))return null;throw z}}async snapshot(z={}){let X=await this.call("who",{all:Boolean(z.all),...z.filter?{filter:z.filter}:{}}),Z=new Set(X.sessions.filter((q)=>C.test(q.doing??"")).map((q)=>`${q.person}/${q.machine}:${q.cwd}`)),$=X.sessions.filter((q)=>z.all||!Kz.test(q.name)).filter((q)=>C.test(q.doing??"")||!Z.has(`${q.person}/${q.machine}:${q.cwd}`)).map((q)=>{let Q=C.exec(q.doing??"");return{address:q.address,name:q.name,person:q.person,machine:q.machine,agent:Q?Jz[Q[1]]:q.agent,cwd:q.cwd,repo:q.repo,branch:q.branch,status:Q?Q[2]==="ready for work"?"idle":Q[2]==="stopped"?"offline":"busy":q.status,since:q.since,doing:Q?Q[2]:q.doing,isMe:q.is_me,worker:Boolean(Q)}});return{team:X.team,person:X.person,machine:X.machine,machines:X.machines.map(A),sessions:$}}async send(z,X,Z={}){if(!Z.from)await this.call("hook",{agent:"cli",event:"stop",session_id:"terminal",name:"terminal",cwd:process.cwd(),mail:!1});let $=await this.call("send",{from:Z.from??"terminal",to:z,body:X,...Z.replyTo?{reply_to:Z.replyTo}:{},wake:Z.wake??!0});return{ids:$.ids,recipients:$.recipients.map((q)=>q.address)}}async session(z,X={}){let Z=X.agent??"cli",$=(B,Y={})=>this.call("hook",{agent:Z,event:B,session_id:z,name:z,cwd:process.cwd(),mail:!1,...Y}),q=await $("stop"),Q=`${Z}:${z}`;return{name:z,address:q.address??z,next:async(B)=>{return(await this.waitOn("inbox",{key:Q,wait_secs:B,peek:!0})).messages.map(j)},ack:async(B)=>{if(B.length)await this.call("delivered",{key:Q,ids:B})},busy:async(B)=>{if(await $("prompt"),B)await $("doing",{doing:B})},idle:async(B)=>{if(await $("stop"),B)await $("doing",{doing:B})},doing:async(B)=>{await $("doing",{doing:B})},send:(B,Y,x)=>this.send(B,Y,{from:Q,...x?{replyTo:x}:{}})}}async inbox(z={}){let Z=(await this.waitOn("inbox",{key:"cli:terminal",wait_secs:z.waitSeconds??0,peek:!0}).catch(($)=>{if(/isn't registered/.test(String($)))return{messages:[]};throw $})).messages.map(j);if(Z.length&&!z.peek)await this.call("delivered",{key:"cli:terminal",ids:Z.map(($)=>$.id)});return Z}async link(z={}){return await this.call("link",{new:Boolean(z.new)})}async changeTeam(z,X){try{return await this.call(z,X,Hz)}finally{this.close()}}async changeOntoTeam(z,X){try{await this.changeTeam(z,X)}catch(Z){if(!/closed|ECONNRESET|EPIPE/.test(String(Z)))throw Z;if(await this.team())return;await this.changeTeam(z,X)}}async createTeam(z,X){await this.changeOntoTeam("create_team",{name:z,person:X})}async join(z,X){await this.changeOntoTeam("join",{ticket:z,person:X})}async leave(){return await this.changeTeam("leave",{force:!0})}async remove(z){return await this.call("remove",{who:z})}passthrough(z,X={}){this.close();let Z=L(this.engine,z,{stdio:["inherit","pipe","pipe"],encoding:"utf8",env:this.env});if(!X.quiet||Z.status!==0)process.stdout.write(G(Z.stdout??"")),process.stderr.write(G(Z.stderr??""));return Z.status??1}}function G(z){return z.replace(/not in a team yet:[^\n]*/g,"this computer isn't on a team yet: run `reason network setup`").replace(/`tincan (\w+)/g,"`reason network $1").replace(/\btincan (who|send|inbox|invite|join|team|link|setup|doctor|remove|leave|listen)\b/g,"reason network $1").replace(/(?<![\w./-])tincan(?![\w./-])/gi,"Reason Network")}import{existsSync as wz,mkdirSync as dz,readFileSync as Vz,writeFileSync as kz}from"fs";import{homedir as Lz,hostname as lz}from"os";import{dirname as pz,join as Wz}from"path";var xz=(z)=>Wz(z,".reason","ask.json");function Dz(z){try{let X=JSON.parse(Vz(xz(z),"utf8"));if(typeof X.orgId!=="string"||typeof X.team!=="string")return null;let Z=X.pendingRotation;return{orgId:X.orgId,team:X.team,...typeof X.checkedAt==="number"?{checkedAt:X.checkedAt}:{},...Z&&typeof Z.link==="string"&&typeof Z.team==="string"&&typeof Z.replaces==="string"?{pendingRotation:Z}:{}}}catch{return null}}function u(z=Lz()){let X=Dz(z);return X?{orgId:X.orgId,team:X.team}:null}var h=86400000,Oz=300,U=(z)=>Mz(z,".reason","ask-relay.json");function I(z){try{let X=JSON.parse(Pz(U(z),"utf8"));return{sessions:Array.isArray(X.sessions)?X.sessions.filter((Z)=>typeof Z?.name==="string"&&typeof Z.agent==="string"&&typeof Z.usedAt==="number"):[]}}catch{return{sessions:[]}}}function fz(z,X){try{if(!Fz(g(U(z))))Gz(g(U(z)),{recursive:!0});Uz(U(z),`${JSON.stringify(X)}
|
|
7
|
-
`,{mode:384})}catch{}}var J=(z,X)=>new Promise((Z)=>{if(X.aborted)return Z();let $=setTimeout(q,z);$.unref?.();function q(){clearTimeout($),X.removeEventListener("abort",q),Z()}X.addEventListener("abort",q,{once:!0})});function w(z){let X=z?.status;return typeof X==="number"?X:null}var d=60000;function Rz(z){let X=Number.isFinite(z.sentAt)&&Math.abs(z.sentAt)<8640000000000000?z.sentAt:Date.now();return{id:z.id.slice(0,100),from:z.from.slice(0,300),from_agent:z.fromAgent?.slice(0,100)??null,to:z.to.slice(0,300),reply_to:z.replyTo?.slice(0,100)??null,sent_at:X,body:z.body.length>d?`${z.body.slice(0,d)}
|
|
8
|
-
[cut: the answer was ${z.body.length} characters]`:z.body}}class c{network;api;home;signal;log;team;sessions=new Map;readers=new Set;constructor(z,X,Z,$,q,Q){this.network=z;this.api=X;this.home=Z;this.signal=$;this.log=q;this.team=Q}async run(){let z=Date.now()-h;for(let Z of I(this.home).sessions)if(Z.usedAt>z)this.read(Z);let X=0;while(!this.signal.aborted){let Z=await this.network.team().catch(()=>null);if(!Z){await J(60000,this.signal);continue}if(Z.name!==this.team)return;let $;try{let q=await this.api.claimAgentNetworkRelayJob({machine:Z.machine,person:Z.person,team:Z.name,version:k,wait_seconds:_},AbortSignal.any([this.signal,AbortSignal.timeout((_+20)*1000)]));if(X=0,q.retry_after_seconds)await J(q.retry_after_seconds*1000,this.signal);$=q.job}catch(q){if(this.signal.aborted)return;let Q=w(q);if(Q===403||Q===401){await J(900000,this.signal);continue}if(Q===404||Q===405){await J(120000,this.signal);continue}X+=1,await J(Math.min(60000,1000*2**Math.min(X,6)),this.signal);continue}if($)this.carry($)}}async carry(z){let X;try{X=z.kind==="who"?{who:await this.who()}:{sent:await this.send(z)}}catch(Z){X={error:Z instanceof Error?Z.message:String(Z)}}for(let Z=1;;Z+=1)try{if(await this.api.completeAgentNetworkRelayJob(z.id,X),z.kind==="send")this.log(`relayed a message to ${z.to} from ${"sent"in X?X.sent.from:z.from_name}`);return}catch($){if(Z>=4||this.signal.aborted){this.log(`couldn't report a relayed call: ${$ instanceof Error?$.message:String($)}`);return}await J(Z*1000,this.signal)}}async who(){let z=await this.network.snapshot();return{team:z.team,sessions:z.sessions.map((X)=>({address:X.address,person:X.person,machine:X.machine,agent:X.agent,repo:X.repo,branch:X.branch,status:X.status,since:X.since,doing:X.doing,worker:X.worker})),machines:z.machines.map((X)=>({person:X.person,machine:X.machine,online:X.online}))}}async send(z){let X={name:z.from_name,agent:z.from_agent},Z=await this.session(X),$=await Z.send(z.to,z.body);return this.remember(X),this.read(X),{ids:$.ids,recipients:$.recipients,from:Z.address}}session(z){let X=`${z.agent}:${z.name}`,Z=this.sessions.get(X);if(!Z)Z=this.network.session(z.name,{agent:z.agent}).then(async($)=>{return await $.idle(`personal agent (${z.agent}), through Reason`).catch(()=>{}),$}),Z.catch(()=>this.sessions.delete(X)),this.sessions.set(X,Z);return Z}remember(z){let Z=I(this.home).sessions.filter(($)=>$.name!==z.name||$.agent!==z.agent);fz(this.home,{sessions:[...Z,{...z,usedAt:Date.now()}].slice(-50)})}read(z){let X=`${z.agent}:${z.name}`;if(this.readers.has(X))return;this.readers.add(X),(async()=>{let Z=0;try{while(!this.signal.aborted){let $=I(this.home).sessions.find((q)=>q.name===z.name&&q.agent===z.agent)?.usedAt??0;if(Date.now()-$>h)return;try{let q=await this.session(z),Q=await q.next(Oz);if(Q.length===0)continue;await this.api.recordAgentNetworkRelayReplies(Q.map(Rz)).catch((B)=>{let Y=w(B);if(Y===null||Y>=500||Y===429||Y===401)throw B;this.log(`dropped ${Q.length} answer(s) the server refused (HTTP ${Y})`)}),await q.ack(Q.map((B)=>B.id)),Z=0}catch{if(this.signal.aborted)return;this.sessions.delete(X),Z+=1,await J(Math.min(60000,1000*2**Math.min(Z,6)),this.signal)}}}finally{this.readers.delete(X)}})()}}async function Tz(z){await new c(z.network,z.api,z.home??Cz(),z.signal,z.log??(()=>{}),z.team).run()}async function XX(z,X=()=>{}){while(!z.aborted){try{let Z=u(),$=Z?V.openInstalled():null;if(Z&&$){let[{requireApiCredentials:q},{ReasonApi:Q}]=await Promise.all([import("./api-credentials-41xjt55r.js"),import("./api-36ywgdp3.js")]),B=await q({});if(B.credentialKind!=="api_key"&&B.orgId.toLowerCase()===Z.orgId.toLowerCase())try{await Tz({network:$,api:new Q(B),team:Z.team,signal:z,log:X})}finally{$.close()}}}catch(Z){X(`agent network relay: ${Z instanceof Error?Z.message:String(Z)}`)}await J(300000,z)}}export{XX as runBackgroundAskRelay,Tz as runAskRelay};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{g as a,h as b,i as c,j as d,k as e,l as f,m as g,n as h,o as i,p as j,q as k,r as l,s as m}from"./vm-hands-entry-lite-qx8702e7.js";import"./vm-hands-entry-lite-hj6jjk24.js";import"./vm-hands-entry-lite-dtcpbbkc.js";import"./vm-hands-entry-lite-feaxcj0x.js";import"./vm-hands-entry-lite-zgs6j8wj.js";import"./vm-hands-entry-lite-dea36bpb.js";import"./vm-hands-entry-lite-5q96en2m.js";import"./vm-hands-entry-lite-7kzy7rxj.js";import"./vm-hands-entry-lite-h01d2fbm.js";import"./vm-hands-entry-lite-5n6vc7je.js";import"./vm-hands-entry-lite-t5h3g60g.js";import"./vm-hands-entry-lite-ffgjezmx.js";import"./vm-hands-entry-lite-4b8f37q4.js";import"./vm-hands-entry-lite-qbr9m7zh.js";import"./vm-hands-entry-lite-9k57wmkv.js";import"./vm-hands-entry-lite-mtp2h66e.js";import"./vm-hands-entry-lite-hzqdhpr9.js";import"./vm-hands-entry-lite-tf5mepq5.js";import"./vm-hands-entry-lite-zykqwmp1.js";import"./vm-hands-entry-lite-m0epceqg.js";import"./vm-hands-entry-lite-xa9mfp55.js";import"./vm-hands-entry-lite-jzms4xs2.js";import"./vm-hands-entry-lite-awwev9zg.js";import"./vm-hands-entry-lite-dhzcvvt2.js";import"./vm-hands-entry-lite-cnmd8nft.js";import"./vm-hands-entry-lite-mm72ht4e.js";import"./vm-hands-entry-lite-s64raarx.js";import"./vm-hands-entry-lite-9rr6gh58.js";import"./vm-hands-entry-lite-983czfdb.js";import"./vm-hands-entry-lite-070nd0vy.js";import"./vm-hands-entry-lite-px64jhhn.js";export{g as runDisconnectCli,f as runConnectCli,m as restartConnectionWhenIdle,l as restartConnection,h as logoutConnection,k as connectionUsesUserChrome,i as connectionReport,j as connectionForBrowserExtension,c as connectionDirectory,d as computerDisconnected,e as addConnectionFolder,b as DISCONNECT_HELP,a as CONNECT_HELP};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Se as a,Te as b,Ue as c,Ve as d,We as e}from"./vm-hands-entry-lite-tf5mepq5.js";import"./vm-hands-entry-lite-s64raarx.js";import"./vm-hands-entry-lite-9rr6gh58.js";import"./vm-hands-entry-lite-px64jhhn.js";export{b as passwdAccount,e as desktopHome,d as desktopAccount,c as configureDesktopAccount,a as DESKTOP_USER_ENV};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{$c as d,Yc as a,Zc as b,_c as c,ad as e,bd as f,cd as g,dd as h,ed as i,fd as j,gd as k,hd as l}from"./vm-hands-entry-lite-qbr9m7zh.js";import"./vm-hands-entry-lite-9k57wmkv.js";import"./vm-hands-entry-lite-mtp2h66e.js";import"./vm-hands-entry-lite-hzqdhpr9.js";import"./vm-hands-entry-lite-tf5mepq5.js";import"./vm-hands-entry-lite-zykqwmp1.js";import"./vm-hands-entry-lite-m0epceqg.js";import"./vm-hands-entry-lite-xa9mfp55.js";import"./vm-hands-entry-lite-jzms4xs2.js";import"./vm-hands-entry-lite-awwev9zg.js";import"./vm-hands-entry-lite-dhzcvvt2.js";import"./vm-hands-entry-lite-cnmd8nft.js";import"./vm-hands-entry-lite-mm72ht4e.js";import"./vm-hands-entry-lite-s64raarx.js";import"./vm-hands-entry-lite-9rr6gh58.js";import"./vm-hands-entry-lite-983czfdb.js";import"./vm-hands-entry-lite-070nd0vy.js";import"./vm-hands-entry-lite-px64jhhn.js";export{d as runRelayed,e as runMacComputerUse,l as runLocalAutomation,k as runAutomationCallLocally,b as parseAutomationPayload,g as localUserChromeProfiles,h as localUserChromeInstance,f as localUserChromeHost,j as localBrowserProfile,c as localAutomationAvailable,i as ensureLocalBrowser,a as AUTOMATION_CHUNK_BYTES};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{ea as c,fa as d,ga as e,ha as f,ia as g,ja as h,ka as i,la as j,ma as k,na as l,oa as m,pa as n,qa as o,ra as p,sa as q,ta as r,ua as s,va as t,wa as u}from"./vm-hands-entry-lite-dea36bpb.js";import"./vm-hands-entry-lite-5q96en2m.js";import"./vm-hands-entry-lite-7kzy7rxj.js";import"./vm-hands-entry-lite-h01d2fbm.js";import"./vm-hands-entry-lite-5n6vc7je.js";import{oc as b}from"./vm-hands-entry-lite-t5h3g60g.js";import"./vm-hands-entry-lite-ffgjezmx.js";import"./vm-hands-entry-lite-4b8f37q4.js";import"./vm-hands-entry-lite-qbr9m7zh.js";import"./vm-hands-entry-lite-9k57wmkv.js";import"./vm-hands-entry-lite-mtp2h66e.js";import"./vm-hands-entry-lite-hzqdhpr9.js";import"./vm-hands-entry-lite-tf5mepq5.js";import"./vm-hands-entry-lite-zykqwmp1.js";import"./vm-hands-entry-lite-m0epceqg.js";import"./vm-hands-entry-lite-xa9mfp55.js";import"./vm-hands-entry-lite-jzms4xs2.js";import"./vm-hands-entry-lite-awwev9zg.js";import"./vm-hands-entry-lite-dhzcvvt2.js";import"./vm-hands-entry-lite-cnmd8nft.js";import"./vm-hands-entry-lite-mm72ht4e.js";import"./vm-hands-entry-lite-s64raarx.js";import"./vm-hands-entry-lite-9rr6gh58.js";import"./vm-hands-entry-lite-983czfdb.js";import{ki as a}from"./vm-hands-entry-lite-070nd0vy.js";import"./vm-hands-entry-lite-px64jhhn.js";export{g as spawnCaptured,f as sandboxProfile,e as safeEnvironment,k as runTransferCapability,i as runFileCapability,t as rebindLocalHandsControl,j as localGithubPreviewServerLaunch,b as isProtectedLocalPath,u as executeLocalOperation,m as enrolledWorkspaceRootFingerprint,q as enrolledRootPaths,p as enrolledHomeContainedRootFingerprints,n as enrolledAccountRootPath,o as enrolledAccountRootFingerprint,s as deliverLocalHandsEnvironment,h as defaultLocalCommandRunner,d as confinedExecutionShell,r as capabilityInventoryForRoots,c as SHORT_REQUEST_CAPABILITIES,a as LocalCapabilityError,l as LOCAL_CAPABILITY_REGISTRY};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{di as a,ei as b,fi as c,gi as d,hi as e,ii as f,ji as g}from"./vm-hands-entry-lite-983czfdb.js";import"./vm-hands-entry-lite-070nd0vy.js";import"./vm-hands-entry-lite-px64jhhn.js";export{f as trackDesktopRun,c as releaseLocalDesktop,a as noteLocalDesktopUse,g as holdLocalDesktop,b as forgetLocalDesktopUse,e as DESKTOP_WAIT_MS,d as DESKTOP_IDLE_MS};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Hf as a,If as b,Jf as c,Kf as d,Lf as e,Mf as f,Nf as g}from"./vm-hands-entry-lite-jzms4xs2.js";import"./vm-hands-entry-lite-070nd0vy.js";import"./vm-hands-entry-lite-px64jhhn.js";export{c as requestMacScreenAccess,d as parseMacWindowBounds,a as parseMacScreenStatus,e as openMacWindowBounds,g as openMacInput,b as macScreenStatus,f as MacInputTranslator};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Ke as a,Le as b,Me as c,Ne as d,Oe as e,Pe as f,Qe as g,Re as h}from"./vm-hands-entry-lite-hzqdhpr9.js";import"./vm-hands-entry-lite-tf5mepq5.js";import"./vm-hands-entry-lite-zykqwmp1.js";import"./vm-hands-entry-lite-m0epceqg.js";import"./vm-hands-entry-lite-xa9mfp55.js";import"./vm-hands-entry-lite-jzms4xs2.js";import"./vm-hands-entry-lite-awwev9zg.js";import"./vm-hands-entry-lite-dhzcvvt2.js";import"./vm-hands-entry-lite-cnmd8nft.js";import"./vm-hands-entry-lite-mm72ht4e.js";import"./vm-hands-entry-lite-s64raarx.js";import"./vm-hands-entry-lite-9rr6gh58.js";import"./vm-hands-entry-lite-983czfdb.js";import"./vm-hands-entry-lite-070nd0vy.js";import"./vm-hands-entry-lite-px64jhhn.js";export{h as runLocalDisplayStream,f as privateDirectory,c as parseDisplayStreamPayload,e as localDisplayReady,d as localDisplayAvailable,g as ensureLinuxDesktop,a as LOCAL_DISPLAY_MAX_SESSION_MS,b as LINUX_WORKER_DISPLAY};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Of as a,Pf as b,Qf as c,Rf as d,Sf as e,Tf as f,Uf as g,Vf as h,Wf as i,Xf as j}from"./vm-hands-entry-lite-awwev9zg.js";import"./vm-hands-entry-lite-dhzcvvt2.js";import"./vm-hands-entry-lite-cnmd8nft.js";import"./vm-hands-entry-lite-mm72ht4e.js";import"./vm-hands-entry-lite-s64raarx.js";import"./vm-hands-entry-lite-9rr6gh58.js";import"./vm-hands-entry-lite-070nd0vy.js";import"./vm-hands-entry-lite-px64jhhn.js";export{j as runLocalPtySession,e as resolvePtyWorkingDirectory,g as ptyRuntimeSupported,d as parsePtyStartPayload,h as defaultSpawnPty,f as defaultLoginShell,i as defaultConnect,a as LOCAL_PTY_MAX_SESSION_MS,c as LOCAL_PTY_MAX_SESSIONS,b as LOCAL_PTY_MAX_BUFFERED_OUTPUT_BYTES};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{$d as L,Ad as k,Bd as l,Cd as m,Dd as n,Ed as o,Fd as p,Gd as q,Hd as r,Id as s,Jd as t,Kd as u,Ld as v,Md as w,Nd as x,Od as y,Pd as z,Qd as A,Rd as B,Sd as C,Td as D,Ud as E,Vd as F,Wd as G,Xd as H,Yd as I,Zd as J,_d as K,ae as M,be as N,ce as O,de as P,ee as Q,fe as R,ge as S,he as T,ie as U,je as V,ke as W,le as X,me as Y,ne as Z,oe as _,pe as $,qd as a,qe as aa,rd as b,re as ba,sd as c,se as ca,td as d,te as da,ud as e,ue as ea,vd as f,ve as fa,wd as g,xd as h,yd as i,zd as j}from"./vm-hands-entry-lite-9k57wmkv.js";import"./vm-hands-entry-lite-mtp2h66e.js";import"./vm-hands-entry-lite-px64jhhn.js";export{Y as parseLocalRuntimeRootsSyncResponse,U as parseLocalRuntimeRegistrationResponse,T as parseLocalRuntimeProofChallenge,ca as parseLocalRuntimeOperationHeartbeatResponse,da as parseLocalRuntimeOperationEventsResponse,ea as parseLocalRuntimeOperationEnvironmentResponse,fa as parseLocalRuntimeOperationCompletionResponse,ba as parseLocalRuntimeOperationClaim,$ as parseLocalRuntimeLocalSubscriptionResponse,aa as parseLocalRuntimeLifecycleResponse,Z as parseLocalRuntimeIdentityResponse,W as parseLocalRuntimeHeartbeatResponse,X as parseLocalRuntimeFirstHeartbeat,S as parseLocalRuntimeErrorEnvelope,V as parseLocalRuntimeEnrollmentResponse,_ as parseLocalRuntimeDisconnectResponse,j as localRuntimeSessionRoutable,R as buildLocalRuntimeDeviceProofBytes,I as WORKER_PREVIEW_CARRIED_JOBS,e as RELAY_HOST_ALIAS_VERSION,d as RELAY_HOST_ALIAS_HEADER,N as LOCAL_RUNTIME_WORKER_STARTUP_MAX_MS,k as LOCAL_RUNTIME_SESSION_VM_HANDS_REGISTER,h as LOCAL_RUNTIME_SESSION_PRE_AUTH_MAX_BYTES,g as LOCAL_RUNTIME_SESSION_PATH,m as LOCAL_RUNTIME_SESSION_CLOSE,l as LOCAL_RUNTIME_SESSION_CLAIM_WAIT_MAX_MS,i as LOCAL_RUNTIME_SESSION_AUTH_DEADLINE_MS,b as LOCAL_RUNTIME_ROUTE_PREFIX,f as LOCAL_RUNTIME_ROUTES,a as LOCAL_RUNTIME_PROTOCOL_VERSION,O as LOCAL_RUNTIME_LIFECYCLE_EVENTS,Q as LOCAL_RUNTIME_LEGACY_DEVICE_PROOF_TAG,P as LOCAL_RUNTIME_DEVICE_PROOF_TAG,c as LOCAL_OPERATION_MAX_BYTES,K as JOBS_START_WAIT_KEY,J as JOBS_START_WAIT,H as HANDS_SESSION_GROUP_KEY,G as HANDS_SESSION_GROUP,s as HANDS_REBIND_KEY,t as HANDS_REBIND_CONTROL,r as HANDS_REBIND,D as HANDS_MODEL_JOBS_EGRESS_KEY,C as HANDS_MODEL_JOBS_EGRESS,z as HANDS_LARGE_ENVIRONMENT_KEY,y as HANDS_LARGE_ENVIRONMENT,F as HANDS_JOBS_USER_KEY,E as HANDS_JOBS_USER,x as HANDS_HEADLESS_BROWSER_KEY,w as HANDS_HEADLESS_BROWSER,o as HANDS_ENVIRONMENT_DELIVER_CONTROL,n as HANDS_ENVIRONMENT_DELIVERY,q as HANDS_ENVIRONMENT_AT_CLAIM_KEY,p as HANDS_ENVIRONMENT_AT_CLAIM,B as HANDS_CONFINEMENT_KEY,A as HANDS_CONFINEMENT,v as HANDS_CLOUD_ACCESS_KEY,u as HANDS_CLOUD_ACCESS,L as AUTOMATION_USER_CHROME,M as AUTOMATION_CLOUD_SESSIONS};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{ff as a,gf as b,hf as c,if as d,jf as e,kf as f,lf as g,mf as h,nf as i,of as j}from"./vm-hands-entry-lite-zykqwmp1.js";import"./vm-hands-entry-lite-m0epceqg.js";import"./vm-hands-entry-lite-xa9mfp55.js";import"./vm-hands-entry-lite-jzms4xs2.js";import"./vm-hands-entry-lite-s64raarx.js";import"./vm-hands-entry-lite-9rr6gh58.js";import"./vm-hands-entry-lite-070nd0vy.js";import"./vm-hands-entry-lite-px64jhhn.js";export{j as runPermissionsCli,d as reasonIdentity,e as readMacPermissions,f as permissionsSummary,i as parsePermissionsArgs,c as fullDiskAccessTarget,g as formatMacPermissions,h as allowMacPermissions,a as PERMISSIONS_HELP,b as MAC_PERMISSION_IDS};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{t as a}from"./vm-hands-entry-lite-hj6jjk24.js";import"./vm-hands-entry-lite-7kzy7rxj.js";import"./vm-hands-entry-lite-h01d2fbm.js";import"./vm-hands-entry-lite-t5h3g60g.js";import"./vm-hands-entry-lite-070nd0vy.js";import"./vm-hands-entry-lite-px64jhhn.js";export{a as configureWorkerSandbox};
|