@reason-machines/cli-linux-x64 0.2.286 → 0.2.289
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/ara +1 -1
- package/bin/vm-hands/connect-cli-7dy6febe.js +2 -0
- package/bin/vm-hands/{custom-endpoint-device-7kd3qh6r.js → custom-endpoint-device-tv4wtdb2.js} +1 -1
- package/bin/vm-hands/desktop-account-vr5beh82.js +2 -0
- package/bin/vm-hands/device-workspace-s5z0zr53.js +2 -0
- package/bin/vm-hands/{hands-worker-source-wddm7sdp.js → hands-worker-source-emf3gv2b.js} +1 -1
- package/bin/vm-hands/{index-9aw1gjs5.js → index-bwnyk312.js} +1 -1
- package/bin/vm-hands/local-automation-9788wj0n.js +2 -0
- package/bin/vm-hands/local-capabilities-phg0kvet.js +2 -0
- package/bin/vm-hands/local-desktop-users-vztj8kn8.js +2 -0
- package/bin/vm-hands/{local-display-mac-rp51a8w7.js → local-display-mac-4mtwfgty.js} +1 -1
- package/bin/vm-hands/local-display-session-28pkwr6v.js +2 -0
- package/bin/vm-hands/{network-contract-wkc0ycet.js → network-contract-y6kbgyhe.js} +1 -1
- package/bin/vm-hands/package-q8gdr1z1.js +2 -0
- package/bin/vm-hands/permissions-zr4qw779.js +2 -0
- package/bin/vm-hands/{reason-hands-protocol-zcnd1srf.js → reason-hands-protocol-5wqth9ga.js} +1 -1
- package/bin/vm-hands/{status-9grfvv20.js → status-jvapvrq5.js} +6 -6
- package/bin/vm-hands/version-h0hrdfe3.js +2 -0
- package/bin/vm-hands/{vm-hands-entry-lite-yvmzze06.js → vm-hands-entry-lite-250sqsry.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-5m5d6fne.js → vm-hands-entry-lite-5rbj89cs.js} +9 -22
- package/bin/vm-hands/{vm-hands-entry-lite-yh7n4svm.js → vm-hands-entry-lite-5zzey257.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-76hys77m.js → vm-hands-entry-lite-8nmj4r5v.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-ss2w3h3d.js → vm-hands-entry-lite-a3n86qqm.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-gfynf6jv.js → vm-hands-entry-lite-cfjx91rj.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-y9k070mt.js → vm-hands-entry-lite-d94sv87n.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-p8yz62gj.js → vm-hands-entry-lite-d9h818st.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-ee8txzdd.js → vm-hands-entry-lite-dhngjmag.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-k901yfkm.js → vm-hands-entry-lite-g7mf4fc7.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-m5pmd2cz.js → vm-hands-entry-lite-h7ndfgwc.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-h2xpqaxn.js → vm-hands-entry-lite-mk9p22xa.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-85cf0jww.js → vm-hands-entry-lite-mysjgrwy.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-mxavr4y3.js → vm-hands-entry-lite-ngvxyjhy.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-d2wyay7h.js → vm-hands-entry-lite-pkwvjyy8.js} +3 -3
- package/bin/vm-hands/{vm-hands-entry-lite-shde1mg2.js → vm-hands-entry-lite-pr65ksfz.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-whcnpjdx.js → vm-hands-entry-lite-qdwm3ya8.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-wffqkcjq.js → vm-hands-entry-lite-sn3vjjgx.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-kbwr4e6f.js → vm-hands-entry-lite-tjfnxx84.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-yf8h8gmh.js → vm-hands-entry-lite-tkpfs08y.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-8byz0e1v.js → vm-hands-entry-lite-tqn3a245.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-5vrdj7jm.js → vm-hands-entry-lite-yadv8a82.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-4fnbmmp6.js → vm-hands-entry-lite-z7twr5ec.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-hnq065fd.js → vm-hands-entry-lite-zmf3vn3w.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-94nvv1qx.js → vm-hands-entry-lite-znw0vvb2.js} +2 -2
- package/bin/vm-hands/vm-hands-entry-lite.js +1 -1
- package/bin/vm-hands/{vm-hands-executor-82wtd24g.js → vm-hands-executor-htdjhq9a.js} +1 -1
- package/bin/vm-hands/{vm-hands-op-runner-1848vv0m.js → vm-hands-op-runner-c4pc076v.js} +1 -1
- package/bin/vm-hands/{vm-hands-runtime-dmk9hnwr.js → vm-hands-runtime-6eb7vytb.js} +3 -3
- package/bin/vm-hands/worker-sandbox-wqxffxa1.js +2 -0
- package/package.json +1 -1
- package/bin/vm-hands/connect-cli-0g851qhv.js +0 -2
- package/bin/vm-hands/desktop-account-8z3zns7q.js +0 -2
- package/bin/vm-hands/device-workspace-pkcqavr9.js +0 -2
- package/bin/vm-hands/local-automation-70sarejz.js +0 -2
- package/bin/vm-hands/local-capabilities-0842mh3q.js +0 -2
- package/bin/vm-hands/local-desktop-users-nxyv3mk1.js +0 -2
- package/bin/vm-hands/local-display-session-1tzx2c36.js +0 -2
- package/bin/vm-hands/package-56yg8k4a.js +0 -2
- package/bin/vm-hands/permissions-1dzt3phg.js +0 -2
- package/bin/vm-hands/version-4m73yc89.js +0 -2
- package/bin/vm-hands/worker-sandbox-4c9302zr.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Ab as U9,Bb as u0,Ib as z0,wb as UQ,xb as Z8,yb as u9,zb as q0}from"./vm-hands-entry-lite-
|
|
2
|
+
import{Ab as U9,Bb as u0,Ib as z0,wb as UQ,xb as Z8,yb as u9,zb as q0}from"./vm-hands-entry-lite-5rbj89cs.js";import{Qb as PQ,Rb as IQ,Sb as rZ,Tb as tZ,Ub as G8}from"./vm-hands-entry-lite-qvrnx0vk.js";import{Zb as E0}from"./vm-hands-entry-lite-n07kxrd1.js";import{Bd as N0,Oc as a$,Rc as o$,ud as R9,vd as n0,wd as V8,xd as b0}from"./vm-hands-entry-lite-5zzey257.js";import{ae as I}from"./vm-hands-entry-lite-h7ndfgwc.js";import{Ke as kQ,Le as f8,Ze as wQ,df as s9,ef as w8}from"./vm-hands-entry-lite-zmf3vn3w.js";import{Af as x8,Df as c9,Lf as A8,Mf as I0,Nf as j0,Of as d9,Vf as R8,Wf as $Q,Xf as l$,gf as UZ,jf as F9,sf as r$,tf as t$,vf as e$,xf as v9,yf as p$,zf as u$}from"./vm-hands-entry-lite-mysjgrwy.js";import{Xg as aZ}from"./vm-hands-entry-lite-cfjx91rj.js";import{Zg as W8,_g as p9,bh as iZ}from"./vm-hands-entry-lite-pr65ksfz.js";import{ch as F8,dh as l0,eh as U8,fh as s0,gh as K9,hh as Q8,ih as r8,jh as p0,kh as v0,lh as d$,wh as F$}from"./vm-hands-entry-lite-ngvxyjhy.js";import{Bh as JZ}from"./vm-hands-entry-lite-8nmj4r5v.js";import{Hh as oZ}from"./vm-hands-entry-lite-d94sv87n.js";import{Jh as C}from"./vm-hands-entry-lite-sn3vjjgx.js";import{Kh as L1,Nh as ZZ}from"./vm-hands-entry-lite-a3n86qqm.js";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 g9($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function _0($,Q,Z=Number.MAX_SAFE_INTEGER){return typeof $==="number"&&Number.isSafeInteger($)&&$>=Q&&$<=Z}function I$($){return typeof $==="string"&&/^[a-zA-Z0-9_-]{1,160}$/.test($)}function A0($){if(!g9($)||Object.keys($).length!==12||![$.organizationId,$.userId,$.runId,$.deviceId,$.rootId,$.jobId,$.fenceId].every(I$)||!_0($.attachmentRevision,0)||!_0($.grantRevision,1)||!_0($.generation,1)||!_0($.port,1024,65535)||!_0($.expiresAtMs,1))throw Error("preview_binding_invalid");return Object.freeze({...$})}function y0($,Q){return Object.keys($).every((Z)=>$[Z]===Q[Z])}function M9($){if($.length>4096||!$.startsWith("/")||$.startsWith("//")||/[\\\x00-\x20\x7f#]/.test($))throw Error("preview_path_invalid");let Q=decodeURIComponent($);if(Q.startsWith("//")||/[\\\x00-\x1f\x7f]/.test(Q))throw Error("preview_path_invalid");return $}function P$($){return Array.isArray($)&&$.length<=64&&$.every((Q)=>Array.isArray(Q)&&Q.length===2&&typeof Q[0]==="string"&&/^[a-zA-Z0-9-]{1,80}$/.test(Q[0])&&typeof Q[1]==="string"&&Q[1].length<=4096&&!/[\x00-\x1f\x7f]/.test(Q[1]))}function N9($,Q=v.chunk){if($.length>Math.ceil(Q/3)*4||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test($))throw Error("preview_data_invalid");let Z=Buffer.from($,"base64");if(Z.length>Q)throw Error("preview_data_too_large");return Z}function R$($){if(Array.isArray($))return Buffer.concat($);if(typeof $==="string")return Buffer.from($,"utf8");if($ instanceof ArrayBuffer)return Buffer.from($);return $}function E$($){if(Buffer.byteLength($)>v.upload*1.4+300000)throw Error("preview_frame_too_large");let Q=JSON.parse($);if(!g9(Q))throw Error("preview_frame_invalid");if(Q.type==="hello")return{type:"hello",binding:A0(Q.binding),..._0(Q.messages,v.chunk,v.upload)?{messages:Q.messages}:{},..._0(Q.window,1,v.window)?{window:Q.window}:{}};if(Q.type==="refused"&&typeof Q.reason==="string"&&/^[a-z_]{1,32}$/.test(Q.reason))return{type:"refused",binding:A0(Q.binding),reason:Q.reason};if(!I$(Q.id))throw Error("preview_frame_invalid");if(Q.type==="end"||Q.type==="cancel"||Q.type==="credit")return{type:Q.type,id:Q.id};if(Q.type==="ws"&&typeof Q.protocol==="string"&&/^[a-zA-Z0-9._-]{0,100}$/.test(Q.protocol))return{type:"ws",id:Q.id,protocol:Q.protocol};if(Q.type==="data"&&typeof Q.data==="string"&&typeof Q.binary==="boolean")return N9(Q.data,v.upload),{type:"data",id:Q.id,data:Q.data,binary:Q.binary};if(Q.type==="head"&&_0(Q.status,200,599)&&P$(Q.headers))return{type:"head",id:Q.id,status:Q.status,headers:Q.headers};if(Q.type==="request"&&typeof Q.method==="string"&&/^(GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS)$/.test(Q.method)&&typeof Q.path==="string"&&P$(Q.headers)&&typeof Q.body==="string"&&typeof Q.upgrade==="boolean")return N9(Q.body,v.upload),{type:"request",id:Q.id,method:Q.method,path:M9(Q.path),headers:Q.headers,body:Q.body,upgrade:Q.upgrade};throw Error("preview_frame_invalid")}function T8($){let Q=[...$],Z=new Set(Q.filter(([J])=>J.toLowerCase()==="connection").flatMap(([,J])=>J.toLowerCase().split(",").map((G)=>G.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 Q.filter(([J])=>!X.has(J.toLowerCase())&&!Z.has(J.toLowerCase())&&!/^(x-forwarded-|x-ara-|sec-websocket-|access-control-)/i.test(J))}async function O8($){let Q;try{return await Promise.race([Promise.resolve().then($).then((Z)=>Z===!0||(Z===!1?!1:void 0),()=>{return}),new Promise((Z)=>{Q=setTimeout(()=>Z(void 0),v.authorizationMs)})])}finally{clearTimeout(Q)}}async function j9($){return await O8($)===!0}function y9($,Q){let Z=new URL($);if(Z.username||Z.password||Z.search||Z.hash||!(Z.protocol==="wss:"||Z.protocol==="ws:"&&["127.0.0.1","[::1]"].includes(Z.hostname))||!new RegExp(`^/${Q}/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]{32,}$`).test(Z.pathname))throw Error("preview_relay_invalid");return Z.href}function S$($){if(!g9($)||Object.keys($).length!==2||typeof $.deviceRelayUrl!=="string")throw Error("preview_open_invalid");return{binding:A0($.binding),deviceRelayUrl:y9($.deviceRelayUrl,"device")}}function w$($){if(!g9($)||Object.keys($).length!==1||!("binding"in $))throw Error("preview_close_invalid");return{binding:A0($.binding)}}import{request as B4}from"http";import{WebSocket as C9}from"ws";import{randomBytes as F4,timingSafeEqual as U4}from"crypto";import{createServer as W4}from"net";var b$="x-preview-connection";async function k$($,Q){if(Q.aborted)throw Error("preview_closed");let Z=F4(32).toString("base64url"),X=new Set,J=!1,G=W4((Y)=>{if(J||Q.aborted||X.size>=v.streams*2)return Y.destroy();X.add(Y);let V=new AbortController;Y.once("close",()=>{X.delete(Y),V.abort()}),Y.on("error",()=>Y.destroy()),Y.setTimeout(2000,()=>Y.destroy());let U=Buffer.alloc(0),F=(L)=>{U=Buffer.concat([U,L]);let B=U.indexOf(`\r
|
|
3
3
|
\r
|
|
4
4
|
`);if(B<0){if(U.length>16384)Y.destroy();return}if(Y.pause(),Y.off("data",F),B>16384||U.length>v.upload+16384)return Y.destroy();K(U,B).catch(()=>Y.destroy())};Y.on("data",F);async function K(L,B){let W=L.subarray(0,B).toString("latin1").split(`\r
|
|
5
5
|
`),M=/^(GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS) (\S+) HTTP\/1\.1$/.exec(W.shift()??"");if(!M)throw Error("preview_request_invalid");M9(M[2]);let _=!1,q=0,D=[];for(let T of W){let k=/^([a-zA-Z0-9-]+):[ \t]*([^\x00-\x08\x0a-\x1f\x7f]*)$/.exec(T);if(!k)throw Error("preview_header_invalid");if(k[1].toLowerCase()===b$){q++;let g=Buffer.from(k[2].trim());_=g.length===Z.length&&U4(g,Buffer.from(Z))}else if(k[1].toLowerCase()!=="host")D.push(T)}if(!_||q!==1||J||V.signal.aborted)throw Error("preview_connection_denied");let x=await $.connect(V.signal);if(J||V.signal.aborted)throw x.destroy(),Error("preview_closed");X.add(x),x.on("error",()=>Y.destroy()),x.once("close",()=>{X.delete(x),Y.destroy()}),Y.once("close",()=>x.destroy()),Y.setTimeout(0);let b=[`${M[1]} ${M[2]} HTTP/1.1`,`Host: 127.0.0.1:${x.remotePort}`,...D,"",""].join(`\r
|
|
@@ -303,7 +303,7 @@ async (input) => {
|
|
|
303
303
|
if (!bridge || typeof bridge.evaluate !== "function") throw new Error("Reason Hands browser bridge is not installed");
|
|
304
304
|
return await bridge.evaluate(typeof input === "string" ? input : input && input.code);
|
|
305
305
|
}
|
|
306
|
-
`.trim();import{Buffer as Q9}from"buffer";import{randomUUID as a3}from"crypto";class lQ extends Error{code;constructor($){super($==="hands_repl_private_profile_attribute_denied"?"Private browser attribute read denied.":$);this.code=$;this.name="HandsReplBrowserDispatcherError"}}var sQ=new Set(["__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","__proto__","constructor","prototype"]),dQ=/^hands_[A-Za-z0-9_-]{8,128}$/,o3=2048,nQ=32,iQ=1e4,r3=new Set(["href","src","alt","title","role","aria-label","aria-expanded","aria-checked","aria-selected","aria-disabled","placeholder","type","name","data-testid"]);function t3($){let Q=$.split("+"),Z=(Q.pop()??"").replace(/^Key/,"").toLowerCase();if(Z==="f12")return!0;if(Q.some((X)=>["Control","ControlOrMeta","Meta"].includes(X))&&["l","n","t","j","i","p","s","w","u","o","r","tab","pageup","pagedown"].includes(Z))return!0;if(Q.some((X)=>["Control","ControlOrMeta","Meta"].includes(X))&&Q.includes("Shift")&&Z==="c")return!0;return Q.includes("Alt")&&["d","arrowleft","arrowright","home"].includes(Z)}var e3=($)=>{let Q=$.closest("a[href],area[href]");return{password:$.tagName==="INPUT"&&$.type==="password",executableLink:Boolean(Q&&!/^(https?:|about:blank)/i.test(Q.href))}},aQ={browser:{close:{returns:"void"},contexts:{returns:"context[]"},isConnected:{returns:"json"},version:{returns:"json"}},context:{addCookies:{returns:"void"},addInitScript:{returns:"void"},browser:{returns:"browser"},clearCookies:{returns:"void"},clearPermissions:{returns:"void"},close:{returns:"void"},cookies:{returns:"json"},grantPermissions:{returns:"void"},newPage:{returns:"page"},pages:{returns:"page[]"},setDefaultNavigationTimeout:{returns:"void"},setDefaultTimeout:{returns:"void"},setExtraHTTPHeaders:{returns:"void"},setGeolocation:{returns:"void"},setHTTPCredentials:{returns:"void"},setOffline:{returns:"void"},setViewportSize:{returns:"void"},storageState:{returns:"json"},viewportSize:{returns:"json",special:"contextViewportSize"}},page:{addInitScript:{returns:"void"},addScriptTag:{returns:"void"},addStyleTag:{returns:"void"},bringToFront:{returns:"void"},close:{returns:"void"},content:{returns:"json"},context:{returns:"context"},emulateMedia:{returns:"void"},evaluate:{returns:"json",requiresStringSource:!0},frame:{returns:"frame"},frameLocator:{returns:"frameLocator"},frames:{returns:"frame[]"},getByAltText:{returns:"locator"},getByLabel:{returns:"locator"},getByPlaceholder:{returns:"locator"},getByRole:{returns:"locator"},getByTestId:{returns:"locator"},getByText:{returns:"locator"},getByTitle:{returns:"locator"},goBack:{returns:"void"},goForward:{returns:"void"},goto:{returns:"void"},isClosed:{returns:"json"},locator:{returns:"locator"},mainFrame:{returns:"frame"},opener:{returns:"page"},pdf:{returns:"bytes"},reload:{returns:"void"},screenshot:{returns:"bytes"},selectOption:{returns:"json"},setContent:{returns:"void"},setDefaultNavigationTimeout:{returns:"void"},setDefaultTimeout:{returns:"void"},setExtraHTTPHeaders:{returns:"void"},setInputFiles:{returns:"void"},setViewportSize:{returns:"void"},title:{returns:"json"},url:{returns:"json"},viewportSize:{returns:"json"},waitForFunction:{returns:"void",requiresStringSource:!0},waitForLoadState:{returns:"void"},waitForNavigation:{returns:"void"},waitForTimeout:{returns:"void"},waitForURL:{returns:"void"}},locator:{all:{returns:"locator[]"},allInnerTexts:{returns:"json"},allTextContents:{returns:"json"},and:{returns:"locator"},ariaSnapshot:{returns:"json"},blur:{returns:"void"},boundingBox:{returns:"json"},check:{returns:"void"},clear:{returns:"void"},click:{returns:"void"},contentFrame:{returns:"frameLocator"},count:{returns:"json"},dblclick:{returns:"void"},dragTo:{returns:"void"},evaluate:{returns:"json",requiresStringSource:!0},evaluateAll:{returns:"json",requiresStringSource:!0},fill:{returns:"void"},filter:{returns:"locator"},first:{returns:"locator",special:"property"},focus:{returns:"void"},getAttribute:{returns:"json"},getByAltText:{returns:"locator"},getByLabel:{returns:"locator"},getByPlaceholder:{returns:"locator"},getByRole:{returns:"locator"},getByTestId:{returns:"locator"},getByText:{returns:"locator"},getByTitle:{returns:"locator"},hover:{returns:"void"},innerHTML:{returns:"json"},innerText:{returns:"json"},inputValue:{returns:"json"},isChecked:{returns:"json"},isEditable:{returns:"json"},isEnabled:{returns:"json"},isHidden:{returns:"json"},isVisible:{returns:"json"},last:{returns:"locator",special:"property"},locator:{returns:"locator"},nth:{returns:"locator"},or:{returns:"locator"},page:{returns:"page"},press:{returns:"void"},pressSequentially:{returns:"void"},scrollIntoViewIfNeeded:{returns:"void"},screenshot:{returns:"bytes"},selectOption:{returns:"json"},setInputFiles:{returns:"void"},tap:{returns:"void"},textContent:{returns:"json"},type:{returns:"void"},uncheck:{returns:"void"},waitFor:{returns:"void"}},frame:{addScriptTag:{returns:"void"},addStyleTag:{returns:"void"},childFrames:{returns:"frame[]"},content:{returns:"json"},evaluate:{returns:"json",requiresStringSource:!0},frameLocator:{returns:"frameLocator"},getByAltText:{returns:"locator"},getByLabel:{returns:"locator"},getByPlaceholder:{returns:"locator"},getByRole:{returns:"locator"},getByTestId:{returns:"locator"},getByText:{returns:"locator"},getByTitle:{returns:"locator"},goto:{returns:"void"},isDetached:{returns:"json"},locator:{returns:"locator"},name:{returns:"json"},page:{returns:"page"},parentFrame:{returns:"frame"},setContent:{returns:"void"},title:{returns:"json"},url:{returns:"json"},waitForFunction:{returns:"void",requiresStringSource:!0},waitForLoadState:{returns:"void"},waitForNavigation:{returns:"void"},waitForTimeout:{returns:"void"},waitForURL:{returns:"void"}},frameLocator:{getByAltText:{returns:"locator"},getByLabel:{returns:"locator"},getByPlaceholder:{returns:"locator"},getByRole:{returns:"locator"},getByTestId:{returns:"locator"},getByText:{returns:"locator"},getByTitle:{returns:"locator"},locator:{returns:"locator"},owner:{returns:"locator"}}};function R($){throw new lQ($)}function G0($){if(!$||typeof $!=="object"||Array.isArray($))return!1;let Q=Object.getPrototypeOf($);return Q===Object.prototype||Q===null}function Z9($,Q=0,Z={nodes:0}){if(Q>nQ||++Z.nodes>iQ)R("hands_repl_json_too_complex");if($===null||typeof $==="boolean"||typeof $==="string")return;if(typeof $==="number"){if(!Number.isFinite($))R("hands_repl_invalid_json");return}if(Array.isArray($)){for(let X of $)Z9(X,Q+1,Z);return}if(!G0($))R("hands_repl_invalid_json");for(let[X,J]of Object.entries($)){if(sQ.has(X))R("hands_repl_invalid_json");Z9(J,Q+1,Z)}}function m8($){return typeof $==="string"&&Object.hasOwn(aQ,$)}function $1($){if(!$.endsWith("[]"))return null;let Q=$.slice(0,-2);return m8(Q)?Q:null}function pQ($){return G0($)&&Object.keys($).length===2&&$.$handsRepl==="bytes"&&typeof $.base64==="string"}function Q1($){return G0($)&&Object.keys($).length===1&&$.$handsRepl==="undefined"}function uQ($){return G0($)&&Object.keys($).length===2&&$.$handsRepl==="routeFulfill"&&"options"in $}function S0($){return!!$&&typeof $==="object"}function a9(){return Object.freeze({$handsRepl:"undefined"})}function Z1($){if(!Q9.isBuffer($)&&!($ instanceof Uint8Array))R("hands_repl_expected_bytes");return Object.freeze({$handsRepl:"bytes",base64:Q9.from($).toString("base64")})}function oQ($){if(!S0($.browser)||!S0($.context)||!S0($.page))R("hands_repl_invalid_roots");if(typeof $.a11y!=="function"||typeof $.view!=="function")R("hands_repl_invalid_callbacks");let Q=$.maxHandles??o3;if(!Number.isInteger(Q)||Q<3||Q>1e5)R("hands_repl_invalid_handle_limit");let Z=new Map,X=new WeakMap,J=$.createOpaqueId??a3,G=(K,L)=>{if(!S0(L))R("hands_repl_expected_target");let B=X.get(L)?.get(K);if(B)return B;if(Z.size>=Q)R("hands_repl_handle_limit");let W="";for(let q=0;q<16;q+=1){let D=`hands_${J()}`;if(dQ.test(D)&&!Z.has(D)){W=D;break}}if(!W)R("hands_repl_invalid_opaque_id");let M=Object.freeze({$handsRepl:"handle",id:W,kind:K});Z.set(W,{kind:K,target:L});let _=X.get(L);if(!_)_=new Map,X.set(L,_);return _.set(K,M),M},z=Object.freeze({browser:G("browser",$.browser),context:G("context",$.context),page:G("page",$.page)}),H=(K)=>{if(!G0(K)||Object.keys(K).length!==3||K.$handsRepl!=="handle"||typeof K.id!=="string"||!dQ.test(K.id)||!m8(K.kind))R("hands_repl_invalid_handle");let L=Z.get(K.id);if(!L||L.kind!==K.kind)R("hands_repl_unknown_handle");return L},Y=(K,L=0,B=new Set)=>{if(L>nQ)R("hands_repl_json_too_complex");if(K===void 0)return a9();if(K===null||typeof K==="boolean"||typeof K==="string")return K;if(typeof K==="number"){if(!Number.isFinite(K))R("hands_repl_non_json_result");return K}if(Array.isArray(K)){if(B.has(K))R("hands_repl_cyclic_result");B.add(K);try{return K.map((W)=>Y(W,L+1,B))}finally{B.delete(K)}}if(!G0(K))R("hands_repl_non_json_result");if(B.has(K))R("hands_repl_cyclic_result");B.add(K);try{let W=Object.create(null);for(let M of Object.keys(K)){let _=Object.getOwnPropertyDescriptor(K,M);if(!_||!("value"in _))continue;W[M]=Y(_.value,L+1,B)}return W}finally{B.delete(K)}},V=(K,L)=>{if(L==="void")return a9();if(L==="json")return Y(K);if(L==="bytes")return Z1(K);let B=$1(L);if(B){if(!Array.isArray(K))R("hands_repl_expected_target_list");if(B==="context"&&K.some((W)=>W!==$.context))R("hands_repl_foreign_context");return K.map((W)=>G(B,W))}if(K===null||K===void 0)return a9();if(!m8(L))R("hands_repl_invalid_return_kind");if(L==="context"&&K!==$.context)R("hands_repl_foreign_context");return G(L,K)},U=(K)=>{if(G0(K)&&K.$handsRepl==="handle")return H(K).target;if(pQ(K))return Q9.from(K.base64,"base64");if(Q1(K))return;if(uQ(K))R("hands_repl_route_fulfill_only");if(Array.isArray(K))return K.map(U);if(!G0(K))return K;let L=Object.create(null);for(let[B,W]of Object.entries(K))L[B]=U(W);return L};return Object.freeze({roots:z,dispatch:async(K)=>{if(!G0(K)||typeof K.type!=="string")R("hands_repl_invalid_request");if(K.type==="a11y"){let T=K.target===void 0?Z.get(z.page.id):H(K.target);if(!T||T.kind!=="page"&&T.kind!=="locator")R("hands_repl_invalid_a11y_target");return Y(await $.a11y(T.target))}if(K.type==="view"){if(Z9(K.source),K.options!==void 0)Z9(K.options);let T=pQ(K.source)?Q9.from(K.source.base64,"base64"):K.source;if($.privateProfile&&!Q9.isBuffer(T))R("hands_repl_profile_requires_image_bytes");return Y(await $.view(T,K.options))}if(K.type!=="call")R("hands_repl_invalid_request");if(typeof K.method!=="string"||K.method.length===0||K.method.length>128)R("hands_repl_invalid_method");if(sQ.has(K.method))R("hands_repl_forbidden_method");let L=H(K.target),B=K.args??[];if(!Array.isArray(B))R("hands_repl_invalid_arguments");if(Z9(B),L.kind==="page"&&K.method==="captureScreenshot"){if(B.length!==0)R("hands_repl_invalid_arguments");if(!$.screenshotExport)R("hands_repl_screenshot_export_unavailable");return Y(await $.screenshotExport(L.target))}if(L.kind==="context"&&["startRecording","stopRecording"].includes(K.method)){if(!$.recording||L.target!==$.context)R("hands_repl_recording_unavailable");if(B.length>(K.method==="startRecording"?1:0))R("hands_repl_invalid_arguments");return Y(K.method==="startRecording"?await $.recording.start(B[0]):await $.recording.stop())}if($.privateProfile){let T=K.method;if(["evaluate","evaluateAll","waitForFunction","addInitScript","addScriptTag","addStyleTag","setContent","setInputFiles","route","content","cookies","storageState","addCookies","clearCookies","setExtraHTTPHeaders","setHTTPCredentials","grantPermissions","clearPermissions","innerHTML","textContent","allTextContents"].includes(T)||L.kind==="browser"&&T==="close"||L.kind==="context"&&T==="close")R("hands_repl_private_profile_method_denied");if(L.kind==="browser"&&T==="contexts")return V([$.context],"context[]");if((T==="screenshot"||T==="pdf")&&G0(B[0])&&(("path"in B[0])||("style"in B[0])))R("hands_repl_private_profile_path_denied");if(T==="goto"){if(typeof B[0]!=="string")R("hands_repl_private_profile_url_denied");try{let k=new URL(B[0]);if(!["http:","https:"].includes(k.protocol)&&B[0]!=="about:blank")R("hands_repl_private_profile_url_denied")}catch{R("hands_repl_private_profile_url_denied")}}if(T==="getAttribute"&&(typeof B[0]!=="string"||!r3.has(B[0].toLowerCase())))R("hands_repl_private_profile_attribute_denied");if(L.kind==="locator"&&["innerText","allInnerTexts","getAttribute"].includes(T)){let k=[L.target];if(T==="allInnerTexts"){let g=Reflect.get(L.target,"all");if(typeof g!=="function")R("hands_repl_private_profile_probe_unavailable");let O=await Reflect.apply(g,L.target,[]);if(!Array.isArray(O)||O.length>iQ||!O.every(S0))R("hands_repl_private_profile_probe_unavailable");k=O}for(let g of k){let O=Reflect.get(g,"isVisible");if(typeof O!=="function"||!await Reflect.apply(O,g,[]))R("hands_repl_private_profile_hidden_value_denied")}}if(T==="press"&&typeof B[0]==="string"&&t3(B[0]))R("hands_repl_private_profile_browser_shortcut_denied");if(L.kind==="locator"&&["inputValue","click","dblclick","tap","press"].includes(T)){let k=Reflect.get(L.target,"evaluate");if(typeof k!=="function")R("hands_repl_private_profile_probe_unavailable");let g=await Reflect.apply(k,L.target,[e3]);if(!G0(g)||typeof g.password!=="boolean"||typeof g.executableLink!=="boolean")R("hands_repl_private_profile_probe_unavailable");if(T==="inputValue"&&g.password)R("hands_repl_private_profile_password_denied");if(T!=="inputValue"&&g.executableLink)R("hands_repl_private_profile_url_denied");if(T==="inputValue"){let O=Reflect.get(L.target,"isVisible");if(typeof O!=="function"||!await Reflect.apply(O,L.target,[]))R("hands_repl_private_profile_hidden_value_denied")}}}let W=aQ[L.kind][K.method];if(!W)R("hands_repl_method_not_allowed");if(W.requiresStringSource&&typeof B[0]!=="string")R("hands_repl_string_source_required");if(L.kind==="browser"&&K.method==="contexts")return[z.context];if(["addInitScript","addScriptTag","addStyleTag","screenshot","pdf","storageState"].includes(K.method)&&B.some((T)=>G0(T)&&("path"in T)))R("hands_repl_file_path_not_allowed");if(K.method==="goto"&&typeof B[0]==="string"){let T;try{T=new URL(B[0]).protocol}catch{R("hands_repl_invalid_url")}if(!["http:","https:","data:","about:","blob:"].includes(T))R("hands_repl_file_path_not_allowed")}if(W.special==="contextViewportSize"){let T=Reflect.get(L.target,"pages");if(typeof T!=="function")R("hands_repl_method_unavailable");let k=await Reflect.apply(T,L.target,[]),g=Array.isArray(k)?k[0]:void 0,O=S0(g)?Reflect.get(g,"viewportSize"):void 0;if(typeof O!=="function")return a9();return V(await Reflect.apply(O,g,[]),W.returns)}if(W.special==="property"){let T=Reflect.get(L.target,K.method);return V(typeof T==="function"?Reflect.apply(T,L.target,[]):T,W.returns)}let M=Reflect.get(L.target,K.method);if(typeof M!=="function")R("hands_repl_method_unavailable");if(W.special==="route"){let T=B[1];if(!uQ(T))R("hands_repl_invalid_route_handler");Z9(T.options);let k=U(T.options),g=async(j)=>{if(!S0(j))R("hands_repl_invalid_route");let A=Reflect.get(j,"fulfill");if(typeof A!=="function")R("hands_repl_invalid_route");await Reflect.apply(A,j,[k])},O=[U(B[0]??null),g],N=await Reflect.apply(M,L.target,O);return V(N,W.returns)}let _=B.map(U);if(K.method==="setInputFiles"){let T=L.kind==="locator"?0:1,k=async(O)=>{if(typeof O!=="string"){if(!G0(O)||typeof O.name!=="string"||typeof O.mimeType!=="string"||!Q9.isBuffer(O.buffer))R("hands_repl_invalid_file_input");return O}if(!$.readWorkspaceFile)R("hands_repl_workspace_required");return $.readWorkspaceFile(O)},g=_[T];_[T]=Array.isArray(g)?await Promise.all(g.map(k)):await k(g)}if(K.method==="goto")await $.beforeNavigation?.();let q=$.actionRecorder?.(),D=await Reflect.apply(M,L.target,_),b={click:"Click browser element",tap:"Click browser element",dblclick:"Double click browser element",fill:"Type text",type:"Type text",pressSequentially:"Type text",clear:"Clear browser field",press:"Press key",scrollIntoViewIfNeeded:"Scroll browser element into view",dragTo:"Drag on computer",selectOption:"Select browser option",check:"Check browser control",uncheck:"Uncheck browser control",hover:"Hover browser element",focus:"Focus browser element",goto:"Open browser page",reload:"Reload browser page",goBack:"Go back in browser",goForward:"Go forward in browser",screenshot:"Take browser screenshot"}[K.method];if(b){let T=Reflect.get(L.target,"page"),k=L.kind==="page"?L.target:typeof T==="function"?Reflect.apply(T,L.target,[]):void 0;q?.(b,S0(k)?k:void 0)}return V(D,W.returns)}})}import{isIP as QZ}from"net";import{Resolver as X1}from"dns/promises";import{isIP as r9}from"net";var J1=[["0.0.0.0",8],["10.0.0.0",8],["100.64.0.0",10],["127.0.0.0",8],["169.254.0.0",16],["172.16.0.0",12],["192.0.0.0",24],["192.0.2.0",24],["192.168.0.0",16],["198.18.0.0",15],["198.51.100.0",24],["203.0.113.0",24],["224.0.0.0",4],["240.0.0.0",4]];function g8($){if(r9($)!==4)return null;let Q=$.split(".");if(Q.length!==4)return null;let Z=0;for(let X of Q){let J=Number(X);if(!Number.isInteger(J)||J<0||J>255)return null;Z=Z*256+J}return Z>>>0}function Y1($,Q,Z){let X=g8(Q);if(X===null)return!1;let J=Z===0?0:4294967295<<32-Z>>>0;return($&J)>>>0===(X&J)>>>0}function rQ($){let Q=g8($);if(Q===null)return!0;return J1.some(([Z,X])=>Y1(Q,Z,X))}function G1($){if(r9($)!==6)return null;let Q=$.toLowerCase(),Z=Q.indexOf("%");if(Z>=0)Q=Q.slice(0,Z);let X=[],J=Q.lastIndexOf(":"),G=J>=0?Q.slice(J+1):"";if(G.includes(".")){let K=g8(G);if(K===null)return null;X=[K>>>16&65535,K&65535],Q=Q.slice(0,J+1)+"0:0"}let z=Q.split("::");if(z.length>2)return null;let H=(K)=>{if(K==="")return[];let L=[];for(let B of K.split(":")){if(B===""||B.length>4||!/^[0-9a-f]+$/.test(B))return null;L.push(Number.parseInt(B,16))}return L},Y=H(z[0]??"");if(Y===null)return null;if(z.length===1){let K=Y;if(K.length!==8)return null;return X.length>0?K.slice(0,6).concat(X):K}let V=H(z[1]??"");if(V===null)return null;let U=8-Y.length-V.length;if(U<0)return null;let F=Y.concat(Array(U).fill(0),V);if(F.length!==8)return null;return X.length>0?F.slice(0,6).concat(X):F}function z1($,Q){return`${$>>8&255}.${$&255}.${Q>>8&255}.${Q&255}`}function K1($){let Q=G1($);if(Q===null)return!0;let[Z,X,J]=Q;if((Z&57344)!==8192)return!0;if(Z===8193&&(X&65024)===0)return!0;if(Z===8193&&X===3512)return!0;if(Z===16383&&(X&61440)===0)return!0;if(Z===8194)return rQ(z1(X,J));return!1}function tQ($){return $.replace(/^\[|\]$/g,"")}function o9($){let Q=tQ($.trim()),Z=r9(Q);if(Z===4)return rQ(Q);if(Z===6)return K1(Q);return!0}function eQ($){if($ instanceof Error&&$.name==="TimeoutError")return"dns_timeout";switch(typeof $==="object"&&$!==null&&"code"in $?$.code:void 0){case"ENOTFOUND":return"dns_not_found";case"ENODATA":return"dns_empty";case"EAI_AGAIN":case"ESERVFAIL":case"ECONNREFUSED":return"dns_temporary";case"ETIMEOUT":case"ETIMEDOUT":return"dns_timeout";default:return"dns_failed"}}var $Z=5000;function H1($){return async(Q,Z)=>{if(Z?.aborted)throw Error("aborted");let X=new X1({timeout:$Z,tries:1});if($)X.setServers($);let J=()=>X.cancel();Z?.addEventListener("abort",J,{once:!0});try{let[G,z]=await Promise.allSettled([X.resolve4(Q),X.resolve6(Q)]),H=[...G.status==="fulfilled"?G.value:[],...z.status==="fulfilled"?z.value:[]];if(H.length>0)return H;let Y=[G,z].flatMap((U)=>U.status==="rejected"?[U.reason]:[]);throw Y.find((U)=>["dns_temporary","dns_timeout"].includes(eQ(U)))??Y[0]??Object.assign(Error("DNS returned no addresses"),{code:"ENODATA"})}finally{Z?.removeEventListener("abort",J)}}}var V1=H1();async function F1($,Q,Z,X){if(X?.aborted)throw Error("aborted");let J=new AbortController,G,z,H=Q($,J.signal);H.catch(()=>{});try{return await Promise.race([H,new Promise((Y,V)=>{if(G=setTimeout(()=>V(new DOMException("DNS lookup timed out","TimeoutError")),Z),X)z=()=>V(Error("aborted")),X.addEventListener("abort",z,{once:!0})})])}finally{if(G!==void 0)clearTimeout(G);if(X&&z)X.removeEventListener("abort",z);J.abort()}}async function p5($,Q=V1,Z){let X=tQ($);if(r9(X))return o9(X)?{ok:!1,reason:"non_public_ip"}:{ok:!0,addresses:[X]};let J;try{J=await F1(X,Q,$Z,Z)}catch(G){return{ok:!1,reason:Z?.aborted?Z.reason instanceof Error&&Z.reason.name==="TimeoutError"?"dns_timeout":"aborted":eQ(G)}}if(J.length===0)return{ok:!1,reason:"dns_empty"};if(J.some(o9))return{ok:!1,reason:"non_public_ip"};return{ok:!0,addresses:J}}var U1=/^(?:\*\.)?[a-z0-9](?:[a-z0-9.-]{0,251}[a-z0-9])?$/;function y8($){return $.length<=253&&U1.test($.toLowerCase())}function W1($,Q){let Z=$.trim().toLowerCase();if(!y8(Z))return!1;if(Z.startsWith("*.")){let X=Z.slice(2);return Q===X||Q.endsWith(`.${X}`)}return Z===Q}function B1($){let Q=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec($);if(!Q)return null;let Z=Q.slice(1).map(Number);return Z.some((X)=>X>255)?null:Z}function h8($,Q=[]){let Z=(X)=>{if(X=X.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,""),!X.includes(":"))return X;try{X=new URL(`http://[${X}]/`).hostname.slice(1,-1)}catch{return X}let J=/^::ffff:([\da-f]+):([\da-f]+)$/.exec(X);if(!J)return X;let G=parseInt(J[1],16),z=parseInt(J[2],16);return`${G>>8}.${G&255}.${z>>8}.${z&255}`};return Q.some((X)=>Z(X)===Z($))}function c0($){$=$.toLowerCase().replace(/^\[|\]$/g,"");let Q=B1($);if(Q){let[G,z,H]=Q;if(G===127)return"loopback";return G===0||G===10||G>=224||G===100&&z>=64&&z<=127||G===169&&z===254||G===172&&z>=16&&z<=31||G===192&&(z===168||z===0&&(H===0||H===2)||z===88&&H===99)||G===198&&(z===18||z===19||z===51&&H===100)||G===203&&z===0&&H===113?"private":"public"}if(!$.includes(":"))return"hostname";try{$=new URL(`http://[${$}]/`).hostname.slice(1,-1)}catch{return"private"}if($==="::1")return"loopback";let Z=/^::ffff:([\da-f]+):([\da-f]+)$/.exec($);if(Z){let G=parseInt(Z[1],16),z=parseInt(Z[2],16);return c0(`${G>>8}.${G&255}.${z>>8}.${z&255}`)==="public"?"public":"private"}let[X,J=0]=$.split(":").map((G)=>parseInt(G||"0",16));return X<8192||X>16383||X===8194||X===8193&&(J<512||J===3512)||X===16383&&J<4096?"private":"public"}function A9($,Q){let Z;try{Z=new URL($)}catch{return{allowed:!1,url:$,host:null,reason:"invalid_url"}}if(["about:","data:","blob:"].includes(Z.protocol))return{allowed:!0,url:$,host:null,reason:"local_document"};if(!["http:","https:","ws:","wss:"].includes(Z.protocol))return{allowed:!1,url:$,host:Z.hostname||null,reason:"unsupported_protocol"};let X=Z.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,"");if(Q.mode==="off")return{allowed:!0,url:$,host:X,reason:"policy_off"};let J=(H)=>({allowed:!1,url:$,host:X,reason:H});if(Z.username||Z.password)return J("invalid_url");if(Q.mode==="public_web"){let H=c0(X)!=="public"&&c0(X)!=="hostname"||X==="localhost"||/\.(?:localhost|local|internal|arpa)$/.test(X)||!X.includes(".")&&!QZ(X)||Boolean(QZ(X)&&o9(X));return{allowed:!H,url:$,host:X,reason:H?"private_network":"public_web"}}let G=Number(Z.port||(["https:","wss:"].includes(Z.protocol)?443:80));if(Q.deniedPorts?.includes(G)||h8(X,Q.deniedHosts))return J("destination_not_allowed");let z=c0(X);if(z==="private"||["local","internal","arpa"].some((H)=>X===H||X.endsWith(`.${H}`)))return J("private_network");if(z==="loopback"||X==="localhost"||X.endsWith(".localhost"))return Q.allowedLoopbackPorts?.includes(G)?{allowed:!0,url:$,host:X,reason:"loopback"}:J("destination_not_allowed");if(Q.allowedDomains.some((H)=>W1(H,X)))return{allowed:!0,url:$,host:X,reason:"allowed_domain"};return{allowed:!1,url:$,host:X,reason:"destination_not_allowed"}}import XZ from"child_process";import{accessSync as N1,constants as M1,readFileSync as j1,statSync as C1}from"fs";import{createRequire as q1}from"module";import{isAbsolute as v8,join as T1}from"path";var c8=Object.freeze({schemaVersion:1,driver:"playwright-core",driverVersion:JZ.dependencies["playwright-core"],browser:"chromium"}),YZ=["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Brave Browser.app/Contents/MacOS/Brave Browser","/Applications/Chromium.app/Contents/MacOS/Chromium"],d8=["/usr/bin/chromium","/usr/bin/chromium-browser","/usr/bin/google-chrome","/usr/bin/google-chrome-stable"];function x9($){try{return N1($,M1.X_OK),v8($)&&C1($).isFile()}catch{return!1}}function p8($,Q=process.platform){let Z=Q==="darwin"?YZ:Q==="linux"?d8:null;return Z?($??Z).find(x9)??null:null}function O1(){if(!process.versions.bun)return;let $=Symbol.for("ara.headless-browser.bun-pipe-owners");if(Object.hasOwn(globalThis,$))return;let Q=[];XZ.spawn=new Proxy(XZ.spawn,{apply(Z,X,J){let G=Reflect.apply(Z,X,J),z=J[1],H=J[2]?.stdio;if(Array.isArray(z)&&z.includes("--remote-debugging-pipe")&&Array.isArray(H)&&H[3]==="pipe"&&H[4]==="pipe")Q.push(G);return G}}),Object.defineProperty(globalThis,$,{value:Q})}async function t9($){if(O1(),$!==void 0){if(!v8($))throw Error("hands_browser_driver_path_must_be_absolute");let X=T1($,"package.json"),J=JSON.parse(j1(X,"utf8"));if(J.name!==c8.driver)throw Error("hands_browser_wrong_driver");let G=q1(X)($),z=G.default?.chromium??G.chromium;if(!z)throw Error("hands_browser_missing_chromium");return{version:J.version,chromium:z}}let[Q,Z]=await Promise.all([import("./index-9aw1gjs5.js"),import("./package-56yg8k4a.js").then((m)=>L1(m.default,1))]);return{version:Z.default.version,chromium:Q.chromium}}var D1=($,Q=c8.driverVersion)=>({status:"unavailable",reason:$,expectedDriverVersion:Q}),_1=($)=>$.loadDriver?.()??t9($.driverModuleDirectory);async function X9($={}){return GZ($,c8.driverVersion)}async function u8($,Q={}){if($.driverVersion!=="1.61.1"||!v8($.driverModuleDirectory))throw Error("hands_browser_invalid_managed_compatibility");return GZ({...Q,driverModuleDirectory:$.driverModuleDirectory,allowSystemBrowser:!0},$.driverVersion)}async function GZ($,Q){let Z=(Y)=>D1(Y,Q),X=$.platform??process.platform;if(X!=="linux"&&X!=="darwin")return Z("unsupported_platform");let J;try{J=await _1($)}catch{return Z("driver_missing")}if(J.version!==Q)return Z("driver_version_mismatch");let G=(Y,V)=>({status:"resolved",executablePath:Y,source:V,driverVersion:J.version});if($.executablePath!==void 0)return x9($.executablePath)?G($.executablePath,"configured"):Z("executable_missing");let z=J.chromium.executablePath();if(x9(z))return G(z,"managed");let H=$.allowSystemBrowser===!0?p8($.systemCandidates,X):null;return H?G(H,"system"):Z("executable_missing")}var g1=["/usr/local/bin/chromium",...d8];function y1($,Q=WZ()){return p8($??(Q==="linux"?g1:void 0),Q)}async function h1(){try{return(await t9()).chromium}catch{return w1(import.meta.url)("playwright-core").chromium}}var v1=1048576,c1=105000,d1=20000,HZ=5000,p1=2000,u1=1000,l1=30000,VZ=81920,s1={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif"};async function n1($,Q){let Z=new URL($.url()),X={...await $.allHeaders(),host:Z.host};for(let J of Object.keys(X))if(/^(?:proxy-|connection$|upgrade$|transfer-encoding$|content-length$)/i.test(J))delete X[J];return new Promise((J,G)=>{let H=(Z.protocol==="https:"?k1:b1)(Z,{method:$.method(),headers:X,agent:!1,lookup:(V,U,F)=>{let K=d0.isIP(Q);if(U.all)F(null,[{address:Q,family:K}]);else F(null,Q,K)}},(V)=>{let U=[],F=0;V.on("data",(K)=>{if(F+=K.length,F>33554432)H.destroy(Error("hands_browser_response_too_large"));else U.push(K)}),V.on("error",G),V.on("end",()=>{let K={};for(let[L,B]of Object.entries(V.headers))if(B!==void 0&&!["transfer-encoding","connection","content-length"].includes(L))K[L]=Array.isArray(B)?B.join(`
|
|
306
|
+
`.trim();import{Buffer as Q9}from"buffer";import{randomUUID as a3}from"crypto";class lQ extends Error{code;constructor($){super($==="hands_repl_private_profile_attribute_denied"?"Private browser attribute read denied.":$);this.code=$;this.name="HandsReplBrowserDispatcherError"}}var sQ=new Set(["__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","__proto__","constructor","prototype"]),dQ=/^hands_[A-Za-z0-9_-]{8,128}$/,o3=2048,nQ=32,iQ=1e4,r3=new Set(["href","src","alt","title","role","aria-label","aria-expanded","aria-checked","aria-selected","aria-disabled","placeholder","type","name","data-testid"]);function t3($){let Q=$.split("+"),Z=(Q.pop()??"").replace(/^Key/,"").toLowerCase();if(Z==="f12")return!0;if(Q.some((X)=>["Control","ControlOrMeta","Meta"].includes(X))&&["l","n","t","j","i","p","s","w","u","o","r","tab","pageup","pagedown"].includes(Z))return!0;if(Q.some((X)=>["Control","ControlOrMeta","Meta"].includes(X))&&Q.includes("Shift")&&Z==="c")return!0;return Q.includes("Alt")&&["d","arrowleft","arrowright","home"].includes(Z)}var e3=($)=>{let Q=$.closest("a[href],area[href]");return{password:$.tagName==="INPUT"&&$.type==="password",executableLink:Boolean(Q&&!/^(https?:|about:blank)/i.test(Q.href))}},aQ={browser:{close:{returns:"void"},contexts:{returns:"context[]"},isConnected:{returns:"json"},version:{returns:"json"}},context:{addCookies:{returns:"void"},addInitScript:{returns:"void"},browser:{returns:"browser"},clearCookies:{returns:"void"},clearPermissions:{returns:"void"},close:{returns:"void"},cookies:{returns:"json"},grantPermissions:{returns:"void"},newPage:{returns:"page"},pages:{returns:"page[]"},setDefaultNavigationTimeout:{returns:"void"},setDefaultTimeout:{returns:"void"},setExtraHTTPHeaders:{returns:"void"},setGeolocation:{returns:"void"},setHTTPCredentials:{returns:"void"},setOffline:{returns:"void"},setViewportSize:{returns:"void"},storageState:{returns:"json"},viewportSize:{returns:"json",special:"contextViewportSize"}},page:{addInitScript:{returns:"void"},addScriptTag:{returns:"void"},addStyleTag:{returns:"void"},bringToFront:{returns:"void"},close:{returns:"void"},content:{returns:"json"},context:{returns:"context"},emulateMedia:{returns:"void"},evaluate:{returns:"json",requiresStringSource:!0},frame:{returns:"frame"},frameLocator:{returns:"frameLocator"},frames:{returns:"frame[]"},getByAltText:{returns:"locator"},getByLabel:{returns:"locator"},getByPlaceholder:{returns:"locator"},getByRole:{returns:"locator"},getByTestId:{returns:"locator"},getByText:{returns:"locator"},getByTitle:{returns:"locator"},goBack:{returns:"void"},goForward:{returns:"void"},goto:{returns:"void"},isClosed:{returns:"json"},locator:{returns:"locator"},mainFrame:{returns:"frame"},opener:{returns:"page"},pdf:{returns:"bytes"},reload:{returns:"void"},screenshot:{returns:"bytes"},selectOption:{returns:"json"},setContent:{returns:"void"},setDefaultNavigationTimeout:{returns:"void"},setDefaultTimeout:{returns:"void"},setExtraHTTPHeaders:{returns:"void"},setInputFiles:{returns:"void"},setViewportSize:{returns:"void"},title:{returns:"json"},url:{returns:"json"},viewportSize:{returns:"json"},waitForFunction:{returns:"void",requiresStringSource:!0},waitForLoadState:{returns:"void"},waitForNavigation:{returns:"void"},waitForTimeout:{returns:"void"},waitForURL:{returns:"void"}},locator:{all:{returns:"locator[]"},allInnerTexts:{returns:"json"},allTextContents:{returns:"json"},and:{returns:"locator"},ariaSnapshot:{returns:"json"},blur:{returns:"void"},boundingBox:{returns:"json"},check:{returns:"void"},clear:{returns:"void"},click:{returns:"void"},contentFrame:{returns:"frameLocator"},count:{returns:"json"},dblclick:{returns:"void"},dragTo:{returns:"void"},evaluate:{returns:"json",requiresStringSource:!0},evaluateAll:{returns:"json",requiresStringSource:!0},fill:{returns:"void"},filter:{returns:"locator"},first:{returns:"locator",special:"property"},focus:{returns:"void"},getAttribute:{returns:"json"},getByAltText:{returns:"locator"},getByLabel:{returns:"locator"},getByPlaceholder:{returns:"locator"},getByRole:{returns:"locator"},getByTestId:{returns:"locator"},getByText:{returns:"locator"},getByTitle:{returns:"locator"},hover:{returns:"void"},innerHTML:{returns:"json"},innerText:{returns:"json"},inputValue:{returns:"json"},isChecked:{returns:"json"},isEditable:{returns:"json"},isEnabled:{returns:"json"},isHidden:{returns:"json"},isVisible:{returns:"json"},last:{returns:"locator",special:"property"},locator:{returns:"locator"},nth:{returns:"locator"},or:{returns:"locator"},page:{returns:"page"},press:{returns:"void"},pressSequentially:{returns:"void"},scrollIntoViewIfNeeded:{returns:"void"},screenshot:{returns:"bytes"},selectOption:{returns:"json"},setInputFiles:{returns:"void"},tap:{returns:"void"},textContent:{returns:"json"},type:{returns:"void"},uncheck:{returns:"void"},waitFor:{returns:"void"}},frame:{addScriptTag:{returns:"void"},addStyleTag:{returns:"void"},childFrames:{returns:"frame[]"},content:{returns:"json"},evaluate:{returns:"json",requiresStringSource:!0},frameLocator:{returns:"frameLocator"},getByAltText:{returns:"locator"},getByLabel:{returns:"locator"},getByPlaceholder:{returns:"locator"},getByRole:{returns:"locator"},getByTestId:{returns:"locator"},getByText:{returns:"locator"},getByTitle:{returns:"locator"},goto:{returns:"void"},isDetached:{returns:"json"},locator:{returns:"locator"},name:{returns:"json"},page:{returns:"page"},parentFrame:{returns:"frame"},setContent:{returns:"void"},title:{returns:"json"},url:{returns:"json"},waitForFunction:{returns:"void",requiresStringSource:!0},waitForLoadState:{returns:"void"},waitForNavigation:{returns:"void"},waitForTimeout:{returns:"void"},waitForURL:{returns:"void"}},frameLocator:{getByAltText:{returns:"locator"},getByLabel:{returns:"locator"},getByPlaceholder:{returns:"locator"},getByRole:{returns:"locator"},getByTestId:{returns:"locator"},getByText:{returns:"locator"},getByTitle:{returns:"locator"},locator:{returns:"locator"},owner:{returns:"locator"}}};function R($){throw new lQ($)}function G0($){if(!$||typeof $!=="object"||Array.isArray($))return!1;let Q=Object.getPrototypeOf($);return Q===Object.prototype||Q===null}function Z9($,Q=0,Z={nodes:0}){if(Q>nQ||++Z.nodes>iQ)R("hands_repl_json_too_complex");if($===null||typeof $==="boolean"||typeof $==="string")return;if(typeof $==="number"){if(!Number.isFinite($))R("hands_repl_invalid_json");return}if(Array.isArray($)){for(let X of $)Z9(X,Q+1,Z);return}if(!G0($))R("hands_repl_invalid_json");for(let[X,J]of Object.entries($)){if(sQ.has(X))R("hands_repl_invalid_json");Z9(J,Q+1,Z)}}function m8($){return typeof $==="string"&&Object.hasOwn(aQ,$)}function $1($){if(!$.endsWith("[]"))return null;let Q=$.slice(0,-2);return m8(Q)?Q:null}function pQ($){return G0($)&&Object.keys($).length===2&&$.$handsRepl==="bytes"&&typeof $.base64==="string"}function Q1($){return G0($)&&Object.keys($).length===1&&$.$handsRepl==="undefined"}function uQ($){return G0($)&&Object.keys($).length===2&&$.$handsRepl==="routeFulfill"&&"options"in $}function S0($){return!!$&&typeof $==="object"}function a9(){return Object.freeze({$handsRepl:"undefined"})}function Z1($){if(!Q9.isBuffer($)&&!($ instanceof Uint8Array))R("hands_repl_expected_bytes");return Object.freeze({$handsRepl:"bytes",base64:Q9.from($).toString("base64")})}function oQ($){if(!S0($.browser)||!S0($.context)||!S0($.page))R("hands_repl_invalid_roots");if(typeof $.a11y!=="function"||typeof $.view!=="function")R("hands_repl_invalid_callbacks");let Q=$.maxHandles??o3;if(!Number.isInteger(Q)||Q<3||Q>1e5)R("hands_repl_invalid_handle_limit");let Z=new Map,X=new WeakMap,J=$.createOpaqueId??a3,G=(K,L)=>{if(!S0(L))R("hands_repl_expected_target");let B=X.get(L)?.get(K);if(B)return B;if(Z.size>=Q)R("hands_repl_handle_limit");let W="";for(let q=0;q<16;q+=1){let D=`hands_${J()}`;if(dQ.test(D)&&!Z.has(D)){W=D;break}}if(!W)R("hands_repl_invalid_opaque_id");let M=Object.freeze({$handsRepl:"handle",id:W,kind:K});Z.set(W,{kind:K,target:L});let _=X.get(L);if(!_)_=new Map,X.set(L,_);return _.set(K,M),M},z=Object.freeze({browser:G("browser",$.browser),context:G("context",$.context),page:G("page",$.page)}),H=(K)=>{if(!G0(K)||Object.keys(K).length!==3||K.$handsRepl!=="handle"||typeof K.id!=="string"||!dQ.test(K.id)||!m8(K.kind))R("hands_repl_invalid_handle");let L=Z.get(K.id);if(!L||L.kind!==K.kind)R("hands_repl_unknown_handle");return L},Y=(K,L=0,B=new Set)=>{if(L>nQ)R("hands_repl_json_too_complex");if(K===void 0)return a9();if(K===null||typeof K==="boolean"||typeof K==="string")return K;if(typeof K==="number"){if(!Number.isFinite(K))R("hands_repl_non_json_result");return K}if(Array.isArray(K)){if(B.has(K))R("hands_repl_cyclic_result");B.add(K);try{return K.map((W)=>Y(W,L+1,B))}finally{B.delete(K)}}if(!G0(K))R("hands_repl_non_json_result");if(B.has(K))R("hands_repl_cyclic_result");B.add(K);try{let W=Object.create(null);for(let M of Object.keys(K)){let _=Object.getOwnPropertyDescriptor(K,M);if(!_||!("value"in _))continue;W[M]=Y(_.value,L+1,B)}return W}finally{B.delete(K)}},V=(K,L)=>{if(L==="void")return a9();if(L==="json")return Y(K);if(L==="bytes")return Z1(K);let B=$1(L);if(B){if(!Array.isArray(K))R("hands_repl_expected_target_list");if(B==="context"&&K.some((W)=>W!==$.context))R("hands_repl_foreign_context");return K.map((W)=>G(B,W))}if(K===null||K===void 0)return a9();if(!m8(L))R("hands_repl_invalid_return_kind");if(L==="context"&&K!==$.context)R("hands_repl_foreign_context");return G(L,K)},U=(K)=>{if(G0(K)&&K.$handsRepl==="handle")return H(K).target;if(pQ(K))return Q9.from(K.base64,"base64");if(Q1(K))return;if(uQ(K))R("hands_repl_route_fulfill_only");if(Array.isArray(K))return K.map(U);if(!G0(K))return K;let L=Object.create(null);for(let[B,W]of Object.entries(K))L[B]=U(W);return L};return Object.freeze({roots:z,dispatch:async(K)=>{if(!G0(K)||typeof K.type!=="string")R("hands_repl_invalid_request");if(K.type==="a11y"){let T=K.target===void 0?Z.get(z.page.id):H(K.target);if(!T||T.kind!=="page"&&T.kind!=="locator")R("hands_repl_invalid_a11y_target");return Y(await $.a11y(T.target))}if(K.type==="view"){if(Z9(K.source),K.options!==void 0)Z9(K.options);let T=pQ(K.source)?Q9.from(K.source.base64,"base64"):K.source;if($.privateProfile&&!Q9.isBuffer(T))R("hands_repl_profile_requires_image_bytes");return Y(await $.view(T,K.options))}if(K.type!=="call")R("hands_repl_invalid_request");if(typeof K.method!=="string"||K.method.length===0||K.method.length>128)R("hands_repl_invalid_method");if(sQ.has(K.method))R("hands_repl_forbidden_method");let L=H(K.target),B=K.args??[];if(!Array.isArray(B))R("hands_repl_invalid_arguments");if(Z9(B),L.kind==="page"&&K.method==="captureScreenshot"){if(B.length!==0)R("hands_repl_invalid_arguments");if(!$.screenshotExport)R("hands_repl_screenshot_export_unavailable");return Y(await $.screenshotExport(L.target))}if(L.kind==="context"&&["startRecording","stopRecording"].includes(K.method)){if(!$.recording||L.target!==$.context)R("hands_repl_recording_unavailable");if(B.length>(K.method==="startRecording"?1:0))R("hands_repl_invalid_arguments");return Y(K.method==="startRecording"?await $.recording.start(B[0]):await $.recording.stop())}if($.privateProfile){let T=K.method;if(["evaluate","evaluateAll","waitForFunction","addInitScript","addScriptTag","addStyleTag","setContent","setInputFiles","route","content","cookies","storageState","addCookies","clearCookies","setExtraHTTPHeaders","setHTTPCredentials","grantPermissions","clearPermissions","innerHTML","textContent","allTextContents"].includes(T)||L.kind==="browser"&&T==="close"||L.kind==="context"&&T==="close")R("hands_repl_private_profile_method_denied");if(L.kind==="browser"&&T==="contexts")return V([$.context],"context[]");if((T==="screenshot"||T==="pdf")&&G0(B[0])&&(("path"in B[0])||("style"in B[0])))R("hands_repl_private_profile_path_denied");if(T==="goto"){if(typeof B[0]!=="string")R("hands_repl_private_profile_url_denied");try{let k=new URL(B[0]);if(!["http:","https:"].includes(k.protocol)&&B[0]!=="about:blank")R("hands_repl_private_profile_url_denied")}catch{R("hands_repl_private_profile_url_denied")}}if(T==="getAttribute"&&(typeof B[0]!=="string"||!r3.has(B[0].toLowerCase())))R("hands_repl_private_profile_attribute_denied");if(L.kind==="locator"&&["innerText","allInnerTexts","getAttribute"].includes(T)){let k=[L.target];if(T==="allInnerTexts"){let g=Reflect.get(L.target,"all");if(typeof g!=="function")R("hands_repl_private_profile_probe_unavailable");let O=await Reflect.apply(g,L.target,[]);if(!Array.isArray(O)||O.length>iQ||!O.every(S0))R("hands_repl_private_profile_probe_unavailable");k=O}for(let g of k){let O=Reflect.get(g,"isVisible");if(typeof O!=="function"||!await Reflect.apply(O,g,[]))R("hands_repl_private_profile_hidden_value_denied")}}if(T==="press"&&typeof B[0]==="string"&&t3(B[0]))R("hands_repl_private_profile_browser_shortcut_denied");if(L.kind==="locator"&&["inputValue","click","dblclick","tap","press"].includes(T)){let k=Reflect.get(L.target,"evaluate");if(typeof k!=="function")R("hands_repl_private_profile_probe_unavailable");let g=await Reflect.apply(k,L.target,[e3]);if(!G0(g)||typeof g.password!=="boolean"||typeof g.executableLink!=="boolean")R("hands_repl_private_profile_probe_unavailable");if(T==="inputValue"&&g.password)R("hands_repl_private_profile_password_denied");if(T!=="inputValue"&&g.executableLink)R("hands_repl_private_profile_url_denied");if(T==="inputValue"){let O=Reflect.get(L.target,"isVisible");if(typeof O!=="function"||!await Reflect.apply(O,L.target,[]))R("hands_repl_private_profile_hidden_value_denied")}}}let W=aQ[L.kind][K.method];if(!W)R("hands_repl_method_not_allowed");if(W.requiresStringSource&&typeof B[0]!=="string")R("hands_repl_string_source_required");if(L.kind==="browser"&&K.method==="contexts")return[z.context];if(["addInitScript","addScriptTag","addStyleTag","screenshot","pdf","storageState"].includes(K.method)&&B.some((T)=>G0(T)&&("path"in T)))R("hands_repl_file_path_not_allowed");if(K.method==="goto"&&typeof B[0]==="string"){let T;try{T=new URL(B[0]).protocol}catch{R("hands_repl_invalid_url")}if(!["http:","https:","data:","about:","blob:"].includes(T))R("hands_repl_file_path_not_allowed")}if(W.special==="contextViewportSize"){let T=Reflect.get(L.target,"pages");if(typeof T!=="function")R("hands_repl_method_unavailable");let k=await Reflect.apply(T,L.target,[]),g=Array.isArray(k)?k[0]:void 0,O=S0(g)?Reflect.get(g,"viewportSize"):void 0;if(typeof O!=="function")return a9();return V(await Reflect.apply(O,g,[]),W.returns)}if(W.special==="property"){let T=Reflect.get(L.target,K.method);return V(typeof T==="function"?Reflect.apply(T,L.target,[]):T,W.returns)}let M=Reflect.get(L.target,K.method);if(typeof M!=="function")R("hands_repl_method_unavailable");if(W.special==="route"){let T=B[1];if(!uQ(T))R("hands_repl_invalid_route_handler");Z9(T.options);let k=U(T.options),g=async(j)=>{if(!S0(j))R("hands_repl_invalid_route");let A=Reflect.get(j,"fulfill");if(typeof A!=="function")R("hands_repl_invalid_route");await Reflect.apply(A,j,[k])},O=[U(B[0]??null),g],N=await Reflect.apply(M,L.target,O);return V(N,W.returns)}let _=B.map(U);if(K.method==="setInputFiles"){let T=L.kind==="locator"?0:1,k=async(O)=>{if(typeof O!=="string"){if(!G0(O)||typeof O.name!=="string"||typeof O.mimeType!=="string"||!Q9.isBuffer(O.buffer))R("hands_repl_invalid_file_input");return O}if(!$.readWorkspaceFile)R("hands_repl_workspace_required");return $.readWorkspaceFile(O)},g=_[T];_[T]=Array.isArray(g)?await Promise.all(g.map(k)):await k(g)}if(K.method==="goto")await $.beforeNavigation?.();let q=$.actionRecorder?.(),D=await Reflect.apply(M,L.target,_),b={click:"Click browser element",tap:"Click browser element",dblclick:"Double click browser element",fill:"Type text",type:"Type text",pressSequentially:"Type text",clear:"Clear browser field",press:"Press key",scrollIntoViewIfNeeded:"Scroll browser element into view",dragTo:"Drag on computer",selectOption:"Select browser option",check:"Check browser control",uncheck:"Uncheck browser control",hover:"Hover browser element",focus:"Focus browser element",goto:"Open browser page",reload:"Reload browser page",goBack:"Go back in browser",goForward:"Go forward in browser",screenshot:"Take browser screenshot"}[K.method];if(b){let T=Reflect.get(L.target,"page"),k=L.kind==="page"?L.target:typeof T==="function"?Reflect.apply(T,L.target,[]):void 0;q?.(b,S0(k)?k:void 0)}return V(D,W.returns)}})}import{isIP as QZ}from"net";import{Resolver as X1}from"dns/promises";import{isIP as r9}from"net";var J1=[["0.0.0.0",8],["10.0.0.0",8],["100.64.0.0",10],["127.0.0.0",8],["169.254.0.0",16],["172.16.0.0",12],["192.0.0.0",24],["192.0.2.0",24],["192.168.0.0",16],["198.18.0.0",15],["198.51.100.0",24],["203.0.113.0",24],["224.0.0.0",4],["240.0.0.0",4]];function g8($){if(r9($)!==4)return null;let Q=$.split(".");if(Q.length!==4)return null;let Z=0;for(let X of Q){let J=Number(X);if(!Number.isInteger(J)||J<0||J>255)return null;Z=Z*256+J}return Z>>>0}function Y1($,Q,Z){let X=g8(Q);if(X===null)return!1;let J=Z===0?0:4294967295<<32-Z>>>0;return($&J)>>>0===(X&J)>>>0}function rQ($){let Q=g8($);if(Q===null)return!0;return J1.some(([Z,X])=>Y1(Q,Z,X))}function G1($){if(r9($)!==6)return null;let Q=$.toLowerCase(),Z=Q.indexOf("%");if(Z>=0)Q=Q.slice(0,Z);let X=[],J=Q.lastIndexOf(":"),G=J>=0?Q.slice(J+1):"";if(G.includes(".")){let K=g8(G);if(K===null)return null;X=[K>>>16&65535,K&65535],Q=Q.slice(0,J+1)+"0:0"}let z=Q.split("::");if(z.length>2)return null;let H=(K)=>{if(K==="")return[];let L=[];for(let B of K.split(":")){if(B===""||B.length>4||!/^[0-9a-f]+$/.test(B))return null;L.push(Number.parseInt(B,16))}return L},Y=H(z[0]??"");if(Y===null)return null;if(z.length===1){let K=Y;if(K.length!==8)return null;return X.length>0?K.slice(0,6).concat(X):K}let V=H(z[1]??"");if(V===null)return null;let U=8-Y.length-V.length;if(U<0)return null;let F=Y.concat(Array(U).fill(0),V);if(F.length!==8)return null;return X.length>0?F.slice(0,6).concat(X):F}function z1($,Q){return`${$>>8&255}.${$&255}.${Q>>8&255}.${Q&255}`}function K1($){let Q=G1($);if(Q===null)return!0;let[Z,X,J]=Q;if((Z&57344)!==8192)return!0;if(Z===8193&&(X&65024)===0)return!0;if(Z===8193&&X===3512)return!0;if(Z===16383&&(X&61440)===0)return!0;if(Z===8194)return rQ(z1(X,J));return!1}function tQ($){return $.replace(/^\[|\]$/g,"")}function o9($){let Q=tQ($.trim()),Z=r9(Q);if(Z===4)return rQ(Q);if(Z===6)return K1(Q);return!0}function eQ($){if($ instanceof Error&&$.name==="TimeoutError")return"dns_timeout";switch(typeof $==="object"&&$!==null&&"code"in $?$.code:void 0){case"ENOTFOUND":return"dns_not_found";case"ENODATA":return"dns_empty";case"EAI_AGAIN":case"ESERVFAIL":case"ECONNREFUSED":return"dns_temporary";case"ETIMEOUT":case"ETIMEDOUT":return"dns_timeout";default:return"dns_failed"}}var $Z=5000;function H1($){return async(Q,Z)=>{if(Z?.aborted)throw Error("aborted");let X=new X1({timeout:$Z,tries:1});if($)X.setServers($);let J=()=>X.cancel();Z?.addEventListener("abort",J,{once:!0});try{let[G,z]=await Promise.allSettled([X.resolve4(Q),X.resolve6(Q)]),H=[...G.status==="fulfilled"?G.value:[],...z.status==="fulfilled"?z.value:[]];if(H.length>0)return H;let Y=[G,z].flatMap((U)=>U.status==="rejected"?[U.reason]:[]);throw Y.find((U)=>["dns_temporary","dns_timeout"].includes(eQ(U)))??Y[0]??Object.assign(Error("DNS returned no addresses"),{code:"ENODATA"})}finally{Z?.removeEventListener("abort",J)}}}var V1=H1();async function F1($,Q,Z,X){if(X?.aborted)throw Error("aborted");let J=new AbortController,G,z,H=Q($,J.signal);H.catch(()=>{});try{return await Promise.race([H,new Promise((Y,V)=>{if(G=setTimeout(()=>V(new DOMException("DNS lookup timed out","TimeoutError")),Z),X)z=()=>V(Error("aborted")),X.addEventListener("abort",z,{once:!0})})])}finally{if(G!==void 0)clearTimeout(G);if(X&&z)X.removeEventListener("abort",z);J.abort()}}async function p5($,Q=V1,Z){let X=tQ($);if(r9(X))return o9(X)?{ok:!1,reason:"non_public_ip"}:{ok:!0,addresses:[X]};let J;try{J=await F1(X,Q,$Z,Z)}catch(G){return{ok:!1,reason:Z?.aborted?Z.reason instanceof Error&&Z.reason.name==="TimeoutError"?"dns_timeout":"aborted":eQ(G)}}if(J.length===0)return{ok:!1,reason:"dns_empty"};if(J.some(o9))return{ok:!1,reason:"non_public_ip"};return{ok:!0,addresses:J}}var U1=/^(?:\*\.)?[a-z0-9](?:[a-z0-9.-]{0,251}[a-z0-9])?$/;function y8($){return $.length<=253&&U1.test($.toLowerCase())}function W1($,Q){let Z=$.trim().toLowerCase();if(!y8(Z))return!1;if(Z.startsWith("*.")){let X=Z.slice(2);return Q===X||Q.endsWith(`.${X}`)}return Z===Q}function B1($){let Q=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec($);if(!Q)return null;let Z=Q.slice(1).map(Number);return Z.some((X)=>X>255)?null:Z}function h8($,Q=[]){let Z=(X)=>{if(X=X.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,""),!X.includes(":"))return X;try{X=new URL(`http://[${X}]/`).hostname.slice(1,-1)}catch{return X}let J=/^::ffff:([\da-f]+):([\da-f]+)$/.exec(X);if(!J)return X;let G=parseInt(J[1],16),z=parseInt(J[2],16);return`${G>>8}.${G&255}.${z>>8}.${z&255}`};return Q.some((X)=>Z(X)===Z($))}function c0($){$=$.toLowerCase().replace(/^\[|\]$/g,"");let Q=B1($);if(Q){let[G,z,H]=Q;if(G===127)return"loopback";return G===0||G===10||G>=224||G===100&&z>=64&&z<=127||G===169&&z===254||G===172&&z>=16&&z<=31||G===192&&(z===168||z===0&&(H===0||H===2)||z===88&&H===99)||G===198&&(z===18||z===19||z===51&&H===100)||G===203&&z===0&&H===113?"private":"public"}if(!$.includes(":"))return"hostname";try{$=new URL(`http://[${$}]/`).hostname.slice(1,-1)}catch{return"private"}if($==="::1")return"loopback";let Z=/^::ffff:([\da-f]+):([\da-f]+)$/.exec($);if(Z){let G=parseInt(Z[1],16),z=parseInt(Z[2],16);return c0(`${G>>8}.${G&255}.${z>>8}.${z&255}`)==="public"?"public":"private"}let[X,J=0]=$.split(":").map((G)=>parseInt(G||"0",16));return X<8192||X>16383||X===8194||X===8193&&(J<512||J===3512)||X===16383&&J<4096?"private":"public"}function A9($,Q){let Z;try{Z=new URL($)}catch{return{allowed:!1,url:$,host:null,reason:"invalid_url"}}if(["about:","data:","blob:"].includes(Z.protocol))return{allowed:!0,url:$,host:null,reason:"local_document"};if(!["http:","https:","ws:","wss:"].includes(Z.protocol))return{allowed:!1,url:$,host:Z.hostname||null,reason:"unsupported_protocol"};let X=Z.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,"");if(Q.mode==="off")return{allowed:!0,url:$,host:X,reason:"policy_off"};let J=(H)=>({allowed:!1,url:$,host:X,reason:H});if(Z.username||Z.password)return J("invalid_url");if(Q.mode==="public_web"){let H=c0(X)!=="public"&&c0(X)!=="hostname"||X==="localhost"||/\.(?:localhost|local|internal|arpa)$/.test(X)||!X.includes(".")&&!QZ(X)||Boolean(QZ(X)&&o9(X));return{allowed:!H,url:$,host:X,reason:H?"private_network":"public_web"}}let G=Number(Z.port||(["https:","wss:"].includes(Z.protocol)?443:80));if(Q.deniedPorts?.includes(G)||h8(X,Q.deniedHosts))return J("destination_not_allowed");let z=c0(X);if(z==="private"||["local","internal","arpa"].some((H)=>X===H||X.endsWith(`.${H}`)))return J("private_network");if(z==="loopback"||X==="localhost"||X.endsWith(".localhost"))return Q.allowedLoopbackPorts?.includes(G)?{allowed:!0,url:$,host:X,reason:"loopback"}:J("destination_not_allowed");if(Q.allowedDomains.some((H)=>W1(H,X)))return{allowed:!0,url:$,host:X,reason:"allowed_domain"};return{allowed:!1,url:$,host:X,reason:"destination_not_allowed"}}import XZ from"child_process";import{accessSync as N1,constants as M1,readFileSync as j1,statSync as C1}from"fs";import{createRequire as q1}from"module";import{isAbsolute as v8,join as T1}from"path";var c8=Object.freeze({schemaVersion:1,driver:"playwright-core",driverVersion:JZ.dependencies["playwright-core"],browser:"chromium"}),YZ=["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Brave Browser.app/Contents/MacOS/Brave Browser","/Applications/Chromium.app/Contents/MacOS/Chromium"],d8=["/usr/bin/chromium","/usr/bin/chromium-browser","/usr/bin/google-chrome","/usr/bin/google-chrome-stable"];function x9($){try{return N1($,M1.X_OK),v8($)&&C1($).isFile()}catch{return!1}}function p8($,Q=process.platform){let Z=Q==="darwin"?YZ:Q==="linux"?d8:null;return Z?($??Z).find(x9)??null:null}function O1(){if(!process.versions.bun)return;let $=Symbol.for("ara.headless-browser.bun-pipe-owners");if(Object.hasOwn(globalThis,$))return;let Q=[];XZ.spawn=new Proxy(XZ.spawn,{apply(Z,X,J){let G=Reflect.apply(Z,X,J),z=J[1],H=J[2]?.stdio;if(Array.isArray(z)&&z.includes("--remote-debugging-pipe")&&Array.isArray(H)&&H[3]==="pipe"&&H[4]==="pipe")Q.push(G);return G}}),Object.defineProperty(globalThis,$,{value:Q})}async function t9($){if(O1(),$!==void 0){if(!v8($))throw Error("hands_browser_driver_path_must_be_absolute");let X=T1($,"package.json"),J=JSON.parse(j1(X,"utf8"));if(J.name!==c8.driver)throw Error("hands_browser_wrong_driver");let G=q1(X)($),z=G.default?.chromium??G.chromium;if(!z)throw Error("hands_browser_missing_chromium");return{version:J.version,chromium:z}}let[Q,Z]=await Promise.all([import("./index-bwnyk312.js"),import("./package-q8gdr1z1.js").then((m)=>L1(m.default,1))]);return{version:Z.default.version,chromium:Q.chromium}}var D1=($,Q=c8.driverVersion)=>({status:"unavailable",reason:$,expectedDriverVersion:Q}),_1=($)=>$.loadDriver?.()??t9($.driverModuleDirectory);async function X9($={}){return GZ($,c8.driverVersion)}async function u8($,Q={}){if($.driverVersion!=="1.61.1"||!v8($.driverModuleDirectory))throw Error("hands_browser_invalid_managed_compatibility");return GZ({...Q,driverModuleDirectory:$.driverModuleDirectory,allowSystemBrowser:!0},$.driverVersion)}async function GZ($,Q){let Z=(Y)=>D1(Y,Q),X=$.platform??process.platform;if(X!=="linux"&&X!=="darwin")return Z("unsupported_platform");let J;try{J=await _1($)}catch{return Z("driver_missing")}if(J.version!==Q)return Z("driver_version_mismatch");let G=(Y,V)=>({status:"resolved",executablePath:Y,source:V,driverVersion:J.version});if($.executablePath!==void 0)return x9($.executablePath)?G($.executablePath,"configured"):Z("executable_missing");let z=J.chromium.executablePath();if(x9(z))return G(z,"managed");let H=$.allowSystemBrowser===!0?p8($.systemCandidates,X):null;return H?G(H,"system"):Z("executable_missing")}var g1=["/usr/local/bin/chromium",...d8];function y1($,Q=WZ()){return p8($??(Q==="linux"?g1:void 0),Q)}async function h1(){try{return(await t9()).chromium}catch{return w1(import.meta.url)("playwright-core").chromium}}var v1=1048576,c1=105000,d1=20000,HZ=5000,p1=2000,u1=1000,l1=30000,VZ=81920,s1={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif"};async function n1($,Q){let Z=new URL($.url()),X={...await $.allHeaders(),host:Z.host};for(let J of Object.keys(X))if(/^(?:proxy-|connection$|upgrade$|transfer-encoding$|content-length$)/i.test(J))delete X[J];return new Promise((J,G)=>{let H=(Z.protocol==="https:"?k1:b1)(Z,{method:$.method(),headers:X,agent:!1,lookup:(V,U,F)=>{let K=d0.isIP(Q);if(U.all)F(null,[{address:Q,family:K}]);else F(null,Q,K)}},(V)=>{let U=[],F=0;V.on("data",(K)=>{if(F+=K.length,F>33554432)H.destroy(Error("hands_browser_response_too_large"));else U.push(K)}),V.on("error",G),V.on("end",()=>{let K={};for(let[L,B]of Object.entries(V.headers))if(B!==void 0&&!["transfer-encoding","connection","content-length"].includes(L))K[L]=Array.isArray(B)?B.join(`
|
|
307
307
|
`):B;J({status:V.statusCode??502,headers:K,body:Buffer.concat(U)})})}),Y=setTimeout(()=>H.destroy(Error("hands_browser_fetch_timeout")),l1);H.once("close",()=>clearTimeout(Y)),H.on("error",G),H.end($.postDataBuffer()??void 0)})}async function i1($,Q,Z=()=>{},X={lookup:(J)=>S1(J,{all:!0}),fetch:n1}){let J=new WeakSet,G=new WeakMap,z=(H)=>{let Y=G.get(H);if(Y)return Y;let V=(async()=>{if(!$.newCDPSession)return;let U=await $.newCDPSession(H),F=new Map;U.on("Network.loadingFinished",({requestId:K})=>F.delete(K)),U.on("Network.loadingFailed",({requestId:K})=>F.delete(K)),U.on("Fetch.requestPaused",async(K)=>{let L=K.networkId??K.requestId,B=K.redirectedRequestId?(F.get(L)??0)+1:0;F.set(L,B);let W=A9(K.request.url,Q),M=Q.mode==="enforce"&&Boolean(K.redirectedRequestId)&&W.host!==null&&!d0.isIP(W.host),_=!W.allowed?W:M?{...W,allowed:!1,reason:"destination_not_allowed"}:B>20?{...W,allowed:!1,reason:"redirect_not_supported"}:null;try{if(_)Z(_),await U.send("Fetch.failRequest",{requestId:K.requestId,errorReason:"BlockedByClient"});else await U.send("Fetch.continueRequest",{requestId:K.requestId})}catch{await U.send("Fetch.failRequest",{requestId:K.requestId,errorReason:"Failed"}).catch(()=>{})}}),await U.send("Network.enable"),await U.send("Fetch.enable",{patterns:[{urlPattern:"*",requestStage:"Request"}]}),J.add(H)})();return G.set(H,V),V};return await $.route("**/*",async(H)=>{let Y=H.request().url(),V=A9(Y,Q);if(V.allowed&&Q.mode==="public_web"){await H.continue();return}let U=H.request();if(V.allowed&&V.host&&d0.isIP(V.host)&&U.isNavigationRequest?.()){let F=U.frame();if(J.has(F.page())&&F===F.page().mainFrame()){await H.continue();return}}if(V.allowed&&(Q.mode==="off"||V.reason==="local_document")){await H.continue();return}if(V.allowed&&V.host)try{let F=V.host,K=c0(F),L,B=await(async()=>{if(K!=="hostname")return[{address:F,family:d0.isIP(F)}];if(V.reason==="loopback")return[{address:"127.0.0.1",family:4}];try{return await Promise.race([X.lookup(F),new Promise((W,M)=>{L=setTimeout(()=>M(Error("hands_browser_dns_timeout")),5000)})])}finally{if(L)clearTimeout(L)}})();if(!B.length||B.some(({address:W})=>{let M=c0(W);return!d0.isIP(W)||Q.mode==="enforce"&&h8(W,Q.deniedHosts)||(V.reason==="loopback"?M!=="loopback":M!=="public")}))V={...V,allowed:!1,reason:"private_network"};else{let W=await X.fetch(H.request(),B[0].address);if(W.status>=300&&W.status<400){let M=W.headers.location??Y;try{M=new URL(M,Y).href}catch{}let _=A9(M,Q);V=_.allowed?{..._,allowed:!1,reason:"redirect_not_supported"}:_}else{await H.fulfill(W);return}}}catch{await H.abort("failed");return}Z(V),await H.abort("blockedbyclient")}),await $.routeWebSocket("**/*",async(H)=>{let Y=A9(H.url(),Q);if(Q.mode==="enforce"&&Y.allowed&&(!Y.host||!d0.isIP(Y.host)))Y={...Y,allowed:!1,reason:"destination_not_allowed"};if(Y.allowed){H.connectToServer();return}Z(Y),await H.close({code:1008,reason:"Reason egress policy denied"})}),Q.mode==="off"?void 0:{preparePage:z}}async function BZ($,Q=WZ(),Z){if(Z){let J=await u8(Z,{platform:Q,systemCandidates:$});return J.status==="resolved"?J.executablePath:null}if($!==void 0){let J=y1($,Q);if(J)return J}let X=await X9({platform:Q,systemCandidates:$,allowSystemBrowser:!0});return X.status==="resolved"?X.executablePath:null}function FZ($,Q){if(!$)throw Error("hands_repl_workspace_required");let Z=s8($),X=J9($),J=n8(X,J9(X,Q)),z=J!==".."&&!J.startsWith(`..${i8}`)&&!KZ(J)?J9(Z,J):J9(Z,Q);if(E0(J9(X,Q))||E0(z))throw Error("hands_repl_protected_path");let H=(B)=>{let W=n8(Z,B);return W!==""&&W!==".."&&!W.startsWith(`..${i8}`)&&!KZ(W)},Y=s8(z);if(E0(Y))throw Error("hands_repl_protected_path");if(!H(z)||!H(Y))throw Error("hands_repl_file_outside_workspace");let V=n8(Z,z).split(i8),U=[Z,...V.map((B,W)=>J9(Z,...V.slice(0,W+1)))],F=U.map((B)=>zZ(B));if(F.some((B)=>B.isSymbolicLink()))throw Error("hands_repl_file_symlink");let K=F[F.length-1];if(!K.isFile()||K.nlink!==1||K.size>16777216)throw Error("hands_repl_file_not_regular_or_too_large");let L=I1(z,l8.O_RDONLY|l8.O_NOFOLLOW|l8.O_NONBLOCK);try{let B=P1(L);if(B.dev!==K.dev||B.ino!==K.ino||!B.isFile())throw Error("hands_repl_file_changed");for(let q=0;q<U.length;q++){let D=zZ(U[q]);if(D.dev!==F[q].dev||D.ino!==F[q].ino||D.isSymbolicLink())throw Error("hands_repl_file_changed")}if(!H(s8(z)))throw Error("hands_repl_file_outside_workspace");let W=Buffer.alloc(16777217),M=0;while(M<W.length){let q=R1(L,W,M,W.length-M,null);if(!q)break;M+=q}if(M===W.length)throw Error("hands_repl_file_too_large");let _=W.subarray(0,M);return{name:f1(z),mimeType:s1[m1(z).toLowerCase()]??"application/octet-stream",buffer:_}}finally{x1(L)}}function Y9($,Q){$.end(`${JSON.stringify(Q)}
|
|
308
308
|
`)}function e9($){try{E1($)}catch{}}async function LZ($){if($.managedBrowser&&$.driverModuleDirectory!==void 0)throw Error("hands_browser_ambiguous_driver_configuration");let Q=$.launch||$.targetContext?null:$.managedBrowser?await u8($.managedBrowser,{executablePath:$.browserExecutablePath}):await X9({executablePath:$.browserExecutablePath,driverModuleDirectory:$.driverModuleDirectory});if(Q?.status==="unavailable")throw Error(`hands_browser_${Q.reason}`);let Z=Q?.status==="resolved"?Q.executablePath:$.browserExecutablePath;if(!Z||!x9(Z))throw Error("hands_browser_unavailable");let X=$.launch??(async(N)=>($.targetContext?await h1():(await t9($.managedBrowser?.driverModuleDirectory??$.driverModuleDirectory)).chromium).launch(N)),J=[],G={},z=null,H=null,Y=null,V=null,U=!1,F=null,K=new Map,L=new WeakMap,B=null,W=()=>{if(U)throw Error("hands_repl_stopped");if(V)throw V},M=(N)=>{let j=L.get(N);if(j)return j;let A=Promise.resolve().then(()=>N.close()).then(()=>{K.delete(N)});return L.set(N,A),A},_=async()=>{let N=[...K.entries()].reverse(),j=B??=performance.now()+u1,A=Promise.allSettled(N.filter(([,P])=>P==="context").map(([P])=>M(P))),m;try{await Promise.race([A,new Promise((P)=>{m=setTimeout(P,Math.max(0,j-performance.now()))})])}finally{if(m)clearTimeout(m)}let w=await Promise.allSettled(N.map(([P])=>M(P))),E=[];for(let[P,f]of w.entries()){if(f.status!=="rejected")continue;let d=f.reason instanceof Error&&["Error","TimeoutError","ProtocolError"].includes(f.reason.name)?f.reason.name:"unknown";E.push(Error(`hands_repl_close_failed: ${N[P][1]}: ${d}`))}if(E.length)throw AggregateError(E,"hands_repl_stop_unconfirmed")},q=(N,j)=>{if(K.set(N,j),U||V)M(N).catch(()=>{return}),W();return N},D=async()=>{let N=await X({executablePath:Z,headless:!0,chromiumSandbox:$.managedBrowser===void 0,args:["--disable-background-networking","--disable-quic","--disable-dev-shm-usage","--disable-gpu","--disable-software-rasterizer","--dns-prefetch-disable","--force-webrtc-ip-handling-policy=disable_non_proxied_udp","--no-pings"]}),j=null;try{q(N,"browser"),j=$.targetContext??q(await N.newContext({viewport:{width:1440,height:900},screen:{width:1440,height:900},serviceWorkers:"block",acceptDownloads:!1}),"context");let A=await i1(j,$.networkPolicy??{mode:"off"},$.onEgressDenied);if(W(),A){let S=j.newPage.bind(j);j.newPage=async()=>{let h=await S();return await A.preparePage(h),h}}let w=j.pages()[0]??await j.newPage();await A?.preparePage(w),W();let E=async(S=w)=>{let h=S;if(typeof h.ariaSnapshot==="function")return h.ariaSnapshot({timeout:1e4});return w.locator("body").innerText({timeout:1e4})},P=async(S,h={})=>{let c=h&&typeof h==="object"&&!Array.isArray(h)?h:{},a,V0="image/png";if(Buffer.isBuffer(S)||S instanceof Uint8Array)a=Buffer.from(S);else if(typeof S==="string"&&(S.startsWith("data:")||/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(S)))a=Buffer.from(S.replace(/^data:[^,]*,/,""),"base64");else if(typeof S==="string"){let f0=FZ($.workspaceRoot,S);a=f0.buffer,V0=f0.mimeType}else throw Error("view() needs a Buffer, a base64 string, or a path to an image file");if(a.length===0)throw Error("view(): the image is empty");let B8=String(c.label??"").replace(/[\r\n>]+/g," ").trim().slice(0,120),D0=Number(c.maxWidth)||1024,i0=Number(c.quality)||72,w9=$.targetContext?await N.newPage():await j.newPage();try{let f0=`data:${V0};base64,${a.toString("base64")}`;for(let r=0;r<5;r+=1){let B0=await w9.evaluate(async(F0)=>{let L0=new Image;L0.src=F0.url,await L0.decode();let m0=Math.min(1,F0.maxWidth/L0.naturalWidth),Y0=document.createElement("canvas");Y0.width=Math.max(1,Math.round(L0.naturalWidth*m0)),Y0.height=Math.max(1,Math.round(L0.naturalHeight*m0));let X0=Y0.getContext("2d");if(!X0)throw Error("view(): canvas unavailable");return X0.fillStyle="#ffffff",X0.fillRect(0,0,Y0.width,Y0.height),X0.drawImage(L0,0,0,Y0.width,Y0.height),{data:Y0.toDataURL("image/jpeg",F0.q/100).split(",")[1]??"",width:Y0.width,height:Y0.height,sourceWidth:L0.naturalWidth,sourceHeight:L0.naturalHeight}},{url:f0,maxWidth:D0,q:i0}),a0=Buffer.from(B0.data,"base64");if(a0.length<=VZ){let F0=B8||"image";return`<<<ARA_VIEW_IMAGE ${B0.data} image/jpeg ${F0}>>>
|
|
309
309
|
Viewing ${F0} (${B0.sourceWidth}x${B0.sourceHeight} source, sent at ${B0.width}x${B0.height}, ${Math.round(a0.length/1024)}KB).`}if(D0>640)D0=Math.round(D0*0.75);else i0=Math.max(30,i0-15)}throw Error(`view(): could not reduce the image under ${Math.round(VZ/1024)}KB`)}finally{await w9.close().catch(()=>{return})}},f=oQ({browser:$.targetContext?.browser()??N,context:j,page:w,a11y:E,view:P,readWorkspaceFile:(S)=>FZ($.workspaceRoot,S),privateProfile:$.privateProfile,beforeNavigation:$.beforeNavigation,recording:$.recording,screenshotExport:$.screenshotExport,actionRecorder:()=>{let S=J,h=G;return(c,a)=>{if(S.length<UZ)S.push(c);if(a)h.page=a}}}),d=async(S)=>{W();let h=q(await N.newContext({serviceWorkers:"block",acceptDownloads:!1}),"context");try{await h.route("**/*",(a)=>a.abort()),W(),await h.routeWebSocket("**/*",(a)=>a.close({code:1008,reason:"Reason evaluator network denied"})),W(),await h.exposeBinding("__araHandsRpc",async(a,V0)=>$.onBrowserOperation?$.onBrowserOperation(S,()=>f.dispatch(V0)):f.dispatch(V0)),W();let c=await h.newPage();return W(),await c.goto("data:text/html,<title>Reason Hands evaluator</title>"),W(),await c.evaluate(`(${vQ})(${JSON.stringify(f.roots)})`),{context:h,page:c,runId:S}}catch(c){throw await M(h).catch(()=>{return}),c}},u=await d(),l={browser:N,context:j,page:w,evaluator:u,async captureProgressFrame(S){return P(await S.screenshot({type:"jpeg",quality:65,timeout:2000}),{label:"Screen after browser action"})},async resetEvaluator(S){await M(l.evaluator.context),l.evaluator=await d(S)}};return W(),l}catch(A){throw await _().catch(()=>{return}),A}},x=async()=>{if(W(),z)return z;if(!Y){H=D();let N;Y=Promise.race([H,new Promise((j,A)=>{N=setTimeout(()=>A(Error("hands_browser_unavailable: startup timed out")),d1)})]).then((j)=>{return W(),z=j,j}).catch(async()=>{V=Error("hands_browser_unavailable: startup failed or timed out");let j;try{await Promise.race([_(),new Promise((A,m)=>{j=setTimeout(()=>m(Error("hands_repl_stop_timeout")),HZ)})])}catch{V=Error("hands_browser_unavailable: startup cleanup unconfirmed")}finally{if(j)clearTimeout(j)}throw V}).finally(()=>{if(N)clearTimeout(N)})}return Y},b=async(N,j,A=!1)=>{let m=await x(),w=G;if($.onBrowserOperation&&m.evaluator.runId!==j)await m.resetEvaluator(j);let P=(async()=>{let u=await m.evaluator.page.evaluate(`(${cQ})(${JSON.stringify({code:N})})`);if(typeof u!=="string")throw Error("hands_repl_invalid_evaluator_output");let l=w.page;if(A&&l&&!u.includes("<<<ARA_VIEW_IMAGE")){let S=()=>m.captureProgressFrame(l);try{let h=await($.onBrowserOperation?$.onBrowserOperation(j,S):S());return w.automaticProgressImage=!0,`${u}
|
|
@@ -454,6 +454,6 @@ lines.on("line", (line) => {
|
|
|
454
454
|
`);v6(Z,J,{mode:384});let G=!1;return{command:"/usr/bin/sandbox-exec",args:["-f",Z,$.nodeExecutable,...$.nodeArgs],cwd:$.workRoot,env:{...$.environment,TMPDIR:Q},async cleanup(){if(G)return;G=!0,y6(Q,{recursive:!0,force:!0})}}}async function i6($){let Q=g6($.workRoot),Z=$.nodeExecutable??s6(),X=["--max-old-space-size=512","--permission",`--allow-fs-read=${Q}`,`--allow-fs-write=${Q}`,"-e",l6],J=G8({home:Q,temporaryDirectory:Q}),G=$.platformName??d6();if(G==="linux")return{command:Z,args:X,cwd:Q,env:J,async cleanup(){}};if(G==="darwin")return n6({nodeExecutable:Z,nodeArgs:X,workRoot:Q,environment:J});throw Error("hands_node_repl_platform_unsupported")}async function I9($){let Q;try{await Promise.race([$,new Promise((Z,X)=>{Q=setTimeout(()=>X(Error("hands_node_repl_child_cleanup_timeout")),u6)})])}finally{clearTimeout(Q)}}async function hZ($){if($.executionMode!=="single-evaluation")throw Error(qZ);let Q=await i6($),Z;try{Z=k6(Q.command,Q.args,{cwd:Q.cwd,env:Q.env,stdio:["pipe","pipe","pipe"]})}catch(q){throw await Q.cleanup(),q}let X=new Promise((q)=>Z.once("close",()=>q())),J;Z.once("error",(q)=>{J=q});let G=!1,z=!1,H="";Z.stderr.setEncoding("utf8"),Z.stderr.on("data",(q)=>{H=`${H}${q}`.slice(-16384)});let Y=Z.stdout,V,U=(q,D,x)=>{if(x)q.failure??=x;if(q.finishing)return;q.finishing=!0,z=!0,Z.kill("SIGKILL"),I9(X).then(()=>{if(q.failure)q.reject(q.failure);else q.resolve(D??{})},(b)=>q.reject(b))},F=()=>{if(z=!0,V)U(V,void 0,Error("hands_node_repl_state_lost"));else Z.kill("SIGKILL")},K="";Y?.setEncoding("utf8"),Y?.on("data",(q)=>{if(V?.finishing||z)return;if(K+=q,K.length>yZ){F();return}while(!0){let D=K.indexOf(`
|
|
455
455
|
`);if(D===-1)return;let x=K.slice(0,D);K=K.slice(D+1);let b=V;if(!b){F();return}try{let T=JSON.parse(x);if(b.action==="probe")b.resolve(T);else{U(b,T);return}}catch{U(b,void 0,Error("invalid_hands_node_repl_child_response"));return}}});let L=(q)=>{let D=H.trim(),x=q??Error(D?`hands_node_repl_child_exited:${D}`:"hands_node_repl_child_exited");if(z=!0,V&&!V.finishing)U(V,void 0,x)};Z.once("error",L),Z.once("close",()=>L()),Z.stdin.on("error",L);let B=(q)=>new Promise((D,x)=>{if(G||z||Z.exitCode!==null||Z.signalCode!==null){x(Error(z?"hands_node_repl_state_lost":"hands_node_repl_stopped"));return}let b=setTimeout(F,q.action==="probe"?1e4:Math.max(1,Math.min($.evaluationTimeoutMs??Y$-1000,Y$-1000))),T={action:q.action,finishing:!1,resolve(k){if(V===T)V=void 0;clearTimeout(b),D(k)},reject(k){if(V===T)V=void 0;clearTimeout(b),x(k)}};V=T,Z.stdin.write(`${JSON.stringify(q)}
|
|
456
456
|
`,(k)=>{if(!k)return;U(T,void 0,k)})});try{if(!Y){if(Z.pid===void 0)await I9(X);throw J??Error("hands_node_repl_control_pipe_missing")}let q=await B({action:"probe"});if(q.ok!==!0||q.output!=="ARA_HANDS_REPL_READY")throw Error("hands_node_repl_probe_failed")}catch(q){G=!0,Z.kill("SIGKILL");try{await I9(X)}finally{await Q.cleanup()}throw q}let W=Promise.resolve(),M=new Set;X$($.socketPath);let _=c6.createServer((q)=>{M.add(q),q.once("close",()=>M.delete(q)),q.setEncoding("utf8");let D="",x=!1,b=!1;q.once("close",()=>{if(b)F()}),q.on("error",()=>q.destroy()),q.on("data",(T)=>{if(x)return;if(D+=T,D.length>yZ){x=!0,Y8(q,{ok:!1,error:"REPL request exceeds 1 MiB"});return}let k=D.indexOf(`
|
|
457
|
-
`);if(k===-1)return;x=!0;let g=D.slice(0,k);W=W.then(async()=>{if(q.destroyed)return;try{let O=JSON.parse(g);if(O.action!=="evaluate"||typeof O.code!=="string")throw Error("Invalid REPL request");b=!0;let N=await B({action:"evaluate",code:O.code});if(b=!1,N.ok!==!0||typeof N.output!=="string")throw Error(typeof N.error==="string"?N.error:"hands_node_repl_failed");Y8(q,{ok:!0,output:N.output})}catch(O){b=!1,Y8(q,{ok:!1,error:O instanceof Error?O.message:String(O),stack:O instanceof Error?O.stack:void 0})}}).catch((O)=>{Y8(q,{ok:!1,error:O instanceof Error?O.message:String(O)})})})});try{await new Promise((q,D)=>{_.once("error",D),_.listen($.socketPath,()=>{_.off("error",D);try{f6($.socketPath,384),q()}catch(x){_.close(()=>D(x))}})})}catch(q){G=!0,Z.kill("SIGKILL");try{await I9(X)}finally{await Q.cleanup(),X$($.socketPath)}throw q}return{socketPath:$.socketPath,async stop(){if(G)return;G=!0;let q=new Promise((D)=>_.close(()=>D()));for(let D of M)D.destroy();await q,W.catch(()=>{return}),F();try{await I9(X)}finally{await Q.cleanup(),X$($.socketPath)}}}}var G$=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var vZ="/workspace",cZ="/var/lib/reason/sessions",a6="/var/lib/reason/session-controls";function dZ($){let Q=`${cZ}/`;if(!$.startsWith(Q))return null;let Z=$.slice(Q.length);if(!G$.test(Z)||Z!==Z.toLowerCase())throw Error("personal_computer_invalid_runtime_root");return`${a6}/${Z}/job.env`}function o6($){if(!G$.test($))throw Error("personal_computer_invalid_identity");return $.toLowerCase()}function z8($){let Q=o6($);return{runtimeRoot:`${cZ}/${Q}`,workspaceRoot:`${vZ}/sessions/${Q}`,sharedRoot:vZ}}var pZ="/root/.ara/cloud-browser/repl.sock";function z$($){return $==="compute"}function uZ($,Q,Z="linux"){if($)z8($);if(Z!=="linux")throw Error("cloud_browser_os_invalid");if(Q!==void 0&&(!$||!/^[1-9][0-9]{0,18}$/.test(Q)))throw Error("cloud_browser_generation_invalid");let X=$?`/var/lib/reason/browsers/${$.toLowerCase()}`:"/root/.ara/cloud-browser",J=$?`${X}/${Q?`g${Q}`:"current"}`:X,G=$?`/root/.b/${$.toLowerCase().replaceAll("-","")}`:X;return{temporarySessionDirectory:G,temporaryDirectory:$?`${G}/${Q??"current"}`:`${J}/tmp`,directory:J,sessionDirectory:X,config:`${J}/config.json`,status:`${J}/status.json`,socket:`${J}/repl.sock`,bundle:`${J}/driver.mjs`,processName:$?`ara-browser-${$.toLowerCase()}${Q?`-${Q}`:""}`:"ara-cloud-browser"}}var H$="browser_egress",lZ=FQ,H7=45000,V7=c9+1500,k0=/^[A-Za-z0-9._:-]{1,160}$/,F7="/run/ara-hands";function U7($,Q,Z=eZ()){if($==="darwin")return{temporaryRoot:Z,prepareRoot:!1,sessionMode:448};return{temporaryRoot:Q??F7,prepareRoot:!0,sessionMode:457}}function sZ($,Q=process.platform,Z=process.geteuid?.()){return $===!0&&Q==="linux"&&Z===0}function U$($=aZ(),Q=process.platform,Z=process.geteuid?.()){return $&&Q==="linux"&&Z===0?{uid:$.uid,gid:$.gid,home:$.home,username:$.username}:null}function W7($=U$(),Q=MZ){return $&&Q()?a8:null}function OY($=U$(),Q=process.platform,Z=process.geteuid?.()){return Q!=="linux"||Z!==0||$!==null}function DY($=process.platform,Q=process.geteuid?.()){return $!=="linux"||Q!==0}function B7($,Q){if(!Q&&($??"linux")==="linux")return pZ;return uZ(Q,void 0,$??"linux").socket}function L7($){return $[W0]===!0?"sandbox_loopback":"ara_device_wss"}function V9($){return Boolean($)&&typeof $==="object"&&!Array.isArray($)}function Q4($){let Q=$.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q.endsWith(".localhost")||Q==="::1"||Q==="0:0:0:0:0:0:0:1"||Q==="0.0.0.0"||Q.startsWith("127.")}class Z4 extends C{expiryDiagnostic;constructor($){super("invalid_hands_expiry","Reason Hands connection expiry is invalid.");this.expiryDiagnostic=$}}function N7($){return V9($)&&Object.keys($).every((Q)=>Q==="source_path"||Q==="branch")&&($.source_path===void 0||p0($.source_path))&&typeof $.branch==="string"&&t8.test($.branch)}function M7($,Q,Z){let X=Q===void 0?Date.now():Q,J=["relay_url","session_id","environment_id","expires_at","policy_mode","policy_version","hands_protocol_version","hands_worker_version","hands_worker_artifact_sha256","hands_worker_entrypoint","target_generation","target_fence_id"],G=new Set([...J,"workspace_id","legacy_workspace_id",l0,s0,"environment_binding","cloud_browser","sandbox_provider","sandbox_os","personal_workspace","workspace_path","workspace_worktree",p,W0,H$,z9,N0,n0,b0]),z=V9($)?$:null,H=z?.[H$],Y=z?.[z9],V=z?.[n0],U=H===void 0||(z?.[p]===w0||V===R9&&z?.[p]===void 0)&&V9(H)&&Object.keys(H).every((q)=>q==="mode"||q==="allowed_domains")&&H.mode==="enforce"&&Array.isArray(H.allowed_domains)&&H.allowed_domains.length<=256&&H.allowed_domains.every((q)=>typeof q==="string"&&y8(q));if(!V9($)||J.some((q)=>!(q in $))||Object.keys($).some((q)=>!G.has(q))||!U||V!==void 0&&V!==R9||z?.[b0]!==void 0&&z[b0]!==V8||z?.personal_workspace!==void 0&&(z.personal_workspace!==!0||z[p]!==w0)||z?.cloud_browser!==void 0&&(z.cloud_browser!==!0||z[p]!==w0)||z?.sandbox_provider!==void 0&&!z$(z.sandbox_provider)||z?.sandbox_os!==void 0&&z.sandbox_os!=="linux"||Y!==void 0&&(z?.[p]!==G9||!o8(Y))||p in $&&$[p]!==w0&&$[p]!==G9&&$[p]!==U0||W0 in $&&$[W0]!==!0||$.workspace_path!==void 0&&(!p0($.workspace_path)||$[p]!==U0)||$.workspace_worktree!==void 0&&($.workspace_path===void 0||!N7($.workspace_worktree))||typeof $.relay_url!=="string"||typeof $.session_id!=="string"||!k0.test($.session_id)||$.workspace_id!==void 0&&(typeof $.workspace_id!=="string"||!k0.test($.workspace_id))||$.legacy_workspace_id!==void 0&&(typeof $.legacy_workspace_id!=="string"||!k0.test($.legacy_workspace_id))||$[l0]!==void 0&&($[l0]!==F8||(p in $))||$[s0]!==void 0&&($[s0]!==U8||(p in $))||$[N0]!==void 0&&(typeof $[N0]!=="string"||!k0.test($[N0]))||typeof $.environment_id!=="string"||!k0.test($.environment_id)||typeof $.expires_at!=="string"||$.policy_mode!=="full_access"||$.policy_version!==1||$.hands_protocol_version!==F9||$.hands_worker_version!==U9||$.hands_worker_artifact_sha256!==z0||!wZ($.hands_worker_entrypoint)||!I0($.target_generation)||!j0($.target_fence_id))throw new C("invalid_hands_payload","Reason Hands connection payload is invalid.");let F;try{F=new URL($.relay_url)}catch{throw new C("invalid_hands_relay","Reason Hands relay URL is invalid.")}let K=$[W0]===!0,L=Q4(F.hostname);if((K?F.protocol!=="ws:"||!L:L?F.protocol!=="ws:":F.protocol!=="wss:")||F.username||F.password||F.hash||!/^\/device\/[A-Za-z0-9-]+\/[A-Za-z0-9]+$/.test(F.pathname))throw new C("invalid_hands_relay","Reason Hands relay URL is not allowed.");let B=Date.parse($.expires_at),W=Number.isNaN(B)?"parse":new Date(B).toISOString()!==$.expires_at?"noncanonical":B<=X?"expired":B-X>lZ?"over_cap":"accepted",M={version:1,outcome:W,clock_source:Q===void 0?"date_now":"injected",validation_now_ms:$9(X),expiry_ms:$9(B),remaining_ms:Number.isSafeInteger(B-X)?B-X:null,maximum_lifetime_ms:lZ,cli_artifact:bZ()};if(W!=="accepted")throw new Z4(M);try{Z?.(M)}catch{}let _=$.environment_binding===void 0?void 0:E8.safeParse($.environment_binding);if(_&&!_.success)throw new C("invalid_hands_request","Reason Hands environment binding is invalid.");return{...$.cloud_browser===!0?{cloud_browser:!0}:{},...z$($.sandbox_provider)?{sandbox_provider:$.sandbox_provider}:{},...$.sandbox_os==="linux"?{sandbox_os:$.sandbox_os}:{},...$.personal_workspace===!0?{personal_workspace:!0}:{},relay_url:F.toString(),..._?.success?{environment_binding:_.data}:{},session_id:$.session_id,...$.workspace_id===void 0?{}:{workspace_id:$.workspace_id},...$.legacy_workspace_id===void 0?{}:{legacy_workspace_id:$.legacy_workspace_id},...$[l0]===F8?{[l0]:F8}:{},...$[s0]===U8?{[s0]:U8}:{},...typeof $[N0]==="string"?{[N0]:$[N0]}:{},...$[n0]===R9?{[n0]:R9}:{},...$[b0]===V8?{[b0]:V8}:{},...typeof $.workspace_path==="string"?{workspace_path:$.workspace_path}:{},...V9($.workspace_worktree)?{workspace_worktree:{...typeof $.workspace_worktree.source_path==="string"?{source_path:$.workspace_worktree.source_path}:{},branch:String($.workspace_worktree.branch)}}:{},environment_id:$.environment_id,expires_at:$.expires_at,policy_mode:"full_access",policy_version:1,hands_protocol_version:F9,hands_worker_version:U9,hands_worker_artifact_sha256:z0,hands_worker_entrypoint:u0,target_generation:$.target_generation,target_fence_id:$.target_fence_id,...p in $?{[p]:$[p]}:{},...K?{[W0]:!0}:{},...Y===void 0?{}:{[z9]:Y},...H===void 0?{}:{[H$]:{mode:"enforce",allowed_domains:[...new Set(H.allowed_domains)].sort()}}}}function j7(){let $=new Map;return{acquire(Q,Z){if($.has(Q))return null;let X=[...$.values()],J=(z)=>Z.group!==void 0&&z.group===Z.group;if(Z.exclusive?!X.every(J):X.some((z)=>z.exclusive))return null;if(Z.limit!==void 0&&!X.some(J)&&new Set(X.map((z,H)=>z.group??H)).size>=Z.limit)return null;$.set(Q,Z);let G=!1;return()=>{if(G)return;G=!0,$.delete(Q)}},activeOwners:()=>[...$.keys()]}}var C7=j7();function q7($,Q){W9($,{recursive:!0,mode:448});let Z=n($),X=()=>new C("invalid_hands_workspace","Reason Hands managed workspace ancestor must be a real directory, not a link.");for(let z of Q.split("/")){let H=o(Z,z);try{let V=t(H);if(V.isSymbolicLink()||!V.isDirectory())throw X()}catch(V){if(!(V&&typeof V==="object"&&("code"in V)&&V.code==="ENOENT"))throw V;try{W9(H,{mode:448})}catch(U){if(!(U&&typeof U==="object"&&("code"in U)&&U.code==="EEXIST"))throw U}}let Y=t(H);if(Y.isSymbolicLink()||!Y.isDirectory()||n(H)!==H)throw X();Z=H}let J=t(Z),G=X7(Z,K$.O_RDONLY|K$.O_DIRECTORY|K$.O_NOFOLLOW);try{let z=Z7(G);if(!z.isDirectory()||z.dev!==J.dev||z.ino!==J.ino||n(Z)!==Z)throw X();Q7(G,448)}finally{$7(G)}return Z}function T7($,Q=iZ(),Z,X,J){if(!k0.test($)||Z!==void 0&&!k0.test(Z))throw new C("invalid_hands_workspace","Reason Hands run identity is invalid.");let G=K0(v0({kind:"managed",workspaceId:$,...X?{base:X}:{},...J?{layout:J}:{}})),z=q7(Q,K0(G)),H=o(z,K7(G)),Y=!1;try{let K=t(H);if(Y=!0,K.isSymbolicLink())throw new C("invalid_hands_workspace","Reason Hands workspace cannot be a symbolic link.");if(!K.isDirectory())throw new C("invalid_hands_workspace","Reason Hands workspace must be a managed directory.")}catch(K){if(K instanceof C||!(K&&typeof K==="object"&&("code"in K)&&K.code==="ENOENT"))throw K}if(J&&!Y)try{let K=o(n(Q),K0(v0({kind:"managed",workspaceId:$,...X?{base:X}:{}}))),L=t(K);if(!L.isSymbolicLink()&&L.isDirectory()&&n(K)===K)K8(K,H),Y=!0}catch{}if(Z&&Z!==$){let K=o(z,Z);try{let L=t(K);if(L.isSymbolicLink()||!L.isDirectory())throw new C("invalid_hands_workspace","Reason Hands legacy workspace must be a managed directory.");let B=n(K);if(K0(B)!==z)throw new C("invalid_hands_workspace","Reason Hands legacy workspace escaped its managed parent.");let W=null;if(Y){W=o(z,`.${$}.previous`);try{throw t(W),new C("invalid_hands_workspace","Reason Hands previous workspace backup already exists.")}catch(M){if(M instanceof C||!(M&&typeof M==="object"&&("code"in M)&&M.code==="ENOENT"))throw M}K8(H,W)}try{K8(B,H)}catch(M){if(W)K8(W,H);throw M}Y=!0}catch(L){if(L instanceof C||!(L&&typeof L==="object"&&("code"in L)&&L.code==="ENOENT"))throw L}}W9(H,{recursive:!0,mode:448}),E9(H,448);let V=n(H);if(K0(V)!==z)throw new C("invalid_hands_workspace","Reason Hands workspace escaped its managed parent.");let U=o(V,"repo");try{let K=t(U);if(K.isSymbolicLink()||!K.isDirectory())throw new C("invalid_hands_workspace","Reason Hands repository must be a managed directory.")}catch(K){if(K instanceof C||!(K&&typeof K==="object"&&("code"in K)&&K.code==="ENOENT"))throw K}W9(U,{recursive:!0,mode:448}),E9(U,448);let F=n(U);if(K0(F)!==V)throw new C("invalid_hands_workspace","Reason Hands repository escaped its managed run workspace.");return{workRoot:V,repoPath:F}}function X4($){let Q=null;try{Q=t($)}catch{}if(!Q||Q.isSymbolicLink()||!Q.isDirectory()||Q.uid!==0||Q.gid!==0||(Q.mode&4095)!==493)throw new C("cloud_workspace_root_invalid","This cloud Session's workspace root is not root's 0755 directory, so Reason Hands cannot use it.")}function O7($,Q){let Z="/";for(let X of["",...$.split("/"),...Q.split("/")].filter((J,G)=>G===0||J)){if(X)Z=o(Z,X);let J;try{J=t(Z)}catch{return null}if(J.uid!==0)return J.uid;if((J.mode&2)!==0&&(J.mode&512)===0&&!J.isSymbolicLink())return-1;if(J.isSymbolicLink()||!J.isDirectory())return null}return null}function D7($,Q,Z,X=process.geteuid?.(),J){if(!k0.test(Q))return null;let G,z;try{G=n($),z=K0(v0({kind:"managed",workspaceId:Q,...Z?{base:Z}:{},...J?{layout:J}:{}}))}catch{return null}let H=o(G,z),Y=F$(H)!==null,V=(B)=>new C("cloud_workspace_root_invalid",B),U;if(X===0){let B=O7(G,z);if(B===null)return null;if(!Y)throw new C("invalid_hands_workspace","As root, Reason Hands never prepares a workspace in folders another user owns.");U=B}else{if(!Y)return null;let B,W;try{B=t(K0(H)),W=t(H)}catch{return null}if(B.isSymbolicLink()||!B.isDirectory()||B.uid===0||W.uid!==0)return null;U=B.uid}let F=G;for(let B of z.split("/")){let W=o(F,B),M=!1;try{let _=t(W);M=!_.isSymbolicLink()&&_.isDirectory()&&n(W)===W}catch{}if(!M)throw V("This cloud Session's workspace root is missing or is not a real directory.");F=W}X4(H);let K;try{K=J4(H)}catch(B){if(B instanceof C)throw B;throw V("This cloud Session's workspace root changed while Reason Hands checked it.")}let L=null;try{L=S9(K.repoPath).uid}catch{}if(L!==U)throw new C("invalid_hands_workspace","Reason Hands repository must belong to the cloud Session's user.");return K}function J4($,Q=!1){let Z=n($),X=o(Z,"repo"),J;try{J=t(X)}catch{throw new C("invalid_hands_workspace","Reason Hands repository is missing from the granted root.")}if(Q){if(!/^\/var\/lib\/reason\/sessions\/[0-9a-f-]{36}$/.test(Z))throw new C("invalid_hands_workspace","Personal runtime identity is invalid.");if(z8(Z.slice(Z.lastIndexOf("/")+1)).runtimeRoot!==Z)throw new C("invalid_hands_workspace","Personal runtime identity is invalid.");let H=n("/workspace"),Y=n(X);if(H!=="/workspace"||!S9(Y).isDirectory()||!Y.startsWith("/workspace/"))throw new C("invalid_hands_workspace","Personal files escaped the personal computer.");return{workRoot:Z,repoPath:Y}}let G=jZ(Z);if(G&&J.isSymbolicLink()){let H=n(X);if(H!==n(G)||!S9(H).isDirectory())throw new C("invalid_hands_workspace","Side chat repository must be its parent's checkout.");return{workRoot:Z,repoPath:H}}if(J.isSymbolicLink()||!J.isDirectory())throw new C("invalid_hands_workspace","Reason Hands repository must be a managed directory.");let z=n(X);if(K0(z)!==Z)throw new C("invalid_hands_workspace","Reason Hands repository escaped its granted root.");return{workRoot:Z,repoPath:z}}function W$($,Q,Z){if(Q!==void 0&&!p0(Q))throw new C("invalid_hands_workspace",`Reason Hands ${Z} is invalid.`);let X=$4($,Q??".");if(!R0($,X))throw new C("invalid_hands_workspace",`Reason Hands ${Z} escapes its granted root.`);return X}function Y4($,Q,Z){if(r8(Q)){let X=n(Z);return{anchor:X,target:$4(X,Q),boundary:o(X,K9)}}return{anchor:$,target:W$($,Q,"folder"),boundary:$}}function _7($,Q){if(!R0($,Q))throw new C("invalid_hands_workspace","Reason Hands folder escapes its granted root.");let Z=$;for(let X of Q.slice($.length).split("/").filter(Boolean)){Z=o(Z,X);let J=null;try{J=t(Z)}catch(G){if(G.code!=="ENOENT")throw G}if(!J)W9(Z,{mode:448});else if(J.isSymbolicLink()||!J.isDirectory())throw new C("invalid_hands_workspace","Reason Hands folder must be made of real directories.")}}function G4($,Q){let Z=n(W$($,Q.source_path,"repository"));if(!R0($,Z)||!S9(Z).isDirectory())throw new C("invalid_hands_workspace","Reason Hands repository must be a folder in its granted root.");return Z}async function A7($,Q,Z,X=W8()){try{let J=n($);if(V$(Y4(J,Q,X).target))return;return await _Z(G4(J,Z))??void 0}catch{return}}function x7($,Q,Z,X,J=P7,G=W8()){let z=n($),{target:H,boundary:Y,anchor:V}=Y4(z,Q,G);if(Z&&!V$(H)){let K=G4(z,Z);_7(V,K0(H));let L=["-c","core.hooksPath=/dev/null","-C",K];if(X)J([...L,"update-ref","--create-reflog","-m",X.note,`refs/heads/${Z.branch}`,X.commit,""]);let B=X?J([...L,"worktree","add",H,Z.branch]):J([...L,"worktree","add","-b",Z.branch,H]);if(!X&&B.status!==0&&/already exists/.test(B.stderr)&&!V$(H))B=J([...L,"worktree","add",H,Z.branch]);if(B.status!==0)throw new C(/not a git repository/i.test(B.stderr)?"workspace_not_git_repository":"workspace_worktree_failed","Reason could not create this Session's git worktree.")}let U;try{U=t(H)}catch{throw new C("workspace_folder_missing","This Session's folder no longer exists.")}let F=n(H);if(U.isSymbolicLink()&&!R0(Y,F))throw new C("invalid_hands_workspace","Reason Hands folder resolves outside its granted root.");if(!S9(F).isDirectory()||!R0(Y,F))throw new C("invalid_hands_workspace","Reason Hands folder must be a directory in its granted root.");if(E0(F))throw new C("protected_path","Credential and secret folders are unavailable to Sessions.");return F}function P7($){let Q=e6("git",$,{encoding:"utf8",timeout:60000,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},stdio:["ignore","ignore","pipe"]});return{status:Q.status,stderr:Q.stderr??""}}function z4($){return dZ($)??F$($)?.jobEnv??o($,"job.env")}function I7($,Q){let Z=z4($),X=t(Z);if(X.isSymbolicLink()||!X.isFile())throw new C("invalid_hands_workspace","Reason Hands job environment must be a managed regular file.");J7(Z,Q),E9(Q,384)}function R7($){if($.workspaceMode===U0&&$.workspacePath!==void 0){let z=$.home??W8(),H=x7($.grantedRoot,$.workspacePath,$.workspaceWorktree,$.workspaceWorktreeStart,void 0,z);if($.workspaceWorktree&&$.deviceId)IZ(z,$.workspacePath,$.deviceId);return{workRoot:H,repoPath:H,workspace:{kind:"root",path:$.workspacePath},jobEnvPath:o($.temporaryDirectory,"job.env"),workspacePoolPath:null,managedWorkspace:!0}}if($.workspaceMode===w0)return{...J4($.grantedRoot,$.personalWorkspace),workspace:{kind:"root"},jobEnvPath:o($.temporaryDirectory,"job.env"),workspacePoolPath:null,managedWorkspace:!1};if($.workspaceMode===G9||$.workspaceMode===U0){let z=t($.grantedRoot);if(z.isSymbolicLink()||!z.isDirectory())throw new C("invalid_hands_workspace","Reason Hands root must be a real directory.");let H=n($.grantedRoot);return{workRoot:H,repoPath:H,workspace:{kind:"root"},jobEnvPath:o($.temporaryDirectory,"job.env"),workspacePoolPath:null,managedWorkspace:!0}}let Q=$.workspaceId??$.runId,Z={kind:"managed",workspaceId:Q,...$.workspaceBase?{base:$.workspaceBase}:{},...$.workspaceLayout?{layout:$.workspaceLayout}:{}},X=p9($.grantedRoot,Z,$.home).anchor,J=D7(X,Q,$.workspaceBase,void 0,$.workspaceLayout);if(J)return{...J,workspace:Z,jobEnvPath:o($.temporaryDirectory,"job.env"),workspacePoolPath:null,managedWorkspace:!1,cloudSessionRoot:!0};let G=T7(Q,X,$.legacyWorkspaceId,$.workspaceBase,$.workspaceLayout);return{...G,workspace:Z,jobEnvPath:o($.temporaryDirectory,"job.env"),workspacePoolPath:K0(G.workRoot),managedWorkspace:!0}}function E7($){let{command:Q,prefix:Z}=S8($.executablePath,$.sourceEntrypoint),X=G8({home:z7(),temporaryDirectory:$.temporaryDirectory,path:$.path});if(X.REASON_DEVICE_ROOT=X.ARA_DEVICE_ROOT=$.grantedRoot,X.REASON_HANDS_WORKSPACE=X.ARA_HANDS_WORKSPACE=$.workRoot,X.REASON_HANDS_REPO=X.ARA_HANDS_REPO=$.root,$.workspacePoolPath)X.REASON_HANDS_WORKSPACE_POOL=X.ARA_HANDS_WORKSPACE_POOL=$.workspacePoolPath;return{command:Q,args:[...Z,"__device","__hands-worker","--config",$.configPath],options:{cwd:$.root,env:X,shell:!1,stdio:["ignore","ignore","pipe"]}}}function S7($,Q){let Z="",X=!1,J=Date.now(),G=0,z=new Set(["connecting","open","dial_pending","socket_error","close","claim_accepted","claim_rejected","stopping","stopped"].map((F)=>`hands.worker.${F}`)),H=new Set([null,"open_not_received","current_connection","obsolete_connection","request_aborted","request_timeout","client_closed","driver_stopped","driver_handoff","run_cancelled","run_finished","other","frame_too_large","invalid_json","invalid_claim","executor_mismatch","stale_generation","fence_conflict","SIGTERM","SIGINT","SIGHUP","expired","cleanup_complete","cleanup_failed"]),Y=["timestampMs","connectionAttempt","connectionGeneration","targetGeneration","activeRequestCount","remainingLifetimeMs","suppressedDiagnostics"],V=["peerGeneration","socketState","closeCode"],U=new Set(["event","reason","launchId",...Y,...V]);return(F)=>{for(let K of F.toString().split(/(?<=\n)/)){let L=K.endsWith(`
|
|
457
|
+
`);if(k===-1)return;x=!0;let g=D.slice(0,k);W=W.then(async()=>{if(q.destroyed)return;try{let O=JSON.parse(g);if(O.action!=="evaluate"||typeof O.code!=="string")throw Error("Invalid REPL request");b=!0;let N=await B({action:"evaluate",code:O.code});if(b=!1,N.ok!==!0||typeof N.output!=="string")throw Error(typeof N.error==="string"?N.error:"hands_node_repl_failed");Y8(q,{ok:!0,output:N.output})}catch(O){b=!1,Y8(q,{ok:!1,error:O instanceof Error?O.message:String(O),stack:O instanceof Error?O.stack:void 0})}}).catch((O)=>{Y8(q,{ok:!1,error:O instanceof Error?O.message:String(O)})})})});try{await new Promise((q,D)=>{_.once("error",D),_.listen($.socketPath,()=>{_.off("error",D);try{f6($.socketPath,384),q()}catch(x){_.close(()=>D(x))}})})}catch(q){G=!0,Z.kill("SIGKILL");try{await I9(X)}finally{await Q.cleanup(),X$($.socketPath)}throw q}return{socketPath:$.socketPath,async stop(){if(G)return;G=!0;let q=new Promise((D)=>_.close(()=>D()));for(let D of M)D.destroy();await q,W.catch(()=>{return}),F();try{await I9(X)}finally{await Q.cleanup(),X$($.socketPath)}}}}var G$=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var vZ="/workspace",cZ="/var/lib/reason/sessions",a6="/var/lib/reason/session-controls";function dZ($){let Q=`${cZ}/`;if(!$.startsWith(Q))return null;let Z=$.slice(Q.length);if(!G$.test(Z)||Z!==Z.toLowerCase())throw Error("personal_computer_invalid_runtime_root");return`${a6}/${Z}/job.env`}function o6($){if(!G$.test($))throw Error("personal_computer_invalid_identity");return $.toLowerCase()}function z8($){let Q=o6($);return{runtimeRoot:`${cZ}/${Q}`,workspaceRoot:`${vZ}/sessions/${Q}`,sharedRoot:vZ}}var pZ="/root/.ara/cloud-browser/repl.sock";function z$($){return $==="compute"}function uZ($,Q,Z="linux"){if($)z8($);if(Z!=="linux")throw Error("cloud_browser_os_invalid");if(Q!==void 0&&(!$||!/^[1-9][0-9]{0,18}$/.test(Q)))throw Error("cloud_browser_generation_invalid");let X=$?`/var/lib/reason/browsers/${$.toLowerCase()}`:"/root/.ara/cloud-browser",J=$?`${X}/${Q?`g${Q}`:"current"}`:X,G=$?`/root/.b/${$.toLowerCase().replaceAll("-","")}`:X;return{temporarySessionDirectory:G,temporaryDirectory:$?`${G}/${Q??"current"}`:`${J}/tmp`,directory:J,sessionDirectory:X,config:`${J}/config.json`,status:`${J}/status.json`,socket:`${J}/repl.sock`,bundle:`${J}/driver.mjs`,processName:$?`ara-browser-${$.toLowerCase()}${Q?`-${Q}`:""}`:"ara-cloud-browser"}}var H$="browser_egress",lZ=FQ,H7=45000,V7=c9+1500,k0=/^[A-Za-z0-9._:-]{1,160}$/,F7="/run/ara-hands";function U7($,Q,Z=eZ()){if($==="darwin")return{temporaryRoot:Z,prepareRoot:!1,sessionMode:448};return{temporaryRoot:Q??F7,prepareRoot:!0,sessionMode:457}}function sZ($,Q=process.platform,Z=process.geteuid?.()){return $===!0&&Q==="linux"&&Z===0}function U$($=aZ(),Q=process.platform,Z=process.geteuid?.()){return $&&Q==="linux"&&Z===0?{uid:$.uid,gid:$.gid,home:$.home,username:$.username}:null}function W7($=U$(),Q=MZ){return $&&Q()?a8:null}function OY($=U$(),Q=process.platform,Z=process.geteuid?.()){return Q!=="linux"||Z!==0||$!==null}function DY($=process.platform,Q=process.geteuid?.()){return $!=="linux"||Q!==0}function B7($,Q){if(!Q&&($??"linux")==="linux")return pZ;return uZ(Q,void 0,$??"linux").socket}function L7($){return $[W0]===!0?"sandbox_loopback":"ara_device_wss"}function V9($){return Boolean($)&&typeof $==="object"&&!Array.isArray($)}function Q4($){let Q=$.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q.endsWith(".localhost")||Q==="::1"||Q==="0:0:0:0:0:0:0:1"||Q==="0.0.0.0"||Q.startsWith("127.")}class Z4 extends C{expiryDiagnostic;constructor($){super("invalid_hands_expiry","Reason Hands connection expiry is invalid.");this.expiryDiagnostic=$}}function N7($){return V9($)&&Object.keys($).every((Q)=>Q==="source_path"||Q==="branch")&&($.source_path===void 0||p0($.source_path))&&typeof $.branch==="string"&&t8.test($.branch)}function M7($,Q,Z){let X=Q===void 0?Date.now():Q,J=["relay_url","session_id","environment_id","expires_at","policy_mode","policy_version","hands_protocol_version","hands_worker_version","hands_worker_artifact_sha256","hands_worker_entrypoint","target_generation","target_fence_id"],G=new Set([...J,"workspace_id","legacy_workspace_id",l0,s0,"environment_binding","cloud_browser","sandbox_provider","sandbox_os","personal_workspace","workspace_path","workspace_worktree",p,W0,H$,z9,N0,n0,b0]),z=V9($)?$:null,H=z?.[H$],Y=z?.[z9],V=z?.[n0],U=H===void 0||(z?.[p]===w0||V===R9&&z?.[p]===void 0)&&V9(H)&&Object.keys(H).every((q)=>q==="mode"||q==="allowed_domains")&&H.mode==="enforce"&&Array.isArray(H.allowed_domains)&&H.allowed_domains.length<=256&&H.allowed_domains.every((q)=>typeof q==="string"&&y8(q));if(!V9($)||J.some((q)=>!(q in $))||Object.keys($).some((q)=>!G.has(q))||!U||V!==void 0&&V!==R9||z?.[b0]!==void 0&&z[b0]!==V8||z?.personal_workspace!==void 0&&(z.personal_workspace!==!0||z[p]!==w0)||z?.cloud_browser!==void 0&&(z.cloud_browser!==!0||z[p]!==w0)||z?.sandbox_provider!==void 0&&!z$(z.sandbox_provider)||z?.sandbox_os!==void 0&&z.sandbox_os!=="linux"||Y!==void 0&&(z?.[p]!==G9||!o8(Y))||p in $&&$[p]!==w0&&$[p]!==G9&&$[p]!==U0||W0 in $&&$[W0]!==!0||$.workspace_path!==void 0&&(!p0($.workspace_path)||$[p]!==U0)||$.workspace_worktree!==void 0&&($.workspace_path===void 0||!N7($.workspace_worktree))||typeof $.relay_url!=="string"||typeof $.session_id!=="string"||!k0.test($.session_id)||$.workspace_id!==void 0&&(typeof $.workspace_id!=="string"||!k0.test($.workspace_id))||$.legacy_workspace_id!==void 0&&(typeof $.legacy_workspace_id!=="string"||!k0.test($.legacy_workspace_id))||$[l0]!==void 0&&($[l0]!==F8||(p in $))||$[s0]!==void 0&&($[s0]!==U8||(p in $))||$[N0]!==void 0&&(typeof $[N0]!=="string"||!k0.test($[N0]))||typeof $.environment_id!=="string"||!k0.test($.environment_id)||typeof $.expires_at!=="string"||$.policy_mode!=="full_access"||$.policy_version!==1||$.hands_protocol_version!==F9||$.hands_worker_version!==U9||$.hands_worker_artifact_sha256!==z0||!wZ($.hands_worker_entrypoint)||!I0($.target_generation)||!j0($.target_fence_id))throw new C("invalid_hands_payload","Reason Hands connection payload is invalid.");let F;try{F=new URL($.relay_url)}catch{throw new C("invalid_hands_relay","Reason Hands relay URL is invalid.")}let K=$[W0]===!0,L=Q4(F.hostname);if((K?F.protocol!=="ws:"||!L:L?F.protocol!=="ws:":F.protocol!=="wss:")||F.username||F.password||F.hash||!/^\/device\/[A-Za-z0-9-]+\/[A-Za-z0-9]+$/.test(F.pathname))throw new C("invalid_hands_relay","Reason Hands relay URL is not allowed.");let B=Date.parse($.expires_at),W=Number.isNaN(B)?"parse":new Date(B).toISOString()!==$.expires_at?"noncanonical":B<=X?"expired":B-X>lZ?"over_cap":"accepted",M={version:1,outcome:W,clock_source:Q===void 0?"date_now":"injected",validation_now_ms:$9(X),expiry_ms:$9(B),remaining_ms:Number.isSafeInteger(B-X)?B-X:null,maximum_lifetime_ms:lZ,cli_artifact:bZ()};if(W!=="accepted")throw new Z4(M);try{Z?.(M)}catch{}let _=$.environment_binding===void 0?void 0:E8.safeParse($.environment_binding);if(_&&!_.success)throw new C("invalid_hands_request","Reason Hands environment binding is invalid.");return{...$.cloud_browser===!0?{cloud_browser:!0}:{},...z$($.sandbox_provider)?{sandbox_provider:$.sandbox_provider}:{},...$.sandbox_os==="linux"?{sandbox_os:$.sandbox_os}:{},...$.personal_workspace===!0?{personal_workspace:!0}:{},relay_url:F.toString(),..._?.success?{environment_binding:_.data}:{},session_id:$.session_id,...$.workspace_id===void 0?{}:{workspace_id:$.workspace_id},...$.legacy_workspace_id===void 0?{}:{legacy_workspace_id:$.legacy_workspace_id},...$[l0]===F8?{[l0]:F8}:{},...$[s0]===U8?{[s0]:U8}:{},...typeof $[N0]==="string"?{[N0]:$[N0]}:{},...$[n0]===R9?{[n0]:R9}:{},...$[b0]===V8?{[b0]:V8}:{},...typeof $.workspace_path==="string"?{workspace_path:$.workspace_path}:{},...V9($.workspace_worktree)?{workspace_worktree:{...typeof $.workspace_worktree.source_path==="string"?{source_path:$.workspace_worktree.source_path}:{},branch:String($.workspace_worktree.branch)}}:{},environment_id:$.environment_id,expires_at:$.expires_at,policy_mode:"full_access",policy_version:1,hands_protocol_version:F9,hands_worker_version:U9,hands_worker_artifact_sha256:z0,hands_worker_entrypoint:u0,target_generation:$.target_generation,target_fence_id:$.target_fence_id,...p in $?{[p]:$[p]}:{},...K?{[W0]:!0}:{},...Y===void 0?{}:{[z9]:Y},...H===void 0?{}:{[H$]:{mode:"enforce",allowed_domains:[...new Set(H.allowed_domains)].sort()}}}}function j7(){let $=new Map;return{acquire(Q,Z){if($.has(Q))return null;let X=[...$.values()],J=(z)=>Z.group!==void 0&&z.group===Z.group;if(Z.exclusive?!X.every(J):X.some((z)=>z.exclusive))return null;if(Z.limit!==void 0&&!X.some(J)&&new Set(X.map((z,H)=>z.group??H)).size>=Z.limit)return null;$.set(Q,Z);let G=!1;return()=>{if(G)return;G=!0,$.delete(Q)}},activeOwners:()=>[...$.keys()]}}var C7=j7();function q7($,Q){W9($,{recursive:!0,mode:448});let Z=n($),X=()=>new C("invalid_hands_workspace","Reason Hands managed workspace ancestor must be a real directory, not a link.");for(let z of Q.split("/")){let H=o(Z,z);try{let V=t(H);if(V.isSymbolicLink()||!V.isDirectory())throw X()}catch(V){if(!(V&&typeof V==="object"&&("code"in V)&&V.code==="ENOENT"))throw V;try{W9(H,{mode:448})}catch(U){if(!(U&&typeof U==="object"&&("code"in U)&&U.code==="EEXIST"))throw U}}let Y=t(H);if(Y.isSymbolicLink()||!Y.isDirectory()||n(H)!==H)throw X();Z=H}let J=t(Z),G=X7(Z,K$.O_RDONLY|K$.O_DIRECTORY|K$.O_NOFOLLOW);try{let z=Z7(G);if(!z.isDirectory()||z.dev!==J.dev||z.ino!==J.ino||n(Z)!==Z)throw X();Q7(G,448)}finally{$7(G)}return Z}function T7($,Q=iZ(),Z,X,J){if(!k0.test($)||Z!==void 0&&!k0.test(Z))throw new C("invalid_hands_workspace","Reason Hands run identity is invalid.");let G=K0(v0({kind:"managed",workspaceId:$,...X?{base:X}:{},...J?{layout:J}:{}})),z=q7(Q,K0(G)),H=o(z,K7(G)),Y=!1;try{let K=t(H);if(Y=!0,K.isSymbolicLink())throw new C("invalid_hands_workspace","Reason Hands workspace cannot be a symbolic link.");if(!K.isDirectory())throw new C("invalid_hands_workspace","Reason Hands workspace must be a managed directory.")}catch(K){if(K instanceof C||!(K&&typeof K==="object"&&("code"in K)&&K.code==="ENOENT"))throw K}if(J&&!Y)try{let K=o(n(Q),K0(v0({kind:"managed",workspaceId:$,...X?{base:X}:{}}))),L=t(K);if(!L.isSymbolicLink()&&L.isDirectory()&&n(K)===K)K8(K,H),Y=!0}catch{}if(Z&&Z!==$){let K=o(z,Z);try{let L=t(K);if(L.isSymbolicLink()||!L.isDirectory())throw new C("invalid_hands_workspace","Reason Hands legacy workspace must be a managed directory.");let B=n(K);if(K0(B)!==z)throw new C("invalid_hands_workspace","Reason Hands legacy workspace escaped its managed parent.");let W=null;if(Y){W=o(z,`.${$}.previous`);try{throw t(W),new C("invalid_hands_workspace","Reason Hands previous workspace backup already exists.")}catch(M){if(M instanceof C||!(M&&typeof M==="object"&&("code"in M)&&M.code==="ENOENT"))throw M}K8(H,W)}try{K8(B,H)}catch(M){if(W)K8(W,H);throw M}Y=!0}catch(L){if(L instanceof C||!(L&&typeof L==="object"&&("code"in L)&&L.code==="ENOENT"))throw L}}W9(H,{recursive:!0,mode:448}),E9(H,448);let V=n(H);if(K0(V)!==z)throw new C("invalid_hands_workspace","Reason Hands workspace escaped its managed parent.");let U=o(V,"repo");try{let K=t(U);if(K.isSymbolicLink()||!K.isDirectory())throw new C("invalid_hands_workspace","Reason Hands repository must be a managed directory.")}catch(K){if(K instanceof C||!(K&&typeof K==="object"&&("code"in K)&&K.code==="ENOENT"))throw K}W9(U,{recursive:!0,mode:448}),E9(U,448);let F=n(U);if(K0(F)!==V)throw new C("invalid_hands_workspace","Reason Hands repository escaped its managed run workspace.");return{workRoot:V,repoPath:F}}function X4($){let Q=null;try{Q=t($)}catch{}if(!Q||Q.isSymbolicLink()||!Q.isDirectory()||Q.uid!==0||Q.gid!==0||(Q.mode&4095)!==493)throw new C("cloud_workspace_root_invalid","This cloud Session's workspace root is not root's 0755 directory, so Reason Hands cannot use it.")}function O7($,Q){let Z="/";for(let X of["",...$.split("/"),...Q.split("/")].filter((J,G)=>G===0||J)){if(X)Z=o(Z,X);let J;try{J=t(Z)}catch{return null}if(J.uid!==0)return J.uid;if((J.mode&2)!==0&&(J.mode&512)===0&&!J.isSymbolicLink())return-1;if(J.isSymbolicLink()||!J.isDirectory())return null}return null}function D7($,Q,Z,X=process.geteuid?.(),J){if(!k0.test(Q))return null;let G,z;try{G=n($),z=K0(v0({kind:"managed",workspaceId:Q,...Z?{base:Z}:{},...J?{layout:J}:{}}))}catch{return null}let H=o(G,z),Y=F$(H)!==null,V=(B)=>new C("cloud_workspace_root_invalid",B),U;if(X===0){let B=O7(G,z);if(B===null)return null;if(!Y)throw new C("invalid_hands_workspace","As root, Reason Hands never prepares a workspace in folders another user owns.");U=B}else{if(!Y)return null;let B,W;try{B=t(K0(H)),W=t(H)}catch{return null}if(B.isSymbolicLink()||!B.isDirectory()||B.uid===0||W.uid!==0)return null;U=B.uid}let F=G;for(let B of z.split("/")){let W=o(F,B),M=!1;try{let _=t(W);M=!_.isSymbolicLink()&&_.isDirectory()&&n(W)===W}catch{}if(!M)throw V("This cloud Session's workspace root is missing or is not a real directory.");F=W}X4(H);let K;try{K=J4(H)}catch(B){if(B instanceof C)throw B;throw V("This cloud Session's workspace root changed while Reason Hands checked it.")}let L=null;try{L=S9(K.repoPath).uid}catch{}if(L!==U)throw new C("invalid_hands_workspace","Reason Hands repository must belong to the cloud Session's user.");return K}function J4($,Q=!1){let Z=n($),X=o(Z,"repo"),J;try{J=t(X)}catch{throw new C("invalid_hands_workspace","Reason Hands repository is missing from the granted root.")}if(Q){if(!/^\/var\/lib\/reason\/sessions\/[0-9a-f-]{36}$/.test(Z))throw new C("invalid_hands_workspace","Personal runtime identity is invalid.");if(z8(Z.slice(Z.lastIndexOf("/")+1)).runtimeRoot!==Z)throw new C("invalid_hands_workspace","Personal runtime identity is invalid.");let H=n("/workspace"),Y=n(X);if(H!=="/workspace"||!S9(Y).isDirectory()||!Y.startsWith("/workspace/"))throw new C("invalid_hands_workspace","Personal files escaped the personal computer.");return{workRoot:Z,repoPath:Y}}let G=jZ(Z);if(G&&J.isSymbolicLink()){let H=n(X);if(H!==n(G)||!S9(H).isDirectory())throw new C("invalid_hands_workspace","Side chat repository must be its parent's checkout.");return{workRoot:Z,repoPath:H}}if(J.isSymbolicLink()||!J.isDirectory())throw new C("invalid_hands_workspace","Reason Hands repository must be a managed directory.");let z=n(X);if(K0(z)!==Z)throw new C("invalid_hands_workspace","Reason Hands repository escaped its granted root.");return{workRoot:Z,repoPath:z}}function W$($,Q,Z){if(Q!==void 0&&!p0(Q))throw new C("invalid_hands_workspace",`Reason Hands ${Z} is invalid.`);let X=$4($,Q??".");if(!R0($,X))throw new C("invalid_hands_workspace",`Reason Hands ${Z} escapes its granted root.`);return X}function Y4($,Q,Z){if(r8(Q)){let X=n(Z);return{anchor:X,target:$4(X,Q),boundary:o(X,K9)}}return{anchor:$,target:W$($,Q,"folder"),boundary:$}}function _7($,Q){if(!R0($,Q))throw new C("invalid_hands_workspace","Reason Hands folder escapes its granted root.");let Z=$;for(let X of Q.slice($.length).split("/").filter(Boolean)){Z=o(Z,X);let J=null;try{J=t(Z)}catch(G){if(G.code!=="ENOENT")throw G}if(!J)W9(Z,{mode:448});else if(J.isSymbolicLink()||!J.isDirectory())throw new C("invalid_hands_workspace","Reason Hands folder must be made of real directories.")}}function G4($,Q){let Z=n(W$($,Q.source_path,"repository"));if(!R0($,Z)||!S9(Z).isDirectory())throw new C("invalid_hands_workspace","Reason Hands repository must be a folder in its granted root.");return Z}async function A7($,Q,Z,X=W8()){try{let J=n($);if(V$(Y4(J,Q,X).target))return;return await _Z(G4(J,Z))??void 0}catch{return}}function x7($,Q,Z,X,J=P7,G=W8()){let z=n($),{target:H,boundary:Y,anchor:V}=Y4(z,Q,G);if(Z&&!V$(H)){let K=G4(z,Z);_7(V,K0(H));let L=["-c","core.hooksPath=/dev/null","-C",K];if(X)J([...L,"update-ref","--create-reflog","-m",X.note,`refs/heads/${Z.branch}`,X.commit,""]);let B=X?J([...L,"worktree","add",H,Z.branch]):J([...L,"worktree","add","-b",Z.branch,H]);if(!X&&B.status!==0&&/already exists/.test(B.stderr)&&!V$(H))B=J([...L,"worktree","add",H,Z.branch]);if(B.status!==0)throw new C(/not a git repository/i.test(B.stderr)?"workspace_not_git_repository":"workspace_worktree_failed","Reason could not create this Session's git worktree.")}let U;try{U=t(H)}catch{throw new C("workspace_folder_missing","This Session's folder no longer exists.")}let F=n(H);if(U.isSymbolicLink()&&!R0(Y,F))throw new C("invalid_hands_workspace","Reason Hands folder resolves outside its granted root.");if(!S9(F).isDirectory()||!R0(Y,F))throw new C("invalid_hands_workspace","Reason Hands folder must be a directory in its granted root.");if(E0(F))throw new C("protected_path","Credential and secret folders are unavailable to Sessions.");return F}function P7($){let Q=e6("git",$,{encoding:"utf8",timeout:60000,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},stdio:["ignore","ignore","pipe"]});return{status:Q.status,stderr:Q.stderr??""}}function z4($){return dZ($)??F$($)?.jobEnv??o($,"job.env")}function I7($,Q){let Z=z4($),X=t(Z);if(X.isSymbolicLink()||!X.isFile())throw new C("invalid_hands_workspace","Reason Hands job environment must be a managed regular file.");J7(Z,Q),E9(Q,384)}function R7($){if($.workspaceMode===U0&&$.workspacePath!==void 0){let z=$.home??W8(),H=x7($.grantedRoot,$.workspacePath,$.workspaceWorktree,$.workspaceWorktreeStart,void 0,z);if($.workspaceWorktree&&$.deviceId)IZ(z,$.workspacePath,$.deviceId);return{workRoot:H,repoPath:H,workspace:{kind:"root",path:$.workspacePath},jobEnvPath:o($.temporaryDirectory,"job.env"),workspacePoolPath:null,managedWorkspace:!0}}if($.workspaceMode===w0)return{...J4($.grantedRoot,$.personalWorkspace),workspace:{kind:"root"},jobEnvPath:o($.temporaryDirectory,"job.env"),workspacePoolPath:null,managedWorkspace:!1};if($.workspaceMode===G9||$.workspaceMode===U0){let z=t($.grantedRoot);if(z.isSymbolicLink()||!z.isDirectory())throw new C("invalid_hands_workspace","Reason Hands root must be a real directory.");let H=n($.grantedRoot);return{workRoot:H,repoPath:H,workspace:{kind:"root"},jobEnvPath:o($.temporaryDirectory,"job.env"),workspacePoolPath:null,managedWorkspace:!0}}let Q=$.workspaceId??$.runId,Z={kind:"managed",workspaceId:Q,...$.workspaceBase?{base:$.workspaceBase}:{},...$.workspaceLayout?{layout:$.workspaceLayout}:{}},X=p9($.grantedRoot,Z,$.home).anchor,J=D7(X,Q,$.workspaceBase,void 0,$.workspaceLayout);if(J)return{...J,workspace:Z,jobEnvPath:o($.temporaryDirectory,"job.env"),workspacePoolPath:null,managedWorkspace:!1,cloudSessionRoot:!0};let G=T7(Q,X,$.legacyWorkspaceId,$.workspaceBase,$.workspaceLayout);return{...G,workspace:Z,jobEnvPath:o($.temporaryDirectory,"job.env"),workspacePoolPath:K0(G.workRoot),managedWorkspace:!0}}function E7($){let{command:Q,prefix:Z}=S8($.executablePath,$.sourceEntrypoint),X=G8({home:z7(),temporaryDirectory:$.temporaryDirectory,path:$.path});if(X.REASON_DEVICE_ROOT=X.ARA_DEVICE_ROOT=$.grantedRoot,X.REASON_HANDS_WORKSPACE=X.ARA_HANDS_WORKSPACE=$.workRoot,X.REASON_HANDS_REPO=X.ARA_HANDS_REPO=$.root,$.workspacePoolPath)X.REASON_HANDS_WORKSPACE_POOL=X.ARA_HANDS_WORKSPACE_POOL=$.workspacePoolPath;return{command:Q,args:[...Z,"__device","__hands-worker","--config",$.configPath],options:{cwd:$.root,env:X,shell:!1,stdio:["ignore","ignore","pipe"]}}}function S7($,Q){let Z="",X=!1,J=Date.now(),G=0,z=new Set(["connecting","open","dial_pending","socket_error","close","claim_accepted","claim_rejected","stopping","stopped","request_cancelled"].map((F)=>`hands.worker.${F}`)),H=new Set([null,"open_not_received","current_connection","obsolete_connection","request_aborted","request_timeout","client_closed","driver_stopped","driver_handoff","run_cancelled","run_finished","other","frame_too_large","invalid_json","invalid_claim","executor_mismatch","stale_generation","fence_conflict","SIGTERM","SIGINT","SIGHUP","expired","cleanup_complete","cleanup_failed","cancelled","settled","unsupported","unconfirmed"]),Y=["timestampMs","connectionAttempt","connectionGeneration","targetGeneration","activeRequestCount","remainingLifetimeMs","suppressedDiagnostics"],V=["peerGeneration","socketState","closeCode"],U=new Set(["event","reason","launchId",...Y,...V]);return(F)=>{for(let K of F.toString().split(/(?<=\n)/)){let L=K.endsWith(`
|
|
458
458
|
`);if(!X&&Z.length+K.length<=2048)Z+=K;else X=!0;if(!L)continue;let B=Z;if(Z="",X){X=!1;continue}try{let W=JSON.parse(B);if(!W||typeof W!=="object"||Array.isArray(W)||Object.keys(W).some((M)=>!U.has(M))||!z.has(W.event)||!H.has(W.reason)||W.launchId!==$||Y.some((M)=>!Number.isSafeInteger(W[M])||W[M]<0)||V.some((M)=>W[M]!==null&&(!Number.isSafeInteger(W[M])||W[M]<0)))continue;if(Date.now()-J>=60000)J=Date.now(),G=0;if(G>=122)continue;G+=1,Q(W)}catch{}}}}async function w7($){let Q=$.now()+$.timeoutMs;while($.now()<Q){if($.signal.aborted)throw new C("cancelled","Reason Hands start was cancelled.");if($.spawnFailed?.()||$.child.exitCode!==null||$.child.signalCode!==null)throw new C("hands_worker_exited","Reason Hands exited before ready.");let Z=J8($.path,{pid:$.child.pid??-1,launchId:$.launchId,workerVersion:U9,protocolVersion:F9,workerArtifactSha256:z0,workerEntrypoint:u0});if(Z?.targetGeneration===$.targetGeneration&&Z.fenceId===$.fenceId)return Z;await new Promise((X)=>setTimeout(X,10))}throw new C("hands_ready_timeout","Reason Hands did not become ready.")}async function b7($,Q){let Z=()=>$.exitCode===0&&$.signalCode===null;if($.exitCode!==null||$.signalCode!==null)return Z()?"stopped":"already_exited";let X=new Promise((z)=>$.once("exit",()=>z()));try{if(!$.kill("SIGTERM"))return Z()?"stopped":"unobserved"}catch{return Z()?"stopped":"unobserved"}if(await nZ(X,Q))return Z()?"stopped":"unobserved";try{$.kill("SIGKILL")}catch{}return await nZ(X,Q)?"forced":"unobserved"}async function nZ($,Q){let Z;try{return await Promise.race([$.then(()=>!0),new Promise((X)=>{Z=setTimeout(()=>X(!1),Q)})])}finally{clearTimeout(Z)}}function k7($){return new Promise((Q)=>{let Z=!1,X=(H)=>{if(Z)return;Z=!0,clearTimeout(z),$.signal.removeEventListener("abort",J),$.child.off("exit",G),Q(H)},J=()=>X("cancelled"),G=()=>X("exited"),z=setTimeout(()=>X("expired"),Math.max(0,$.expiresAt-$.now()));if($.signal.addEventListener("abort",J,{once:!0}),$.child.once("exit",G),$.signal.aborted)J();else if($.child.exitCode!==null||$.child.signalCode!==null)G()})}var K4=tZ();function f7($,Q){if(!($ instanceof Error)||$ instanceof C)return!1;let Z=["hands_browser_driver_missing","hands_browser_driver_version_mismatch","hands_browser_executable_missing","hands_browser_unsupported_platform","hands_browser_unavailable"].includes($.message),X=["ENOENT","EACCES","EPERM"].includes($.code??"");if(!Z&&!X)return!1;try{return t(Q),!1}catch(J){return V9(J)&&J.code==="ENOENT"}}function m7($){return $.sandbox_provider==="compute"&&!$.cloud_browser&&!$[W0]&&$[p]===w0}function g7($,Q,Z){return $===void 0?{}:{dispatch_stages:{version:1,claim_to_entered_ms:H0($,Q),...Z===void 0?{}:{worker_prespawned:Z}}}}function _Y(){K4().catch(()=>{return}),X9().catch(()=>{return})}async function AY($,Q={}){let Z=Q.logDiagnostic??((N)=>console.warn(N)),X=new Map,J=(N)=>{let j=Date.now();X.set(N,j);try{Z(JSON.stringify({event:"sandbox.hands_startup",stage:N,timestampMs:j}))}catch{}};J("entered");let G=$.claimEnvironment;$.claimEnvironment=void 0;let z=Q.now??Date.now,H,Y=M7($.payload,Q.now?.(),(N)=>{H=N});if($.managedPty&&($.managedPty.version!==1||!$.headless||!$.runtimeDirectory||![void 0,!0].includes($.managedPty.startupVerified)||!$.deviceIdentity||!$.claimOwner||$.claimOwner.device_id!==$.deviceIdentity.deviceId||!Y.environment_binding||!["darwin","linux"].includes(process.platform)))throw new C("pty_unsupported","Bound PTY requires qualified headless Hands with private jobs and environment.");let V=async(N)=>{let j;try{await Promise.race([N,new Promise((A,m)=>{j=setTimeout(()=>m(new C("hands_event_delivery_unavailable","Hands event delivery did not settle within its deadline.")),Math.max(1,Math.min(Q.eventDeliveryTimeoutMs??5000,5000)))})])}finally{clearTimeout(j)}},U=async(N,j)=>V($.emitEvent(N,j));if($.headless&&(Y.cloud_browser===!0||$.managedBrowser!==void 0||Y[W0]!==void 0||Y[z9]!==void 0||Y[p]!==void 0&&Y[p]!==U0))throw new C("invalid_hands_request","Managed sandbox extensions are unavailable to a headless worker.");let F=U$(),K=Y[b0]===void 0?null:W7(F);if(Y[b0]!==void 0&&(K===null||!$.headless||!sZ($.hostExecution,Q.hostIdentity?.platform,Q.hostIdentity?.euid)))throw new C("hands_model_jobs_egress_unavailable","This worker cannot hold its jobs to the guest egress guard; the Hands did not start.");if(Y[n0]!==void 0&&!($.headless&&sZ($.hostExecution,Q.hostIdentity?.platform,Q.hostIdentity?.euid)))throw new C("hands_confinement_unavailable","Confined Hands need a root Linux worker in host mode.");if(Y.cloud_browser&&process.platform!=="linux")throw new C("cloud_browser_target_invalid","Cloud browser is available only on a cloud machine.");let L=`${$.operationId}:${$.attemptId}`,B=Y[p]===G9,W=$.headless||process.platform==="darwin"&&$.managedBrowser===void 0&&!Y.cloud_browser&&!Y.browser_egress&&!Y[W0]&&(Y[p]===void 0||Y[p]===U0)||m7(Y),M=B?Y[z9]??"bash":null,_=M?TZ(M):null;if(_)throw new C(_,"Persistent Node REPL execution is unavailable; this benchmark profile cannot start.");let q=Y[p],D=$.headless===!0?$.handsSlots??1:void 0,x=(Q.slot??C7).acquire(L,{exclusive:D===1||q!==void 0&&q!==U0,...D!==void 0&&D>1?{limit:D}:{},...$.headless===!0&&Y[N0]!==void 0?{group:Y[N0]}:{}});if(!x)throw new C("hands_slot_busy",D!==void 0&&D>1?`This Reason worker runs at most ${D} sessions at a time.`:"This Reason Device runs one session at a time.");let b=$.headless===!0?oZ($.runId):null,T=null,k=null,g,O;try{J("browser_resolution");let N=$.headless&&Q.browserExecutablePath===void 0?await X9():null,j=B||Y.cloud_browser?null:Q.browserExecutablePath===void 0?$.headless?N?.status==="resolved"?N.executablePath:null:await BZ(void 0,process.platform,$.managedBrowser):Q.browserExecutablePath;if(!B&&!Y.cloud_browser&&!W&&!j)throw new C("hands_browser_unavailable","Reason Hands requires Chrome, Edge, Brave, Chromium, or a Playwright Chromium install.");J("path_resolution");let A;try{A=await(Q.resolvePathEnvironment??K4)()}catch{A={path:rZ(),source:"fallback"}}if(J("workspace_setup"),process.platform==="darwin"){let s=Y[p]===U0&&Y.workspace_path!==void 0?W$($.root,Y.workspace_worktree?Y.workspace_worktree.source_path:Y.workspace_path,"folder"):null;for(let Z0 of new Set([$.root,...s?[s]:[]]))await hQ(Z0)}let w=Y[p]===w0||Y[p]===G9?U7(process.platform,Q.sandboxRuntimeRoot):null,E=$.headless&&$.runtimeDirectory?$.runtimeDirectory:w?w.temporaryRoot:eZ();if(T="private_runtime",$.headless&&$.runtimeDirectory){T9(E);let s=n($.root);if(!_9(s,E))throw new C("invalid_hands_workspace","Private worker state must not overlap the granted workspace.")}if($.headless&&$.runtimeDirectory&&(!$.deviceIdentity||!Y.environment_binding))throw new C("environment_unavailable","Headless Hands requires a server-bound private environment.");if(T="runtime_root",w?.prepareRoot)W9(E,{recursive:!0,mode:457}),E9(E,457);T="temporary_directory";let P=n(Y7(o(E,"reason-hands-session-")));k=P,E9(P,w?.sessionMode??448);let f=o(P,"hands-config.json"),d=o(P,"hands-ready.json"),u=r6(),l=Y.target_fence_id;T="granted_root";let S=n($.root);T="workspace_layout";let h=Y[p]===U0&&Y.workspace_path!==void 0&&Y.workspace_worktree?await A7(S,Y.workspace_path,Y.workspace_worktree):void 0,{workRoot:c,repoPath:a,jobEnvPath:V0,workspacePoolPath:B8,managedWorkspace:D0,workspace:i0,cloudSessionRoot:w9}=R7({grantedRoot:S,personalWorkspace:Y.personal_workspace===!0,runId:$.runId,workspaceId:Y.workspace_id,legacyWorkspaceId:Y.legacy_workspace_id,workspaceBase:Y[l0],workspaceLayout:Y[s0],temporaryDirectory:P,workspaceMode:Y[p],applicationSupportPath:Q.applicationSupportPath,...Y.workspace_path===void 0?{}:{workspacePath:Y.workspace_path},...Y.workspace_worktree?{workspaceWorktree:Y.workspace_worktree}:{},...h?{workspaceWorktreeStart:h}:{},...$.deviceIdentity?{deviceId:$.deviceIdentity.deviceId}:{}}),f0=L7(Y);T="jobs";let r=$.headless&&$.runtimeDirectory?JQ({runtimeDirectory:$.runtimeDirectory,root:S,runId:$.runId}):void 0;g=r?.disposeSocket;let B0=r?YQ(r):null;if(B0)try{Z(JSON.stringify({event:"hands.journal_owner_retired",run_id:$.runId,reason:B0.reason,prior_executor_launch_id:B0.executorLaunchId}))}catch{}if(r&&[c,a].some((s)=>!_9(s,r.journalDirectory)))throw new C("invalid_hands_workspace","A Session can't work in the folder that holds this worker's settings; start it in a project or repository inside it.");let a0=Y.personal_workspace?c.slice(c.lastIndexOf("/")+1):void 0;if(a0&&a0!==Y.workspace_id)throw new C("invalid_hands_workspace","Personal session identity does not match its Device grant.");T="browser_socket";let F0=Y.cloud_browser?B7(Y.sandbox_os,a0):o(r?K0(r.socketPath):P,"repl.sock");T="relay_url";let L0=Q4(new URL(Y.relay_url).hostname),m0=f0==="ara_device_wss"&&!L0?(Q.loadProxy??w8)()?.url:void 0,Y0;T="environment_owner";let X0=$.headless&&$.deviceIdentity&&Y.environment_binding?EZ(P,{runId:$.runId,...$.deviceIdentity,binding:Y.environment_binding,expiresAtMs:Date.parse(Y.expires_at),identity:()=>Y0?.()??null}):void 0;T="job_environment";let B9=!X0&&i0.kind==="managed"&&D0?o(c,"job.env"):null;if(B9)try{H8(B9,"",{mode:384,flag:"wx"})}catch(s){if(!(s instanceof Error&&("code"in s)&&s.code==="EEXIST"))throw s}let L8={url:Y.relay_url,transport:f0,...m0===void 0?{}:{proxyUrl:m0},...$.localGithubConfinement?{localGithubConfinement:!0}:{},...Y[n0]&&X0?{gitCredentialEnvironment:!0}:{},workerVersion:U9,protocolVersion:F9,workerArtifactSha256:z0,workerEntrypoint:u0,targetGeneration:Y.target_generation,fenceId:l,workRoot:c,workspaceAliasPath:c,jobEnvPath:V0,...X0?{environmentSnapshotPath:X0.path,...$.hostExecution?{executionEnvironment:RQ()}:{},environmentExpectedBinding:{runId:$.runId,...$.deviceIdentity,binding:Y.environment_binding}}:B9?{jobEnvSourcePath:B9,workspacePoolPath:K0(c)}:D0?{}:{jobEnvSourcePath:z4(c)},repoPath:a,replSocketPath:F0,...Y.cloud_browser?{browserRunId:$.runId}:{},readyPath:d,launchId:u,expiresAtMs:Date.parse(Y.expires_at),bashTimeoutMs:300000,replTimeoutMs:120000,...r?{managedJobs:{journalDirectory:r.journalDirectory,scopeId:r.scopeId},jobControlSocketPath:r.socketPath}:{},...r&&F?{jobsUser:{...F,...K!==null?{modelGid:K}:{}}}:{},...$.managedPty&&r&&X0?{managedPty:{version:1,...$.managedPty.startupVerified===!0?{persistent:!0}:{},...process.platform==="darwin"?{shell:EQ()}:{}}}:{},...W&&!j?{allowedTools:["bash","read","write","edit"]}:B?{allowedTools:M==="bash"?["bash"]:["bash","repl"]}:{}};if(X0||D0&&!B9)H8(V0,"",{mode:384});else I7(c,V0);T="config_write",H8(f,JSON.stringify(L8),{mode:384}),T=null;let g0={session_id:Y.session_id,environment_id:Y.environment_id,hands_protocol_version:F9,hands_worker_version:U9,hands_worker_artifact_sha256:z0,hands_worker_entrypoint:u0,target_generation:Y.target_generation,target_fence_id:Y.target_fence_id,executor_launch_id:u},b9=null,B$=!1,L$=!1,N$,Q0=null,M$,j$,k9="failed",C$=null,N8=Promise.resolve(),q$=null,M8=async(s,Z0)=>{try{await U(s,Z0)}catch{}};try{J("event_started");let s,Z0=(async()=>{await $.emitEvent("hands.started",{...g0,policy_mode:"full_access",policy_version:1,path_source:A.source}),s=Date.now()})();Z0.catch(()=>{return}),J("worker_setup");let f9=Y.browser_egress?{mode:"enforce",allowedDomains:Y.browser_egress.allowed_domains}:{mode:"off"};if(M&&M!=="bash")b9=await(Q.startNodeRepl??hZ)({socketPath:F0,workRoot:c});else if(!B&&!Y.cloud_browser&&j)b9=await(Q.startRepl??LZ)({socketPath:F0,browserExecutablePath:j,workspaceRoot:a,...$.managedBrowser?{managedBrowser:$.managedBrowser}:{},...$.desktopRecording?{recording:$.desktopRecording}:{},networkPolicy:f9,onEgressDenied:(y)=>{let M0=CZ(y.host);Z(JSON.stringify({event:"sandbox.repl_egress_denied",destination_id:M0,reason:y.reason,run_id:$.runId})),N8=N8.then(()=>U("hands.browser_egress_denied",{destination_id:M0,reason:y.reason})).catch((V4)=>{q$??=V4})}}).catch((y)=>{if(!W||$.signal.aborted||z()>=Date.parse(Y.expires_at)||!f7(y,F0))throw y;return Object.assign(L8,{allowedTools:["bash","read","write","edit"]}),H8(f,JSON.stringify(L8),{mode:384}),L$=!0,null});let T$=E7({configPath:f,root:a,grantedRoot:S,workRoot:c,workspacePoolPath:B8,temporaryDirectory:P,path:A.path,executablePath:Q.executablePath,sourceEntrypoint:Q.sourceEntrypoint}),j8=Date.now(),C8,O$,q8=Q.takePrespawnedWorker?.(T$)??null;if(N$=Q.takePrespawnedWorker?q8!==null:void 0,Q0=q8??(Q.spawnWorker??((y)=>t6(y.command,y.args,y.options)))(T$),!q8)Q.adoptSpawnedWorker?.(Q0);Q0.stderr?.on("data",S7(u,(y)=>{if(y.event==="hands.worker.connecting")C8??=y.timestampMs;else if(y.event==="hands.worker.open")O$??=y.timestampMs;Z(JSON.stringify({...y,run_id:$.runId}))}));let D$=!1;Q0.on("error",()=>{D$=!0}),Q0.once("exit",(y,M0)=>{try{Z(JSON.stringify({event:"hands.worker.exited",run_id:$.runId,launchId:u,exit_code:y,exit_signal:M0}))}catch{}}),O=Q0,J("worker_ready_wait");let L9=await w7({path:d,launchId:u,fenceId:l,targetGeneration:Y.target_generation,child:Q0,spawnFailed:()=>D$,signal:$.signal,timeoutMs:Q.readyTimeoutMs??H7,now:z}),H4=Date.now();if(Y0=()=>{if(!Q0||Q0.exitCode!==null||Q0.signalCode!==null)return null;let y=J8(d,L9);return y?{generation:y.targetGeneration,fenceId:y.fenceId}:null},r){let y={root:S,runId:$.runId,operationId:$.operationId,scopeId:r.scopeId,socketPath:r.socketPath,generation:L9.targetGeneration,fenceId:L9.fenceId,executorLaunchId:u,expiresAtMs:Date.parse(Y.expires_at),readIdentity:Y0,workspace:i0,localGithubConfinement:$.localGithubConfinement===!0};if(X0)y.environment=X0;if($.claimOwner&&$.deviceIdentity&&$.claimOwner.device_id===$.deviceIdentity.deviceId){let M0=[$.deviceIdentity.apiOrigin,Y.relay_url];if(m0)M0.push(m0);y.previewAuthority={owner:Object.freeze({...$.claimOwner}),rootId:$.deviceIdentity.rootId,relayOrigin:new URL(Y.relay_url).origin,deniedPorts:y$(M0)}}j$=GQ(y)}if(await new Promise((y)=>{setImmediate(y)}),w9)X4(c);let m9;if(G&&X0){try{let y=X0.install(G);m9={snapshot_id:y.snapshot_id,installed_revision:y.installed_revision}}catch{}try{Z(JSON.stringify({event:"hands.environment_at_claim",run_id:$.runId,installed:m9!==void 0}))}catch{}}G=void 0,J("event_ready");let _$=V(Z0);_$.catch(()=>{return});let A$=Date.now();B$=!0,await U("hands.ready",{...g0,expiry_diagnostic:H,startup_stages:{version:1,browser_resolution_ms:H0(X.get("browser_resolution"),X.get("path_resolution")),path_resolution_ms:H0(X.get("path_resolution"),X.get("workspace_setup")),workspace_setup_ms:H0(X.get("workspace_setup"),X.get("event_started")),repl_setup_ms:H0(X.get("worker_setup"),j8),worker_boot_ms:H0(j8,C8),worker_dial_ms:H0(C8,O$),worker_ready_ms:H0(j8,H4),started_event_ms:H0(X.get("event_started"),s),started_join_wait_ms:H0(X.get("event_ready"),A$),total_ms:H0(X.get("entered"),A$)},...g7($.claimedAtMs,X.get("entered"),N$),...$.managedPty?.startupVerified===!0?{managed_pty:{version:1,execution_mode:"host",descendant_cleanup_verified:!0}}:{},policy_mode:"full_access",policy_version:1,path_source:A.source,connection_generation:L9.generation,...m9?{environment_installed:m9}:{},...W&&!b9?{browser_state:"unavailable",browser_reason_code:L$?"setup_failed":"not_resolved"}:{viewport_width:1440,viewport_height:900}}),await _$,J("ready"),M$=mZ({path:d,initial:L9,signal:$.signal,isAlive:()=>Q0!==null&&Q0.exitCode===null&&Q0.signalCode===null&&z()<Date.parse(Y.expires_at),publish:(y,M0)=>$.emitEvent("hands.reconnected",{...g0,target_generation:y.targetGeneration,target_fence_id:y.fenceId,connection_generation:y.generation},M0),failed:()=>Z(JSON.stringify({event:"hands.worker.generation_proof_failed",run_id:$.runId,executor_launch_id:u}))});let x$=await k7({child:Q0,signal:$.signal,expiresAt:Date.parse(Y.expires_at),now:z});if(x$==="cancelled"){let y=$.signal.reason instanceof C?$.signal.reason.code:"cancelled";throw k9=y,new C(y,"Reason Hands was cancelled.")}if(x$==="exited")throw new C("hands_worker_exited","Reason Hands exited unexpectedly.");return k9="expired",{...g0,policy_mode:"full_access",policy_version:1,ended:"expired"}}catch(s){C$=s;let Z0=s instanceof C?s.code:"hands_failed",f9=Z0==="cancelled"||["run_finished","run_cancelled","driver_handoff","driver_stopped"].includes(Z0);if(k9=f9?Z0:"failed",!f9)await M8("hands.failed",{...g0,reason_code:Z0});throw s}finally{M$?.stop(),j$?.();let s=Q0?await b7(Q0,Q.stopTimeoutMs??V7):null,Z0=!1;await $.desktopRecording?.close();try{await b9?.stop()}catch{Z0=!0}if(await N8,(s==="stopped"||s==="already_exited"&&!B$)&&!Z0)await M8("hands.stopped",{...g0,reason_code:k9});else if(s!==null||Z0){if(await M8("hands.failed",{...g0,reason_code:s==="forced"?"hands_stop_forced":"hands_stop_unconfirmed"}),C$===null||Z0)throw new C("hands_stop_unconfirmed","Reason Hands resource cleanup could not be proven.")}if(q$!==null)throw new C("hands_egress_audit_failed","Reason Hands could not persist a browser egress denial receipt.")}}catch(N){let j=NZ(T,N);if(j)try{Z(JSON.stringify({event:"sandbox.hands_workspace_failed",...j}))}catch{}throw N}finally{try{if(!O||O.exitCode!==null||O.signalCode!==null)g?.();if(k!==null&&(!O||O.exitCode!==null||O.signalCode!==null))G7(k,{recursive:!0,force:!0})}finally{b?.(),x()}}}
|
|
459
459
|
export{v as ga,E$ as ha,S$ as ia,j4 as ja,f$ as ka,g$ as la,y$ as ma,H2 as na,JQ as oa,_2 as pa,A2 as qa,x2 as ra,P2 as sa,I2 as ta,R2 as ua,KQ as va,E2 as wa,w2 as xa,p as ya,U0 as za,OX as Aa,DX as Ba,hX as Ca,vX as Da,NQ as Ea,l9 as Fa,T9 as Ga,O9 as Ha,AQ as Ia,EZ as Ja,l2 as Ka,xQ as La,RQ as Ma,EQ as Na,M5 as Oa,j5 as Pa,J0 as Qa,C5 as Ra,q5 as Sa,T5 as Ta,E5 as Ua,u3 as Va,S5 as Wa,_9 as Xa,R0 as Ya,w5 as Za,X9 as _a,n3 as $a,i3 as ab,tQ as bb,p5 as cb,A9 as db,y1 as eb,G$ as fb,dZ as gb,sZ as hb,U$ as ib,W7 as jb,OY as kb,DY as lb,Z4 as mb,j7 as nb,X4 as ob,J4 as pb,E7 as qb,_Y as rb,AY as sb};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{gh as X,ih as Y,kh as Z}from"./vm-hands-entry-lite-
|
|
2
|
+
import{gh as X,ih as Y,kh as Z}from"./vm-hands-entry-lite-ngvxyjhy.js";import{execFileSync as z}from"child_process";import{existsSync as V,realpathSync as M}from"fs";import{userInfo as D}from"os";import{isAbsolute as $,join as C,normalize as F,parse as K}from"path";function Q(){let q=F(D().homedir);if(!$(q)||q===K(q).root)throw Error("Could not resolve the canonical macOS user home.");return q}function O(q,B,J=Q()){let L=Z(B);if(B.kind==="managed"&&B.base){let G=M(J);return{anchor:G,boundary:C(G,B.base),path:C(G,L)}}if(B.kind==="root"&&Y(B.path)){let G=M(J);return{anchor:G,boundary:C(G,X),path:C(G,L)}}return{anchor:q,boundary:q,path:C(q,L)}}function _(q=Q()){return C(q,".config")}function b(){if(process.platform!=="darwin")return null;try{let q=z("/usr/bin/getconf",["DARWIN_USER_DIR"],{encoding:"utf8",timeout:5000}).trim();return $(q)?M(q):null}catch{return null}}function g(q=Q()){let B=C(q,"Library","Application Support","Ara"),J=C(q,"Library","Application Support","Reason");return V(B)&&!V(J)?B:J}
|
|
3
3
|
export{Q as Zg,O as _g,_ as $g,b as ah,g as bh};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{ae as j}from"./vm-hands-entry-lite-
|
|
2
|
+
import{ae as j}from"./vm-hands-entry-lite-h7ndfgwc.js";var p="inference.custom.v1",R=32768,$=67108864,x=16384,A=204800,z=600000,P=["content-type","anthropic-version","user-agent"],W=j.enum(["openai-completions","openai-responses","anthropic-messages"]),U=new Set(P),V=j.record(j.string(),j.string().max(2048)).refine((w)=>Object.keys(w).every((F)=>U.has(F))&&Object.values(w).every((F)=>!/[\r\n\0]/.test(F)),"Only non-secret custom endpoint request headers are permitted");function J(w){try{let F=new URL(w);return["http:","https:"].includes(F.protocol)&&!F.username&&!F.password&&!F.search&&!F.hash?F:null}catch{return null}}function X(w,F){let G=J(w.baseUrl),K=J(F.baseUrl),H=J(w.url);if(!G||!K||!H||w.method!=="POST"||F.execution!=="device")return!1;let L=(Q)=>Q.origin+Q.pathname.replace(/\/+$/,"");if(L(G)!==L(K)||H.origin!==G.origin)return!1;let Z=F.api==="openai-completions"?"/chat/completions":F.api==="openai-responses"?"/responses":"/v1/messages";return H.pathname===G.pathname.replace(/\/+$/,"")+Z}var B=j.object({baseUrl:j.string().max(2048),url:j.string().max(4096),method:j.literal("POST"),body:j.string().refine((w)=>new TextEncoder().encode(w).byteLength<=A).optional(),headers:V,credentialOrganizationId:j.string().uuid(),accountKey:j.string().min(1).max(256).optional()}).strict().refine((w)=>W.options.some((F)=>X(w,{baseUrl:w.baseUrl,api:F,execution:"device"})),"Invalid custom endpoint inference URL"),C=j.object({status:j.number().int().min(200).max(599),statusText:j.string().max(256).refine((w)=>!/[\r\n\0]/.test(w)),headers:j.record(j.string(),j.string().max(4096)).refine((w)=>Object.keys(w).every((F)=>["content-type","retry-after","x-request-id","request-id"].includes(F))&&Object.values(w).every((F)=>!/[\r\n\0]/.test(F)))}).strict(),I=j.union([j.object({eof:j.literal(!0)}).strict(),j.object({eof:j.literal(!1),data:j.string().max(Math.ceil(R/3)*4).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/).refine((w)=>w.length>0&&w.length*3/4-(w.endsWith("==")?2:w.endsWith("=")?1:0)<=R)}).strict()]),M=j.object({bytes:j.number().int().min(0).max($),chunks:j.number().int().min(0).max(x)}).strict(),N=j.object({apiKey:j.string().min(1).max(16384).refine((w)=>!/[\r\n\0]/.test(w)),api:W}).strict();
|
|
3
3
|
export{p as _b,R as $b,$ as ac,x as bc,A as cc,z as dc,P as ec,X as fc,B as gc,C as hc,I as ic,M as jc,N as kc};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{t as u0}from"./vm-hands-entry-lite-
|
|
2
|
+
import{t as u0}from"./vm-hands-entry-lite-250sqsry.js";import{A as Z5,B as Q5,C as j7,D as z7,E as v3,F as p5,G as G5,H as _0,I as l$,J as p$,K as E0,L as J2,M as c5,N as i0,O as H6,P as Z3,Q as o5,U as e5,ba as R7,ca as C7,da as I7,ea as P7,fa as u3,y as v6,z as g6}from"./vm-hands-entry-lite-tqn3a245.js";import{Aa as X5,Ba as Y5,Ca as T7,Da as _7,Fa as u,Ga as e,Ha as s,Ia as c,Ja as M5,Ka as W7,La as W$,Oa as V4,Pa as H4,Qa as zJ,Ra as OJ,Sa as AJ,Ta as k0,Ua as J0,Va as g,Wa as g3,Xa as E$,Ya as K2,Za as U0,_a as L7,db as K6,fb as k8,ha as s7,ib as u2,ka as W5,kb as l5,la as L5,lb as T3,nb as b5,oa as q5,qa as C5,rb as D7,sb as N3,ta as I5,ya as S5,za as w5}from"./vm-hands-entry-lite-pkwvjyy8.js";import{Ab as P5,Bb as x5,Ib as E5}from"./vm-hands-entry-lite-5rbj89cs.js";import{Nb as B5}from"./vm-hands-entry-lite-mk9p22xa.js";import{Ub as d5}from"./vm-hands-entry-lite-qvrnx0vk.js";import{Ac as G4,Ec as a5,Hc as O7,Kc as u6,Lc as d6,mc as i1,nc as Y1,oc as _1,pc as L$,qc as GJ,rc as CJ,sc as IJ,tc as D$,uc as PJ,vc as e3,wc as xJ,xc as Y4,yc as F1,zc as I8}from"./vm-hands-entry-lite-dhngjmag.js";import{Bd as J5,Hd as $$,Rd as F2,Vc as b2,Zc as q7,_c as M7}from"./vm-hands-entry-lite-5zzey257.js";import{ae as B}from"./vm-hands-entry-lite-h7ndfgwc.js";import{ie as RJ,je as o2,me as A7,pe as n$,re as aJ,se as iJ,xe as t5}from"./vm-hands-entry-lite-d9h818st.js";import{$e as h1,Be as b0,Ce as k$,Ee as P0,Fe as j4,He as o0,Ie as z0,Je as w9,Ke as DJ,Le as jJ,Me as E2,Ne as q2,Oe as f3,Pe as R8,Qe as C8,Re as Y$,Se as v$,Te as Y0,Ue as T2,Ve as S7,We as w7,Xe as e1,Ye as R4,_e as Q3,af as m0,bf as y$,cf as X3,ff as m1}from"./vm-hands-entry-lite-zmf3vn3w.js";import{jf as R5}from"./vm-hands-entry-lite-mysjgrwy.js";import{hg as TJ,kg as s5,lg as h3,ng as K5}from"./vm-hands-entry-lite-znw0vvb2.js";import{Wg as Z2,Xg as u5}from"./vm-hands-entry-lite-cfjx91rj.js";import{$g as Y7,Zg as V0}from"./vm-hands-entry-lite-pr65ksfz.js";import{xh as r}from"./vm-hands-entry-lite-g7mf4fc7.js";import{Eh as F7}from"./vm-hands-entry-lite-d94sv87n.js";import{Jh as v0}from"./vm-hands-entry-lite-sn3vjjgx.js";import{spawn as EJ,spawnSync as lK}from"child_process";import{closeSync as SJ,mkdirSync as pK,openSync as wJ,readdirSync as cK,realpathSync as G1,rmSync as z$}from"fs";import{hostname as sK}from"os";import{dirname as $9,join as F0,resolve as aK}from"path";var rJ=/^(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})$/;function U9($){let J=typeof $==="string"?rJ.exec($):null;return J?{major:Number(J[1]),minor:Number(J[2])}:null}import{createHash as XZ,randomBytes as j9}from"crypto";import{createInterface as YZ}from"readline";import{randomBytes as tJ}from"crypto";import{chmodSync as M9,existsSync as T9,lstatSync as oJ,mkdirSync as eJ,readFileSync as _9,renameSync as $Z,unlinkSync as F9,writeFileSync as W9}from"fs";import{homedir as JZ}from"os";import{dirname as ZZ,join as q9}from"path";function e0($=process.env,J=JZ()){let Z=$.XDG_CONFIG_HOME?.trim()||q9(J,".config"),X=P0({env:$})==="staging"?["staging"]:[];return q9(q2(Z,...X),"credentials.json")}function L9($,J=e0()){return eJ(ZZ(J),{recursive:!0,mode:448}),W9(J,`${JSON.stringify($,null,2)}
|
|
3
3
|
`,{mode:384}),M9(J,384),J}function P$($=e0()){if(!T9($))return null;try{let J=_9($,"utf8"),Z=JSON.parse(J);if(typeof Z.apiOrigin!=="string"||typeof Z.clientId!=="string"||typeof Z.accessToken!=="string"||typeof Z.refreshToken!=="string"||typeof Z.expiresAt!=="string"||typeof Z.orgId!=="string"||!Array.isArray(Z.scopes))return null;let Q=new URL(Z.apiOrigin).origin,X=o0(Q);if(X!==Q)QZ($,J,X);return{apiOrigin:X,clientId:Z.clientId,accessToken:Z.accessToken,refreshToken:Z.refreshToken,expiresAt:Z.expiresAt,scopes:Z.scopes.filter((Y)=>typeof Y==="string"),orgId:Z.orgId}}catch{return null}}function QZ($,J,Z){let Q=`${$}.${process.pid}.${tJ(6).toString("hex")}.tmp`;try{let X=oJ($);if(!X.isFile()||X.uid!==process.geteuid?.())return;let Y=JSON.parse(J);if(W9(Q,`${JSON.stringify({...Y,apiOrigin:Z},null,2)}
|
|
4
4
|
`,{mode:384,flag:"wx"}),M9(Q,384),_9($,"utf8")!==J)throw Error("credentials_changed");$Z(Q,$)}catch{try{F9(Q)}catch{}}}function D9($=e0()){if(!T9($))return!1;return F9($),!0}class x$ extends Error{oauthCode;constructor($,J=null){super($);this.oauthCode=J;this.name="LoginError"}}function O9(){let $=j9(48).toString("base64url"),J=XZ("sha256").update($).digest("base64url");return{verifier:$,challenge:J,state:j9(32).toString("base64url")}}function GZ($,J){let Z=typeof $.error==="string"?$.error:null,Q=typeof $.error_description==="string"?$.error_description:Z?Z:J;return new x$(Q,Z)}async function BZ($,J,Z,Q){let X=await Z(`${$}/mcp/oauth/token`,{method:"POST",redirect:"error",headers:{"content-type":"application/x-www-form-urlencoded"},body:J,signal:Q}),Y=await X.json().catch(()=>({}));if(!X.ok)throw GZ(Y,`OAuth token request failed (${X.status})`);return Y}var KZ=1e4;async function VZ($,J={}){let Z=J.fetchImpl??fetch,Q=await BZ($.apiOrigin,new URLSearchParams({grant_type:"refresh_token",client_id:$.clientId,refresh_token:$.refreshToken}),Z,AbortSignal.timeout(KZ)).catch((Y)=>{if(Y instanceof Error&&Y.name==="TimeoutError")throw new x$("Reason did not answer the login refresh in time. Check the network and retry.");throw Y});if(typeof Q.access_token!=="string"||typeof Q.refresh_token!=="string"||typeof Q.expires_in!=="number")throw new x$("Reason returned an incomplete refreshed login.");let X={...$,accessToken:Q.access_token,refreshToken:Q.refresh_token,expiresAt:new Date(Date.now()+Q.expires_in*1000).toISOString(),scopes:typeof Q.scope==="string"?Q.scope.split(/\s+/).filter(Boolean):$.scopes};return L9(X,J.path??e0()),X}var M2=new Map;function z9($,J){if(!J)return $;if(J.aborted)return Promise.reject(J.reason);return new Promise((Z,Q)=>{let X=()=>Q(J.reason);J.addEventListener("abort",X,{once:!0}),$.then(Z,Q).finally(()=>J.removeEventListener("abort",X))})}async function b1($={}){let J=$.path??e0(),Z=P$(J);if(!Z)return null;let Q=$.apiOrigin??b0(process.env,"REASON_API_URL")?.trim();if(Q&&!z0(Z.apiOrigin,new URL(Q).origin))return null;let X=Date.parse(Z.expiresAt)<=Date.now()+60000;if(!$.forceRefresh&&!X)return Z;let Y=[J,Z.apiOrigin,Z.clientId,Z.refreshToken].join("\x00"),G=M2.get(Y);if(G)return z9(G,$.signal);let V;return V=VZ(Z,{fetchImpl:$.fetchImpl,path:J}).catch(async(K)=>{if(!(K instanceof x$)||K.oauthCode!=="invalid_grant"&&K.oauthCode!=="invalid_client")throw K;let N=P$(J),q=K.oauthCode==="invalid_client"?N?.clientId!==Z.clientId:N?.refreshToken!==Z.refreshToken;if(N&&q)return b1({fetchImpl:$.fetchImpl,path:J});return D9(J),null}).finally(()=>{if(M2.get(Y)===V)M2.delete(Y)}),M2.set(Y,V),z9(V,$.signal)}function A9($,J){return new Promise((Z)=>{let Q=YZ({input:$}),X=!1,Y=(V)=>{if(X)return;X=!0,J.removeEventListener("abort",G),Q.close(),$.pause(),Z(V)},G=()=>Y(null);J.addEventListener("abort",G,{once:!0}),Q.once("line",(V)=>Y(V)),Q.once("close",()=>Y(null))})}var HZ=B.object({label:B.string(),used_percent:B.number().min(0).max(100).nullable(),resets_at:B.string().nullable(),exhausted:B.boolean().nullable()}),NZ=B.object({groups:B.array(B.object({selectable:B.boolean().optional(),accounts:B.array(B.object({source_id:B.string().min(1),model_ids:B.array(B.string().min(1)).optional()}))}))});function UZ($){let J=NZ.safeParse($);if(!J.success)return;return J.data.groups.some((Z)=>Z.selectable!==!1&&Z.accounts.some((Q)=>Q.model_ids===void 0||Q.model_ids.length>0))}class G0 extends Error{status;code;suggestedModel;retryAfterMs;constructor($,J,Z,Q,X){super(Z);this.status=$;this.code=J;this.suggestedModel=Q;this.retryAfterMs=X;this.name="ApiError"}static rateLimitDelayMs($,J){if(!($ instanceof G0)||$.status!==429)return null;return Math.min(60000,Math.max(J,$.retryAfterMs??0))}}var qZ=["minimal","low","medium","high","xhigh","max"],MZ=B.object({id:B.string().min(1),kind:B.string(),name:B.string(),custom_name:B.string().nullish(),status:B.string(),online:B.boolean(),compatible:B.boolean().optional(),compatibility_reason:B.string().nullish(),folder_lane_of:B.string().nullish(),roots:B.array(B.object({id:B.string().min(1),label:B.string()}))}),TZ=B.object({devices:B.array(MZ),end_cursor:B.string().nullish(),has_next_page:B.boolean().optional()}),_Z=B.object({id:B.string().min(1),name:B.string()}),FZ=B.object({items:B.array(_Z)}),WZ=B.object({skill_id:B.string().min(1),name:B.string(),description:B.string().nullish(),activation_keywords:B.array(B.string()).default([]),is_enabled:B.boolean().default(!0)}),LZ=B.object({items:B.array(WZ).default([])}),DZ=B.enum(["linux","macos"]),R9=B.object({id:B.string().min(1),name:B.string().min(1),platform:DZ.nullable(),workers:B.object({total:B.number().int(),online:B.number().int(),busy:B.number().int(),idle:B.number().int()}),sessions:B.object({queued:B.number().int(),running:B.number().int()})}),jZ=B.object({machines:B.array(R9)}),zZ=B.object({machine:R9}),OZ=B.object({deleted:B.literal(!0),revoked_workers:B.number().int(),revoked_tokens:B.number().int()}),AZ=B.object({token:B.object({id:B.string().min(1),machine_id:B.string().min(1),token_prefix:B.string()}),secret:B.string().startsWith("rmt_")}),C9=B.looseObject({machine_id:B.string().min(1),machine_name:B.string().min(1)}),RZ=C9.extend({organization_id:B.string().min(1)}),yV=B.object({id:B.string().min(1),name:B.string().min(1),state:B.enum(["waiting","placed"]),queue_position:B.number().int().nullable()});var fV=B.union([B.object({kind:B.literal("cloud")}),B.object({kind:B.enum(["mac","headless"]),device_id:B.string().min(1),root_id:B.string().min(1)})]);function k1($,J,Z){let Q=$.safeParse(J);if(!Q.success)throw new G0(502,Z,"Reason returned an unexpected response.");return Q.data}var CZ=B.object({error:B.object({type:B.string(),message:B.string()})});function I9($,J,Z){let Q=CZ.safeParse(J),X=typeof J.error==="string"?J.error:Q.success?Q.data.error.type:`http_${$}`,Y=typeof J.detail==="string"?J.detail:typeof J.message==="string"?J.message:Q.success?Q.data.error.message:`Reason request failed (${$}${typeof J.error==="string"?` ${J.error}`:""})`,G=X==="github_connection_required"&&typeof J.connect_url==="string"&&/^https?:\/\//.test(J.connect_url)?` Connect it at ${J.connect_url}`:"",V=Z===null||Z.trim()===""?NaN:Number(Z);return new G0($,X,`${Y}${G}`,typeof J.suggested_model==="string"?J.suggested_model:void 0,Number.isFinite(V)&&V>=0?V*1000:void 0)}async function P9($){let J=await($.fetchImpl??fetch)(`${$.apiOrigin}/v3/machines/enrollment-tickets`,{method:"POST",headers:{authorization:`Bearer ${$.token}`,accept:"application/json","content-type":"application/json"},body:JSON.stringify($.body),signal:AbortSignal.timeout(30000),redirect:"error"}),Z=await J.json().catch(()=>({}));if(!J.ok)throw I9(J.status,Z,J.headers.get("retry-after"));return k1(RZ,Z,"invalid_machine_ticket")}class N1{options;credentials;constructor($,J={}){this.options=J;this.credentials=$}trackEvent($,J={}){}async request($,J={},Z=!1){let Q=this.options.fetchImpl??fetch,X=await Q(`${this.credentials.apiOrigin}/v3${$}`,{method:J.method??"GET",headers:{authorization:`Bearer ${this.credentials.accessToken}`,accept:"application/json","user-agent":"reason-cli","x-reason-agent":"Reason CLI",...J.body===void 0?{}:{"content-type":"application/json"},...J.headers},body:J.body===void 0?void 0:JSON.stringify(J.body),signal:J.signal,redirect:"error"}),Y=await X.json().catch(()=>({}));if(X.status===401&&!Z&&J.retryUnauthorized!==!1&&this.credentials.credentialKind!=="api_key"){let G=await b1({fetchImpl:Q,path:this.options.credentialsPath,forceRefresh:!0,signal:J.signal});if(G)return this.credentials=G,this.request($,J,!0)}if(!X.ok)throw I9(X.status,Y,X.headers.get("retry-after"));return Y}createHeadlessDeviceEnrollmentTicket($){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/devices/enrollment-tickets`,{method:"POST",body:$,signal:AbortSignal.timeout(30000),retryUnauthorized:!1})}async enrollHeadlessDevice($){try{return await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/devices/enrollments`,{method:"POST",body:$,signal:AbortSignal.timeout(30000),retryUnauthorized:!1})}catch(J){if(J instanceof G0&&(J.status===404||J.status===405||J.status===403&&J.code==="endpoint_not_available"))return null;throw J}}addDeviceRoot($,J){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/devices/${encodeURIComponent($)}/roots`,{method:"POST",body:J,signal:AbortSignal.timeout(30000)})}removeDeviceRoot($,J){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/devices/${encodeURIComponent($)}/roots/${encodeURIComponent(J)}`,{method:"DELETE",signal:AbortSignal.timeout(30000)})}machinePath($,J=""){let Z=`/organizations/${encodeURIComponent(this.credentials.orgId)}/machines`;return $===void 0?Z:`${Z}/${encodeURIComponent($)}${J}`}async listMachines(){return k1(jZ,await this.request(this.machinePath()),"invalid_machine_list").machines}async createMachine($){let J=await this.request(this.machinePath(),{method:"POST",body:{name:$.name,...$.platform?{platform:$.platform}:{}}});return k1(zZ,J,"invalid_machine").machine}async deleteMachine($){let J=await this.request(this.machinePath($),{method:"DELETE"});return k1(OZ,J,"invalid_machine_deletion")}async createMachineToken($){let J=await this.request(this.machinePath($,"/tokens"),{method:"POST",body:{}});return k1(AZ,J,"invalid_machine_token")}async createMachineEnrollmentTicket($,J){let Z=await this.request(this.machinePath($,"/enrollment-tickets"),{method:"POST",body:J,signal:AbortSignal.timeout(30000),retryUnauthorized:!1});return k1(C9,Z,"invalid_machine_ticket")}self($){return this.request("/self",{signal:$})}claimExistingCliPairing($){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/onboarding/import/pairing/claim-existing`,{method:"POST",body:{pairing_code:$}})}connectAnthropicProvider($,J,Z={}){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/provider-credentials/anthropic`,{method:"POST",retryUnauthorized:Z.retryUnauthorized,signal:Z.signal,body:{access_token:$.access,refresh_token:$.refresh,expires_at:new Date($.expires).toISOString(),...J?{account_key:J}:{}}})}async listRepositories(){return((await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/repositories`)).items??[]).flatMap((J)=>{let Z=typeof J.full_name==="string"?J.full_name:typeof J.repo_full_name==="string"?J.repo_full_name:null;if(!Z)return[];return[{repo_id:typeof J.repo_id==="string"?J.repo_id:void 0,full_name:Z,provider:J.provider==="gitlab"?"gitlab":"github",default_branch:typeof J.default_branch==="string"?J.default_branch:null,private:typeof J.private==="boolean"?J.private:void 0}]})}async listProjects(){let $=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/projects`),J=FZ.safeParse($);if(!J.success)throw new G0(502,"invalid_project_list","Reason returned an unexpected project list.");return J.data.items}async listSkills(){try{let $=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/skills`);return k1(LZ,$,"invalid_skill_list").items}catch($){if($ instanceof G0&&($.status===403||$.status===404))return[];throw $}}async listDevices(){let $=[],J=null;for(let Z=0;Z<50;Z+=1){let Q=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/devices${J?`?after=${encodeURIComponent(J)}`:""}`),X=TZ.safeParse(Q);if(!X.success)throw new G0(502,"invalid_device_list","Reason returned an unexpected machine list.");if($.push(...X.data.devices),J=X.data.has_next_page?X.data.end_cursor??null:null,!J)break}return $}async listModels(){try{let J=((await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/agent-auth/models`)).models??[]).filter((Q)=>Q.hidden!==!0&&Q.available!==!1).map(({reasoning_efforts:Q,hidden:X,available:Y,...G})=>({...G,...Array.isArray(Q)?{reasoning_efforts:qZ.filter((V)=>Q.includes(V))}:{}})),Z=new Set(J.map((Q)=>Q.detail));return J.length>1&&Z.size===1?J.map(({detail:Q,...X})=>X):J}catch($){if($ instanceof G0&&($.status===403||$.status===404))return[];throw $}}async getAgentVersion($){try{let J=await this.request("/deployment",{signal:$,retryUnauthorized:!1});return U9(J.reason_version)?J.reason_version:null}catch{return null}}async getUsageQuota(){try{let $=HZ.safeParse(await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/usage/quota`));if(!$.success)return null;let J;try{J=UZ(await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/agent-auth/models`))}catch{}return{...$.data,own_inference:J}}catch($){if($ instanceof G0&&($.status===403||$.status===404))return null;throw $}}async listSessions($=50,J,Z={}){let Q=new URLSearchParams({first:String(Math.min(Math.max($,1),200)),status:Z.status??"active"});if(J)Q.set("project_id",J);if(Z.origin)Q.set("origin",Z.origin);return(await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions?${Q.toString()}`)).items??[]}getSession($){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent($)}`)}async prestartSession($){let J=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/prestart`,{method:"POST",body:{client_session_id:$}});return J?.status==="starting"||J?.status==="ready"}async createSession($){let J=$.mode==="ephemeral"||$.workspaceOwnership==="externally-managed";if($.attachments?.length)await this.requireSessionAttachments();if(J||$.runtimeProfile){let X=await this.request("/deployment");if(J&&(!Array.isArray(X.session_modes)||!X.session_modes.includes($.mode??"standard")||!Array.isArray(X.workspace_ownerships)||!X.workspace_ownerships.includes($.workspaceOwnership??"managed")))throw Error("Deployment does not support the requested Session policy; refusing to create a Session.");if($.runtimeProfile&&(!Array.isArray(X.experimental_runtime_profiles)||!X.experimental_runtime_profiles.includes($.runtimeProfile)))throw Error("Deployment does not support the requested runtime profile; refusing to create a Session.")}let Z=await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions`,{method:"POST",body:{prompt:$.prompt,...$.attachments?.length?{attachments:$.attachments}:{},...$.mode?{mode:$.mode}:{},...$.workspaceOwnership?{workspace_ownership:$.workspaceOwnership}:{},...$.target?{target:$.target}:{},...$.repo?{repo:$.repo}:{},...$.provider?{provider:$.provider}:{},...$.model?{model:$.model}:{},...$.reasoningEffort?{reasoning_effort:$.reasoningEffort}:{},...$.runtimeProfile?{experimental_runtime_profile:$.runtimeProfile}:{},...$.ref?{ref:$.ref}:{},...$.completionMode?{completion_mode:$.completionMode}:{},...$.env&&Object.keys($.env).length>0?{env:$.env}:{},...$.clientSessionId?{client_session_id:$.clientSessionId}:{},idempotency_key:`cli-${crypto.randomUUID()}`}}),Q=await this.getSession(Z.session_id);if(J){let X=Q.session_policy,Y=["memoryRead","memoryWrite","skills","inheritedInstructions","integrations","secretInjection"];if(!X||X.version!==1||X.mode!==($.mode??"standard")||X.workspaceOwnership!==($.workspaceOwnership??"managed")||!X.components||Y.some((G)=>X.components[G]!==!0))throw await this.cancelSession(Z.session_id),Error("Server did not attest the requested Session policy; cancellation requested.")}if($.runtimeProfile&&Q.experimental_runtime_profile!==$.runtimeProfile)throw await this.cancelSession(Z.session_id),Error("Server did not attest the requested runtime profile; cancellation requested.");return Q}async getEvents($,J=-1,Z={}){try{return await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent($)}/events?after_seq=${J}&limit=500${Z.waitMs?`&wait_ms=${Z.waitMs}`:""}`,Z.signal?{signal:Z.signal}:{})}catch(Q){if(!(Q instanceof G0)||Q.status!==403&&Q.status!==404)throw Q;return{session:await this.getSession($),items:[],next_seq:J}}}async getMessages($,J){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent($)}/messages?first=500${J===void 0?"":`&after_seq=${J}`}`)}async getAttachments($){try{return(await this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent($)}/attachments`)).items??[]}catch(J){if(J instanceof G0&&(J.status===403||J.status===404))return[];throw J}}async requireSessionAttachments(){if((await this.request("/deployment")).session_attachments!==!0)throw Error("This server does not support Session image attachments yet. Update the server and retry; the image was not sent.")}async sendMessage($,J,Z={}){if(Z.attachments?.length)await this.requireSessionAttachments();return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent($)}/messages`,{method:"POST",body:{message:J,...Z.attachments?.length?{attachments:Z.attachments}:{},...Z.model?{model:Z.model}:{},...Z.reasoningEffort?{reasoning_effort:Z.reasoningEffort}:{},...Z.target?{target:Z.target}:{}}})}createSharedLink($,J){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent($)}/shared-links`,{method:"POST",body:{url:J.url,...J.label?{label:J.label}:{},...J.expiresInSeconds!==void 0?{expires_in_seconds:J.expiresInSeconds}:{}}})}cancelSession($,J={}){return this.request(`/organizations/${encodeURIComponent(this.credentials.orgId)}/sessions/${encodeURIComponent($)}/cancel`,{method:"POST",body:J.mode==="hard"?{mode:"hard"}:{}})}}function y1($,J){let Z=b0($,"REASON_API_URL")?.trim();if(!Z)return j4(J);let Q=new URL(Z);if(Q.protocol!=="https:"&&!(Q.protocol==="http:"&&["127.0.0.1","localhost","::1"].includes(Q.hostname)))throw Error("REASON_API_URL must use HTTPS (HTTP is allowed only for loopback development).");return Q.origin}function IZ($){return b0($,"REASON_API_URL")?.trim()?y1($,"production"):void 0}function z4($){return b0($,"REASON_API_KEY")?.trim()||void 0}async function x9($,J){let Z=$.env??process.env,Q=z4(Z);if(!Q)return($.getCredentials??b1)({apiOrigin:IZ(Z),signal:J});let X=y1(Z,$.channel??P0({env:Z})),Y=await($.fetchImpl??fetch)(X+"/v3/self",{redirect:"error",headers:{authorization:"Bearer "+Q,accept:"application/json"},signal:J}),G=await Y.json().catch(()=>({})),V=i0(G)?G:{};if(!Y.ok){let N=typeof V.detail==="string"?V.detail:typeof V.message==="string"?V.message:"API key authentication failed ("+Y.status+")";throw new G0(Y.status,typeof V.error==="string"?V.error:"api_key_auth_failed",N)}if(typeof V.org_id!=="string"||!V.org_id)throw Error("The API key in the environment did not resolve to a Workspace.");let K=Array.isArray(V.scopes)?V.scopes.filter((N)=>typeof N==="string"):[];return{credentialKind:"api_key",apiOrigin:X,accessToken:Q,orgId:V.org_id,clientId:"api-key",refreshToken:"",expiresAt:"",scopes:K}}import{createHash as PZ}from"crypto";import{unlinkSync as xZ}from"fs";import{platform as EZ}from"os";import{join as SZ}from"path";var E9=B.discriminatedUnion("store",[B.strictObject({version:B.literal(1),store:B.literal("keychain")}),B.strictObject({version:B.literal(1),store:B.literal("file"),api_key:B.string().min(1).max(4096)})]),f1=($)=>SZ($,"api-key.json");function z1($){let J=PZ("sha256").update(`reason-connect-api-key
|
|
5
5
|
${$}`).digest("hex");return new e1(T2(),EZ(),J)}function O4($,J,Z=z1($)){try{Z.deleteBinding(),Z.createBinding(new TextEncoder().encode(J)),c(f1($),{version:1,store:"keychain"});return}catch(Q){if(!(Q instanceof Y0))throw Q}c(f1($),{version:1,store:"file",api_key:J})}function l0($,J=z1($)){if(!u(f1($)))return null;let Z=E9.parse(JSON.parse(s(f1($))));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 Y0))throw Q;throw Error("worker_api_key_unreadable")}}function S9($,J=z1($)){if(!u(f1($)))return;if(E9.parse(JSON.parse(s(f1($)))).store==="keychain")try{J.deleteBinding()}catch(Z){if(!(Z instanceof Y0))throw Z}xZ(f1($))}async function A4($,J){let Z;try{Z=await x9({env:{REASON_API_KEY:J,REASON_API_URL:$.apiOrigin},fetchImpl:k0($.proxy)})}catch(Q){if(Q instanceof G0&&(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 rZ,renameSync as tZ,rmSync as v1}from"fs";import{join as M0}from"path";import{createHash as wZ}from"crypto";import{realpathSync as bZ,statSync as kZ,unlinkSync as _2}from"fs";import{platform as yZ}from"os";import{join as y0}from"path";function d($){return{state:y0(g($),"device.json"),control:y0(g($),"control.json"),lock:y0(g($),"lifecycle.lock"),socket:y0(g($),"control.sock"),daemon:y0(g($),"daemon.json"),releaseCheck:y0(g($),"release-check.json"),updateDeferral:y0(g($),"update-deferral.json"),firstHeartbeat:y0(g($),"first-heartbeat.json")}}var fZ=B.object({version:B.literal(1),device_id:B.string().min(1).max(160),offer:B.unknown().optional(),enrollment_ms:B.number().int().nonnegative().max($$).optional()});function b9($,J,Z){e(g($),!0),c(d($).firstHeartbeat,{version:1,device_id:J,...Z.offer?{offer:Z.offer}:{},...Z.enrollmentMs!==void 0?{enrollment_ms:Z.enrollmentMs}:{}})}function C4($,J){let Z=d($).firstHeartbeat;try{if(!u(Z))return null;let Q=fZ.safeParse(JSON.parse(s(Z)));if(_2(Z),!Q.success||Q.data.device_id!==J)return null;let X=F2(Q.data.offer);return{...X?{offer:X}:{},...Q.data.enrollment_ms!==void 0?{enrollmentMs:Q.data.enrollment_ms}:{}}}catch{return null}}function T0($,J=!1){e(g($),J);let Z=["local-device.key","local-device.binding","device.json"].filter((Q)=>{let X=y0(g($),Q);if(!u(X))return!1;return s(X),!0});return $.lifetime==="persistent"&&Z.join()==="device.json"?I4($):new R4(g($))}function W2($,J){T0($,!0),vZ($);let Z=J??I4($),Q=new R4(g($));try{Z.deleteBinding(),Z.deleteKey(),Z.createFreshPublicKey()}catch(X){if(X instanceof Y0)return Q;throw X}return Q.deleteBinding(),Q.deleteKey(),Z}function I4($){return new e1(T2(),yZ(),hZ($))}function hZ($){let J=P4($);return wZ("sha256").update(`reason-worker
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{Lh as e}from"./vm-hands-entry-lite-a3n86qqm.js";var i=e((o,t)=>{t.exports={name:"playwright-core",version:"1.60.0",description:"A high-level API to automate web browsers",repository:{type:"git",url:"git+https://github.com/microsoft/playwright.git"},homepage:"https://playwright.dev",engines:{node:">=18"},author:{name:"Microsoft Corporation"},license:"Apache-2.0",exports:{".":{types:"./index.d.ts",import:"./index.mjs",require:"./index.js",default:"./index.js"},"./package.json":"./package.json","./lib/bootstrap":"./lib/bootstrap.js","./lib/coreBundle":"./lib/coreBundle.js","./lib/utilsBundle":"./lib/utilsBundle.js","./lib/tools/cli-client/program":"./lib/tools/cli-client/program.js"},bin:{"playwright-core":"cli.js"},types:"types/types.d.ts"}});
|
|
3
3
|
export{i as x};
|