@reason-machines/cli-linux-arm64-musl 0.2.380 → 0.2.382
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/README.md +3 -1
- package/bin/ara +2 -2
- package/bin/vm-hands/api-credentials-xppmbg0m.js +2 -0
- package/bin/vm-hands/api-xmpbsm6b.js +2 -0
- package/bin/vm-hands/{ask-relay-9pm7kj1s.js → ask-relay-zjqyxvxe.js} +3 -3
- package/bin/vm-hands/connect-cli-ehxeg8m5.js +2 -0
- package/bin/vm-hands/{custom-endpoint-device-zhpake9f.js → custom-endpoint-device-bm94e9r0.js} +1 -1
- package/bin/vm-hands/desktop-account-3tnm4z5w.js +2 -0
- package/bin/vm-hands/{device-workspace-vbcry9d6.js → device-workspace-0xsj5ykf.js} +1 -1
- package/bin/vm-hands/hands-worker-source-azdrrhsz.js +2 -0
- package/bin/vm-hands/{index-bbk6a9sk.js → index-7f2kwwen.js} +1 -1
- package/bin/vm-hands/{install-receipt-7x81ek76.js → install-receipt-3xyx3rdd.js} +1 -1
- package/bin/vm-hands/local-automation-ynx1qr9v.js +2 -0
- package/bin/vm-hands/local-capabilities-855ch0dq.js +2 -0
- package/bin/vm-hands/local-desktop-users-ajb81vjm.js +2 -0
- package/bin/vm-hands/local-display-mac-9h6btvvq.js +2 -0
- package/bin/vm-hands/local-display-session-f9ywkbba.js +2 -0
- package/bin/vm-hands/local-pty-session-cjas515w.js +2 -0
- package/bin/vm-hands/managed-runtime-dars4628.js +2 -0
- package/bin/vm-hands/{network-contract-zqvt1v0t.js → network-contract-dsw79qkc.js} +1 -1
- package/bin/vm-hands/package-smk3nqjs.js +2 -0
- package/bin/vm-hands/permissions-pdmhp2s3.js +2 -0
- package/bin/vm-hands/{reason-hands-protocol-8fxjynte.js → reason-hands-protocol-7d7xj1h3.js} +1 -1
- package/bin/vm-hands/serve-service-n6xd6323.js +2 -0
- package/bin/vm-hands/status-2m75kz1h.js +96 -0
- package/bin/vm-hands/version-74zqccyz.js +2 -0
- package/bin/vm-hands/vm-hands-entry-lite-06qnb2w1.js +458 -0
- package/bin/vm-hands/{vm-hands-entry-lite-7shpbsw8.js → vm-hands-entry-lite-1gxktkpe.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-wf1ek4f0.js → vm-hands-entry-lite-23bb8ce4.js} +2 -2
- package/bin/vm-hands/vm-hands-entry-lite-245929bs.js +346 -0
- package/bin/vm-hands/vm-hands-entry-lite-2e18tm6w.js +245 -0
- package/bin/vm-hands/{vm-hands-entry-lite-g036gtem.js → vm-hands-entry-lite-2t0vcvd8.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-8yy5ttfw.js → vm-hands-entry-lite-2tcjqgfp.js} +3 -3
- package/bin/vm-hands/vm-hands-entry-lite-3n3xh0xv.js +540 -0
- package/bin/vm-hands/vm-hands-entry-lite-50n6vbfx.js +251 -0
- package/bin/vm-hands/{vm-hands-entry-lite-j2q1k9vb.js → vm-hands-entry-lite-51hmj6am.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-zfwg7ehq.js → vm-hands-entry-lite-5n4vsm6b.js} +2 -2
- package/bin/vm-hands/vm-hands-entry-lite-8fj07njx.js +3 -0
- package/bin/vm-hands/{vm-hands-entry-lite-r8twmzjc.js → vm-hands-entry-lite-8zawqa9q.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-3hbe4em3.js → vm-hands-entry-lite-9cmfthkq.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-45j8qwsf.js → vm-hands-entry-lite-9w5vs9zv.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-qyzgxd9g.js → vm-hands-entry-lite-aj1ccphg.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-za55dtte.js → vm-hands-entry-lite-ammr3xbc.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-de2rkr5h.js → vm-hands-entry-lite-ch7y4b1b.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-439yqbn5.js → vm-hands-entry-lite-cwe16c51.js} +174 -16
- package/bin/vm-hands/vm-hands-entry-lite-dh5gwmyf.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-dsdwzasy.js +105 -0
- package/bin/vm-hands/{vm-hands-entry-lite-5pm6bhb8.js → vm-hands-entry-lite-e0gdt6r5.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-5kgvss4p.js → vm-hands-entry-lite-e2mjbqmr.js} +2 -2
- package/bin/vm-hands/vm-hands-entry-lite-ejm5er3h.js +7 -0
- package/bin/vm-hands/{vm-hands-entry-lite-mh0xecf3.js → vm-hands-entry-lite-f02906k8.js} +4 -4
- package/bin/vm-hands/vm-hands-entry-lite-f5230h6t.js +67 -0
- package/bin/vm-hands/{vm-hands-entry-lite-zh8p7ndn.js → vm-hands-entry-lite-fb5dzy9x.js} +2 -2
- package/bin/vm-hands/vm-hands-entry-lite-fyvgav60.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-g7h6wjqy.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-h8dbw0c7.js +4 -0
- package/bin/vm-hands/{vm-hands-entry-lite-nhtb458c.js → vm-hands-entry-lite-hnsm5t36.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-r6pap1kh.js → vm-hands-entry-lite-ma001vzh.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-anmv8hp7.js → vm-hands-entry-lite-mn64e4pt.js} +286 -104
- package/bin/vm-hands/{vm-hands-entry-lite-9cgm6g8t.js → vm-hands-entry-lite-pk3q774c.js} +1 -1
- package/bin/vm-hands/vm-hands-entry-lite-qef2ndkd.js +6 -0
- package/bin/vm-hands/vm-hands-entry-lite-qnnfvm5r.js +5 -0
- package/bin/vm-hands/vm-hands-entry-lite-qwf78yqr.js +11 -0
- package/bin/vm-hands/vm-hands-entry-lite-r8qg3wp1.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-rd0ak4ye.js +4 -0
- package/bin/vm-hands/{vm-hands-entry-lite-00qsbphw.js → vm-hands-entry-lite-rpn0frzb.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-g9rvf5qk.js → vm-hands-entry-lite-rtt2w6c6.js} +1 -1
- package/bin/vm-hands/vm-hands-entry-lite-sex82vb1.js +3 -0
- package/bin/vm-hands/{vm-hands-entry-lite-dgxxsdwb.js → vm-hands-entry-lite-xrthfx3q.js} +2 -2
- package/bin/vm-hands/{vm-hands-entry-lite-kxdw4myj.js → vm-hands-entry-lite-y2s2w174.js} +1 -1
- package/bin/vm-hands/{vm-hands-entry-lite-hc3p6r9p.js → vm-hands-entry-lite-zjfr0zh8.js} +2 -2
- package/bin/vm-hands/vm-hands-entry-lite.js +1 -1
- package/bin/vm-hands/{vm-hands-executor-a05whg1y.js → vm-hands-executor-yx6mxa2p.js} +1 -1
- package/bin/vm-hands/vm-hands-op-runner-yt3v3v6w.js +2 -0
- package/bin/vm-hands/{vm-hands-runtime-ky9jhq5h.js → vm-hands-runtime-ygddqgbs.js} +3 -3
- package/bin/vm-hands/worker-sandbox-tgqbmy6b.js +2 -0
- package/package.json +1 -1
- package/bin/vm-hands/api-af9g18n7.js +0 -2
- package/bin/vm-hands/api-credentials-65mrr3tn.js +0 -2
- package/bin/vm-hands/connect-cli-w0z9jzv5.js +0 -2
- package/bin/vm-hands/desktop-account-5zvgspyw.js +0 -2
- package/bin/vm-hands/hands-worker-source-h0b1j53p.js +0 -2
- package/bin/vm-hands/local-automation-nm3xtj0a.js +0 -2
- package/bin/vm-hands/local-capabilities-bbrr6j7v.js +0 -2
- package/bin/vm-hands/local-desktop-users-0hadyvx1.js +0 -2
- package/bin/vm-hands/local-display-mac-v1pc7177.js +0 -2
- package/bin/vm-hands/local-display-session-n0kagkex.js +0 -2
- package/bin/vm-hands/local-pty-session-hs7rq03x.js +0 -2
- package/bin/vm-hands/managed-runtime-n7ftmmx7.js +0 -2
- package/bin/vm-hands/package-3cd7cfyv.js +0 -2
- package/bin/vm-hands/permissions-bfwdxyr5.js +0 -2
- package/bin/vm-hands/serve-service-g12x52xn.js +0 -2
- package/bin/vm-hands/status-t3jrf9fn.js +0 -96
- package/bin/vm-hands/version-m89hab1m.js +0 -2
- package/bin/vm-hands/vm-hands-entry-lite-1085xsma.js +0 -5
- package/bin/vm-hands/vm-hands-entry-lite-4m40gwkf.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-5q1q991e.js +0 -181
- package/bin/vm-hands/vm-hands-entry-lite-bdp2578c.js +0 -540
- package/bin/vm-hands/vm-hands-entry-lite-bvbfcp1k.js +0 -4
- package/bin/vm-hands/vm-hands-entry-lite-c01eyep6.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-dcynw6t2.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-g6912hkd.js +0 -62
- package/bin/vm-hands/vm-hands-entry-lite-hh24bq0d.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-jb2sr2r7.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-sb9a1jcn.js +0 -4
- package/bin/vm-hands/vm-hands-entry-lite-sky5eg5d.js +0 -11
- package/bin/vm-hands/vm-hands-entry-lite-ynzy9k5z.js +0 -340
- package/bin/vm-hands/vm-hands-entry-lite-ze9msfq1.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-zq42mcjc.js +0 -459
- package/bin/vm-hands/vm-hands-op-runner-69sca90a.js +0 -2
- package/bin/vm-hands/worker-sandbox-wpzkvwer.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import"./vm-hands-entry-lite-
|
|
2
|
+
import"./vm-hands-entry-lite-e0gdt6r5.js";import"./vm-hands-entry-lite-5n4vsm6b.js";import"./vm-hands-entry-lite-zjfr0zh8.js";import{Kk as A}from"./vm-hands-entry-lite-2t0vcvd8.js";import{readFileSync as J}from"fs";var G=performance.now();delete process.env.BUN_BE_BUN;var q=(j,b={})=>console.log(JSON.stringify({stage:j,ms:Math.round(performance.now()),...b}));async function K(){if(process.argv.includes("--vm-hands-op-runner")){let{runVmHandsOpRunner:D}=await import("./vm-hands-op-runner-yt3v3v6w.js");await D();return}q("parsed",{t0:Math.round(G)});let j="";try{j=J(3,"utf8")}catch{}q("fd3_read",{bytes:j.length});let b=null;if(j.trim())try{b=JSON.parse(j)}catch{b=null}if(!b||typeof b!=="object"||Array.isArray(b))q(j.trim()?"identity_invalid":"identity_free"),await new Promise(()=>{setInterval(()=>{return},1073741824)});let{parseVmHandsInit:B,runVmHands:C}=await import("./vm-hands-runtime-ygddqgbs.js"),z=B(b);if(!z)q("identity_invalid"),await new Promise(()=>{setInterval(()=>{return},1073741824)});await C(z,q),process.exit(0)}K();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{s as Rq}from"./vm-hands-entry-lite-
|
|
2
|
+
import{s as Rq}from"./vm-hands-entry-lite-ch7y4b1b.js";import{Mb as jq,qc as Nq,wb as Mq,wc as Aq}from"./vm-hands-entry-lite-06qnb2w1.js";import"./vm-hands-entry-lite-qef2ndkd.js";import"./vm-hands-entry-lite-mn64e4pt.js";import"./vm-hands-entry-lite-h8dbw0c7.js";import"./vm-hands-entry-lite-5n4vsm6b.js";import"./vm-hands-entry-lite-xrthfx3q.js";import"./vm-hands-entry-lite-fb5dzy9x.js";import"./vm-hands-entry-lite-2e18tm6w.js";import"./vm-hands-entry-lite-ammr3xbc.js";import"./vm-hands-entry-lite-y2s2w174.js";import"./vm-hands-entry-lite-e2mjbqmr.js";import"./vm-hands-entry-lite-ma001vzh.js";import"./vm-hands-entry-lite-sex82vb1.js";import"./vm-hands-entry-lite-fyvgav60.js";import"./vm-hands-entry-lite-pk3q774c.js";import"./vm-hands-entry-lite-23bb8ce4.js";import"./vm-hands-entry-lite-zjfr0zh8.js";import"./vm-hands-entry-lite-rd0ak4ye.js";import"./vm-hands-entry-lite-r8qg3wp1.js";import"./vm-hands-entry-lite-f5230h6t.js";import"./vm-hands-entry-lite-51hmj6am.js";import"./vm-hands-entry-lite-2t0vcvd8.js";import{spawn as hq}from"child_process";import{chmodSync as kq,chownSync as gq,existsSync as l,lstatSync as o,mkdirSync as e,mkdtempSync as Sq,readdirSync as s,readFileSync as f,realpathSync as Eq,rmdirSync as r,rmSync as yq,writeFileSync as y}from"fs";import{join as U}from"path";import{readFileSync as zq,readlinkSync as Wq}from"fs";import{relative as xq}from"path";var Gq=16;function Jq(X){return X.replace(/\\([0-7]{3})/g,($,G)=>String.fromCharCode(Number.parseInt(G,8)))}function Hq(X){let $=[];for(let G of X.split(`
|
|
3
3
|
`)){let q=G.split(" ");if(q.length<10||!/^\d+:\d+$/.test(q[2]))continue;$.push({device:q[2],root:Jq(q[3]),mountPoint:Jq(q[4])})}return $}function _q(X,$,G){let q=X.replace(/\/+$/,"")||"/",J=(F)=>q==="/"||F===q||F.startsWith(`${q}/`),W=(F)=>new Map(Hq(F).filter((R)=>J(R.mountPoint)).map((R)=>[`${R.mountPoint}\x00${R.device}\x00${R.root}`,R.mountPoint])),Y=W($),A=W(G),M=(F)=>xq(q,F)||".",b=[...Y].filter(([F])=>!A.has(F)).map(([,F])=>M(F)),O=[...A].filter(([F])=>!Y.has(F)).map(([,F])=>M(F));return{missing:b,extra:O,referenceCount:Y.size,ownCount:A.size}}function Yq(X,$,G,q="/proc"){let J,W,Y=null;try{J=zq(`${q}/1/mountinfo`,"utf8"),W=zq(`${q}/self/mountinfo`,"utf8")}catch(R){let V=R&&typeof R==="object"&&"code"in R&&typeof R.code==="string"?R.code:"unreadable";$("vm_hands.mount_check_unavailable",{code:V});return}try{Y=Wq(`${q}/1/ns/mnt`)===Wq(`${q}/self/ns/mnt`)}catch{}let{missing:A,extra:M,referenceCount:b,ownCount:O}=_q(X,J,W),F={reference_count:b,own_count:O,missing_count:A.length,extra_count:M.length,same_namespace:Y};if(M.length)$("vm_hands.mount_extra",{...F,extra:M.slice(0,Gq)});if(A.length)throw $("vm_hands.mount_mismatch",{...F,missing:A.slice(0,Gq)}),G(`${A.length} mount(s) under the Session root are missing from vm-hands' namespace`)}var Pq="/sys/fs/cgroup/reason-payload",h="vm-hands",mq="/run/ara-srt/fallbacks.jsonl",E="/reason-person",qq=5000,uq=1e4,Kq="__VM_HANDS_PROOF_DIR__",lq="__VM_HANDS_PROBE_NONCE__";class D extends Error{code;constructor(X,$){super($);this.code=X}}function cq(X,$){if(!/^[0-9a-f-]{36}$/i.test($))throw new D("vm_hands_bind_invalid","bad bind id");return U(X,h,`b-${$.toLowerCase()}`)}var pq=5000,wq=(X)=>`'${X.replaceAll("'","'\\''")}'`;function GX(X){let $=X.cgroup??Pq,G=X.init.layout.payload_uid,q=X.log??(()=>{}),J=new Map,W=new Map,Y=0,A=()=>{try{let Z=f("/run/ara-srt/starts.jsonl","utf8"),z=Z.slice(Y>Z.length?0:Y).split(`
|
|
4
4
|
`).filter(Boolean);Y=Z.length;let K=z.map((L)=>{try{return Number(JSON.parse(L).elapsed_ms)||0}catch{return 0}});if(K.length)q("vm_hands.srt_server_starts",{count:K.length,elapsed_ms:K.slice(0,8)})}catch{}},M=null,b=!1,O=X.srtCgroup??"/sys/fs/cgroup/reason-srt",F=()=>{M??=Lq()},R=0,V=()=>{try{let Z=f(mq,"utf8"),z=Z.slice(R>Z.length?0:R);R=Z.length;let K=z.split(`
|
|
5
5
|
`).filter(Boolean).slice(0,1000);if(!K.length)return null;let L={},T=0;for(let j of K)try{let P=JSON.parse(j),B=typeof P.code==="string"&&/^[a-z_]{1,40}$/.test(P.code)?P.code:"other";if(L[B]=(L[B]??0)+1,typeof P.elapsed_ms==="number")T=Math.max(T,P.elapsed_ms)}catch{L.unparsed=(L.unparsed??0)+1}return q("vm_hands.srt_fallbacks",{count:K.length,codes:L,max_elapsed_ms:T}),{count:K.length,codes:L,max_elapsed_ms:T}}catch{return null}},w=!1,m=(Z,z,K)=>{if(w)throw Error("vm_hands_pool_held");return Oq(Z,z,K)},d=(Z)=>(z,K,L)=>hq("/bin/sh",["-c",`echo $$ > ${wq(U(Z,"cgroup.procs"))} || exit 125; exec "$@"`,"vm-hands-join",z,...K],L),Oq=d(U($,h)),u=U($,h,"probe"),S=(Z)=>cq($,Z),bq=(Z)=>{let z=S(Z);try{e(z,{mode:493})}catch(K){if(!(K&&typeof K==="object"&&("code"in K)&&K.code==="EEXIST"))throw new D("vm_hands_bind_failed","bind cgroup")}return z},Vq=(Z)=>{try{r(S(Z))}catch{}},H=X.prespawn?jq({spawnProcess:m,...X.relayDependencies?.sourceEntrypoint?{sourceEntrypoint:X.relayDependencies.sourceEntrypoint}:{},log:(Z,z)=>q(Z,z??{})}):null;H?.arm();let i=H?setInterval(()=>{H.arm()},pq):null;i?.unref?.();async function c(Z){let z=J.get(Z);if(J.delete(Z),!z)return;z.abort.abort(),await z.done}return{bindCgroup:S,async startExecutor(Z){if(F(),W.set(Z.bindId,Lq()),b=!0,!Z.claim)throw new D("vm_hands_bind_invalid","an executor needs the claim it serves");await c(Z.bindId);let{claim:z,bindId:K}=Z,L=bq(K),T=z.owner;if(!T||typeof T.device_id!=="string"||typeof z.root_id!=="string")throw new D("vm_hands_bind_invalid","claim without its owner Device or root");let j=new AbortController,P,B,I=new Promise((Q,N)=>{P=Q,B=N}),v,C=new Promise((Q)=>{v=Q}),_=Aq({headless:!0,hostExecution:!0,runtimeDirectory:X.runtimeDirectory,deviceIdentity:{deviceId:T.device_id,rootId:z.root_id,apiOrigin:X.apiOrigin},claimOwner:z.owner,root:X.root,runId:z.run_id,operationId:z.operation_id,attemptId:z.attempt_id,payload:Object.fromEntries(Object.entries(z.payload).filter(([Q])=>!Q.startsWith("vm_hands_"))),signal:j.signal,...Z.workspaceGrant?{workspaceGrant:Z.workspaceGrant}:{},emitEvent:async(Q,N)=>{if(Q==="hands.ready"){P(N);return}if(Q==="hands.started"||Q==="hands.stopped"||Q==="hands.failed")return;await X.forward(K,Q,N)}},{...X.relayDependencies,spawnWorker:(Q)=>d(L)(Q.command,Q.args,Q.options),...H?{takePrespawnedWorker:(Q)=>{let N=H.take(Q);if(!N?.pid)return N;try{return y(U(L,"cgroup.procs"),String(N.pid)),N}catch{try{N.kill("SIGKILL")}catch{}return null}},adoptSpawnedWorker:H.adopt}:{}}).then(()=>{v("executor_stopped")},(Q)=>{let N=Q&&typeof Q==="object"&&"code"in Q?String(Q.code):"executor_failed";B(new D(N,Q instanceof Error?Q.message:String(Q))),v(N)}).finally(()=>B(new D("vm_hands_executor_exited","executor ended before it was ready")));J.set(K,{abort:j,done:_,exited:C,operationId:z.operation_id,runId:z.run_id,expiresAtMs:Date.parse(String(z.payload.expires_at??""))||0});let k=await I,p=k.executor_launch_id;if(typeof p!=="string")throw new D("vm_hands_bind_failed","executor ready without a launch id");return{launchId:p,readyData:k,applied:{hands_confinement:typeof z.payload.hands_confinement==="string"?z.payload.hands_confinement:null,browser_egress:z.payload.browser_egress??null}}},takeSrtFallbacks:V,executorExited(Z){return J.get(Z)?.exited??new Promise(()=>{})},freezeBind(Z){let z=S(Z);if(l(U(z,"cgroup.freeze")))y(U(z,"cgroup.freeze"),"1")},async killAndVerifyPayload(Z){let z=new Set(Z?.keep??[]);if(z.size||Z?.own)return vq(Z?.bindId??null,z,Z?.own===!0);w=!0;let K=Fq();try{await Dq();let L=Promise.all([...J.keys()].map((B)=>c(B).catch(()=>{return})));A();let T=Date.now()+qq;await a($,T,"payload"),await L;let j=(b||X.srtWarmLate?.()===!0)&&l(U(O,"cgroup.events"));if(j)await a(O,T,"srt");let P=Zq(G).filter((B)=>!x(B,E));if(M!==null){let B=Xq(M).filter((I)=>I!==process.pid&&!x(I,E));if(B.length)throw q("vm_hands.kill_strays",{strays:B.slice(0,16).map((I)=>{let v="?",C="?";try{v=f(`/proc/${I}/comm`,"utf8").trim().slice(0,32)}catch{}try{C=(f(`/proc/${I}/cgroup`,"utf8").split(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{xa as k,ya as m,za as l}from"./vm-hands-entry-lite-
|
|
3
|
-
`,{mode:420}),Q("srt_base_keyed",{})}catch{Q("srt_base_keyed_skipped",{reason:"error"})}}function R(Q,j){let J=(F)=>{return j("srt_warm_skipped",{reason:F}),Promise.resolve()};if(typeof Q.srt_base_settings!=="string")return J("no_settings");let Z=Buffer.from(Q.srt_base_settings,"base64");if(Z.length===0||Z.length>qj||Z.toString("base64")!==Q.srt_base_settings)return J("settings_invalid");try{let F=T(S);if(!F.isDirectory()||F.uid!==0||(F.mode&18)!==0)return J("cgroup_unsafe");for(let[H,g]of[[p,!1],["/usr/local/bin",!0]]){let Y=T(H);if((g?!Y.isDirectory():!Y.isFile())||Y.uid!==0||(Y.mode&18)!==0)return J("srt_exec_unsafe")}}catch{return J("cgroup_or_exec_missing")}if((process.getuid?.()??-1)!==0)return J("not_root");let X=performance.now(),z=i("sha256").update(Z).digest("hex"),W=`${P}/srt-base-settings.json`;try{d(W,Z,{mode:384,flag:"w"})}catch{return J("settings_write")}let M=r("/bin/sh",["-c",`echo $$ > ${S}/cgroup.procs || exit 125; exec "$@"`,"vm-hands-srt",p,"--settings",W,"--idle-ms",String(Jj),"--","/bin/true"],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:"ignore"});return new Promise((F)=>{M.once("error",()=>{j("srt_warm_failed",{reason:"spawn"}),F()}),M.once("close",(H)=>{j(H===0?"srt_warm_done":"srt_warm_failed",{exit_code:H,warm_ms:Math.round(performance.now()-X),settings_sha256:z}),F()})})}var y=3000;function Lj(Q){if(!Q||typeof Q!=="object"||Array.isArray(Q))return null;let j=Q,J=j.layout,Z=j.device_key,X=j.credential;return typeof j.workspace_id==="string"&&Number.isSafeInteger(j.instance_generation)&&typeof j.api_origin==="string"&&jj.test(j.api_origin)&&typeof j.manifest_digest==="string"&&!!X&&typeof X.key_id==="string"&&Number.isSafeInteger(X.expires_at_ms)&&typeof X.signature==="string"&&!!J&&typeof J.session_root==="string"&&typeof J.alias==="string"&&Number.isSafeInteger(J.payload_uid)&&typeof J.kind==="string"&&!!Z&&typeof Z.pkcs8==="string"&&typeof Z.spki==="string"?j:null}function v(Q){s(Q,{recursive:!0,mode:448});let j=e(Q);if(!j.isDirectory()||(j.mode&63)!==0||j.uid!==(process.getuid?.()??-1))throw Error(`vm_hands_runtime_directory_unsafe: ${Q}`)}async function Zj(Q){let[{CLI_VERSION:j},J,Z,X]=await Promise.all([import("./version-
|
|
4
|
-
`)){let J=j.split(":");if(J.length>=4&&Number(J[2])===Q&&/^\d+$/.test(J[3]??"")&&Number(J[3])>0)return Number(J[3])}throw Error("vm_hands_payload_account_unavailable")}function Fj(Q,j){let J=j.owner;if(!J||typeof J.organization_id!=="string"||typeof J.device_id!=="string"||typeof j.root_id!=="string")return null;return{version:4,apiOrigin:Q.api_origin,orgId:J.organization_id,deviceId:J.device_id,devicePublicKey:"",displayName:"vm-hands",registeredAt:new Date(0).toISOString(),handsSlots:1,roots:[{id:j.root_id,label:"workspace",path:x,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}]}}async function Mj(Q,j){v(P),v(O),Qj(j);let J=R(Q,j),Z=!1,X=async()=>{if(!await Promise.race([J.then(()=>!0),new Promise(($)=>setTimeout(()=>$(!1),y).unref?.())]))Z=!0,j("srt_warm_late",{wait_ms:y})},[{configureDesktopAccount:z},{configureWorkerSandbox:W}]=await Promise.all([import("./desktop-account-
|
|
2
|
+
import{xa as k,ya as m,za as l}from"./vm-hands-entry-lite-e0gdt6r5.js";import{Ie as u}from"./vm-hands-entry-lite-5n4vsm6b.js";import"./vm-hands-entry-lite-zjfr0zh8.js";import{Kk as G}from"./vm-hands-entry-lite-2t0vcvd8.js";import{spawn as r}from"child_process";import{createHash as i}from"crypto";import{lstatSync as T,mkdirSync as s,readFileSync as t,statSync as e,writeFileSync as d}from"fs";var P="/run/reason-vm-hands",O="/run/reason-vm-hands/env",x="/home/runner/.reason/workspace",jj=/^https:\/\/[a-z0-9.-]+(?::\d{1,5})?$/,S="/sys/fs/cgroup/reason-srt",p="/usr/local/bin/ara-srt-exec",qj=65536,Jj=21600000;function Qj(Q,j="/run/ara-srt"){try{if((process.getuid?.()??-1)!==0)return;s(j,{recursive:!0,mode:448});let J=T(j);if(!J.isDirectory()||J.uid!==0||(J.mode&63)!==0){Q("srt_base_keyed_skipped",{reason:"socket_dir_unsafe"});return}d(`${j}/base-keyed`,`1
|
|
3
|
+
`,{mode:420}),Q("srt_base_keyed",{})}catch{Q("srt_base_keyed_skipped",{reason:"error"})}}function R(Q,j){let J=(F)=>{return j("srt_warm_skipped",{reason:F}),Promise.resolve()};if(typeof Q.srt_base_settings!=="string")return J("no_settings");let Z=Buffer.from(Q.srt_base_settings,"base64");if(Z.length===0||Z.length>qj||Z.toString("base64")!==Q.srt_base_settings)return J("settings_invalid");try{let F=T(S);if(!F.isDirectory()||F.uid!==0||(F.mode&18)!==0)return J("cgroup_unsafe");for(let[H,g]of[[p,!1],["/usr/local/bin",!0]]){let Y=T(H);if((g?!Y.isDirectory():!Y.isFile())||Y.uid!==0||(Y.mode&18)!==0)return J("srt_exec_unsafe")}}catch{return J("cgroup_or_exec_missing")}if((process.getuid?.()??-1)!==0)return J("not_root");let X=performance.now(),z=i("sha256").update(Z).digest("hex"),W=`${P}/srt-base-settings.json`;try{d(W,Z,{mode:384,flag:"w"})}catch{return J("settings_write")}let M=r("/bin/sh",["-c",`echo $$ > ${S}/cgroup.procs || exit 125; exec "$@"`,"vm-hands-srt",p,"--settings",W,"--idle-ms",String(Jj),"--","/bin/true"],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:"ignore"});return new Promise((F)=>{M.once("error",()=>{j("srt_warm_failed",{reason:"spawn"}),F()}),M.once("close",(H)=>{j(H===0?"srt_warm_done":"srt_warm_failed",{exit_code:H,warm_ms:Math.round(performance.now()-X),settings_sha256:z}),F()})})}var y=3000;function Lj(Q){if(!Q||typeof Q!=="object"||Array.isArray(Q))return null;let j=Q,J=j.layout,Z=j.device_key,X=j.credential;return typeof j.workspace_id==="string"&&Number.isSafeInteger(j.instance_generation)&&typeof j.api_origin==="string"&&jj.test(j.api_origin)&&typeof j.manifest_digest==="string"&&!!X&&typeof X.key_id==="string"&&Number.isSafeInteger(X.expires_at_ms)&&typeof X.signature==="string"&&!!J&&typeof J.session_root==="string"&&typeof J.alias==="string"&&Number.isSafeInteger(J.payload_uid)&&typeof J.kind==="string"&&!!Z&&typeof Z.pkcs8==="string"&&typeof Z.spki==="string"?j:null}function v(Q){s(Q,{recursive:!0,mode:448});let j=e(Q);if(!j.isDirectory()||(j.mode&63)!==0||j.uid!==(process.getuid?.()??-1))throw Error(`vm_hands_runtime_directory_unsafe: ${Q}`)}async function Zj(Q){let[{CLI_VERSION:j},J,Z,X]=await Promise.all([import("./version-74zqccyz.js"),import("./hands-worker-source-azdrrhsz.js"),import("./network-contract-dsw79qkc.js"),import("./device-workspace-0xsj5ykf.js")]),{REASON_HANDS_PROTOCOL_VERSION:z}=await import("./reason-hands-protocol-7d7xj1h3.js");return{reason_runtime_version:j,bridge_version:j,protocol_version:u,execution_eligible:!0,instance_generation:Q.instance_generation,capabilities:{supported_operations:["hands.connect"],hands_worker_artifact_sha256:J.REASON_HANDS_WORKER_ARTIFACT_SHA256,hands_worker_entrypoint:J.REASON_HANDS_WORKER_ENTRYPOINT,hands_slots:1,max_payload_bytes:Z.LOCAL_OPERATION_MAX_BYTES,max_result_bytes:Z.LOCAL_OPERATION_MAX_BYTES,operation_constraints:{"hands.connect":{ready:!0,execution_mode:"host",transport:"wss_relay",worker:"ara_hands",slots:1,session_group:Z.HANDS_SESSION_GROUP,worker_version:J.REASON_HANDS_WORKER_VERSION,protocol_version:z,worker_artifact_sha256:J.REASON_HANDS_WORKER_ARTIFACT_SHA256,worker_entrypoint:J.REASON_HANDS_WORKER_ENTRYPOINT,policy_mode:"full_access",policy_version:1,workspace_base:X.REASON_WORKSPACE_BASE,workspace_layout:X.SESSION_WORKSPACE_LAYOUT,browser_state:"optional_headless",desktop:!1,max_session_ms:43200000,environment_delivery:Z.HANDS_ENVIRONMENT_DELIVERY,[Z.HANDS_ENVIRONMENT_AT_CLAIM_KEY]:Z.HANDS_ENVIRONMENT_AT_CLAIM,[Z.HANDS_CLOUD_ACCESS_KEY]:Z.HANDS_CLOUD_ACCESS,[Z.HANDS_LARGE_ENVIRONMENT_KEY]:Z.HANDS_LARGE_ENVIRONMENT,[Z.HANDS_CONFINEMENT_KEY]:Z.HANDS_CONFINEMENT,[Z.HANDS_JOBS_USER_KEY]:Z.HANDS_JOBS_USER,vm_hands:"v1"}}}}}var V=["fs.read","fs.write","fs.export","fs.import","exec.run","exec.full","process.list","ports.list","pty.start","jobs.control","automation.call.v1"],$j=new Set(["pty.start","jobs.control"]);function Xj(Q,j){let J=j([{id:"vm-hands",label:"workspace",path:x,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}],{worker:{executionMode:"unsandboxed",readiness:Object.fromEntries(V.map((z)=>[z,!0]))}}),Z=Q.capabilities,X={...Z.operation_constraints};for(let z of V)X[z]={...J.operation_constraints?.[z]??{},ready:!0,execution_mode:J.operation_constraints?.[z]?.execution_mode??"host"};return{...Q,capabilities:{...Z,supported_operations:["hands.connect",...V],operation_constraints:X}}}function zj(Q){for(let j of t("/etc/passwd","utf8").split(`
|
|
4
|
+
`)){let J=j.split(":");if(J.length>=4&&Number(J[2])===Q&&/^\d+$/.test(J[3]??"")&&Number(J[3])>0)return Number(J[3])}throw Error("vm_hands_payload_account_unavailable")}function Fj(Q,j){let J=j.owner;if(!J||typeof J.organization_id!=="string"||typeof J.device_id!=="string"||typeof j.root_id!=="string")return null;return{version:4,apiOrigin:Q.api_origin,orgId:J.organization_id,deviceId:J.device_id,devicePublicKey:"",displayName:"vm-hands",registeredAt:new Date(0).toISOString(),handsSlots:1,roots:[{id:j.root_id,label:"workspace",path:x,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}]}}async function Mj(Q,j){v(P),v(O),Qj(j);let J=R(Q,j),Z=!1,X=async()=>{if(!await Promise.race([J.then(()=>!0),new Promise(($)=>setTimeout(()=>$(!1),y).unref?.())]))Z=!0,j("srt_warm_late",{wait_ms:y})},[{configureDesktopAccount:z},{configureWorkerSandbox:W}]=await Promise.all([import("./desktop-account-3tnm4z5w.js"),import("./worker-sandbox-tgqbmy6b.js")]);W();try{z({value:String(Q.layout.payload_uid)})}catch{j("payload_account_unavailable"),await new Promise(()=>{setInterval(()=>{return},1073741824)})}let M=new AbortController;for(let q of["SIGTERM","SIGINT"])process.on(q,()=>M.abort());let F=new Map,H,g=new Promise((q)=>{H=q}),Y=g.then(()=>import("./vm-hands-executor-yx6mxa2p.js")).then(({createVmHandsExecutor:q})=>{let $=q({init:Q,root:x,runtimeDirectory:P,apiOrigin:Q.api_origin,prespawn:!0,onSrtReset:()=>{Z=!1,J=R(Q,j)},srtWarmLate:()=>Z,forward:(B,K,N)=>F.get(B)?.(K,N)??Promise.reject(Error("vm_hands_not_bound")),log:(B,K)=>j(B,K)});return j("executor_loaded"),$}),A=(q)=>async(...$)=>(await Y)[q](...$),C=null;Y.then((q)=>{C=($)=>q.executorExited($)});let L={startExecutor:async(...q)=>{return await X(),A("startExecutor")(...q)},killAndVerifyPayload:A("killAndVerifyPayload"),killProbe:A("killProbe"),runProbe:async(...q)=>{return await X(),A("runProbe")(...q)},restatLayout:()=>{throw Error("replaced below")},verifyMounts:()=>{throw Error("replaced below")},installEnvironment:()=>{throw Error("replaced below")},executorExited:(q)=>C?C(q):new Promise(()=>{}),takeSrtFallbacks:()=>null};Y.then((q)=>{L.restatLayout=()=>q.restatLayout(),L.verifyMounts=()=>q.verifyMounts(),L.installEnvironment=($,B)=>q.installEnvironment($,B),L.freezeBind=($)=>q.freezeBind($),L.takeSrtFallbacks=()=>q.takeSrtFallbacks?.()??null});let c=await k(Q),o=new m(Q,c,L,{envRoot:O}),h=Zj(Q),b=null,n=Promise.all([h,import("./local-capabilities-855ch0dq.js")]).then(([q,$])=>{b=Xj(q,$.capabilityInventoryForRoots),j("device_ops_loaded")}).catch((q)=>j("device_ops_unavailable",{error:q instanceof Error?q.name:"error"})),f=g.then(()=>import("./vm-hands-executor-yx6mxa2p.js")).then(({createVmHandsOpRunners:q,vmHandsBindCgroup:$,VM_HANDS_PAYLOAD_CGROUP:B})=>q({payloadUid:Q.layout.payload_uid,payloadGid:zj(Q.layout.payload_uid),bindCgroup:(K)=>$(B,K),log:(K,N)=>j(K,N)})).catch(()=>null);f.then((q)=>q?.warm("person")),j("agent_ready"),await l({apiOrigin:Q.api_origin,agent:o,signal:M.signal,heartbeat:async()=>b??await h,executeOp:async({kind:q,claim:$,bindId:B,signal:K,emit:N})=>{let w=Fj(Q,$);if(!w)return{status:"failed",error_code:"vm_hands_bind_invalid"};let E={executionMode:"unsandboxed",runtimeDirectory:P,readiness:Object.fromEntries(V.map((U)=>[U,!0]))},_=(U)=>{let D=typeof U.kind==="string"?U.kind:"";if(D)N({kind:D,...U.data&&typeof U.data==="object"?{data:U.data}:{}})};if($.capability==="exec.full"&&q!=="person")return{status:"failed",error_code:"capability_not_granted"};if($.capability==="automation.call.v1"&&q!=="model")return{status:"failed",error_code:"capability_not_granted"};let a=$.capability==="pty.start"&&q==="person"&&!$.authority;if($j.has(String($.capability))&&!a){let{executeLocalOperation:U}=await import("./local-capabilities-855ch0dq.js");return U(w,$,{worker:E,signal:K,emit:(D)=>_(D)})}let I=await f;if(!I)return{status:"failed",error_code:"vm_hands_payload_account_unavailable"};return I.run(q,{id:String($.attempt_id),claim:$,state:w,worker:E},_,K,B)},readyData:({launchId:q})=>({executor_launch_id:q}),log:(q,$)=>{if(q==="vm_hands.registered"||q==="vm_hands.reconnected")H();j(q,$)},onTurn:(q,$)=>{if($)F.set(q,$);else F.delete(q)}}),await(await Y).stop(),(await f)?.stop()}export{R as startBaseSrtServer,Mj as runVmHands,Lj as parseVmHandsInit,Zj as heartbeatBody,Qj as enableBaseKeyedSrt};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{r as a}from"./vm-hands-entry-lite-8fj07njx.js";import"./vm-hands-entry-lite-ejm5er3h.js";import"./vm-hands-entry-lite-qef2ndkd.js";import"./vm-hands-entry-lite-g7h6wjqy.js";import"./vm-hands-entry-lite-sex82vb1.js";import"./vm-hands-entry-lite-r8qg3wp1.js";import"./vm-hands-entry-lite-f5230h6t.js";import"./vm-hands-entry-lite-51hmj6am.js";import"./vm-hands-entry-lite-2t0vcvd8.js";export{a as configureWorkerSandbox};
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{F as a,G as b,H as c,I as d,J as e,K as f}from"./vm-hands-entry-lite-mh0xecf3.js";import"./vm-hands-entry-lite-3hbe4em3.js";import"./vm-hands-entry-lite-5kgvss4p.js";import"./vm-hands-entry-lite-r6pap1kh.js";import"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-hc3p6r9p.js";import"./vm-hands-entry-lite-g036gtem.js";export{d as sessionPlace,c as sessionMachine,e as createMachineEnrollmentTicketWithToken,f as ReasonApi,b as REASONING_EFFORTS,a as ApiError};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{v as a,w as b,x as c,y as d,z as e}from"./vm-hands-entry-lite-nhtb458c.js";import"./vm-hands-entry-lite-mh0xecf3.js";import"./vm-hands-entry-lite-3hbe4em3.js";import"./vm-hands-entry-lite-g9rvf5qk.js";import"./vm-hands-entry-lite-5kgvss4p.js";import"./vm-hands-entry-lite-r6pap1kh.js";import"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-hc3p6r9p.js";import"./vm-hands-entry-lite-g036gtem.js";export{d as resolveApiCredentials,e as requireApiCredentials,b as explicitApiOrigin,c as environmentApiKey,a as apiOriginFromEnvironment};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{e as a,f as b,g as c,h as d,i as e,j as f,k as g,l as h,m as i,n as j,o as k,p as l,q as m}from"./vm-hands-entry-lite-ynzy9k5z.js";import"./vm-hands-entry-lite-jb2sr2r7.js";import"./vm-hands-entry-lite-nhtb458c.js";import"./vm-hands-entry-lite-mh0xecf3.js";import"./vm-hands-entry-lite-sky5eg5d.js";import"./vm-hands-entry-lite-3hbe4em3.js";import"./vm-hands-entry-lite-bdp2578c.js";import"./vm-hands-entry-lite-zq42mcjc.js";import"./vm-hands-entry-lite-dcynw6t2.js";import"./vm-hands-entry-lite-sb9a1jcn.js";import"./vm-hands-entry-lite-anmv8hp7.js";import"./vm-hands-entry-lite-g9rvf5qk.js";import"./vm-hands-entry-lite-hh24bq0d.js";import"./vm-hands-entry-lite-00qsbphw.js";import"./vm-hands-entry-lite-439yqbn5.js";import"./vm-hands-entry-lite-g6912hkd.js";import"./vm-hands-entry-lite-1085xsma.js";import"./vm-hands-entry-lite-zfwg7ehq.js";import"./vm-hands-entry-lite-5q1q991e.js";import"./vm-hands-entry-lite-ze9msfq1.js";import"./vm-hands-entry-lite-dgxxsdwb.js";import"./vm-hands-entry-lite-zh8p7ndn.js";import"./vm-hands-entry-lite-za55dtte.js";import"./vm-hands-entry-lite-kxdw4myj.js";import"./vm-hands-entry-lite-5kgvss4p.js";import"./vm-hands-entry-lite-r6pap1kh.js";import"./vm-hands-entry-lite-8yy5ttfw.js";import"./vm-hands-entry-lite-4m40gwkf.js";import"./vm-hands-entry-lite-r8twmzjc.js";import"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-qyzgxd9g.js";import"./vm-hands-entry-lite-wf1ek4f0.js";import"./vm-hands-entry-lite-7shpbsw8.js";import"./vm-hands-entry-lite-hc3p6r9p.js";import"./vm-hands-entry-lite-bvbfcp1k.js";import"./vm-hands-entry-lite-j2q1k9vb.js";import"./vm-hands-entry-lite-g036gtem.js";export{g as runDisconnectCli,f as runConnectCli,m as restartConnectionWhenIdle,l as restartConnection,h as logoutConnection,k as connectionUsesUserChrome,i as connectionReport,j as connectionForBrowserExtension,c as connectionDirectory,d as computerDisconnected,e as addConnectionFolder,b as DISCONNECT_HELP,a as CONNECT_HELP};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Ag as a,Bg as b,Cg as c,Dg as d,Eg as e}from"./vm-hands-entry-lite-zh8p7ndn.js";import"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-g036gtem.js";export{b as passwdAccount,e as desktopHome,d as desktopAccount,c as configureDesktopAccount,a as DESKTOP_USER_ENV};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Jc as a,Kc as b,Lc as c,Mc as d,Nc as e,Oc as f,Pc as g,Qc as h,Rc as i}from"./vm-hands-entry-lite-anmv8hp7.js";import"./vm-hands-entry-lite-za55dtte.js";import"./vm-hands-entry-lite-4m40gwkf.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-g036gtem.js";export{e as selectCloudChildPath,a as REASON_HANDS_WORKER_VERSION,h as REASON_HANDS_WORKER_SOURCE,b as REASON_HANDS_WORKER_ENTRYPOINT,i as REASON_HANDS_WORKER_ARTIFACT_SHA256,f as REASON_HANDS_MAC_PTY_MEMBER_SOURCE,g as REASON_HANDS_LINUX_PTY_PROBE_SOURCE,d as REASON_HANDS_CLOUD_CHILD_PATH_MACOS,c as REASON_HANDS_CLOUD_CHILD_PATH_LINUX};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Ad as j,Bd as k,Cd as l,rd as a,sd as b,td as c,ud as d,vd as e,wd as f,xd as g,yd as h,zd as i}from"./vm-hands-entry-lite-439yqbn5.js";import"./vm-hands-entry-lite-g6912hkd.js";import"./vm-hands-entry-lite-1085xsma.js";import"./vm-hands-entry-lite-zfwg7ehq.js";import"./vm-hands-entry-lite-5q1q991e.js";import"./vm-hands-entry-lite-ze9msfq1.js";import"./vm-hands-entry-lite-dgxxsdwb.js";import"./vm-hands-entry-lite-zh8p7ndn.js";import"./vm-hands-entry-lite-za55dtte.js";import"./vm-hands-entry-lite-kxdw4myj.js";import"./vm-hands-entry-lite-5kgvss4p.js";import"./vm-hands-entry-lite-r6pap1kh.js";import"./vm-hands-entry-lite-8yy5ttfw.js";import"./vm-hands-entry-lite-4m40gwkf.js";import"./vm-hands-entry-lite-r8twmzjc.js";import"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-qyzgxd9g.js";import"./vm-hands-entry-lite-wf1ek4f0.js";import"./vm-hands-entry-lite-7shpbsw8.js";import"./vm-hands-entry-lite-hc3p6r9p.js";import"./vm-hands-entry-lite-bvbfcp1k.js";import"./vm-hands-entry-lite-j2q1k9vb.js";import"./vm-hands-entry-lite-g036gtem.js";export{d as runRelayed,e as runMacComputerUse,l as runLocalAutomation,k as runAutomationCallLocally,b as parseAutomationPayload,g as localUserChromeProfiles,h as localUserChromeInstance,f as localUserChromeHost,j as localBrowserProfile,c as localAutomationAvailable,i as ensureLocalBrowser,a as AUTOMATION_CHUNK_BYTES};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{$a as m,Ra as c,Sa as d,Ta as e,Ua as f,Va as g,Wa as h,Xa as i,Ya as j,Za as k,_a as l,ab as n,bb as o,cb as p,db as q,eb as r,fb as s,gb as t}from"./vm-hands-entry-lite-bdp2578c.js";import"./vm-hands-entry-lite-zq42mcjc.js";import"./vm-hands-entry-lite-dcynw6t2.js";import"./vm-hands-entry-lite-sb9a1jcn.js";import"./vm-hands-entry-lite-anmv8hp7.js";import"./vm-hands-entry-lite-g9rvf5qk.js";import"./vm-hands-entry-lite-hh24bq0d.js";import"./vm-hands-entry-lite-00qsbphw.js";import"./vm-hands-entry-lite-439yqbn5.js";import"./vm-hands-entry-lite-g6912hkd.js";import"./vm-hands-entry-lite-1085xsma.js";import"./vm-hands-entry-lite-zfwg7ehq.js";import"./vm-hands-entry-lite-5q1q991e.js";import"./vm-hands-entry-lite-ze9msfq1.js";import"./vm-hands-entry-lite-dgxxsdwb.js";import"./vm-hands-entry-lite-zh8p7ndn.js";import"./vm-hands-entry-lite-za55dtte.js";import"./vm-hands-entry-lite-kxdw4myj.js";import"./vm-hands-entry-lite-5kgvss4p.js";import"./vm-hands-entry-lite-r6pap1kh.js";import"./vm-hands-entry-lite-8yy5ttfw.js";import{Gi as b}from"./vm-hands-entry-lite-4m40gwkf.js";import"./vm-hands-entry-lite-r8twmzjc.js";import"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-qyzgxd9g.js";import"./vm-hands-entry-lite-wf1ek4f0.js";import"./vm-hands-entry-lite-7shpbsw8.js";import"./vm-hands-entry-lite-hc3p6r9p.js";import"./vm-hands-entry-lite-bvbfcp1k.js";import{bk as a}from"./vm-hands-entry-lite-j2q1k9vb.js";import"./vm-hands-entry-lite-g036gtem.js";export{g as spawnCaptured,f as sandboxProfile,e as safeEnvironment,j as runTransferCapability,i as runFileCapability,s as rebindLocalHandsControl,b as isProtectedLocalPath,t as executeLocalOperation,l as enrolledWorkspaceRootFingerprint,p as enrolledRootPaths,o as enrolledHomeContainedRootFingerprints,m as enrolledAccountRootPath,n as enrolledAccountRootFingerprint,r as deliverLocalHandsEnvironment,h as defaultLocalCommandRunner,d as confinedExecutionShell,q as capabilityInventoryForRoots,c as SHORT_REQUEST_CAPABILITIES,a as LocalCapabilityError,k as LOCAL_CAPABILITY_REGISTRY};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{$j as f,Wj as a,Xj as b,Yj as c,Zj as d,_j as e,ak as g}from"./vm-hands-entry-lite-bvbfcp1k.js";import"./vm-hands-entry-lite-j2q1k9vb.js";import"./vm-hands-entry-lite-g036gtem.js";export{f as trackDesktopRun,c as releaseLocalDesktop,a as noteLocalDesktopUse,g as holdLocalDesktop,b as forgetLocalDesktopUse,e as DESKTOP_WAIT_MS,d as DESKTOP_IDLE_MS};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Oj as a,Pj as b,Qj as c,Rj as d,Sj as e,Tj as f,Uj as g}from"./vm-hands-entry-lite-7shpbsw8.js";import"./vm-hands-entry-lite-j2q1k9vb.js";import"./vm-hands-entry-lite-g036gtem.js";export{c as requestMacScreenAccess,d as parseMacWindowBounds,a as parseMacScreenStatus,e as openMacWindowBounds,g as openMacInput,b as macScreenStatus,f as MacInputTranslator};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Tf as a,Uf as b,Vf as c,Wf as d,Xf as e,Yf as f,Zf as g,_f as h}from"./vm-hands-entry-lite-5q1q991e.js";import"./vm-hands-entry-lite-ze9msfq1.js";import"./vm-hands-entry-lite-dgxxsdwb.js";import"./vm-hands-entry-lite-zh8p7ndn.js";import"./vm-hands-entry-lite-za55dtte.js";import"./vm-hands-entry-lite-kxdw4myj.js";import"./vm-hands-entry-lite-5kgvss4p.js";import"./vm-hands-entry-lite-r6pap1kh.js";import"./vm-hands-entry-lite-8yy5ttfw.js";import"./vm-hands-entry-lite-4m40gwkf.js";import"./vm-hands-entry-lite-r8twmzjc.js";import"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-qyzgxd9g.js";import"./vm-hands-entry-lite-wf1ek4f0.js";import"./vm-hands-entry-lite-7shpbsw8.js";import"./vm-hands-entry-lite-hc3p6r9p.js";import"./vm-hands-entry-lite-bvbfcp1k.js";import"./vm-hands-entry-lite-j2q1k9vb.js";import"./vm-hands-entry-lite-g036gtem.js";export{h as runLocalDisplayStream,f as privateDirectory,c as parseDisplayStreamPayload,e as localDisplayReady,d as localDisplayAvailable,g as ensureLinuxDesktop,a as LOCAL_DISPLAY_MAX_SESSION_MS,b as LINUX_WORKER_DISPLAY};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{$f as a,ag as b,bg as c,cg as d,dg as e,eg as f,fg as g,gg as h,hg as i,ig as j}from"./vm-hands-entry-lite-ze9msfq1.js";import"./vm-hands-entry-lite-dgxxsdwb.js";import"./vm-hands-entry-lite-za55dtte.js";import"./vm-hands-entry-lite-kxdw4myj.js";import"./vm-hands-entry-lite-5kgvss4p.js";import"./vm-hands-entry-lite-r6pap1kh.js";import"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-hc3p6r9p.js";import"./vm-hands-entry-lite-j2q1k9vb.js";import"./vm-hands-entry-lite-g036gtem.js";export{j as runLocalPtySession,e as resolvePtyWorkingDirectory,g as ptyRuntimeSupported,d as parsePtyStartPayload,h as defaultSpawnPty,f as defaultLoginShell,i as defaultConnect,a as LOCAL_PTY_MAX_SESSION_MS,c as LOCAL_PTY_MAX_SESSIONS,b as LOCAL_PTY_MAX_BUFFERED_OUTPUT_BYTES};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{$ as D,L as n,M as o,N as p,O as q,P as r,Q as s,R as t,S as u,T as v,U as w,V as x,W as y,X as z,Y as A,Z as B,_ as C,aa as E,ba as F,ca as G,da as H,ea as I,fa as J,ga as K,ha as L,ia as M,ja as N,ka as O,la as P,ma as Q,na as R,oa as S,pa as T,qa as U,ra as V,sa as W,ta as X,ua as Y}from"./vm-hands-entry-lite-sky5eg5d.js";import"./vm-hands-entry-lite-hh24bq0d.js";import{Ih as a,Jh as b,Kh as c,Lh as d,Mh as e,Nh as f,Oh as g,Ph as h,Rh as i,Sh as j,Uh as k,Vh as l,Wh as m}from"./vm-hands-entry-lite-kxdw4myj.js";import"./vm-hands-entry-lite-r6pap1kh.js";import"./vm-hands-entry-lite-r8twmzjc.js";import"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-qyzgxd9g.js";import"./vm-hands-entry-lite-wf1ek4f0.js";import"./vm-hands-entry-lite-g036gtem.js";export{E as verifyManagedRuntimeCodeSignatures,m as verifyManagedRuntimeArtifact,H as updateManagedRuntime,l as sha256Hex,Q as rollbackManagedRuntime,R as recoverManagedRuntimeActivation,V as recordManagedRuntimeLifecycle,U as readManagedRuntimeLifecycleEvents,j as parseAndVerifyManagedRuntimeManifest,k as parseAndVerifyLegacyManagedRuntimeManifest,z as managedRuntimeVersionPath,C as managedRuntimeTarget,K as managedRuntimePointerVersion,x as managedRuntimePaths,O as managedRuntimeExecutableVersion,A as managedRuntimeCredentialLibraryPath,h as managedRuntimeCredentialLibraryAssetName,g as managedRuntimeAssetName,y as legacyManagedRuntimePaths,N as isManagedRuntimeVersionExecutable,M as isManagedRuntimeExecutable,J as installManagedRuntimeLauncher,I as installManagedRuntimeArtifact,X as flushManagedRuntimeLifecycleEvents,F as fetchManagedRuntimeBytes,G as defaultManagedRuntimeHealthCheck,L as currentManagedRuntimeVersion,B as compareManagedRuntimeVersions,i as canonicalJson,Y as bootstrapManagedRuntime,D as assertManagedRuntimeSignatureEvidence,P as activateManagedRuntime,T as acquireManagedRuntimeLock,S as acquireManagedRuntimeDirectoryLock,W as acknowledgeManagedRuntimeLifecycleEvents,f as ManagedRuntimeError,v as MANAGED_RUNTIME_UPDATE_HEALTH_TIMEOUT_MS,e as MANAGED_RUNTIME_TARGETS,d as MANAGED_RUNTIME_MAX_MANIFEST_BYTES,p as MANAGED_RUNTIME_MAX_LIFECYCLE_EVENTS,q as MANAGED_RUNTIME_MAX_LIFECYCLE_BYTES,c as MANAGED_RUNTIME_MAX_ARTIFACT_BYTES,b as MANAGED_RUNTIME_MANIFEST_VERSION,r as MANAGED_RUNTIME_MANIFEST_URL,o as MANAGED_RUNTIME_LIFECYCLE_VERSION,w as MANAGED_RUNTIME_LIFECYCLE_EVENTS,n as MANAGED_RUNTIME_LAYOUT_VERSION,u as MANAGED_RUNTIME_HEALTH_TIMEOUT_MS,s as MANAGED_RUNTIME_FETCH_TIMEOUT_MS,t as MANAGED_RUNTIME_ARTIFACT_FETCH_TIMEOUT_MS,a as LEGACY_MANAGED_RUNTIME_MANIFEST_VERSION};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Ai as i,Bi as j,si as a,ti as b,ui as c,vi as d,wi as e,xi as f,yi as g,zi as h}from"./vm-hands-entry-lite-8yy5ttfw.js";import"./vm-hands-entry-lite-4m40gwkf.js";import"./vm-hands-entry-lite-r8twmzjc.js";import"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-qyzgxd9g.js";import"./vm-hands-entry-lite-wf1ek4f0.js";import"./vm-hands-entry-lite-7shpbsw8.js";import"./vm-hands-entry-lite-j2q1k9vb.js";import"./vm-hands-entry-lite-g036gtem.js";export{j as runPermissionsCli,d as reasonIdentity,e as readMacPermissions,f as permissionsSummary,i as parsePermissionsArgs,c as fullDiskAccessTarget,g as formatMacPermissions,h as allowMacPermissions,a as PERMISSIONS_HELP,b as MAC_PERMISSION_IDS};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Dd as a,Ed as b,Fd as c,Gd as d,Hd as e,Id as f,Jd as g,Kd as h,Ld as i,Md as j,Nd as k,Od as l,Pd as m,Qd as n,Rd as o,Sd as p,Td as q,Ud as r}from"./vm-hands-entry-lite-g6912hkd.js";import"./vm-hands-entry-lite-1085xsma.js";import"./vm-hands-entry-lite-5kgvss4p.js";import"./vm-hands-entry-lite-r6pap1kh.js";import"./vm-hands-entry-lite-r8twmzjc.js";import"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import"./vm-hands-entry-lite-qyzgxd9g.js";import"./vm-hands-entry-lite-wf1ek4f0.js";import"./vm-hands-entry-lite-g036gtem.js";export{g as workerServiceRetargetPending,f as workerServiceProgram,m as workerServiceProcessRunning,e as workerServiceLauncher,j as workerServiceDefinitions,n as workerServiceDefinitionCurrent,l as retireLegacyWorkerService,q as retargetWorkerServiceLogs,p as restartWorkerService,r as removeWorkerService,i as isConnectServiceLabel,k as installedWorkerService,o as installWorkerService,c as defaultWorkerServiceHost,h as connectServiceLabel,d as WorkerServiceError,a as WORKER_SERVICE_ENV,b as WORKER_IDENTITY_UNAVAILABLE_CODE};
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{a as jq,b as Dq,c as Vq,d as kq,g as Hq,h as zq,m as Aq}from"./vm-hands-entry-lite-ynzy9k5z.js";import"./vm-hands-entry-lite-jb2sr2r7.js";import{y as Fq}from"./vm-hands-entry-lite-nhtb458c.js";import{A as Wq,K as bq}from"./vm-hands-entry-lite-mh0xecf3.js";import"./vm-hands-entry-lite-sky5eg5d.js";import"./vm-hands-entry-lite-3hbe4em3.js";import"./vm-hands-entry-lite-bdp2578c.js";import"./vm-hands-entry-lite-zq42mcjc.js";import"./vm-hands-entry-lite-dcynw6t2.js";import"./vm-hands-entry-lite-sb9a1jcn.js";import"./vm-hands-entry-lite-anmv8hp7.js";import"./vm-hands-entry-lite-g9rvf5qk.js";import"./vm-hands-entry-lite-hh24bq0d.js";import"./vm-hands-entry-lite-00qsbphw.js";import"./vm-hands-entry-lite-439yqbn5.js";import"./vm-hands-entry-lite-g6912hkd.js";import{fe as Kq}from"./vm-hands-entry-lite-1085xsma.js";import"./vm-hands-entry-lite-zfwg7ehq.js";import"./vm-hands-entry-lite-5q1q991e.js";import"./vm-hands-entry-lite-ze9msfq1.js";import{qg as Qq,vg as Bq}from"./vm-hands-entry-lite-dgxxsdwb.js";import"./vm-hands-entry-lite-zh8p7ndn.js";import"./vm-hands-entry-lite-za55dtte.js";import"./vm-hands-entry-lite-kxdw4myj.js";import{$h as u,Zh as z,ai as s}from"./vm-hands-entry-lite-5kgvss4p.js";import"./vm-hands-entry-lite-r6pap1kh.js";import"./vm-hands-entry-lite-8yy5ttfw.js";import"./vm-hands-entry-lite-4m40gwkf.js";import"./vm-hands-entry-lite-r8twmzjc.js";import{Yi as l}from"./vm-hands-entry-lite-c01eyep6.js";import"./vm-hands-entry-lite-9cgm6g8t.js";import{wj as N}from"./vm-hands-entry-lite-qyzgxd9g.js";import"./vm-hands-entry-lite-wf1ek4f0.js";import"./vm-hands-entry-lite-7shpbsw8.js";import{Vj as G}from"./vm-hands-entry-lite-hc3p6r9p.js";import"./vm-hands-entry-lite-bvbfcp1k.js";import"./vm-hands-entry-lite-j2q1k9vb.js";import{hk as $q}from"./vm-hands-entry-lite-g036gtem.js";import{createHash as aq,randomBytes as nq}from"crypto";import{readFileSync as eq,realpathSync as Pq,renameSync as q3,unlinkSync as x3,writeFileSync as J3}from"fs";import{dirname as X3,join as yq}from"path";import{spawnSync as wq}from"child_process";import{accessSync as Lq,constants as fq,existsSync as L,mkdirSync as Sq,readFileSync as hq,renameSync as Cq,writeFileSync as gq}from"fs";import{homedir as mq}from"os";import{delimiter as pq,dirname as dq,join as T}from"path";import{existsSync as vq,readFileSync as Eq}from"fs";import{join as Mq}from"path";var _q=`---
|
|
3
|
-
name: reason
|
|
4
|
-
description: Integrate software with Reason's public REST API using a scoped API key. Use for API clients, CI, service integrations, or cloud coding-session automation.
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Reason API
|
|
8
|
-
|
|
9
|
-
Reason integrations use the public REST API. Public customer MCP is retired.
|
|
10
|
-
|
|
11
|
-
Base URL: \`https://api.reasonmachines.com/v3\`
|
|
12
|
-
|
|
13
|
-
- API quickstart: \`https://docs.reasonmachines.com/api-quickstart\`
|
|
14
|
-
- Endpoint reference: \`https://docs.reasonmachines.com/api-reference\`
|
|
15
|
-
|
|
16
|
-
## Authentication and scope
|
|
17
|
-
|
|
18
|
-
1. Create a least-privilege \`ara_\` key in Reason Settings \u2192 Developers (the Code
|
|
19
|
-
/ API keys picker) and keep it only in the calling service or CI secret
|
|
20
|
-
manager. Never
|
|
21
|
-
put it in source, prompts, logs, generated files, or a repository
|
|
22
|
-
environment file. A new key from that picker includes the ordinary public
|
|
23
|
-
scopes for session, skill, repo, and org reads.
|
|
24
|
-
2. Send it as \`Authorization: Bearer <api-key>\`. Call \`GET /v3/self\` first
|
|
25
|
-
to resolve the key's organization before reading or mutating resources.
|
|
26
|
-
3. Request only the scopes needed by the integration. Treat secret values as
|
|
27
|
-
write-only and never expose them in API responses or diagnostics.
|
|
28
|
-
4. Use the endpoint reference as the source of truth for request/response
|
|
29
|
-
shapes, pagination, and error handling. Do not recreate an old MCP client,
|
|
30
|
-
route, OAuth flow, or plugin configuration. Do not connect to the retired
|
|
31
|
-
public MCP transport.
|
|
32
|
-
|
|
33
|
-
## Session automation
|
|
34
|
-
|
|
35
|
-
- Create and monitor sessions through the documented \`/v3/organizations/:orgId/
|
|
36
|
-
sessions\` endpoints. Return the session URL or identifier to the caller, then
|
|
37
|
-
poll or stream only as the API reference specifies.
|
|
38
|
-
- Omit \`hands_mode\` for adaptive lazy Hands, or set it to \`brain_only\` when
|
|
39
|
-
physical execution must remain permanently disabled for that Conversation.
|
|
40
|
-
- Keep API work idempotent where the endpoint supports it, and surface failed
|
|
41
|
-
mutations rather than retrying destructive operations blindly.
|
|
42
|
-
- Scope every request to the intended organization and repository. Do not infer
|
|
43
|
-
authority from a repository name or an untrusted task payload.
|
|
44
|
-
`;function m(q){return Mq(q,".agents","skills","ara","SKILL.md")}function i(q){let J=m(q);return vq(J)&&Eq(J,"utf8")===_q}var p=["codex","claude","cursor"],r={codex:"Codex",claude:"Claude Code",cursor:"Cursor"};function uq(q,J=process.env){let x=J.PATH??"";for(let X of x.split(pq)){if(!X)continue;try{return Lq(T(X,q),fq.X_OK),!0}catch{}}return!1}function lq(){return{exists:uq,run(q,J,x={}){let X=x.interactive===!0,Y=wq(q,J,{encoding:"utf8",env:process.env,stdio:X?"inherit":"pipe"});return{status:Y.status??1,stdout:X?"":Y.stdout??"",stderr:X?Y.error?.message??"":`${Y.stderr??""}${Y.error?`${Y.error.message}
|
|
45
|
-
`:""}`}}}}function O(q){return`${q.stdout}
|
|
46
|
-
${q.stderr}`}function k(q){return q.status===0}function R(q,J,x,X={}){let Y=q.run(J,x,X);if(k(Y))return Y;let $=O(Y).trim();throw Error(`${J} ${x.join(" ")} failed${$?`: ${$}`:` with exit code ${Y.status}`}`)}function cq(q=process.env){return s(z({env:q}))}function d(q,J){return q.split(/\s+/).some((x)=>a(x,J))}function w(q){return T(q,".cursor","mcp.json")}function t(q){if(!L(q))return{};try{let J=JSON.parse(hq(q,"utf8"));if(!J||typeof J!=="object"||Array.isArray(J))throw Error("top-level value must be an object");return J}catch(J){let x=J instanceof Error?J.message:String(J);throw Error(`Cursor MCP config at ${q} is invalid; refusing to overwrite it (${x})`)}}function oq(q,J){Sq(dq(q),{recursive:!0,mode:448});let x=`${q}.ara-${process.pid}.tmp`;gq(x,`${JSON.stringify(J,null,2)}
|
|
47
|
-
`,{mode:384}),Cq(x,q)}function a(q,J){if(typeof q!=="string")return!1;if(q===J)return!0;try{let x=new URL(q);return["https://api.ara.so","https://api-staging.ara.so","https://api.reasonmachines.ai","https://staging-api.reasonmachines.ai","https://api.reasonmachines.com","https://staging-api.reasonmachines.com"].includes(x.origin)&&!x.username&&!x.password&&x.pathname==="/mcp/ara"&&!x.search&&!x.hash}catch{return!1}}function iq(q,J){let x=q.mcpServers?.ara;return Boolean(x&&typeof x==="object"&&!Array.isArray(x)&&a(x.url,J))}class f{runner;home;mcpUrl;constructor(q=lq(),J=mq(),x=cq()){this.runner=q;this.home=J;this.mcpUrl=x}isAvailable(q){if(q==="codex")return this.runner.exists("codex");if(q==="claude")return this.runner.exists("claude");return this.runner.exists("cursor")||L("/Applications/Cursor.app")||L(T(this.home,"Applications","Cursor.app"))||L(w(this.home))}availableClients(){return p.filter((q)=>this.isAvailable(q))}installationPath(q){if(q==="cursor")return w(this.home);if(q==="codex")return T(this.home,".codex","plugins","cache","ara");return T(this.home,".claude","plugins","cache","ara")}sharedSkillStatus(){return{installed:i(this.home),path:m(this.home)}}status(q){let J=r[q];if(!this.isAvailable(q))return{id:q,label:J,available:!1,installed:!1,connection:null,detail:"Client not detected",legacyInstallations:[]};if(q==="cursor"){let B=w(this.home),V=iq(t(B),this.mcpUrl);return{id:q,label:J,available:!0,installed:V,connection:V?"configured":null,detail:V?`Retired Reason MCP configuration in ${B}`:`No retired Reason MCP configuration in ${B}`,legacyInstallations:[]}}if(q==="codex"){let B=this.runner.run("codex",["plugin","list"]);if(!(k(B)&&O(B).includes("ara@ara")))return{id:q,label:J,available:!0,installed:!1,connection:null,detail:"No retired Reason plugin installed",legacyInstallations:[]};let P=this.runner.run("codex",["mcp","list"]),Q=O(P).split(/\r?\n/).find((E)=>E.trimStart().startsWith("ara ")&&d(E,this.mcpUrl)),h=k(P)&&Boolean(Q),v=!k(P)?"error":Q?.includes("Not logged in")?"not_logged_in":Q?.includes("OAuth")?"oauth":Q?"configured":"unknown";return{id:q,label:J,available:!0,installed:h,connection:v,detail:Q?.trim()||"The retired Reason plugin is installed but has no verified retired MCP registration",legacyInstallations:[]}}let x=this.runner.run("claude",["plugin","list"]),X=O(x),Y=k(x)&&X.includes("ara@ara"),$=k(x)&&X.includes("ara-handoff@ara");if(!Y&&!$)return{id:q,label:J,available:!0,installed:!1,connection:null,detail:"No retired Reason plugin installed",legacyInstallations:[]};let b=this.runner.run("claude",["mcp","list"]),j=O(b),F=j.split(/\r?\n/).find((B)=>B.includes("plugin:ara:ara")&&d(B,this.mcpUrl)),K=j.split(/\r?\n/).find((B)=>B.includes("plugin:ara-handoff:ara")&&d(B,this.mcpUrl)),U=k(b)&&Boolean(F),D=k(b)&&K?["ara-handoff@ara"]:[],S=!k(b)?"error":F?.includes("Connected")?"connected":F?.includes("Failed")?"error":F?"configured":"unknown";return{id:q,label:J,available:!0,installed:U,connection:S,detail:F?.trim()||"The retired Reason plugin is installed but has no verified retired MCP registration",legacyInstallations:D}}statuses(){return p.map((q)=>this.status(q))}logout(q){let J=this.status(q);if(!J.available||!J.installed)return`${J.label}: not connected`;if(q==="cursor")return this.uninstall("cursor").replace("removed retired Reason","signed out and removed retired Reason");if(q==="codex")return R(this.runner,"codex",["mcp","logout","ara"]),"Codex: signed out of Reason";return R(this.runner,"claude",["mcp","logout","plugin:ara:ara"]),"Claude Code: signed out of Reason"}uninstall(q){let J=this.status(q);if(!J.available||!J.installed)return`${J.label}: Reason is not installed`;if(q==="cursor"){let x=w(this.home),X=t(x),Y={...X.mcpServers??{}};return delete Y.ara,X.mcpServers=Y,oq(x,X),`Cursor: removed retired Reason MCP from ${x}`}if(q==="codex")return R(this.runner,"codex",["plugin","remove","ara@ara"]),"Codex: removed retired ara@ara";return R(this.runner,"claude",["plugin","uninstall","ara@ara","--scope","user"]),"Claude Code: removed retired ara@ara"}removeLegacyClaudePlugin(){if(!this.runner.exists("claude"))return"Claude Code: not installed";if(!this.status("claude").legacyInstallations.includes("ara-handoff@ara"))return"Claude Code: no legacy Reason plugin found";return R(this.runner,"claude",["plugin","uninstall","ara-handoff@ara","--scope","user"]),"Claude Code: removed obsolete ara-handoff@ara"}removeRetiredInstallations(){let q=[],J=[];for(let x of p){let X;try{X=this.status(x)}catch(Y){J.push(`${r[x]}: ${Y instanceof Error?Y.message:String(Y)}`);continue}if(X.installed){if(x!=="cursor")try{q.push(this.logout(x))}catch(Y){J.push(`${X.label}: ${Y instanceof Error?Y.message:String(Y)}`)}try{q.push(this.uninstall(x))}catch(Y){J.push(`${X.label}: ${Y instanceof Error?Y.message:String(Y)}`)}}if(x==="claude"&&X.legacyInstallations.includes("ara-handoff@ara"))try{q.push(this.removeLegacyClaudePlugin())}catch(Y){J.push(`${X.label}: ${Y instanceof Error?Y.message:String(Y)}`)}}if(q.length===0&&J.length===0)q.push("No retired Reason MCP configuration found.");return{messages:q,failures:J}}}function n(q){return`claude mcp add --transport http reason ${q}`}function e(q){return`codex mcp add reason --url ${q}
|
|
48
|
-
codex mcp login reason`}var N3=n("https://mcp.reasonmachines.com/mcp"),I3=e("https://mcp.reasonmachines.com/mcp"),R3=`https://claude.ai/settings/connectors?add=custom&url=${encodeURIComponent("https://mcp.reasonmachines.com/mcp")}`,O3=`https://cursor.com/install-mcp?name=reason&config=${encodeURIComponent(btoa(JSON.stringify({url:"https://mcp.reasonmachines.com/mcp"})))}`;var rq="https://github.com/reason-machines/reason-plugins",_3=`Connect a coding agent to Reason over MCP
|
|
49
|
-
|
|
50
|
-
Usage:
|
|
51
|
-
reason mcp Show how to connect Claude Code, Codex, or another MCP client
|
|
52
|
-
reason mcp uninstall Remove only this machine's registrations of the earlier, retired server
|
|
53
|
-
|
|
54
|
-
Plugins for Claude Code and Codex: ${rq}
|
|
55
|
-
`;function qq(q){if(!q.available)return"not detected";if(q.installed||q.legacyInstallations.length>0)return"retired configuration";return"not installed"}function tq(q,J){let x=J.toLowerCase();if(q==="codex")return x.includes("codex");if(q==="claude")return x.includes("claude");return x.includes("cursor")}function xq(q,J){return(J.mcp_connections??[]).filter((X)=>tq(q.id,X.client_name)).flatMap((X)=>X.last_used_at?[X.last_used_at]:[]).sort().at(-1)??null}function Jq(q,J=new Date){if(!q)return"never";let x=Date.parse(q);if(!Number.isFinite(x))return"never";let X=Math.max(0,Math.floor((J.getTime()-x)/1000));if(X<45)return"just now";let Y=Math.floor(X/60);if(Y<60)return`${Y} ${Y===1?"minute":"minutes"} ago`;let $=Math.floor(Y/60);if($<24)return`${$} ${$===1?"hour":"hours"} ago`;let b=Math.floor($/24);return`${b} ${b===1?"day":"days"} ago`}function Xq(q){let J=q.name?.trim(),x=q.email?.trim();if(J&&x)return`${J} (${x})`;return J||x||q.id||"Reason user"}function Yq(q){let J=q.name?.trim(),x=q.slug?.trim();if(J&&x)return`${J} (${x})`;return J||x||q.id}var sq=G.enum(["granted","not_granted","unknown"]),Zq=G.object({status:sq,checkedAt:G.number().finite(),executablePath:G.string().min(1)});var Y3=`Reason status
|
|
56
|
-
|
|
57
|
-
Usage:
|
|
58
|
-
reason status [--json]
|
|
59
|
-
|
|
60
|
-
Show the installed version, signed-in account and organization, this
|
|
61
|
-
computer's connection (\`reason connect\`) and the workspaces it serves, any
|
|
62
|
-
retired MCP configuration that can be cleaned up, and automatic updates.
|
|
63
|
-
`,Z3=5000,$3=300000,G3=G.object({version:G.literal(1),key:G.string(),at:G.number(),self:G.object({principal_type:G.string(),user_id:G.string().optional(),user_name:G.string().nullish(),email:G.string().nullish(),org_id:G.string(),organization_name:G.string().nullish(),organization_slug:G.string().nullish(),mcp_connections:G.array(G.object({client_id:G.string(),client_name:G.string(),last_used_at:G.string().nullable()})).optional()})}),Nq=(q)=>`${q.apiOrigin}
|
|
64
|
-
${aq("sha256").update(q.accessToken).digest("hex")}`;function Q3(q,J,x){try{let X=G3.safeParse(JSON.parse(eq(q,"utf8")));if(!X.success||X.data.key!==Nq(J))return null;let Y=x-X.data.at;return Y>=0&&Y<$3?X.data.self:null}catch{return null}}function B3(q,J,x,X){let Y=`${q}.${process.pid}.${nq(6).toString("hex")}.tmp`;try{let $={version:1,key:Nq(J),at:X,self:x};J3(Y,`${JSON.stringify($)}
|
|
65
|
-
`,{mode:384,flag:"wx"}),q3(Y,q)}catch{try{x3(Y)}catch{}}}var W3=30000;function b3(q,J=Date.now(),x=null){let X=Bq(q),Y=(()=>{if(X?.state!=="connected"&&X?.state!=="starting")return!1;try{return process.kill(X.pid,0),!0}catch{return!1}})(),$=Y&&X?.state==="connected",b=(K)=>$&&J-K>=0&&J-K<W3,j=Zq.safeParse(X?.fullDiskAccess),F=Qq(X,x,J);return{...F?{permission_recovery:F}:{},full_disk_access:j.success&&b(j.data.checkedAt)?j.data.status:"unknown",keep_awake:{enabled:Vq(q)==="battery_and_ac",holding:X?.idleSleepHold===!0&&b(Date.parse(X.lastHeartbeatAt??""))},executable:Y&&j.success?j.data.executablePath:null}}function F3(q=z()){if(process.platform!=="darwin")return null;let J=kq(yq(Hq(Pq(l()),q),"worker.json"));return J?b3(jq(J).daemon,Date.now(),Dq(J)):null}var Gq={connected:"connected",starting:"starting",reconnecting:"reconnecting",stopping:"stopping",not_running:"not running",removed:"removed from Reason (run `reason connect` to connect it again)"};async function X1(q,J={}){let x=J.io??{stdout:process.stdout,stderr:process.stderr};if(q.includes("--help")||q.includes("-h"))return x.stdout.write(Y3),0;if(q.some(($)=>$!=="--json"))return x.stderr.write(`Usage: reason status [--json]
|
|
66
|
-
`),1;let X=new AbortController,Y=setTimeout(()=>X.abort(Error("timed out reading the account")),Z3);try{let $=J.now?.()??new Date,b=performance.now(),j=b,F=()=>{let Z=performance.now(),H=Math.round(Z-j);return j=Z,H},K=null,U=(Z)=>{return K=Z instanceof Error?Z.message:String(Z),null},D=await Fq(J,X.signal).catch(U),S=F(),B=D?.credentialKind==="api_key",V=D&&!B?yq(X3(Wq(J.env??process.env)),"status-account.json"):null,P=D&&V&&q.includes("--json")?Q3(V,D,$.getTime()):null,Q=P??(D?await(J.getSelf??((Z,H)=>new bq(Z).self(H)))(D,X.signal).catch(U):null);if(D&&Q&&!P&&V)B3(V,D,Q,$.getTime());let h=F(),v=J.manager??new f,E=q.includes("--json")?[]:v.statuses(),M=(J.loadReceipt??Kq)(),_=await(J.readConnection??(()=>Aq({channel:J.channel})))().catch(()=>null),A=null;try{if(_)A=(J.readConnectionMacState??(()=>F3(J.channel??z())))()}catch{}let W=_&&A?{..._,...A}:_,C=(()=>{try{return(J.readDisconnected??(()=>zq(Pq(l()),J.channel??z())))()}catch{return!1}})(),Iq=F(),c=Q?{id:Q.org_id,name:Q.organization_name??null,slug:Q.organization_slug??null}:null,I=Q?{id:Q.user_id??null,name:(B?Q.service_user_name:Q.user_name)??null,email:Q.email??null,credential:B?"api_key":"login"}:null,g=J.channel??z(),y={version:N,channel:g,api_origin:D?.apiOrigin??u(g),account:I,account_error:K,organization:c,mcp:E.map((Z)=>({client:Z.id,label:Z.label,status:qq(Z),installed_at:Z.installed?v.installationPath(Z.id):null,last_used_at:Q?xq(Z,Q):null})),connection:W,disconnected:C,installation:M?{background_mode:M.background_mode,automatic_updates:M.background_mode!=="cli_only",future_device_consent:M.device_consent?.decision??"disabled"}:null,timings_ms:{process:Math.round(b),credentials:S,account:h,local:Iq,total:Math.round(performance.now()-b)}};if(q.includes("--json"))return x.stdout.write(`${JSON.stringify(y,null,2)}
|
|
67
|
-
`),0;if(g==="staging")x.stdout.write(`Reason ${N} \xB7 channel: STAGING
|
|
68
|
-
`),x.stdout.write(`API: ${y.api_origin}
|
|
69
|
-
`);else x.stdout.write(`Reason ${N}
|
|
70
|
-
`);if(I)x.stdout.write(B?`Account: API key (REASON_API_KEY)${I.name?`: ${I.name}`:""}
|
|
71
|
-
`:`Account: ${Xq(I)}
|
|
72
|
-
`),x.stdout.write(`Organization: ${Yq(c)}
|
|
73
|
-
`);else if(K)x.stdout.write(`Account: unavailable (${K})
|
|
74
|
-
`);else x.stdout.write(`Account: signed out
|
|
75
|
-
`),x.stdout.write(`Organization: none
|
|
76
|
-
`);if(x.stdout.write(`
|
|
77
|
-
This computer
|
|
78
|
-
`),!W)x.stdout.write(C?"Disconnected. Run `reason connect` to connect it again.\n":"Not connected. Run `reason connect` to run your Sessions here.\n");else{if(x.stdout.write(`Connection: ${Gq[W.state]} (${W.name})${C?", disconnected (run `reason connect` to connect it again)":""}
|
|
79
|
-
`),W.version)x.stdout.write(`Version: ${W.version}${W.version===N?"":` (${N} is installed; \`reason connect\` restarts it on that)`}
|
|
80
|
-
`);if(x.stdout.write(`Folder: ${W.folder}
|
|
81
|
-
`),x.stdout.write(`Sessions: ${W.sessions_running===null?"":`${W.sessions_running} running, `}${W.sessions_max===null?"every Session you start":W.sessions_max===1?"one at a time":`up to ${W.sessions_max} at once`}
|
|
82
|
-
`),A){let Z=A,H=await(J.readPermissionsSummary??(async()=>{let{permissionsSummary:Rq,readMacPermissions:Oq,reasonIdentity:Tq}=await import("./permissions-bfwdxyr5.js"),{macScreenStatus:Uq}=await import("./local-display-mac-v1pc7177.js");return Rq(await Oq({identity:()=>Tq(),grants:Uq,worker:async()=>Z}))}))().catch(()=>null);if(H)x.stdout.write(`${H}
|
|
83
|
-
`);x.stdout.write(`Keep awake: ${A.keep_awake.enabled?"on":"off"}${A.keep_awake.holding?" (holding)":""}
|
|
84
|
-
`)}if(W.service)x.stdout.write(`Logs: ${W.service.logs}
|
|
85
|
-
`);for(let Z of W.workspaces??[]){let H=Z.state==="removed"?"removed from that workspace":Z.blocked?"offline (this computer is outside that workspace's allowed networks)":Z.device_id?Gq[Z.state]:"connecting";x.stdout.write(`Also in workspace ${Z.name??Z.organization_id}${Z.account?" (another Reason account's)":""}: ${H}
|
|
86
|
-
`)}if(W.workspaces_off==="sign_in")x.stdout.write("Other workspaces: off. This computer's sign-in is not one the Reason app or the setup command\n Reason shows you made for it (or that sign-in ended, or it is in use on another computer), so it is\n connected in one workspace only. Run the setup command from Reason here (it ends in --pair CODE);\n if this computer was connected before that, run `reason disconnect` and `reason connect` once.\n")}let o=y.mcp.filter((Z)=>Z.installed_at||Z.status!=="not installed");if(o.length>0)x.stdout.write(`
|
|
87
|
-
Retired MCP configuration
|
|
88
|
-
`);for(let Z of o)if(x.stdout.write(`${Z.label}: ${Z.status}
|
|
89
|
-
`),Z.installed_at)x.stdout.write(` Installed: ${Z.installed_at}
|
|
90
|
-
`),x.stdout.write(` Last used: ${Jq(Z.last_used_at,$)}
|
|
91
|
-
`);if(y.mcp.some((Z)=>Z.status==="retired configuration"))x.stdout.write("Run `reason mcp uninstall` to remove only the retired Reason MCP registrations.\n");if(x.stdout.write(`
|
|
92
|
-
Background access
|
|
93
|
-
`),!y.installation)x.stdout.write(`Not managed by the Reason installer
|
|
94
|
-
`);else x.stdout.write(`Automatic updates: ${y.installation.automatic_updates?"enabled":"disabled"}
|
|
95
|
-
`);return 0}catch($){return x.stderr.write(`Reason status: ${$ instanceof Error?$.message:String($)}
|
|
96
|
-
`),1}finally{clearTimeout(Y)}}export{b3 as workerMacState,X1 as runStatusCli,F3 as connectionMacState,Y3 as STATUS_HELP};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Yh as A,Zh as w,_h as c,hi as x}from"./vm-hands-entry-lite-5kgvss4p.js";import{ni as l}from"./vm-hands-entry-lite-r6pap1kh.js";import{randomUUID as y}from"crypto";import{chmodSync as o,existsSync as u,mkdirSync as jJ,readlinkSync as YJ,readFileSync as GJ,renameSync as OJ,unlinkSync as VJ,writeFileSync as FJ}from"fs";import{homedir as m}from"os";import{basename as P,dirname as H,isAbsolute as d,join as I,normalize as p,relative as HJ,resolve as LJ}from"path";import{unlinkSync as WJ}from"fs";import{dirname as XJ,join as ZJ}from"path";function $J(J){return ZJ(XJ(J),"future-device-grant.json")}function s(J){try{WJ($J(J))}catch(Q){if(!(Q instanceof Error&&("code"in Q)&&Q.code==="ENOENT"))throw Q}}var N=3,NJ=1,TJ=2,K=1,n=1,a="Reason may read and write files and run commands in this signed-in OS account, subject to saved restrictions and operating system permissions.",b="Reason may later execute on this computer inside a Reason sandbox, limited to folders explicitly attached by the user.",zJ=[b,"Ara may later execute on this computer inside an Ara sandbox, limited to folders explicitly attached by the user."];function r(J){return typeof J==="string"&&zJ.includes(J)}var BJ=["future_device","updates_only","cli_only"];function v(J){return typeof J==="string"&&BJ.some((Q)=>Q===J)}function SJ(J=process.env,Q=m()){return J.XDG_CONFIG_HOME?.trim()||I(Q,".config")}function D(J=process.env,Q=m()){let U=w({env:J}),W=SJ(J,Q);return I(W,x(W).state==="kept"?"ara":"reason",...U==="staging"?["staging"]:[],"installation.json")}function Y(J){return typeof J==="string"&&J.trim().length>0}var _J=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function IJ(J){return typeof J==="string"&&_J.test(J)}function C(J){return Y(J)&&d(J)&&p(J)===J}function i(J){if(!J||typeof J!=="object"||Array.isArray(J))return!1;let Q=J;return C(Q.path)&&(Q.role==="launcher"&&(Q.kind==="file"||Q.kind==="symlink")||Q.role==="worker_root"&&Q.kind==="directory"||Q.role==="alias"&&Q.kind==="symlink"&&C(Q.target))}function h(J){return J.owned_paths?.every((Q)=>Q.role!=="alias"||J.installer==="shell"&&Q.path===I(J.install_dir,J.channel==="staging"?"reason-staging":"reason")&&Q.target===I(J.install_dir,J.channel==="staging"?"ara-staging":"ara")&&J.owned_paths?.some((U)=>U.role==="launcher"&&U.path===Q.target))??!1}function t(J,Q){try{return LJ(H(J),YJ(J))===Q}catch{return!1}}function vJ(J){let Q=P(J),U=Q==="ara"?"reason":Q==="ara-staging"?"reason-staging":null;if(!U)return J;let W=I(H(J),U);return t(W,J)?W:J}function M(J,Q){let U=HJ(J,Q);return U.length>0&&!U.startsWith("..")&&!d(U)}function e(J){if(J===null)return!0;if(!J||typeof J!=="object"||Array.isArray(J))return!1;let Q=J;return Q.kind==="shell_profile"&&Y(Q.location)&&Y(Q.value)&&(typeof Q.added_by_installer==="boolean"||typeof Q.added_by_ara==="boolean")&&(Q.added_by_installer===void 0||typeof Q.added_by_installer==="boolean")&&(Q.added_by_ara===void 0||typeof Q.added_by_ara==="boolean")}function q(J){return J.added_by_installer??J.added_by_ara??!1}function JJ(J,Q){if(Q===null)return J==="cli_only";if(!Q||typeof Q!=="object"||Array.isArray(Q))return!1;let U=Q;if(U.version!==K||!Y(U.recorded_at))return!1;if(J==="future_device")return U.decision==="authorized"&&r(U.scope);return U.scope===null&&U.decision===(J==="updates_only"?"ask":"disabled")}function AJ(J){if(!J||typeof J!=="object"||Array.isArray(J))return null;let Q=J;if(Q.schema_version!==NJ||!A.includes(Q.channel)||Q.install_method!=="curl"||Q.installer!=="shell"||!Y(Q.installed_at)||!Y(Q.version)||!Y(Q.target)||!C(Q.install_dir)||!Array.isArray(Q.owned_paths)||!Q.owned_paths.every(i)||!Q.owned_paths.every((U)=>M(Q.install_dir,U.path))||!h(Q)||!e(Q.path_entry))return null;return{...Q,schema_version:N,installation_id:null,background_mode:"cli_only",device_consent:null}}function KJ(J){if(!J||typeof J!=="object"||Array.isArray(J))return null;let Q=J;if(Q.schema_version!==TJ||!QJ(Q)||!v(Q.background_mode)||!JJ(Q.background_mode,Q.device_consent))return null;return{...Q,schema_version:N,installation_id:null}}function QJ(J){return A.includes(J.channel)&&(J.install_method==="curl"&&J.installer==="shell"||J.install_method==="desktop"&&J.installer==="desktop"&&Array.isArray(J.owned_paths)&&J.owned_paths.length===0&&J.path_entry===null)&&Y(J.installed_at)&&Y(J.version)&&Y(J.target)&&C(J.install_dir)&&Array.isArray(J.owned_paths)&&J.owned_paths.every(i)&&J.owned_paths.every((Q)=>M(J.install_dir,Q.path))&&h(J)&&e(J.path_entry)}function DJ(J){let Q=AJ(J);if(Q)return Q;let U=KJ(J);if(U)return U;if(!J||typeof J!=="object"||Array.isArray(J))return null;let W=J;if(W.schema_version!==N||!IJ(W.installation_id)||!QJ(W)||!v(W.background_mode)||!JJ(W.background_mode,W.device_consent)||W.desktop_account_access!==void 0&&(W.desktop_account_access===null||typeof W.desktop_account_access!=="object"||Array.isArray(W.desktop_account_access)||W.desktop_account_access.version!==n||W.desktop_account_access.scope!==a||!Y(W.desktop_account_access.recorded_at)||!Number.isFinite(Date.parse(W.desktop_account_access.recorded_at))))return null;return W}function E(J=D()){if(!u(J))return null;try{return DJ(JSON.parse(GJ(J,"utf8")))}catch{return null}}function f(J){return Boolean(J?.installation_id&&J.background_mode==="future_device"&&J.device_consent?.version===K&&J.device_consent.decision==="authorized"&&r(J.device_consent.scope))}function g(J,Q){let U=E(Q);if(!(f(U)&&f(J)&&U.installation_id===J.installation_id&&U.channel===J.channel))s(Q);jJ(H(Q),{recursive:!0,mode:448}),o(H(Q),448);let X=`${Q}.${process.pid}.${y()}.tmp`;try{FJ(X,`${JSON.stringify(J,null,2)}
|
|
3
|
-
`,{mode:384,flag:"wx"}),o(X,384),OJ(X,Q)}finally{if(u(X))VJ(X)}let j=H(Q),$=P(j)==="staging"?H(j):j;if(P($)==="reason")x(H($));return J}function RJ(J=D(),Q=new Date){let U=E(J);if(!U?.installation_id)throw Error("Reason installation ownership is missing; reinstall the current CLI before enabling Device execution");if(f(U))return U;let W={...U,background_mode:"future_device",device_consent:{version:K,decision:"authorized",scope:b,recorded_at:Q.toISOString()}};return delete W.desktop_account_access,g(W,J)}function hJ(J,Q=D(),U=new Date){if(!A.includes(J.channel))throw Error("invalid installation channel");if(!J.version.trim())throw Error("installation version is required");if(!J.target.trim())throw Error("installation target is required");let W=S(J.installDir,"install directory"),X=E(Q);if(X?.installation_id&&!J.accountAccess)return RJ(Q,U);return g({...X??{schema_version:N,channel:J.channel,install_method:"desktop",installer:"desktop",installed_at:U.toISOString(),version:J.version.trim(),target:J.target.trim(),install_dir:W,owned_paths:[],path_entry:null},schema_version:N,installation_id:X?.installation_id??y(),background_mode:"future_device",...J.accountAccess?{desktop_account_access:{version:n,scope:a,recorded_at:U.toISOString()}}:{},device_consent:{version:K,decision:"authorized",scope:b,recorded_at:U.toISOString()}},Q)}function qJ(J,Q){return J.kind===Q.kind&&J.location===Q.location&&J.value===Q.value}function S(J,Q){let U=p(J);if(!d(U))throw Error(`${Q} must be an absolute path`);return U}function CJ(J,Q=D(),U=new Date){if(!A.includes(J.channel))throw Error("invalid installation channel");if(!J.version.trim())throw Error("installation version is required");if(!J.target.trim())throw Error("installation target is required");let W=S(J.install_dir,"install directory"),X=E(Q),j=J.backgroundMode??"preserve",$=j==="preserve"?X?.background_mode??"cli_only":j,T=X?.channel===J.channel&&f(X)&&$==="future_device",z=j==="preserve"&&!X||X?.channel===J.channel&&(j==="preserve"||T),O={path:S(J.launcherPath,"launcher path"),kind:J.launcherKind,role:"launcher"};if(!M(W,O.path))throw Error("launcher path must be inside the install directory");let V=J.workerRoot?S(J.workerRoot,"worker root"):null;if(V&&!M(W,V))throw Error("worker root must be inside the install directory");let B=[];if(J.aliasPath){let F={path:S(J.aliasPath,"alias path"),kind:"symlink",role:"alias",target:O.path};if(!h({installer:J.installer,channel:J.channel,install_dir:W,owned_paths:[O,F]})||!t(F.path,F.target))throw Error("alias must be the channel's symlink to its canonical launcher");B.push(F)}let R=[...X?.channel===J.channel&&X.install_dir===W?X.owned_paths:[],O,...B,...V?[{path:V,kind:"directory",role:"worker_root"}]:[]],k=Array.from(new Map(R.map((F)=>[F.path,F])).values()),Z=J.pathEntry??null,L=Z?X?.path_entry&&qJ(Z,X.path_entry)?{...Z,added_by_installer:q(Z)||q(X.path_entry),added_by_ara:q(Z)||q(X.path_entry)}:Z:X?.path_entry??null,UJ={schema_version:N,installation_id:X?.installation_id??y(),channel:J.channel,install_method:"curl",installer:J.installer,installed_at:U.toISOString(),version:J.version.trim(),target:J.target.trim(),install_dir:W,owned_paths:k,path_entry:L,background_mode:$,device_consent:z?X?.device_consent??null:{version:K,decision:$==="future_device"?"authorized":$==="updates_only"?"ask":"disabled",scope:$==="future_device"?b:null,recorded_at:U.toISOString()},...T&&X.desktop_account_access?{desktop_account_access:X.desktop_account_access}:{}};return g(UJ,Q)}function _(J,Q){let U=J.indexOf(Q);if(U===-1)return;let W=J[U+1];if(!W||W.startsWith("--"))throw Error(`${Q} needs a value`);return W}function G(J,Q){let U=_(J,Q);if(!U)throw Error(`${Q} is required`);return U}function gJ(J,Q={}){let U=Q.io??{stdout:process.stdout,stderr:process.stderr};try{let W=new Set(["--channel","--installer","--version","--target","--install-dir","--launcher-path","--launcher-kind","--worker-root","--path-kind","--path-location","--path-value","--background-mode"]);for(let Z=0;Z<J.length;Z+=1){let L=J[Z];if(L==="--path-added")continue;if(!W.has(L))throw Error(`unknown option: ${L}`);if(Z+=1,Z>=J.length)throw Error(`${L} needs a value`)}let X=Q.env??process.env,j=G(J,"--channel"),$=w({env:X,executablePath:Q.executablePath});if(j!==$)throw Error(`installer channel ${j} does not match running ${$} CLI`);let T=G(J,"--installer");if(T!=="shell")throw Error("--installer must be shell");let z=G(J,"--launcher-kind");if(z!=="file"&&z!=="symlink")throw Error("--launcher-kind must be file or symlink");let O=_(J,"--path-kind"),V=null;if(O){if(O!=="shell_profile")throw Error("--path-kind must be shell_profile");V={kind:O,location:G(J,"--path-location"),value:G(J,"--path-value"),added_by_installer:J.includes("--path-added"),added_by_ara:J.includes("--path-added")}}else if(J.includes("--path-location")||J.includes("--path-value")||J.includes("--path-added"))throw Error("path entry flags require --path-kind");let B={channel:$,install_method:"curl",installer:T,version:G(J,"--version"),target:G(J,"--target"),install_dir:G(J,"--install-dir"),launcherPath:G(J,"--launcher-path"),launcherKind:z,..._(J,"--worker-root")?{workerRoot:_(J,"--worker-root")}:{},pathEntry:V,backgroundMode:(()=>{let Z=_(J,"--background-mode")??"preserve";if(Z!=="preserve"&&!v(Z))throw Error("--background-mode must be future_device, updates_only, cli_only, or preserve");return Z})()},R=l(X,"REASON_INSTALL_ALIAS_PATH");if(R)B.aliasPath=R;let k=D(c(X,$),Q.home??m());return(Q.writeReceipt??CJ)(B,k,Q.now?.()??new Date),0}catch(W){return U.stderr.write(`Reason installer receipt: ${W instanceof Error?W.message:String(W)}
|
|
4
|
-
`),1}}
|
|
5
|
-
export{N as Vd,K as Wd,n as Xd,a as Yd,b as Zd,BJ as _d,SJ as $d,D as ae,t as be,vJ as ce,q as de,DJ as ee,E as fe,f as ge,RJ as he,hJ as ie,CJ as je,gJ as ke};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{resolve as a,sep as i}from"path";var c=[[".ssh"],[".gnupg"],[".aws"],[".azure"],[".kube"],[".docker"],[".infisical"],[".password-store"],[".terraform.d"],[".config","ara"],[".config","reason"],[".config","gh"],[".config","gcloud"],[".config","infisical"],[".config","op"],[".config","1password"],[".config","pass"],[".local","share","keyrings"],["library","keychains"],["library","application support","so.ara.desktop"]],l=[[".codex","config.toml"],[".cursor","mcp.json"],[".claude","settings.json"],[".claude","settings.local.json"],[".cargo","credentials"],[".cargo","credentials.toml"],[".gem","credentials"],[".config","git","config"],[".config","git","credentials"],[".config","pip","pip.conf"]],f=new Set([".bash_login",".bash_profile",".bashrc",".bunfig.toml",".claude.json",".env",".envrc",".git-credentials",".gitconfig",".mcp.json",".netrc",".npmrc",".profile",".pypirc",".terraformrc",".yarnrc",".yarnrc.yml",".zlogin",".zlogout",".zprofile",".zshenv",".zshrc","auth.json","credentials.json","credentials.tfrc.json","local-daemon.json","local-device.json","mcp.json"]),g=[".key",".p12",".pfx",".pem"];function t(r,n){if(r.length<n.length)return!1;for(let e=0;e<=r.length-n.length;e+=1)if(n.every((o,s)=>r[e+s]===o))return!0;return!1}function d(r){let n=a(r).split(i).filter(Boolean).map((o)=>o.toLowerCase());if(c.some((o)=>t(n,o)))return!0;if(l.some((o)=>t(n,o)))return!0;let e=n.at(-1)??"";return f.has(e)||e.startsWith(".env.")||g.some((o)=>e.endsWith(o))}
|
|
3
|
-
export{c as Ci,l as Di,f as Ei,g as Fi,d as Gi};
|