@reason-machines/cli-linux-x64 0.2.402 → 0.2.404

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 (28) hide show
  1. package/bin/reason +1 -1
  2. package/bin/vm-hands/{ask-relay-zc05zxz4.js → ask-relay-2782vyd4.js} +3 -3
  3. package/bin/vm-hands/{connect-cli-npxeps2h.js → connect-cli-ze8shkbh.js} +1 -1
  4. package/bin/vm-hands/{local-automation-541wzbef.js → local-automation-bnm6kkcv.js} +1 -1
  5. package/bin/vm-hands/{local-capabilities-ymex3mmw.js → local-capabilities-ws46275r.js} +1 -1
  6. package/bin/vm-hands/{local-display-session-7e6wqe5c.js → local-display-session-bvtjz896.js} +1 -1
  7. package/bin/vm-hands/{managed-runtime-f9nnr42a.js → managed-runtime-jwqtx96m.js} +1 -1
  8. package/bin/vm-hands/{permissions-pkk45vxx.js → permissions-nxveebrf.js} +1 -1
  9. package/bin/vm-hands/{serve-service-fpwme38f.js → serve-service-heymhvzy.js} +1 -1
  10. package/bin/vm-hands/{status-sf4634w4.js → status-c4jexrdp.js} +2 -2
  11. package/bin/vm-hands/{version-98dbzrna.js → version-reqdxftm.js} +1 -1
  12. package/bin/vm-hands/{vm-hands-entry-lite-2grs67fz.js → vm-hands-entry-lite-1xmf8aps.js} +1 -1
  13. package/bin/vm-hands/{vm-hands-entry-lite-0badx5n8.js → vm-hands-entry-lite-8c6rvxbe.js} +1 -1
  14. package/bin/vm-hands/{vm-hands-entry-lite-nhhpc9n2.js → vm-hands-entry-lite-933zx1dx.js} +2 -2
  15. package/bin/vm-hands/{vm-hands-entry-lite-gbf8h13w.js → vm-hands-entry-lite-aww3tkxa.js} +1 -1
  16. package/bin/vm-hands/{vm-hands-entry-lite-b3jmyabq.js → vm-hands-entry-lite-bhtafden.js} +1 -1
  17. package/bin/vm-hands/{vm-hands-entry-lite-apwve08w.js → vm-hands-entry-lite-knb6bj3p.js} +1 -1
  18. package/bin/vm-hands/{vm-hands-entry-lite-x914078k.js → vm-hands-entry-lite-rn52eajb.js} +1 -1
  19. package/bin/vm-hands/{vm-hands-entry-lite-m7vam0j2.js → vm-hands-entry-lite-swasdyfd.js} +2 -2
  20. package/bin/vm-hands/{vm-hands-entry-lite-cwd9y2pv.js → vm-hands-entry-lite-wt71n7n2.js} +1 -1
  21. package/bin/vm-hands/{vm-hands-entry-lite-mwj7bnse.js → vm-hands-entry-lite-xm52myx6.js} +1 -1
  22. package/bin/vm-hands/{vm-hands-entry-lite-kaht6v11.js → vm-hands-entry-lite-xstx7r49.js} +1 -1
  23. package/bin/vm-hands/{vm-hands-entry-lite-gp85aqkt.js → vm-hands-entry-lite-yw74rzzs.js} +1 -1
  24. package/bin/vm-hands/vm-hands-entry-lite.js +1 -1
  25. package/bin/vm-hands/{vm-hands-executor-6bm919bz.js → vm-hands-executor-d1fswtqe.js} +1 -1
  26. package/bin/vm-hands/{vm-hands-op-runner-zr3ajywy.js → vm-hands-op-runner-zte992qs.js} +1 -1
  27. package/bin/vm-hands/{vm-hands-runtime-p24enq6p.js → vm-hands-runtime-5tj6cfks.js} +2 -2
  28. package/package.json +1 -1
package/bin/reason CHANGED
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/bin/reason
3
3
  size: 102967424 bytes
4
- sha256: 725849eedf1bebc73952a95b26644432f8831a2519c68e1286f0e0b571be96d2
4
+ sha256: 50b48535e01d8e7d1a615a5e973924b46b21fbbb257f72aad8c0dbd68a3e759f
@@ -1,8 +1,8 @@
1
1
  // @bun
2
- import{xa as u}from"./vm-hands-entry-lite-c1rexgd8.js";import{Vj as g}from"./vm-hands-entry-lite-gbf8h13w.js";import"./vm-hands-entry-lite-b3jmyabq.js";import"./vm-hands-entry-lite-ysk49bnz.js";import{Vk as M}from"./vm-hands-entry-lite-c3e25cks.js";import{existsSync as uq,mkdirSync as gq,readFileSync as Nq,writeFileSync as wq}from"fs";import{homedir as Yq}from"os";import{dirname as e,join as hq}from"path";import{spawnSync as G}from"child_process";import{createHash as Qq}from"crypto";import{chmodSync as Bq,closeSync as Kq,existsSync as U,lstatSync as Jq,mkdirSync as c,mkdtempSync as Lq,openSync as Dq,readFileSync as Wq,readSync as Hq,renameSync as p,rmSync as b,statSync as s,symlinkSync as Cq,writeFileSync as a}from"fs";import{connect as Fq}from"net";import{homedir as V}from"os";import{dirname as S,join as J}from"path";class C extends Error{}var F="reason-network",H="0.10.3",Vq={"aarch64-apple-darwin":"1e793a89ea8b53c603cddbc65ac08b0dd83f1dbfc30a1987858e2c52e2ed907c","x86_64-apple-darwin":"ef1f0f8d7d9e8a286de54eeb78f8ff8a53152c1a661c50b6182bfefa8eef8a02","aarch64-unknown-linux-musl":"75fdfd10314225ffb2875acc7ac73c66de23b5678b684d70b4678eb16ba35124","x86_64-unknown-linux-musl":"17111a623396eed0a2d98aa4d3bb03f00da37c25bdc39b6d0ba3ab202dfbe874"},xq="https://reasonmachines.com/cli/engine",P="REASON_AGENT_NETWORK_BIN";function Gq(){let q=process.arch==="arm64"?"aarch64":process.arch==="x64"?"x86_64":null,z=process.platform==="darwin"?"apple-darwin":process.platform==="linux"?"unknown-linux-musl":null;return q&&z?`${q}-${z}`:null}function N(q){let z=G(q,["--version"],{encoding:"utf8",timeout:5000}),[X,Y]=z.status===0?z.stdout.trim().split(/\s+/):[];return X===F?Y??null:null}function _(q,z){let X=q.split(".").map(Number),Y=z.split(".").map(Number);for(let Z=0;Z<3;Z+=1)if((X[Z]??0)!==(Y[Z]??0))return(X[Z]??0)>(Y[Z]??0);return!0}function v(q=V()){return J(q,".reason","bin","reason-network")}var j=`~/.local/bin/${F}`;async function Uq(q=process.env,z=()=>{}){if(q[P])return q[P];let X=v(),Y=t(),Z=Y?.path===X&&f(X)===Y.fingerprint?Y:null,Q=Z?.kept,$=h(q)?null:Mq(Q);if(Z?.version===H&&!$)return X;let B=U(X)?N(X):null;if($){let K=N($.path),L=B&&_(B,H)?B:H;if(!K||!_(L,K)){if(K)z(`Reason Network: ${j} (${K}) is newer than the engine reason network uses (${L}), so it was left as it is.`);Q=$.fingerprint,$=null}}if(Z?.version===H&&!$)return d(X,Q);if(!B||!_(B,H))await jq(X);let D=G(X,["setup",...h(q)?["--no-service"]:[]],{env:await i(q),encoding:"utf8",timeout:60000});if(D.status!==0){let K=O((D.stderr||D.stdout||"").trim().split(`
3
- `).pop()??"");if(Z)return r(V(),{...Z,fingerprint:f(X)??Z.fingerprint,...Q?{kept:Q}:{}}),z($?`Reason Network: couldn't move your agents off ${j}${K?` (${K})`:""}; they keep using it. Run reason network setup to try again.`:`Reason Network: couldn't finish setting up the network engine${K?` (${K})`:""}. Run reason network setup to try again.`),X;throw new C(`Couldn't connect this computer's agents to the network${K?` (${K})`:""}. Run reason network setup to try again.`)}if($)Q=Pq($,X,z);return d(X,Q),G(X,["stop"],{env:q,stdio:"ignore",timeout:15000}),X}function Mq(q){let z=J(V(),".local","bin",F),X;try{X=Jq(z)}catch{return null}let Y=`${X.size}:${X.mtimeMs}:${X.ino}`;if(!X.isFile()||Y===q)return null;try{let Z=s(v());if(Z.ino===X.ino&&Z.dev===X.dev)return null}catch{}try{let Z=Buffer.alloc(2),Q=Dq(z,"r");try{Hq(Q,Z,0,2,0)}finally{Kq(Q)}if(Z.toString("latin1")==="#!")return null}catch{return null}return{path:z,fingerprint:Y}}function Pq(q,z,X){let Y=`${q.path}.reason-${process.pid}`;try{b(Y,{force:!0}),Cq(z,Y),p(Y,q.path),X(`Reason Network: your agents now use the engine reason network keeps up to date; ${j} points to it. Restart a running agent to pick it up.`);return}catch(Z){return b(Y,{force:!0}),X(`Reason Network: your agents now use the engine reason network keeps up to date, but ${j} couldn't be pointed to it (${Z instanceof Error?Z.message:String(Z)}). Remove that copy so it can't take them back.`),q.fingerprint}}async function i(q){if(q[w])return q;try{let{defaultWorkerServiceHost:z,workerServiceLauncher:X}=await import("./serve-service-fpwme38f.js");return{...q,[w]:X(z(V()),q)}}catch{return q}}var w="REASON_NETWORK_REASON_BIN";function h(q=process.env){return Boolean(q.REASON_NETWORK_NO_SERVICE||q.TINCAN_NO_SERVICE)}var y=(q)=>J(q,".reason","ask-engine.json");function f(q){try{let z=s(q);return`${z.size}:${z.mtimeMs}:${z.ino}`}catch{return null}}function t(q=V()){try{let z=JSON.parse(Wq(y(q),"utf8"));if(typeof z.path!=="string"||typeof z.fingerprint!=="string"||typeof z.version!=="string")return null;return{path:z.path,fingerprint:z.fingerprint,version:z.version,...typeof z.kept==="string"?{kept:z.kept}:{}}}catch{return null}}function r(q,z){c(S(y(q)),{recursive:!0}),a(y(q),JSON.stringify(z))}function d(q,z){let X=f(q);if(X)r(V(),{path:q,fingerprint:X,version:H,...z?{kept:z}:{}});return q}async function jq(q){let z=Gq(),X=z?Vq[z]:void 0;if(!z||!X)throw new C(`Reason Network runs on macOS and Linux (arm64 or x64); this is ${process.platform} ${process.arch}.`);let Y=`${xq}/${H}/${F}-${z}.tar.gz`,Z;try{let B=await fetch(Y,{signal:AbortSignal.timeout(120000)});if(!B.ok)throw Error(`HTTP ${B.status}`);Z=Buffer.from(await B.arrayBuffer())}catch(B){let D=B instanceof Error&&B.name==="TimeoutError"?"no download within 2 minutes":B instanceof Error?B.message.replace(/\.$/,""):String(B);throw new C(`Couldn't download the network engine from ${new URL(Y).host} (${D}). Check the connection and run reason network again.`)}if(Qq("sha256").update(Z).digest("hex")!==X)throw new C("The downloaded network engine didn't match its checksum, so it wasn't installed.");c(S(q),{recursive:!0});let $=Lq(J(S(q),".reason-engine-"));try{if(a(J($,"engine.tar.gz"),Z),G("tar",["-xzf",J($,"engine.tar.gz"),"-C",$]).status!==0||!U(J($,F)))throw new C("Couldn't unpack the network engine.");Bq(J($,F),493),p(J($,F),q)}finally{b($,{recursive:!0,force:!0})}}function fq(q=process.env,z=V()){let X=q.REASON_NETWORK_HOME?.trim()||q.TINCAN_HOME?.trim();if(X)return X;let Y=J(z,".reason","network"),Z=J(z,".tincan");return!k(Y)&&k(Z)?Z:Y}var k=(q)=>U(J(q,"network.db"))||U(J(q,"tincan.db"));function Tq(q){let z=U(J(q,"network.db"))||!U(J(q,"tincan.db")),X=J(q,z?"network.sock":"tincan.sock");if(Buffer.byteLength(X)<100)return X;let Y=0xcbf29ce484222325n;for(let Z of Buffer.from(X))Y=BigInt.asUintN(64,(Y^BigInt(Z))*0x100000001b3n);return J("/tmp",`${z?"reason-network":"tincan"}-${process.getuid?.()??0}`,`${Y.toString(16).padStart(16,"0")}.sock`)}var o=15000,Oq=new Set(["who","team","inbox","unread","held"]),Rq=90000,Iq="the network daemon closed the connection";class T{socket;nextId=1;buffer="";pending=new Map;closed=null;hungUp=!1;constructor(q){this.socket=q;q.setEncoding("utf8"),q.on("data",(X)=>this.read(X));let z=(X)=>{this.closed=X;for(let Y of this.pending.values())Y.reject(X);this.pending.clear()};q.on("error",(X)=>z(X)),q.on("close",()=>z(Error(this.hungUp?"the connection to the network daemon was closed here":Iq)))}static open(q){return new Promise((z,X)=>{let Y=Fq(q);Y.once("connect",()=>z(new T(Y))),Y.once("error",X)})}read(q){this.buffer+=q;let z=this.buffer.indexOf(`
2
+ import{xa as u}from"./vm-hands-entry-lite-c1rexgd8.js";import{Vj as g}from"./vm-hands-entry-lite-aww3tkxa.js";import"./vm-hands-entry-lite-bhtafden.js";import"./vm-hands-entry-lite-ysk49bnz.js";import{Vk as M}from"./vm-hands-entry-lite-c3e25cks.js";import{existsSync as uq,mkdirSync as gq,readFileSync as Nq,writeFileSync as wq}from"fs";import{homedir as Yq}from"os";import{dirname as e,join as hq}from"path";import{spawnSync as G}from"child_process";import{createHash as Qq}from"crypto";import{chmodSync as Bq,closeSync as Kq,existsSync as U,lstatSync as Jq,mkdirSync as c,mkdtempSync as Lq,openSync as Dq,readFileSync as Wq,readSync as Hq,renameSync as p,rmSync as b,statSync as s,symlinkSync as Cq,writeFileSync as a}from"fs";import{connect as Fq}from"net";import{homedir as V}from"os";import{dirname as S,join as J}from"path";class C extends Error{}var F="reason-network",H="0.10.3",Vq={"aarch64-apple-darwin":"1e793a89ea8b53c603cddbc65ac08b0dd83f1dbfc30a1987858e2c52e2ed907c","x86_64-apple-darwin":"ef1f0f8d7d9e8a286de54eeb78f8ff8a53152c1a661c50b6182bfefa8eef8a02","aarch64-unknown-linux-musl":"75fdfd10314225ffb2875acc7ac73c66de23b5678b684d70b4678eb16ba35124","x86_64-unknown-linux-musl":"17111a623396eed0a2d98aa4d3bb03f00da37c25bdc39b6d0ba3ab202dfbe874"},xq="https://reasonmachines.com/cli/engine",P="REASON_AGENT_NETWORK_BIN";function Gq(){let q=process.arch==="arm64"?"aarch64":process.arch==="x64"?"x86_64":null,z=process.platform==="darwin"?"apple-darwin":process.platform==="linux"?"unknown-linux-musl":null;return q&&z?`${q}-${z}`:null}function N(q){let z=G(q,["--version"],{encoding:"utf8",timeout:5000}),[X,Y]=z.status===0?z.stdout.trim().split(/\s+/):[];return X===F?Y??null:null}function _(q,z){let X=q.split(".").map(Number),Y=z.split(".").map(Number);for(let Z=0;Z<3;Z+=1)if((X[Z]??0)!==(Y[Z]??0))return(X[Z]??0)>(Y[Z]??0);return!0}function v(q=V()){return J(q,".reason","bin","reason-network")}var j=`~/.local/bin/${F}`;async function Uq(q=process.env,z=()=>{}){if(q[P])return q[P];let X=v(),Y=t(),Z=Y?.path===X&&f(X)===Y.fingerprint?Y:null,Q=Z?.kept,$=h(q)?null:Mq(Q);if(Z?.version===H&&!$)return X;let B=U(X)?N(X):null;if($){let K=N($.path),L=B&&_(B,H)?B:H;if(!K||!_(L,K)){if(K)z(`Reason Network: ${j} (${K}) is newer than the engine reason network uses (${L}), so it was left as it is.`);Q=$.fingerprint,$=null}}if(Z?.version===H&&!$)return d(X,Q);if(!B||!_(B,H))await jq(X);let D=G(X,["setup",...h(q)?["--no-service"]:[]],{env:await i(q),encoding:"utf8",timeout:60000});if(D.status!==0){let K=O((D.stderr||D.stdout||"").trim().split(`
3
+ `).pop()??"");if(Z)return r(V(),{...Z,fingerprint:f(X)??Z.fingerprint,...Q?{kept:Q}:{}}),z($?`Reason Network: couldn't move your agents off ${j}${K?` (${K})`:""}; they keep using it. Run reason network setup to try again.`:`Reason Network: couldn't finish setting up the network engine${K?` (${K})`:""}. Run reason network setup to try again.`),X;throw new C(`Couldn't connect this computer's agents to the network${K?` (${K})`:""}. Run reason network setup to try again.`)}if($)Q=Pq($,X,z);return d(X,Q),G(X,["stop"],{env:q,stdio:"ignore",timeout:15000}),X}function Mq(q){let z=J(V(),".local","bin",F),X;try{X=Jq(z)}catch{return null}let Y=`${X.size}:${X.mtimeMs}:${X.ino}`;if(!X.isFile()||Y===q)return null;try{let Z=s(v());if(Z.ino===X.ino&&Z.dev===X.dev)return null}catch{}try{let Z=Buffer.alloc(2),Q=Dq(z,"r");try{Hq(Q,Z,0,2,0)}finally{Kq(Q)}if(Z.toString("latin1")==="#!")return null}catch{return null}return{path:z,fingerprint:Y}}function Pq(q,z,X){let Y=`${q.path}.reason-${process.pid}`;try{b(Y,{force:!0}),Cq(z,Y),p(Y,q.path),X(`Reason Network: your agents now use the engine reason network keeps up to date; ${j} points to it. Restart a running agent to pick it up.`);return}catch(Z){return b(Y,{force:!0}),X(`Reason Network: your agents now use the engine reason network keeps up to date, but ${j} couldn't be pointed to it (${Z instanceof Error?Z.message:String(Z)}). Remove that copy so it can't take them back.`),q.fingerprint}}async function i(q){if(q[w])return q;try{let{defaultWorkerServiceHost:z,workerServiceLauncher:X}=await import("./serve-service-heymhvzy.js");return{...q,[w]:X(z(V()),q)}}catch{return q}}var w="REASON_NETWORK_REASON_BIN";function h(q=process.env){return Boolean(q.REASON_NETWORK_NO_SERVICE||q.TINCAN_NO_SERVICE)}var y=(q)=>J(q,".reason","ask-engine.json");function f(q){try{let z=s(q);return`${z.size}:${z.mtimeMs}:${z.ino}`}catch{return null}}function t(q=V()){try{let z=JSON.parse(Wq(y(q),"utf8"));if(typeof z.path!=="string"||typeof z.fingerprint!=="string"||typeof z.version!=="string")return null;return{path:z.path,fingerprint:z.fingerprint,version:z.version,...typeof z.kept==="string"?{kept:z.kept}:{}}}catch{return null}}function r(q,z){c(S(y(q)),{recursive:!0}),a(y(q),JSON.stringify(z))}function d(q,z){let X=f(q);if(X)r(V(),{path:q,fingerprint:X,version:H,...z?{kept:z}:{}});return q}async function jq(q){let z=Gq(),X=z?Vq[z]:void 0;if(!z||!X)throw new C(`Reason Network runs on macOS and Linux (arm64 or x64); this is ${process.platform} ${process.arch}.`);let Y=`${xq}/${H}/${F}-${z}.tar.gz`,Z;try{let B=await fetch(Y,{signal:AbortSignal.timeout(120000)});if(!B.ok)throw Error(`HTTP ${B.status}`);Z=Buffer.from(await B.arrayBuffer())}catch(B){let D=B instanceof Error&&B.name==="TimeoutError"?"no download within 2 minutes":B instanceof Error?B.message.replace(/\.$/,""):String(B);throw new C(`Couldn't download the network engine from ${new URL(Y).host} (${D}). Check the connection and run reason network again.`)}if(Qq("sha256").update(Z).digest("hex")!==X)throw new C("The downloaded network engine didn't match its checksum, so it wasn't installed.");c(S(q),{recursive:!0});let $=Lq(J(S(q),".reason-engine-"));try{if(a(J($,"engine.tar.gz"),Z),G("tar",["-xzf",J($,"engine.tar.gz"),"-C",$]).status!==0||!U(J($,F)))throw new C("Couldn't unpack the network engine.");Bq(J($,F),493),p(J($,F),q)}finally{b($,{recursive:!0,force:!0})}}function fq(q=process.env,z=V()){let X=q.REASON_NETWORK_HOME?.trim()||q.TINCAN_HOME?.trim();if(X)return X;let Y=J(z,".reason","network"),Z=J(z,".tincan");return!k(Y)&&k(Z)?Z:Y}var k=(q)=>U(J(q,"network.db"))||U(J(q,"tincan.db"));function Tq(q){let z=U(J(q,"network.db"))||!U(J(q,"tincan.db")),X=J(q,z?"network.sock":"tincan.sock");if(Buffer.byteLength(X)<100)return X;let Y=0xcbf29ce484222325n;for(let Z of Buffer.from(X))Y=BigInt.asUintN(64,(Y^BigInt(Z))*0x100000001b3n);return J("/tmp",`${z?"reason-network":"tincan"}-${process.getuid?.()??0}`,`${Y.toString(16).padStart(16,"0")}.sock`)}var o=15000,Oq=new Set(["who","team","inbox","unread","held"]),Rq=90000,Iq="the network daemon closed the connection";class T{socket;nextId=1;buffer="";pending=new Map;closed=null;hungUp=!1;constructor(q){this.socket=q;q.setEncoding("utf8"),q.on("data",(X)=>this.read(X));let z=(X)=>{this.closed=X;for(let Y of this.pending.values())Y.reject(X);this.pending.clear()};q.on("error",(X)=>z(X)),q.on("close",()=>z(Error(this.hungUp?"the connection to the network daemon was closed here":Iq)))}static open(q){return new Promise((z,X)=>{let Y=Fq(q);Y.once("connect",()=>z(new T(Y))),Y.once("error",X)})}read(q){this.buffer+=q;let z=this.buffer.indexOf(`
4
4
  `);while(z>=0){let X=this.buffer.slice(0,z);if(this.buffer=this.buffer.slice(z+1),z=this.buffer.indexOf(`
5
5
  `),!X.trim())continue;let Y;try{Y=JSON.parse(X)}catch{continue}if(typeof Y.id!=="number")continue;let Z=this.pending.get(Y.id);if(!Z)continue;if(this.pending.delete(Y.id),Y.ok)Z.resolve(Y.result);else Z.reject(Error(O(Y.error??"the network daemon refused the request")))}}call(q,z={},X=o){if(this.closed)return Promise.reject(this.closed);let Y=this.nextId++;return this.socket.write(`${JSON.stringify({id:Y,op:q,...z})}
6
6
  `),new Promise((Z,Q)=>{let $=setTimeout(()=>{this.pending.delete(Y),Q(Error(`the network daemon didn't answer ${q} within ${Math.round(X/1000)}s`))},X);this.pending.set(Y,{resolve:(B)=>{clearTimeout($),Z(B)},reject:(B)=>{clearTimeout($),Q(B)}})})}get isClosed(){return this.closed!==null}close(){this.hungUp=!0,this.socket.end()}}var A=/^(Claude Code|Grok|Codex) \u00B7 (.*)$/,_q={"Claude Code":"claude-code",Grok:"grok",Codex:"codex"},Aq=/^ask-[0-9a-f]{6}$/;function l(q){return{id:q.id,from:q.from,fromAgent:q.from_agent,to:q.to,replyTo:q.reply_to,body:q.body,sentAt:q.sent_at}}function m(q){return{person:q.person,machine:q.machine,isMe:q.is_me,online:q.online,link:q.link,rttMs:q.rtt_ms}}class x{engine;env;connection=null;waits=new Set;constructor(q,z){this.engine=q;this.env=z}static async open(q=process.env,z){return new x(await Uq(q,z),q)}static openInstalled(q=process.env){if(q[P])return new x(q[P],q);let z=v(),X=t();return X?.path===z&&f(z)===X.fingerprint?new x(z,q):null}socketPath(){return Tq(fq(this.env))}async open(){try{return await T.open(this.socketPath())}catch{return G(this.engine,["who","--json"],{env:this.env,stdio:"ignore",timeout:15000}),await T.open(this.socketPath())}}async call(q,z={},X){if(!this.connection||this.connection.isClosed)this.connection=await this.open();try{return await this.connection.call(q,z,X)}catch(Y){if(!/closed|ECONNRESET|EPIPE/.test(String(Y)))throw Y;if(this.connection=await this.open(),!Oq.has(q))throw Y;return await this.connection.call(q,z)}}async waitOn(q,z){let X=await this.open();this.waits.add(X);try{return await X.call(q,z,z.wait_secs*1000+o)}finally{this.waits.delete(X),X.close()}}close(){this.connection?.close(),this.connection=null;for(let q of this.waits)q.close();this.waits.clear()}async team(){try{let q=await this.call("team");return{...q,machines:q.machines.map(m)}}catch(q){if(/team/i.test(String(q)))return null;throw q}}async snapshot(q={}){let z=await this.call("who",{all:Boolean(q.all),...q.filter?{filter:q.filter}:{}}),X=new Set(z.sessions.filter((Z)=>A.test(Z.doing??"")).map((Z)=>`${Z.person}/${Z.machine}:${Z.cwd}`)),Y=z.sessions.filter((Z)=>q.all||!Aq.test(Z.name)).filter((Z)=>A.test(Z.doing??"")||!X.has(`${Z.person}/${Z.machine}:${Z.cwd}`)).map((Z)=>{let Q=A.exec(Z.doing??"");return{address:Z.address,name:Z.name,person:Z.person,machine:Z.machine,agent:Q?_q[Q[1]]:Z.agent,cwd:Z.cwd,repo:Z.repo,branch:Z.branch,status:Q?Q[2]==="ready for work"?"idle":Q[2]==="stopped"?"offline":"busy":Z.status,since:Z.since,doing:Q?Q[2]:Z.doing,isMe:Z.is_me,worker:Boolean(Q),tier:Z.tier??null}});return{team:z.team,person:z.person,machine:z.machine,machines:z.machines.map(m),sessions:Y}}async send(q,z,X={}){if(!X.from)await this.call("hook",{agent:"cli",event:"stop",session_id:"terminal",name:"terminal",cwd:process.cwd(),mail:!1});let Y=await this.call("send",{from:X.from??"terminal",to:q,body:z,...X.replyTo?{reply_to:X.replyTo}:{},wake:X.wake??!0,...X.notify?{notify:!0}:{}});return{ids:Y.ids,recipients:Y.recipients.map((Z)=>Z.address),deliveries:Y.recipients.map((Z)=>({address:Z.address,state:Z.state,note:Z.note??""}))}}async session(q,z={}){let X=z.agent??"cli",Y=($,B={})=>this.call("hook",{agent:X,event:$,session_id:q,name:q,cwd:process.cwd(),mail:!1,...B}),Z=await Y("stop"),Q=`${X}:${q}`;return{name:q,address:Z.address??q,next:async($)=>{return(await this.waitOn("inbox",{key:Q,wait_secs:$,peek:!0})).messages.map(l)},ack:async($)=>{if($.length)await this.call("delivered",{key:Q,ids:$})},busy:async($)=>{if(await Y("prompt"),$)await Y("doing",{doing:$})},idle:async($)=>{if(await Y("stop"),$)await Y("doing",{doing:$})},doing:async($)=>{await Y("doing",{doing:$})},send:($,B,D,K)=>this.send($,B,{from:Q,...D?{replyTo:D}:{},...K?.notify?{notify:!0}:{}})}}async inbox(q={}){let X=(await this.waitOn("inbox",{key:"cli:terminal",wait_secs:q.waitSeconds??0,peek:!0}).catch((Y)=>{if(/isn't registered/.test(String(Y)))return{messages:[]};throw Y})).messages.map(l);if(X.length&&!q.peek)await this.call("delivered",{key:"cli:terminal",ids:X.map((Y)=>Y.id)});return X}async link(q={}){return await this.call("link",{new:Boolean(q.new)})}async changeTeam(q,z){try{return await this.call(q,z,Rq)}finally{this.close()}}async changeOntoTeam(q,z){try{await this.changeTeam(q,z)}catch(X){if(!/closed|ECONNRESET|EPIPE/.test(String(X)))throw X;if(await this.team())return;await this.changeTeam(q,z)}}async createTeam(q,z){await this.changeOntoTeam("create_team",{name:q,person:z})}async join(q,z){await this.changeOntoTeam("join",{ticket:q,person:z})}async leave(){return await this.changeTeam("leave",{force:!0})}async remove(q){return await this.call("remove",{who:q})}async setup(q,z={}){return this.passthrough(["setup",...q],z,await i(this.env))}passthrough(q,z={},X=this.env){this.close();let Y=G(this.engine,q,{stdio:["inherit","pipe","pipe"],encoding:"utf8",env:X});if(!z.quiet||Y.status!==0)process.stdout.write(O(Y.stdout??"")),process.stderr.write(O(Y.stderr??""));return Y.status??1}}function O(q){return q.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 Jz,mkdirSync as Lz,readFileSync as bq,writeFileSync as Dz}from"fs";import{homedir as Sq,hostname as Hz}from"os";import{dirname as Fz,join as yq}from"path";var vq=(q)=>yq(q,".reason","ask.json");function Eq(q){try{let z=JSON.parse(bq(vq(q),"utf8"));if(typeof z.orgId!=="string"||typeof z.team!=="string")return null;let X=z.pendingRotation;return{orgId:z.orgId,team:z.team,...typeof z.checkedAt==="number"?{checkedAt:z.checkedAt}:{},...X&&typeof X.link==="string"&&typeof X.team==="string"&&typeof X.replaces==="string"?{pendingRotation:X}:{}}}catch{return null}}function n(q=Sq()){let z=Eq(q);return z?{orgId:z.orgId,team:z.team}:null}var qq=86400000,dq=300,R=(q)=>hq(q,".reason","ask-relay.json");function E(q){try{let z=JSON.parse(Nq(R(q),"utf8"));return{sessions:Array.isArray(z.sessions)?z.sessions.filter((X)=>typeof X?.name==="string"&&typeof X.agent==="string"&&typeof X.usedAt==="number"):[]}}catch{return{sessions:[]}}}function kq(q,z){try{if(!uq(e(R(q))))gq(e(R(q)),{recursive:!0});wq(R(q),`${JSON.stringify(z)}
7
7
  `,{mode:384})}catch{}}var W=(q,z)=>new Promise((X)=>{if(z.aborted)return X();let Y=setTimeout(Z,q);Y.unref?.();function Z(){clearTimeout(Y),z.removeEventListener("abort",Z),X()}z.addEventListener("abort",Z,{once:!0})});function zq(q){let z=q?.status;return typeof z==="number"?z:null}var Xq=60000;function lq(q){return{address:q.address.slice(0,300),state:q.state.slice(0,40),note:q.note.slice(0,500)}}function mq(q){let z=Number.isFinite(q.sentAt)&&Math.abs(q.sentAt)<8640000000000000?q.sentAt:Date.now();return{id:q.id.slice(0,100),from:q.from.slice(0,300),from_agent:q.fromAgent?.slice(0,100)??null,to:q.to.slice(0,300),reply_to:q.replyTo?.slice(0,100)??null,sent_at:z,body:q.body.length>Xq?`${q.body.slice(0,Xq)}
8
- [cut: the answer was ${q.body.length} characters]`:q.body}}class Zq{network;api;home;signal;log;team;sessions=new Map;readers=new Set;constructor(q,z,X,Y,Z,Q){this.network=q;this.api=z;this.home=X;this.signal=Y;this.log=Z;this.team=Q}async run(){let q=Date.now()-qq;for(let X of E(this.home).sessions)if(X.usedAt>q)this.read(X);let z=0;while(!this.signal.aborted){let X=await this.network.team().catch(()=>null);if(!X){await W(60000,this.signal);continue}if(X.name!==this.team)return;let Y;try{let Z=await this.api.claimAgentNetworkRelayJob({machine:X.machine,person:X.person,team:X.name,version:g,wait_seconds:u},AbortSignal.any([this.signal,AbortSignal.timeout((u+20)*1000)]));if(z=0,Z.retry_after_seconds)await W(Z.retry_after_seconds*1000,this.signal);Y=Z.job}catch(Z){if(this.signal.aborted)return;let Q=zq(Z);if(Q===403||Q===401){await W(900000,this.signal);continue}if(Q===404||Q===405){await W(120000,this.signal);continue}z+=1,await W(Math.min(60000,1000*2**Math.min(z,6)),this.signal);continue}if(Y)this.carry(Y)}}async carry(q){let z;try{z=q.kind==="who"?{who:await this.who(q)}:{sent:await this.send(q)}}catch(X){z={error:X instanceof Error?X.message:String(X)}}for(let X=1;;X+=1)try{if(await this.api.completeAgentNetworkRelayJob(q.id,z),q.kind==="send")this.log(`relayed a message to ${q.to} from ${"sent"in z?z.sent.from:q.from_name}`,"relayed");return}catch(Y){if(X>=4||this.signal.aborted){this.log(`couldn't report a relayed call: ${Y instanceof Error?Y.message:String(Y)}`);return}await W(X*1000,this.signal)}}async who(q){let z=q.all===!0,X=await this.network.snapshot({all:z});return{all:z,team:X.team,sessions:X.sessions.map((Y)=>({address:Y.address,person:Y.person,machine:Y.machine,agent:Y.agent,repo:Y.repo,branch:Y.branch,status:Y.status,since:Y.since,doing:Y.doing,worker:Y.worker,...Y.tier?{tier:Y.tier.slice(0,10)}:{}})),machines:X.machines.map((Y)=>({person:Y.person,machine:Y.machine,online:Y.online}))}}async send(q){let z={name:q.from_name,agent:q.from_agent},X=await this.session(z),Y=await X.send(q.to,q.body,q.reply_to,{notify:q.notify===!0});return this.remember(z),this.read(z),{ids:Y.ids,recipients:Y.recipients,from:X.address,deliveries:Y.deliveries.slice(0,500).map(lq)}}session(q){let z=`${q.agent}:${q.name}`,X=this.sessions.get(z);if(!X)X=this.network.session(q.name,{agent:q.agent}).then(async(Y)=>{return await Y.idle(`personal agent (${q.agent}), through Reason`).catch(()=>{}),Y}),X.catch(()=>this.sessions.delete(z)),this.sessions.set(z,X);return X}remember(q){let X=E(this.home).sessions.filter((Y)=>Y.name!==q.name||Y.agent!==q.agent);kq(this.home,{sessions:[...X,{...q,usedAt:Date.now()}].slice(-50)})}read(q){let z=`${q.agent}:${q.name}`;if(this.readers.has(z))return;this.readers.add(z),(async()=>{let X=0;try{while(!this.signal.aborted){let Y=E(this.home).sessions.find((Z)=>Z.name===q.name&&Z.agent===q.agent)?.usedAt??0;if(Date.now()-Y>qq)return;try{let Z=await this.session(q),Q=await Z.next(dq);if(Q.length===0)continue;await this.api.recordAgentNetworkRelayReplies(Q.map(mq)).catch(($)=>{let B=zq($);if(B===null||B>=500||B===429||B===401)throw $;this.log(`dropped ${Q.length} answer(s) the server refused (HTTP ${B})`)}),await Z.ack(Q.map(($)=>$.id)),X=0}catch{if(this.signal.aborted)return;this.sessions.delete(z),X+=1,await W(Math.min(60000,1000*2**Math.min(X,6)),this.signal)}}}finally{this.readers.delete(z)}})()}}async function cq(q){await new Zq(q.network,q.api,q.home??Yq(),q.signal,q.log??(()=>{}),q.team).run()}async function pq(q,z=()=>{}){let X="";while(!q.aborted){try{let Y=n(),Z=Y?x.openInstalled():null;if(Y&&Z){let[{requireApiCredentials:Q},{ReasonApi:$}]=await Promise.all([import("./api-credentials-21wv0h6t.js"),import("./api-e050y588.js")]),B=await Q({});if(B.credentialKind!=="api_key"&&B.orgId.toLowerCase()===Y.orgId.toLowerCase())try{await cq({network:Z,api:new $(B),team:Y.team,signal:q,log:z})}finally{Z.close()}}X=""}catch(Y){let Z=`agent network relay: ${Y instanceof Error?Y.message:String(Y)}`;if(Z!==X)z(Z);X=Z}await W(300000,q)}}var sq=600000,aq=3600000,iq=180000;async function Rz(q,z,X={}){let Y=-1/0,Z="",Q=(L,$q)=>{let I=Date.now();if($q==="relayed"||I-Y<sq||L===Z&&I-Y<aq)return;Y=I,Z=L,z(L)},$=new AbortController,B=()=>$.abort();q.once("end",B),q.once("close",B),q.once("error",B),q.resume();let D=X.installedVersion??(()=>tq()),K=setInterval(()=>{D().then((L)=>{if(L!==null&&L!==g)$.abort()},()=>{})},X.checkMs??iq);K.unref?.();try{await(X.relay??pq)($.signal,Q)}finally{clearInterval(K)}}async function tq(q={}){if(!(q.compiled??Bun.main.startsWith("/$bunfs/")))return null;let z=q.home??Yq(),X=q.env??process.env;if((q.platform??process.platform)==="darwin"){let{currentManagedRuntimeVersion:Q,isManagedRuntimeVersionExecutable:$,legacyManagedRuntimePaths:B,managedRuntimePaths:D}=await import("./managed-runtime-f9nnr42a.js");try{let K=D({platform:"darwin",home:z,environment:X});for(let L of[K,B(K)])if(L&&$(L))return Q(L)}catch{}return null}let{installationReceiptPath:Y,loadInstallationReceipt:Z}=await import("./install-receipt-23tf4870.js");return Z(Y(X,z))?.version??null}export{Rz as runDaemonRelay,pq as runBackgroundAskRelay,cq as runAskRelay,tq as installedCliVersion};
8
+ [cut: the answer was ${q.body.length} characters]`:q.body}}class Zq{network;api;home;signal;log;team;sessions=new Map;readers=new Set;constructor(q,z,X,Y,Z,Q){this.network=q;this.api=z;this.home=X;this.signal=Y;this.log=Z;this.team=Q}async run(){let q=Date.now()-qq;for(let X of E(this.home).sessions)if(X.usedAt>q)this.read(X);let z=0;while(!this.signal.aborted){let X=await this.network.team().catch(()=>null);if(!X){await W(60000,this.signal);continue}if(X.name!==this.team)return;let Y;try{let Z=await this.api.claimAgentNetworkRelayJob({machine:X.machine,person:X.person,team:X.name,version:g,wait_seconds:u},AbortSignal.any([this.signal,AbortSignal.timeout((u+20)*1000)]));if(z=0,Z.retry_after_seconds)await W(Z.retry_after_seconds*1000,this.signal);Y=Z.job}catch(Z){if(this.signal.aborted)return;let Q=zq(Z);if(Q===403||Q===401){await W(900000,this.signal);continue}if(Q===404||Q===405){await W(120000,this.signal);continue}z+=1,await W(Math.min(60000,1000*2**Math.min(z,6)),this.signal);continue}if(Y)this.carry(Y)}}async carry(q){let z;try{z=q.kind==="who"?{who:await this.who(q)}:{sent:await this.send(q)}}catch(X){z={error:X instanceof Error?X.message:String(X)}}for(let X=1;;X+=1)try{if(await this.api.completeAgentNetworkRelayJob(q.id,z),q.kind==="send")this.log(`relayed a message to ${q.to} from ${"sent"in z?z.sent.from:q.from_name}`,"relayed");return}catch(Y){if(X>=4||this.signal.aborted){this.log(`couldn't report a relayed call: ${Y instanceof Error?Y.message:String(Y)}`);return}await W(X*1000,this.signal)}}async who(q){let z=q.all===!0,X=await this.network.snapshot({all:z});return{all:z,team:X.team,sessions:X.sessions.map((Y)=>({address:Y.address,person:Y.person,machine:Y.machine,agent:Y.agent,repo:Y.repo,branch:Y.branch,status:Y.status,since:Y.since,doing:Y.doing,worker:Y.worker,...Y.tier?{tier:Y.tier.slice(0,10)}:{}})),machines:X.machines.map((Y)=>({person:Y.person,machine:Y.machine,online:Y.online}))}}async send(q){let z={name:q.from_name,agent:q.from_agent},X=await this.session(z),Y=await X.send(q.to,q.body,q.reply_to,{notify:q.notify===!0});return this.remember(z),this.read(z),{ids:Y.ids,recipients:Y.recipients,from:X.address,deliveries:Y.deliveries.slice(0,500).map(lq)}}session(q){let z=`${q.agent}:${q.name}`,X=this.sessions.get(z);if(!X)X=this.network.session(q.name,{agent:q.agent}).then(async(Y)=>{return await Y.idle(`personal agent (${q.agent}), through Reason`).catch(()=>{}),Y}),X.catch(()=>this.sessions.delete(z)),this.sessions.set(z,X);return X}remember(q){let X=E(this.home).sessions.filter((Y)=>Y.name!==q.name||Y.agent!==q.agent);kq(this.home,{sessions:[...X,{...q,usedAt:Date.now()}].slice(-50)})}read(q){let z=`${q.agent}:${q.name}`;if(this.readers.has(z))return;this.readers.add(z),(async()=>{let X=0;try{while(!this.signal.aborted){let Y=E(this.home).sessions.find((Z)=>Z.name===q.name&&Z.agent===q.agent)?.usedAt??0;if(Date.now()-Y>qq)return;try{let Z=await this.session(q),Q=await Z.next(dq);if(Q.length===0)continue;await this.api.recordAgentNetworkRelayReplies(Q.map(mq)).catch(($)=>{let B=zq($);if(B===null||B>=500||B===429||B===401)throw $;this.log(`dropped ${Q.length} answer(s) the server refused (HTTP ${B})`)}),await Z.ack(Q.map(($)=>$.id)),X=0}catch{if(this.signal.aborted)return;this.sessions.delete(z),X+=1,await W(Math.min(60000,1000*2**Math.min(X,6)),this.signal)}}}finally{this.readers.delete(z)}})()}}async function cq(q){await new Zq(q.network,q.api,q.home??Yq(),q.signal,q.log??(()=>{}),q.team).run()}async function pq(q,z=()=>{}){let X="";while(!q.aborted){try{let Y=n(),Z=Y?x.openInstalled():null;if(Y&&Z){let[{requireApiCredentials:Q},{ReasonApi:$}]=await Promise.all([import("./api-credentials-21wv0h6t.js"),import("./api-e050y588.js")]),B=await Q({});if(B.credentialKind!=="api_key"&&B.orgId.toLowerCase()===Y.orgId.toLowerCase())try{await cq({network:Z,api:new $(B),team:Y.team,signal:q,log:z})}finally{Z.close()}}X=""}catch(Y){let Z=`agent network relay: ${Y instanceof Error?Y.message:String(Y)}`;if(Z!==X)z(Z);X=Z}await W(300000,q)}}var sq=600000,aq=3600000,iq=180000;async function Rz(q,z,X={}){let Y=-1/0,Z="",Q=(L,$q)=>{let I=Date.now();if($q==="relayed"||I-Y<sq||L===Z&&I-Y<aq)return;Y=I,Z=L,z(L)},$=new AbortController,B=()=>$.abort();q.once("end",B),q.once("close",B),q.once("error",B),q.resume();let D=X.installedVersion??(()=>tq()),K=setInterval(()=>{D().then((L)=>{if(L!==null&&L!==g)$.abort()},()=>{})},X.checkMs??iq);K.unref?.();try{await(X.relay??pq)($.signal,Q)}finally{clearInterval(K)}}async function tq(q={}){if(!(q.compiled??Bun.main.startsWith("/$bunfs/")))return null;let z=q.home??Yq(),X=q.env??process.env;if((q.platform??process.platform)==="darwin"){let{currentManagedRuntimeVersion:Q,isManagedRuntimeVersionExecutable:$,legacyManagedRuntimePaths:B,managedRuntimePaths:D}=await import("./managed-runtime-jwqtx96m.js");try{let K=D({platform:"darwin",home:z,environment:X});for(let L of[K,B(K)])if(L&&$(L))return Q(L)}catch{}return null}let{installationReceiptPath:Y,loadInstallationReceipt:Z}=await import("./install-receipt-23tf4870.js");return Z(Y(X,z))?.version??null}export{Rz as runDaemonRelay,pq as runBackgroundAskRelay,cq as runAskRelay,tq as installedCliVersion};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{e as a,f as b,g as c,h as d,i as e,j as f,k as g,l as h,m as i,n as j,o as k,p as l,q as m}from"./vm-hands-entry-lite-m7vam0j2.js";import"./vm-hands-entry-lite-bk5acpe9.js";import"./vm-hands-entry-lite-yz6a02cp.js";import"./vm-hands-entry-lite-2k459na8.js";import"./vm-hands-entry-lite-x914078k.js";import"./vm-hands-entry-lite-c1rexgd8.js";import"./vm-hands-entry-lite-cwd9y2pv.js";import"./vm-hands-entry-lite-2grs67fz.js";import"./vm-hands-entry-lite-heehk76b.js";import"./vm-hands-entry-lite-400hmvkg.js";import"./vm-hands-entry-lite-k9amte6k.js";import"./vm-hands-entry-lite-swwb5mp2.js";import"./vm-hands-entry-lite-wts79wdn.js";import"./vm-hands-entry-lite-nqvb7a2m.js";import"./vm-hands-entry-lite-xaaxvbk8.js";import"./vm-hands-entry-lite-mwj7bnse.js";import"./vm-hands-entry-lite-kaht6v11.js";import"./vm-hands-entry-lite-x0x1t6gp.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-0badx5n8.js";import"./vm-hands-entry-lite-2yt333v3.js";import"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-nhhpc9n2.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-gp85aqkt.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-gbf8h13w.js";import"./vm-hands-entry-lite-b3jmyabq.js";import"./vm-hands-entry-lite-qg11k3bf.js";import"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.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};
2
+ import{e as a,f as b,g as c,h as d,i as e,j as f,k as g,l as h,m as i,n as j,o as k,p as l,q as m}from"./vm-hands-entry-lite-swasdyfd.js";import"./vm-hands-entry-lite-bk5acpe9.js";import"./vm-hands-entry-lite-yz6a02cp.js";import"./vm-hands-entry-lite-2k459na8.js";import"./vm-hands-entry-lite-rn52eajb.js";import"./vm-hands-entry-lite-c1rexgd8.js";import"./vm-hands-entry-lite-wt71n7n2.js";import"./vm-hands-entry-lite-1xmf8aps.js";import"./vm-hands-entry-lite-heehk76b.js";import"./vm-hands-entry-lite-400hmvkg.js";import"./vm-hands-entry-lite-k9amte6k.js";import"./vm-hands-entry-lite-swwb5mp2.js";import"./vm-hands-entry-lite-wts79wdn.js";import"./vm-hands-entry-lite-nqvb7a2m.js";import"./vm-hands-entry-lite-xaaxvbk8.js";import"./vm-hands-entry-lite-xm52myx6.js";import"./vm-hands-entry-lite-xstx7r49.js";import"./vm-hands-entry-lite-x0x1t6gp.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-8c6rvxbe.js";import"./vm-hands-entry-lite-2yt333v3.js";import"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-933zx1dx.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-yw74rzzs.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-aww3tkxa.js";import"./vm-hands-entry-lite-bhtafden.js";import"./vm-hands-entry-lite-qg11k3bf.js";import"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.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 +1,2 @@
1
1
  // @bun
