@reason-machines/cli-linux-x64 0.2.568 → 0.2.570
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/reason +2 -2
- package/bin/vm-hands/agent-network-nswyx8m2.js +2 -0
- package/bin/vm-hands/{api-credentials-ntpwt7rg.js → api-credentials-kp2sjeds.js} +1 -1
- package/bin/vm-hands/api-h2pwjbr1.js +2 -0
- package/bin/vm-hands/{ask-relay-hfa5kzxn.js → ask-relay-eqv9sq9m.js} +2 -2
- package/bin/vm-hands/connect-cli-gc79h47t.js +2 -0
- package/bin/vm-hands/{credentials-nfx99zxr.js → credentials-gwh93z0q.js} +1 -1
- package/bin/vm-hands/{custom-endpoint-device-5047vdn3.js → custom-endpoint-device-fdemgypq.js} +1 -1
- package/bin/vm-hands/desktop-account-15zym6ze.js +2 -0
- package/bin/vm-hands/desktop-components-py12mt6g.js +2 -0
- package/bin/vm-hands/{hands-worker-source-8a4kh44t.js → hands-worker-source-vd87swg4.js} +1 -1
- package/bin/vm-hands/{install-receipt-rckwjqmt.js → install-receipt-7hvy0181.js} +1 -1
- package/bin/vm-hands/local-automation-bt51qn3g.js +2 -0
- package/bin/vm-hands/local-capabilities-q9jvmztz.js +2 -0
- package/bin/vm-hands/local-display-session-j807vr40.js +2 -0
- package/bin/vm-hands/local-display-video-3b5qegyk.js +2 -0
- package/bin/vm-hands/local-managed-process-48t1899b.js +2 -0
- package/bin/vm-hands/{local-pty-session-w0yhjdvz.js → local-pty-session-bk7pp5nb.js} +1 -1
- package/bin/vm-hands/{managed-runtime-e4cj6r2s.js → managed-runtime-v7fz5zzh.js} +1 -1
- package/bin/vm-hands/{network-auto-update-8f2745gk.js → network-auto-update-1pfqzgd6.js} +2 -2
- package/bin/vm-hands/{network-contract-ht0psj5j.js → network-contract-8fjtkgma.js} +1 -1
- package/bin/vm-hands/{network-sign-in-s00679q9.js → network-sign-in-xdx20n1p.js} +1 -1
- package/bin/vm-hands/{permissions-74rj58e1.js → permissions-19yptfxx.js} +1 -1
- package/bin/vm-hands/{reason-hands-protocol-9r62swp0.js → reason-hands-protocol-yga8dh1m.js} +1 -1
- package/bin/vm-hands/{serve-service-19s965ze.js → serve-service-1sp5n0cm.js} +1 -1
- package/bin/vm-hands/{status-099b2ec1.js → status-pbv2pezp.js} +6 -6
- package/bin/vm-hands/{version-avq09c5d.js → version-w7r1n5k3.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-ksfd234v.js → vm-hands-entry-lite-10fwwbwj.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-bbjsnjct.js → vm-hands-entry-lite-13pzgnj9.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-fp3gaa2c.js → vm-hands-entry-lite-43ja1g10.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-8s5n4wps.js → vm-hands-entry-lite-4x9p79j4.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-vvhfaxpd.js → vm-hands-entry-lite-6dkjbe2b.js} +3 -3
- package/bin/vm-hands/{vm-hands-entry-lite-ezkb7f6j.js → vm-hands-entry-lite-7pj0tvht.js} +8 -8
- package/bin/vm-hands/{vm-hands-entry-lite-mktndd2r.js → vm-hands-entry-lite-7x2dnf35.js} +14 -14
- package/bin/vm-hands/{vm-hands-entry-lite-jm9jpj77.js → vm-hands-entry-lite-7z05qb3m.js} +11 -11
- package/bin/vm-hands/{vm-hands-entry-lite-bcz4qpp6.js → vm-hands-entry-lite-92qqzeas.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-0xfme8gg.js → vm-hands-entry-lite-a4fn6ye1.js} +2 -2
- package/bin/vm-hands/vm-hands-entry-lite-a8pm6cqb.js +10 -0
- package/bin/vm-hands/{vm-hands-entry-lite-7jmt3q38.js → vm-hands-entry-lite-asyv9pk8.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-t2rhwchw.js → vm-hands-entry-lite-cg84jcgd.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-7aeqbfc8.js → vm-hands-entry-lite-ck130wm6.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-vha0pf8k.js → vm-hands-entry-lite-ea3cts1t.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-bt6skt4h.js → vm-hands-entry-lite-ef0ergar.js} +3 -3
- package/bin/vm-hands/{vm-hands-entry-lite-9meg54bs.js → vm-hands-entry-lite-epzkdacr.js} +4 -4
- package/bin/vm-hands/{vm-hands-entry-lite-3594pdj0.js → vm-hands-entry-lite-f6np7g11.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-dhn0fs5e.js → vm-hands-entry-lite-g4e21m1g.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-4kb5rq3d.js → vm-hands-entry-lite-hnsdwskm.js} +3 -3
- package/bin/vm-hands/{vm-hands-entry-lite-rpf4t8r4.js → vm-hands-entry-lite-m4zkvq9s.js} +15 -15
- package/bin/vm-hands/{vm-hands-entry-lite-kzygj0q8.js → vm-hands-entry-lite-mayj6bpv.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-mzw2vcah.js → vm-hands-entry-lite-mkha0rqp.js} +96 -96
- package/bin/vm-hands/{vm-hands-entry-lite-1cdtev4n.js → vm-hands-entry-lite-pnx4zgd6.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-bc9zq8gx.js → vm-hands-entry-lite-sk4qxvzq.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-1as6h9ed.js → vm-hands-entry-lite-ttemn34n.js} +4 -4
- package/bin/vm-hands/{vm-hands-entry-lite-y2vqwds4.js → vm-hands-entry-lite-vgwm0t9m.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-h5x725z8.js → vm-hands-entry-lite-w4vnk4tg.js} +6 -6
- package/bin/vm-hands/{vm-hands-entry-lite-8twdd0ff.js → vm-hands-entry-lite-yqzy5wp8.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-2qh3rat2.js → vm-hands-entry-lite-ysmjfpef.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-r131db1f.js → vm-hands-entry-lite-zhxpfb3n.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-n9277v11.js → vm-hands-entry-lite-zm0707rq.js} +1 -1
- package/bin/vm-hands/vm-hands-entry-lite.js +2 -2
- package/bin/vm-hands/{vm-hands-executor-xd8v5v0e.js → vm-hands-executor-e75we703.js} +1 -1
- package/bin/vm-hands/{vm-hands-op-runner-nr4ncs4p.js → vm-hands-op-runner-86zndw34.js} +1 -1
- package/bin/vm-hands/{vm-hands-runtime-qvy5s122.js → vm-hands-runtime-ad8q3cjr.js} +3 -3
- package/bin/vm-hands/{worker-sandbox-2trfs79b.js → worker-sandbox-6aepsk73.js} +1 -1
- package/package.json +1 -1
- package/bin/vm-hands/agent-network-dw7yrrwt.js +0 -2
- package/bin/vm-hands/api-xvjq0bka.js +0 -2
- package/bin/vm-hands/connect-cli-2ja7aj4w.js +0 -2
- package/bin/vm-hands/desktop-account-d1g1m6yb.js +0 -2
- package/bin/vm-hands/desktop-components-577haqrs.js +0 -2
- package/bin/vm-hands/local-automation-fxdb4ynz.js +0 -2
- package/bin/vm-hands/local-capabilities-8fgrfpj4.js +0 -2
- package/bin/vm-hands/local-display-session-8b2hx1k6.js +0 -2
- package/bin/vm-hands/local-display-video-511qjgmq.js +0 -2
- package/bin/vm-hands/local-managed-process-h0fypn67.js +0 -2
- package/bin/vm-hands/vm-hands-entry-lite-rd7bm9we.js +0 -10
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Xt,yc,
|
|
2
|
+
import{Xt,yc,ue,Sr,Er,A}from"./vm-hands-entry-lite-epzkdacr.js";import{de}from"./vm-hands-entry-lite-cg84jcgd.js";import{Rr}from"./vm-hands-entry-lite-hh0kba1y.js";import{Tr}from"./vm-hands-entry-lite-ysmjfpef.js";import{Fi}from"./vm-hands-entry-lite-92qqzeas.js";import{Ue,wr,br,Zo}from"./vm-hands-entry-lite-g0bpdyfz.js";import{Kt}from"./vm-hands-entry-lite-10fwwbwj.js";import{qr,va}from"./vm-hands-entry-lite-t3k90kdn.js";import{Te,jt}from"./vm-hands-entry-lite-7z05qb3m.js";import{pe,ze}from"./vm-hands-entry-lite-7pj0tvht.js";import{$r}from"./vm-hands-entry-lite-6dkjbe2b.js";import{s}from"./vm-hands-entry-lite-tzv8s0e7.js";import{B}from"./vm-hands-entry-lite-04nx5y4f.js";import{r}from"./vm-hands-entry-lite-qy9xg6em.js";import{spawn as S,spawnSync as De}from"child_process";import{createHash as Le,randomUUID as re}from"crypto";import{closeSync as $e,copyFileSync as J,existsSync as C,fstatSync as Be,mkdirSync as z,openSync as We,readdirSync as N,readFileSync as W,readlinkSync as qe,renameSync as ne,rmSync as Fe,statSync as He,writeFileSync as Ge}from"fs";import{connect as je}from"net";import{tmpdir as P,userInfo as ie}from"os";import{basename as V,delimiter as Xe,dirname as M,join as m}from"path";var q=`import { spawn, execFileSync } from "node:child_process";
|
|
3
3
|
import { createHash, randomUUID } from "node:crypto";
|
|
4
4
|
import { readFileSync, readlinkSync, lstatSync, realpathSync, statSync, mkdtempSync, mkdirSync, chmodSync, writeFileSync, readdirSync, rmSync, openSync, readSync, closeSync, renameSync } from "node:fs";
|
|
5
5
|
import { tmpdir } from "node:os";
|
|
@@ -950,5 +950,5 @@ if(process.env.REASON_CLOUD_GATEWAY_EXEC === "1") {
|
|
|
950
950
|
process.stdout.write(JSON.stringify(cloudAutomationFailure(error))+"\\n");process.exitCode=1;
|
|
951
951
|
}
|
|
952
952
|
}
|
|
953
|
-
`;import{execFile as be,spawn as Se}from"child_process";import{closeSync as xe,mkdirSync as ve,openSync as Ie}from"fs";import{dirname as R,join as Re}from"path";import{promisify as ke}from"util";var Oe=ke(be),F="x-apple.systempreferences:com.apple.preference.security",Ae={accessibility:`${F}?Privacy_Accessibility`,screen:`${F}?Privacy_ScreenCapture`},Ee=64,I=new Map;function k(e,o){let t=I.get(e);if(t?.has(o))return!1;if(!t){if(I.size>=Ee)I.delete(I.keys().next().value);t=new Set,I.set(e,t)}return t.add(o),!0}function Ce(){let e=s(),o=ze(de(e),process.env),t=Re(e,".local","share","reason","desktop-install.log");ve(R(t),{recursive:!0,mode:448});let n=Ie(t,"a",384);try{let i=Se(o,["desktop","install"],{detached:!0,stdio:["ignore",n,n],env:{...process.env,REASON_DESKTOP_BACKGROUND:"1"}});i.on("error",()=>{return}),i.unref()}finally{xe(n)}}var O={open:async(e,o)=>{await Oe("/usr/bin/open",e,{signal:o,timeout:1e4,maxBuffer:8192})},request:(e,o)=>Rr(e,o),tile:Fi,installDesktop:Ce},H=!1;async function G(e,o,t){try{await o.open(["-a","Google Chrome",e],t)}catch{t.throwIfAborted(),await o.open([e],t)}}async function X(e,o,t,n){if(await t.open([Ae[o]],n).catch(()=>{}),e[0]&&!n.aborted)t.tile(R(R(R(e[0]))),o)}async function Ne(e,o,t,n,i){for(let a of t){if(!k(e,`grant:${a}`))continue;i.throwIfAborted(),await n.request(o,a).catch(()=>null),await X(o,a,n,i)}}var Pe={name:"open_tab",description:"Open a web page in the user's own Chrome on this Mac. Reason cannot read, screenshot or click in that tab, and no tab_id is returned: browser control needs Reason's Chrome extension. An actual browser call opens its setup page.",inputSchema:{type:"object",properties:{url:{type:"string",description:"An http or https URL."}},required:["url"],additionalProperties:!1}};function j(e){return{code:0,stderr:"",stdout:Buffer.from(JSON.stringify({ok:!0,...e}))}}function Me(e){if(typeof e!=="string")return null;try{let o=new URL(e);return o.protocol==="https:"||o.protocol==="http:"?o.href:null}catch{return null}}async function K(e,o=O){let{call:t,runId:n,signal:i}=e;if(t.kind==="browser"){if(t.operation==="discover")return j({result:{tools:[Pe]}});if(t.operation!=="call")throw new r("automation_browser_setup_required","Browser control is not set up on this Mac yet. Request a browser operation or connect Chrome from Reason to set it up.")}if(e.desktopMissing&&!H){H=!0;try{o.installDesktop()}catch{}}if(t.kind==="computer"){if(e.identity.length>0&&k(n,"grant:probe")){let c=await o.request(e.identity).catch(()=>null),l=c?[...c.accessibility?[]:["accessibility"],...c.screen?[]:["screen"]]:[];for(let f of l)k(n,`grant:${f}`);for(let f of l)await X(e.identity,f,o,i)}throw new r("automation_computer_setup_required","Computer use is not set up on this Mac yet; Reason asked macOS for any missing permission.")}if(k(n,"page:chrome-extension"))await G(yc,o,i).catch(()=>{});let a=t.arguments,u=t.operation==="call"&&t.tool==="open_tab"&&a&&typeof a==="object"&&!Array.isArray(a)?Me(a.url):null;if(!u)throw new r("automation_browser_setup_required","Browser control is not set up on this Mac yet; Reason opened its Chrome Web Store page. open_tab still opens pages.");return await G(u,o,i),j({result:{content:[{type:"text",text:JSON.stringify({opened:u,browser:"the user's Chrome",controllable:!1,note:"Opened for the user to see. Reason cannot read or act in this tab until Reason's Chrome extension is added (its Chrome Web Store page is open)."})}]}})}async function Y(e,o=O){if(e.call.kind!=="computer"||e.call.operation!=="permission_status"||e.output.code!==0||e.identity.length===0)return e.output;let t;try{t=JSON.parse(e.output.stdout.toString("utf8"))}catch{return e.output}if(!t||typeof t!=="object"||Array.isArray(t))return e.output;let n=t.permissions;if(!n||typeof n!=="object")return e.output;let i=n,a=[...i.accessibility==="missing"?["accessibility"]:[],...i.screenRecording==="missing"?["screen"]:[]];if(a.length===0)return e.output;return await Ne(e.runId,e.identity,a,o,e.signal),{...e.output,stdout:Buffer.from(JSON.stringify({...t,requested:a}))}}var L=172032,Ke=18874368,Ye=8192,Je=65536,Ve=55000,Ze=60000,Qe=4,et=40000,tt=/^[0-9a-f-]{36}$/,Z=q,ot=re();function E(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function T(){throw new r("invalid_automation_request","Reason automation request is malformed.")}function se(e){let o=Object.keys(e).sort().join(",");if(o==="call"||o==="browser,call"){let t=e.call,n=o==="browser,call";if(!E(t)||t.version!==1||t.kind!=="computer"&&t.kind!=="browser"||n&&(e.browser!==$r||t.kind!=="browser")||JSON.stringify(t).length>Je)T();return{call:t,userChrome:n}}if(o==="offset,output_id"){if(typeof e.output_id!=="string"||!tt.test(e.output_id)||!Number.isSafeInteger(e.offset)||e.offset<0)T();return{output_id:e.output_id,offset:e.offset}}return T()}function hr(e=process.platform,o=A){if(e==="darwin")return!0;return(e==="linux"||e==="win32")&&o()?.features.computer===!0}var rt="__computer-use";function No(e=A){return e()?.userChrome??{code:"user_chrome_browser_use_missing"}}function ae(e,o,t,n){return new Promise((i)=>{let a=S(e,o,{env:t,stdio:"ignore",windowsHide:!0}),u=setTimeout(()=>{a.kill("SIGKILL"),i(-1)},n);a.once("error",()=>{clearTimeout(u),i(-1)}),a.once("exit",(c)=>{clearTimeout(u),i(c??-1)})})}function nt(e,o,t,n){return new Promise((i)=>{let a=S(e,o,{env:t,stdio:["ignore","pipe","ignore"],windowsHide:!0}),u="";a.stdout.setEncoding("utf8").on("data",(l)=>{u+=l});let c=setTimeout(()=>{a.kill("SIGKILL"),i(null)},n);a.once("error",()=>{clearTimeout(c),i(null)}),a.once("close",(l)=>{clearTimeout(c),i(l===0?u:null)})})}function it(e){return x(e)?m(P(),"open-browser-use"):"/tmp/open-browser-use"}function x(e){return e.platform==="win32-x64"||e.platform==="win32-arm64"}var st=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,at=33554432;function ct(e,o){let t;try{t=e===null?null:JSON.parse(e)}catch{return null}let n=E(t)&&E(t.result)?t.result.metadata:null;if(!E(n)||n.extensionId!==o)return null;return typeof n.extensionInstanceId==="string"&&st.test(n.extensionInstanceId)?n.extensionInstanceId:null}async function ce(e,o,t){let n=t.storages.map((c)=>{try{return N(c).filter((l)=>l.endsWith(".log")||l.endsWith(".ldb")).map((l)=>m(c,l))}catch{return[]}}),i;try{i=n.some((c)=>c.length>0)?N(t.socketDir).filter((c)=>c.endsWith(".sock")):[]}catch{return[]}let a=[];for(let c of i){let l=m(t.socketDir,c),f=ct(await nt(e,["info","--socket",l,"--timeout","2s"],o,5000),t.extensionId);if(f)a.push({instance:f,socket:l})}let u=[];for(let[c,l]of(a.length>0?n:[]).entries())for(let f of l)try{if(He(f).size>at)continue;let p=W(f),d=a.find((g)=>p.includes(g.instance));if(d){u.push({storage:t.storages[c],...d});break}}catch{}return u}async function lt(e,o,t){return(await ce(e,o,t))[0]?.instance??null}function pe(e,o,t){return lt(e.nativeHost,o,{socketDir:it(e),extensionId:le,storages:[m(t,"browser-profile","Default","Local Extension Settings",le)]})}var Q=/^(Default|Profile ([0-9]+))$/;async function ut(e,o,t=s(),n=Sr){let i=m(t,"Library","Application Support","Google","Chrome"),a=[];try{a=N(i)}catch(p){if(p.code==="EPERM")throw new r("browser_use_chrome_access_denied","macOS blocked Reason from reading Chrome's profiles. Allow Full Disk Access for Reason on this Mac and try again.")}let u=(p)=>Number(Q.exec(p)?.[2]??-1),c=a.filter((p)=>Q.test(p)&&C(m(i,p,"Extensions",Xt))).sort((p,d)=>u(p)-u(d)),l=(p)=>m(i,p,"Local Extension Settings",Xt);return(await ce(e,o,{socketDir:n,extensionId:Xt,storages:c.map(l)})).map(({storage:p,instance:d,socket:g})=>({profile:c.find((h)=>l(h)===p),instance:d,socket:g}))}async function dt(e,o,t=s(),n=Sr){let i=(await ut(e,o,t,n))[0]?.instance;if(!i)throw new r("automation_user_chrome_not_connected","No Chrome profile on this Mac is connected to Reason. Open Chrome with the Reason extension, then try again.");return i}function ee(e){return new Promise((o)=>{let t=je({path:e}),n=(i)=>{t.destroy(),o(i)};t.setTimeout(1000,()=>n(!1)),t.once("error",()=>n(!1)),t.once("connect",()=>n(!0))})}async function me(e,o){let t=Date.now()+o;while(Date.now()<t){if(await e())return!0;await new Promise((n)=>setTimeout(n,200))}return!1}var D=new Map;function U(e,o){let t=D.get(e);if(!t)t=o().finally(()=>D.delete(e)),D.set(e,t);return t}async function pt(e,o){if(await ee(e))return;if(Fe(e,{force:!0}),await ae("dbus-daemon",["--session",`--address=unix:path=${e}`,"--fork"],o,1e4)!==0||!await me(()=>ee(e),5000))throw new r("automation_unavailable","Reason could not start the desktop session bus.");br("dbus-daemon",`--address=unix:path=${e}`)}async function te(e,o,t){let n=e.platform==="darwin-arm64"||x(e)?async()=>await pe(e,o,t)!==null:async()=>await ae(e.nativeHost,["info"],o,5000)===0;if(await n())return;let i=["--profile-directory=Default",`--load-extension=${e.extensionDir}`,"--no-first-run","--no-default-browser-check","--window-size=1280,800","about:blank"],a,u=null,c=0;if(e.platform==="darwin-arm64"){let d=m(t,"browser-profile");Te(d);let g=m(d,"NativeMessagingHosts");z(g,{recursive:!0,mode:448});let h=Er(e.platform).nativeHostManifests[0];J(h,m(g,V(h)));let _=e.browser.slice(0,e.browser.indexOf(".app/")+4),y=i.filter((v)=>v!=="about:blank").concat("--no-startup-window","--use-mock-keychain");a=S("/usr/bin/open",["-g","-n","-a",_,"--args",`--user-data-dir=${d}`,...y],{env:o,stdio:"ignore"})}else if(x(e)){let d=m(t,"browser-profile");Te(d),De(B("icacls"),[M(e.browser),"/grant","*S-1-15-2-1:(OI)(CI)(RX)","*S-1-15-2-2:(OI)(CI)(RX)"],{stdio:"ignore",windowsHide:!0,timeout:60000});let g=i.filter((h)=>h!=="about:blank").concat("--no-startup-window","--keep-alive-for-test");a=S(e.browser,[`--user-data-dir=${d}`,...g],{detached:!0,stdio:"ignore",env:o})}else{let d=m(o.HOME,".config","google-chrome"),g=m(d,"NativeMessagingHosts");z(g,{recursive:!0,mode:448});let h=Er(e.platform).nativeHostManifests[0];J(h,m(g,V(h)));let _=process.geteuid?.()===0?["--no-sandbox"]:[];u=m(t,"browser.log");let y=We(u,"a",384);c=Be(y).size,a=S(e.browser,[`--user-data-dir=${d}`,...i,..._,"--force-renderer-accessibility"],{detached:!0,stdio:["ignore",y,y],env:{...o,ACCESSIBILITY_ENABLED:"1"}}),$e(y),Ue(a.pid)}let l=!1,f=!1;a.once("error",()=>{l=!0}),a.once("exit",(d)=>{l||=d!==0,f=d===0}),a.unref();let p=!1;if(await me(async()=>l||(p=await n()),et),!p){if(u&&W(u).subarray(c).toString("utf8").includes("No usable sandbox"))throw new r("automation_browser_sandbox_unavailable","Chromium found no usable sandbox on this machine. Run the worker as a non-root user with unprivileged user namespaces enabled, or in a container with seccomp unconfined.");if(f)wr("browser");throw new r("automation_browser_unavailable","Reason could not connect the desktop browser.")}}async function Lo(e){await ge(e,!0)}function $o(e){return fe(e,he(e))}function fe(e,o){return e.platform==="darwin-arm64"||x(e)?m(o,"browser-profile"):m(o,"home",".config","google-chrome")}function he(e){let o=m(e.root,"automation");if(!C(o)||!mt(e.automation))return e.automation;if(!ft(fe(e,o)))try{ne(o,e.automation)}catch{}return C(o)?o:e.automation}function mt(e){try{return N(e).length===0}catch(o){return o.code==="ENOENT"}}function ft(e){let o;try{o=qe(m(e,"SingletonLock"))}catch{return!1}let t=Number(o.slice(o.lastIndexOf("-")+1));if(!Number.isSafeInteger(t)||t<=0)return!0;try{return process.kill(t,0),!0}catch(n){return n.code==="EPERM"}}async function ge(e,o){qr({root:e.root,automation:e.automation,extensionDir:e.extensionDir});let t=he(e);Te(t);let n=ie().username,i={USER:n,LOGNAME:n,REASON_AUTOMATION_OCU:e.ocu,REASON_AUTOMATION_OBU:e.nativeHost};if(e.platform==="darwin-arm64"||x(e)){let p=x(e)?{...i,...ht(),HOME:s()}:{...i,HOME:s(),PATH:`${M(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OCU:process.execPath,REASON_AUTOMATION_OCU_SUBCOMMAND:rt};if(!o)return p;await U("browser",()=>te(e,p,t));let d=await pe(e,p,t);if(!d)throw new r("automation_browser_unavailable","Reason could not connect the desktop browser.");return{...p,REASON_AUTOMATION_OBU_INSTANCE:d,REASON_AUTOMATION_BACKGROUND_TABS:"1"}}let a=await jt(),u=m(t,"home"),c=m(t,"runtime");Te(u),Te(c);let l=m(t,"bus"),f={...i,HOME:u,PATH:`${M(e.node)}:/usr/bin:/bin`,DISPLAY:a.display,XAUTHORITY:a.xauthority,XDG_RUNTIME_DIR:c,DBUS_SESSION_BUS_ADDRESS:`unix:path=${l}`,...a.sound?{PULSE_SERVER:Kt(a.sound)}:{}};if(await U("bus",()=>pt(l,f)),o)await U("browser",()=>te(e,f,t));return f}function ht(){let e=process.env.SystemRoot??"C:\\Windows",o=Object.fromEntries(["SystemDrive","USERPROFILE","LOCALAPPDATA","APPDATA","ProgramData","ProgramFiles","PATHEXT","ComSpec","USERNAME","USERDOMAIN","COMPUTERNAME","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE","PSModuleAnalysisCachePath"].flatMap((n)=>process.env[n]?[[n,process.env[n]]]:[])),t=m(e,"System32");return{...o,SystemRoot:e,windir:e,TEMP:P(),TMP:P(),PATH:[t,m(t,"WindowsPowerShell","v1.0"),e].join(Xe)}}async function gt(e,o,t){let n=ie().username,i={USER:n,LOGNAME:n,HOME:s(),PATH:`${M(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OBU:o,REASON_AUTOMATION_BACKGROUND_TABS:"1"},a=await dt(o,i);return t.throwIfAborted(),{...i,REASON_AUTOMATION_OBU_INSTANCE:a}}function _t(e){if(process.platform!=="win32")return["--input-type=module","--eval",e];let o=m(P(),`reason-automation-${Le("sha256").update(e).digest("hex").slice(0,16)}.mjs`);if(!C(o)||W(o,"utf8")!==e){let t=`${o}.${process.pid}.tmp`;Ge(t,e,{mode:384}),ne(t,o)}return[o]}function _e(e,o,t,n){if(typeof Z!=="string")return Promise.reject(new r("automation_unavailable","This Reason build has no automation runtime."));let i=Z;return new Promise((a,u)=>{let c=S(e,_t(i),{env:{...o,REASON_CLOUD_GATEWAY_EXEC:"1",REASON_AUTOMATION_INLINE_RESULT:"1"},stdio:["pipe","pipe","pipe"],detached:process.platform!=="win32",windowsHide:!0}),l=[],f=0,p="",d=null,g=!1,h=(w)=>{if(d??=w,process.platform==="win32"&&c.pid){S(m(process.env.SystemRoot??"C:\\Windows","System32","taskkill.exe"),["/pid",String(c.pid),"/t","/f"],{stdio:"ignore",windowsHide:!0}).once("error",()=>c.kill("SIGKILL"));return}try{process.kill(-c.pid,"SIGKILL")}catch{c.kill("SIGKILL")}},_=(w)=>{if(g)return;g=!0,clearTimeout(y),n.removeEventListener("abort",v),w()},y=setTimeout(()=>h(new r("automation_timed_out","Reason automation did not finish in time.")),Ve),v=()=>h(new r("cancelled","Reason cancelled the automation call."));if(n.addEventListener("abort",v,{once:!0}),c.stdout.on("data",(w)=>{if(f+=w.byteLength,f>Ke)h(new r("automation_output_too_large","Reason automation output is too large."));else l.push(w)}),c.stderr.setEncoding("utf8").on("data",(w)=>{p=(p+w).slice(-Ye)}),c.stdin.on("error",()=>{}),c.once("error",()=>_(()=>u(d??new r("automation_unavailable","Reason could not start the automation runtime.")))),c.once("close",(w)=>_(()=>{if(d)u(d);else a({code:w??1,stdout:Buffer.concat(l),stderr:p})})),n.aborted)v();c.stdin.end(t)})}var b=new Map;function wt(e,o,t){for(let[i,a]of b)if(a.expiresAt<=t)b.delete(i);while(b.size>=Qe)b.delete(b.keys().next().value);let n=re();return b.set(n,{runId:e,bytes:o,expiresAt:t+Ze}),n}async function we(e,o,t,n={}){let i=await(n.environment??ge)(e,o.kind==="browser");return t.throwIfAborted(),await(n.runtime??_e)(e.node,i,JSON.stringify(o),t)}async function Cl(e,o){let t=se({call:e});if(!("call"in t))T();let n=A();if(!n?.features.computer||t.call.kind==="browser"&&!n.features.browser)throw new r("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");return await we(n,t.call,o)}function oe(e,o,t){let n=e.stdout.byteLength>L?wt(o,e.stdout,t):void 0;return{code:e.code,stderr:e.stderr,instance_id:ot,output_bytes:e.stdout.byteLength,chunk:e.stdout.subarray(0,L).toString("base64"),...n?{output_id:n}:{}}}async function Mo(e,o={}){let t=se(e.payload),n=(o.now??Date.now)();if("output_id"in t){let _=b.get(t.output_id);if(!_||_.runId!==e.runId||_.expiresAt<=n||t.offset>_.bytes.byteLength)throw new r("automation_output_unavailable","Reason automation output expired.");return{chunk:_.bytes.subarray(t.offset,t.offset+L).toString("base64")}}let i=(o.components??A)(),a=(o.platform??process.platform)==="darwin",u=a?(o.macIdentity??Tr)():[],c=o.macSetup??O,l=!i?.features.computer||t.call.kind==="browser"&&!t.userChrome&&!i.features.browser;if(a&&(l||u.length===0||t.call.kind==="browser"&&t.userChrome&&!e.userChrome))return oe(await K({runId:e.runId,call:t.call,identity:u,desktopMissing:l,signal:e.signal},c),e.runId,n);if(!i?.features.computer)throw new r("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");let f=t.userChrome?e.userChrome:void 0;if(t.userChrome&&!f)throw new r("automation_user_chrome_unavailable","Your own Chrome is not enabled on this computer: run `reason desktop install` on this Mac (and `reason connect --user-chrome on` if you turned it off).");if(t.call.kind==="browser"&&!f&&!i.features.browser)throw new r("automation_browser_not_installed",!i.platform.startsWith("linux")?"Browser use is unavailable on this machine: re-run `reason desktop install`.":"Browser use is unavailable on this machine: install a non-snap Chromium at /usr/bin/chromium, then re-run `reason desktop install`.");e.signal.throwIfAborted();let p=t.call.kind==="browser"&&t.call.operation!=="record_start"&&t.call.operation!=="record_stop",d=await va(e.runId,e.signal,o.now,p?"call":"run"),g="account"in o?o.account??null:ue(),h;try{if(f){let _=await(o.userChromeEnvironment??gt)(i,f,e.signal);e.signal.throwIfAborted(),h=await(o.runtime??_e)(i.node,_,JSON.stringify(t.call),e.signal)}else if(g)h=await(o.delegate??Zo)(g,t.call,e.signal);else h=await we(i,t.call,e.signal,o)}finally{d()}if(a)h=await Y({runId:e.runId,call:t.call,identity:u,output:h,signal:e.signal},c);return oe(h,e.runId,n)}
|
|
953
|
+
`;import{execFile as be,spawn as Se}from"child_process";import{closeSync as xe,mkdirSync as ve,openSync as Ie}from"fs";import{dirname as R,join as Re}from"path";import{promisify as ke}from"util";var Oe=ke(be),F="x-apple.systempreferences:com.apple.preference.security",Ae={accessibility:`${F}?Privacy_Accessibility`,screen:`${F}?Privacy_ScreenCapture`},Ee=64,I=new Map;function k(e,o){let t=I.get(e);if(t?.has(o))return!1;if(!t){if(I.size>=Ee)I.delete(I.keys().next().value);t=new Set,I.set(e,t)}return t.add(o),!0}function Ce(){let e=s(),o=ze(pe(e),process.env),t=Re(e,".local","share","reason","desktop-install.log");ve(R(t),{recursive:!0,mode:448});let n=Ie(t,"a",384);try{let i=Se(o,["desktop","install"],{detached:!0,stdio:["ignore",n,n],env:{...process.env,REASON_DESKTOP_BACKGROUND:"1"}});i.on("error",()=>{return}),i.unref()}finally{xe(n)}}var O={open:async(e,o)=>{await Oe("/usr/bin/open",e,{signal:o,timeout:1e4,maxBuffer:8192})},request:(e,o)=>Rr(e,o),tile:Fi,installDesktop:Ce},H=!1;async function G(e,o,t){try{await o.open(["-a","Google Chrome",e],t)}catch{t.throwIfAborted(),await o.open([e],t)}}async function X(e,o,t,n){if(await t.open([Ae[o]],n).catch(()=>{}),e[0]&&!n.aborted)t.tile(R(R(R(e[0]))),o)}async function Ne(e,o,t,n,i){for(let a of t){if(!k(e,`grant:${a}`))continue;i.throwIfAborted(),await n.request(o,a).catch(()=>null),await X(o,a,n,i)}}var Pe={name:"open_tab",description:"Open a web page in the user's own Chrome on this Mac. Reason cannot read, screenshot or click in that tab, and no tab_id is returned: browser control needs Reason's Chrome extension. An actual browser call opens its setup page.",inputSchema:{type:"object",properties:{url:{type:"string",description:"An http or https URL."}},required:["url"],additionalProperties:!1}};function j(e){return{code:0,stderr:"",stdout:Buffer.from(JSON.stringify({ok:!0,...e}))}}function Me(e){if(typeof e!=="string")return null;try{let o=new URL(e);return o.protocol==="https:"||o.protocol==="http:"?o.href:null}catch{return null}}async function K(e,o=O){let{call:t,runId:n,signal:i}=e;if(t.kind==="browser"){if(t.operation==="discover")return j({result:{tools:[Pe]}});if(t.operation!=="call")throw new r("automation_browser_setup_required","Browser control is not set up on this Mac yet. Request a browser operation or connect Chrome from Reason to set it up.")}if(e.desktopMissing&&!H){H=!0;try{o.installDesktop()}catch{}}if(t.kind==="computer"){if(e.identity.length>0&&k(n,"grant:probe")){let c=await o.request(e.identity).catch(()=>null),l=c?[...c.accessibility?[]:["accessibility"],...c.screen?[]:["screen"]]:[];for(let f of l)k(n,`grant:${f}`);for(let f of l)await X(e.identity,f,o,i)}throw new r("automation_computer_setup_required","Computer use is not set up on this Mac yet; Reason asked macOS for any missing permission.")}if(k(n,"page:chrome-extension"))await G(yc,o,i).catch(()=>{});let a=t.arguments,u=t.operation==="call"&&t.tool==="open_tab"&&a&&typeof a==="object"&&!Array.isArray(a)?Me(a.url):null;if(!u)throw new r("automation_browser_setup_required","Browser control is not set up on this Mac yet; Reason opened its Chrome Web Store page. open_tab still opens pages.");return await G(u,o,i),j({result:{content:[{type:"text",text:JSON.stringify({opened:u,browser:"the user's Chrome",controllable:!1,note:"Opened for the user to see. Reason cannot read or act in this tab until Reason's Chrome extension is added (its Chrome Web Store page is open)."})}]}})}async function Y(e,o=O){if(e.call.kind!=="computer"||e.call.operation!=="permission_status"||e.output.code!==0||e.identity.length===0)return e.output;let t;try{t=JSON.parse(e.output.stdout.toString("utf8"))}catch{return e.output}if(!t||typeof t!=="object"||Array.isArray(t))return e.output;let n=t.permissions;if(!n||typeof n!=="object")return e.output;let i=n,a=[...i.accessibility==="missing"?["accessibility"]:[],...i.screenRecording==="missing"?["screen"]:[]];if(a.length===0)return e.output;return await Ne(e.runId,e.identity,a,o,e.signal),{...e.output,stdout:Buffer.from(JSON.stringify({...t,requested:a}))}}var L=172032,Ke=18874368,Ye=8192,Je=65536,Ve=55000,Ze=60000,Qe=4,et=40000,tt=/^[0-9a-f-]{36}$/,Z=q,ot=re();function E(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function T(){throw new r("invalid_automation_request","Reason automation request is malformed.")}function se(e){let o=Object.keys(e).sort().join(",");if(o==="call"||o==="browser,call"){let t=e.call,n=o==="browser,call";if(!E(t)||t.version!==1||t.kind!=="computer"&&t.kind!=="browser"||n&&(e.browser!==$r||t.kind!=="browser")||JSON.stringify(t).length>Je)T();return{call:t,userChrome:n}}if(o==="offset,output_id"){if(typeof e.output_id!=="string"||!tt.test(e.output_id)||!Number.isSafeInteger(e.offset)||e.offset<0)T();return{output_id:e.output_id,offset:e.offset}}return T()}function hr(e=process.platform,o=A){if(e==="darwin")return!0;return(e==="linux"||e==="win32")&&o()?.features.computer===!0}var rt="__computer-use";function No(e=A){return e()?.userChrome??{code:"user_chrome_browser_use_missing"}}function ae(e,o,t,n){return new Promise((i)=>{let a=S(e,o,{env:t,stdio:"ignore",windowsHide:!0}),u=setTimeout(()=>{a.kill("SIGKILL"),i(-1)},n);a.once("error",()=>{clearTimeout(u),i(-1)}),a.once("exit",(c)=>{clearTimeout(u),i(c??-1)})})}function nt(e,o,t,n){return new Promise((i)=>{let a=S(e,o,{env:t,stdio:["ignore","pipe","ignore"],windowsHide:!0}),u="";a.stdout.setEncoding("utf8").on("data",(l)=>{u+=l});let c=setTimeout(()=>{a.kill("SIGKILL"),i(null)},n);a.once("error",()=>{clearTimeout(c),i(null)}),a.once("close",(l)=>{clearTimeout(c),i(l===0?u:null)})})}function it(e){return x(e)?m(P(),"open-browser-use"):"/tmp/open-browser-use"}function x(e){return e.platform==="win32-x64"||e.platform==="win32-arm64"}var st=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,at=33554432;function ct(e,o){let t;try{t=e===null?null:JSON.parse(e)}catch{return null}let n=E(t)&&E(t.result)?t.result.metadata:null;if(!E(n)||n.extensionId!==o)return null;return typeof n.extensionInstanceId==="string"&&st.test(n.extensionInstanceId)?n.extensionInstanceId:null}async function ce(e,o,t){let n=t.storages.map((c)=>{try{return N(c).filter((l)=>l.endsWith(".log")||l.endsWith(".ldb")).map((l)=>m(c,l))}catch{return[]}}),i;try{i=n.some((c)=>c.length>0)?N(t.socketDir).filter((c)=>c.endsWith(".sock")):[]}catch{return[]}let a=[];for(let c of i){let l=m(t.socketDir,c),f=ct(await nt(e,["info","--socket",l,"--timeout","2s"],o,5000),t.extensionId);if(f)a.push({instance:f,socket:l})}let u=[];for(let[c,l]of(a.length>0?n:[]).entries())for(let f of l)try{if(He(f).size>at)continue;let p=W(f),d=a.find((g)=>p.includes(g.instance));if(d){u.push({storage:t.storages[c],...d});break}}catch{}return u}async function lt(e,o,t){return(await ce(e,o,t))[0]?.instance??null}function le(e,o,t){return lt(e.nativeHost,o,{socketDir:it(e),extensionId:ue,storages:[m(t,"browser-profile","Default","Local Extension Settings",ue)]})}var Q=/^(Default|Profile ([0-9]+))$/;async function ut(e,o,t=s(),n=Sr){let i=m(t,"Library","Application Support","Google","Chrome"),a=[];try{a=N(i)}catch(p){if(p.code==="EPERM")throw new r("browser_use_chrome_access_denied","macOS blocked Reason from reading Chrome's profiles. Allow Full Disk Access for Reason on this Mac and try again.")}let u=(p)=>Number(Q.exec(p)?.[2]??-1),c=a.filter((p)=>Q.test(p)&&C(m(i,p,"Extensions",Xt))).sort((p,d)=>u(p)-u(d)),l=(p)=>m(i,p,"Local Extension Settings",Xt);return(await ce(e,o,{socketDir:n,extensionId:Xt,storages:c.map(l)})).map(({storage:p,instance:d,socket:g})=>({profile:c.find((h)=>l(h)===p),instance:d,socket:g}))}async function dt(e,o,t=s(),n=Sr){let i=(await ut(e,o,t,n))[0]?.instance;if(!i)throw new r("automation_user_chrome_not_connected","No Chrome profile on this Mac is connected to Reason. Open Chrome with the Reason extension, then try again.");return i}function ee(e){return new Promise((o)=>{let t=je({path:e}),n=(i)=>{t.destroy(),o(i)};t.setTimeout(1000,()=>n(!1)),t.once("error",()=>n(!1)),t.once("connect",()=>n(!0))})}async function me(e,o){let t=Date.now()+o;while(Date.now()<t){if(await e())return!0;await new Promise((n)=>setTimeout(n,200))}return!1}var D=new Map;function U(e,o){let t=D.get(e);if(!t)t=o().finally(()=>D.delete(e)),D.set(e,t);return t}async function pt(e,o){if(await ee(e))return;if(Fe(e,{force:!0}),await ae("dbus-daemon",["--session",`--address=unix:path=${e}`,"--fork"],o,1e4)!==0||!await me(()=>ee(e),5000))throw new r("automation_unavailable","Reason could not start the desktop session bus.");br("dbus-daemon",`--address=unix:path=${e}`)}async function te(e,o,t){let n=e.platform==="darwin-arm64"||x(e)?async()=>await le(e,o,t)!==null:async()=>await ae(e.nativeHost,["info"],o,5000)===0;if(await n())return;let i=["--profile-directory=Default",`--load-extension=${e.extensionDir}`,"--no-first-run","--no-default-browser-check","--window-size=1280,800","about:blank"],a,u=null,c=0;if(e.platform==="darwin-arm64"){let d=m(t,"browser-profile");Te(d);let g=m(d,"NativeMessagingHosts");z(g,{recursive:!0,mode:448});let h=Er(e.platform).nativeHostManifests[0];J(h,m(g,V(h)));let _=e.browser.slice(0,e.browser.indexOf(".app/")+4),y=i.filter((v)=>v!=="about:blank").concat("--no-startup-window","--use-mock-keychain");a=S("/usr/bin/open",["-g","-n","-a",_,"--args",`--user-data-dir=${d}`,...y],{env:o,stdio:"ignore"})}else if(x(e)){let d=m(t,"browser-profile");Te(d),De(B("icacls"),[M(e.browser),"/grant","*S-1-15-2-1:(OI)(CI)(RX)","*S-1-15-2-2:(OI)(CI)(RX)"],{stdio:"ignore",windowsHide:!0,timeout:60000});let g=i.filter((h)=>h!=="about:blank").concat("--no-startup-window","--keep-alive-for-test");a=S(e.browser,[`--user-data-dir=${d}`,...g],{detached:!0,stdio:"ignore",env:o})}else{let d=m(o.HOME,".config","google-chrome"),g=m(d,"NativeMessagingHosts");z(g,{recursive:!0,mode:448});let h=Er(e.platform).nativeHostManifests[0];J(h,m(g,V(h)));let _=process.geteuid?.()===0?["--no-sandbox"]:[];u=m(t,"browser.log");let y=We(u,"a",384);c=Be(y).size,a=S(e.browser,[`--user-data-dir=${d}`,...i,..._,"--force-renderer-accessibility"],{detached:!0,stdio:["ignore",y,y],env:{...o,ACCESSIBILITY_ENABLED:"1"}}),$e(y),Ue(a.pid)}let l=!1,f=!1;a.once("error",()=>{l=!0}),a.once("exit",(d)=>{l||=d!==0,f=d===0}),a.unref();let p=!1;if(await me(async()=>l||(p=await n()),et),!p){if(u&&W(u).subarray(c).toString("utf8").includes("No usable sandbox"))throw new r("automation_browser_sandbox_unavailable","Chromium found no usable sandbox on this machine. Run the worker as a non-root user with unprivileged user namespaces enabled, or in a container with seccomp unconfined.");if(f)wr("browser");throw new r("automation_browser_unavailable","Reason could not connect the desktop browser.")}}async function Lo(e){await ge(e,!0)}function $o(e){return fe(e,he(e))}function fe(e,o){return e.platform==="darwin-arm64"||x(e)?m(o,"browser-profile"):m(o,"home",".config","google-chrome")}function he(e){let o=m(e.root,"automation");if(!C(o)||!mt(e.automation))return e.automation;if(!ft(fe(e,o)))try{ne(o,e.automation)}catch{}return C(o)?o:e.automation}function mt(e){try{return N(e).length===0}catch(o){return o.code==="ENOENT"}}function ft(e){let o;try{o=qe(m(e,"SingletonLock"))}catch{return!1}let t=Number(o.slice(o.lastIndexOf("-")+1));if(!Number.isSafeInteger(t)||t<=0)return!0;try{return process.kill(t,0),!0}catch(n){return n.code==="EPERM"}}async function ge(e,o){qr({root:e.root,automation:e.automation,extensionDir:e.extensionDir});let t=he(e);Te(t);let n=ie().username,i={USER:n,LOGNAME:n,REASON_AUTOMATION_OCU:e.ocu,REASON_AUTOMATION_OBU:e.nativeHost};if(e.platform==="darwin-arm64"||x(e)){let p=x(e)?{...i,...ht(),HOME:s()}:{...i,HOME:s(),PATH:`${M(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OCU:process.execPath,REASON_AUTOMATION_OCU_SUBCOMMAND:rt};if(!o)return p;await U("browser",()=>te(e,p,t));let d=await le(e,p,t);if(!d)throw new r("automation_browser_unavailable","Reason could not connect the desktop browser.");return{...p,REASON_AUTOMATION_OBU_INSTANCE:d,REASON_AUTOMATION_BACKGROUND_TABS:"1"}}let a=await jt(),u=m(t,"home"),c=m(t,"runtime");Te(u),Te(c);let l=m(t,"bus"),f={...i,HOME:u,PATH:`${M(e.node)}:/usr/bin:/bin`,DISPLAY:a.display,XAUTHORITY:a.xauthority,XDG_RUNTIME_DIR:c,DBUS_SESSION_BUS_ADDRESS:`unix:path=${l}`,...a.sound?{PULSE_SERVER:Kt(a.sound)}:{}};if(await U("bus",()=>pt(l,f)),o)await U("browser",()=>te(e,f,t));return f}function ht(){let e=process.env.SystemRoot??"C:\\Windows",o=Object.fromEntries(["SystemDrive","USERPROFILE","LOCALAPPDATA","APPDATA","ProgramData","ProgramFiles","PATHEXT","ComSpec","USERNAME","USERDOMAIN","COMPUTERNAME","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE","PSModuleAnalysisCachePath"].flatMap((n)=>process.env[n]?[[n,process.env[n]]]:[])),t=m(e,"System32");return{...o,SystemRoot:e,windir:e,TEMP:P(),TMP:P(),PATH:[t,m(t,"WindowsPowerShell","v1.0"),e].join(Xe)}}async function gt(e,o,t){let n=ie().username,i={USER:n,LOGNAME:n,HOME:s(),PATH:`${M(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OBU:o,REASON_AUTOMATION_BACKGROUND_TABS:"1"},a=await dt(o,i);return t.throwIfAborted(),{...i,REASON_AUTOMATION_OBU_INSTANCE:a}}function _t(e){if(process.platform!=="win32")return["--input-type=module","--eval",e];let o=m(P(),`reason-automation-${Le("sha256").update(e).digest("hex").slice(0,16)}.mjs`);if(!C(o)||W(o,"utf8")!==e){let t=`${o}.${process.pid}.tmp`;Ge(t,e,{mode:384}),ne(t,o)}return[o]}function _e(e,o,t,n){if(typeof Z!=="string")return Promise.reject(new r("automation_unavailable","This Reason build has no automation runtime."));let i=Z;return new Promise((a,u)=>{let c=S(e,_t(i),{env:{...o,REASON_CLOUD_GATEWAY_EXEC:"1",REASON_AUTOMATION_INLINE_RESULT:"1"},stdio:["pipe","pipe","pipe"],detached:process.platform!=="win32",windowsHide:!0}),l=[],f=0,p="",d=null,g=!1,h=(w)=>{if(d??=w,process.platform==="win32"&&c.pid){S(m(process.env.SystemRoot??"C:\\Windows","System32","taskkill.exe"),["/pid",String(c.pid),"/t","/f"],{stdio:"ignore",windowsHide:!0}).once("error",()=>c.kill("SIGKILL"));return}try{process.kill(-c.pid,"SIGKILL")}catch{c.kill("SIGKILL")}},_=(w)=>{if(g)return;g=!0,clearTimeout(y),n.removeEventListener("abort",v),w()},y=setTimeout(()=>h(new r("automation_timed_out","Reason automation did not finish in time.")),Ve),v=()=>h(new r("cancelled","Reason cancelled the automation call."));if(n.addEventListener("abort",v,{once:!0}),c.stdout.on("data",(w)=>{if(f+=w.byteLength,f>Ke)h(new r("automation_output_too_large","Reason automation output is too large."));else l.push(w)}),c.stderr.setEncoding("utf8").on("data",(w)=>{p=(p+w).slice(-Ye)}),c.stdin.on("error",()=>{}),c.once("error",()=>_(()=>u(d??new r("automation_unavailable","Reason could not start the automation runtime.")))),c.once("close",(w)=>_(()=>{if(d)u(d);else a({code:w??1,stdout:Buffer.concat(l),stderr:p})})),n.aborted)v();c.stdin.end(t)})}var b=new Map;function wt(e,o,t){for(let[i,a]of b)if(a.expiresAt<=t)b.delete(i);while(b.size>=Qe)b.delete(b.keys().next().value);let n=re();return b.set(n,{runId:e,bytes:o,expiresAt:t+Ze}),n}async function we(e,o,t,n={}){let i=await(n.environment??ge)(e,o.kind==="browser");return t.throwIfAborted(),await(n.runtime??_e)(e.node,i,JSON.stringify(o),t)}async function Cl(e,o){let t=se({call:e});if(!("call"in t))T();let n=A();if(!n?.features.computer||t.call.kind==="browser"&&!n.features.browser)throw new r("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");return await we(n,t.call,o)}function oe(e,o,t){let n=e.stdout.byteLength>L?wt(o,e.stdout,t):void 0;return{code:e.code,stderr:e.stderr,instance_id:ot,output_bytes:e.stdout.byteLength,chunk:e.stdout.subarray(0,L).toString("base64"),...n?{output_id:n}:{}}}async function Mo(e,o={}){let t=se(e.payload),n=(o.now??Date.now)();if("output_id"in t){let _=b.get(t.output_id);if(!_||_.runId!==e.runId||_.expiresAt<=n||t.offset>_.bytes.byteLength)throw new r("automation_output_unavailable","Reason automation output expired.");return{chunk:_.bytes.subarray(t.offset,t.offset+L).toString("base64")}}let i=(o.components??A)(),a=(o.platform??process.platform)==="darwin",u=a?(o.macIdentity??Tr)():[],c=o.macSetup??O,l=!i?.features.computer||t.call.kind==="browser"&&!t.userChrome&&!i.features.browser;if(a&&(l||u.length===0||t.call.kind==="browser"&&t.userChrome&&!e.userChrome))return oe(await K({runId:e.runId,call:t.call,identity:u,desktopMissing:l,signal:e.signal},c),e.runId,n);if(!i?.features.computer)throw new r("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");let f=t.userChrome?e.userChrome:void 0;if(t.userChrome&&!f)throw new r("automation_user_chrome_unavailable","Your own Chrome is not enabled on this computer: run `reason desktop install` on this Mac (and `reason connect --user-chrome on` if you turned it off).");if(t.call.kind==="browser"&&!f&&!i.features.browser)throw new r("automation_browser_not_installed",!i.platform.startsWith("linux")?"Browser use is unavailable on this machine: re-run `reason desktop install`.":"Browser use is unavailable on this machine: install a non-snap Chromium at /usr/bin/chromium, then re-run `reason desktop install`.");e.signal.throwIfAborted();let p=t.call.kind==="browser"&&t.call.operation!=="record_start"&&t.call.operation!=="record_stop",d=await va(e.runId,e.signal,o.now,p?"call":"run"),g="account"in o?o.account??null:de(),h;try{if(f){let _=await(o.userChromeEnvironment??gt)(i,f,e.signal);e.signal.throwIfAborted(),h=await(o.runtime??_e)(i.node,_,JSON.stringify(t.call),e.signal)}else if(g)h=await(o.delegate??Zo)(g,t.call,e.signal);else h=await we(i,t.call,e.signal,o)}finally{d()}if(a)h=await Y({runId:e.runId,call:t.call,identity:u,output:h,signal:e.signal},c);return oe(h,e.runId,n)}
|
|
954
954
|
export{hr,No,Lo,$o,Cl,Mo};
|