2
- import{Fd as a,Gd as b,Hd as c,Id as d,Jd as e,Kd as f,Ld as g,Md as h,Nd as i,Od as j,Pd as k,Qd as l}from"./vm-hands-entry-lite-mwj7bnse.js";import"./vm-hands-entry-lite-kaht6v11.js";import"./vm-hands-entry-lite-x0x1t6gp.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-0badx5n8.js";import"./vm-hands-entry-lite-2yt333v3.js";import"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-nhhpc9n2.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-gp85aqkt.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-gbf8h13w.js";import"./vm-hands-entry-lite-b3jmyabq.js";import"./vm-hands-entry-lite-qg11k3bf.js";import"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.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};
2
+ import{Fd as a,Gd as b,Hd as c,Id as d,Jd as e,Kd as f,Ld as g,Md as h,Nd as i,Od as j,Pd as k,Qd as l}from"./vm-hands-entry-lite-xm52myx6.js";import"./vm-hands-entry-lite-xstx7r49.js";import"./vm-hands-entry-lite-x0x1t6gp.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-8c6rvxbe.js";import"./vm-hands-entry-lite-2yt333v3.js";import"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-933zx1dx.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-yw74rzzs.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-aww3tkxa.js";import"./vm-hands-entry-lite-bhtafden.js";import"./vm-hands-entry-lite-qg11k3bf.js";import"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.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 +1,2 @@
1
1
  // @bun
2
- import{$a as k,Ta as c,Ua as d,Va as e,Wa as f,Xa as g,Ya as h,Za as i,_a as j,ab as l,bb as m,cb as n,db as o,eb as p,fb as q,gb as r,hb as s,ib as t,jb as u}from"./vm-hands-entry-lite-cwd9y2pv.js";import"./vm-hands-entry-lite-2grs67fz.js";import"./vm-hands-entry-lite-heehk76b.js";import"./vm-hands-entry-lite-400hmvkg.js";import"./vm-hands-entry-lite-k9amte6k.js";import"./vm-hands-entry-lite-swwb5mp2.js";import"./vm-hands-entry-lite-wts79wdn.js";import"./vm-hands-entry-lite-nqvb7a2m.js";import"./vm-hands-entry-lite-xaaxvbk8.js";import"./vm-hands-entry-lite-mwj7bnse.js";import"./vm-hands-entry-lite-kaht6v11.js";import"./vm-hands-entry-lite-x0x1t6gp.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-0badx5n8.js";import"./vm-hands-entry-lite-2yt333v3.js";import"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-nhhpc9n2.js";import{cj as b}from"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-gp85aqkt.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-gbf8h13w.js";import"./vm-hands-entry-lite-b3jmyabq.js";import"./vm-hands-entry-lite-qg11k3bf.js";import"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import{Pk as a}from"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.js";export{j as writeOpenFlags,g as spawnCaptured,f as sandboxProfile,e as safeEnvironment,k as runTransferCapability,i as runFileCapability,t as rebindLocalHandsControl,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};
2
+ import{$a as k,Ta as c,Ua as d,Va as e,Wa as f,Xa as g,Ya as h,Za as i,_a as j,ab as l,bb as m,cb as n,db as o,eb as p,fb as q,gb as r,hb as s,ib as t,jb as u}from"./vm-hands-entry-lite-wt71n7n2.js";import"./vm-hands-entry-lite-1xmf8aps.js";import"./vm-hands-entry-lite-heehk76b.js";import"./vm-hands-entry-lite-400hmvkg.js";import"./vm-hands-entry-lite-k9amte6k.js";import"./vm-hands-entry-lite-swwb5mp2.js";import"./vm-hands-entry-lite-wts79wdn.js";import"./vm-hands-entry-lite-nqvb7a2m.js";import"./vm-hands-entry-lite-xaaxvbk8.js";import"./vm-hands-entry-lite-xm52myx6.js";import"./vm-hands-entry-lite-xstx7r49.js";import"./vm-hands-entry-lite-x0x1t6gp.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-8c6rvxbe.js";import"./vm-hands-entry-lite-2yt333v3.js";import"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-933zx1dx.js";import{cj as b}from"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-yw74rzzs.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-aww3tkxa.js";import"./vm-hands-entry-lite-bhtafden.js";import"./vm-hands-entry-lite-qg11k3bf.js";import"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import{Pk as a}from"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.js";export{j as writeOpenFlags,g as spawnCaptured,f as sandboxProfile,e as safeEnvironment,k as runTransferCapability,i as runFileCapability,t as rebindLocalHandsControl,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 +1,2 @@
1
1
  // @bun
2
- import{ng as a,og as b,pg as c,qg as d,rg as e,sg as f,tg as g,ug as h}from"./vm-hands-entry-lite-0badx5n8.js";import"./vm-hands-entry-lite-2yt333v3.js";import"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-nhhpc9n2.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-gp85aqkt.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-gbf8h13w.js";import"./vm-hands-entry-lite-b3jmyabq.js";import"./vm-hands-entry-lite-qg11k3bf.js";import"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.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};
2
+ import{ng as a,og as b,pg as c,qg as d,rg as e,sg as f,tg as g,ug as h}from"./vm-hands-entry-lite-8c6rvxbe.js";import"./vm-hands-entry-lite-2yt333v3.js";import"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-933zx1dx.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-yw74rzzs.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-aww3tkxa.js";import"./vm-hands-entry-lite-bhtafden.js";import"./vm-hands-entry-lite-qg11k3bf.js";import"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.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 +1,2 @@
1
1
  // @bun
2
- import{$ as D,L as n,M as o,N as p,O as q,P as r,Q as s,R as t,S as u,T as v,U as w,V as x,W as y,X as z,Y as A,Z as B,_ as C,aa as E,ba as F,ca as G,da as H,ea as I,fa as J,ga as K,ha as L,ia as M,ja as N,ka as O,la as P,ma as Q,na as R,oa as S,pa as T,qa as U,ra as V,sa as W,ta as X,ua as Y,va as Z,wa as _}from"./vm-hands-entry-lite-x914078k.js";import"./vm-hands-entry-lite-wts79wdn.js";import"./vm-hands-entry-lite-nqvb7a2m.js";import{ei as a,fi as b,gi as c,hi as d,ii as e,ji as f,ki as g,li as h,ni as i,oi as j,qi as k,ri as l,si as m}from"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-gp85aqkt.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-gbf8h13w.js";import"./vm-hands-entry-lite-b3jmyabq.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-c3e25cks.js";export{G as verifyManagedRuntimeCodeSignatures,m as verifyManagedRuntimeArtifact,J as updateManagedRuntime,l as sha256Hex,S as rollbackManagedRuntime,T as recoverManagedRuntimeActivation,X as recordManagedRuntimeLifecycle,W as readManagedRuntimeLifecycleEvents,j as parseAndVerifyManagedRuntimeManifest,k as parseAndVerifyLegacyManagedRuntimeManifest,B as managedRuntimeVersionPath,E as managedRuntimeTarget,M as managedRuntimePointerVersion,z as managedRuntimePaths,Q as managedRuntimeExecutableVersion,C as managedRuntimeCredentialLibraryPath,h as managedRuntimeCredentialLibraryAssetName,g as managedRuntimeAssetName,A as legacyManagedRuntimePaths,P as isManagedRuntimeVersionExecutable,O as isManagedRuntimeExecutable,L as installManagedRuntimeLauncher,K as installManagedRuntimeArtifact,Z as flushManagedRuntimeLifecycleEvents,H as fetchManagedRuntimeBytes,I as defaultManagedRuntimeHealthCheck,N as currentManagedRuntimeVersion,D as compareManagedRuntimeVersions,i as canonicalJson,_ as bootstrapManagedRuntime,F as assertManagedRuntimeSignatureEvidence,R as activateManagedRuntime,V as acquireManagedRuntimeLock,U as acquireManagedRuntimeDirectoryLock,Y as acknowledgeManagedRuntimeLifecycleEvents,f as ManagedRuntimeError,v as MANAGED_RUNTIME_UPDATE_HEALTH_TIMEOUT_MS,e as MANAGED_RUNTIME_TARGETS,d as MANAGED_RUNTIME_MAX_MANIFEST_BYTES,p as MANAGED_RUNTIME_MAX_LIFECYCLE_EVENTS,q as MANAGED_RUNTIME_MAX_LIFECYCLE_BYTES,c as MANAGED_RUNTIME_MAX_ARTIFACT_BYTES,b as MANAGED_RUNTIME_MANIFEST_VERSION,r as MANAGED_RUNTIME_MANIFEST_URL,o as MANAGED_RUNTIME_LIFECYCLE_VERSION,y as MANAGED_RUNTIME_LIFECYCLE_EVENTS,n as MANAGED_RUNTIME_LAYOUT_VERSION,u as MANAGED_RUNTIME_HEALTH_TIMEOUT_MS,s as MANAGED_RUNTIME_FETCH_TIMEOUT_MS,t as MANAGED_RUNTIME_ARTIFACT_FETCH_TIMEOUT_MS,a as LEGACY_MANAGED_RUNTIME_MANIFEST_VERSION,w as DEVICE_BROKER_SIGNING_IDENTIFIER,x as DEVICE_BROKER_DESIGNATED_REQUIREMENT};
2
+ import{$ as D,L as n,M as o,N as p,O as q,P as r,Q as s,R as t,S as u,T as v,U as w,V as x,W as y,X as z,Y as A,Z as B,_ as C,aa as E,ba as F,ca as G,da as H,ea as I,fa as J,ga as K,ha as L,ia as M,ja as N,ka as O,la as P,ma as Q,na as R,oa as S,pa as T,qa as U,ra as V,sa as W,ta as X,ua as Y,va as Z,wa as _}from"./vm-hands-entry-lite-rn52eajb.js";import"./vm-hands-entry-lite-wts79wdn.js";import"./vm-hands-entry-lite-nqvb7a2m.js";import{ei as a,fi as b,gi as c,hi as d,ii as e,ji as f,ki as g,li as h,ni as i,oi as j,qi as k,ri as l,si as m}from"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-yw74rzzs.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-aww3tkxa.js";import"./vm-hands-entry-lite-bhtafden.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-c3e25cks.js";export{G as verifyManagedRuntimeCodeSignatures,m as verifyManagedRuntimeArtifact,J as updateManagedRuntime,l as sha256Hex,S as rollbackManagedRuntime,T as recoverManagedRuntimeActivation,X as recordManagedRuntimeLifecycle,W as readManagedRuntimeLifecycleEvents,j as parseAndVerifyManagedRuntimeManifest,k as parseAndVerifyLegacyManagedRuntimeManifest,B as managedRuntimeVersionPath,E as managedRuntimeTarget,M as managedRuntimePointerVersion,z as managedRuntimePaths,Q as managedRuntimeExecutableVersion,C as managedRuntimeCredentialLibraryPath,h as managedRuntimeCredentialLibraryAssetName,g as managedRuntimeAssetName,A as legacyManagedRuntimePaths,P as isManagedRuntimeVersionExecutable,O as isManagedRuntimeExecutable,L as installManagedRuntimeLauncher,K as installManagedRuntimeArtifact,Z as flushManagedRuntimeLifecycleEvents,H as fetchManagedRuntimeBytes,I as defaultManagedRuntimeHealthCheck,N as currentManagedRuntimeVersion,D as compareManagedRuntimeVersions,i as canonicalJson,_ as bootstrapManagedRuntime,F as assertManagedRuntimeSignatureEvidence,R as activateManagedRuntime,V as acquireManagedRuntimeLock,U as acquireManagedRuntimeDirectoryLock,Y as acknowledgeManagedRuntimeLifecycleEvents,f as ManagedRuntimeError,v as MANAGED_RUNTIME_UPDATE_HEALTH_TIMEOUT_MS,e as MANAGED_RUNTIME_TARGETS,d as MANAGED_RUNTIME_MAX_MANIFEST_BYTES,p as MANAGED_RUNTIME_MAX_LIFECYCLE_EVENTS,q as MANAGED_RUNTIME_MAX_LIFECYCLE_BYTES,c as MANAGED_RUNTIME_MAX_ARTIFACT_BYTES,b as MANAGED_RUNTIME_MANIFEST_VERSION,r as MANAGED_RUNTIME_MANIFEST_URL,o as MANAGED_RUNTIME_LIFECYCLE_VERSION,y as MANAGED_RUNTIME_LIFECYCLE_EVENTS,n as MANAGED_RUNTIME_LAYOUT_VERSION,u as MANAGED_RUNTIME_HEALTH_TIMEOUT_MS,s as MANAGED_RUNTIME_FETCH_TIMEOUT_MS,t as MANAGED_RUNTIME_ARTIFACT_FETCH_TIMEOUT_MS,a as LEGACY_MANAGED_RUNTIME_MANIFEST_VERSION,w as DEVICE_BROKER_SIGNING_IDENTIFIER,x as DEVICE_BROKER_DESIGNATED_REQUIREMENT};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Qi as a,Ri as b,Si as c,Ti as d,Ui as e,Vi as f,Wi as g,Xi as h,Yi as i,Zi as j}from"./vm-hands-entry-lite-nhhpc9n2.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-gp85aqkt.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-gbf8h13w.js";import"./vm-hands-entry-lite-b3jmyabq.js";import"./vm-hands-entry-lite-qg11k3bf.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.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};
2
+ import{Qi as a,Ri as b,Si as c,Ti as d,Ui as e,Vi as f,Wi as g,Xi as h,Yi as i,Zi as j}from"./vm-hands-entry-lite-933zx1dx.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-yw74rzzs.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-aww3tkxa.js";import"./vm-hands-entry-lite-bhtafden.js";import"./vm-hands-entry-lite-qg11k3bf.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.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 +1,2 @@
1
1
  // @bun
2
- import{$d as j,Sd as a,Td as b,Ud as c,Vd as d,Wd as e,Xd as f,Yd as g,Zd as h,_d as i,ae as k,be as l,ce as m,de as n,ee as o,fe as p,ge as q,he as r}from"./vm-hands-entry-lite-kaht6v11.js";import"./vm-hands-entry-lite-x0x1t6gp.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-gp85aqkt.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-gbf8h13w.js";import"./vm-hands-entry-lite-b3jmyabq.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-c3e25cks.js";export{g as workerServiceRetargetPending,f as workerServiceProgram,m as workerServiceProcessRunning,e as workerServiceLauncher,j as workerServiceDefinitions,n as workerServiceDefinitionCurrent,l as retireLegacyWorkerService,q as retargetWorkerServiceLogs,p as restartWorkerService,r as removeWorkerService,i as isConnectServiceLabel,k as installedWorkerService,o as installWorkerService,c as defaultWorkerServiceHost,h as connectServiceLabel,d as WorkerServiceError,a as WORKER_SERVICE_ENV,b as WORKER_IDENTITY_UNAVAILABLE_CODE};
2
+ import{$d as j,Sd as a,Td as b,Ud as c,Vd as d,Wd as e,Xd as f,Yd as g,Zd as h,_d as i,ae as k,be as l,ce as m,de as n,ee as o,fe as p,ge as q,he as r}from"./vm-hands-entry-lite-xstx7r49.js";import"./vm-hands-entry-lite-x0x1t6gp.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-yw74rzzs.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-aww3tkxa.js";import"./vm-hands-entry-lite-bhtafden.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-c3e25cks.js";export{g as workerServiceRetargetPending,f as workerServiceProgram,m as workerServiceProcessRunning,e as workerServiceLauncher,j as workerServiceDefinitions,n as workerServiceDefinitionCurrent,l as retireLegacyWorkerService,q as retargetWorkerServiceLogs,p as restartWorkerService,r as removeWorkerService,i as isConnectServiceLabel,k as installedWorkerService,o as installWorkerService,c as defaultWorkerServiceHost,h as connectServiceLabel,d as WorkerServiceError,a as WORKER_SERVICE_ENV,b as WORKER_IDENTITY_UNAVAILABLE_CODE};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{a as jq,b as Dq,c as Vq,d as kq,g as Hq,h as zq,m as Aq}from"./vm-hands-entry-lite-m7vam0j2.js";import"./vm-hands-entry-lite-bk5acpe9.js";import{y as Fq}from"./vm-hands-entry-lite-yz6a02cp.js";import{A as Wq,K as bq}from"./vm-hands-entry-lite-2k459na8.js";import"./vm-hands-entry-lite-x914078k.js";import"./vm-hands-entry-lite-c1rexgd8.js";import"./vm-hands-entry-lite-cwd9y2pv.js";import"./vm-hands-entry-lite-2grs67fz.js";import"./vm-hands-entry-lite-heehk76b.js";import"./vm-hands-entry-lite-400hmvkg.js";import"./vm-hands-entry-lite-k9amte6k.js";import"./vm-hands-entry-lite-swwb5mp2.js";import"./vm-hands-entry-lite-wts79wdn.js";import"./vm-hands-entry-lite-nqvb7a2m.js";import"./vm-hands-entry-lite-xaaxvbk8.js";import"./vm-hands-entry-lite-mwj7bnse.js";import"./vm-hands-entry-lite-kaht6v11.js";import{ye as Kq}from"./vm-hands-entry-lite-x0x1t6gp.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-0badx5n8.js";import"./vm-hands-entry-lite-2yt333v3.js";import{Ng as xq,Sg as Bq}from"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import{vi as z,xi as u,yi as s}from"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-nhhpc9n2.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-gp85aqkt.js";import{vj as l}from"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import{Vj as N}from"./vm-hands-entry-lite-gbf8h13w.js";import"./vm-hands-entry-lite-b3jmyabq.js";import"./vm-hands-entry-lite-qg11k3bf.js";import{sk as Q}from"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-f28ehysx.js";import{Vk as Gq}from"./vm-hands-entry-lite-c3e25cks.js";import{createHash as aq,randomBytes as nq}from"crypto";import{readFileSync as eq,realpathSync as Pq,renameSync as q3,unlinkSync as J3,writeFileSync as X3}from"fs";import{dirname as Y3,join as yq}from"path";import{spawnSync as wq}from"child_process";import{accessSync as Lq,constants as fq,existsSync as L,mkdirSync as Sq,readFileSync as hq,renameSync as Cq,writeFileSync as gq}from"fs";import{homedir as mq}from"os";import{delimiter as pq,dirname as dq,join as T}from"path";import{existsSync as Eq,readFileSync as Mq}from"fs";import{join as _q}from"path";var vq=`---
2
+ import{a as jq,b as Dq,c as Vq,d as kq,g as Hq,h as zq,m as Aq}from"./vm-hands-entry-lite-swasdyfd.js";import"./vm-hands-entry-lite-bk5acpe9.js";import{y as Fq}from"./vm-hands-entry-lite-yz6a02cp.js";import{A as Wq,K as bq}from"./vm-hands-entry-lite-2k459na8.js";import"./vm-hands-entry-lite-rn52eajb.js";import"./vm-hands-entry-lite-c1rexgd8.js";import"./vm-hands-entry-lite-wt71n7n2.js";import"./vm-hands-entry-lite-1xmf8aps.js";import"./vm-hands-entry-lite-heehk76b.js";import"./vm-hands-entry-lite-400hmvkg.js";import"./vm-hands-entry-lite-k9amte6k.js";import"./vm-hands-entry-lite-swwb5mp2.js";import"./vm-hands-entry-lite-wts79wdn.js";import"./vm-hands-entry-lite-nqvb7a2m.js";import"./vm-hands-entry-lite-xaaxvbk8.js";import"./vm-hands-entry-lite-xm52myx6.js";import"./vm-hands-entry-lite-xstx7r49.js";import{ye as Kq}from"./vm-hands-entry-lite-x0x1t6gp.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-8c6rvxbe.js";import"./vm-hands-entry-lite-2yt333v3.js";import{Ng as xq,Sg as Bq}from"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import{vi as z,xi as u,yi as s}from"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-933zx1dx.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-yw74rzzs.js";import{vj as l}from"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import{Vj as N}from"./vm-hands-entry-lite-aww3tkxa.js";import"./vm-hands-entry-lite-bhtafden.js";import"./vm-hands-entry-lite-qg11k3bf.js";import{sk as Q}from"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-f28ehysx.js";import{Vk as Gq}from"./vm-hands-entry-lite-c3e25cks.js";import{createHash as aq,randomBytes as nq}from"crypto";import{readFileSync as eq,realpathSync as Pq,renameSync as q3,unlinkSync as J3,writeFileSync as X3}from"fs";import{dirname as Y3,join as yq}from"path";import{spawnSync as wq}from"child_process";import{accessSync as Lq,constants as fq,existsSync as L,mkdirSync as Sq,readFileSync as hq,renameSync as Cq,writeFileSync as gq}from"fs";import{homedir as mq}from"os";import{delimiter as pq,dirname as dq,join as T}from"path";import{existsSync as Eq,readFileSync as Mq}from"fs";import{join as _q}from"path";var vq=`---
3
3
  name: reason
4
4
  description: Integrate software with Reason's public REST API using a scoped API key. Use for API clients, CI, service integrations, or cloud coding-session automation.
5
5
  ---
@@ -79,7 +79,7 @@ This computer
79
79
  `),W.version)J.stdout.write(`Version: ${W.version}${W.version===N?"":` (${N} is installed; \`reason connect\` restarts it on that)`}
80
80
  `);if(J.stdout.write(`Folder: ${W.folder}
81
81
  `),J.stdout.write(`Sessions: ${W.sessions_running===null?"":`${W.sessions_running} running, `}${W.sessions_max===null?"every Session you start":W.sessions_max===1?"one at a time":`up to ${W.sessions_max} at once`}
82
- `),A){let $=A,H=await(X.readPermissionsSummary??(async()=>{let{permissionsSummary:Rq,readMacPermissions:Oq,reasonIdentity:Tq}=await import("./permissions-pkk45vxx.js"),{macScreenStatus:Uq}=await import("./local-display-mac-cqfc5xnc.js");return Rq(await Oq({identity:()=>Tq(),grants:Uq,worker:async()=>$}))}))().catch(()=>null);if(H)J.stdout.write(`${H}
82
+ `),A){let $=A,H=await(X.readPermissionsSummary??(async()=>{let{permissionsSummary:Rq,readMacPermissions:Oq,reasonIdentity:Tq}=await import("./permissions-nxveebrf.js"),{macScreenStatus:Uq}=await import("./local-display-mac-cqfc5xnc.js");return Rq(await Oq({identity:()=>Tq(),grants:Uq,worker:async()=>$}))}))().catch(()=>null);if(H)J.stdout.write(`${H}
83
83
  `);J.stdout.write(`Keep awake: ${A.keep_awake.enabled?"on":"off"}${A.keep_awake.holding?" (holding)":""}
84
84
  `)}if(W.service)J.stdout.write(`Logs: ${W.service.logs}
85
85
  `);for(let $ of W.workspaces??[]){let H=$.state==="removed"?"removed from that workspace":$.blocked?"offline (this computer is outside that workspace's allowed networks)":$.device_id?Qq[$.state]:"connecting";J.stdout.write(`Also in workspace ${$.name??$.organization_id}${$.account?" (another Reason account's)":""}: ${H}
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Vj as a,Wj as b,Xj as c,Yj as d}from"./vm-hands-entry-lite-gbf8h13w.js";import"./vm-hands-entry-lite-b3jmyabq.js";import"./vm-hands-entry-lite-c3e25cks.js";export{c as compareCliVersions,d as cliAndAgentVersion,b as CLI_VERSION_PATTERN,a as CLI_VERSION};
2
+ import{Vj as a,Wj as b,Xj as c,Yj as d}from"./vm-hands-entry-lite-aww3tkxa.js";import"./vm-hands-entry-lite-bhtafden.js";import"./vm-hands-entry-lite-c3e25cks.js";export{c as compareCliVersions,d as cliAndAgentVersion,b as CLI_VERSION_PATTERN,a as CLI_VERSION};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Jc as uZ,Kc as lZ,Lc as T4,Mc as O4,Nc as j8,Oc as sZ}from"./vm-hands-entry-lite-400hmvkg.js";import{$c as F0,Pc as mZ,Qc as W8,Rc as e9,Sc as _0,Tc as q9,Uc as a0}from"./vm-hands-entry-lite-k9amte6k.js";import{cd as L8,dd as B8,ed as oQ}from"./vm-hands-entry-lite-wts79wdn.js";import{Ee as MZ,Je as jZ,rf as y9,sf as t0,tf as O8,uf as m0,yf as C0}from"./vm-hands-entry-lite-afjzr3v2.js";import{Og as oZ,Ug as Z8,Vg as n8}from"./vm-hands-entry-lite-wtc8ebkr.js";import{_g as q4}from"./vm-hands-entry-lite-kntkyezs.js";import{Hh as h8,Ih as w0,Jh as O0,Kh as r9,Rh as p8,Sh as OZ,Th as WZ,bh as wQ,eh as j9,nh as qZ,oh as CZ,qh as TZ,sh as a9,th as VZ,uh as HZ,vh as v8,yh as o9}from"./vm-hands-entry-lite-0dr3sp75.js";import{Ci as tZ,Di as o8}from"./vm-hands-entry-lite-caxtg4j7.js";import{cj as b0}from"./vm-hands-entry-lite-0mk8rxqv.js";import{vj as A8,wj as t9,zj as j4}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Aj as D8,Bj as o0,Cj as _8,Dj as r0,Ej as B9,Fj as H8,Gj as W$,Hj as i0,Ij as u0,Jj as FZ,Uj as A$}from"./vm-hands-entry-lite-arw53mkf.js";import{Zj as OQ}from"./vm-hands-entry-lite-b3jmyabq.js";import{sk as x}from"./vm-hands-entry-lite-ysk49bnz.js";import{yk as C4}from"./vm-hands-entry-lite-dj65hfea.js";import{Bk as N4,Dk as $8,Ek as DZ,Fk as p$,Gk as _Z,Hk as p9,Kk as M4,Lk as Y9}from"./vm-hands-entry-lite-rbjky7rd.js";import{Pk as q}from"./vm-hands-entry-lite-f28ehysx.js";import{Qk as l1,Vk as CQ}from"./vm-hands-entry-lite-c3e25cks.js";import{execFile as k4}from"child_process";import{createRequire as f4}from"module";import{win32 as u9}from"path";var m4=250,y4=50,g4=250,h4=4194304;function c$($){let Z=/^(?:\[([^\]]+)\]|([^:]+)):([0-9]{1,5})$/.exec($??""),Q=Number(Z?.[3]);return Z&&Q<=65535?{address:Z[1]??Z[2],port:Q}:null}function v4($){let Z=[];for(let Q of $.split(/\r?\n/)){let X=Q.trim().split(/\s+/);if(X[0]!=="TCP"||X.length<5)continue;let J=c$(X[1]),Y=c$(X[2]),z=Number(X.at(-1));if(!J||!Y||!Number.isSafeInteger(z)||z<0)continue;Z.push({pid:z,localAddress:J.address,localPort:J.port,remoteAddress:Y.address,remotePort:Y.port,listening:Y.port===0})}return Z}function c4($){if($.localAddress==="0.0.0.0"||$.localAddress==="::")return`*:${$.localPort}`;return $.localAddress.includes(":")?`[${$.localAddress}]:${$.localPort}`:`${$.localAddress}:${$.localPort}`}var w8=($)=>new Promise((Z,Q)=>k4(u9.join(p$("win32").split(";")[0],"NETSTAT.EXE"),["-ano"],{timeout:$,maxBuffer:h4,encoding:"utf8",windowsHide:!0,env:p9()},(X,J)=>X?Q(X):Z(J)));function _9($){let Z=u9.normalize($.startsWith("\\\\?\\")?$.slice(4):$);return Z.length>3&&Z.endsWith("\\")?Z.slice(0,-1):Z}function d4($,Z){let Q=$.toLowerCase(),X=Z.toLowerCase();return X===Q||X.startsWith(Q.endsWith("\\")?Q:`${Q}\\`)}function u$($,Z,Q){let X=$.cwd(Q),J=X?_9(X):null;return J&&u9.isAbsolute(J)&&d4(Z,J)?J:null}var D9;function l9(){if(D9!==void 0)return D9;if(D9=null,process.platform!=="win32"||!["x64","arm64"].includes(process.arch))return null;let $;try{$=f4(import.meta.url)("bun:ffi")}catch{return null}let{FFIType:Z,ptr:Q}=$,X,J;try{X=$.dlopen("kernel32.dll",{CreateToolhelp32Snapshot:{args:[Z.u32,Z.u32],returns:Z.u64},Process32FirstW:{args:[Z.u64,Z.ptr],returns:Z.i32},Process32NextW:{args:[Z.u64,Z.ptr],returns:Z.i32},OpenProcess:{args:[Z.u32,Z.i32,Z.u32],returns:Z.u64},ReadProcessMemory:{args:[Z.u64,Z.u64,Z.ptr,Z.u64,Z.ptr],returns:Z.i32},CloseHandle:{args:[Z.u64],returns:Z.i32}}).symbols,J=$.dlopen("ntdll.dll",{NtQueryInformationProcess:{args:[Z.u64,Z.i32,Z.ptr,Z.u32,Z.ptr],returns:Z.i32}}).symbols}catch{return null}let Y=0xFFFF_FFFF_FFFF_FFFFn,z=2,F=1040,G=568,V=(B,H,K)=>{let L=Buffer.alloc(K);return X.ReadProcessMemory(B,H,Q(L),K,null)?L:null};return D9={processes(){let B=BigInt(X.CreateToolhelp32Snapshot(z,0));if(B===Y)throw new q("process_inspection_failed","Reading this computer's processes did not complete.");try{let H=Buffer.alloc(G);H.writeUInt32LE(G,0);let K=Q(H),L=[];for(let U=X.Process32FirstW(B,K);U;U=X.Process32NextW(B,K)){let W=H.toString("utf16le",44,G),j=W.slice(0,W.includes("\x00")?W.indexOf("\x00"):void 0),O=H.readUInt32LE(8);if(O>0)L.push({pid:O,parentPid:H.readUInt32LE(32),command:j.replace(/\.exe$/i,"")||null})}return L}finally{X.CloseHandle(B)}},cwd(B){let H=BigInt(X.OpenProcess(F,0,B));if(H===0n)return null;try{let K=Buffer.alloc(48);if(J.NtQueryInformationProcess(H,0,Q(K),K.length,null)!==0)return null;let L=V(H,K.readBigUInt64LE(8)+0x20n,8)?.readBigUInt64LE(0),U=L?V(H,L+0x38n,16):null,W=U?.readUInt16LE(0)??0;if(!U||W===0||W%2!==0)return null;return V(H,U.readBigUInt64LE(8),W)?.toString("utf16le")??null}finally{X.CloseHandle(H)}}},D9}function b8($){if(!$)throw new q("process_inspection_failed","Reading this computer's processes is unavailable.");return $}async function l$($,Z){let Q;try{Q=await $(Z)}catch{throw new q("process_inspection_failed","Reading this computer's ports did not complete.")}return v4(Q)}async function A2($,Z=l9()){let Q=b8(Z),X=_9($),J=[];for(let Y of Q.processes()){if(J.length>=m4)break;let z=u$(Q,X,Y.pid);if(z)J.push({pid:Y.pid,command:Y.command,cwd:u9.relative(X,z)||"."})}return{processes:J}}async function x2($,Z=l9(),Q=w8){let X=b8(Z),J=_9($),Y=(await l$(Q,5000)).filter((V)=>V.listening&&V.pid>0).map((V)=>({pid:V.pid,port:V.localPort,address:c4(V)})).sort((V,B)=>V.pid-B.pid||V.port-B.port||(V.address<B.address?-1:V.address>B.address?1:0)),z=[...new Set(Y.map((V)=>V.pid))].slice(0,y4),F=new Set(z.filter((V)=>u$(X,J,V)!==null));if(F.size===0)return{ports:[]};let G=new Map(X.processes().map((V)=>[V.pid,V.command]));return{ports:Y.filter((V)=>F.has(V.pid)).slice(0,g4).map((V)=>({pid:V.pid,command:G.get(V.pid)??null,address:V.address}))}}function d$($,Z){let Q=new Set([Z]);for(let X=!0;X;){X=!1;for(let J of $)if(!Q.has(J.pid)&&Q.has(J.parentPid)&&J.pid!==J.parentPid)Q.add(J.pid),X=!0}return Q}function p4($,Z,Q,X){let J=(Y)=>Y==="127.0.0.1"||Y==="::ffff:127.0.0.1"||Y==="::1";return $.flatMap((Y)=>{if(!Z.has(Y.pid)||Y.localPort!==X)return[];let z=Y.listening&&(J(Y.localAddress)||["0.0.0.0","::"].includes(Y.localAddress)),F=!Y.listening&&J(Y.localAddress)&&J(Y.remoteAddress);if(!z&&!F)return[];let G=`${Y.localAddress}:${Y.localPort}>${Y.remoteAddress}:${Y.remotePort}`;return[{pid:Y.pid,processGroupId:Q,descriptor:String(Y.pid),kernelId:G,state:z?"listen":"established",port:X,peerPort:z?null:Y.remotePort,host:Y.localAddress==="::1"?"::1":"127.0.0.1"}]})}async function s$($,Z,Q=l9(),X=w8){let J=b8(Q),Y=d$(J.processes(),$),z=await l$(X,1000),F=d$(J.processes(),$);return p4(z,new Set([...Y].filter((G)=>F.has(G))),$,Z)}async function I2($,Z=l9(),Q=w8){if(!Z||$.aborted)return!1;let X=Z.processes().some((F)=>F.pid===process.pid),J=Z.cwd(process.pid),Y=J!==null&&_9(J).toLowerCase()===_9(process.cwd()).toLowerCase(),z=await Q(5000).then((F)=>/^\s*TCP\s/m.test(F),()=>!1);return X&&Y&&z&&!$.aborted}var v={chunk:32768,upload:1048576,total:536870912,streams:16,queued:512,buffered:262144,relayBuffered:8388608,requestMs:30000,lifetimeMs:600000,authorizationMs:2000,window:8};function s9($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function P0($,Z,Q=Number.MAX_SAFE_INTEGER){return typeof $==="number"&&Number.isSafeInteger($)&&$>=Z&&$<=Q}function i$($){return typeof $==="string"&&/^[a-zA-Z0-9_-]{1,160}$/.test($)}function a$($,Z){let Q=Buffer.from($,"latin1");return Buffer.concat([Buffer.from([Q.length]),Q,Z])}function R0($){if(!s9($)||Object.keys($).length!==12||![$.organizationId,$.userId,$.runId,$.deviceId,$.rootId,$.jobId,$.fenceId].every(i$)||!P0($.attachmentRevision,0)||!P0($.grantRevision,1)||!P0($.generation,1)||!P0($.port,1024,65535)||!P0($.expiresAtMs,1))throw Error("preview_binding_invalid");return Object.freeze({...$})}function d0($,Z){return Object.keys($).every((Q)=>$[Q]===Z[Q])}function x9($){if($.length>4096||!$.startsWith("/")||$.startsWith("//")||/[\\\x00-\x20\x7f#]/.test($))throw Error("preview_path_invalid");let Z=decodeURIComponent($);if(Z.startsWith("//")||/[\\\x00-\x1f\x7f]/.test(Z))throw Error("preview_path_invalid");return $}function n$($){return Array.isArray($)&&$.length<=64&&$.every((Z)=>Array.isArray(Z)&&Z.length===2&&typeof Z[0]==="string"&&/^[a-zA-Z0-9-]{1,80}$/.test(Z[0])&&typeof Z[1]==="string"&&Z[1].length<=4096&&!/[\x00-\x1f\x7f]/.test(Z[1]))}function A9($,Z=v.chunk){if($.length>Math.ceil(Z/3)*4||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test($))throw Error("preview_data_invalid");let Q=Buffer.from($,"base64");if(Q.length>Z)throw Error("preview_data_too_large");return Q}function o$($){if(Array.isArray($))return Buffer.concat($);if(typeof $==="string")return Buffer.from($,"utf8");if($ instanceof ArrayBuffer)return Buffer.from($);return $}function r$($){if(Buffer.byteLength($)>v.upload*1.4+300000)throw Error("preview_frame_too_large");let Z=JSON.parse($);if(!s9(Z))throw Error("preview_frame_invalid");if(Z.type==="hello")return{type:"hello",binding:R0(Z.binding),...P0(Z.messages,v.chunk,v.upload)?{messages:Z.messages}:{},...P0(Z.window,1,v.window)?{window:Z.window}:{},...Z.bytes===!0?{bytes:!0}:{}};if(Z.type==="refused"&&typeof Z.reason==="string"&&/^[a-z_]{1,32}$/.test(Z.reason))return{type:"refused",binding:R0(Z.binding),reason:Z.reason};if(!i$(Z.id))throw Error("preview_frame_invalid");if(Z.type==="end"||Z.type==="cancel"||Z.type==="credit")return{type:Z.type,id:Z.id};if(Z.type==="ws"&&typeof Z.protocol==="string"&&/^[a-zA-Z0-9._-]{0,100}$/.test(Z.protocol))return{type:"ws",id:Z.id,protocol:Z.protocol};if(Z.type==="data"&&typeof Z.data==="string"&&typeof Z.binary==="boolean")return A9(Z.data,v.upload),{type:"data",id:Z.id,data:Z.data,binary:Z.binary};if(Z.type==="head"&&P0(Z.status,200,599)&&n$(Z.headers))return{type:"head",id:Z.id,status:Z.status,headers:Z.headers};if(Z.type==="request"&&typeof Z.method==="string"&&/^(GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS)$/.test(Z.method)&&typeof Z.path==="string"&&n$(Z.headers)&&typeof Z.body==="string"&&typeof Z.upgrade==="boolean")return A9(Z.body,v.upload),{type:"request",id:Z.id,method:Z.method,path:x9(Z.path),headers:Z.headers,body:Z.body,upgrade:Z.upgrade};throw Error("preview_frame_invalid")}function k8($){let Z=[...$],Q=new Set(Z.filter(([J])=>J.toLowerCase()==="connection").flatMap(([,J])=>J.toLowerCase().split(",").map((Y)=>Y.trim()))),X=new Set(["authorization","proxy-authorization","cookie","set-cookie","host","origin","referer","connection","upgrade","keep-alive","transfer-encoding","te","trailer","content-length","forwarded","alt-svc","service-worker-allowed","clear-site-data","refresh"]);return Z.filter(([J])=>!X.has(J.toLowerCase())&&!Q.has(J.toLowerCase())&&!/^(x-forwarded-|x-ara-|sec-websocket-|access-control-)/i.test(J))}async function f8($){let Z;try{return await Promise.race([Promise.resolve().then($).then((Q)=>Q===!0||(Q===!1?!1:void 0),()=>{return}),new Promise((Q)=>{Z=setTimeout(()=>Q(void 0),v.authorizationMs)})])}finally{clearTimeout(Z)}}async function I9($){return await f8($)===!0}function n9($,Z){let Q=new URL($);if(Q.username||Q.password||Q.search||Q.hash||!(Q.protocol==="wss:"||Q.protocol==="ws:"&&["127.0.0.1","[::1]"].includes(Q.hostname))||!new RegExp(`^/${Z}/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]{32,}$`).test(Q.pathname))throw Error("preview_relay_invalid");return Q.href}function t$($){if(!s9($)||Object.keys($).length!==2||typeof $.deviceRelayUrl!=="string")throw Error("preview_open_invalid");return{binding:R0($.binding),deviceRelayUrl:n9($.deviceRelayUrl,"device")}}function e$($){if(!s9($)||Object.keys($).length!==1||!("binding"in $))throw Error("preview_close_invalid");return{binding:R0($.binding)}}import{request as n4}from"http";import{pipeline as i4}from"stream";import{constants as m8,createBrotliCompress as a4,createGzip as o4}from"zlib";import{WebSocket as P9}from"ws";import{randomBytes as u4,timingSafeEqual as l4}from"crypto";import{createServer as s4}from"net";var $Z="x-preview-connection";async function ZZ($,Z){if(Z.aborted)throw Error("preview_closed");let Q=u4(32).toString("base64url"),X=new Set,J=!1,Y=s4((G)=>{if(J||Z.aborted||X.size>=v.streams*2)return G.destroy();X.add(G);let V=new AbortController;G.once("close",()=>{X.delete(G),V.abort()}),G.on("error",()=>G.destroy()),G.setTimeout(2000,()=>G.destroy());let B=Buffer.alloc(0),H=(L)=>{B=Buffer.concat([B,L]);let U=B.indexOf(`\r
2
+ import{Jc as uZ,Kc as lZ,Lc as T4,Mc as O4,Nc as j8,Oc as sZ}from"./vm-hands-entry-lite-400hmvkg.js";import{$c as F0,Pc as mZ,Qc as W8,Rc as e9,Sc as _0,Tc as q9,Uc as a0}from"./vm-hands-entry-lite-k9amte6k.js";import{cd as L8,dd as B8,ed as oQ}from"./vm-hands-entry-lite-wts79wdn.js";import{Ee as MZ,Je as jZ,rf as y9,sf as t0,tf as O8,uf as m0,yf as C0}from"./vm-hands-entry-lite-afjzr3v2.js";import{Og as oZ,Ug as Z8,Vg as n8}from"./vm-hands-entry-lite-wtc8ebkr.js";import{_g as q4}from"./vm-hands-entry-lite-kntkyezs.js";import{Hh as h8,Ih as w0,Jh as O0,Kh as r9,Rh as p8,Sh as OZ,Th as WZ,bh as wQ,eh as j9,nh as qZ,oh as CZ,qh as TZ,sh as a9,th as VZ,uh as HZ,vh as v8,yh as o9}from"./vm-hands-entry-lite-0dr3sp75.js";import{Ci as tZ,Di as o8}from"./vm-hands-entry-lite-caxtg4j7.js";import{cj as b0}from"./vm-hands-entry-lite-0mk8rxqv.js";import{vj as A8,wj as t9,zj as j4}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Aj as D8,Bj as o0,Cj as _8,Dj as r0,Ej as B9,Fj as H8,Gj as W$,Hj as i0,Ij as u0,Jj as FZ,Uj as A$}from"./vm-hands-entry-lite-arw53mkf.js";import{Zj as OQ}from"./vm-hands-entry-lite-bhtafden.js";import{sk as x}from"./vm-hands-entry-lite-ysk49bnz.js";import{yk as C4}from"./vm-hands-entry-lite-dj65hfea.js";import{Bk as N4,Dk as $8,Ek as DZ,Fk as p$,Gk as _Z,Hk as p9,Kk as M4,Lk as Y9}from"./vm-hands-entry-lite-rbjky7rd.js";import{Pk as q}from"./vm-hands-entry-lite-f28ehysx.js";import{Qk as l1,Vk as CQ}from"./vm-hands-entry-lite-c3e25cks.js";import{execFile as k4}from"child_process";import{createRequire as f4}from"module";import{win32 as u9}from"path";var m4=250,y4=50,g4=250,h4=4194304;function c$($){let Z=/^(?:\[([^\]]+)\]|([^:]+)):([0-9]{1,5})$/.exec($??""),Q=Number(Z?.[3]);return Z&&Q<=65535?{address:Z[1]??Z[2],port:Q}:null}function v4($){let Z=[];for(let Q of $.split(/\r?\n/)){let X=Q.trim().split(/\s+/);if(X[0]!=="TCP"||X.length<5)continue;let J=c$(X[1]),Y=c$(X[2]),z=Number(X.at(-1));if(!J||!Y||!Number.isSafeInteger(z)||z<0)continue;Z.push({pid:z,localAddress:J.address,localPort:J.port,remoteAddress:Y.address,remotePort:Y.port,listening:Y.port===0})}return Z}function c4($){if($.localAddress==="0.0.0.0"||$.localAddress==="::")return`*:${$.localPort}`;return $.localAddress.includes(":")?`[${$.localAddress}]:${$.localPort}`:`${$.localAddress}:${$.localPort}`}var w8=($)=>new Promise((Z,Q)=>k4(u9.join(p$("win32").split(";")[0],"NETSTAT.EXE"),["-ano"],{timeout:$,maxBuffer:h4,encoding:"utf8",windowsHide:!0,env:p9()},(X,J)=>X?Q(X):Z(J)));function _9($){let Z=u9.normalize($.startsWith("\\\\?\\")?$.slice(4):$);return Z.length>3&&Z.endsWith("\\")?Z.slice(0,-1):Z}function d4($,Z){let Q=$.toLowerCase(),X=Z.toLowerCase();return X===Q||X.startsWith(Q.endsWith("\\")?Q:`${Q}\\`)}function u$($,Z,Q){let X=$.cwd(Q),J=X?_9(X):null;return J&&u9.isAbsolute(J)&&d4(Z,J)?J:null}var D9;function l9(){if(D9!==void 0)return D9;if(D9=null,process.platform!=="win32"||!["x64","arm64"].includes(process.arch))return null;let $;try{$=f4(import.meta.url)("bun:ffi")}catch{return null}let{FFIType:Z,ptr:Q}=$,X,J;try{X=$.dlopen("kernel32.dll",{CreateToolhelp32Snapshot:{args:[Z.u32,Z.u32],returns:Z.u64},Process32FirstW:{args:[Z.u64,Z.ptr],returns:Z.i32},Process32NextW:{args:[Z.u64,Z.ptr],returns:Z.i32},OpenProcess:{args:[Z.u32,Z.i32,Z.u32],returns:Z.u64},ReadProcessMemory:{args:[Z.u64,Z.u64,Z.ptr,Z.u64,Z.ptr],returns:Z.i32},CloseHandle:{args:[Z.u64],returns:Z.i32}}).symbols,J=$.dlopen("ntdll.dll",{NtQueryInformationProcess:{args:[Z.u64,Z.i32,Z.ptr,Z.u32,Z.ptr],returns:Z.i32}}).symbols}catch{return null}let Y=0xFFFF_FFFF_FFFF_FFFFn,z=2,F=1040,G=568,V=(B,H,K)=>{let L=Buffer.alloc(K);return X.ReadProcessMemory(B,H,Q(L),K,null)?L:null};return D9={processes(){let B=BigInt(X.CreateToolhelp32Snapshot(z,0));if(B===Y)throw new q("process_inspection_failed","Reading this computer's processes did not complete.");try{let H=Buffer.alloc(G);H.writeUInt32LE(G,0);let K=Q(H),L=[];for(let U=X.Process32FirstW(B,K);U;U=X.Process32NextW(B,K)){let W=H.toString("utf16le",44,G),j=W.slice(0,W.includes("\x00")?W.indexOf("\x00"):void 0),O=H.readUInt32LE(8);if(O>0)L.push({pid:O,parentPid:H.readUInt32LE(32),command:j.replace(/\.exe$/i,"")||null})}return L}finally{X.CloseHandle(B)}},cwd(B){let H=BigInt(X.OpenProcess(F,0,B));if(H===0n)return null;try{let K=Buffer.alloc(48);if(J.NtQueryInformationProcess(H,0,Q(K),K.length,null)!==0)return null;let L=V(H,K.readBigUInt64LE(8)+0x20n,8)?.readBigUInt64LE(0),U=L?V(H,L+0x38n,16):null,W=U?.readUInt16LE(0)??0;if(!U||W===0||W%2!==0)return null;return V(H,U.readBigUInt64LE(8),W)?.toString("utf16le")??null}finally{X.CloseHandle(H)}}},D9}function b8($){if(!$)throw new q("process_inspection_failed","Reading this computer's processes is unavailable.");return $}async function l$($,Z){let Q;try{Q=await $(Z)}catch{throw new q("process_inspection_failed","Reading this computer's ports did not complete.")}return v4(Q)}async function A2($,Z=l9()){let Q=b8(Z),X=_9($),J=[];for(let Y of Q.processes()){if(J.length>=m4)break;let z=u$(Q,X,Y.pid);if(z)J.push({pid:Y.pid,command:Y.command,cwd:u9.relative(X,z)||"."})}return{processes:J}}async function x2($,Z=l9(),Q=w8){let X=b8(Z),J=_9($),Y=(await l$(Q,5000)).filter((V)=>V.listening&&V.pid>0).map((V)=>({pid:V.pid,port:V.localPort,address:c4(V)})).sort((V,B)=>V.pid-B.pid||V.port-B.port||(V.address<B.address?-1:V.address>B.address?1:0)),z=[...new Set(Y.map((V)=>V.pid))].slice(0,y4),F=new Set(z.filter((V)=>u$(X,J,V)!==null));if(F.size===0)return{ports:[]};let G=new Map(X.processes().map((V)=>[V.pid,V.command]));return{ports:Y.filter((V)=>F.has(V.pid)).slice(0,g4).map((V)=>({pid:V.pid,command:G.get(V.pid)??null,address:V.address}))}}function d$($,Z){let Q=new Set([Z]);for(let X=!0;X;){X=!1;for(let J of $)if(!Q.has(J.pid)&&Q.has(J.parentPid)&&J.pid!==J.parentPid)Q.add(J.pid),X=!0}return Q}function p4($,Z,Q,X){let J=(Y)=>Y==="127.0.0.1"||Y==="::ffff:127.0.0.1"||Y==="::1";return $.flatMap((Y)=>{if(!Z.has(Y.pid)||Y.localPort!==X)return[];let z=Y.listening&&(J(Y.localAddress)||["0.0.0.0","::"].includes(Y.localAddress)),F=!Y.listening&&J(Y.localAddress)&&J(Y.remoteAddress);if(!z&&!F)return[];let G=`${Y.localAddress}:${Y.localPort}>${Y.remoteAddress}:${Y.remotePort}`;return[{pid:Y.pid,processGroupId:Q,descriptor:String(Y.pid),kernelId:G,state:z?"listen":"established",port:X,peerPort:z?null:Y.remotePort,host:Y.localAddress==="::1"?"::1":"127.0.0.1"}]})}async function s$($,Z,Q=l9(),X=w8){let J=b8(Q),Y=d$(J.processes(),$),z=await l$(X,1000),F=d$(J.processes(),$);return p4(z,new Set([...Y].filter((G)=>F.has(G))),$,Z)}async function I2($,Z=l9(),Q=w8){if(!Z||$.aborted)return!1;let X=Z.processes().some((F)=>F.pid===process.pid),J=Z.cwd(process.pid),Y=J!==null&&_9(J).toLowerCase()===_9(process.cwd()).toLowerCase(),z=await Q(5000).then((F)=>/^\s*TCP\s/m.test(F),()=>!1);return X&&Y&&z&&!$.aborted}var v={chunk:32768,upload:1048576,total:536870912,streams:16,queued:512,buffered:262144,relayBuffered:8388608,requestMs:30000,lifetimeMs:600000,authorizationMs:2000,window:8};function s9($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function P0($,Z,Q=Number.MAX_SAFE_INTEGER){return typeof $==="number"&&Number.isSafeInteger($)&&$>=Z&&$<=Q}function i$($){return typeof $==="string"&&/^[a-zA-Z0-9_-]{1,160}$/.test($)}function a$($,Z){let Q=Buffer.from($,"latin1");return Buffer.concat([Buffer.from([Q.length]),Q,Z])}function R0($){if(!s9($)||Object.keys($).length!==12||![$.organizationId,$.userId,$.runId,$.deviceId,$.rootId,$.jobId,$.fenceId].every(i$)||!P0($.attachmentRevision,0)||!P0($.grantRevision,1)||!P0($.generation,1)||!P0($.port,1024,65535)||!P0($.expiresAtMs,1))throw Error("preview_binding_invalid");return Object.freeze({...$})}function d0($,Z){return Object.keys($).every((Q)=>$[Q]===Z[Q])}function x9($){if($.length>4096||!$.startsWith("/")||$.startsWith("//")||/[\\\x00-\x20\x7f#]/.test($))throw Error("preview_path_invalid");let Z=decodeURIComponent($);if(Z.startsWith("//")||/[\\\x00-\x1f\x7f]/.test(Z))throw Error("preview_path_invalid");return $}function n$($){return Array.isArray($)&&$.length<=64&&$.every((Z)=>Array.isArray(Z)&&Z.length===2&&typeof Z[0]==="string"&&/^[a-zA-Z0-9-]{1,80}$/.test(Z[0])&&typeof Z[1]==="string"&&Z[1].length<=4096&&!/[\x00-\x1f\x7f]/.test(Z[1]))}function A9($,Z=v.chunk){if($.length>Math.ceil(Z/3)*4||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test($))throw Error("preview_data_invalid");let Q=Buffer.from($,"base64");if(Q.length>Z)throw Error("preview_data_too_large");return Q}function o$($){if(Array.isArray($))return Buffer.concat($);if(typeof $==="string")return Buffer.from($,"utf8");if($ instanceof ArrayBuffer)return Buffer.from($);return $}function r$($){if(Buffer.byteLength($)>v.upload*1.4+300000)throw Error("preview_frame_too_large");let Z=JSON.parse($);if(!s9(Z))throw Error("preview_frame_invalid");if(Z.type==="hello")return{type:"hello",binding:R0(Z.binding),...P0(Z.messages,v.chunk,v.upload)?{messages:Z.messages}:{},...P0(Z.window,1,v.window)?{window:Z.window}:{},...Z.bytes===!0?{bytes:!0}:{}};if(Z.type==="refused"&&typeof Z.reason==="string"&&/^[a-z_]{1,32}$/.test(Z.reason))return{type:"refused",binding:R0(Z.binding),reason:Z.reason};if(!i$(Z.id))throw Error("preview_frame_invalid");if(Z.type==="end"||Z.type==="cancel"||Z.type==="credit")return{type:Z.type,id:Z.id};if(Z.type==="ws"&&typeof Z.protocol==="string"&&/^[a-zA-Z0-9._-]{0,100}$/.test(Z.protocol))return{type:"ws",id:Z.id,protocol:Z.protocol};if(Z.type==="data"&&typeof Z.data==="string"&&typeof Z.binary==="boolean")return A9(Z.data,v.upload),{type:"data",id:Z.id,data:Z.data,binary:Z.binary};if(Z.type==="head"&&P0(Z.status,200,599)&&n$(Z.headers))return{type:"head",id:Z.id,status:Z.status,headers:Z.headers};if(Z.type==="request"&&typeof Z.method==="string"&&/^(GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS)$/.test(Z.method)&&typeof Z.path==="string"&&n$(Z.headers)&&typeof Z.body==="string"&&typeof Z.upgrade==="boolean")return A9(Z.body,v.upload),{type:"request",id:Z.id,method:Z.method,path:x9(Z.path),headers:Z.headers,body:Z.body,upgrade:Z.upgrade};throw Error("preview_frame_invalid")}function k8($){let Z=[...$],Q=new Set(Z.filter(([J])=>J.toLowerCase()==="connection").flatMap(([,J])=>J.toLowerCase().split(",").map((Y)=>Y.trim()))),X=new Set(["authorization","proxy-authorization","cookie","set-cookie","host","origin","referer","connection","upgrade","keep-alive","transfer-encoding","te","trailer","content-length","forwarded","alt-svc","service-worker-allowed","clear-site-data","refresh"]);return Z.filter(([J])=>!X.has(J.toLowerCase())&&!Q.has(J.toLowerCase())&&!/^(x-forwarded-|x-ara-|sec-websocket-|access-control-)/i.test(J))}async function f8($){let Z;try{return await Promise.race([Promise.resolve().then($).then((Q)=>Q===!0||(Q===!1?!1:void 0),()=>{return}),new Promise((Q)=>{Z=setTimeout(()=>Q(void 0),v.authorizationMs)})])}finally{clearTimeout(Z)}}async function I9($){return await f8($)===!0}function n9($,Z){let Q=new URL($);if(Q.username||Q.password||Q.search||Q.hash||!(Q.protocol==="wss:"||Q.protocol==="ws:"&&["127.0.0.1","[::1]"].includes(Q.hostname))||!new RegExp(`^/${Z}/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]{32,}$`).test(Q.pathname))throw Error("preview_relay_invalid");return Q.href}function t$($){if(!s9($)||Object.keys($).length!==2||typeof $.deviceRelayUrl!=="string")throw Error("preview_open_invalid");return{binding:R0($.binding),deviceRelayUrl:n9($.deviceRelayUrl,"device")}}function e$($){if(!s9($)||Object.keys($).length!==1||!("binding"in $))throw Error("preview_close_invalid");return{binding:R0($.binding)}}import{request as n4}from"http";import{pipeline as i4}from"stream";import{constants as m8,createBrotliCompress as a4,createGzip as o4}from"zlib";import{WebSocket as P9}from"ws";import{randomBytes as u4,timingSafeEqual as l4}from"crypto";import{createServer as s4}from"net";var $Z="x-preview-connection";async function ZZ($,Z){if(Z.aborted)throw Error("preview_closed");let Q=u4(32).toString("base64url"),X=new Set,J=!1,Y=s4((G)=>{if(J||Z.aborted||X.size>=v.streams*2)return G.destroy();X.add(G);let V=new AbortController;G.once("close",()=>{X.delete(G),V.abort()}),G.on("error",()=>G.destroy()),G.setTimeout(2000,()=>G.destroy());let B=Buffer.alloc(0),H=(L)=>{B=Buffer.concat([B,L]);let U=B.indexOf(`\r
3
3
  \r
4
4
  `);if(U<0){if(B.length>16384)G.destroy();return}if(G.pause(),G.off("data",H),U>16384||B.length>v.upload+16384)return G.destroy();K(B,U).catch(()=>G.destroy())};G.on("data",H);async function K(L,U){let W=L.subarray(0,U).toString("latin1").split(`\r
5
5
  `),j=/^(GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS) (\S+) HTTP\/1\.1$/.exec(W.shift()??"");if(!j)throw Error("preview_request_invalid");x9(j[2]);let O=!1,C=0,A=[];for(let T of W){let S=/^([a-zA-Z0-9-]+):[ \t]*([^\x00-\x08\x0a-\x1f\x7f]*)$/.exec(T);if(!S)throw Error("preview_header_invalid");if(S[1].toLowerCase()===$Z){C++;let y=Buffer.from(S[2].trim());O=y.length===Q.length&&l4(y,Buffer.from(Q))}else if(S[1].toLowerCase()!=="host")A.push(T)}if(!O||C!==1||J||V.signal.aborted)throw Error("preview_connection_denied");let R=await $.connect(V.signal);if(J||V.signal.aborted)throw R.destroy(),Error("preview_closed");X.add(R),R.on("error",()=>G.destroy()),R.once("close",()=>{X.delete(R),G.destroy()}),G.once("close",()=>R.destroy()),G.setTimeout(0);let I=[`${j[1]} ${j[2]} HTTP/1.1`,`Host: 127.0.0.1:${R.remotePort}`,...A,"",""].join(`\r
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Eg as k0}from"./vm-hands-entry-lite-2yt333v3.js";import{Vg as f0}from"./vm-hands-entry-lite-wtc8ebkr.js";import{$g as uq}from"./vm-hands-entry-lite-kntkyezs.js";import{oj as cq}from"./vm-hands-entry-lite-gp85aqkt.js";import{vj as i}from"./vm-hands-entry-lite-wsnr4fx8.js";import{ck as _,fk as g0,ik as h0,jk as G8,kk as y0,mk as l8,pk as G0,rk as A0}from"./vm-hands-entry-lite-qg11k3bf.js";import{tk as H0}from"./vm-hands-entry-lite-dj65hfea.js";import{Pk as K}from"./vm-hands-entry-lite-f28ehysx.js";import{execFile as f1,spawn as I0}from"child_process";import{randomBytes as g1}from"crypto";import{chmodSync as h1,existsSync as p0,lstatSync as k1,mkdirSync as I1,readFileSync as p1,rmSync as v1,writeFileSync as Wq}from"fs";import{connect as u1}from"net";import{join as $}from"path";var Gq="./desktop-wallpaper-0pjhgyfk.jpg";var Aq="./dock-browser-afp005mt.png";var Sq="./dock-files-rywdm96b.png";var Vq="./dock-terminal-s41cj1jp.png";var Fq=`# Sets the X root window background and _XROOTPMAP_ID, as feh --bg-fill does.
2
+ import{Eg as k0}from"./vm-hands-entry-lite-2yt333v3.js";import{Vg as f0}from"./vm-hands-entry-lite-wtc8ebkr.js";import{$g as uq}from"./vm-hands-entry-lite-kntkyezs.js";import{oj as cq}from"./vm-hands-entry-lite-yw74rzzs.js";import{vj as i}from"./vm-hands-entry-lite-wsnr4fx8.js";import{ck as _,fk as g0,ik as h0,jk as G8,kk as y0,mk as l8,pk as G0,rk as A0}from"./vm-hands-entry-lite-qg11k3bf.js";import{tk as H0}from"./vm-hands-entry-lite-dj65hfea.js";import{Pk as K}from"./vm-hands-entry-lite-f28ehysx.js";import{execFile as f1,spawn as I0}from"child_process";import{randomBytes as g1}from"crypto";import{chmodSync as h1,existsSync as p0,lstatSync as k1,mkdirSync as I1,readFileSync as p1,rmSync as v1,writeFileSync as Wq}from"fs";import{connect as u1}from"net";import{join as $}from"path";var Gq="./desktop-wallpaper-0pjhgyfk.jpg";var Aq="./dock-browser-afp005mt.png";var Sq="./dock-files-rywdm96b.png";var Vq="./dock-terminal-s41cj1jp.png";var Fq=`# Sets the X root window background and _XROOTPMAP_ID, as feh --bg-fill does.
3
3
  # The native Blaxel image ships no feh, hsetroot or compositor, but it does ship
4
4
  # python3-gi and libX11. tint2 reads _XROOTPMAP_ID to draw its transparent panel.
5
5
  # Usage: DISPLAY=:99 python3 set-root-wallpaper.py IMAGE
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{cj as F}from"./vm-hands-entry-lite-0mk8rxqv.js";import{gj as T,jj as d,lj as p,pj as n,qj as a}from"./vm-hands-entry-lite-gp85aqkt.js";import{vj as j,xj as v}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Vj as l}from"./vm-hands-entry-lite-gbf8h13w.js";import{mk as m,nk as h}from"./vm-hands-entry-lite-qg11k3bf.js";import{Vk as y}from"./vm-hands-entry-lite-c3e25cks.js";import{spawnSync as Eq}from"child_process";import{dirname as I}from"path";import{spawn as r}from"child_process";import{accessSync as e,constants as qq}from"fs";import{basename as zq,join as Jq}from"path";var V=null;function O(q){if(V===q)V=null;if(q.exitCode===null&&q.signalCode===null)q.kill("SIGTERM")}var _=(q,z)=>{if(V)O(V);let Q=Jq(q,T);try{e(Q,qq.X_OK)}catch{return()=>{}}let J;try{J=r(Q,["--app",q,"--name",zq(q,".app"),"--permission",z==="screen"?"screen_recording":"accessibility"],{detached:!0,stdio:"ignore"})}catch{return()=>{}}return J.on("error",()=>{if(V===J)V=null}),J.once("exit",()=>{if(V===J)V=null}),J.unref(),V=J,()=>O(J)};import{chmodSync as Qq,existsSync as x,mkdirSync as Xq,readFileSync as Zq,realpathSync as k,renameSync as $q,statSync as G,writeFileSync as Kq}from"fs";import{dirname as P,isAbsolute as Rq,join as Vq,resolve as S,sep as W}from"path";function U(q=j()){return Vq(v(q),"reason","protected-path-grants.json")}var B=null;function Yq(q){let z=JSON.parse(q);if(!Array.isArray(z?.grants))return[];return z.grants.flatMap((Q)=>{let J=Q;return J&&typeof J.path==="string"&&Rq(J.path)&&(J.kind==="file"||J.kind==="folder")&&typeof J.grantedAt==="number"?[{path:J.path,kind:J.kind,grantedAt:J.grantedAt}]:[]})}function D(q=U()){try{let{mtimeMs:z}=G(q);if(B&&B.file===q&&B.mtimeMs===z)return B.grants;let Q=Yq(Zq(q,"utf8"));return B={file:q,mtimeMs:z,grants:Q},Q}catch{return[]}}function Bq(q,z){return q.kind==="file"?z===q.path:z===q.path||z.startsWith(`${q.path}${W}`)}function Dq(q,z){let Q=S(q);return D(z).some((J)=>Bq(J,Q))}function Sq(q,z){return F(q)&&!Dq(q,z)}function w(q,z){Xq(P(z),{recursive:!0,mode:448});let Q=`${z}.${process.pid}.tmp`;Kq(Q,`${JSON.stringify({version:1,grants:q},null,2)}
2
+ import{cj as F}from"./vm-hands-entry-lite-0mk8rxqv.js";import{gj as T,jj as d,lj as p,pj as n,qj as a}from"./vm-hands-entry-lite-yw74rzzs.js";import{vj as j,xj as v}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Vj as l}from"./vm-hands-entry-lite-aww3tkxa.js";import{mk as m,nk as h}from"./vm-hands-entry-lite-qg11k3bf.js";import{Vk as y}from"./vm-hands-entry-lite-c3e25cks.js";import{spawnSync as Eq}from"child_process";import{dirname as I}from"path";import{spawn as r}from"child_process";import{accessSync as e,constants as qq}from"fs";import{basename as zq,join as Jq}from"path";var V=null;function O(q){if(V===q)V=null;if(q.exitCode===null&&q.signalCode===null)q.kill("SIGTERM")}var _=(q,z)=>{if(V)O(V);let Q=Jq(q,T);try{e(Q,qq.X_OK)}catch{return()=>{}}let J;try{J=r(Q,["--app",q,"--name",zq(q,".app"),"--permission",z==="screen"?"screen_recording":"accessibility"],{detached:!0,stdio:"ignore"})}catch{return()=>{}}return J.on("error",()=>{if(V===J)V=null}),J.once("exit",()=>{if(V===J)V=null}),J.unref(),V=J,()=>O(J)};import{chmodSync as Qq,existsSync as x,mkdirSync as Xq,readFileSync as Zq,realpathSync as k,renameSync as $q,statSync as G,writeFileSync as Kq}from"fs";import{dirname as P,isAbsolute as Rq,join as Vq,resolve as S,sep as W}from"path";function U(q=j()){return Vq(v(q),"reason","protected-path-grants.json")}var B=null;function Yq(q){let z=JSON.parse(q);if(!Array.isArray(z?.grants))return[];return z.grants.flatMap((Q)=>{let J=Q;return J&&typeof J.path==="string"&&Rq(J.path)&&(J.kind==="file"||J.kind==="folder")&&typeof J.grantedAt==="number"?[{path:J.path,kind:J.kind,grantedAt:J.grantedAt}]:[]})}function D(q=U()){try{let{mtimeMs:z}=G(q);if(B&&B.file===q&&B.mtimeMs===z)return B.grants;let Q=Yq(Zq(q,"utf8"));return B={file:q,mtimeMs:z,grants:Q},Q}catch{return[]}}function Bq(q,z){return q.kind==="file"?z===q.path:z===q.path||z.startsWith(`${q.path}${W}`)}function Dq(q,z){let Q=S(q);return D(z).some((J)=>Bq(J,Q))}function Sq(q,z){return F(q)&&!Dq(q,z)}function w(q,z){Xq(P(z),{recursive:!0,mode:448});let Q=`${z}.${process.pid}.tmp`;Kq(Q,`${JSON.stringify({version:1,grants:q},null,2)}
3
3
  `,{mode:384}),Qq(Q,384),$q(Q,z),B=null}function b(q,z=U(),Q=Date.now()){if(!x(q))throw Error(`No file or folder at ${q}.`);let J=k(q),X=P(z);if(X===J||X.startsWith(`${J}${W}`)||J.startsWith(`${X}${W}`))throw Error("Reason's own configuration folder cannot be allowed.");let Z={path:J,kind:G(J).isDirectory()?"folder":"file",grantedAt:Q},$=D(z).filter((R)=>R.path!==J);return w([...$,Z],z),Z}function u(q,z=U()){let Q=x(q)?k(q):S(q),J=D(z),X=J.filter((Z)=>Z.path!==Q);if(X.length===J.length)return!1;return w(X,z),!0}function wq(q,z,Q){let J=z?"file-read* file-write*":"file-read*";return D(Q).filter((X)=>X.path===q||X.path.startsWith(`${q}${W}`)).map((X)=>`(allow ${J} (${X.kind==="file"?"literal":"subpath"} ${JSON.stringify(X.path)}))`)}var f=`Reason permissions
4
4
 
5
5
  Usage:
@@ -20,7 +20,7 @@ this Mac may open. Only you can change this list; Sessions cannot.
20
20
  allow asks for each missing one, or the one named. macOS cannot ask for Full
21
21
  Disk Access: allow disk opens its pane, shows the file to add in Finder and
22
22
  waits until the worker has it.
23
- `,M="x-apple.systempreferences:com.apple.preference.security",Nq="curl -fsSL https://reasonmachines.com/install.sh | bash",Hq=180000,Wq=2000,A=["screen","accessibility","disk"],L={screen:{label:"Screen & System Audio Recording",purpose:"desktop video, computer-use screenshots",level:"required",pane:`${M}?Privacy_ScreenCapture`},accessibility:{label:"Accessibility",purpose:"computer-use clicks and typing, desktop input",level:"required",pane:`${M}?Privacy_Accessibility`},disk:{label:"Full Disk Access",purpose:"Sessions in Desktop, Documents, Downloads, iCloud Drive and Mail",level:"recommended",pane:`${M}?Privacy_AllFiles`}};function s(q){return q.executable}function jq(q,z){if(q==="computer_use_identity_missing")return`Reason's background identity is not installed (${q}); reinstall Reason: ${Nq}`;if(q==="computer_use_identity_outdated")return`Reason's background identity is outdated (${p(z)??"unknown"}; this CLI is ${l}) (${q}); \`reason update\` installs this release's`;return`Reason's background identity cannot run computer use for this CLI (${q}); run the installed \`reason\``}function Cq(q=j()){let z=n(q);if(z.length>0)return{state:"ready",path:I(I(I(z[0]))),prefix:z};let Q=a(z,q)??"computer_use_identity_unavailable";return{state:Q,path:d(q),detail:jq(Q,q)}}function o(){return{identity:()=>Cq(),grants:(q)=>m(q),request:(q,z)=>h(q,z),worker:async()=>(await import("./status-sf4634w4.js")).connectionMacState(),open:(q)=>{Eq("/usr/bin/open",q,{stdio:"ignore",timeout:1e4})},tile:_,restartConnection:async()=>(await import("./connect-cli-npxeps2h.js")).restartConnection(),sleep:(q)=>new Promise((z)=>setTimeout(z,q)),now:()=>Date.now()}}function c(q,z,Q){if(q.state!=="ready"||!z)return"unknown";return z[Q]?"granted":"missing"}async function i(q){let z=q.identity(),Q=z.state==="ready"?await q.grants(z.prefix):null,J=await q.worker(),X=J?s(J):null,Z=!X||J?.full_disk_access==="unknown"?"unknown":J?.full_disk_access==="granted"?"granted":"missing",$=(R,Y,K)=>{let{label:E,purpose:H,level:N}=L[R];return{id:R,label:E,purpose:H,level:N,state:Y,holder:K}};return{identity:{state:z.state,path:z.path,detail:z.state==="ready"?null:z.detail},worker_detail:X?null:"Full Disk Access is read from this computer's running worker; `reason connect` starts it.",permissions:[$("screen",c(z,Q,"screen"),z.path),$("accessibility",c(z,Q,"accessibility"),z.path),$("disk",Z,X)]}}function dq(q){let z=q.identity.state==="ready"?null:q.identity.state,Q=q.permissions.filter((Z)=>Z.state==="granted").length,J=[...z?[z]:[],...q.permissions.filter((Z)=>Z.state!=="granted"&&!(z&&Z.id!=="disk")).map((Z)=>`${Z.label} ${Z.state}`)],X=!z&&q.permissions.some((Z)=>Z.state==="missing");return`Permissions: ${Q} of ${q.permissions.length}${J.length>0?` (${J.join(", ")})`:""}`+(X?" \u2014 reason permissions allow":J.length>0?" \u2014 reason permissions":"")}function Uq(q){let z=[];if(q.identity.detail)z.push(q.identity.detail);z.push(`Reason: ${q.identity.path}`);let Q=q.permissions.find((J)=>J.id==="disk");z.push(Q?.holder?`Worker: ${Q.holder}`:`Worker: ${q.worker_detail}`),z.push("");for(let J of q.permissions){let X=`${J.label}${J.level==="recommended"?" (recommended)":""}`;z.push(` ${J.id.padEnd(13)} ${J.state.padEnd(7)} ${X}: ${J.purpose}`)}if(q.permissions.some((J)=>J.state==="missing"))z.push("","Allow the missing ones: reason permissions allow");return`${z.join(`
23
+ `,M="x-apple.systempreferences:com.apple.preference.security",Nq="curl -fsSL https://reasonmachines.com/install.sh | bash",Hq=180000,Wq=2000,A=["screen","accessibility","disk"],L={screen:{label:"Screen & System Audio Recording",purpose:"desktop video, computer-use screenshots",level:"required",pane:`${M}?Privacy_ScreenCapture`},accessibility:{label:"Accessibility",purpose:"computer-use clicks and typing, desktop input",level:"required",pane:`${M}?Privacy_Accessibility`},disk:{label:"Full Disk Access",purpose:"Sessions in Desktop, Documents, Downloads, iCloud Drive and Mail",level:"recommended",pane:`${M}?Privacy_AllFiles`}};function s(q){return q.executable}function jq(q,z){if(q==="computer_use_identity_missing")return`Reason's background identity is not installed (${q}); reinstall Reason: ${Nq}`;if(q==="computer_use_identity_outdated")return`Reason's background identity is outdated (${p(z)??"unknown"}; this CLI is ${l}) (${q}); \`reason update\` installs this release's`;return`Reason's background identity cannot run computer use for this CLI (${q}); run the installed \`reason\``}function Cq(q=j()){let z=n(q);if(z.length>0)return{state:"ready",path:I(I(I(z[0]))),prefix:z};let Q=a(z,q)??"computer_use_identity_unavailable";return{state:Q,path:d(q),detail:jq(Q,q)}}function o(){return{identity:()=>Cq(),grants:(q)=>m(q),request:(q,z)=>h(q,z),worker:async()=>(await import("./status-c4jexrdp.js")).connectionMacState(),open:(q)=>{Eq("/usr/bin/open",q,{stdio:"ignore",timeout:1e4})},tile:_,restartConnection:async()=>(await import("./connect-cli-ze8shkbh.js")).restartConnection(),sleep:(q)=>new Promise((z)=>setTimeout(z,q)),now:()=>Date.now()}}function c(q,z,Q){if(q.state!=="ready"||!z)return"unknown";return z[Q]?"granted":"missing"}async function i(q){let z=q.identity(),Q=z.state==="ready"?await q.grants(z.prefix):null,J=await q.worker(),X=J?s(J):null,Z=!X||J?.full_disk_access==="unknown"?"unknown":J?.full_disk_access==="granted"?"granted":"missing",$=(R,Y,K)=>{let{label:E,purpose:H,level:N}=L[R];return{id:R,label:E,purpose:H,level:N,state:Y,holder:K}};return{identity:{state:z.state,path:z.path,detail:z.state==="ready"?null:z.detail},worker_detail:X?null:"Full Disk Access is read from this computer's running worker; `reason connect` starts it.",permissions:[$("screen",c(z,Q,"screen"),z.path),$("accessibility",c(z,Q,"accessibility"),z.path),$("disk",Z,X)]}}function dq(q){let z=q.identity.state==="ready"?null:q.identity.state,Q=q.permissions.filter((Z)=>Z.state==="granted").length,J=[...z?[z]:[],...q.permissions.filter((Z)=>Z.state!=="granted"&&!(z&&Z.id!=="disk")).map((Z)=>`${Z.label} ${Z.state}`)],X=!z&&q.permissions.some((Z)=>Z.state==="missing");return`Permissions: ${Q} of ${q.permissions.length}${J.length>0?` (${J.join(", ")})`:""}`+(X?" \u2014 reason permissions allow":J.length>0?" \u2014 reason permissions":"")}function Uq(q){let z=[];if(q.identity.detail)z.push(q.identity.detail);z.push(`Reason: ${q.identity.path}`);let Q=q.permissions.find((J)=>J.id==="disk");z.push(Q?.holder?`Worker: ${Q.holder}`:`Worker: ${q.worker_detail}`),z.push("");for(let J of q.permissions){let X=`${J.label}${J.level==="recommended"?" (recommended)":""}`;z.push(` ${J.id.padEnd(13)} ${J.state.padEnd(7)} ${X}: ${J.purpose}`)}if(q.permissions.some((J)=>J.state==="missing"))z.push("","Allow the missing ones: reason permissions allow");return`${z.join(`
24
24
  `)}
25
25
  `}async function g(q,z){let Q=z.now()+Hq;for(;;){if(await q())return!0;if(z.now()>=Q)return!1;await z.sleep(Wq)}}async function Iq(q,z){let Q=z.host??o(),{io:J}=z,X=await i(Q),Z=X.permissions.filter((K)=>q.includes(K.id)&&K.state!=="granted");if(Z.length===0)return J.stdout.write(`Reason permissions: ${q.map((K)=>L[K].label).join(", ")} already allowed.
26
26
  `),0;let $=!1,R=!1,Y=Q.identity();for(let K of Z){let{label:E,pane:H}=L[K.id];if(K.id!=="disk"){if(Y.state!=="ready"){if(!$)J.stderr.write(`Reason permissions: ${Y.detail}
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{Zj as $}from"./vm-hands-entry-lite-b3jmyabq.js";var O=$.version,Z=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;function S(B,D){if(!Z.test(B)||!Z.test(D))throw Error("cannot compare invalid CLI versions");let J=(q)=>{let y=q.indexOf("-");return y===-1?[q,void 0]:[q.slice(0,y),q.slice(y+1)]},[j,F]=J(B),[w,G]=J(D),K=j.split(".").map(BigInt),M=w.split(".").map(BigInt);for(let q=0;q<3;q+=1){if(K[q]===M[q])continue;return K[q]<M[q]?-1:1}if(F===void 0||G===void 0){if(F===G)return 0;return F===void 0?1:-1}let Q=F.split("."),U=G.split("."),A=Math.max(Q.length,U.length);for(let q=0;q<A;q+=1){let y=Q[q],z=U[q];if(y===void 0||z===void 0){if(y===z)return 0;return y===void 0?-1:1}if(y===z)continue;let H=/^\d+$/.test(y),W=/^\d+$/.test(z);if(H&&W){let X=BigInt(y),Y=BigInt(z);if(X===Y)continue;return X<Y?-1:1}if(H!==W)return H?-1:1;return y<z?-1:1}return 0}function k(B,D){return D?`cli ${B} \xB7 agent ${D}`:`cli ${B}`}
2
+ import{Zj as $}from"./vm-hands-entry-lite-bhtafden.js";var O=$.version,Z=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;function S(B,D){if(!Z.test(B)||!Z.test(D))throw Error("cannot compare invalid CLI versions");let J=(q)=>{let y=q.indexOf("-");return y===-1?[q,void 0]:[q.slice(0,y),q.slice(y+1)]},[j,F]=J(B),[w,G]=J(D),K=j.split(".").map(BigInt),M=w.split(".").map(BigInt);for(let q=0;q<3;q+=1){if(K[q]===M[q])continue;return K[q]<M[q]?-1:1}if(F===void 0||G===void 0){if(F===G)return 0;return F===void 0?1:-1}let Q=F.split("."),U=G.split("."),A=Math.max(Q.length,U.length);for(let q=0;q<A;q+=1){let y=Q[q],z=U[q];if(y===void 0||z===void 0){if(y===z)return 0;return y===void 0?-1:1}if(y===z)continue;let H=/^\d+$/.test(y),W=/^\d+$/.test(z);if(H&&W){let X=BigInt(y),Y=BigInt(z);if(X===Y)continue;return X<Y?-1:1}if(H!==W)return H?-1:1;return y<z?-1:1}return 0}function k(B,D){return D?`cli ${B} \xB7 agent ${D}`:`cli ${B}`}
3
3
  export{O as Vj,Z as Wj,S as Xj,k as Yj};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- var r={name:"github-native-engineer-device-worker-production",version:"0.2.402",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"}};
2
+ var r={name:"github-native-engineer-device-worker-production",version:"0.2.404",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
3
  export{r as Zj};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{Pk as M}from"./vm-hands-entry-lite-f28ehysx.js";import{Vk as G}from"./vm-hands-entry-lite-c3e25cks.js";import{readdirSync as D,readFileSync as I}from"fs";import{userInfo as A}from"os";var O="--vm-hands-op-runner-kind=person";function x(q){let Q=new Set([q]),K=[];try{K=D("/proc")}catch{}for(let z of K){if(!/^\d+$/.test(z))continue;try{let X=I(`/proc/${z}/stat`,"utf8");if(Number(X.slice(X.lastIndexOf(")")+2).split(" ")[3])===q)Q.add(Number(z))}catch{}}for(let z of Q)try{process.kill(z,"SIGKILL")}catch{}}var C=(q)=>{let Q=globalThis.Bun;if(!Q)throw new M("pty_unavailable","Reason terminals require the Bun runtime.");let K=Q.spawn({cmd:[q.shell,...q.args],cwd:q.cwd,env:{...q.environment,TERM:"xterm-256color"},terminal:{cols:q.cols,rows:q.rows,data:(J,Y)=>q.onData(Y)}}),z=K.terminal,X=()=>{x(K.pid);try{z?.close()}catch{}};if(!z)throw X(),new M("pty_unavailable","Reason could not allocate a pseudo-terminal.");return{write:(J)=>z.write(J),resize:(J,Y)=>z.resize(J,Y),kill:X,exited:K.exited.then((J)=>typeof J==="number"?J:null,()=>null)}};function L(){let q=(()=>{try{return A().username}catch{return}})();return{PATH:process.env.PATH,HOME:process.env.HOME,SHELL:process.env.SHELL,LANG:"C.UTF-8",...q?{USER:q,LOGNAME:q}:{}}}async function P(){let[{executeLocalOperation:q,spawnCaptured:Q},{runLocalPtySession:K},{configureDesktopAccount:z},{configureWorkerSandbox:X}]=await Promise.all([import("./local-capabilities-ymex3mmw.js"),import("./local-pty-session-wyrzfc50.js"),import("./desktop-account-t2f1aa9e.js"),import("./worker-sandbox-mn60tmqv.js")]);X();let T=process.argv.includes(O),J=($,j,F)=>Q($,j[0]==="-lic"?["-lc",...j.slice(1)]:j,F),Y=(process.geteuid?.()??0)!==0,H=new Map,Z=($)=>{try{process.send?.($)}catch{}};process.on("message",($)=>{let j=$;if(j?.t==="cancel"){H.get(j.id)?.abort();return}if(j?.t!=="op")return;if(!Y){Z({t:"done",id:j.id,completion:{status:"failed",error_code:"vm_hands_payload_account_unavailable"}});return}let F=j.claim.capability;if(F==="pty.start"&&!T){Z({t:"done",id:j.id,completion:{status:"failed",error_code:"capability_not_granted"}});return}let U=new AbortController;H.set(j.id,U);let V=F==="pty.start"?{runPtySession:(B)=>K(B,{spawnPty:C,environment:L(),loadProxy:()=>null})}:{worker:j.worker,...F==="exec.full"?{spawnFullControl:J}:{}};q(j.state,j.claim,{...V,signal:U.signal,emit:(B)=>{let{deliverySignal:N,...W}=B;Z({t:"event",id:j.id,event:W})}}).then((B)=>Z({t:"done",id:j.id,completion:B}),(B)=>Z({t:"done",id:j.id,completion:{status:"failed",error_code:B&&typeof B==="object"&&"code"in B&&typeof B.code==="string"?B.code:"vm_hands_op_failed"}})).finally(()=>H.delete(j.id))}),process.on("disconnect",()=>process.exit(0)),await new Promise(()=>{})}
2
+ import{Pk as M}from"./vm-hands-entry-lite-f28ehysx.js";import{Vk as G}from"./vm-hands-entry-lite-c3e25cks.js";import{readdirSync as D,readFileSync as I}from"fs";import{userInfo as A}from"os";var O="--vm-hands-op-runner-kind=person";function x(q){let Q=new Set([q]),K=[];try{K=D("/proc")}catch{}for(let z of K){if(!/^\d+$/.test(z))continue;try{let X=I(`/proc/${z}/stat`,"utf8");if(Number(X.slice(X.lastIndexOf(")")+2).split(" ")[3])===q)Q.add(Number(z))}catch{}}for(let z of Q)try{process.kill(z,"SIGKILL")}catch{}}var C=(q)=>{let Q=globalThis.Bun;if(!Q)throw new M("pty_unavailable","Reason terminals require the Bun runtime.");let K=Q.spawn({cmd:[q.shell,...q.args],cwd:q.cwd,env:{...q.environment,TERM:"xterm-256color"},terminal:{cols:q.cols,rows:q.rows,data:(J,Y)=>q.onData(Y)}}),z=K.terminal,X=()=>{x(K.pid);try{z?.close()}catch{}};if(!z)throw X(),new M("pty_unavailable","Reason could not allocate a pseudo-terminal.");return{write:(J)=>z.write(J),resize:(J,Y)=>z.resize(J,Y),kill:X,exited:K.exited.then((J)=>typeof J==="number"?J:null,()=>null)}};function L(){let q=(()=>{try{return A().username}catch{return}})();return{PATH:process.env.PATH,HOME:process.env.HOME,SHELL:process.env.SHELL,LANG:"C.UTF-8",...q?{USER:q,LOGNAME:q}:{}}}async function P(){let[{executeLocalOperation:q,spawnCaptured:Q},{runLocalPtySession:K},{configureDesktopAccount:z},{configureWorkerSandbox:X}]=await Promise.all([import("./local-capabilities-ws46275r.js"),import("./local-pty-session-wyrzfc50.js"),import("./desktop-account-t2f1aa9e.js"),import("./worker-sandbox-mn60tmqv.js")]);X();let T=process.argv.includes(O),J=($,j,F)=>Q($,j[0]==="-lic"?["-lc",...j.slice(1)]:j,F),Y=(process.geteuid?.()??0)!==0,H=new Map,Z=($)=>{try{process.send?.($)}catch{}};process.on("message",($)=>{let j=$;if(j?.t==="cancel"){H.get(j.id)?.abort();return}if(j?.t!=="op")return;if(!Y){Z({t:"done",id:j.id,completion:{status:"failed",error_code:"vm_hands_payload_account_unavailable"}});return}let F=j.claim.capability;if(F==="pty.start"&&!T){Z({t:"done",id:j.id,completion:{status:"failed",error_code:"capability_not_granted"}});return}let U=new AbortController;H.set(j.id,U);let V=F==="pty.start"?{runPtySession:(B)=>K(B,{spawnPty:C,environment:L(),loadProxy:()=>null})}:{worker:j.worker,...F==="exec.full"?{spawnFullControl:J}:{}};q(j.state,j.claim,{...V,signal:U.signal,emit:(B)=>{let{deliverySignal:N,...W}=B;Z({t:"event",id:j.id,event:W})}}).then((B)=>Z({t:"done",id:j.id,completion:B}),(B)=>Z({t:"done",id:j.id,completion:{status:"failed",error_code:B&&typeof B==="object"&&"code"in B&&typeof B.code==="string"?B.code:"vm_hands_op_failed"}})).finally(()=>H.delete(j.id))}),process.on("disconnect",()=>process.exit(0)),await new Promise(()=>{})}
3
3
  export{O as s,C as t,P as u};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{gd as hq,hd as lq}from"./vm-hands-entry-lite-nqvb7a2m.js";import{ci as Nq,di as vq,hi as Wq,ii as Xq,ji as X,mi as dq,oi as Aq,pi as cq,ri as c,si as P,ti as Bq}from"./vm-hands-entry-lite-399rn7a2.js";import{Li as Kq}from"./vm-hands-entry-lite-26d4ttdx.js";import{ej as oq,fj as sq,hj as uq,kj as pq,lj as rq,mj as nq,nj as Dq}from"./vm-hands-entry-lite-gp85aqkt.js";import{vj as d}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Lk as Gq}from"./vm-hands-entry-lite-rbjky7rd.js";import{randomUUID as T}from"crypto";import{chmodSync as Jq,closeSync as u,constants as m,existsSync as E,fstatSync as iq,lstatSync as A,mkdirSync as n,openSync as aq,readFileSync as g,readdirSync as Oq,readlinkSync as I,realpathSync as S,renameSync as k,rmSync as v,statSync as x,symlinkSync as Qq,unlinkSync as C,writeFileSync as h}from"fs";import{basename as r,dirname as D,isAbsolute as BG,join as K,relative as DG,resolve as O,sep as eq}from"path";import{spawnSync as Eq}from"child_process";import{createRequire as tq}from"module";var Zq=1,qG=1,GG=128,OG=65536,EG="https://reasonmachines.com/api/runtime-manifest-v2",IG=30000,CG=600000,Vq=1e4,TG=60000,SG=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;var Pq=/^[a-z0-9_.-]{1,80}$/,FG=64,LG="so.ara.device-broker",JG=[LG,"com.reasonmachines.device-broker"],mJ=sq(JG),gq=["com.apple.security.cs.allow-jit","com.apple.security.cs.allow-unsigned-executable-memory"],wG=["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 t(q){if(q?.aborted)throw new X("update_cancelled","Managed runtime update request was cancelled.")}function Iq(q){return Boolean(q)&&typeof q==="object"&&!Array.isArray(q)}function Cq(q,G,J=[]){let Q=new Set([...G,...J]);return G.every((R)=>(R in q))&&Object.keys(q).every((R)=>Q.has(R))}function B(q){return typeof q==="string"&&SG.test(q)}function QG(q){return typeof q==="string"&&!Number.isNaN(Date.parse(q))&&new Date(q).toISOString()===q}function kG(q){return Xq.includes(q)}function b(q){n(q,{recursive:!0,mode:448}),Jq(q,448)}function RG(q,G){b(D(q));let J=`${q}.${process.pid}.${T()}.tmp`;try{h(J,G,{mode:384,flag:"wx"}),Jq(J,384),k(J,q)}finally{if(E(J))C(J)}}function Tq(q={}){if((q.platform??process.platform)!=="darwin")throw new X("unsupported_platform","The managed Reason runtime is currently available only on macOS.");let J=q.environment??process.env,Q=Kq(J,"REASON_CLI_CHANNEL")==="staging",R=Q?Kq(J,"REASON_MANAGED_RUNTIME_ROOT")?.trim():void 0,W=q.root!==void 0||Boolean(R&&BG(R))?null:K(q.home??d(),"Library","Application Support"),_=q.root??(W?K(W,Q?"Reason Staging":"Reason","CLI"):R);return{executableName:"reason",root:_,...W?{legacyRoot:K(W,"Ara",...Q?["staging","runtime"]:["runtime"])}:{},versions:K(_,"versions"),current:K(_,"current"),previous:K(_,"previous"),brokerLock:K(_,"broker.lock"),transitionLock:K(_,"transition.lock"),lifecycleEvents:K(_,"lifecycle-events")}}function vJ(q){let G=q.legacyRoot;if(!G)return null;return{root:G,versions:K(G,"versions"),current:K(G,"current"),previous:K(G,"previous"),brokerLock:K(G,"broker.lock"),transitionLock:K(G,"transition.lock"),lifecycleEvents:K(G,"lifecycle-events")}}function F(q,G){if(!B(G))throw new X("invalid_version","Invalid managed Reason runtime version.");let J=K(q.versions,G,"ara");if(!q.executableName)return J;let Q=K(q.versions,G,q.executableName),R=(_)=>{try{return A(_),!0}catch(Z){if(Z.code==="ENOENT")return!1;throw Z}},U=R(J),W=R(Q);if(U&&W)throw new X("installed_artifact_mismatch","Ambiguous managed runtime executable layout.");return U?J:Q}function i(q,G){if(!B(G))throw new X("invalid_version","Invalid managed Reason runtime version.");return Sq(F(q,G))}function Sq(q){return K(D(q),r(q)==="reason"?vq:Nq)}function UG(q,G){if(!B(q)||!B(G))throw new X("invalid_version","Invalid managed Reason runtime version.");let[J,Q]=q.split("-",2),[R,U]=G.split("-",2),W=J.split(".").map(Number),_=R.split(".").map(Number);for(let H=0;H<3;H+=1){let j=W[H]-_[H];if(j!==0)return j<0?-1:1}if(Q===void 0||U===void 0){if(Q===U)return 0;return Q===void 0?1:-1}let Z=Q.split("."),$=U.split("."),Y=Math.max(Z.length,$.length);for(let H=0;H<Y;H+=1){let j=Z[H],z=$[H];if(j===void 0||z===void 0){if(j===z)return 0;return j===void 0?-1:1}if(j===z)continue;let M=/^\d+$/.test(j),w=/^\d+$/.test(z);if(M&&w)return Number(j)<Number(z)?-1:1;if(M!==w)return M?-1:1;return j<z?-1:1}return 0}function xG(q=process.arch){let G=`darwin-${q}`;if(!kG(G))throw new X("unsupported_architecture","The managed Reason runtime supports only Apple Silicon and Intel Macs.");return G}function bq(q){return[...q.matchAll(/<key>\s*([^<]+?)\s*<\/key>/g)].map((G)=>G[1].trim())}function yq(q){let G=q.match(/^CodeDirectory .*$/gm)??[];return G.length>0&&G.every((J)=>{return(/ flags=0x[0-9a-f]+\(([^)]*)\)(?: |$)/.exec(J)?.[1]?.split(/[ ,]+/).filter(Boolean)??[]).includes("runtime")})}function VG(q){let G=`TeamIdentifier=${oq}`,J=JG.map((U)=>`Identifier=${U}`),Q=bq(q.brokerEntitlements),R=bq(q.credentialLibraryEntitlements);if(!q.brokerDetail.split(`
2
+ import{gd as hq,hd as lq}from"./vm-hands-entry-lite-nqvb7a2m.js";import{ci as Nq,di as vq,hi as Wq,ii as Xq,ji as X,mi as dq,oi as Aq,pi as cq,ri as c,si as P,ti as Bq}from"./vm-hands-entry-lite-399rn7a2.js";import{Li as Kq}from"./vm-hands-entry-lite-26d4ttdx.js";import{ej as oq,fj as sq,hj as uq,kj as pq,lj as rq,mj as nq,nj as Dq}from"./vm-hands-entry-lite-yw74rzzs.js";import{vj as d}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Lk as Gq}from"./vm-hands-entry-lite-rbjky7rd.js";import{randomUUID as T}from"crypto";import{chmodSync as Jq,closeSync as u,constants as m,existsSync as E,fstatSync as iq,lstatSync as A,mkdirSync as n,openSync as aq,readFileSync as g,readdirSync as Oq,readlinkSync as I,realpathSync as S,renameSync as k,rmSync as v,statSync as x,symlinkSync as Qq,unlinkSync as C,writeFileSync as h}from"fs";import{basename as r,dirname as D,isAbsolute as BG,join as K,relative as DG,resolve as O,sep as eq}from"path";import{spawnSync as Eq}from"child_process";import{createRequire as tq}from"module";var Zq=1,qG=1,GG=128,OG=65536,EG="https://reasonmachines.com/api/runtime-manifest-v2",IG=30000,CG=600000,Vq=1e4,TG=60000,SG=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;var Pq=/^[a-z0-9_.-]{1,80}$/,FG=64,LG="so.ara.device-broker",JG=[LG,"com.reasonmachines.device-broker"],mJ=sq(JG),gq=["com.apple.security.cs.allow-jit","com.apple.security.cs.allow-unsigned-executable-memory"],wG=["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 t(q){if(q?.aborted)throw new X("update_cancelled","Managed runtime update request was cancelled.")}function Iq(q){return Boolean(q)&&typeof q==="object"&&!Array.isArray(q)}function Cq(q,G,J=[]){let Q=new Set([...G,...J]);return G.every((R)=>(R in q))&&Object.keys(q).every((R)=>Q.has(R))}function B(q){return typeof q==="string"&&SG.test(q)}function QG(q){return typeof q==="string"&&!Number.isNaN(Date.parse(q))&&new Date(q).toISOString()===q}function kG(q){return Xq.includes(q)}function b(q){n(q,{recursive:!0,mode:448}),Jq(q,448)}function RG(q,G){b(D(q));let J=`${q}.${process.pid}.${T()}.tmp`;try{h(J,G,{mode:384,flag:"wx"}),Jq(J,384),k(J,q)}finally{if(E(J))C(J)}}function Tq(q={}){if((q.platform??process.platform)!=="darwin")throw new X("unsupported_platform","The managed Reason runtime is currently available only on macOS.");let J=q.environment??process.env,Q=Kq(J,"REASON_CLI_CHANNEL")==="staging",R=Q?Kq(J,"REASON_MANAGED_RUNTIME_ROOT")?.trim():void 0,W=q.root!==void 0||Boolean(R&&BG(R))?null:K(q.home??d(),"Library","Application Support"),_=q.root??(W?K(W,Q?"Reason Staging":"Reason","CLI"):R);return{executableName:"reason",root:_,...W?{legacyRoot:K(W,"Ara",...Q?["staging","runtime"]:["runtime"])}:{},versions:K(_,"versions"),current:K(_,"current"),previous:K(_,"previous"),brokerLock:K(_,"broker.lock"),transitionLock:K(_,"transition.lock"),lifecycleEvents:K(_,"lifecycle-events")}}function vJ(q){let G=q.legacyRoot;if(!G)return null;return{root:G,versions:K(G,"versions"),current:K(G,"current"),previous:K(G,"previous"),brokerLock:K(G,"broker.lock"),transitionLock:K(G,"transition.lock"),lifecycleEvents:K(G,"lifecycle-events")}}function F(q,G){if(!B(G))throw new X("invalid_version","Invalid managed Reason runtime version.");let J=K(q.versions,G,"ara");if(!q.executableName)return J;let Q=K(q.versions,G,q.executableName),R=(_)=>{try{return A(_),!0}catch(Z){if(Z.code==="ENOENT")return!1;throw Z}},U=R(J),W=R(Q);if(U&&W)throw new X("installed_artifact_mismatch","Ambiguous managed runtime executable layout.");return U?J:Q}function i(q,G){if(!B(G))throw new X("invalid_version","Invalid managed Reason runtime version.");return Sq(F(q,G))}function Sq(q){return K(D(q),r(q)==="reason"?vq:Nq)}function UG(q,G){if(!B(q)||!B(G))throw new X("invalid_version","Invalid managed Reason runtime version.");let[J,Q]=q.split("-",2),[R,U]=G.split("-",2),W=J.split(".").map(Number),_=R.split(".").map(Number);for(let H=0;H<3;H+=1){let j=W[H]-_[H];if(j!==0)return j<0?-1:1}if(Q===void 0||U===void 0){if(Q===U)return 0;return Q===void 0?1:-1}let Z=Q.split("."),$=U.split("."),Y=Math.max(Z.length,$.length);for(let H=0;H<Y;H+=1){let j=Z[H],z=$[H];if(j===void 0||z===void 0){if(j===z)return 0;return j===void 0?-1:1}if(j===z)continue;let M=/^\d+$/.test(j),w=/^\d+$/.test(z);if(M&&w)return Number(j)<Number(z)?-1:1;if(M!==w)return M?-1:1;return j<z?-1:1}return 0}function xG(q=process.arch){let G=`darwin-${q}`;if(!kG(G))throw new X("unsupported_architecture","The managed Reason runtime supports only Apple Silicon and Intel Macs.");return G}function bq(q){return[...q.matchAll(/<key>\s*([^<]+?)\s*<\/key>/g)].map((G)=>G[1].trim())}function yq(q){let G=q.match(/^CodeDirectory .*$/gm)??[];return G.length>0&&G.every((J)=>{return(/ flags=0x[0-9a-f]+\(([^)]*)\)(?: |$)/.exec(J)?.[1]?.split(/[ ,]+/).filter(Boolean)??[]).includes("runtime")})}function VG(q){let G=`TeamIdentifier=${oq}`,J=JG.map((U)=>`Identifier=${U}`),Q=bq(q.brokerEntitlements),R=bq(q.credentialLibraryEntitlements);if(!q.brokerDetail.split(`
3
3
  `).includes(G)||!q.brokerDetail.split(`
4
4
  `).some((U)=>J.includes(U))||!yq(q.brokerDetail)||Q.length!==gq.length||gq.some((U)=>!new RegExp(`<key>\\s*${U.replaceAll(".","\\.")}\\s*</key>\\s*<true\\s*/>`).test(q.brokerEntitlements)))throw new X("invalid_code_signature","Managed runtime broker has an invalid Reason signature, identifier, or entitlement set.");if(!q.credentialLibraryDetail.split(`
5
5
  `).includes(G)||!yq(q.credentialLibraryDetail)||R.length!==0)throw new X("invalid_code_signature","Managed runtime credential library has an invalid signature or entitlement.")}function y(q,G){let J=Eq("/usr/bin/codesign",q,{stdio:["ignore","pipe","pipe"]});if(J.status!==0)throw new X("invalid_code_signature",G);return[new TextDecoder().decode(J.stdout??new Uint8Array),new TextDecoder().decode(J.stderr??new Uint8Array)].join("")}var Fq=(q,G)=>{y(["--verify","--strict","--verbose=2",q],"Managed runtime broker code signature is invalid."),y(["--verify","--strict","--verbose=2",G],"Managed runtime credential library code signature is invalid."),VG({brokerDetail:y(["-d","--verbose=4",q],"Managed runtime broker signer could not be inspected."),brokerEntitlements:y(["-d","--entitlements",":-",q],"Managed runtime broker entitlements could not be inspected."),credentialLibraryDetail:y(["-d","--verbose=4",G],"Managed runtime credential library signer could not be inspected."),credentialLibraryEntitlements:y(["-d","--entitlements",":-",G],"Managed runtime credential library entitlements could not be inspected.")})};async function PG(q,G,J){let Q=q.headers.get("content-length");if(Q!==null){let Y=Number(Q);if(!Number.isSafeInteger(Y)||Y<0||Y>G)throw new X("response_too_large","Managed runtime response exceeded its size limit.")}if(!q.body){let Y=new Uint8Array(await q.arrayBuffer());if(Y.byteLength>G)throw new X("response_too_large","Managed runtime response exceeded its size limit.");return Y}let R=q.body.getReader(),U=[],W=0,_=()=>{if(!J)return R.read();return new Promise((Y,H)=>{let j=()=>{J.removeEventListener("abort",j),R.cancel(J.reason).catch(()=>{}),H(J.reason??new DOMException("Aborted","AbortError"))};if(J.aborted){j();return}J.addEventListener("abort",j,{once:!0}),R.read().then((z)=>{J.removeEventListener("abort",j),Y(z)},(z)=>{J.removeEventListener("abort",j),H(z)})})};try{while(!0){let Y=await _();if(Y.done)break;if(W+=Y.value.byteLength,W>G)throw await R.cancel(),new X("response_too_large","Managed runtime response exceeded its size limit.");U.push(Y.value)}}finally{try{R.releaseLock()}catch{}}let Z=new Uint8Array(W),$=0;for(let Y of U)Z.set(Y,$),$+=Y.byteLength;return Z}async function p(q){let G;try{G=new URL(q.url)}catch{throw new X("invalid_update_url","Managed runtime update URL is invalid.")}if(G.protocol!=="https:"||G.username||G.password||G.hash)throw new X("invalid_update_url","Managed runtime update URL must use HTTPS.");let J=new AbortController,Q,R=()=>{Q??="caller",J.abort(q.signal?.reason)};if(q.signal?.aborted)R();else q.signal?.addEventListener("abort",R,{once:!0});let U=setTimeout(()=>{Q??="timeout",J.abort(Error("managed runtime fetch timed out"))},q.timeoutMs),W=(_,Z)=>{if(_ instanceof X)return _;if(Q==="caller")return new X("update_cancelled","Managed runtime update request was cancelled.");if(Q==="timeout")return new X("update_fetch_timeout","Managed runtime update request timed out.");return new X("update_fetch_failed",Z)};try{let _;try{if(_=await q.fetchImpl(G,{headers:{accept:q.accept},signal:J.signal}),J.signal.aborted)throw W(J.signal.reason,"Managed runtime update request was cancelled.")}catch(Z){throw W(Z,"Managed runtime update request failed.")}if(!_.ok)throw new X("update_http_error","Managed runtime update request was rejected.");if(_.url&&new URL(_.url).protocol!=="https:")throw new X("insecure_redirect","Managed runtime update redirected to an insecure URL.");try{let Z=await PG(_,q.maximumBytes,J.signal);if(J.signal.aborted)throw W(J.signal.reason,"Managed runtime update response was cancelled.");return Z}catch(Z){throw W(Z,"Managed runtime update response failed.")}}finally{clearTimeout(U),q.signal?.removeEventListener("abort",R)}}async function WG(q,G,J=Vq,Q){let R=typeof J==="number"?J:Vq,U=typeof J==="number"?Q:J;if(U?.aborted)return!1;let W=await hq([q,"--version"],{timeoutMs:R,...U?{signal:U}:{}});return W.exitCode===0&&W.stdout.trim().replace(/^v/,"")===G}async function gG(q){let G=!1,J=null,Q=null,R=(U)=>{try{N(q.paths,U,{now:q.now})}catch{}};try{let U=q.home??d();if(!nq(q.manifest.version,U))return{status:"current"};Q=rq(U);let W=await p({url:new URL(dq,q.manifest.artifacts[q.target].broker.url).toString(),maximumBytes:Wq,fetchImpl:async(j,z)=>{let M=await q.fetchImpl(j,z);return G=M.status===404,M},timeoutMs:q.timeoutMs,accept:"application/json",signal:q.signal}),{manifest:_}=cq(new TextDecoder().decode(W),q.trustedKeys);if(_.version!==q.manifest.version||_.published_at!==q.manifest.published_at)throw new X("identity_manifest_mismatch","Background identity manifest names another release.");let Z=_.artifacts[q.target],$=await p({url:Z.url,maximumBytes:Z.size_bytes,fetchImpl:q.fetchImpl,timeoutMs:q.timeoutMs,accept:"application/octet-stream",signal:q.signal});P($,Z),b(q.workDirectory),J=K(q.workDirectory,`.identity-${process.pid}-${T()}`),n(J,{mode:448});let Y=K(J,"identity.tgz");if(h(Y,$,{mode:384,flag:"wx"}),Eq("/usr/bin/tar",["-xzf",Y,"-C",J],{stdio:"ignore",timeout:60000}).status!==0)throw new X("identity_extract_failed","Background identity archive could not be extracted.");return Dq({sourceApp:K(J,"Reason.app"),home:U,releaseSigned:!0,...q.command?{command:q.command}:{}}),R({event:"identity.refresh_completed",runtime_version:q.manifest.version,...Q?{from_version:Q}:{},to_version:q.manifest.version}),{status:"installed"}}catch(U){if(G)return{status:"unpublished"};let W=U instanceof X||U instanceof uq?U.code:"identity_install_failed";return process.stderr.write(`Reason background identity: identity_update_failed (${W})
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{r as m0}from"./vm-hands-entry-lite-bk5acpe9.js";import{v as $2,x as n6,y as t9}from"./vm-hands-entry-lite-yz6a02cp.js";import{A as K2,B as i6,C as V4,D as G4,E as R6,F as v0,J as P6,K as I$}from"./vm-hands-entry-lite-2k459na8.js";import{X as a2,qa as Z$,ta as s1,va as RJ}from"./vm-hands-entry-lite-x914078k.js";import{Da as $J,Ea as JJ,Fa as V8,Ga as G8,Ha as mJ,Ia as gJ,Ja as A9,Ka as Z5,La as U8,Ma as L0,Na as S1,Oa as b1,Pa as I0,Qa as c1,Ra as X5,Sa as R5,Ta as l3,Ua as N5,Ya as H5,fb as pJ,gb as lJ,hb as cJ,ib as sJ,jb as P9}from"./vm-hands-entry-lite-cwd9y2pv.js";import{$b as z1,Bb as h8,Gb as g8,Hb as u8,Ib as B8,Jb as K8,Kb as wJ,Lb as yJ,Nb as j8,Ob as hJ,Pb as L1,Sb as Q3,Tb as X3,Ub as p6,Vb as l6,Wb as c6,Xb as b0,Yb as $0,Zb as g,_b as R9,ac as e1,bc as K0,cc as fJ,hc as W5,jc as f4,lb as U6,mc as b2,ob as P8,oc as J5,pb as C8,pc as J9,rc as d8,sb as o8,tb as I8,wb as _8,xc as vJ,yb as k8,yc as t3}from"./vm-hands-entry-lite-2grs67fz.js";import{Ac as g9,Bc as Q5,Cc as h1,Dc as s6,Gc as N8,zc as m9}from"./vm-hands-entry-lite-heehk76b.js";import{Nc as $5}from"./vm-hands-entry-lite-400hmvkg.js";import{$c as m8,Tc as f8,Uc as v8}from"./vm-hands-entry-lite-k9amte6k.js";import{ad as L$}from"./vm-hands-entry-lite-swwb5mp2.js";import{bd as u,cd as o,dd as s,ed as c}from"./vm-hands-entry-lite-wts79wdn.js";import{wd as Y8}from"./vm-hands-entry-lite-xaaxvbk8.js";import{Hd as V5,Kd as uJ,Nd as ZJ,Od as QJ}from"./vm-hands-entry-lite-mwj7bnse.js";import{Rd as OJ,Sd as s$,Ud as V$,Vd as E$,Wd as T1,Yd as C6,Zd as r6,_d as t6,ae as F1,be as o6,ce as u9,de as e6,ee as e2,fe as G$,ge as x4,he as $3}from"./vm-hands-entry-lite-kaht6v11.js";import{Gf as D6,Hf as e$,Ne as W2,Re as SJ,Rf as G2,Se as bJ,yf as X8}from"./vm-hands-entry-lite-afjzr3v2.js";import{cg as a6,dg as l2,gg as dJ,jg as v1,lg as F7,mg as _7,rg as U5}from"./vm-hands-entry-lite-0badx5n8.js";import{vg as p8}from"./vm-hands-entry-lite-2yt333v3.js";import{Gg as V0,Hg as Y2,Ig as nJ,Jg as rJ,Kg as o$,Lg as F3,Mg as I2,Ng as L4,Pg as E2,Qg as k$,Rg as h0,Sg as $1,Tg as x2,Wg as h$}from"./vm-hands-entry-lite-wtc8ebkr.js";import{Zg as a1,_g as e8}from"./vm-hands-entry-lite-kntkyezs.js";import{eh as y8}from"./vm-hands-entry-lite-0dr3sp75.js";import{Ai as C0,Bi as $4,Ci as g6,Di as u6,Fi as _2,Gi as d6,Hi as W9,Ii as I4,Ji as E4,Ki as J1,vi as Y$,zi as R$}from"./vm-hands-entry-lite-caxtg4j7.js";import{Li as l1,Mi as C1}from"./vm-hands-entry-lite-26d4ttdx.js";import{ij as k6,qj as Y5,rj as O9,tj as H8}from"./vm-hands-entry-lite-gp85aqkt.js";import{vj as U0,xj as WJ}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Vj as r}from"./vm-hands-entry-lite-gbf8h13w.js";import{sk as K}from"./vm-hands-entry-lite-ysk49bnz.js";import{vk as kJ}from"./vm-hands-entry-lite-dj65hfea.js";import{Ak as t8,Ck as V1,Gk as DJ,Hk as z8,Ik as A8,Jk as R8}from"./vm-hands-entry-lite-rbjky7rd.js";import{Pk as f0}from"./vm-hands-entry-lite-f28ehysx.js";import{Vk as WG}from"./vm-hands-entry-lite-c3e25cks.js";import{spawn as $7,spawnSync as OG}from"child_process";import{closeSync as J7,existsSync as zG,mkdirSync as AG,openSync as Z7,readdirSync as RG,realpathSync as B$,rmSync as j1}from"fs";import{hostname as PG}from"os";import{dirname as d9,join as T0,resolve as CG}from"path";import{createHash as D7}from"crypto";import{unlinkSync as W7}from"fs";import{platform as O7}from"os";import{join as z7}from"path";var o9=K.discriminatedUnion("store",[K.strictObject({version:K.literal(1),store:K.literal("keychain")}),K.strictObject({version:K.literal(1),store:K.literal("file"),api_key:K.string().min(1).max(4096)})]),y$=($)=>z7($,"api-key.json");function W$($){let J=D7("sha256").update(`reason-connect-api-key
2
+ import{r as m0}from"./vm-hands-entry-lite-bk5acpe9.js";import{v as $2,x as n6,y as t9}from"./vm-hands-entry-lite-yz6a02cp.js";import{A as K2,B as i6,C as V4,D as G4,E as R6,F as v0,J as P6,K as I$}from"./vm-hands-entry-lite-2k459na8.js";import{X as a2,qa as Z$,ta as s1,va as RJ}from"./vm-hands-entry-lite-rn52eajb.js";import{Da as $J,Ea as JJ,Fa as V8,Ga as G8,Ha as mJ,Ia as gJ,Ja as A9,Ka as Z5,La as U8,Ma as L0,Na as S1,Oa as b1,Pa as I0,Qa as c1,Ra as X5,Sa as R5,Ta as l3,Ua as N5,Ya as H5,fb as pJ,gb as lJ,hb as cJ,ib as sJ,jb as P9}from"./vm-hands-entry-lite-wt71n7n2.js";import{$b as z1,Bb as h8,Gb as g8,Hb as u8,Ib as B8,Jb as K8,Kb as wJ,Lb as yJ,Nb as j8,Ob as hJ,Pb as L1,Sb as Q3,Tb as X3,Ub as p6,Vb as l6,Wb as c6,Xb as b0,Yb as $0,Zb as g,_b as R9,ac as e1,bc as K0,cc as fJ,hc as W5,jc as f4,lb as U6,mc as b2,ob as P8,oc as J5,pb as C8,pc as J9,rc as d8,sb as o8,tb as I8,wb as _8,xc as vJ,yb as k8,yc as t3}from"./vm-hands-entry-lite-1xmf8aps.js";import{Ac as g9,Bc as Q5,Cc as h1,Dc as s6,Gc as N8,zc as m9}from"./vm-hands-entry-lite-heehk76b.js";import{Nc as $5}from"./vm-hands-entry-lite-400hmvkg.js";import{$c as m8,Tc as f8,Uc as v8}from"./vm-hands-entry-lite-k9amte6k.js";import{ad as L$}from"./vm-hands-entry-lite-swwb5mp2.js";import{bd as u,cd as o,dd as s,ed as c}from"./vm-hands-entry-lite-wts79wdn.js";import{wd as Y8}from"./vm-hands-entry-lite-xaaxvbk8.js";import{Hd as V5,Kd as uJ,Nd as ZJ,Od as QJ}from"./vm-hands-entry-lite-xm52myx6.js";import{Rd as OJ,Sd as s$,Ud as V$,Vd as E$,Wd as T1,Yd as C6,Zd as r6,_d as t6,ae as F1,be as o6,ce as u9,de as e6,ee as e2,fe as G$,ge as x4,he as $3}from"./vm-hands-entry-lite-xstx7r49.js";import{Gf as D6,Hf as e$,Ne as W2,Re as SJ,Rf as G2,Se as bJ,yf as X8}from"./vm-hands-entry-lite-afjzr3v2.js";import{cg as a6,dg as l2,gg as dJ,jg as v1,lg as F7,mg as _7,rg as U5}from"./vm-hands-entry-lite-8c6rvxbe.js";import{vg as p8}from"./vm-hands-entry-lite-2yt333v3.js";import{Gg as V0,Hg as Y2,Ig as nJ,Jg as rJ,Kg as o$,Lg as F3,Mg as I2,Ng as L4,Pg as E2,Qg as k$,Rg as h0,Sg as $1,Tg as x2,Wg as h$}from"./vm-hands-entry-lite-wtc8ebkr.js";import{Zg as a1,_g as e8}from"./vm-hands-entry-lite-kntkyezs.js";import{eh as y8}from"./vm-hands-entry-lite-0dr3sp75.js";import{Ai as C0,Bi as $4,Ci as g6,Di as u6,Fi as _2,Gi as d6,Hi as W9,Ii as I4,Ji as E4,Ki as J1,vi as Y$,zi as R$}from"./vm-hands-entry-lite-caxtg4j7.js";import{Li as l1,Mi as C1}from"./vm-hands-entry-lite-26d4ttdx.js";import{ij as k6,qj as Y5,rj as O9,tj as H8}from"./vm-hands-entry-lite-yw74rzzs.js";import{vj as U0,xj as WJ}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Vj as r}from"./vm-hands-entry-lite-aww3tkxa.js";import{sk as K}from"./vm-hands-entry-lite-ysk49bnz.js";import{vk as kJ}from"./vm-hands-entry-lite-dj65hfea.js";import{Ak as t8,Ck as V1,Gk as DJ,Hk as z8,Ik as A8,Jk as R8}from"./vm-hands-entry-lite-rbjky7rd.js";import{Pk as f0}from"./vm-hands-entry-lite-f28ehysx.js";import{Vk as WG}from"./vm-hands-entry-lite-c3e25cks.js";import{spawn as $7,spawnSync as OG}from"child_process";import{closeSync as J7,existsSync as zG,mkdirSync as AG,openSync as Z7,readdirSync as RG,realpathSync as B$,rmSync as j1}from"fs";import{hostname as PG}from"os";import{dirname as d9,join as T0,resolve as CG}from"path";import{createHash as D7}from"crypto";import{unlinkSync as W7}from"fs";import{platform as O7}from"os";import{join as z7}from"path";var o9=K.discriminatedUnion("store",[K.strictObject({version:K.literal(1),store:K.literal("keychain")}),K.strictObject({version:K.literal(1),store:K.literal("file"),api_key:K.string().min(1).max(4096)})]),y$=($)=>z7($,"api-key.json");function W$($){let J=D7("sha256").update(`reason-connect-api-key
3
3
  ${$}`).digest("hex");return new o$(Y2(),O7(),J)}function L3($,J,Z=W$($)){try{Z.deleteBinding(),Z.createBinding(new TextEncoder().encode(J)),c(y$($),{version:1,store:"keychain"});return}catch(Q){if(!(Q instanceof V0))throw Q}c(y$($),{version:1,store:"file",api_key:J})}function p0($,J=W$($)){if(!u(y$($)))return null;let Z=o9.parse(JSON.parse(s(y$($))));if(Z.store==="file")return Z.api_key;try{let Q=J.loadBinding();return Q?new TextDecoder().decode(Q):null}catch(Q){if(!(Q instanceof V0))throw Q;throw Error("worker_api_key_unreadable")}}function e9($,J=W$($)){if(!u(y$($)))return;if(o9.parse(JSON.parse(s(y$($)))).store==="keychain")try{J.deleteBinding()}catch(Z){if(!(Z instanceof V0))throw Z}W7(y$($))}async function T3($,J){let Z;try{Z=await t9({env:{REASON_API_KEY:J,REASON_API_URL:$.apiOrigin},fetchImpl:b0($.proxy)})}catch(Q){if(Q instanceof v0&&(Q.status===401||Q.status===403))throw Error("worker_api_key_rejected");throw Q}if(!Z)throw Error("worker_api_key_rejected");if(!Z.scopes.includes("devices:write"))throw Error("worker_api_key_devices_write_required");return Z}import{readdirSync as d7,renameSync as p7,rmSync as f$}from"fs";import{join as N0}from"path";import{createHash as A7}from"crypto";import{realpathSync as R7,statSync as P7,unlinkSync as V2}from"fs";import{platform as C7}from"os";import{join as w0}from"path";function d($){return{state:w0(g($),"device.json"),control:w0(g($),"control.json"),lock:w0(g($),"lifecycle.lock"),socket:w0(g($),"control.sock"),daemon:w0(g($),"daemon.json"),releaseCheck:w0(g($),"release-check.json"),updateDeferral:w0(g($),"update-deferral.json"),firstHeartbeat:w0(g($),"first-heartbeat.json")}}var I7=K.object({version:K.literal(1),device_id:K.string().min(1).max(160),offer:K.unknown().optional(),enrollment_ms:K.number().int().nonnegative().max(e$).optional()});function J4($,J,Z){o(g($),!0),c(d($).firstHeartbeat,{version:1,device_id:J,...Z.offer?{offer:Z.offer}:{},...Z.enrollmentMs!==void 0?{enrollment_ms:Z.enrollmentMs}:{}})}function _3($,J){let Z=d($).firstHeartbeat;try{if(!u(Z))return null;let Q=I7.safeParse(JSON.parse(s(Z)));if(V2(Z),!Q.success||Q.data.device_id!==J)return null;let X=G2(Q.data.offer);return{...X?{offer:X}:{},...Q.data.enrollment_ms!==void 0?{enrollmentMs:Q.data.enrollment_ms}:{}}}catch{return null}}function M0($,J=!1){o(g($),J);let Z=["local-device.key","local-device.binding","device.json"].filter((Q)=>{let X=w0(g($),Q);if(!u(X))return!1;return s(X),!0});return $.lifetime==="persistent"&&Z.join()==="device.json"?j3($):new F3(g($))}function B2($,J){M0($,!0),S7($);let Z=J??j3($),Q=new F3(g($));try{Z.deleteBinding(),Z.deleteKey(),Z.createFreshPublicKey()}catch(X){if(X instanceof V0)return Q;throw X}return Q.deleteBinding(),Q.deleteKey(),Z}function j3($){return new o$(Y2(),C7(),E7($))}function E7($){let J=D3($);return A7("sha256").update(`reason-worker
4
4
  ${J?.directory??g($)}`).digest("hex")}function A1($,J){c(w0(g($),R1),{version:1,directory:D3($)?.directory??g($),devicePublicKey:J})}var R1="keychain-scope.json";function Z4($){return u(w0(g($),R1))}var x7=K.strictObject({version:K.literal(1),directory:K.string().min(1),devicePublicKey:K.string().min(1)});function D3($){let J=w0(g($),R1);if(!u(J))return null;let Z=x7.safeParse(JSON.parse(s(J))),Q=d($).state;if(!Z.success||!u(Q))return null;return JSON.parse(s(Q))?.devicePublicKey===Z.data.devicePublicKey?Z.data:null}function S7($){let J=w0(g($),R1);if(!u(J))return;if(D3($))try{let Z=j3($);Z.deleteBinding(),Z.deleteKey()}catch(Z){if(!(Z instanceof V0))throw Z}V2(J)}function H$($){let J=R7($.workspaceRoot);if(J!==$.workspaceRoot||!P7(J).isDirectory()||!z1(J,$.stateDirectory))throw Error("worker_workspace_not_canonical_or_overlaps_state")}function t($){if(!u(g($)))return null;let J=k$(d($).state,{proofStore:M0($),repair:!1}),Z=J!==null&&$4($.apiOrigin,J.apiOrigin),Q=Z?[K0($),K0({...$,apiOrigin:J.apiOrigin})]:[K0($)];if(J&&(!Q.includes(J.worker?.configDigest??"")||J.worker.lifetime!==$.lifetime||J.apiOrigin!==$.apiOrigin&&!Z||J.roots.length>32||J.roots[0]?.path!==$.workspaceRoot||J.handsSlots!==$.slots))throw Error("worker_config_binding_mismatch");return J}var Q4=K.strictObject({version:K.literal(1),drained:K.boolean(),revoked:K.boolean()});function e($){let J=d($).control;return u(J)?Q4.parse(JSON.parse(s(J))):{version:1,drained:!1,revoked:!1}}function P0($,J){c(d($).control,Q4.parse(J))}function y0($){let J=M0($);J.deleteBinding(),J.deleteKey();let Z=w0(g($),R1);if(u(Z))V2(Z);let Q=d($).state;if(u(Q))V2(Q)}var b7=K.strictObject({read:K.boolean(),write:K.boolean(),execute:K.boolean(),discover_environment:K.boolean(),expose_mcp:K.literal(!1)}),W3=K.strictObject({version:K.literal(1),organization_id:K.string().min(1).max(160),enrollment_ticket:K.string().min(1).max(4096),code_verifier:K.string().regex(/^[A-Za-z0-9._~-]{43,128}$/),root_fingerprint_key:K.string().regex(/^[a-f0-9]{64}$/),root:K.strictObject({path_fingerprint:K.string().regex(/^[a-f0-9]{64}$/),permissions:b7,execution_mode:K.enum(["confined","host"]).default("confined")}),folders:K.array(K.strictObject({path_fingerprint:K.string().regex(/^[a-f0-9]{64}$/)})).min(1).max(31).optional()}),w7=K.object({device_id:K.string().min(1).max(160),organization_id:K.string().min(1).max(160),auth_scheme:K.literal("p256"),protocol_version:K.literal(2),roots:K.array(K.object({id:K.string().min(1),label:K.string(),path_fingerprint:K.string()})).min(1).max(32),headless:K.object({lifecycle:K.enum(["persistent","ephemeral"]),expires_at:K.iso.datetime({offset:!0})}),first_heartbeat:K.unknown().optional()}),O3=30000;class $$ extends Error{deviceRemoved;constructor($){super("worker_enrollment_rejected");this.deviceRemoved=$}}async function y7($,J,Z=fetch){let Q=await Z(`${$}/app/local-runtime/enroll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(J),redirect:"error",signal:AbortSignal.timeout(O3)});if(!Q.ok){let X=Q.status===409?await Q.json().catch(()=>null):null;throw new $$(X?.error==="device_revoked")}return Q.json()}async function z3($,J,Z,Q){m0();let X=W3.parse(JSON.parse(s(J)));return J$($,X,Z,Q)}async function J$($,J,Z,Q=(Y,V)=>y7(Y,V,b0($.proxy)),X=performance.now()){let Y=Y4($,J,Z),V=await Q($.apiOrigin,{...Y.request,enrollment_ticket:J.enrollment_ticket,code_verifier:J.code_verifier});return Y.receipt(V,X)}async function X4($,J,Z,Q,X=performance.now()){let Y=Y4($,J,Z),V=await Q(Y.request,J.code_verifier);return V===null?null:Y.receipt(V,X)}function Y4($,J,Z){if(m0(),J.root.execution_mode!==$.executionMode)throw Error("worker_enrollment_mode_mismatch");let Q=h$([$.workspaceRoot],J.root.permissions,Buffer.from(J.root_fingerprint_key,"hex"))[0];if(Q.path!==$.workspaceRoot||Q.pathFingerprint!==J.root.path_fingerprint)throw Error("worker_enrollment_root_mismatch");let X=($.folders??[]).map((G,H)=>{let M=h$([G],J.root.permissions,Buffer.from(J.root_fingerprint_key,"hex"))[0];if(M.path!==G||M.pathFingerprint!==J.folders?.[H]?.path_fingerprint)throw Error("worker_enrollment_root_mismatch");return M});if((J.folders?.length??0)!==X.length)throw Error("worker_enrollment_root_mismatch");let Y=[{...Q,label:"workspace"},...X],V;try{V=Z.loadPublicKey()}catch{V=Z.createFreshPublicKey()}return{request:{device_public_key:V,name:$.name,os:process.platform,architecture:process.arch,reason_runtime_version:r,bridge_version:r,protocol_version:2,capabilities:{supported_operations:[]},roots:Y.map((G)=>({label:G.label,path_fingerprint:G.pathFingerprint,permissions:J.root.permissions}))},receipt(G,H){let M=w7.parse(G);if(M.organization_id!==J.organization_id||M.roots.length!==Y.length||M.roots.some((B,q)=>B.path_fingerprint!==Y[q].pathFingerprint)||M.headless.lifecycle!==$.lifetime||Date.parse(M.headless.expires_at)<=Date.now())throw Error("worker_enrollment_receipt_mismatch");let U=G2(M.first_heartbeat);try{J4($,M.device_id,{...U?{offer:U}:{},enrollmentMs:Math.min(e$,Math.max(0,Math.round(performance.now()-H)))})}catch{}return{version:4,apiOrigin:$.apiOrigin,orgId:M.organization_id,deviceId:M.device_id,devicePublicKey:V,displayName:$.name,registeredAt:new Date().toISOString(),handsSlots:$.slots,worker:{configDigest:K0($),lifetime:$.lifetime,expiresAt:M.headless.expires_at},roots:M.roots.map((B,q)=>({id:B.id,label:B.label,path:Y[q].path,pathFingerprint:B.path_fingerprint,permissions:J.root.permissions}))}}}}import{randomBytes as k7,randomUUID as h7}from"crypto";import{unlinkSync as f7}from"fs";import{join as v7}from"path";var B4=K.strictObject({version:K.literal(1),install_id:K.uuid(),fingerprint_key:K.string().regex(/^[a-f0-9]{64}$/)}),m7=K.object({enrollment_ticket:K.string().min(1).max(4096),expires_at:K.iso.datetime({offset:!0}),device_kind:K.literal("headless"),lifecycle:K.enum(["persistent","ephemeral"]),device_expires_at:K.iso.datetime({offset:!0})});function A3($){return m7.parse($)}var g7=K.object({credentialKind:K.enum(["oauth","api_key"]).optional(),apiOrigin:K.url(),clientId:K.string(),accessToken:K.string().min(1).max(32768),refreshToken:K.string().max(32768),expiresAt:K.iso.datetime({offset:!0}),scopes:K.array(K.string().max(128)).max(128),orgId:K.string().min(1).max(160)});function O$($){return K2(C1("REASON_CLI_CHANNEL",$.channel),U0())}async function z$($,J=O$($)){if(!u(J))return null;let Z=g7.parse(JSON.parse(s(J)));if(!C0(Z.apiOrigin,$.apiOrigin))throw Error("worker_session_origin_mismatch");if(Z.credentialKind==="api_key")return Date.parse(Z.expiresAt)>Date.now()?Z:null;let Q=b0($.proxy),X=Object.assign((V,N)=>Q(V,{...N,redirect:"error",signal:AbortSignal.timeout(30000)}),{preconnect:fetch.preconnect}),Y=await G4({path:J,fetchImpl:X});if(Y&&!C0(Y.apiOrigin,$.apiOrigin))throw Error("worker_session_origin_mismatch");return Y}async function K4($,J,Z){if(!C0(J.apiOrigin,$.apiOrigin))throw Error("worker_session_origin_mismatch");if(!J.scopes.includes("devices:write"))throw Error("worker_devices_write_scope_required");let Q=A$($);return Q.complete(J.orgId,await Z.createHeadlessDeviceEnrollmentTicket(Q.request))}async function U4($,J,Z,Q,X){let Y=performance.now();if(!C0(J.apiOrigin,$.apiOrigin))throw Error("worker_session_origin_mismatch");if(!J.scopes.includes("devices:write"))throw Error("worker_devices_write_scope_required");let V=A$($),N=X?void 0:Z.enrollHeadlessDevice?.bind(Z);if(N){let G=await X4($,V.direct(J.orgId),Q,(H,M)=>N({approval:V.request,code_verifier:M,registration:H}).catch((U)=>{throw u7(U)}),Y);if(G)return G}return J$($,V.complete(J.orgId,await Z.createHeadlessDeviceEnrollmentTicket(V.request)),Q,X,Y)}function u7($){if(!($ instanceof v0))return $;if($.status===409)return new $$($.code==="device_revoked");if($.status===410||$.status===401&&$.code==="invalid_enrollment_ticket"||$.status===403&&$.code==="grant_exceeded"||$.status===400&&$.code==="invalid_device_enrollment")return new $$(!1);return $}var P1=($)=>v7(g($),"enrollment-install.json");function N4($){if(u(P1($)))f7(P1($))}function A$($,{stored:J=!0}={}){m0();let Z=P1($),Q=J&&u(Z)?B4.parse(JSON.parse(s(Z))):{version:1,install_id:h7(),fingerprint_key:k7(32).toString("hex")};if(J&&!u(Z))c(Z,Q);let X={read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1},Y=Buffer.from(Q.fingerprint_key,"hex"),V=h$([$.workspaceRoot],X,Y)[0];if(V.path!==$.workspaceRoot)throw Error("worker_workspace_not_canonical_or_overlaps_state");let N=($.folders??[]).map((U)=>{let B=h$([U],X,Y)[0];if(B.path!==U)throw Error("worker_workspace_not_canonical_or_overlaps_state");return{path_fingerprint:B.pathFingerprint}}),G=V4(),H={install_id:Q.install_id,code_challenge:G.challenge,lifecycle:$.lifetime,roots:[V.pathFingerprint,...N.map((U)=>U.path_fingerprint)].map((U)=>({path_fingerprint:U,permissions:X,execution_mode:$.executionMode}))},M=(U)=>({version:1,organization_id:U,code_verifier:G.verifier,root_fingerprint_key:Q.fingerprint_key,root:{path_fingerprint:V.pathFingerprint,permissions:X,execution_mode:$.executionMode},...N.length?{folders:N}:{}});return{request:H,saveInstall(U){o(g(U),!0),c(P1(U),Q)},complete(U,B){let q=A3(B);if(q.lifecycle!==$.lifetime||Date.parse(q.expires_at)<=Date.now()||Date.parse(q.device_expires_at)<=Date.now())throw Error("worker_ticket_receipt_mismatch");return{...M(U),enrollment_ticket:q.enrollment_ticket}},direct:M}}function H4($,J,Z){let Q=P1($);if(!u(Q))throw Error("worker_folders_unavailable");let X=B4.parse(JSON.parse(s(Q)));return h$([J],Z,Buffer.from(X.fingerprint_key,"hex"))[0]}var U2=8,T4=600000,F4=15000,q4=new Set(["device_revoked","invalid_device_credential"]),N2=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,q$=($)=>N0(g($),"workspaces"),_4="account.json",R3=($)=>u(N0($,_4));function k0($){let J;try{J=d7(q$($))}catch{return[]}return J.filter((Z)=>N2.test(Z)).sort().map((Z)=>{let Q=N0(q$($),Z),X=N0(Q,"worker.json"),Y=null;try{let V=$0.safeParse(JSON.parse(s(X)));if(V.success&&V.data.stateDirectory===Q)Y=V.data}catch{}return{organizationId:Z,directory:Q,configPath:X,config:Y,account:R3(Q)}})}function H2($,J){let Z=J.toLowerCase();if(!N2.test(Z))throw Error("worker_workspace_id_invalid");let Q=$0.parse({...$,stateDirectory:N0(q$($),Z)});return o(Q.stateDirectory,!0),c(N0(Q.stateDirectory,_4),{version:1}),{config:Q,configPath:N0(Q.stateDirectory,"worker.json")}}function q2($,J){try{let{config:Z,configPath:Q}=H2($,J);o(g(Z),!0),P0(Z,{version:1,drained:!0,revoked:!0}),c(Q,Z)}catch{}}function I1($,J){let Z=J.toLowerCase(),Q=null;try{Q=t($)?.orgId.toLowerCase()??null}catch{}return Q===Z||k0($).some((X)=>!X.account&&X.config!==null&&X.organizationId===Z)}var P3=["device.json","local-device.key","local-device.binding","keychain-scope.json","control.json","enrollment-install.json","first-heartbeat.json"];function M4($,J){let Z=t($);if(!Z?.worker)throw Error("worker_identity_missing");A1($,Z.devicePublicKey),o(g(J),!0);for(let Y of P3)f$(N0(g(J),Y),{force:!0});for(let Y of P3){let V=N0(g($),Y);if(u(V))p7(V,N0(g(J),Y))}let Q=M0(J),X=k$(d(J).state,{proofStore:Q,repair:!1});if(!X?.worker)throw Error("worker_identity_missing");h0({...X,worker:{...X.worker,configDigest:K0(J)}},d(J).state,{proofStore:Q})}function C3($){for(let J of k0($)){if(J.account)continue;try{if(J.config&&u(d(J.config).state))y0(J.config)}catch{}f$(J.directory,{recursive:!0,force:!0})}f$(E3($),{force:!0})}function M2($,{prefer:J,keep:Z,live:Q=!1}){let X=Date.now(),Y=(U)=>Number(Date.parse(U.worker?.expiresAt??"")>X+60000),N=k0($).flatMap((U)=>{if(!U.account||!U.config)return[];try{if(e(U.config).revoked)return[];let B=t(U.config);return B&&B.orgId.toLowerCase()===U.organizationId&&(!Q||Y(B))?[{...U,config:U.config,state:B}]:[]}catch{return[]}}).sort((U,B)=>Number(B.organizationId===J)-Number(U.organizationId===J)||Y(B.state)-Y(U.state))[0];if(!N)return null;let G=null;try{G=e($).revoked?null:t($)}catch{}let H=G?.orgId.toLowerCase()??"";if(Z&&G&&N2.test(H)&&H!==N.organizationId){let U=H2($,H);M4($,U.config),c(U.configPath,U.config)}else if(u(g($))){try{if(u(d($).state))y0($)}catch{}for(let U of P3)f$(N0(g($),U),{force:!0})}C3($);let M=$0.parse({...N.config,stateDirectory:$.stateDirectory});return M4(N.config,M),c(N0($.stateDirectory,"worker.json"),M),f$(N.directory,{recursive:!0,force:!0}),M}var I3={before($){for(let{config:J}of k0($))try{let Z=J?t(J):null;if(J&&Z)A1(J,Z.devicePublicKey)}catch{}},after($,J){for(let{organizationId:Z,directory:Q,configPath:X,config:Y}of k0(J)){if(Y)continue;try{let V=$0.parse(JSON.parse(s(X)));if(V.stateDirectory!==N0(q$($),Z))continue;let N=$0.parse({...V,stateDirectory:Q}),G=M0(N),H=k$(d(N).state,{proofStore:G,repair:!1});if(H?.worker?.configDigest===K0(V))h0({...H,worker:{...H.worker,configDigest:K0(N)}},d(N).state,{proofStore:G});c(X,N)}catch{}}}},E3=($)=>N0(q$($),"listed.json");function j4($){try{let J=JSON.parse(s(E3($))),Z=J.names&&typeof J.names==="object"&&!Array.isArray(J.names)?Object.fromEntries(Object.entries(J.names).filter((Q)=>typeof Q[1]==="string")):{};return{listed:J.listed===!0,reason:J.reason==="sign_in"?"sign_in":null,blocked:Array.isArray(J.blocked)?J.blocked.filter((Q)=>typeof Q==="string"):[],names:Z}}catch{return null}}function D4($,J){let Z=k0($),Q=Z.filter((G)=>G.account),X=Z.filter((G)=>!G.account),Y=j4($),V=Y&&!Y.listed?Y.reason:null,N=V||X.length===0&&Y&&!Y.listed?[]:X;if(Q.length===0&&N.length===0&&(V||Y&&!Y.listed))return{workspaces:null,off:V};return{off:V,workspaces:[...Q,...N].map(({organizationId:G,config:H,account:M})=>{let U=!1,B=null,q=!1,L=null;try{U=H?e(H).revoked:!1,B=H&&!U?t(H):null;let T=H?$1(d(H).daemon):null;q=J&&!!B&&T?.state==="connected",L=q?L4(T,B):null}catch{}return{...L?{permission_recovery:L}:{},organization_id:G,device_id:B?.deviceId??null,name:Y?.names?.[G]??null,root:B?.roots[0]?{id:B.roots[0].id,permissions:B.roots[0].permissions}:null,state:U?"removed":q?"connected":"not_running",blocked:!M&&!U&&!q&&(Y?.blocked.includes(G)??!1),...M?{account:!0}:{}}})}}function W4($){let{config:J,state:Z,client:Q,signal:X}=$,Y=$.log??(()=>{return}),V=new Map,N=null,G=!1,H=j4(J)??{listed:!1,reason:null,blocked:[]},M=(j)=>{let{folders:D,...R}=J,I=Z.roots.slice(1).map((P)=>P.path);return $0.parse({...R,...I.length?{folders:I}:{},stateDirectory:N0(q$(J),j)})},U=async(j)=>{let D=V.get(j);if(!D)return;D.controller.abort(),await D.done},B=(j,D=!1)=>{let R=new AbortController,I=()=>R.abort();if(X.addEventListener("abort",I,{once:!0}),X.aborted)R.abort();let P={...j,controller:R,claims:0,done:Promise.resolve(),account:D};P.done=$.serve(j,R.signal,(C)=>{P.claims=C}).then(()=>{return},(C)=>{if(D&&C instanceof L0&&C.status===401&&q4.has(C.code)){try{P0(j.config,{version:1,drained:!0,revoked:!0})}catch{}Y(`Reason worker: workspace ${j.organizationId} (another account's) no longer accepts this computer (${C.code}); run \`reason connect\` signed in as that account to connect it again
5
5
  `)}else if(C instanceof L0&&C.status===401&&q4.has(C.code)){try{y0(j.config)}catch{}Y(`Reason worker: workspace ${j.organizationId} no longer accepts this computer
@@ -313,7 +313,7 @@ Usage:
313
313
  `),host:Z.host}),N=A4({...V,log:(q)=>Q.stderr.write(`${q}
314
314
  `)}),{configPath:G}=N,H=N.saved;if(!H)return Q.stderr.write("Reason: this computer has no saved connection. Run `reason connect`.\n"),0;let M=(q,L)=>{let T=K3(Z.home,Z.channel),_;try{let O=null;try{O=L.keep?null:t(H)?.orgId.toLowerCase()??null}catch{}if(_=M2(H,{prefer:J2(Z.home,Z.channel,H),...L}),_&&O)q2(_,O)}finally{T()}if(!_)return!1;H=_;let W="";try{W=` (workspace ${t(_)?.orgId??"unknown"})`}catch{}return Q.stderr.write(`Reason: ${q}; this computer goes on running Sessions for its other Reason account${W}.
315
315
  `),!0};if(e(H).revoked&&!M("this computer's connection was removed from Reason",{keep:!1}))return Q.stderr.write("Reason: this computer was removed from Reason. Run `reason connect` to connect it again.\n"),0;if(H.executionMode==="confined"||!_1(H)){let q=p0(H.stateDirectory)??void 0,L=q?null:J2(Z.home,Z.channel,H);if(!q&&!(L&&I1(H,L)))M("this computer's connection expired and its account is not signed in here",{keep:!0,live:!0})}let U=H.executionMode==="confined";if(U||!_1(H)){let q=p0(H.stateDirectory)??void 0;if(Q.stderr.write(U?V7:`Reason: this computer's connection expired; renewing it with ${q?"its API key":"your login"}\u2026
316
- `),await p9($0.parse({...H,executionMode:"host"}),G,Q,X,q)!==0)return Q.stderr.write(q?"Reason: could not renew this computer's connection. Run `reason connect --api-key KEY` with a valid key.\n":"Reason: could not renew this computer's connection. Run `reason login`, then `reason connect`.\n"),0}let B=new AbortController;if(!X.runWorker)import("./ask-relay-zc05zxz4.js").then(({runBackgroundAskRelay:q})=>q(B.signal,(L)=>Q.stderr.write(`${L}
316
+ `),await p9($0.parse({...H,executionMode:"host"}),G,Q,X,q)!==0)return Q.stderr.write(q?"Reason: could not renew this computer's connection. Run `reason connect --api-key KEY` with a valid key.\n":"Reason: could not renew this computer's connection. Run `reason login`, then `reason connect`.\n"),0}let B=new AbortController;if(!X.runWorker)import("./ask-relay-2782vyd4.js").then(({runBackgroundAskRelay:q})=>q(B.signal,(L)=>Q.stderr.write(`${L}
317
317
  `))).catch(()=>{});try{for(;;){let q=p0(H.stateDirectory)===null?{ownerWorkspaces:X.worker?.ownerWorkspaces??{}}:{},L=X.runWorker?null:t2({stateDirectory:H.stateDirectory}),T=!1,_;try{_=await(X.runWorker??T$)(["start","--config",G],{deferOptionalLanes:!0,...X.worker,...q,ownComputer:!0,io:{stdout:Q.stdout,stderr:Q.stderr},onDeviceRevoked:()=>{T=!0}})}finally{L?.stop()}if(!T)return _;if(!M("this computer's connection was removed from Reason",{keep:!1}))break}return V3(Z.home,Z.channel,!0),Q.stderr.write("Reason: this computer was removed from Reason. Run `reason connect` to connect it again.\n"),0}finally{B.abort()}}async function kG($,J,Z){let{io:Q,options:X,home:Y,channel:V,environment:N}=Z;if(J&&await(X.controlWorker??B0)(J,"status").catch(()=>null))throw new l("This computer is already connected in the background (see `reason status`). Run `reason disconnect` first to connect it only while a command runs.");let G=g0(Y,V,!0),H=B7({parsed:$,saved:J,stateDirectory:G,lifetime:"ephemeral",home:Y,channel:V,options:X,environment:N}),M=K7(H,Z.apiKey??(J?p0(J.stateDirectory)??void 0:void 0)),U=T0(G,"worker.json");return o(G,!0),c(U,M),Q.stdout.write(f9(`Reason: connecting "${M.name}" while this command runs`,M,Z.host.platform,["Connecting\u2026"])),(X.runWorker??T$)(["start","--config",U],{...l9(X.worker,Z.apiKey),ownComputer:!0,io:{stdout:Q.stdout,stderr:Z3(Q.stderr)},onStartup:(B)=>{if(B==="ready")Q.stdout.write(`Connected. Start Sessions on "${M.name}" from Reason. Press Ctrl-C to stop.
318
318
  `);X.worker?.onStartup?.(B)}})}function hG($,J,Z,Q){if(Z.platform!=="darwin")throw new l("--keep-awake is for macOS.");if(!J)throw new l("This computer is not connected to Reason. Run reason connect first.");o(g(J),!0),h4(d(J).daemon,$);let X=j2(d(J).daemon)==="battery_and_ac";return Q.stdout.write(`Keep awake: ${X?"on (this Mac stays awake while it runs Sessions)":"off"}
319
319
  `),0}var fG=K.object({root:K.object({id:K.string().min(1).max(160),label:K.string().max(160),path_fingerprint:K.string()})});async function U7($,J,Z,Q){let X=await(l9(Q.worker,Z).enrollmentCredentials??z$)($,O$($));if(!X)throw Error("worker_session_login_required");if(!X.scopes.includes("devices:write"))throw Error("worker_devices_write_scope_required");let Y=Q.folderApi?.(X)??new I$(X,{credentialsPath:O$($),fetchImpl:b0($.proxy)}),V=(N)=>N instanceof v0&&N.status===404&&!["device_not_found","root_not_found"].includes(N.code);return{add:async(N)=>{let G=H4($,N,{...J.roots[0].permissions,expose_mcp:!1}),H=await Y.addDeviceRoot(J.deviceId,{path_fingerprint:G.pathFingerprint,label:G.label,permissions:{...G.permissions,expose_mcp:!1}}).catch((U)=>{if(V(U))throw Error("worker_folders_unavailable");if(U instanceof v0&&U.code==="root_limit_reached")throw new l("This computer already has the most folders Reason allows (32).");throw U}),M=fG.parse(H).root;if(M.path_fingerprint!==G.pathFingerprint)throw Error("worker_enrollment_receipt_mismatch");return{...G,id:M.id,label:M.label}},remove:async(N)=>{await Y.removeDeviceRoot(J.deviceId,N).catch((G)=>{if(V(G))throw Error("worker_folders_unavailable");if(!(G instanceof v0&&G.code==="root_not_found"))throw G})}}}function N7($,J,Z){h0({...J,roots:Z,handsSlots:$.slots,worker:{...J.worker,configDigest:K0($)}},d($).state,{proofStore:M0($)})}async function H7($,J,Z,Q){let{io:X,options:Y,host:V}=Q,N=J&&!Q.apiKey&&p0(J.stateDirectory)===null?J2(Q.home,Q.channel,J):null,G=J&&N&&x$(J)&&!I1(J,N)?k0(J).find((P)=>P.account&&P.organizationId===N)??null:void 0;if(G===null)throw new l("This computer is not connected for your account. Run reason connect first.");let H=G?G.config:J,M=G?G.configPath:Z,U=H&&x$(H)&&!e(H).revoked?t(H):null;if(!J||!H||!U||H.lifetime!=="persistent")throw new l("This computer is not connected to Reason. Run reason connect first.");let B=$.addFolder!==void 0,q=B?$.addFolder:$.removeFolder,L=Y.cwd??process.cwd(),T;try{T=J3(L,q)}catch(P){if(B)throw new l(P instanceof Error?P.message:String(P));T=CG(L,q)}if(T===H.workspaceRoot)throw new l(`${T} is this computer's main folder. To use another one, run reason connect --folder PATH.`);let _=H.folders??[],W=U.roots.slice(1).find((P)=>P.path===T);if(!B&&!W&&!_.includes(T))throw new l(`${T} is not one of this computer's folders.`);if(B&&!z1(T,H.stateDirectory))throw new l(`${T} holds Reason's own settings.`);if(B&&!W&&_.length>=31)throw new l("This computer already has the most folders Reason allows (32).");let O=Q.apiKey??p0(H.stateDirectory)??void 0,F=await U7(H,U,O,Y),z=U.roots.filter((P)=>P.path!==T);if(B)z=[...z,await F.add(T)];else if(W)await F.remove(W.id);N7(H,U,z);let j=B?[..._.filter((P)=>P!==T),T]:_.filter((P)=>P!==T),{folders:D,...R}=H;if(c(M,$0.parse({...R,...j.length?{folders:j}:{}})),!await(Y.controlWorker??B0)(J,"reload_roots").then(()=>!0,()=>!1))G$(J,V,"connect");return X.stdout.write(B?`Added ${T}. Sessions on "${H.name}" may run in it.
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{$b as J8,Ab as P7,Bb as T7,Cb as R7,Db as o4,Eb as q7,Fb as g7,Mb as E7,Qb as S7,Rb as f7,dc as x7,ec as y7,fc as Y8,gc as W8,ic as h7,kb as m4,kc as h8,lc as v0,mb as q2,mc as p0,nb as v4,nc as F2,ob as u4,pb as w7,qb as M7,qc as m7,rb as j7,tb as p4,tc as m8,ub as L7,uc as Z8,vb as I7,vc as Q8,wb as i4,wc as k1,xb as A7,yb as a3,yc as v7,zb as _7}from"./vm-hands-entry-lite-2grs67fz.js";import{Fc as l7,Hc as s7,Ic as c7}from"./vm-hands-entry-lite-heehk76b.js";import{Nc as k7}from"./vm-hands-entry-lite-400hmvkg.js";import{$c as g0,Tc as e0,Uc as $1}from"./vm-hands-entry-lite-k9amte6k.js";import{ad as X1}from"./vm-hands-entry-lite-swwb5mp2.js";import{cd as t4,dd as e4}from"./vm-hands-entry-lite-wts79wdn.js";import{fd as u7}from"./vm-hands-entry-lite-nqvb7a2m.js";import{jd as H2,kd as C2,ld as B4,nd as V4,pd as G4,qd as X4,ud as U4,wd as z7}from"./vm-hands-entry-lite-xaaxvbk8.js";import{Ed as W2,Hd as V9,Qd as G9}from"./vm-hands-entry-lite-mwj7bnse.js";import{$e as h6,$f as Y5,Af as G7,Bf as X7,Cf as U7,Df as F7,Ee as g1,Ef as Y7,Fe as E1,Ff as W7,Ge as n3,He as O2,Ie as y6,Je as r3,Ke as _4,Le as P4,Lf as i8,Me as j0,Mf as o8,Nf as t8,Of as e8,Pf as $5,Qe as C0,Qf as J5,Sf as Z5,Te as s,Tf as Q5,Ue as c1,Uf as K5,Vf as B5,Wf as V5,Xe as a8,Xf as G5,Yf as X5,Ze as n1,Zf as U5,_f as F5,af as m6,ef as v6,ff as u6,gf as p6,hf as d6,if as l6,jf as s6,kf as c6,lf as n6,mf as r6,nf as a6,of as i6,pf as o6,qf as t6,rf as e6,sf as $7,tf as J7,uf as Z7,vf as Q7,wf as K7,xf as B7,zf as V7}from"./vm-hands-entry-lite-afjzr3v2.js";import{fg as _6,jg as m5,kg as X6,qg as X9,tg as v5,ug as X2}from"./vm-hands-entry-lite-0badx5n8.js";import{Cg as K9,Fg as B9,wg as J9,xg as Z9,yg as Q9}from"./vm-hands-entry-lite-2yt333v3.js";import{Og as $8,Vg as b7}from"./vm-hands-entry-lite-wtc8ebkr.js";import{_g as Y2}from"./vm-hands-entry-lite-kntkyezs.js";import{eh as u3,rh as N7}from"./vm-hands-entry-lite-0dr3sp75.js";import{Ni as p7,Oi as d7}from"./vm-hands-entry-lite-nhhpc9n2.js";import{$i as _1,_i as A1,aj as P1,bj as T1,cj as k0}from"./vm-hands-entry-lite-0mk8rxqv.js";import{vj as b1,wj as O7,xj as r4,yj as a4}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Aj as v3,Cj as B1,Ij as y8,Jj as k4}from"./vm-hands-entry-lite-arw53mkf.js";import{$j as r7,_j as n7,ak as a7,bk as i7,dk as o7,ek as t7,gk as e7,hk as $9}from"./vm-hands-entry-lite-qg11k3bf.js";import{sk as V}from"./vm-hands-entry-lite-ysk49bnz.js";import{Ck as z5,Dk as c4,Ik as H7,Jk as C7,Kk as D7,Lk as n4,Mk as l1}from"./vm-hands-entry-lite-rbjky7rd.js";import{Nk as T4}from"./vm-hands-entry-lite-b8bcnenf.js";import{Pk as H}from"./vm-hands-entry-lite-f28ehysx.js";import{Vk as g8}from"./vm-hands-entry-lite-c3e25cks.js";import{request as T9}from"http";import{request as R9}from"https";import{lookup as q9}from"dns/promises";import{isIP as g9}from"net";async function E9($){let J=new URL($.url);return await new Promise((Z,Q)=>{let K=(J.protocol==="https:"?R9:T9)(J,{method:"POST",headers:{...$.headers,"accept-encoding":"identity"},signal:$.signal,timeout:V4},(B)=>Z({response:B,close:()=>{B.destroy(),K.destroy(),B.socket?.destroy()}}));K.once("error",Q),K.once("timeout",()=>K.destroy(Object.assign(Error("custom_endpoint_timeout"),{code:"ETIMEDOUT"}))),K.end($.body)})}var F4=new Set(["ENOTFOUND","EAI_AGAIN","EAI_NONAME","EAI_NODATA","EAI_FAIL","DNSException"]),k9=new Set(["ECONNREFUSED","ETIMEDOUT","ECONNRESET","EHOSTUNREACH","ENETUNREACH","EHOSTDOWN","ENETDOWN","EPIPE","ECONNABORTED","EADDRNOTAVAIL","ConnectionRefused","ConnectionClosed","ConnectionTimedOut","Timeout"]);function Y4($,J=0){if(!$||typeof $!=="object"||J>3)return null;let Z=$.code;if(typeof Z==="string"){if(F4.has(Z))return"custom_endpoint_host_not_found";if(k9.has(Z))return"custom_endpoint_connection_failed";if(/^(?:ERR_TLS_|ERR_SSL_|CERT_|UNABLE_TO_(?:GET|VERIFY|DECRYPT)|DEPTH_ZERO_SELF_SIGNED|SELF_SIGNED_CERT|HOSTNAME_MISMATCH|EPROTO$)/.test(Z))return"custom_endpoint_tls_failed"}for(let Q of[...$ instanceof AggregateError?$.errors:[],$.cause]){let K=Y4(Q,J+1);if(K)return K}return null}async function S9($,J){let Z=Y4($),Q=new URL(J).hostname.replace(/^\[|\]$/g,"");if(Z!==null&&Z!=="custom_endpoint_connection_failed"||g9(Q)!==0)return Z;let K;return await Promise.race([q9(Q).then(()=>!0,(G)=>!F4.has(String(G?.code))),new Promise((G)=>{K=setTimeout(()=>G(!0),5000)})]).finally(()=>clearTimeout(K))?Z:"custom_endpoint_host_not_found"}function f9($){for(let J=42;;J++){if(J===127)J=256;let Z=String.fromCodePoint(J);if(!$.includes(Z))return Z}}function b9($,J){let Z=Buffer.from($),Q=Buffer.from(J),K=new Uint32Array(Z.length);for(let G=1,U=0;G<Z.length;G++){while(U&&Z[G]!==Z[U])U=K[U-1];if(Z[G]===Z[U])U++;K[G]=U}let B=0;return(G,U=!1)=>{let Y=Buffer.allocUnsafe(G.length*Q.length+B),F=0;for(let X of G){while(B&&Z[B]!==X){let W=K[B-1];F+=Z.copy(Y,F,0,B-W),B=W}if(Z[B]===X){if(B++,B===Z.length)F+=Q.copy(Y,F),B=0}else Y[F++]=X}if(U)F+=Z.copy(Y,F,0,B),B=0;return Y.subarray(0,F)}}async function W4($){$.signal.throwIfAborted();let J=X4.safeParse($.payload);if(!J.success)throw new H("custom_endpoint_invalid_request","Invalid local model request.");let Z=J.data,Q=U4.parse(await $.credential($.signal));if(!G4(Z,{baseUrl:Z.baseUrl,api:Q.api,execution:"device"}))throw new H("custom_endpoint_invalid_request","The request does not match the configured API.");$.signal.throwIfAborted();let K,B,G=0,U=0,Y=0,F=f9(Q.apiKey),X=b9(Q.apiKey,F),W=async(N,C)=>{$.signal.throwIfAborted(),await new Promise((M,w)=>{let D=()=>{$.signal.removeEventListener("abort",D),w($.signal.reason)};if($.signal.addEventListener("abort",D,{once:!0}),$.signal.aborted){D();return}Promise.resolve().then(()=>{return $.signal.throwIfAborted(),$.emit(N,C)}).then(()=>{$.signal.removeEventListener("abort",D),M()},(j)=>{$.signal.removeEventListener("abort",D),w(j)})})},z=async(N)=>{if(G+=N.length,G>C2)throw new H("custom_endpoint_response_too_large","Local model response exceeds the transport limit.");for(let C=0;C<N.length;C+=H2){if(Y>=B4)throw new H("custom_endpoint_response_too_large","Local model response exceeds the chunk limit.");await W(`custom_endpoint.chunk.${Y++}`,{eof:!1,data:N.subarray(C,C+H2).toString("base64")})}};try{let N=await E9({url:Z.url,body:Z.body,signal:$.signal,headers:{...Z.headers,...Q.api==="anthropic-messages"?{"x-api-key":Q.apiKey}:{authorization:`Bearer ${Q.apiKey}`}}});K=N.response,B=N.close;let C=K.statusCode??500;if(C>=300&&C<400)throw new H("custom_endpoint_redirect_refused","Local model redirects are not followed.");if(K.headers["content-encoding"]&&K.headers["content-encoding"]!=="identity")throw new H("custom_endpoint_encoding_unsupported","The local server must honor identity encoding.");let M={};for(let w of["content-type","retry-after","x-request-id","request-id"]){let D=K.headers[w];if(typeof D==="string")M[w]=D.replaceAll(Q.apiKey,F).slice(0,4096)}await W("custom_endpoint.headers",{status:C,statusText:(K.statusMessage??"").replaceAll(Q.apiKey,F).slice(0,256),headers:M});for await(let w of K){$.signal.throwIfAborted();let D=Buffer.isBuffer(w)?w:Buffer.from(w);if(U+=D.length,U>C2)throw new H("custom_endpoint_response_too_large","Local model response exceeds the transport limit.");await z(X(D))}return await z(X(Buffer.alloc(0),!0)),await W(`custom_endpoint.chunk.${Y}`,{eof:!0}),{bytes:G,chunks:Y}}catch(N){if($.signal.throwIfAborted(),N instanceof H)throw N;throw new H((K?null:await S9(N,Z.url))??"custom_endpoint_request_failed","The local model server could not complete the request.")}finally{B?.()}}import{join as z4}from"path";function x9($,J){return $===z4(J,".ara","workspace")||$===z4(J,".reason","workspace")}function N4($,J){let Z=$.filter((Q)=>x9(Q.path,J));return Z.length===1?Z[0].path:null}var y9=/^[a-f0-9]{64}$/;var D2=32,h9=/^\/[^\x00-\x1f\x7f\\]*$/;function L1($){if(typeof $!=="string"||$.length>4096||!h9.test($))return!1;if($==="/")return!0;return $.split("/").slice(1).every((J)=>J!==""&&J!=="."&&J!=="..")}function O1($,J){let Z=J==="win32"?/^([A-Za-z]):[\\/]*(.*)$/.exec($):null;if(!Z)return $;let Q=Z[2].split(/[\\/]+/).filter(Boolean).join("/");return`/${Z[1].toUpperCase()}:${Q?`/${Q}`:""}`}function I1($){if(!$||typeof $!=="object"||Array.isArray($))return;let J=$;if(!L1(J.home)||!Array.isArray(J.roots)||J.roots.length>D2)return;let Z=[];for(let Q of J.roots){if(!Q||typeof Q!=="object"||Array.isArray(Q))return;let{path_fingerprint:K,path:B}=Q;if(typeof K!=="string"||!y9.test(K)||!L1(B))return;Z.push({path_fingerprint:K,path:B})}return{home:J.home,roots:Z}}function m9($){let J=/^Reason contributor (rc_[0-9a-f]{32})$/.exec($.name)?.[1];return $.email.toLowerCase()==="343777287+reason-contributors@users.noreply.github.com"&&J?J:void 0}function v9($){return m9($)??$.email.toLowerCase()}function w2($){let J=/^Co-authored-by:\s*([^<>\r\n]+) <([^<>\s]+)>$/i.exec($.trim());return J?v9({name:J[1],email:J[2]}):$.trim().toLowerCase()}var r0=($)=>$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/[a-z]/gi,(J)=>`[${J.toLowerCase()}${J.toUpperCase()}]`),u9=[...A1.map(($)=>`/(${$.map(r0).join("/")})(/|$)`),..._1.map(($)=>`/(${$.map(r0).join("/")})(/|$)`),...[...P1].map(($)=>`/(${r0($)})$`),`/${r0(".env.")}[^/]*$`,...T1.map(($)=>`/[^/]*${r0($)}$`)],H4=`function localGithubSandboxProfile(root, temporary) {
2
+ import{$b as J8,Ab as P7,Bb as T7,Cb as R7,Db as o4,Eb as q7,Fb as g7,Mb as E7,Qb as S7,Rb as f7,dc as x7,ec as y7,fc as Y8,gc as W8,ic as h7,kb as m4,kc as h8,lc as v0,mb as q2,mc as p0,nb as v4,nc as F2,ob as u4,pb as w7,qb as M7,qc as m7,rb as j7,tb as p4,tc as m8,ub as L7,uc as Z8,vb as I7,vc as Q8,wb as i4,wc as k1,xb as A7,yb as a3,yc as v7,zb as _7}from"./vm-hands-entry-lite-1xmf8aps.js";import{Fc as l7,Hc as s7,Ic as c7}from"./vm-hands-entry-lite-heehk76b.js";import{Nc as k7}from"./vm-hands-entry-lite-400hmvkg.js";import{$c as g0,Tc as e0,Uc as $1}from"./vm-hands-entry-lite-k9amte6k.js";import{ad as X1}from"./vm-hands-entry-lite-swwb5mp2.js";import{cd as t4,dd as e4}from"./vm-hands-entry-lite-wts79wdn.js";import{fd as u7}from"./vm-hands-entry-lite-nqvb7a2m.js";import{jd as H2,kd as C2,ld as B4,nd as V4,pd as G4,qd as X4,ud as U4,wd as z7}from"./vm-hands-entry-lite-xaaxvbk8.js";import{Ed as W2,Hd as V9,Qd as G9}from"./vm-hands-entry-lite-xm52myx6.js";import{$e as h6,$f as Y5,Af as G7,Bf as X7,Cf as U7,Df as F7,Ee as g1,Ef as Y7,Fe as E1,Ff as W7,Ge as n3,He as O2,Ie as y6,Je as r3,Ke as _4,Le as P4,Lf as i8,Me as j0,Mf as o8,Nf as t8,Of as e8,Pf as $5,Qe as C0,Qf as J5,Sf as Z5,Te as s,Tf as Q5,Ue as c1,Uf as K5,Vf as B5,Wf as V5,Xe as a8,Xf as G5,Yf as X5,Ze as n1,Zf as U5,_f as F5,af as m6,ef as v6,ff as u6,gf as p6,hf as d6,if as l6,jf as s6,kf as c6,lf as n6,mf as r6,nf as a6,of as i6,pf as o6,qf as t6,rf as e6,sf as $7,tf as J7,uf as Z7,vf as Q7,wf as K7,xf as B7,zf as V7}from"./vm-hands-entry-lite-afjzr3v2.js";import{fg as _6,jg as m5,kg as X6,qg as X9,tg as v5,ug as X2}from"./vm-hands-entry-lite-8c6rvxbe.js";import{Cg as K9,Fg as B9,wg as J9,xg as Z9,yg as Q9}from"./vm-hands-entry-lite-2yt333v3.js";import{Og as $8,Vg as b7}from"./vm-hands-entry-lite-wtc8ebkr.js";import{_g as Y2}from"./vm-hands-entry-lite-kntkyezs.js";import{eh as u3,rh as N7}from"./vm-hands-entry-lite-0dr3sp75.js";import{Ni as p7,Oi as d7}from"./vm-hands-entry-lite-933zx1dx.js";import{$i as _1,_i as A1,aj as P1,bj as T1,cj as k0}from"./vm-hands-entry-lite-0mk8rxqv.js";import{vj as b1,wj as O7,xj as r4,yj as a4}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Aj as v3,Cj as B1,Ij as y8,Jj as k4}from"./vm-hands-entry-lite-arw53mkf.js";import{$j as r7,_j as n7,ak as a7,bk as i7,dk as o7,ek as t7,gk as e7,hk as $9}from"./vm-hands-entry-lite-qg11k3bf.js";import{sk as V}from"./vm-hands-entry-lite-ysk49bnz.js";import{Ck as z5,Dk as c4,Ik as H7,Jk as C7,Kk as D7,Lk as n4,Mk as l1}from"./vm-hands-entry-lite-rbjky7rd.js";import{Nk as T4}from"./vm-hands-entry-lite-b8bcnenf.js";import{Pk as H}from"./vm-hands-entry-lite-f28ehysx.js";import{Vk as g8}from"./vm-hands-entry-lite-c3e25cks.js";import{request as T9}from"http";import{request as R9}from"https";import{lookup as q9}from"dns/promises";import{isIP as g9}from"net";async function E9($){let J=new URL($.url);return await new Promise((Z,Q)=>{let K=(J.protocol==="https:"?R9:T9)(J,{method:"POST",headers:{...$.headers,"accept-encoding":"identity"},signal:$.signal,timeout:V4},(B)=>Z({response:B,close:()=>{B.destroy(),K.destroy(),B.socket?.destroy()}}));K.once("error",Q),K.once("timeout",()=>K.destroy(Object.assign(Error("custom_endpoint_timeout"),{code:"ETIMEDOUT"}))),K.end($.body)})}var F4=new Set(["ENOTFOUND","EAI_AGAIN","EAI_NONAME","EAI_NODATA","EAI_FAIL","DNSException"]),k9=new Set(["ECONNREFUSED","ETIMEDOUT","ECONNRESET","EHOSTUNREACH","ENETUNREACH","EHOSTDOWN","ENETDOWN","EPIPE","ECONNABORTED","EADDRNOTAVAIL","ConnectionRefused","ConnectionClosed","ConnectionTimedOut","Timeout"]);function Y4($,J=0){if(!$||typeof $!=="object"||J>3)return null;let Z=$.code;if(typeof Z==="string"){if(F4.has(Z))return"custom_endpoint_host_not_found";if(k9.has(Z))return"custom_endpoint_connection_failed";if(/^(?:ERR_TLS_|ERR_SSL_|CERT_|UNABLE_TO_(?:GET|VERIFY|DECRYPT)|DEPTH_ZERO_SELF_SIGNED|SELF_SIGNED_CERT|HOSTNAME_MISMATCH|EPROTO$)/.test(Z))return"custom_endpoint_tls_failed"}for(let Q of[...$ instanceof AggregateError?$.errors:[],$.cause]){let K=Y4(Q,J+1);if(K)return K}return null}async function S9($,J){let Z=Y4($),Q=new URL(J).hostname.replace(/^\[|\]$/g,"");if(Z!==null&&Z!=="custom_endpoint_connection_failed"||g9(Q)!==0)return Z;let K;return await Promise.race([q9(Q).then(()=>!0,(G)=>!F4.has(String(G?.code))),new Promise((G)=>{K=setTimeout(()=>G(!0),5000)})]).finally(()=>clearTimeout(K))?Z:"custom_endpoint_host_not_found"}function f9($){for(let J=42;;J++){if(J===127)J=256;let Z=String.fromCodePoint(J);if(!$.includes(Z))return Z}}function b9($,J){let Z=Buffer.from($),Q=Buffer.from(J),K=new Uint32Array(Z.length);for(let G=1,U=0;G<Z.length;G++){while(U&&Z[G]!==Z[U])U=K[U-1];if(Z[G]===Z[U])U++;K[G]=U}let B=0;return(G,U=!1)=>{let Y=Buffer.allocUnsafe(G.length*Q.length+B),F=0;for(let X of G){while(B&&Z[B]!==X){let W=K[B-1];F+=Z.copy(Y,F,0,B-W),B=W}if(Z[B]===X){if(B++,B===Z.length)F+=Q.copy(Y,F),B=0}else Y[F++]=X}if(U)F+=Z.copy(Y,F,0,B),B=0;return Y.subarray(0,F)}}async function W4($){$.signal.throwIfAborted();let J=X4.safeParse($.payload);if(!J.success)throw new H("custom_endpoint_invalid_request","Invalid local model request.");let Z=J.data,Q=U4.parse(await $.credential($.signal));if(!G4(Z,{baseUrl:Z.baseUrl,api:Q.api,execution:"device"}))throw new H("custom_endpoint_invalid_request","The request does not match the configured API.");$.signal.throwIfAborted();let K,B,G=0,U=0,Y=0,F=f9(Q.apiKey),X=b9(Q.apiKey,F),W=async(N,C)=>{$.signal.throwIfAborted(),await new Promise((M,w)=>{let D=()=>{$.signal.removeEventListener("abort",D),w($.signal.reason)};if($.signal.addEventListener("abort",D,{once:!0}),$.signal.aborted){D();return}Promise.resolve().then(()=>{return $.signal.throwIfAborted(),$.emit(N,C)}).then(()=>{$.signal.removeEventListener("abort",D),M()},(j)=>{$.signal.removeEventListener("abort",D),w(j)})})},z=async(N)=>{if(G+=N.length,G>C2)throw new H("custom_endpoint_response_too_large","Local model response exceeds the transport limit.");for(let C=0;C<N.length;C+=H2){if(Y>=B4)throw new H("custom_endpoint_response_too_large","Local model response exceeds the chunk limit.");await W(`custom_endpoint.chunk.${Y++}`,{eof:!1,data:N.subarray(C,C+H2).toString("base64")})}};try{let N=await E9({url:Z.url,body:Z.body,signal:$.signal,headers:{...Z.headers,...Q.api==="anthropic-messages"?{"x-api-key":Q.apiKey}:{authorization:`Bearer ${Q.apiKey}`}}});K=N.response,B=N.close;let C=K.statusCode??500;if(C>=300&&C<400)throw new H("custom_endpoint_redirect_refused","Local model redirects are not followed.");if(K.headers["content-encoding"]&&K.headers["content-encoding"]!=="identity")throw new H("custom_endpoint_encoding_unsupported","The local server must honor identity encoding.");let M={};for(let w of["content-type","retry-after","x-request-id","request-id"]){let D=K.headers[w];if(typeof D==="string")M[w]=D.replaceAll(Q.apiKey,F).slice(0,4096)}await W("custom_endpoint.headers",{status:C,statusText:(K.statusMessage??"").replaceAll(Q.apiKey,F).slice(0,256),headers:M});for await(let w of K){$.signal.throwIfAborted();let D=Buffer.isBuffer(w)?w:Buffer.from(w);if(U+=D.length,U>C2)throw new H("custom_endpoint_response_too_large","Local model response exceeds the transport limit.");await z(X(D))}return await z(X(Buffer.alloc(0),!0)),await W(`custom_endpoint.chunk.${Y}`,{eof:!0}),{bytes:G,chunks:Y}}catch(N){if($.signal.throwIfAborted(),N instanceof H)throw N;throw new H((K?null:await S9(N,Z.url))??"custom_endpoint_request_failed","The local model server could not complete the request.")}finally{B?.()}}import{join as z4}from"path";function x9($,J){return $===z4(J,".ara","workspace")||$===z4(J,".reason","workspace")}function N4($,J){let Z=$.filter((Q)=>x9(Q.path,J));return Z.length===1?Z[0].path:null}var y9=/^[a-f0-9]{64}$/;var D2=32,h9=/^\/[^\x00-\x1f\x7f\\]*$/;function L1($){if(typeof $!=="string"||$.length>4096||!h9.test($))return!1;if($==="/")return!0;return $.split("/").slice(1).every((J)=>J!==""&&J!=="."&&J!=="..")}function O1($,J){let Z=J==="win32"?/^([A-Za-z]):[\\/]*(.*)$/.exec($):null;if(!Z)return $;let Q=Z[2].split(/[\\/]+/).filter(Boolean).join("/");return`/${Z[1].toUpperCase()}:${Q?`/${Q}`:""}`}function I1($){if(!$||typeof $!=="object"||Array.isArray($))return;let J=$;if(!L1(J.home)||!Array.isArray(J.roots)||J.roots.length>D2)return;let Z=[];for(let Q of J.roots){if(!Q||typeof Q!=="object"||Array.isArray(Q))return;let{path_fingerprint:K,path:B}=Q;if(typeof K!=="string"||!y9.test(K)||!L1(B))return;Z.push({path_fingerprint:K,path:B})}return{home:J.home,roots:Z}}function m9($){let J=/^Reason contributor (rc_[0-9a-f]{32})$/.exec($.name)?.[1];return $.email.toLowerCase()==="343777287+reason-contributors@users.noreply.github.com"&&J?J:void 0}function v9($){return m9($)??$.email.toLowerCase()}function w2($){let J=/^Co-authored-by:\s*([^<>\r\n]+) <([^<>\s]+)>$/i.exec($.trim());return J?v9({name:J[1],email:J[2]}):$.trim().toLowerCase()}var r0=($)=>$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/[a-z]/gi,(J)=>`[${J.toLowerCase()}${J.toUpperCase()}]`),u9=[...A1.map(($)=>`/(${$.map(r0).join("/")})(/|$)`),..._1.map(($)=>`/(${$.map(r0).join("/")})(/|$)`),...[...P1].map(($)=>`/(${r0($)})$`),`/${r0(".env.")}[^/]*$`,...T1.map(($)=>`/[^/]*${r0($)}$`)],H4=`function localGithubSandboxProfile(root, temporary) {
3
3
  return ['(version 1)','(deny default)','(import "system.sb")','(allow process-exec process-fork)',
4
4
  '(allow file-read* (subpath "/bin") (subpath "/sbin") (subpath "/usr/bin") (subpath "/usr/sbin") (subpath "/usr/libexec") (subpath "/usr/share") (subpath "/private/var/select") (literal "/private/var/db/xcode_select_link"))',
5
5
  '(allow file-read-metadata (path-ancestors "/opt/homebrew/bin") (path-ancestors "/usr/local/bin") (path-ancestors "/Library/Developer/CommandLineTools"))',
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Ud as ae,Wd as ne}from"./vm-hands-entry-lite-kaht6v11.js";import{Ef as be}from"./vm-hands-entry-lite-afjzr3v2.js";import{ag as C,bg as ie,dg as M,eg as Oe,hg as Y,ig as z,jg as v,sg as O,tg as Be}from"./vm-hands-entry-lite-0badx5n8.js";import{_g as Se}from"./vm-hands-entry-lite-kntkyezs.js";import{Pi as se}from"./vm-hands-entry-lite-nhhpc9n2.js";import{pj as J}from"./vm-hands-entry-lite-gp85aqkt.js";import{vj as x}from"./vm-hands-entry-lite-wsnr4fx8.js";import{mk as Ne,nk as oe}from"./vm-hands-entry-lite-qg11k3bf.js";import{tk as ye,zk as Ie}from"./vm-hands-entry-lite-dj65hfea.js";import{Gk as xe}from"./vm-hands-entry-lite-rbjky7rd.js";import{Pk as p}from"./vm-hands-entry-lite-f28ehysx.js";import{spawn as S,spawnSync as pt}from"child_process";import{createHash as ft,randomUUID as Te}from"crypto";import{closeSync as mt,copyFileSync as de,existsSync as q,fstatSync as _t,mkdirSync as pe,openSync as ht,readdirSync as D,readFileSync as j,readlinkSync as wt,renameSync as ve,rmSync as gt,statSync as bt,writeFileSync as xt}from"fs";import{connect as St}from"net";import{tmpdir as F,userInfo as Re}from"os";import{basename as fe,delimiter as yt,dirname as B,join as f}from"path";var Z=`import { spawn, execFileSync } from "node:child_process";
2
+ import{Ud as ae,Wd as ne}from"./vm-hands-entry-lite-xstx7r49.js";import{Ef as be}from"./vm-hands-entry-lite-afjzr3v2.js";import{ag as C,bg as ie,dg as M,eg as Oe,hg as Y,ig as z,jg as v,sg as O,tg as Be}from"./vm-hands-entry-lite-8c6rvxbe.js";import{_g as Se}from"./vm-hands-entry-lite-kntkyezs.js";import{Pi as se}from"./vm-hands-entry-lite-933zx1dx.js";import{pj as J}from"./vm-hands-entry-lite-yw74rzzs.js";import{vj as x}from"./vm-hands-entry-lite-wsnr4fx8.js";import{mk as Ne,nk as oe}from"./vm-hands-entry-lite-qg11k3bf.js";import{tk as ye,zk as Ie}from"./vm-hands-entry-lite-dj65hfea.js";import{Gk as xe}from"./vm-hands-entry-lite-rbjky7rd.js";import{Pk as p}from"./vm-hands-entry-lite-f28ehysx.js";import{spawn as S,spawnSync as pt}from"child_process";import{createHash as ft,randomUUID as Te}from"crypto";import{closeSync as mt,copyFileSync as de,existsSync as q,fstatSync as _t,mkdirSync as pe,openSync as ht,readdirSync as D,readFileSync as j,readlinkSync as wt,renameSync as ve,rmSync as gt,statSync as bt,writeFileSync as xt}from"fs";import{connect as St}from"net";import{tmpdir as F,userInfo as Re}from"os";import{basename as fe,delimiter as yt,dirname as B,join as f}from"path";var Z=`import { spawn, execFileSync } from "node:child_process";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import { readFileSync, readlinkSync, lstatSync, realpathSync, statSync, mkdtempSync, mkdirSync, chmodSync, writeFileSync, readdirSync, rmSync, openSync, readSync, closeSync, renameSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{pe as Qz,te as Zz,ve as R,ye as $z}from"./vm-hands-entry-lite-x0x1t6gp.js";import{vi as zz}from"./vm-hands-entry-lite-caxtg4j7.js";import{Li as e}from"./vm-hands-entry-lite-26d4ttdx.js";import{dj as Hz,sj as V,uj as Jz}from"./vm-hands-entry-lite-gp85aqkt.js";import{Gk as X}from"./vm-hands-entry-lite-rbjky7rd.js";import{spawnSync as C}from"child_process";import{createHash as Iz,randomUUID as Wz}from"crypto";import{chmodSync as bz,existsSync as y,mkdirSync as Sz,readdirSync as wz,readFileSync as L,renameSync as _z,rmSync as Y,statSync as xz,writeFileSync as Rz}from"fs";import{dirname as yz,isAbsolute as Bz,join as N}from"path";import{spawnSync as Oz}from"child_process";import{readFileSync as Cz}from"fs";import{userInfo as v}from"os";import{join as Kz}from"path";var Vz="REASON_SCHEDULED_TASK";function l(H){return Kz(H,"AppData","Local","Reason","Tasks")}function A(H){if(/[\0-\x1f\x7f"%]/.test(H))throw Error(`A background task cannot use a value with a double quote, percent sign or control character: ${H}`);return`'${H.replace(/['\u2018\u2019\u201a\u201b]/g,"$&$&")}'`}function a(H){if(!/^[A-Za-z0-9._-]+$/.test(H))throw Error(`Invalid Windows Scheduled Task name: ${H}`);return`$env:${Vz}=${A(H)};`}function c(H){let z=Object.entries(H.environment).map(([Q,Z])=>{if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(Q))throw Error(`Invalid Windows Scheduled Task environment name: ${Q}`);return`$env:${Q}=${A(Z)};`}),J=`$global:LASTEXITCODE=1; & ${[H.program,...H.args].map(A).join(" ")} 2>&1 | ForEach-Object { Add-Content -LiteralPath ${A(H.log)} -Value $_.ToString() -Encoding UTF8 }; $c=$LASTEXITCODE;`;return[a(H.name),...z,"$ErrorActionPreference='Continue';",H.keepAlive?`do { ${J} if ($c) { Start-Sleep -Seconds 10 } } while ($c)`:`${J} exit $c`].join(" ")}function S(H){return H.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&apos;")}function Pz(){let H=process.env.USERDOMAIN?.trim();return H?`${H}\\${v().username}`:v().username}function h(H){let z=S(H.user??Pz()),J=H.schedule==="logon",Q=H.schedule==="logon"?`<LogonTrigger><Enabled>true</Enabled><UserId>${z}</UserId></LogonTrigger>`:`<TimeTrigger><Repetition><Interval>PT${H.schedule.everyMinutes}M</Interval><StopAtDurationEnd>false</StopAtDurationEnd></Repetition><StartBoundary>2026-01-01T00:00:00</StartBoundary><Enabled>true</Enabled></TimeTrigger>`,Z=`-NoProfile -NonInteractive -ExecutionPolicy Bypass -WindowStyle Hidden -Command "${H.script}"`;return`<?xml version="1.0" encoding="UTF-16"?>
2
+ import{pe as Qz,te as Zz,ve as R,ye as $z}from"./vm-hands-entry-lite-x0x1t6gp.js";import{vi as zz}from"./vm-hands-entry-lite-caxtg4j7.js";import{Li as e}from"./vm-hands-entry-lite-26d4ttdx.js";import{dj as Hz,sj as V,uj as Jz}from"./vm-hands-entry-lite-yw74rzzs.js";import{Gk as X}from"./vm-hands-entry-lite-rbjky7rd.js";import{spawnSync as C}from"child_process";import{createHash as Iz,randomUUID as Wz}from"crypto";import{chmodSync as bz,existsSync as y,mkdirSync as Sz,readdirSync as wz,readFileSync as L,renameSync as _z,rmSync as Y,statSync as xz,writeFileSync as Rz}from"fs";import{dirname as yz,isAbsolute as Bz,join as N}from"path";import{spawnSync as Oz}from"child_process";import{readFileSync as Cz}from"fs";import{userInfo as v}from"os";import{join as Kz}from"path";var Vz="REASON_SCHEDULED_TASK";function l(H){return Kz(H,"AppData","Local","Reason","Tasks")}function A(H){if(/[\0-\x1f\x7f"%]/.test(H))throw Error(`A background task cannot use a value with a double quote, percent sign or control character: ${H}`);return`'${H.replace(/['\u2018\u2019\u201a\u201b]/g,"$&$&")}'`}function a(H){if(!/^[A-Za-z0-9._-]+$/.test(H))throw Error(`Invalid Windows Scheduled Task name: ${H}`);return`$env:${Vz}=${A(H)};`}function c(H){let z=Object.entries(H.environment).map(([Q,Z])=>{if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(Q))throw Error(`Invalid Windows Scheduled Task environment name: ${Q}`);return`$env:${Q}=${A(Z)};`}),J=`$global:LASTEXITCODE=1; & ${[H.program,...H.args].map(A).join(" ")} 2>&1 | ForEach-Object { Add-Content -LiteralPath ${A(H.log)} -Value $_.ToString() -Encoding UTF8 }; $c=$LASTEXITCODE;`;return[a(H.name),...z,"$ErrorActionPreference='Continue';",H.keepAlive?`do { ${J} if ($c) { Start-Sleep -Seconds 10 } } while ($c)`:`${J} exit $c`].join(" ")}function S(H){return H.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&apos;")}function Pz(){let H=process.env.USERDOMAIN?.trim();return H?`${H}\\${v().username}`:v().username}function h(H){let z=S(H.user??Pz()),J=H.schedule==="logon",Q=H.schedule==="logon"?`<LogonTrigger><Enabled>true</Enabled><UserId>${z}</UserId></LogonTrigger>`:`<TimeTrigger><Repetition><Interval>PT${H.schedule.everyMinutes}M</Interval><StopAtDurationEnd>false</StopAtDurationEnd></Repetition><StartBoundary>2026-01-01T00:00:00</StartBoundary><Enabled>true</Enabled></TimeTrigger>`,Z=`-NoProfile -NonInteractive -ExecutionPolicy Bypass -WindowStyle Hidden -Command "${H.script}"`;return`<?xml version="1.0" encoding="UTF-16"?>
3
3
  <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
4
4
  <RegistrationInfo>
5
5
  <Description>${S(H.description)}</Description>
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{vj as w}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Vj as h}from"./vm-hands-entry-lite-gbf8h13w.js";import{randomUUID as d}from"crypto";import{spawnSync as F}from"child_process";import{chmodSync as Kj,cpSync as Nj,existsSync as I,lstatSync as H,mkdirSync as s,readdirSync as Qj,readFileSync as S,readlinkSync as Uj,realpathSync as B,renameSync as A,rmdirSync as Vj,rmSync as D,symlinkSync as y,writeFileSync as Wj}from"fs";import{dirname as G,join as V,relative as Xj,resolve as Yj}from"path";var Zj="so.ara.cli",E=[Zj,"com.reasonmachines.cli"],m="5LJFSBRY2F";function u(j){return`(${j.map((z)=>`identifier "${z}"`).join(" or ")}) and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists and certificate leaf[field.1.2.840.113635.100.6.1.13] exists and certificate leaf[subject.OU] = "${m}"`}var $j="Background/Reason.app",l="ReasonBackgroundIdentity",yj="Contents/Helpers/ReasonPermissionTile",wj="so.ara.cli.permission-tile",xj=u([wj,"com.reasonmachines.cli.permission-tile"]),k="AraBackgroundIdentity",Dj="Reason",gj=u(E),Pj=`anchor apple generic and (${E.map((j)=>`identifier "${j}"`).join(" or ")}) and certificate leaf[subject.OU] = "${m}"`;class C extends Error{code;constructor(j,z){super(z);this.code=j;this.name="MacOSBackgroundIdentityError"}}var M="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister";function L(j=w()){return V(j,"Library","Application Support","Reason","Background","Reason.app")}function O(j=w()){return V(j,"Library","Application Support","Ara","Background","Ara.app")}function bj(j=process.execPath){return V(G(B(j)),$j)}function qj(j){try{return H(j).isFile()}catch{return!1}}function f(j){return[l,k].map((z)=>V(j,"Contents","MacOS",z)).find(qj)??null}function Y(j){try{if(!H(j).isDirectory())return!1;let z=S(V(j,"Contents","Info.plist"),"utf8");return E.some((J)=>z.includes(`<string>${J}</string>`))&&(z.includes(`<string>${Dj}</string>`)||z.includes("<string>Ara</string>"))&&f(j)!==null}catch{return!1}}function c(j=w()){let z=L(j);if(!Y(z))return null;try{let J=S(V(z,"Contents","Info.plist"),"utf8");return/<key>CFBundleVersion<\/key>\s*<string>(\d+\.\d+\.\d+)<\/string>/.exec(J)?.[1]??null}catch{return null}}function Aj(j,z=w()){let J=c(z);return J===null||t(v(J.split(".")),v(j.split(/[.-]/).slice(0,3)))}var Gj=1e4;function i(j,z){return F(j,[...z],{stdio:"ignore",timeout:Gj}).status??1}var o=new Set;function r(j){if(process.env.REASON_TEST_REFUSE_REAL_IDENTITY!=="1")return;let z=(J)=>{try{return B(J)}catch{return Yj(J)}};if(j!==void 0&&z(j)!==z(w()))return;throw Error("A test tried to change this computer's real Reason background identity; pass a temporary home. Refused by scripts/test-env.ts.")}var n=/\/(?:runtime|CLI)\/versions\/(\d+)\.(\d+)\.(\d+)[^/]*\/[^/]+$|\/\.(?:ara|reason)(?:-staging)?-worker-(\d+)\.(\d+)\.(\d+)[^/]*\/[^/]+$/,p=new Set(["ara","ara.exe","reason","reason.exe"]);function v(j){return j.map((z)=>Number(z))}function t(j,z){for(let J=0;J<3;J+=1)if(j[J]!==z[J])return j[J]<z[J];return!1}var Lj=[0,2,161];function Tj(j){if(j===null)return!0;let z=Lj,J=null;try{J=B(process.execPath)}catch{}return j.some((K)=>{let N=n.exec(K);if(N){let Z=N[1]===void 0?N.slice(4,7):N.slice(1,4);return t(v(Z),z)}let Q=K.slice(K.lastIndexOf("/")+1);return p.has(Q)&&K!==J&&K!==process.execPath})}function _j(){let j=F("/bin/ps",["-xo","pid=,comm="],{encoding:"utf8",timeout:5000});if(j.status!==0)return null;let z=[];for(let J of j.stdout.split(`
2
+ import{vj as w}from"./vm-hands-entry-lite-wsnr4fx8.js";import{Vj as h}from"./vm-hands-entry-lite-aww3tkxa.js";import{randomUUID as d}from"crypto";import{spawnSync as F}from"child_process";import{chmodSync as Kj,cpSync as Nj,existsSync as I,lstatSync as H,mkdirSync as s,readdirSync as Qj,readFileSync as S,readlinkSync as Uj,realpathSync as B,renameSync as A,rmdirSync as Vj,rmSync as D,symlinkSync as y,writeFileSync as Wj}from"fs";import{dirname as G,join as V,relative as Xj,resolve as Yj}from"path";var Zj="so.ara.cli",E=[Zj,"com.reasonmachines.cli"],m="5LJFSBRY2F";function u(j){return`(${j.map((z)=>`identifier "${z}"`).join(" or ")}) and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists and certificate leaf[field.1.2.840.113635.100.6.1.13] exists and certificate leaf[subject.OU] = "${m}"`}var $j="Background/Reason.app",l="ReasonBackgroundIdentity",yj="Contents/Helpers/ReasonPermissionTile",wj="so.ara.cli.permission-tile",xj=u([wj,"com.reasonmachines.cli.permission-tile"]),k="AraBackgroundIdentity",Dj="Reason",gj=u(E),Pj=`anchor apple generic and (${E.map((j)=>`identifier "${j}"`).join(" or ")}) and certificate leaf[subject.OU] = "${m}"`;class C extends Error{code;constructor(j,z){super(z);this.code=j;this.name="MacOSBackgroundIdentityError"}}var M="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister";function L(j=w()){return V(j,"Library","Application Support","Reason","Background","Reason.app")}function O(j=w()){return V(j,"Library","Application Support","Ara","Background","Ara.app")}function bj(j=process.execPath){return V(G(B(j)),$j)}function qj(j){try{return H(j).isFile()}catch{return!1}}function f(j){return[l,k].map((z)=>V(j,"Contents","MacOS",z)).find(qj)??null}function Y(j){try{if(!H(j).isDirectory())return!1;let z=S(V(j,"Contents","Info.plist"),"utf8");return E.some((J)=>z.includes(`<string>${J}</string>`))&&(z.includes(`<string>${Dj}</string>`)||z.includes("<string>Ara</string>"))&&f(j)!==null}catch{return!1}}function c(j=w()){let z=L(j);if(!Y(z))return null;try{let J=S(V(z,"Contents","Info.plist"),"utf8");return/<key>CFBundleVersion<\/key>\s*<string>(\d+\.\d+\.\d+)<\/string>/.exec(J)?.[1]??null}catch{return null}}function Aj(j,z=w()){let J=c(z);return J===null||t(v(J.split(".")),v(j.split(/[.-]/).slice(0,3)))}var Gj=1e4;function i(j,z){return F(j,[...z],{stdio:"ignore",timeout:Gj}).status??1}var o=new Set;function r(j){if(process.env.REASON_TEST_REFUSE_REAL_IDENTITY!=="1")return;let z=(J)=>{try{return B(J)}catch{return Yj(J)}};if(j!==void 0&&z(j)!==z(w()))return;throw Error("A test tried to change this computer's real Reason background identity; pass a temporary home. Refused by scripts/test-env.ts.")}var n=/\/(?:runtime|CLI)\/versions\/(\d+)\.(\d+)\.(\d+)[^/]*\/[^/]+$|\/\.(?:ara|reason)(?:-staging)?-worker-(\d+)\.(\d+)\.(\d+)[^/]*\/[^/]+$/,p=new Set(["ara","ara.exe","reason","reason.exe"]);function v(j){return j.map((z)=>Number(z))}function t(j,z){for(let J=0;J<3;J+=1)if(j[J]!==z[J])return j[J]<z[J];return!1}var Lj=[0,2,161];function Tj(j){if(j===null)return!0;let z=Lj,J=null;try{J=B(process.execPath)}catch{}return j.some((K)=>{let N=n.exec(K);if(N){let Z=N[1]===void 0?N.slice(4,7):N.slice(1,4);return t(v(Z),z)}let Q=K.slice(K.lastIndexOf("/")+1);return p.has(Q)&&K!==J&&K!==process.execPath})}function _j(){let j=F("/bin/ps",["-xo","pid=,comm="],{encoding:"utf8",timeout:5000});if(j.status!==0)return null;let z=[];for(let J of j.stdout.split(`
3
3
  `)){let K=/^\s*(\d+)\s+(\S.*)$/.exec(J);if(!K||Number(K[1])===process.pid)continue;let N=K[2].trimEnd(),Q=N.slice(N.lastIndexOf("/")+1);if(!n.test(N)&&p.has(Q)){let W=F("/usr/sbin/lsof",["-a","-p",K[1],"-d","txt","-Fn"],{encoding:"utf8",timeout:5000}).stdout?.split(`
4
4
  `).find((X)=>X.startsWith("n/"));if(W)N=W.slice(1)}z.push(N)}return z}function Cj(j){if(r(j.home),!Y(j.sourceApp))throw new C("identity_invalid","The packaged Reason background identity is missing or invalid.");let z=j.command??i,J=L(j.home),K=G(J);s(K,{recursive:!0,mode:448}),Kj(K,448);let N=B(j.sourceApp),Q=null;try{Q=B(J)}catch{}if(N!==Q){let Z=`${process.pid}.${d()}`,W=V(K,`.Reason.app.${Z}.tmp`),X=V(K,`.Reason.app.${Z}.old`),P=!1;try{if(Nj(N,W,{recursive:!0,errorOnExist:!0,preserveTimestamps:!0}),!Y(W))throw new C("identity_invalid","The copied Reason background identity is invalid.");let T=j.releaseSigned?["--test-requirement",`=${Pj}`]:[];if(z("/usr/bin/codesign",["--verify","--strict",...T,W])!==0)throw new C("identity_invalid_signature","The installed Reason background identity has an invalid signature.");let _=!1;for(let $=0;$<4;$+=1){let q=!1;try{A(J,X),q=!0,P=!0}catch(U){if(U.code!=="ENOENT")throw U}if($===0)j.beforePublish?.();try{A(W,J),_=!0}catch(U){let Jj=U.code;if(!["EEXIST","ENOTEMPTY"].includes(Jj??""))throw U;if(q)D(X,{recursive:!0,force:!0}),P=!1;if($===3)throw U;continue}if(q)D(X,{recursive:!0,force:!0}),P=!1;break}if(!_)throw Error("Could not publish Reason's background identity.")}catch(T){if(P&&!I(J)&&I(X))A(X,J);throw T}finally{D(W,{recursive:!0,force:!0}),D(X,{recursive:!0,force:!0})}}return zj(J,j,{verified:N!==Q}),J}function a(j){return V(G(j),".Reason.app.registered")}function e(j){try{let z=H(j);return z.isDirectory()?`${z.ino}:${z.birthtimeMs}`:null}catch{return null}}function R(j){let z=e(j);try{return z!==null&&S(a(j),"utf8")===z}catch{return!1}}function jj(j){if(Y(j))return"bundle";try{if(H(V(j,"Contents","Info.plist"),{throwIfNoEntry:!1}))return null;return H(V(j,"Contents","MacOS",k)).isSymbolicLink()?"retired":null}catch{return null}}function zj(j,z,J={}){let K=z.command??i;if(!J.verified&&K("/usr/bin/codesign",["--verify","--strict",j])!==0)throw new C("identity_invalid_signature","The installed Reason background identity has an invalid signature.");if(K(M,["-f",j])!==0)throw new C("identity_register_failed","Could not register Reason's macOS background identity.");let N=e(j);try{if(N)Wj(a(j),N,{mode:384})}catch{}try{Fj(j,z.home,K,z.runningExecutables??_j)}catch(Q){let Z=Q.code??"unknown";process.stderr.write(`Reason background identity: legacy_identity_retire_failed (${Z})
5
5
  `)}}function Fj(j,z,J,K){let N=f(j);if(!N)return;let Q=O(z),Z=G(Q),W=(U)=>V(U,"Contents","MacOS",k),X=Xj(G(W(Q)),N),P=`${process.pid}.${d()}`,T=jj(Q);if(T===null)return;let _=T==="bundle";if(_)J(M,["-u",Q]);let $=V(Z,`.Ara.app.${P}.old`);if(!o.has(Q)&&!Tj(K())){if(!_)J(M,["-u",Q]);try{A(Q,$)}catch(U){if(U.code==="ENOENT")return;throw U}D($,{recursive:!0,force:!0}),Hj(Z);return}if(!_){if(Uj(W(Q))===X)return;let U=`${W(Q)}.${P}`;y(X,U);try{A(U,W(Q))}finally{D(U,{force:!0})}return}let q=V(Z,`.Ara.app.${P}.shim`);s(G(W(q)),{recursive:!0}),y(X,W(q));try{try{A(Q,$)}catch(U){if(U.code==="ENOENT")return;throw U}try{A(q,Q)}catch(U){if(I(Q))return;throw A($,Q),U}}finally{D(q,{recursive:!0,force:!0}),D($,{recursive:!0,force:!0})}}function Hj(j){try{if(Qj(j).some((J)=>J!==".DS_Store"))return;D(V(j,".DS_Store"),{force:!0}),Vj(j)}catch{}}var x=new Map;function Bj(j=w()){let z=x.get(j);if(z)return z;if(process.platform!=="darwin")return[];let J=g(j);if(J===null&&I(G(L(j))))Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,100),J=g(j);if(J===null)return[];return x.set(j,J),J}function g(j){let z=L(j),J=O(j);if(!Y(z)||!R(z))try{Oj({home:j,skipWhenSettled:!0})}catch{}let K=Y(z)&&(R(z)||!Y(J))?z:Y(J)?J:null,N=K?f(K):null;if(!N)return null;if(K===J)o.add(J);let Q=F(N,["--can-spawn"],{env:{},timeout:2000,encoding:"utf8"});return Q.status===0&&Q.stdout===`spawn
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import"./vm-hands-entry-lite-nnrypv7q.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-ysk49bnz.js";import{Vk as A}from"./vm-hands-entry-lite-c3e25cks.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-zr3ajywy.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-p24enq6p.js"),z=B(b);if(!z)q("identity_invalid"),await new Promise(()=>{setInterval(()=>{return},1073741824)});await C(z,q),process.exit(0)}K();
2
+ import"./vm-hands-entry-lite-nnrypv7q.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-ysk49bnz.js";import{Vk as A}from"./vm-hands-entry-lite-c3e25cks.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-zte992qs.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-5tj6cfks.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{s as wq}from"./vm-hands-entry-lite-apwve08w.js";import{Ob as Nq,sc as Aq,yb as jq,yc as Rq}from"./vm-hands-entry-lite-2grs67fz.js";import"./vm-hands-entry-lite-400hmvkg.js";import"./vm-hands-entry-lite-k9amte6k.js";import"./vm-hands-entry-lite-wts79wdn.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-b3jmyabq.js";import"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.js";import{spawn as gq}from"child_process";import{chmodSync as Sq,chownSync as Eq,existsSync as l,lstatSync as e,mkdirSync as r,mkdtempSync as yq,readdirSync as s,readFileSync as I,realpathSync as mq,rmdirSync as qq,rmSync as uq,writeFileSync as y}from"fs";import{join as L}from"path";import{readFileSync as Wq,readlinkSync as Gq}from"fs";import{relative as _q}from"path";var Jq=16;function Yq(X){return X.replace(/\\([0-7]{3})/g,($,W)=>String.fromCharCode(Number.parseInt(W,8)))}function hq(X){let $=[];for(let W of X.split(`
2
+ import{s as wq}from"./vm-hands-entry-lite-knb6bj3p.js";import{Ob as Nq,sc as Aq,yb as jq,yc as Rq}from"./vm-hands-entry-lite-1xmf8aps.js";import"./vm-hands-entry-lite-400hmvkg.js";import"./vm-hands-entry-lite-k9amte6k.js";import"./vm-hands-entry-lite-wts79wdn.js";import"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-wtc8ebkr.js";import"./vm-hands-entry-lite-kntkyezs.js";import"./vm-hands-entry-lite-8v6qhfxc.js";import"./vm-hands-entry-lite-0dr3sp75.js";import"./vm-hands-entry-lite-399rn7a2.js";import"./vm-hands-entry-lite-caxtg4j7.js";import"./vm-hands-entry-lite-26d4ttdx.js";import"./vm-hands-entry-lite-0mk8rxqv.js";import"./vm-hands-entry-lite-wsnr4fx8.js";import"./vm-hands-entry-lite-arw53mkf.js";import"./vm-hands-entry-lite-bhtafden.js";import"./vm-hands-entry-lite-ysk49bnz.js";import"./vm-hands-entry-lite-dj65hfea.js";import"./vm-hands-entry-lite-rbjky7rd.js";import"./vm-hands-entry-lite-b8bcnenf.js";import"./vm-hands-entry-lite-x96qadgp.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.js";import{spawn as gq}from"child_process";import{chmodSync as Sq,chownSync as Eq,existsSync as l,lstatSync as e,mkdirSync as r,mkdtempSync as yq,readdirSync as s,readFileSync as I,realpathSync as mq,rmdirSync as qq,rmSync as uq,writeFileSync as y}from"fs";import{join as L}from"path";import{readFileSync as Wq,readlinkSync as Gq}from"fs";import{relative as _q}from"path";var Jq=16;function Yq(X){return X.replace(/\\([0-7]{3})/g,($,W)=>String.fromCharCode(Number.parseInt(W,8)))}function hq(X){let $=[];for(let W of X.split(`
3
3
  `)){let q=W.split(" ");if(q.length<10||!/^\d+:\d+$/.test(q[2]))continue;$.push({device:q[2],root:Yq(q[3]),mountPoint:Yq(q[4])})}return $}function kq(X,$,W){let q=X.replace(/\/+$/,"")||"/",J=(F)=>q==="/"||F===q||F.startsWith(`${q}/`),G=(F)=>new Map(hq(F).filter((R)=>J(R.mountPoint)).map((R)=>[`${R.mountPoint}\x00${R.device}\x00${R.root}`,R.mountPoint])),Y=G($),A=G(W),j=(F)=>_q(q,F)||".",f=[...Y].filter(([F])=>!A.has(F)).map(([,F])=>j(F)),O=[...A].filter(([F])=>!Y.has(F)).map(([,F])=>j(F));return{missing:f,extra:O,referenceCount:Y.size,ownCount:A.size}}function Kq(X,$,W,q="/proc"){let J,G,Y=null;try{J=Wq(`${q}/1/mountinfo`,"utf8"),G=Wq(`${q}/self/mountinfo`,"utf8")}catch(R){let v=R&&typeof R==="object"&&"code"in R&&typeof R.code==="string"?R.code:"unreadable";$("vm_hands.mount_check_unavailable",{code:v});return}try{Y=Gq(`${q}/1/ns/mnt`)===Gq(`${q}/self/ns/mnt`)}catch{}let{missing:A,extra:j,referenceCount:f,ownCount:O}=kq(X,J,G),F={reference_count:f,own_count:O,missing_count:A.length,extra_count:j.length,same_namespace:Y};if(j.length)$("vm_hands.mount_extra",{...F,extra:j.slice(0,Jq)});if(A.length)throw $("vm_hands.mount_mismatch",{...F,missing:A.slice(0,Jq)}),W(`${A.length} mount(s) under the Session root are missing from vm-hands' namespace`)}var Pq="/sys/fs/cgroup/reason-payload",H="vm-hands",lq="/run/ara-srt/fallbacks.jsonl",E="/reason-person",Xq=5000,cq=1e4,Bq="__VM_HANDS_PROOF_DIR__",pq="__VM_HANDS_PROBE_NONCE__";class D extends Error{code;constructor(X,$){super($);this.code=X}}function aq(X,$){if(!/^[0-9a-f-]{36}$/i.test($))throw new D("vm_hands_bind_invalid","bad bind id");return L(X,H,`b-${$.toLowerCase()}`)}var tq=5000,Iq=(X)=>`'${X.replaceAll("'","'\\''")}'`;function JX(X){let $=X.cgroup??Pq,W=X.init.layout.payload_uid,q=X.log??(()=>{}),J=new Map,G=new Map,Y=0,A=()=>{try{let Z=I("/run/ara-srt/starts.jsonl","utf8"),z=Z.slice(Y>Z.length?0:Y).split(`
4
4
  `).filter(Boolean);Y=Z.length;let K=z.map((U)=>{try{return Number(JSON.parse(U).elapsed_ms)||0}catch{return 0}});if(K.length)q("vm_hands.srt_server_starts",{count:K.length,elapsed_ms:K.slice(0,8)})}catch{}},j=null,f=!1,O=X.srtCgroup??"/sys/fs/cgroup/reason-srt",F=()=>{j??=Uq()},R=0,v=()=>{try{let Z=I(lq,"utf8"),z=Z.slice(R>Z.length?0:R);R=Z.length;let K=z.split(`
5
5
  `).filter(Boolean).slice(0,1000);if(!K.length)return null;let U={},T=0;for(let N of K)try{let M=JSON.parse(N),B=typeof M.code==="string"&&/^[a-z_]{1,40}$/.test(M.code)?M.code:"other";if(U[B]=(U[B]??0)+1,typeof M.elapsed_ms==="number")T=Math.max(T,M.elapsed_ms)}catch{U.unparsed=(U.unparsed??0)+1}return q("vm_hands.srt_fallbacks",{count:K.length,codes:U,max_elapsed_ms:T}),{count:K.length,codes:U,max_elapsed_ms:T}}catch{return null}},P=!1,m=(Z,z,K)=>{if(P)throw Error("vm_hands_pool_held");return vq(Z,z,K)},i=(Z)=>(z,K,U)=>gq("/bin/sh",["-c",`echo $$ > ${Iq(L(Z,"cgroup.procs"))} || exit 125; exec "$@"`,"vm-hands-join",z,...K],U),vq=i(L($,H)),u=L($,H,"probe"),g=(Z)=>aq($,Z),bq=(Z)=>{let z=g(Z);try{r(z,{mode:493})}catch(K){if(!(K&&typeof K==="object"&&("code"in K)&&K.code==="EEXIST"))throw new D("vm_hands_bind_failed","bind cgroup")}return z},xq=(Z)=>{try{qq(g(Z))}catch{}},x=X.prespawn?Nq({spawnProcess:m,...X.relayDependencies?.sourceEntrypoint?{sourceEntrypoint:X.relayDependencies.sourceEntrypoint}:{},log:(Z,z)=>q(Z,z??{})}):null;x?.arm();let n=x?setInterval(()=>{x.arm()},tq):null;n?.unref?.();async function c(Z){let z=J.get(Z);if(J.delete(Z),!z)return;z.abort.abort(),await z.done}return{bindCgroup:g,async startExecutor(Z){if(F(),G.set(Z.bindId,Uq()),f=!0,!Z.claim)throw new D("vm_hands_bind_invalid","an executor needs the claim it serves");await c(Z.bindId);let{claim:z,bindId:K}=Z,U=bq(K),T=z.owner;if(!T||typeof T.device_id!=="string"||typeof z.root_id!=="string")throw new D("vm_hands_bind_invalid","claim without its owner Device or root");let N=new AbortController,M,B,V=new Promise((Q,w)=>{M=Q,B=w}),_,C=new Promise((Q)=>{_=Q}),S=Rq({headless:!0,hostExecution:!0,runtimeDirectory:X.runtimeDirectory,deviceIdentity:{deviceId:T.device_id,rootId:z.root_id,apiOrigin:X.apiOrigin},claimOwner:z.owner,root:X.root,runId:z.run_id,operationId:z.operation_id,attemptId:z.attempt_id,payload:Object.fromEntries(Object.entries(z.payload).filter(([Q])=>!Q.startsWith("vm_hands_"))),signal:N.signal,...Z.workspaceGrant?{workspaceGrant:Z.workspaceGrant}:{},emitEvent:async(Q,w)=>{if(Q==="hands.ready"){M(w);return}if(Q==="hands.started"||Q==="hands.stopped"||Q==="hands.failed")return;await X.forward(K,Q,w)}},{...X.relayDependencies,spawnWorker:(Q)=>i(U)(Q.command,Q.args,Q.options),...x?{takePrespawnedWorker:(Q)=>{let w=x.take(Q);if(!w?.pid)return w;try{return y(L(U,"cgroup.procs"),String(w.pid)),w}catch{try{w.kill("SIGKILL")}catch{}return null}},adoptSpawnedWorker:x.adopt}:{}}).then(()=>{_("executor_stopped")},(Q)=>{let w=Q&&typeof Q==="object"&&"code"in Q?String(Q.code):"executor_failed";B(new D(w,Q instanceof Error?Q.message:String(Q))),_(w)}).finally(()=>B(new D("vm_hands_executor_exited","executor ended before it was ready")));J.set(K,{abort:N,done:S,exited:C,operationId:z.operation_id,runId:z.run_id,expiresAtMs:Date.parse(String(z.payload.expires_at??""))||0});let h=await V,p=h.executor_launch_id;if(typeof p!=="string")throw new D("vm_hands_bind_failed","executor ready without a launch id");return{launchId:p,readyData:h,applied:{hands_confinement:typeof z.payload.hands_confinement==="string"?z.payload.hands_confinement:null,browser_egress:z.payload.browser_egress??null}}},takeSrtFallbacks:v,executorExited(Z){return J.get(Z)?.exited??new Promise(()=>{})},freezeBind(Z){let z=g(Z);if(l(L(z,"cgroup.freeze")))y(L(z,"cgroup.freeze"),"1")},async killAndVerifyPayload(Z){let z=new Set(Z?.keep??[]);if(z.size||Z?.own)return Hq(Z?.bindId??null,z,Z?.own===!0);P=!0;let K=Tq();try{await Mq();let U=Promise.all([...J.keys()].map((B)=>c(B).catch(()=>{return})));A();let T=Date.now()+Xq;await a($,T,"payload"),await U;let N=(f||X.srtWarmLate?.()===!0)&&l(L(O,"cgroup.events"));if(N)await a(O,T,"srt");let M=$q(W).filter((B)=>!b(B,E));if(j!==null){let B=Zq(j).filter((V)=>V!==process.pid&&!b(V,E));if(B.length)throw q("vm_hands.kill_strays",{strays:t(B)}),new D("vm_hands_kill_unverified",`${B.length} process(es) the run started survived it`);j=null}if(f=!1,N)X.onSrtReset?.();if(M.length)throw q("vm_hands.kill_survivors",{pids:M.slice(0,16)}),new D("vm_hands_kill_unverified",`${M.length} payload-uid process(es) outside the payload cgroup`);G.clear();for(let B of zq())try{qq(L($,H,B))}catch{}}finally{P=!1,K()}if(x)setTimeout(()=>{if(!J.size)x.arm()},100).unref?.()},async killProbe(){let Z=Date.now()+Xq;if(l(L(u,"cgroup.events"))){await a(u,Z,"probe");try{qq(u)}catch{}}let z=Qq(process.pid);if(z===null)throw new D("vm_hands_kill_unverified","agent start time unreadable");await dq($,z,Z);let K=(T)=>{let N=Qq(T);return N!==null&&N<=z},U=$q(W).filter((T)=>K(T)&&!b(T,E));if(U.length)throw q("vm_hands.kill_survivors",{pids:U.slice(0,16),at:"attest"}),new D("vm_hands_kill_unverified",`${U.length} payload-uid process(es) from before this agent`);if(j!==null){let T=[$,L($,H)].map((B)=>B.replace(/^\/sys\/fs\/cgroup/,"")),N=O.replace(/^\/sys\/fs\/cgroup/,""),M=Zq(j).filter((B)=>B!==process.pid&&!b(B,E)&&!b(B,"/reason-vm-hands")&&!b(B,N)&&!T.some((V)=>Lq(B,V)));if(M.length&&f)throw q("vm_hands.kill_strays",{strays:t(M),at:"attest"}),new D("vm_hands_kill_unverified",`${M.length} process(es) the run started survived it`);if(M.length)q("vm_hands.attest_concurrent",{processes:t(M),count:M.length});j=null}},async runProbe({nonce:Z,script:z}){if(F(),!z.includes(Bq))throw new D("vm_hands_probe_failed","probe names no proof directory");let K=X.proofParent??"/tmp/reason-vm-hands-proof";r(K,{mode:457,recursive:!0});let U=e(K);if(U.isSymbolicLink()||!U.isDirectory()||U.uid!==(process.getuid?.()??-1)||(U.mode&4095)!==457)throw new D("vm_hands_probe_failed","proof parent is not root's 0711 directory");let T=yq(L(K,"p-")),N=!1;try{if(!/^[A-Za-z0-9/._-]+$/.test(T)||!/^[A-Za-z0-9_-]{1,128}$/.test(Z))throw new D("vm_hands_probe_failed","proof directory path or nonce");Eq(T,W,W),Sq(T,448);let M=e(T).ino;try{r(u,{mode:493})}catch(C){if(!(C&&typeof C==="object"&&("code"in C)&&C.code==="EEXIST"))throw new D("vm_hands_probe_failed","probe cgroup")}let B=i(u)("/bin/bash",["-c",z.replaceAll(Bq,T).replaceAll(pq,Z)],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:["ignore","pipe","ignore"]}),V="";B.stdout?.on("data",(C)=>{if(V.length<16384)V+=C.toString("utf8").slice(0,16384-V.length)});let _=await new Promise((C)=>{let S=setTimeout(()=>{N=!0,B.kill("SIGKILL"),C(124)},cq);B.once("error",()=>{clearTimeout(S),C(127)}),B.once("close",(h)=>{clearTimeout(S),C(h??1)})});return q("vm_hands.probe",{nonce_len:Z.length,exit_code:_}),{exitCode:_,markers:V,proofDirInode:M}}finally{if(!N)uq(T,{recursive:!0,force:!0})}},restatLayout(){let{session_root:Z,alias:z}=X.init.layout,K="invalid";try{Aq(Z),K="0:0:755"}catch{}let U=!1,T=-1;try{let N=e(z);T=N.uid,U=K==="0:0:755"&&z===L(Z,"repo")&&!N.isSymbolicLink()&&N.isDirectory()&&mq(z)===z&&N.uid===W}catch{}return{root_mode:K,alias_ok:U,owner_uid:T}},verifyMounts(){Kq(X.init.layout.session_root,q,(Z)=>new D("vm_hands_mount_mismatch",Z))},installEnvironment(Z,z){let K=J.get(Z);if(!K)throw new D("environment_unavailable","no executor owns an environment");return jq({root:X.root,operationId:K.operationId,payload:z}).installed_revision},async stop(){if(n)clearInterval(n);x?.close(),await Promise.all([...J.keys()].map((Z)=>c(Z)))}};function zq(){try{return s(L($,H),{withFileTypes:!0}).filter((Z)=>Z.isDirectory()&&/^b-[0-9a-f-]{36}$/.test(Z.name)).map((Z)=>Z.name)}catch{return[]}}async function Hq(Z,z,K=!1){let U=new Set([...z].map((N)=>N.toLowerCase())),T=Tq();try{await Mq();let N=Date.now()+Xq,M=new Set(zq().filter((Q)=>!U.has(Q.slice(2))).map((Q)=>Q.slice(2)));if(Z)M.add(Z.toLowerCase());let B=null;for(let Q of M){let w=c(Q).catch(()=>{return}),o=G.get(Q);if(o!==void 0)B=B===null?o:Math.min(B,o);if(l(L(g(Q),"cgroup.events")))await a(g(Q),N,"bind");await w}let V=[...U].map((Q)=>g(Q).replace(/^\/sys\/fs\/cgroup/,"")),_=[$,L($,H)].map((Q)=>Q.replace(/^\/sys\/fs\/cgroup/,"")),C=O.replace(/^\/sys\/fs\/cgroup/,""),S=(Q)=>b(Q,E)||V.some((w)=>b(Q,w)),h=K?[]:$q(W).filter((Q)=>!S(Q));if(h.length)throw q("vm_hands.kill_survivors",{pids:h.slice(0,16),beside:U.size}),new D("vm_hands_kill_unverified",`${h.length} payload-uid process(es) outside a live bind`);let p=(Q)=>!S(Q)&&!b(Q,"/reason-vm-hands")&&!b(Q,C)&&!_.some((w)=>Lq(Q,w));if(B!==null){let Q=Zq(B).filter((w)=>w!==process.pid&&p(w));if(Q.length)throw q("vm_hands.kill_strays",{strays:t(Q),beside:U.size}),new D("vm_hands_kill_unverified",`${Q.length} process(es) the run started survived it`)}for(let Q of M)G.delete(Q),xq(Q)}finally{T()}}}function Qq(X,$="/proc"){try{let W=I(L($,String(X),"stat"),"utf8"),q=Number(W.slice(W.lastIndexOf(")")+2).split(" ")[19]);return Number.isFinite(q)?q:null}catch{return null}}function Cq(X,$="/proc"){try{let W=I(L($,String(X),"stat"),"utf8"),q=Number(W.slice(W.lastIndexOf(")")+2).split(" ")[1]);return Number.isFinite(q)?q:null}catch{return null}}async function dq(X,$,W){try{y(L(X,"cgroup.freeze"),"1")}catch(q){throw new D("vm_hands_kill_unverified",`payload cgroup.freeze: ${q instanceof Error?q.message:String(q)}`)}try{for(;;){let q=Oq(X).filter((G)=>fq(G,X)),J=new Set(q.filter((G)=>{let Y=Qq(G);return Y!==null&&Y<=$}));for(let G=!0;G;){G=!1;for(let Y of q){if(J.has(Y))continue;let A=Cq(Y);if(A!==null&&J.has(A))J.add(Y),G=!0}}if(J.size===0)return;if(Date.now()>W)throw new D("vm_hands_kill_unverified",`${J.size} previous-boot process(es) survived`);for(let G of J)try{process.kill(G,"SIGKILL")}catch{}await new Promise((G)=>setTimeout(G,10))}}finally{try{y(L(X,"cgroup.freeze"),"0")}catch{}}}function Lq(X,$,W="/proc"){try{return I(L(W,String(X),"cgroup"),"utf8").split(`
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{s as a,t as b,u as c}from"./vm-hands-entry-lite-apwve08w.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.js";export{b as spawnSessionPty,c as runVmHandsOpRunner,a as VM_HANDS_OP_RUNNER_PERSON_ARG};
2
+ import{s as a,t as b,u as c}from"./vm-hands-entry-lite-knb6bj3p.js";import"./vm-hands-entry-lite-f28ehysx.js";import"./vm-hands-entry-lite-c3e25cks.js";export{b as spawnSessionPty,c as runVmHandsOpRunner,a as VM_HANDS_OP_RUNNER_PERSON_ARG};
@@ -1,4 +1,4 @@
1
1
  // @bun
2
2
  import{Aa as m,Ba as l,za as k}from"./vm-hands-entry-lite-nnrypv7q.js";import{Oe as p}from"./vm-hands-entry-lite-afjzr3v2.js";import"./vm-hands-entry-lite-ysk49bnz.js";import{Vk as F}from"./vm-hands-entry-lite-c3e25cks.js";import{spawn as i}from"child_process";import{createHash as t}from"crypto";import{lstatSync as A,mkdirSync as s,readFileSync as d,statSync as e,writeFileSync as c}from"fs";var C="/run/reason-vm-hands",R="/run/reason-vm-hands/env",h="/home/runner/.reason/workspace",jj=/^https:\/\/[a-z0-9.-]+(?::\d{1,5})?$/,S="/sys/fs/cgroup/reason-srt",qj=["/usr/local/bin/reason-srt-exec","/usr/local/bin/ara-srt-exec"],Jj=65536,Qj=21600000;function Zj(Q,j="/run/ara-srt"){try{if((process.getuid?.()??-1)!==0)return;s(j,{recursive:!0,mode:448});let q=A(j);if(!q.isDirectory()||q.uid!==0||(q.mode&63)!==0){Q("srt_base_keyed_skipped",{reason:"socket_dir_unsafe"});return}c(`${j}/base-keyed`,`1
3
- `,{mode:420}),Q("srt_base_keyed",{})}catch{Q("srt_base_keyed_skipped",{reason:"error"})}}function y(Q,j){let q=(G)=>{return j("srt_warm_skipped",{reason:G}),Promise.resolve()};if(typeof Q.srt_base_settings!=="string")return q("no_settings");let Z=Buffer.from(Q.srt_base_settings,"base64");if(Z.length===0||Z.length>Jj||Z.toString("base64")!==Q.srt_base_settings)return q("settings_invalid");let X;try{let G=A(S);if(!G.isDirectory()||G.uid!==0||(G.mode&18)!==0)return q("cgroup_unsafe");let L=qj.find((M)=>A(M,{throwIfNoEntry:!1})!==void 0);if(!L)return q("cgroup_or_exec_missing");X=L;for(let[M,H]of[[X,!1],["/usr/local/bin",!0]]){let Y=A(M);if((H?!Y.isDirectory():!Y.isFile())||Y.uid!==0||(Y.mode&18)!==0)return q("srt_exec_unsafe")}}catch{return q("cgroup_or_exec_missing")}if((process.getuid?.()??-1)!==0)return q("not_root");let z=performance.now(),f=t("sha256").update(Z).digest("hex"),D=`${C}/srt-base-settings.json`;try{c(D,Z,{mode:384,flag:"w"})}catch{return q("settings_write")}let W=i("/bin/sh",["-c",`echo $$ > ${S}/cgroup.procs || exit 125; exec "$@"`,"vm-hands-srt",X,"--settings",D,"--idle-ms",String(Qj),"--","/bin/true"],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:"ignore"});return new Promise((G)=>{W.once("error",()=>{j("srt_warm_failed",{reason:"spawn"}),G()}),W.once("close",(L)=>{j(L===0?"srt_warm_done":"srt_warm_failed",{exit_code:L,warm_ms:Math.round(performance.now()-z),settings_sha256:f}),G()})})}var u=3000;function Nj(Q){if(!Q||typeof Q!=="object"||Array.isArray(Q))return null;let j=Q,q=j.layout,Z=j.device_key,X=j.credential;return typeof j.workspace_id==="string"&&Number.isSafeInteger(j.instance_generation)&&typeof j.api_origin==="string"&&jj.test(j.api_origin)&&typeof j.manifest_digest==="string"&&!!X&&typeof X.key_id==="string"&&Number.isSafeInteger(X.expires_at_ms)&&typeof X.signature==="string"&&!!q&&typeof q.session_root==="string"&&typeof q.alias==="string"&&Number.isSafeInteger(q.payload_uid)&&typeof q.kind==="string"&&!!Z&&typeof Z.pkcs8==="string"&&typeof Z.spki==="string"?j:null}function v(Q){s(Q,{recursive:!0,mode:448});let j=e(Q);if(!j.isDirectory()||(j.mode&63)!==0||j.uid!==(process.getuid?.()??-1))throw Error(`vm_hands_runtime_directory_unsafe: ${Q}`)}async function $j(Q){let[{CLI_VERSION:j},q,Z,X]=await Promise.all([import("./version-98dbzrna.js"),import("./hands-worker-source-8621y83c.js"),import("./network-contract-hak6865b.js"),import("./device-workspace-ne4269qk.js")]),{REASON_HANDS_PROTOCOL_VERSION:z}=await import("./reason-hands-protocol-ane0wwzb.js");return{reason_runtime_version:j,bridge_version:j,protocol_version:p,execution_eligible:!0,instance_generation:Q.instance_generation,capabilities:{supported_operations:["hands.connect"],hands_worker_artifact_sha256:q.REASON_HANDS_WORKER_ARTIFACT_SHA256,hands_worker_entrypoint:q.REASON_HANDS_WORKER_ENTRYPOINT,hands_slots:1,max_payload_bytes:Z.LOCAL_OPERATION_MAX_BYTES,max_result_bytes:Z.LOCAL_OPERATION_MAX_BYTES,operation_constraints:{"hands.connect":{ready:!0,execution_mode:"host",transport:"wss_relay",worker:"ara_hands",slots:1,session_group:Z.HANDS_SESSION_GROUP,worker_version:q.REASON_HANDS_WORKER_VERSION,protocol_version:z,worker_artifact_sha256:q.REASON_HANDS_WORKER_ARTIFACT_SHA256,worker_entrypoint:q.REASON_HANDS_WORKER_ENTRYPOINT,policy_mode:"full_access",policy_version:1,workspace_base:X.REASON_WORKSPACE_BASE,workspace_layout:X.SESSION_WORKSPACE_LAYOUT,browser_state:"optional_headless",desktop:!1,max_session_ms:43200000,environment_delivery:Z.HANDS_ENVIRONMENT_DELIVERY,[Z.HANDS_ENVIRONMENT_AT_CLAIM_KEY]:Z.HANDS_ENVIRONMENT_AT_CLAIM,[Z.HANDS_CLOUD_ACCESS_KEY]:Z.HANDS_CLOUD_ACCESS,[Z.HANDS_LARGE_ENVIRONMENT_KEY]:Z.HANDS_LARGE_ENVIRONMENT,[Z.HANDS_CONFINEMENT_KEY]:Z.HANDS_CONFINEMENT,[Z.HANDS_JOBS_USER_KEY]:Z.HANDS_JOBS_USER,vm_hands:"v1"}}}}}var P=["fs.read","fs.write","fs.export","fs.import","exec.run","exec.full","process.list","ports.list","pty.start","jobs.control","automation.call.v1"],Xj=new Set(["pty.start","jobs.control"]);function zj(Q,j){let q=j([{id:"vm-hands",label:"workspace",path:h,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}],{worker:{executionMode:"unsandboxed",readiness:Object.fromEntries(P.map((z)=>[z,!0]))}}),Z=Q.capabilities,X={...Z.operation_constraints};for(let z of P)X[z]={...q.operation_constraints?.[z]??{},ready:!0,execution_mode:q.operation_constraints?.[z]?.execution_mode??"host"};return{...Q,capabilities:{...Z,supported_operations:["hands.connect",...P],operation_constraints:X}}}function Gj(Q){for(let j of d("/etc/passwd","utf8").split(`
4
- `)){let q=j.split(":");if(q.length>=4&&Number(q[2])===Q&&/^\d+$/.test(q[3]??"")&&Number(q[3])>0)return Number(q[3])}throw Error("vm_hands_payload_account_unavailable")}function Fj(Q,j){let q=j.owner;if(!q||typeof q.organization_id!=="string"||typeof q.device_id!=="string"||typeof j.root_id!=="string")return null;return{version:4,apiOrigin:Q.api_origin,orgId:q.organization_id,deviceId:q.device_id,devicePublicKey:"",displayName:"vm-hands",registeredAt:new Date(0).toISOString(),handsSlots:1,roots:[{id:j.root_id,label:"workspace",path:h,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}]}}function Kj(Q=process.platform,j="/proc/self/oom_score_adj"){if(Q!=="linux")return null;let q;try{q=d(j,"utf8").trim()}catch{return{value:"unreadable"}}if(!/^-?\d+$/.test(q))return{value:"unreadable"};let Z=Number(q);return Z<0?{value:Z}:null}async function Wj(Q,j){let q=Kj();if(q)j("vm_hands.oom_protected",{code:"vm_hands_oom_protected",value:q.value}),await new Promise(()=>{setInterval(()=>{return},1073741824)});v(C),v(R),Zj(j);let Z=y(Q,j),X=!1,z=async()=>{if(!await Promise.race([Z.then(()=>!0),new Promise(($)=>setTimeout(()=>$(!1),u).unref?.())]))X=!0,j("srt_warm_late",{wait_ms:u})},[{configureDesktopAccount:f},{configureWorkerSandbox:D}]=await Promise.all([import("./desktop-account-t2f1aa9e.js"),import("./worker-sandbox-mn60tmqv.js")]);D();try{f({value:String(Q.layout.payload_uid)})}catch{j("payload_account_unavailable"),await new Promise(()=>{setInterval(()=>{return},1073741824)})}let W=new AbortController;for(let J of["SIGTERM","SIGINT"])process.on(J,()=>W.abort());let G=new Map,L,M=new Promise((J)=>{L=J}),H=M.then(()=>import("./vm-hands-executor-6bm919bz.js")).then(({createVmHandsExecutor:J})=>{let $=J({init:Q,root:h,runtimeDirectory:C,apiOrigin:Q.api_origin,prespawn:!0,onSrtReset:()=>{X=!1,Z=y(Q,j)},srtWarmLate:()=>X,forward:(B,K,g)=>G.get(B)?.(K,g)??Promise.reject(Error("vm_hands_not_bound")),log:(B,K)=>j(B,K)});return j("executor_loaded"),$}),Y=(J)=>async(...$)=>(await H)[J](...$),w=null;H.then((J)=>{w=($)=>J.executorExited($)});let N={startExecutor:async(...J)=>{return await z(),Y("startExecutor")(...J)},killAndVerifyPayload:Y("killAndVerifyPayload"),killProbe:Y("killProbe"),runProbe:async(...J)=>{return await z(),Y("runProbe")(...J)},restatLayout:()=>{throw Error("replaced below")},verifyMounts:()=>{throw Error("replaced below")},installEnvironment:()=>{throw Error("replaced below")},executorExited:(J)=>w?w(J):new Promise(()=>{}),takeSrtFallbacks:()=>null};H.then((J)=>{N.restatLayout=()=>J.restatLayout(),N.verifyMounts=()=>J.verifyMounts(),N.installEnvironment=($,B)=>J.installEnvironment($,B),N.freezeBind=($)=>J.freezeBind($),N.takeSrtFallbacks=()=>J.takeSrtFallbacks?.()??null});let o=await k(Q),n=new m(Q,o,N,{envRoot:R}),b=$j(Q),E=null,a=Promise.all([b,import("./local-capabilities-ymex3mmw.js")]).then(([J,$])=>{E=zj(J,$.capabilityInventoryForRoots),j("device_ops_loaded")}).catch((J)=>j("device_ops_unavailable",{error:J instanceof Error?J.name:"error"})),T=M.then(()=>import("./vm-hands-executor-6bm919bz.js")).then(({createVmHandsOpRunners:J,vmHandsBindCgroup:$,VM_HANDS_PAYLOAD_CGROUP:B})=>J({payloadUid:Q.layout.payload_uid,payloadGid:Gj(Q.layout.payload_uid),bindCgroup:(K)=>$(B,K),log:(K,g)=>j(K,g)})).catch(()=>null);T.then((J)=>J?.warm("person")),j("agent_ready"),await l({apiOrigin:Q.api_origin,agent:n,signal:W.signal,heartbeat:async()=>E??await b,executeOp:async({kind:J,claim:$,bindId:B,signal:K,emit:g})=>{let x=Fj(Q,$);if(!x)return{status:"failed",error_code:"vm_hands_bind_invalid"};let _={executionMode:"unsandboxed",runtimeDirectory:C,readiness:Object.fromEntries(P.map((U)=>[U,!0]))},I=(U)=>{let V=typeof U.kind==="string"?U.kind:"";if(V)g({kind:V,...U.data&&typeof U.data==="object"?{data:U.data}:{}})};if($.capability==="exec.full"&&J!=="person")return{status:"failed",error_code:"capability_not_granted"};if($.capability==="automation.call.v1"&&J!=="model")return{status:"failed",error_code:"capability_not_granted"};let r=$.capability==="pty.start"&&J==="person"&&!$.authority;if(Xj.has(String($.capability))&&!r){let{executeLocalOperation:U}=await import("./local-capabilities-ymex3mmw.js");return U(x,$,{worker:_,signal:K,emit:(V)=>I(V)})}let O=await T;if(!O)return{status:"failed",error_code:"vm_hands_payload_account_unavailable"};return O.run(J,{id:String($.attempt_id),claim:$,state:x,worker:_},I,K,B)},readyData:({launchId:J})=>({executor_launch_id:J}),log:(J,$)=>{if(J==="vm_hands.registered"||J==="vm_hands.reconnected")L();j(J,$)},onTurn:(J,$)=>{if($)G.set(J,$);else G.delete(J)}}),await(await H).stop(),(await T)?.stop()}export{Kj as vmHandsOomProtection,y as startBaseSrtServer,Wj as runVmHands,Nj as parseVmHandsInit,$j as heartbeatBody,Zj as enableBaseKeyedSrt};
3
+ `,{mode:420}),Q("srt_base_keyed",{})}catch{Q("srt_base_keyed_skipped",{reason:"error"})}}function y(Q,j){let q=(G)=>{return j("srt_warm_skipped",{reason:G}),Promise.resolve()};if(typeof Q.srt_base_settings!=="string")return q("no_settings");let Z=Buffer.from(Q.srt_base_settings,"base64");if(Z.length===0||Z.length>Jj||Z.toString("base64")!==Q.srt_base_settings)return q("settings_invalid");let X;try{let G=A(S);if(!G.isDirectory()||G.uid!==0||(G.mode&18)!==0)return q("cgroup_unsafe");let L=qj.find((M)=>A(M,{throwIfNoEntry:!1})!==void 0);if(!L)return q("cgroup_or_exec_missing");X=L;for(let[M,H]of[[X,!1],["/usr/local/bin",!0]]){let Y=A(M);if((H?!Y.isDirectory():!Y.isFile())||Y.uid!==0||(Y.mode&18)!==0)return q("srt_exec_unsafe")}}catch{return q("cgroup_or_exec_missing")}if((process.getuid?.()??-1)!==0)return q("not_root");let z=performance.now(),f=t("sha256").update(Z).digest("hex"),D=`${C}/srt-base-settings.json`;try{c(D,Z,{mode:384,flag:"w"})}catch{return q("settings_write")}let W=i("/bin/sh",["-c",`echo $$ > ${S}/cgroup.procs || exit 125; exec "$@"`,"vm-hands-srt",X,"--settings",D,"--idle-ms",String(Qj),"--","/bin/true"],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:"ignore"});return new Promise((G)=>{W.once("error",()=>{j("srt_warm_failed",{reason:"spawn"}),G()}),W.once("close",(L)=>{j(L===0?"srt_warm_done":"srt_warm_failed",{exit_code:L,warm_ms:Math.round(performance.now()-z),settings_sha256:f}),G()})})}var u=3000;function Nj(Q){if(!Q||typeof Q!=="object"||Array.isArray(Q))return null;let j=Q,q=j.layout,Z=j.device_key,X=j.credential;return typeof j.workspace_id==="string"&&Number.isSafeInteger(j.instance_generation)&&typeof j.api_origin==="string"&&jj.test(j.api_origin)&&typeof j.manifest_digest==="string"&&!!X&&typeof X.key_id==="string"&&Number.isSafeInteger(X.expires_at_ms)&&typeof X.signature==="string"&&!!q&&typeof q.session_root==="string"&&typeof q.alias==="string"&&Number.isSafeInteger(q.payload_uid)&&typeof q.kind==="string"&&!!Z&&typeof Z.pkcs8==="string"&&typeof Z.spki==="string"?j:null}function v(Q){s(Q,{recursive:!0,mode:448});let j=e(Q);if(!j.isDirectory()||(j.mode&63)!==0||j.uid!==(process.getuid?.()??-1))throw Error(`vm_hands_runtime_directory_unsafe: ${Q}`)}async function $j(Q){let[{CLI_VERSION:j},q,Z,X]=await Promise.all([import("./version-reqdxftm.js"),import("./hands-worker-source-8621y83c.js"),import("./network-contract-hak6865b.js"),import("./device-workspace-ne4269qk.js")]),{REASON_HANDS_PROTOCOL_VERSION:z}=await import("./reason-hands-protocol-ane0wwzb.js");return{reason_runtime_version:j,bridge_version:j,protocol_version:p,execution_eligible:!0,instance_generation:Q.instance_generation,capabilities:{supported_operations:["hands.connect"],hands_worker_artifact_sha256:q.REASON_HANDS_WORKER_ARTIFACT_SHA256,hands_worker_entrypoint:q.REASON_HANDS_WORKER_ENTRYPOINT,hands_slots:1,max_payload_bytes:Z.LOCAL_OPERATION_MAX_BYTES,max_result_bytes:Z.LOCAL_OPERATION_MAX_BYTES,operation_constraints:{"hands.connect":{ready:!0,execution_mode:"host",transport:"wss_relay",worker:"ara_hands",slots:1,session_group:Z.HANDS_SESSION_GROUP,worker_version:q.REASON_HANDS_WORKER_VERSION,protocol_version:z,worker_artifact_sha256:q.REASON_HANDS_WORKER_ARTIFACT_SHA256,worker_entrypoint:q.REASON_HANDS_WORKER_ENTRYPOINT,policy_mode:"full_access",policy_version:1,workspace_base:X.REASON_WORKSPACE_BASE,workspace_layout:X.SESSION_WORKSPACE_LAYOUT,browser_state:"optional_headless",desktop:!1,max_session_ms:43200000,environment_delivery:Z.HANDS_ENVIRONMENT_DELIVERY,[Z.HANDS_ENVIRONMENT_AT_CLAIM_KEY]:Z.HANDS_ENVIRONMENT_AT_CLAIM,[Z.HANDS_CLOUD_ACCESS_KEY]:Z.HANDS_CLOUD_ACCESS,[Z.HANDS_LARGE_ENVIRONMENT_KEY]:Z.HANDS_LARGE_ENVIRONMENT,[Z.HANDS_CONFINEMENT_KEY]:Z.HANDS_CONFINEMENT,[Z.HANDS_JOBS_USER_KEY]:Z.HANDS_JOBS_USER,vm_hands:"v1"}}}}}var P=["fs.read","fs.write","fs.export","fs.import","exec.run","exec.full","process.list","ports.list","pty.start","jobs.control","automation.call.v1"],Xj=new Set(["pty.start","jobs.control"]);function zj(Q,j){let q=j([{id:"vm-hands",label:"workspace",path:h,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}],{worker:{executionMode:"unsandboxed",readiness:Object.fromEntries(P.map((z)=>[z,!0]))}}),Z=Q.capabilities,X={...Z.operation_constraints};for(let z of P)X[z]={...q.operation_constraints?.[z]??{},ready:!0,execution_mode:q.operation_constraints?.[z]?.execution_mode??"host"};return{...Q,capabilities:{...Z,supported_operations:["hands.connect",...P],operation_constraints:X}}}function Gj(Q){for(let j of d("/etc/passwd","utf8").split(`
4
+ `)){let q=j.split(":");if(q.length>=4&&Number(q[2])===Q&&/^\d+$/.test(q[3]??"")&&Number(q[3])>0)return Number(q[3])}throw Error("vm_hands_payload_account_unavailable")}function Fj(Q,j){let q=j.owner;if(!q||typeof q.organization_id!=="string"||typeof q.device_id!=="string"||typeof j.root_id!=="string")return null;return{version:4,apiOrigin:Q.api_origin,orgId:q.organization_id,deviceId:q.device_id,devicePublicKey:"",displayName:"vm-hands",registeredAt:new Date(0).toISOString(),handsSlots:1,roots:[{id:j.root_id,label:"workspace",path:h,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}]}}function Kj(Q=process.platform,j="/proc/self/oom_score_adj"){if(Q!=="linux")return null;let q;try{q=d(j,"utf8").trim()}catch{return{value:"unreadable"}}if(!/^-?\d+$/.test(q))return{value:"unreadable"};let Z=Number(q);return Z<0?{value:Z}:null}async function Wj(Q,j){let q=Kj();if(q)j("vm_hands.oom_protected",{code:"vm_hands_oom_protected",value:q.value}),await new Promise(()=>{setInterval(()=>{return},1073741824)});v(C),v(R),Zj(j);let Z=y(Q,j),X=!1,z=async()=>{if(!await Promise.race([Z.then(()=>!0),new Promise(($)=>setTimeout(()=>$(!1),u).unref?.())]))X=!0,j("srt_warm_late",{wait_ms:u})},[{configureDesktopAccount:f},{configureWorkerSandbox:D}]=await Promise.all([import("./desktop-account-t2f1aa9e.js"),import("./worker-sandbox-mn60tmqv.js")]);D();try{f({value:String(Q.layout.payload_uid)})}catch{j("payload_account_unavailable"),await new Promise(()=>{setInterval(()=>{return},1073741824)})}let W=new AbortController;for(let J of["SIGTERM","SIGINT"])process.on(J,()=>W.abort());let G=new Map,L,M=new Promise((J)=>{L=J}),H=M.then(()=>import("./vm-hands-executor-d1fswtqe.js")).then(({createVmHandsExecutor:J})=>{let $=J({init:Q,root:h,runtimeDirectory:C,apiOrigin:Q.api_origin,prespawn:!0,onSrtReset:()=>{X=!1,Z=y(Q,j)},srtWarmLate:()=>X,forward:(B,K,g)=>G.get(B)?.(K,g)??Promise.reject(Error("vm_hands_not_bound")),log:(B,K)=>j(B,K)});return j("executor_loaded"),$}),Y=(J)=>async(...$)=>(await H)[J](...$),w=null;H.then((J)=>{w=($)=>J.executorExited($)});let N={startExecutor:async(...J)=>{return await z(),Y("startExecutor")(...J)},killAndVerifyPayload:Y("killAndVerifyPayload"),killProbe:Y("killProbe"),runProbe:async(...J)=>{return await z(),Y("runProbe")(...J)},restatLayout:()=>{throw Error("replaced below")},verifyMounts:()=>{throw Error("replaced below")},installEnvironment:()=>{throw Error("replaced below")},executorExited:(J)=>w?w(J):new Promise(()=>{}),takeSrtFallbacks:()=>null};H.then((J)=>{N.restatLayout=()=>J.restatLayout(),N.verifyMounts=()=>J.verifyMounts(),N.installEnvironment=($,B)=>J.installEnvironment($,B),N.freezeBind=($)=>J.freezeBind($),N.takeSrtFallbacks=()=>J.takeSrtFallbacks?.()??null});let o=await k(Q),n=new m(Q,o,N,{envRoot:R}),b=$j(Q),E=null,a=Promise.all([b,import("./local-capabilities-ws46275r.js")]).then(([J,$])=>{E=zj(J,$.capabilityInventoryForRoots),j("device_ops_loaded")}).catch((J)=>j("device_ops_unavailable",{error:J instanceof Error?J.name:"error"})),T=M.then(()=>import("./vm-hands-executor-d1fswtqe.js")).then(({createVmHandsOpRunners:J,vmHandsBindCgroup:$,VM_HANDS_PAYLOAD_CGROUP:B})=>J({payloadUid:Q.layout.payload_uid,payloadGid:Gj(Q.layout.payload_uid),bindCgroup:(K)=>$(B,K),log:(K,g)=>j(K,g)})).catch(()=>null);T.then((J)=>J?.warm("person")),j("agent_ready"),await l({apiOrigin:Q.api_origin,agent:n,signal:W.signal,heartbeat:async()=>E??await b,executeOp:async({kind:J,claim:$,bindId:B,signal:K,emit:g})=>{let x=Fj(Q,$);if(!x)return{status:"failed",error_code:"vm_hands_bind_invalid"};let _={executionMode:"unsandboxed",runtimeDirectory:C,readiness:Object.fromEntries(P.map((U)=>[U,!0]))},I=(U)=>{let V=typeof U.kind==="string"?U.kind:"";if(V)g({kind:V,...U.data&&typeof U.data==="object"?{data:U.data}:{}})};if($.capability==="exec.full"&&J!=="person")return{status:"failed",error_code:"capability_not_granted"};if($.capability==="automation.call.v1"&&J!=="model")return{status:"failed",error_code:"capability_not_granted"};let r=$.capability==="pty.start"&&J==="person"&&!$.authority;if(Xj.has(String($.capability))&&!r){let{executeLocalOperation:U}=await import("./local-capabilities-ws46275r.js");return U(x,$,{worker:_,signal:K,emit:(V)=>I(V)})}let O=await T;if(!O)return{status:"failed",error_code:"vm_hands_payload_account_unavailable"};return O.run(J,{id:String($.attempt_id),claim:$,state:x,worker:_},I,K,B)},readyData:({launchId:J})=>({executor_launch_id:J}),log:(J,$)=>{if(J==="vm_hands.registered"||J==="vm_hands.reconnected")L();j(J,$)},onTurn:(J,$)=>{if($)G.set(J,$);else G.delete(J)}}),await(await H).stop(),(await T)?.stop()}export{Kj as vmHandsOomProtection,y as startBaseSrtServer,Wj as runVmHands,Nj as parseVmHandsInit,$j as heartbeatBody,Zj as enableBaseKeyedSrt};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reason-machines/cli-linux-x64",
3
- "version": "0.2.402",
3
+ "version": "0.2.404",
4
4
  "description": "Reason CLI native binary for linux-x64",
5
5
  "os": [
6
6
  "linux"