@reason-machines/cli-linux-arm64 0.2.406 → 0.2.408
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/THIRD_PARTY_NOTICES.txt +8 -7
- package/bin/reason +2 -2
- package/bin/runtime/srt/sandbox-runtime.mjs +52 -52
- package/bin/vm-hands/api-8d760ppa.js +2 -0
- package/bin/vm-hands/api-credentials-eea1g4aw.js +2 -0
- package/bin/vm-hands/connect-cli-m8xafyn5.js +2 -0
- package/bin/vm-hands/custom-endpoint-device-nfjhs9fv.js +2 -0
- package/bin/vm-hands/desktop-account-rx4ajy2j.js +2 -0
- package/bin/vm-hands/device-workspace-n9tn4bzw.js +2 -0
- package/bin/vm-hands/fsevents-vgg0dny6.js +2 -0
- package/bin/vm-hands/hands-worker-source-yxsap3qk.js +2 -0
- package/bin/vm-hands/index-kx10kwyx.js +12818 -0
- package/bin/vm-hands/install-receipt-rmsjtfqy.js +2 -0
- package/bin/vm-hands/local-automation-7qcnytj6.js +2 -0
- package/bin/vm-hands/local-capabilities-hchsc804.js +2 -0
- package/bin/vm-hands/local-desktop-users-c6858avg.js +2 -0
- package/bin/vm-hands/local-display-mac-zmbp9z4c.js +2 -0
- package/bin/vm-hands/local-display-session-7bgp7gvf.js +2 -0
- package/bin/vm-hands/local-pty-session-8m175hqx.js +2 -0
- package/bin/vm-hands/managed-runtime-nkmg5s5h.js +2 -0
- package/bin/vm-hands/network-contract-qt2s82ap.js +2 -0
- package/bin/vm-hands/package-11mkdcmn.js +2 -0
- package/bin/vm-hands/permissions-67xv16a5.js +2 -0
- package/bin/vm-hands/reason-hands-protocol-r356wr4t.js +2 -0
- package/bin/vm-hands/serve-service-4n7e0b08.js +2 -0
- package/bin/vm-hands/status-e7r62q4e.js +10 -0
- package/bin/vm-hands/version-vdev7tyq.js +2 -0
- package/bin/vm-hands/vm-hands-entry-lite-0n2f3kx7.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-4aejamqr.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-4geps3jz.js +5 -0
- package/bin/vm-hands/{vm-hands-entry-lite-xqve205b.js → vm-hands-entry-lite-51qvfk93.js} +2 -2
- package/bin/vm-hands/vm-hands-entry-lite-5p5h1eng.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-6p9c8nhf.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-6whxyzz2.js +52 -0
- package/bin/vm-hands/vm-hands-entry-lite-762fbns7.js +14 -0
- package/bin/vm-hands/vm-hands-entry-lite-79s23abx.js +7 -0
- package/bin/vm-hands/vm-hands-entry-lite-8bzqc4xa.js +2 -0
- package/bin/vm-hands/vm-hands-entry-lite-8evzzh7v.js +112 -0
- package/bin/vm-hands/vm-hands-entry-lite-8gtgr399.js +4 -0
- package/bin/vm-hands/vm-hands-entry-lite-9ym3sx81.js +2 -0
- package/bin/vm-hands/vm-hands-entry-lite-dkcm3hyn.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-dq1m5ykp.js +5 -0
- package/bin/vm-hands/vm-hands-entry-lite-e5hbehqn.js +250 -0
- package/bin/vm-hands/vm-hands-entry-lite-et2bh990.js +458 -0
- package/bin/vm-hands/vm-hands-entry-lite-fyjzrvj5.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-g3ja0c3y.js +2 -0
- package/bin/vm-hands/vm-hands-entry-lite-gc7c22pq.js +2 -0
- package/bin/vm-hands/{vm-hands-entry-lite-wer0qzxg.js → vm-hands-entry-lite-hcw5tk5d.js} +2 -2
- package/bin/vm-hands/vm-hands-entry-lite-hee1h411.js +105 -0
- package/bin/vm-hands/{vm-hands-entry-lite-dsh32j5a.js → vm-hands-entry-lite-hfmydph9.js} +5 -9
- package/bin/vm-hands/vm-hands-entry-lite-hzn1hf0p.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-mvx29q2q.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-mw0gzbds.js +6 -0
- package/bin/vm-hands/vm-hands-entry-lite-pmcz7j7t.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-pn92kh7b.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-ppytc9k7.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-qffs74x1.js +540 -0
- package/bin/vm-hands/vm-hands-entry-lite-qy9xg6em.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-rwr09j4w.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-saqdrc2w.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-snmxxhza.js +3 -0
- package/bin/vm-hands/{vm-hands-entry-lite-fbpxs065.js → vm-hands-entry-lite-t7an5zg2.js} +2 -2
- package/bin/vm-hands/vm-hands-entry-lite-v3xznxcw.js +4 -0
- package/bin/vm-hands/vm-hands-entry-lite-w8kc4jtb.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-w9ckj5k4.js +5 -0
- package/bin/vm-hands/{vm-hands-entry-lite-jcd21jpm.js → vm-hands-entry-lite-wd576mgy.js} +54 -54
- package/bin/vm-hands/vm-hands-entry-lite-wf7ksh4e.js +9 -0
- package/bin/vm-hands/vm-hands-entry-lite-wyh6dp1t.js +4 -0
- package/bin/vm-hands/vm-hands-entry-lite-ym1djztp.js +42 -0
- package/bin/vm-hands/vm-hands-entry-lite-zg3b0c08.js +3 -0
- package/bin/vm-hands/vm-hands-entry-lite-zn0v259d.js +65 -0
- package/bin/vm-hands/vm-hands-entry-lite.js +3 -1
- package/bin/vm-hands/vm-hands-executor-79av9nam.js +11 -0
- package/bin/vm-hands/vm-hands-op-runner-kh1myd15.js +2 -0
- package/bin/vm-hands/vm-hands-runtime-yacvv937.js +4 -0
- package/bin/vm-hands/worker-sandbox-x8dsz324.js +2 -0
- package/package.json +1 -1
- package/bin/vm-hands/api-credentials-4e2gypqj.js +0 -2
- package/bin/vm-hands/api-f48wa4ym.js +0 -2
- package/bin/vm-hands/ask-relay-nydkgmvq.js +0 -8
- package/bin/vm-hands/connect-cli-10axcfnk.js +0 -2
- package/bin/vm-hands/custom-endpoint-device-8h95wy87.js +0 -2
- package/bin/vm-hands/desktop-account-2kkxwv1y.js +0 -2
- package/bin/vm-hands/device-workspace-nzz3kd5t.js +0 -2
- package/bin/vm-hands/hands-worker-source-as5wepvk.js +0 -2
- package/bin/vm-hands/index-2kk983b8.js +0 -12818
- package/bin/vm-hands/install-receipt-e6s355j1.js +0 -2
- package/bin/vm-hands/local-automation-nr2dg0t3.js +0 -2
- package/bin/vm-hands/local-capabilities-ep1d24ne.js +0 -2
- package/bin/vm-hands/local-desktop-users-sevkfkye.js +0 -2
- package/bin/vm-hands/local-display-mac-jzc0g5ge.js +0 -2
- package/bin/vm-hands/local-display-session-0vyd74rj.js +0 -2
- package/bin/vm-hands/local-pty-session-fe6jz2zy.js +0 -2
- package/bin/vm-hands/managed-runtime-5zrdx8xk.js +0 -2
- package/bin/vm-hands/network-contract-9smga6kn.js +0 -2
- package/bin/vm-hands/package-qjr5q0bp.js +0 -2
- package/bin/vm-hands/permissions-04sm9aq9.js +0 -2
- package/bin/vm-hands/reason-hands-protocol-5fhd49en.js +0 -2
- package/bin/vm-hands/serve-service-hd0k7s2x.js +0 -2
- package/bin/vm-hands/status-n3x94yjb.js +0 -96
- package/bin/vm-hands/version-aec5t9wd.js +0 -2
- package/bin/vm-hands/vm-hands-entry-lite-0c4nxpza.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-159860ns.js +0 -52
- package/bin/vm-hands/vm-hands-entry-lite-1sc3wc94.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-2nec0vk1.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-40nkzw38.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-5rkakg10.js +0 -4
- package/bin/vm-hands/vm-hands-entry-lite-5tgm1m3h.js +0 -458
- package/bin/vm-hands/vm-hands-entry-lite-69ray4x8.js +0 -6
- package/bin/vm-hands/vm-hands-entry-lite-6berk108.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-72nn2b4n.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-8f3px72v.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-8gjrr6hg.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-8tcnbfnm.js +0 -5
- package/bin/vm-hands/vm-hands-entry-lite-9vf97byd.js +0 -4
- package/bin/vm-hands/vm-hands-entry-lite-ac8sdh78.js +0 -105
- package/bin/vm-hands/vm-hands-entry-lite-bmywbwj4.js +0 -9
- package/bin/vm-hands/vm-hands-entry-lite-c60v3v0v.js +0 -540
- package/bin/vm-hands/vm-hands-entry-lite-er3nrbb9.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-g1wjmmr9.js +0 -346
- package/bin/vm-hands/vm-hands-entry-lite-g5c9ec33.js +0 -5
- package/bin/vm-hands/vm-hands-entry-lite-h0y0xv5f.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-h9t84ekh.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-hd4a0a6f.js +0 -112
- package/bin/vm-hands/vm-hands-entry-lite-hepppjp0.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-hye6r7dy.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-jw5y1aa5.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-ky0w7t09.js +0 -42
- package/bin/vm-hands/vm-hands-entry-lite-mapxp682.js +0 -4
- package/bin/vm-hands/vm-hands-entry-lite-np1fcr2t.js +0 -5
- package/bin/vm-hands/vm-hands-entry-lite-nqvb7a2m.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-q4tcfj61.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-qpba4sxt.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-r2xmr627.js +0 -4
- package/bin/vm-hands/vm-hands-entry-lite-swwb5mp2.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-vr38bh6k.js +0 -66
- package/bin/vm-hands/vm-hands-entry-lite-vwpraybq.js +0 -251
- package/bin/vm-hands/vm-hands-entry-lite-wa261sf8.js +0 -3
- package/bin/vm-hands/vm-hands-entry-lite-wn4gvb8w.js +0 -11
- package/bin/vm-hands/vm-hands-entry-lite-yg5h9mhm.js +0 -7
- package/bin/vm-hands/vm-hands-entry-lite-yqrmr2c8.js +0 -5
- package/bin/vm-hands/vm-hands-entry-lite-z5912r1q.js +0 -3
- package/bin/vm-hands/vm-hands-executor-m1jwswd0.js +0 -11
- package/bin/vm-hands/vm-hands-op-runner-6amaw4zn.js +0 -2
- package/bin/vm-hands/vm-hands-runtime-jt4j6362.js +0 -4
- package/bin/vm-hands/worker-sandbox-p242st5d.js +0 -2
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{Mo}from"./vm-hands-entry-lite-4aejamqr.js";var Qr,fo=Object.freeze({status:"aborted"});function z(e,r,a){function p(h,g){if(!h._zod)Object.defineProperty(h,"_zod",{value:{def:g,constr:m,traits:new Set},enumerable:!1});if(h._zod.traits.has(e))return;h._zod.traits.add(e),r(h,g);let x=m.prototype,v=Object.keys(x);for(let w=0;w<v.length;w++){let Z=v[w];if(!(Z in h))h[Z]=x[Z].bind(h)}}let l=a?.Parent??Object;class f extends l{}Object.defineProperty(f,"name",{value:e});function m(h){var g;let x=a?.Parent?new f:this;p(x,h),(g=x._zod).deferred??(g.deferred=[]);for(let v of x._zod.deferred)v();return x}return Object.defineProperty(m,"init",{value:p}),Object.defineProperty(m,Symbol.hasInstance,{value:(h)=>{if(a?.Parent&&h instanceof a.Parent)return!0;return h?._zod?.traits?.has(e)}}),Object.defineProperty(m,"name",{value:e}),m}var gc=Symbol("zod_brand");class V extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class ue extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`);this.name="ZodEncodeError"}}(Qr=globalThis).__zod_globalConfig??(Qr.__zod_globalConfig={});var ne=globalThis.__zod_globalConfig;function L(e){if(e)Object.assign(ne,e);return ne}function be(e){let r=Object.values(e).filter((p)=>typeof p==="number");return Object.entries(e).filter(([p,l])=>r.indexOf(+p)===-1).map(([p,l])=>l)}function ui(e,r="|"){return e.map((a)=>di(a)).join(r)}function ae(e,r){if(typeof r==="bigint")return r.toString();return r}function pe(e){return{get value(){{let a=e();return Object.defineProperty(this,"value",{value:a}),a}throw Error("cached value already set")}}}function we(e){return e===null||e===void 0}function ke(e){let r=e.startsWith("^")?1:0,a=e.endsWith("$")?e.length-1:e.length;return e.slice(r,a)}function rt(e,r){let a=e/r,p=Math.round(a),l=Number.EPSILON*Math.max(Math.abs(a),1);if(Math.abs(a-p)<l)return 0;return a-p}var et=Symbol("evaluating");function P(e,r,a){let p=void 0;Object.defineProperty(e,r,{get(){if(p===et)return;if(p===void 0)p=et,p=a();return p},set(l){Object.defineProperty(e,r,{value:l})},configurable:!0})}function X(e,r,a){Object.defineProperty(e,r,{value:a,writable:!0,enumerable:!0,configurable:!0})}function W(...e){let r={};for(let a of e){let p=Object.getOwnPropertyDescriptors(a);Object.assign(r,p)}return Object.defineProperties({},r)}function Ve(e){return JSON.stringify(e)}function tt(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var We="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function se(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}var ot=pe(()=>{if(ne.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function H(e){if(se(e)===!1)return!1;let r=e.constructor;if(r===void 0)return!0;if(typeof r!=="function")return!0;let a=r.prototype;if(se(a)===!1)return!1;if(Object.prototype.hasOwnProperty.call(a,"isPrototypeOf")===!1)return!1;return!0}function Ke(e){if(H(e))return{...e};if(Array.isArray(e))return[...e];if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);return e}var nt=new Set(["string","number","symbol"]);function K(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function M(e,r,a){let p=new e._zod.constr(r??e._zod.def);if(!r||a?.parent)p._zod.parent=e;return p}function b(e){let r=e;if(!r)return{};if(typeof r==="string")return{error:()=>r};if(r?.message!==void 0){if(r?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");r.error=r.message}if(delete r.message,typeof r.error==="string")return{...r,error:()=>r.error};return r}function di(e){if(typeof e==="bigint")return e.toString()+"n";if(typeof e==="string")return`"${e}"`;return`${e}`}function st(e){return Object.keys(e).filter((r)=>e[r]._zod.optin==="optional"&&e[r]._zod.optout==="optional")}var it={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Qs(e,r){let a=e._zod.def,p=a.checks;if(p&&p.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let f=W(e._zod.def,{get shape(){let m={};for(let h in r){if(!(h in a.shape))throw Error(`Unrecognized key: "${h}"`);if(!r[h])continue;m[h]=a.shape[h]}return X(this,"shape",m),m},checks:[]});return M(e,f)}function ei(e,r){let a=e._zod.def,p=a.checks;if(p&&p.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let f=W(e._zod.def,{get shape(){let m={...e._zod.def.shape};for(let h in r){if(!(h in a.shape))throw Error(`Unrecognized key: "${h}"`);if(!r[h])continue;delete m[h]}return X(this,"shape",m),m},checks:[]});return M(e,f)}function ri(e,r){if(!H(r))throw Error("Invalid input to extend: expected a plain object");let a=e._zod.def.checks;if(a&&a.length>0){let f=e._zod.def.shape;for(let m in r)if(Object.getOwnPropertyDescriptor(f,m)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let l=W(e._zod.def,{get shape(){let f={...e._zod.def.shape,...r};return X(this,"shape",f),f}});return M(e,l)}function ti(e,r){if(!H(r))throw Error("Invalid input to safeExtend: expected a plain object");let a=W(e._zod.def,{get shape(){let p={...e._zod.def.shape,...r};return X(this,"shape",p),p}});return M(e,a)}function oi(e,r){if(e._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let a=W(e._zod.def,{get shape(){let p={...e._zod.def.shape,...r._zod.def.shape};return X(this,"shape",p),p},get catchall(){return r._zod.def.catchall},checks:r._zod.def.checks??[]});return M(e,a)}function ni(e,r,a){let l=r._zod.def.checks;if(l&&l.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let m=W(r._zod.def,{get shape(){let h=r._zod.def.shape,g={...h};if(a)for(let x in a){if(!(x in h))throw Error(`Unrecognized key: "${x}"`);if(!a[x])continue;g[x]=e?new e({type:"optional",innerType:h[x]}):h[x]}else for(let x in h)g[x]=e?new e({type:"optional",innerType:h[x]}):h[x];return X(this,"shape",g),g},checks:[]});return M(r,m)}function si(e,r,a){let p=W(r._zod.def,{get shape(){let l=r._zod.def.shape,f={...l};if(a)for(let m in a){if(!(m in f))throw Error(`Unrecognized key: "${m}"`);if(!a[m])continue;f[m]=new e({type:"nonoptional",innerType:l[m]})}else for(let m in l)f[m]=new e({type:"nonoptional",innerType:l[m]});return X(this,"shape",f),f}});return M(r,p)}function ee(e,r=0){if(e.aborted===!0)return!0;for(let a=r;a<e.issues.length;a++)if(e.issues[a]?.continue!==!0)return!0;return!1}function ct(e,r=0){if(e.aborted===!0)return!0;for(let a=r;a<e.issues.length;a++)if(e.issues[a]?.continue===!1)return!0;return!1}function G(e,r){return r.map((a)=>{var p;return(p=a).path??(p.path=[]),a.path.unshift(e),a})}function $e(e){return typeof e==="string"?e:e?.message}function J(e,r,a){let p=e.message?e.message:$e(e.inst?._zod.def?.error?.(e))??$e(r?.error?.(e))??$e(a.customError?.(e))??$e(a.localeError?.(e))??"Invalid input",{inst:l,continue:f,input:m,...h}=e;if(h.path??(h.path=[]),h.message=p,r?.reportInput)h.input=m;return h}function Ze(e){if(Array.isArray(e))return"array";if(typeof e==="string")return"string";return"unknown"}function mo(e){let r=typeof e;switch(r){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let a=e;if(a&&Object.getPrototypeOf(a)!==Object.prototype&&"constructor"in a&&a.constructor)return a.constructor.name}}return r}function re(...e){let[r,a,p]=e;if(typeof r==="string")return{message:r,code:"custom",input:a,inst:p};return{...r}}var ut=(e,r)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:r,enumerable:!1}),e.message=JSON.stringify(r,ae,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Se=z("$ZodError",ut),Ge=z("$ZodError",ut,{Parent:Error});function at(e,r=(a)=>a.message){let a={},p=[];for(let l of e.issues)if(l.path.length>0)a[l.path[0]]=a[l.path[0]]||[],a[l.path[0]].push(r(l));else p.push(r(l));return{formErrors:p,fieldErrors:a}}function lt(e,r=(a)=>a.message){let a={_errors:[]},p=(l,f=[])=>{for(let m of l.issues)if(m.code==="invalid_union"&&m.errors.length)m.errors.map((h)=>p({issues:h},[...f,...m.path]));else if(m.code==="invalid_key")p({issues:m.issues},[...f,...m.path]);else if(m.code==="invalid_element")p({issues:m.issues},[...f,...m.path]);else{let h=[...f,...m.path];if(h.length===0)a._errors.push(r(m));else{let g=a,x=0;while(x<h.length){let v=h[x];if(x!==h.length-1)g[v]=g[v]||{_errors:[]};else g[v]=g[v]||{_errors:[]},g[v]._errors.push(r(m));g=g[v],x++}}}};return p(e),a}var Oe=(e)=>(r,a,p,l)=>{let f=p?{...p,async:!1}:{async:!1},m=r._zod.run({value:a,issues:[]},f);if(m instanceof Promise)throw new V;if(m.issues.length){let h=new(l?.Err??e)(m.issues.map((g)=>J(g,f,L())));throw We(h,l?.callee),h}return m.value};var Ee=(e)=>async(r,a,p,l)=>{let f=p?{...p,async:!0}:{async:!0},m=r._zod.run({value:a,issues:[]},f);if(m instanceof Promise)m=await m;if(m.issues.length){let h=new(l?.Err??e)(m.issues.map((g)=>J(g,f,L())));throw We(h,l?.callee),h}return m.value};var le=(e)=>(r,a,p)=>{let l=p?{...p,async:!1}:{async:!1},f=r._zod.run({value:a,issues:[]},l);if(f instanceof Promise)throw new V;return f.issues.length?{success:!1,error:new(e??Se)(f.issues.map((m)=>J(m,l,L())))}:{success:!0,data:f.value}},ft=le(Ge),fe=(e)=>async(r,a,p)=>{let l=p?{...p,async:!0}:{async:!0},f=r._zod.run({value:a,issues:[]},l);if(f instanceof Promise)f=await f;return f.issues.length?{success:!1,error:new e(f.issues.map((m)=>J(m,l,L())))}:{success:!0,data:f.value}},dt=fe(Ge),mt=(e)=>(r,a,p)=>{let l=p?{...p,direction:"backward"}:{direction:"backward"};return Oe(e)(r,a,l)};var _t=(e)=>(r,a,p)=>Oe(e)(r,a,p);var gt=(e)=>async(r,a,p)=>{let l=p?{...p,direction:"backward"}:{direction:"backward"};return Ee(e)(r,a,l)};var xt=(e)=>async(r,a,p)=>Ee(e)(r,a,p);var zt=(e)=>(r,a,p)=>{let l=p?{...p,direction:"backward"}:{direction:"backward"};return le(e)(r,a,l)};var vt=(e)=>(r,a,p)=>le(e)(r,a,p);var yt=(e)=>async(r,a,p)=>{let l=p?{...p,direction:"backward"}:{direction:"backward"};return fe(e)(r,a,l)};var $t=(e)=>async(r,a,p)=>fe(e)(r,a,p);var bt=/^[cC][0-9a-z]{6,}$/,wt=/^[0-9a-z]+$/,kt=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Zt=/^[0-9a-vA-V]{20}$/,Pt=/^[A-Za-z0-9]{27}$/,St=/^[a-zA-Z0-9_-]{21}$/,Ot=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var Et=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,qe=(e)=>{if(!e)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)};var It=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var ci="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function Tt(){return new RegExp(ci,"u")}var Nt=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,At=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;var jt=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Ct=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Rt=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Ye=/^[A-Za-z0-9_-]*$/;var Dt=/^https?$/,Lt=/^\+[1-9]\d{6,14}$/,Ft="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Ut=new RegExp(`^${Ft}$`);function Mt(e){return typeof e.precision==="number"?e.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":e.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${e.precision}}`:"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function Jt(e){return new RegExp(`^${Mt(e)}$`)}function Bt(e){let r=Mt({precision:e.precision}),a=["Z"];if(e.local)a.push("");if(e.offset)a.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let p=`${r}(?:${a.join("|")})`;return new RegExp(`^${Ft}T(?:${p})$`)}var Vt=(e)=>{let r=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${r}$`)};var Wt=/^-?\d+$/,Xe=/^-?\d+(?:\.\d+)?$/,Kt=/^(?:true|false)$/i,Gt=/^null$/i;var qt=/^[^A-Z]*$/,Yt=/^[^a-z]*$/;var D=z("$ZodCheck",(e,r)=>{var a;e._zod??(e._zod={}),e._zod.def=r,(a=e._zod).onattach??(a.onattach=[])}),Xt={number:"number",bigint:"bigint",object:"date"},He=z("$ZodCheckLessThan",(e,r)=>{D.init(e,r);let a=Xt[typeof r.value];e._zod.onattach.push((p)=>{let l=p._zod.bag,f=(r.inclusive?l.maximum:l.exclusiveMaximum)??Number.POSITIVE_INFINITY;if(r.value<f)if(r.inclusive)l.maximum=r.value;else l.exclusiveMaximum=r.value}),e._zod.check=(p)=>{if(r.inclusive?p.value<=r.value:p.value<r.value)return;p.issues.push({origin:a,code:"too_big",maximum:typeof r.value==="object"?r.value.getTime():r.value,input:p.value,inclusive:r.inclusive,inst:e,continue:!r.abort})}}),Qe=z("$ZodCheckGreaterThan",(e,r)=>{D.init(e,r);let a=Xt[typeof r.value];e._zod.onattach.push((p)=>{let l=p._zod.bag,f=(r.inclusive?l.minimum:l.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if(r.value>f)if(r.inclusive)l.minimum=r.value;else l.exclusiveMinimum=r.value}),e._zod.check=(p)=>{if(r.inclusive?p.value>=r.value:p.value>r.value)return;p.issues.push({origin:a,code:"too_small",minimum:typeof r.value==="object"?r.value.getTime():r.value,input:p.value,inclusive:r.inclusive,inst:e,continue:!r.abort})}}),Ht=z("$ZodCheckMultipleOf",(e,r)=>{D.init(e,r),e._zod.onattach.push((a)=>{var p;(p=a._zod.bag).multipleOf??(p.multipleOf=r.value)}),e._zod.check=(a)=>{if(typeof a.value!==typeof r.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof a.value==="bigint"?a.value%r.value===BigInt(0):rt(a.value,r.value)===0)return;a.issues.push({origin:typeof a.value,code:"not_multiple_of",divisor:r.value,input:a.value,inst:e,continue:!r.abort})}}),Qt=z("$ZodCheckNumberFormat",(e,r)=>{D.init(e,r),r.format=r.format||"float64";let a=r.format?.includes("int"),p=a?"int":"number",[l,f]=it[r.format];e._zod.onattach.push((m)=>{let h=m._zod.bag;if(h.format=r.format,h.minimum=l,h.maximum=f,a)h.pattern=Wt}),e._zod.check=(m)=>{let h=m.value;if(a){if(!Number.isInteger(h)){m.issues.push({expected:p,format:r.format,code:"invalid_type",continue:!1,input:h,inst:e});return}if(!Number.isSafeInteger(h)){if(h>0)m.issues.push({input:h,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:p,inclusive:!0,continue:!r.abort});else m.issues.push({input:h,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:p,inclusive:!0,continue:!r.abort});return}}if(h<l)m.issues.push({origin:"number",input:h,code:"too_small",minimum:l,inclusive:!0,inst:e,continue:!r.abort});if(h>f)m.issues.push({origin:"number",input:h,code:"too_big",maximum:f,inclusive:!0,inst:e,continue:!r.abort})}});var eo=z("$ZodCheckMaxLength",(e,r)=>{var a;D.init(e,r),(a=e._zod.def).when??(a.when=(p)=>{let l=p.value;return!we(l)&&l.length!==void 0}),e._zod.onattach.push((p)=>{let l=p._zod.bag.maximum??Number.POSITIVE_INFINITY;if(r.maximum<l)p._zod.bag.maximum=r.maximum}),e._zod.check=(p)=>{let l=p.value;if(l.length<=r.maximum)return;let m=Ze(l);p.issues.push({origin:m,code:"too_big",maximum:r.maximum,inclusive:!0,input:l,inst:e,continue:!r.abort})}}),ro=z("$ZodCheckMinLength",(e,r)=>{var a;D.init(e,r),(a=e._zod.def).when??(a.when=(p)=>{let l=p.value;return!we(l)&&l.length!==void 0}),e._zod.onattach.push((p)=>{let l=p._zod.bag.minimum??Number.NEGATIVE_INFINITY;if(r.minimum>l)p._zod.bag.minimum=r.minimum}),e._zod.check=(p)=>{let l=p.value;if(l.length>=r.minimum)return;let m=Ze(l);p.issues.push({origin:m,code:"too_small",minimum:r.minimum,inclusive:!0,input:l,inst:e,continue:!r.abort})}}),to=z("$ZodCheckLengthEquals",(e,r)=>{var a;D.init(e,r),(a=e._zod.def).when??(a.when=(p)=>{let l=p.value;return!we(l)&&l.length!==void 0}),e._zod.onattach.push((p)=>{let l=p._zod.bag;l.minimum=r.length,l.maximum=r.length,l.length=r.length}),e._zod.check=(p)=>{let l=p.value,f=l.length;if(f===r.length)return;let m=Ze(l),h=f>r.length;p.issues.push({origin:m,...h?{code:"too_big",maximum:r.length}:{code:"too_small",minimum:r.length},inclusive:!0,exact:!0,input:p.value,inst:e,continue:!r.abort})}}),de=z("$ZodCheckStringFormat",(e,r)=>{var a,p;if(D.init(e,r),e._zod.onattach.push((l)=>{let f=l._zod.bag;if(f.format=r.format,r.pattern)f.patterns??(f.patterns=new Set),f.patterns.add(r.pattern)}),r.pattern)(a=e._zod).check??(a.check=(l)=>{if(r.pattern.lastIndex=0,r.pattern.test(l.value))return;l.issues.push({origin:"string",code:"invalid_format",format:r.format,input:l.value,...r.pattern?{pattern:r.pattern.toString()}:{},inst:e,continue:!r.abort})});else(p=e._zod).check??(p.check=()=>{})}),oo=z("$ZodCheckRegex",(e,r)=>{de.init(e,r),e._zod.check=(a)=>{if(r.pattern.lastIndex=0,r.pattern.test(a.value))return;a.issues.push({origin:"string",code:"invalid_format",format:"regex",input:a.value,pattern:r.pattern.toString(),inst:e,continue:!r.abort})}}),no=z("$ZodCheckLowerCase",(e,r)=>{r.pattern??(r.pattern=qt),de.init(e,r)}),so=z("$ZodCheckUpperCase",(e,r)=>{r.pattern??(r.pattern=Yt),de.init(e,r)}),io=z("$ZodCheckIncludes",(e,r)=>{D.init(e,r);let a=K(r.includes),p=new RegExp(typeof r.position==="number"?`^.{${r.position}}${a}`:a);r.pattern=p,e._zod.onattach.push((l)=>{let f=l._zod.bag;f.patterns??(f.patterns=new Set),f.patterns.add(p)}),e._zod.check=(l)=>{if(l.value.includes(r.includes,r.position))return;l.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:r.includes,input:l.value,inst:e,continue:!r.abort})}}),co=z("$ZodCheckStartsWith",(e,r)=>{D.init(e,r);let a=new RegExp(`^${K(r.prefix)}.*`);r.pattern??(r.pattern=a),e._zod.onattach.push((p)=>{let l=p._zod.bag;l.patterns??(l.patterns=new Set),l.patterns.add(a)}),e._zod.check=(p)=>{if(p.value.startsWith(r.prefix))return;p.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:r.prefix,input:p.value,inst:e,continue:!r.abort})}}),uo=z("$ZodCheckEndsWith",(e,r)=>{D.init(e,r);let a=new RegExp(`.*${K(r.suffix)}$`);r.pattern??(r.pattern=a),e._zod.onattach.push((p)=>{let l=p._zod.bag;l.patterns??(l.patterns=new Set),l.patterns.add(a)}),e._zod.check=(p)=>{if(p.value.endsWith(r.suffix))return;p.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:r.suffix,input:p.value,inst:e,continue:!r.abort})}});var ao=z("$ZodCheckOverwrite",(e,r)=>{D.init(e,r),e._zod.check=(a)=>{a.value=r.tx(a.value)}});class er{constructor(e=[]){if(this.content=[],this.indent=0,this)this.args=e}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e==="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let a=e.split(`
|
|
3
|
+
`).filter((f)=>f),p=Math.min(...a.map((f)=>f.length-f.trimStart().length)),l=a.map((f)=>f.slice(p)).map((f)=>" ".repeat(this.indent*2)+f);for(let f of l)this.content.push(f)}compile(){let e=Function,r=this?.args,p=[...(this?.content??[""]).map((l)=>` ${l}`)];return new e(...r,p.join(`
|
|
4
|
+
`))}}var lo={major:4,minor:4,patch:3};var E=z("$ZodType",(e,r)=>{var a;e??(e={}),e._zod.def=r,e._zod.bag=e._zod.bag||{},e._zod.version=lo;let p=[...e._zod.def.checks??[]];if(e._zod.traits.has("$ZodCheck"))p.unshift(e);for(let l of p)for(let f of l._zod.onattach)f(e);if(p.length===0)(a=e._zod).deferred??(a.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let l=(m,h,g)=>{let x=ee(m),v;for(let w of h){if(w._zod.def.when){if(ct(m))continue;if(!w._zod.def.when(m))continue}else if(x)continue;let Z=m.issues.length,k=w._zod.check(m);if(k instanceof Promise&&g?.async===!1)throw new V;if(v||k instanceof Promise)v=(v??Promise.resolve()).then(async()=>{if(await k,m.issues.length===Z)return;if(!x)x=ee(m,Z)});else{if(m.issues.length===Z)continue;if(!x)x=ee(m,Z)}}if(v)return v.then(()=>m);return m},f=(m,h,g)=>{if(ee(m))return m.aborted=!0,m;let x=l(h,p,g);if(x instanceof Promise){if(g.async===!1)throw new V;return x.then((v)=>e._zod.parse(v,g))}return e._zod.parse(x,g)};e._zod.run=(m,h)=>{if(h.skipChecks)return e._zod.parse(m,h);if(h.direction==="backward"){let x=e._zod.parse({value:m.value,issues:[]},{...h,skipChecks:!0});if(x instanceof Promise)return x.then((v)=>f(v,m,h));return f(x,m,h)}let g=e._zod.parse(m,h);if(g instanceof Promise){if(h.async===!1)throw new V;return g.then((x)=>l(x,p,h))}return l(g,p,h)}}P(e,"~standard",()=>({validate:(l)=>{try{let f=ft(e,l);return f.success?{value:f.data}:{issues:f.error?.issues}}catch(f){return dt(e,l).then((m)=>m.success?{value:m.data}:{issues:m.error?.issues})}},vendor:"zod",version:1}))}),Ae=z("$ZodString",(e,r)=>{E.init(e,r),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Vt(e._zod.bag),e._zod.parse=(a,p)=>{if(r.coerce)try{a.value=String(a.value)}catch(l){}if(typeof a.value==="string")return a;return a.issues.push({expected:"string",code:"invalid_type",input:a.value,inst:e}),a}}),I=z("$ZodStringFormat",(e,r)=>{de.init(e,r),Ae.init(e,r)}),wo=z("$ZodGUID",(e,r)=>{r.pattern??(r.pattern=Et),I.init(e,r)}),ko=z("$ZodUUID",(e,r)=>{if(r.version){let p={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[r.version];if(p===void 0)throw Error(`Invalid UUID version: "${r.version}"`);r.pattern??(r.pattern=qe(p))}else r.pattern??(r.pattern=qe());I.init(e,r)}),Zo=z("$ZodEmail",(e,r)=>{r.pattern??(r.pattern=It),I.init(e,r)}),Po=z("$ZodURL",(e,r)=>{I.init(e,r),e._zod.check=(a)=>{try{let p=a.value.trim();if(!r.normalize&&r.protocol?.source===Dt.source){if(!/^https?:\/\//i.test(p)){a.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:a.value,inst:e,continue:!r.abort});return}}let l=new URL(p);if(r.hostname){if(r.hostname.lastIndex=0,!r.hostname.test(l.hostname))a.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:r.hostname.source,input:a.value,inst:e,continue:!r.abort})}if(r.protocol){if(r.protocol.lastIndex=0,!r.protocol.test(l.protocol.endsWith(":")?l.protocol.slice(0,-1):l.protocol))a.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:r.protocol.source,input:a.value,inst:e,continue:!r.abort})}if(r.normalize)a.value=l.href;else a.value=p;return}catch(p){a.issues.push({code:"invalid_format",format:"url",input:a.value,inst:e,continue:!r.abort})}}}),So=z("$ZodEmoji",(e,r)=>{r.pattern??(r.pattern=Tt()),I.init(e,r)}),Oo=z("$ZodNanoID",(e,r)=>{r.pattern??(r.pattern=St),I.init(e,r)}),Eo=z("$ZodCUID",(e,r)=>{r.pattern??(r.pattern=bt),I.init(e,r)}),Io=z("$ZodCUID2",(e,r)=>{r.pattern??(r.pattern=wt),I.init(e,r)}),To=z("$ZodULID",(e,r)=>{r.pattern??(r.pattern=kt),I.init(e,r)}),Ao=z("$ZodXID",(e,r)=>{r.pattern??(r.pattern=Zt),I.init(e,r)}),jo=z("$ZodKSUID",(e,r)=>{r.pattern??(r.pattern=Pt),I.init(e,r)}),Co=z("$ZodISODateTime",(e,r)=>{r.pattern??(r.pattern=Bt(r)),I.init(e,r)}),Ro=z("$ZodISODate",(e,r)=>{r.pattern??(r.pattern=Ut),I.init(e,r)}),Fo=z("$ZodISOTime",(e,r)=>{r.pattern??(r.pattern=Jt(r)),I.init(e,r)}),Uo=z("$ZodISODuration",(e,r)=>{r.pattern??(r.pattern=Ot),I.init(e,r)}),Jo=z("$ZodIPv4",(e,r)=>{r.pattern??(r.pattern=Nt),I.init(e,r),e._zod.bag.format="ipv4"}),Bo=z("$ZodIPv6",(e,r)=>{r.pattern??(r.pattern=At),I.init(e,r),e._zod.bag.format="ipv6",e._zod.check=(a)=>{try{new URL(`http://[${a.value}]`)}catch{a.issues.push({code:"invalid_format",format:"ipv6",input:a.value,inst:e,continue:!r.abort})}}});var Vo=z("$ZodCIDRv4",(e,r)=>{r.pattern??(r.pattern=jt),I.init(e,r)}),Wo=z("$ZodCIDRv6",(e,r)=>{r.pattern??(r.pattern=Ct),I.init(e,r),e._zod.check=(a)=>{let p=a.value.split("/");try{if(p.length!==2)throw Error();let[l,f]=p;if(!f)throw Error();let m=Number(f);if(`${m}`!==f)throw Error();if(m<0||m>128)throw Error();new URL(`http://[${l}]`)}catch{a.issues.push({code:"invalid_format",format:"cidrv6",input:a.value,inst:e,continue:!r.abort})}}});function Ko(e){if(e==="")return!0;if(/\s/.test(e))return!1;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var Go=z("$ZodBase64",(e,r)=>{r.pattern??(r.pattern=Rt),I.init(e,r),e._zod.bag.contentEncoding="base64",e._zod.check=(a)=>{if(Ko(a.value))return;a.issues.push({code:"invalid_format",format:"base64",input:a.value,inst:e,continue:!r.abort})}});function ai(e){if(!Ye.test(e))return!1;let r=e.replace(/[-_]/g,(p)=>p==="-"?"+":"/"),a=r.padEnd(Math.ceil(r.length/4)*4,"=");return Ko(a)}var qo=z("$ZodBase64URL",(e,r)=>{r.pattern??(r.pattern=Ye),I.init(e,r),e._zod.bag.contentEncoding="base64url",e._zod.check=(a)=>{if(ai(a.value))return;a.issues.push({code:"invalid_format",format:"base64url",input:a.value,inst:e,continue:!r.abort})}}),Yo=z("$ZodE164",(e,r)=>{r.pattern??(r.pattern=Lt),I.init(e,r)});function li(e,r=null){try{let a=e.split(".");if(a.length!==3)return!1;let[p]=a;if(!p)return!1;let l=JSON.parse(atob(p));if("typ"in l&&l?.typ!=="JWT")return!1;if(!l.alg)return!1;if(r&&(!("alg"in l)||l.alg!==r))return!1;return!0}catch{return!1}}var Xo=z("$ZodJWT",(e,r)=>{I.init(e,r),e._zod.check=(a)=>{if(li(a.value,r.alg))return;a.issues.push({code:"invalid_format",format:"jwt",input:a.value,inst:e,continue:!r.abort})}});var tr=z("$ZodNumber",(e,r)=>{E.init(e,r),e._zod.pattern=e._zod.bag.pattern??Xe,e._zod.parse=(a,p)=>{if(r.coerce)try{a.value=Number(a.value)}catch(m){}let l=a.value;if(typeof l==="number"&&!Number.isNaN(l)&&Number.isFinite(l))return a;let f=typeof l==="number"?Number.isNaN(l)?"NaN":!Number.isFinite(l)?"Infinity":void 0:void 0;return a.issues.push({expected:"number",code:"invalid_type",input:l,inst:e,...f?{received:f}:{}}),a}}),Ho=z("$ZodNumberFormat",(e,r)=>{Qt.init(e,r),tr.init(e,r)}),Qo=z("$ZodBoolean",(e,r)=>{E.init(e,r),e._zod.pattern=Kt,e._zod.parse=(a,p)=>{if(r.coerce)try{a.value=Boolean(a.value)}catch(f){}let l=a.value;if(typeof l==="boolean")return a;return a.issues.push({expected:"boolean",code:"invalid_type",input:l,inst:e}),a}});var en=z("$ZodNull",(e,r)=>{E.init(e,r),e._zod.pattern=Gt,e._zod.values=new Set([null]),e._zod.parse=(a,p)=>{let l=a.value;if(l===null)return a;return a.issues.push({expected:"null",code:"invalid_type",input:l,inst:e}),a}});var rn=z("$ZodUnknown",(e,r)=>{E.init(e,r),e._zod.parse=(a)=>a}),tn=z("$ZodNever",(e,r)=>{E.init(e,r),e._zod.parse=(a,p)=>(a.issues.push({expected:"never",code:"invalid_type",input:a.value,inst:e}),a)});function ho(e,r,a){if(e.issues.length)r.issues.push(...G(a,e.issues));r.value[a]=e.value}var on=z("$ZodArray",(e,r)=>{E.init(e,r),e._zod.parse=(a,p)=>{let l=a.value;if(!Array.isArray(l))return a.issues.push({expected:"array",code:"invalid_type",input:l,inst:e}),a;a.value=Array(l.length);let f=[];for(let m=0;m<l.length;m++){let h=l[m],g=r.element._zod.run({value:h,issues:[]},p);if(g instanceof Promise)f.push(g.then((x)=>ho(x,a,m)));else ho(g,a,m)}if(f.length)return Promise.all(f).then(()=>a);return a}});function Ne(e,r,a,p,l,f){let m=a in p;if(e.issues.length){if(l&&f&&!m)return;r.issues.push(...G(a,e.issues))}if(!m&&!l){if(!e.issues.length)r.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[a]});return}if(e.value===void 0){if(m)r.value[a]=void 0}else r.value[a]=e.value}function nn(e){let r=Object.keys(e.shape);for(let p of r)if(!e.shape?.[p]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${p}": expected a Zod schema`);let a=st(e.shape);return{...e,keys:r,keySet:new Set(r),numKeys:r.length,optionalKeys:new Set(a)}}function sn(e,r,a,p,l,f){let m=[],h=l.keySet,g=l.catchall._zod,x=g.def.type,v=g.optin==="optional",w=g.optout==="optional";for(let Z in r){if(Z==="__proto__")continue;if(h.has(Z))continue;if(x==="never"){m.push(Z);continue}let k=g.run({value:r[Z],issues:[]},p);if(k instanceof Promise)e.push(k.then((S)=>Ne(S,a,Z,r,v,w)));else Ne(k,a,Z,r,v,w)}if(m.length)a.issues.push({code:"unrecognized_keys",keys:m,input:r,inst:f});if(!e.length)return a;return Promise.all(e).then(()=>a)}var fi=z("$ZodObject",(e,r)=>{if(E.init(e,r),!Object.getOwnPropertyDescriptor(r,"shape")?.get){let h=r.shape;Object.defineProperty(r,"shape",{get:()=>{let g={...h};return Object.defineProperty(r,"shape",{value:g}),g}})}let p=pe(()=>nn(r));P(e._zod,"propValues",()=>{let h=r.shape,g={};for(let x in h){let v=h[x]._zod;if(v.values){g[x]??(g[x]=new Set);for(let w of v.values)g[x].add(w)}}return g});let l=se,f=r.catchall,m;e._zod.parse=(h,g)=>{m??(m=p.value);let x=h.value;if(!l(x))return h.issues.push({expected:"object",code:"invalid_type",input:x,inst:e}),h;h.value={};let v=[],w=m.shape;for(let Z of m.keys){let k=w[Z],S=k._zod.optin==="optional",ce=k._zod.optout==="optional",C=k._zod.run({value:x[Z],issues:[]},g);if(C instanceof Promise)v.push(C.then((Je)=>Ne(Je,h,Z,x,S,ce)));else Ne(C,h,Z,x,S,ce)}if(!f)return v.length?Promise.all(v).then(()=>h):h;return sn(v,x,h,g,p.value,e)}}),cn=z("$ZodObjectJIT",(e,r)=>{fi.init(e,r);let a=e._zod.parse,p=pe(()=>nn(r)),l=(Z)=>{let k=new er(["shape","payload","ctx"]),S=p.value,ce=(B)=>{let j=Ve(B);return`shape[${j}]._zod.run({ value: input[${j}], issues: [] }, ctx)`};k.write("const input = payload.value;");let C=Object.create(null),Je=0;for(let B of S.keys)C[B]=`key_${Je++}`;k.write("const newResult = {};");for(let B of S.keys){let j=C[B],R=Ve(B),Xr=Z[B],Hr=Xr?._zod?.optin==="optional",Hs=Xr?._zod?.optout==="optional";if(k.write(`const ${j} = ${ce(B)};`),Hr&&Hs)k.write(`
|
|
5
|
+
if (${j}.issues.length) {
|
|
6
|
+
if (${R} in input) {
|
|
7
|
+
payload.issues = payload.issues.concat(${j}.issues.map(iss => ({
|
|
8
|
+
...iss,
|
|
9
|
+
path: iss.path ? [${R}, ...iss.path] : [${R}]
|
|
10
|
+
})));
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (${j}.value === undefined) {
|
|
15
|
+
if (${R} in input) {
|
|
16
|
+
newResult[${R}] = undefined;
|
|
17
|
+
}
|
|
18
|
+
} else {
|
|
19
|
+
newResult[${R}] = ${j}.value;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
`);else if(!Hr)k.write(`
|
|
23
|
+
const ${j}_present = ${R} in input;
|
|
24
|
+
if (${j}.issues.length) {
|
|
25
|
+
payload.issues = payload.issues.concat(${j}.issues.map(iss => ({
|
|
26
|
+
...iss,
|
|
27
|
+
path: iss.path ? [${R}, ...iss.path] : [${R}]
|
|
28
|
+
})));
|
|
29
|
+
}
|
|
30
|
+
if (!${j}_present && !${j}.issues.length) {
|
|
31
|
+
payload.issues.push({
|
|
32
|
+
code: "invalid_type",
|
|
33
|
+
expected: "nonoptional",
|
|
34
|
+
input: undefined,
|
|
35
|
+
path: [${R}]
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (${j}_present) {
|
|
40
|
+
if (${j}.value === undefined) {
|
|
41
|
+
newResult[${R}] = undefined;
|
|
42
|
+
} else {
|
|
43
|
+
newResult[${R}] = ${j}.value;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
`);else k.write(`
|
|
48
|
+
if (${j}.issues.length) {
|
|
49
|
+
payload.issues = payload.issues.concat(${j}.issues.map(iss => ({
|
|
50
|
+
...iss,
|
|
51
|
+
path: iss.path ? [${R}, ...iss.path] : [${R}]
|
|
52
|
+
})));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (${j}.value === undefined) {
|
|
56
|
+
if (${R} in input) {
|
|
57
|
+
newResult[${R}] = undefined;
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
newResult[${R}] = ${j}.value;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
`)}k.write("payload.value = newResult;"),k.write("return payload;");let Xs=k.compile();return(B,j)=>Xs(Z,B,j)},f,m=se,h=!ne.jitless,x=h&&ot.value,v=r.catchall,w;e._zod.parse=(Z,k)=>{w??(w=p.value);let S=Z.value;if(!m(S))return Z.issues.push({expected:"object",code:"invalid_type",input:S,inst:e}),Z;if(h&&x&&k?.async===!1&&k.jitless!==!0){if(!f)f=l(r.shape);if(Z=f(Z,k),!v)return Z;return sn([],S,Z,k,w,e)}return a(Z,k)}});function _o(e,r,a,p){for(let f of e)if(f.issues.length===0)return r.value=f.value,r;let l=e.filter((f)=>!ee(f));if(l.length===1)return r.value=l[0].value,l[0];return r.issues.push({code:"invalid_union",input:r.value,inst:a,errors:e.map((f)=>f.issues.map((m)=>J(m,p,L())))}),r}var or=z("$ZodUnion",(e,r)=>{E.init(e,r),P(e._zod,"optin",()=>r.options.some((p)=>p._zod.optin==="optional")?"optional":void 0),P(e._zod,"optout",()=>r.options.some((p)=>p._zod.optout==="optional")?"optional":void 0),P(e._zod,"values",()=>{if(r.options.every((p)=>p._zod.values))return new Set(r.options.flatMap((p)=>Array.from(p._zod.values)));return}),P(e._zod,"pattern",()=>{if(r.options.every((p)=>p._zod.pattern)){let p=r.options.map((l)=>l._zod.pattern);return new RegExp(`^(${p.map((l)=>ke(l.source)).join("|")})$`)}return});let a=r.options.length===1?r.options[0]._zod.run:null;e._zod.parse=(p,l)=>{if(a)return a(p,l);let f=!1,m=[];for(let h of r.options){let g=h._zod.run({value:p.value,issues:[]},l);if(g instanceof Promise)m.push(g),f=!0;else{if(g.issues.length===0)return g;m.push(g)}}if(!f)return _o(m,p,e,l);return Promise.all(m).then((h)=>_o(h,p,e,l))}});var un=z("$ZodDiscriminatedUnion",(e,r)=>{r.inclusive=!1,or.init(e,r);let a=e._zod.parse;P(e._zod,"propValues",()=>{let l={};for(let f of r.options){let m=f._zod.propValues;if(!m||Object.keys(m).length===0)throw Error(`Invalid discriminated union option at index "${r.options.indexOf(f)}"`);for(let[h,g]of Object.entries(m)){if(!l[h])l[h]=new Set;for(let x of g)l[h].add(x)}}return l});let p=pe(()=>{let l=r.options,f=new Map;for(let m of l){let h=m._zod.propValues?.[r.discriminator];if(!h||h.size===0)throw Error(`Invalid discriminated union option at index "${r.options.indexOf(m)}"`);for(let g of h){if(f.has(g))throw Error(`Duplicate discriminator value "${String(g)}"`);f.set(g,m)}}return f});e._zod.parse=(l,f)=>{let m=l.value;if(!se(m))return l.issues.push({code:"invalid_type",expected:"object",input:m,inst:e}),l;let h=p.value.get(m?.[r.discriminator]);if(h)return h._zod.run(l,f);if(r.unionFallback||f.direction==="backward")return a(l,f);return l.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:r.discriminator,options:Array.from(p.value.keys()),input:m,path:[r.discriminator],inst:e}),l}}),an=z("$ZodIntersection",(e,r)=>{E.init(e,r),e._zod.parse=(a,p)=>{let l=a.value,f=r.left._zod.run({value:l,issues:[]},p),m=r.right._zod.run({value:l,issues:[]},p);if(f instanceof Promise||m instanceof Promise)return Promise.all([f,m]).then(([g,x])=>xo(a,g,x));return xo(a,f,m)}});function rr(e,r){if(e===r)return{valid:!0,data:e};if(e instanceof Date&&r instanceof Date&&+e===+r)return{valid:!0,data:e};if(H(e)&&H(r)){let a=Object.keys(r),p=Object.keys(e).filter((f)=>a.indexOf(f)!==-1),l={...e,...r};for(let f of p){let m=rr(e[f],r[f]);if(!m.valid)return{valid:!1,mergeErrorPath:[f,...m.mergeErrorPath]};l[f]=m.data}return{valid:!0,data:l}}if(Array.isArray(e)&&Array.isArray(r)){if(e.length!==r.length)return{valid:!1,mergeErrorPath:[]};let a=[];for(let p=0;p<e.length;p++){let l=e[p],f=r[p],m=rr(l,f);if(!m.valid)return{valid:!1,mergeErrorPath:[p,...m.mergeErrorPath]};a.push(m.data)}return{valid:!0,data:a}}return{valid:!1,mergeErrorPath:[]}}function xo(e,r,a){let p=new Map,l;for(let h of r.issues)if(h.code==="unrecognized_keys"){l??(l=h);for(let g of h.keys){if(!p.has(g))p.set(g,{});p.get(g).l=!0}}else e.issues.push(h);for(let h of a.issues)if(h.code==="unrecognized_keys")for(let g of h.keys){if(!p.has(g))p.set(g,{});p.get(g).r=!0}else e.issues.push(h);let f=[...p].filter(([,h])=>h.l&&h.r).map(([h])=>h);if(f.length&&l)e.issues.push({...l,keys:f});if(ee(e))return e;let m=rr(r.value,a.value);if(!m.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(m.mergeErrorPath)}`);return e.value=m.data,e}var pn=z("$ZodRecord",(e,r)=>{E.init(e,r),e._zod.parse=(a,p)=>{let l=a.value;if(!H(l))return a.issues.push({expected:"record",code:"invalid_type",input:l,inst:e}),a;let f=[],m=r.keyType._zod.values;if(m){a.value={};let h=new Set;for(let x of m)if(typeof x==="string"||typeof x==="number"||typeof x==="symbol"){h.add(typeof x==="number"?x.toString():x);let v=r.keyType._zod.run({value:x,issues:[]},p);if(v instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(v.issues.length){a.issues.push({code:"invalid_key",origin:"record",issues:v.issues.map((k)=>J(k,p,L())),input:x,path:[x],inst:e});continue}let w=v.value,Z=r.valueType._zod.run({value:l[x],issues:[]},p);if(Z instanceof Promise)f.push(Z.then((k)=>{if(k.issues.length)a.issues.push(...G(x,k.issues));a.value[w]=k.value}));else{if(Z.issues.length)a.issues.push(...G(x,Z.issues));a.value[w]=Z.value}}let g;for(let x in l)if(!h.has(x))g=g??[],g.push(x);if(g&&g.length>0)a.issues.push({code:"unrecognized_keys",input:l,inst:e,keys:g})}else{a.value={};for(let h of Reflect.ownKeys(l)){if(h==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(l,h))continue;let g=r.keyType._zod.run({value:h,issues:[]},p);if(g instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof h==="string"&&Xe.test(h)&&g.issues.length){let w=r.keyType._zod.run({value:Number(h),issues:[]},p);if(w instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(w.issues.length===0)g=w}if(g.issues.length){if(r.mode==="loose")a.value[h]=l[h];else a.issues.push({code:"invalid_key",origin:"record",issues:g.issues.map((w)=>J(w,p,L())),input:h,path:[h],inst:e});continue}let v=r.valueType._zod.run({value:l[h],issues:[]},p);if(v instanceof Promise)f.push(v.then((w)=>{if(w.issues.length)a.issues.push(...G(h,w.issues));a.value[g.value]=w.value}));else{if(v.issues.length)a.issues.push(...G(h,v.issues));a.value[g.value]=v.value}}}if(f.length)return Promise.all(f).then(()=>a);return a}});var ln=z("$ZodEnum",(e,r)=>{E.init(e,r);let a=be(r.entries),p=new Set(a);e._zod.values=p,e._zod.pattern=new RegExp(`^(${a.filter((l)=>nt.has(typeof l)).map((l)=>typeof l==="string"?K(l):l.toString()).join("|")})$`),e._zod.parse=(l,f)=>{let m=l.value;if(p.has(m))return l;return l.issues.push({code:"invalid_value",values:a,input:m,inst:e}),l}}),fn=z("$ZodLiteral",(e,r)=>{if(E.init(e,r),r.values.length===0)throw Error("Cannot create literal schema with no valid values");let a=new Set(r.values);e._zod.values=a,e._zod.pattern=new RegExp(`^(${r.values.map((p)=>typeof p==="string"?K(p):p?K(p.toString()):String(p)).join("|")})$`),e._zod.parse=(p,l)=>{let f=p.value;if(a.has(f))return p;return p.issues.push({code:"invalid_value",values:r.values,input:f,inst:e}),p}});var dn=z("$ZodTransform",(e,r)=>{E.init(e,r),e._zod.optin="optional",e._zod.parse=(a,p)=>{if(p.direction==="backward")throw new ue(e.constructor.name);let l=r.transform(a.value,a);if(p.async)return(l instanceof Promise?l:Promise.resolve(l)).then((m)=>(a.value=m,a.fallback=!0,a));if(l instanceof Promise)throw new V;return a.value=l,a.fallback=!0,a}});function zo(e,r){if(r===void 0&&(e.issues.length||e.fallback))return{issues:[],value:void 0};return e}var nr=z("$ZodOptional",(e,r)=>{E.init(e,r),e._zod.optin="optional",e._zod.optout="optional",P(e._zod,"values",()=>r.innerType._zod.values?new Set([...r.innerType._zod.values,void 0]):void 0),P(e._zod,"pattern",()=>{let a=r.innerType._zod.pattern;return a?new RegExp(`^(${ke(a.source)})?$`):void 0}),e._zod.parse=(a,p)=>{if(r.innerType._zod.optin==="optional"){let l=a.value,f=r.innerType._zod.run(a,p);if(f instanceof Promise)return f.then((m)=>zo(m,l));return zo(f,l)}if(a.value===void 0)return a;return r.innerType._zod.run(a,p)}}),mn=z("$ZodExactOptional",(e,r)=>{nr.init(e,r),P(e._zod,"values",()=>r.innerType._zod.values),P(e._zod,"pattern",()=>r.innerType._zod.pattern),e._zod.parse=(a,p)=>r.innerType._zod.run(a,p)}),hn=z("$ZodNullable",(e,r)=>{E.init(e,r),P(e._zod,"optin",()=>r.innerType._zod.optin),P(e._zod,"optout",()=>r.innerType._zod.optout),P(e._zod,"pattern",()=>{let a=r.innerType._zod.pattern;return a?new RegExp(`^(${ke(a.source)}|null)$`):void 0}),P(e._zod,"values",()=>r.innerType._zod.values?new Set([...r.innerType._zod.values,null]):void 0),e._zod.parse=(a,p)=>{if(a.value===null)return a;return r.innerType._zod.run(a,p)}}),_n=z("$ZodDefault",(e,r)=>{E.init(e,r),e._zod.optin="optional",P(e._zod,"values",()=>r.innerType._zod.values),e._zod.parse=(a,p)=>{if(p.direction==="backward")return r.innerType._zod.run(a,p);if(a.value===void 0)return a.value=r.defaultValue,a;let l=r.innerType._zod.run(a,p);if(l instanceof Promise)return l.then((f)=>vo(f,r));return vo(l,r)}});function vo(e,r){if(e.value===void 0)e.value=r.defaultValue;return e}var gn=z("$ZodPrefault",(e,r)=>{E.init(e,r),e._zod.optin="optional",P(e._zod,"values",()=>r.innerType._zod.values),e._zod.parse=(a,p)=>{if(p.direction==="backward")return r.innerType._zod.run(a,p);if(a.value===void 0)a.value=r.defaultValue;return r.innerType._zod.run(a,p)}}),xn=z("$ZodNonOptional",(e,r)=>{E.init(e,r),P(e._zod,"values",()=>{let a=r.innerType._zod.values;return a?new Set([...a].filter((p)=>p!==void 0)):void 0}),e._zod.parse=(a,p)=>{let l=r.innerType._zod.run(a,p);if(l instanceof Promise)return l.then((f)=>yo(f,e));return yo(l,e)}});function yo(e,r){if(!e.issues.length&&e.value===void 0)e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:r});return e}var zn=z("$ZodCatch",(e,r)=>{E.init(e,r),e._zod.optin="optional",P(e._zod,"optout",()=>r.innerType._zod.optout),P(e._zod,"values",()=>r.innerType._zod.values),e._zod.parse=(a,p)=>{if(p.direction==="backward")return r.innerType._zod.run(a,p);let l=r.innerType._zod.run(a,p);if(l instanceof Promise)return l.then((f)=>{if(a.value=f.value,f.issues.length)a.value=r.catchValue({...a,error:{issues:f.issues.map((m)=>J(m,p,L()))},input:a.value}),a.issues=[],a.fallback=!0;return a});if(a.value=l.value,l.issues.length)a.value=r.catchValue({...a,error:{issues:l.issues.map((f)=>J(f,p,L()))},input:a.value}),a.issues=[],a.fallback=!0;return a}});var vn=z("$ZodPipe",(e,r)=>{E.init(e,r),P(e._zod,"values",()=>r.in._zod.values),P(e._zod,"optin",()=>r.in._zod.optin),P(e._zod,"optout",()=>r.out._zod.optout),P(e._zod,"propValues",()=>r.in._zod.propValues),e._zod.parse=(a,p)=>{if(p.direction==="backward"){let f=r.out._zod.run(a,p);if(f instanceof Promise)return f.then((m)=>Te(m,r.in,p));return Te(f,r.in,p)}let l=r.in._zod.run(a,p);if(l instanceof Promise)return l.then((f)=>Te(f,r.out,p));return Te(l,r.out,p)}});function Te(e,r,a){if(e.issues.length)return e.aborted=!0,e;return r._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},a)}var yn=z("$ZodReadonly",(e,r)=>{E.init(e,r),P(e._zod,"propValues",()=>r.innerType._zod.propValues),P(e._zod,"values",()=>r.innerType._zod.values),P(e._zod,"optin",()=>r.innerType?._zod?.optin),P(e._zod,"optout",()=>r.innerType?._zod?.optout),e._zod.parse=(a,p)=>{if(p.direction==="backward")return r.innerType._zod.run(a,p);let l=r.innerType._zod.run(a,p);if(l instanceof Promise)return l.then($o);return $o(l)}});function $o(e){return e.value=Object.freeze(e.value),e}var $n=z("$ZodLazy",(e,r)=>{E.init(e,r),P(e._zod,"innerType",()=>{let a=r;if(!a._cachedInner)a._cachedInner=r.getter();return a._cachedInner}),P(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),P(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),P(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),P(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(a,p)=>e._zod.innerType._zod.run(a,p)}),bn=z("$ZodCustom",(e,r)=>{D.init(e,r),E.init(e,r),e._zod.parse=(a,p)=>a,e._zod.check=(a)=>{let p=a.value,l=r.fn(p);if(l instanceof Promise)return l.then((f)=>bo(f,a,p,e));bo(l,a,p,e);return}});function bo(e,r,a,p){if(!e){let l={code:"custom",input:a,inst:p,path:[...p._zod.def.path??[]],continue:!p._zod.def.abort};if(p._zod.def.params)l.params=p._zod.def.params;r.issues.push(re(l))}}var wn,Rc=Symbol("ZodOutput"),Dc=Symbol("ZodInput");class kn{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...r){let a=r[0];if(this._map.set(e,a),a&&typeof a==="object"&&"id"in a)this._idmap.set(a.id,e);return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let r=this._map.get(e);if(r&&typeof r==="object"&&"id"in r)this._idmap.delete(r.id);return this._map.delete(e),this}get(e){let r=e._zod.parent;if(r){let a={...this.get(r)??{}};delete a.id;let p={...a,...this._map.get(e)};return Object.keys(p).length?p:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}function mi(){return new kn}(wn=globalThis).__zod_globalRegistry??(wn.__zod_globalRegistry=mi());var te=globalThis.__zod_globalRegistry;function Zn(e,r){return new e({type:"string",...b(r)})}function Pn(e,r){return new e({type:"string",format:"email",check:"string_format",abort:!1,...b(r)})}function je(e,r){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...b(r)})}function sr(e,r){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...b(r)})}function Sn(e,r){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...b(r)})}function On(e,r){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...b(r)})}function En(e,r){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...b(r)})}function ir(e,r){return new e({type:"string",format:"url",check:"string_format",abort:!1,...b(r)})}function In(e,r){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...b(r)})}function Tn(e,r){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...b(r)})}function Nn(e,r){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...b(r)})}function An(e,r){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...b(r)})}function jn(e,r){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...b(r)})}function Cn(e,r){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...b(r)})}function Rn(e,r){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...b(r)})}function Dn(e,r){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...b(r)})}function Ln(e,r){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...b(r)})}function Fn(e,r){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...b(r)})}function Un(e,r){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...b(r)})}function Mn(e,r){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...b(r)})}function Jn(e,r){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...b(r)})}function Bn(e,r){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...b(r)})}function Vn(e,r){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...b(r)})}function Wn(e,r){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...b(r)})}function Kn(e,r){return new e({type:"string",format:"date",check:"string_format",...b(r)})}function Gn(e,r){return new e({type:"string",format:"time",check:"string_format",precision:null,...b(r)})}function qn(e,r){return new e({type:"string",format:"duration",check:"string_format",...b(r)})}function Yn(e,r){return new e({type:"number",checks:[],...b(r)})}function Xn(e,r){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...b(r)})}function Hn(e,r){return new e({type:"boolean",...b(r)})}function Qn(e,r){return new e({type:"null",...b(r)})}function es(e){return new e({type:"unknown"})}function rs(e,r){return new e({type:"never",...b(r)})}function Ce(e,r){return new He({check:"less_than",...b(r),value:e,inclusive:!1})}function me(e,r){return new He({check:"less_than",...b(r),value:e,inclusive:!0})}function Re(e,r){return new Qe({check:"greater_than",...b(r),value:e,inclusive:!1})}function he(e,r){return new Qe({check:"greater_than",...b(r),value:e,inclusive:!0})}function De(e,r){return new Ht({check:"multiple_of",...b(r),value:e})}function Le(e,r){return new eo({check:"max_length",...b(r),maximum:e})}function ie(e,r){return new ro({check:"min_length",...b(r),minimum:e})}function Fe(e,r){return new to({check:"length_equals",...b(r),length:e})}function cr(e,r){return new oo({check:"string_format",format:"regex",...b(r),pattern:e})}function ur(e){return new no({check:"string_format",format:"lowercase",...b(e)})}function ar(e){return new so({check:"string_format",format:"uppercase",...b(e)})}function pr(e,r){return new io({check:"string_format",format:"includes",...b(r),includes:e})}function lr(e,r){return new co({check:"string_format",format:"starts_with",...b(r),prefix:e})}function fr(e,r){return new uo({check:"string_format",format:"ends_with",...b(r),suffix:e})}function Y(e){return new ao({check:"overwrite",tx:e})}function dr(e){return Y((r)=>r.normalize(e))}function mr(){return Y((e)=>e.trim())}function hr(){return Y((e)=>e.toLowerCase())}function _r(){return Y((e)=>e.toUpperCase())}function gr(){return Y((e)=>tt(e))}function ts(e,r,a){return new e({type:"array",element:r,...b(a)})}function os(e,r,a){let p=b(a);return p.abort??(p.abort=!0),new e({type:"custom",check:"custom",fn:r,...p})}function ns(e,r,a){return new e({type:"custom",check:"custom",fn:r,...b(a)})}function ss(e,r){let a=hi((p)=>(p.addIssue=(l)=>{if(typeof l==="string")p.issues.push(re(l,p.value,a._zod.def));else{let f=l;if(f.fatal)f.continue=!1;f.code??(f.code="custom"),f.input??(f.input=p.value),f.inst??(f.inst=a),f.continue??(f.continue=!a._zod.def.abort),p.issues.push(re(f))}},e(p.value,p)),r);return a}function hi(e,r){let a=new D({check:"custom",...b(r)});return a._zod.check=e,a}function ge(e){let r=e?.target??"draft-2020-12";if(r==="draft-4")r="draft-04";if(r==="draft-7")r="draft-07";return{processors:e.processors??{},metadataRegistry:e?.metadata??te,target:r,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function O(e,r,a={path:[],schemaPath:[]}){var p;let l=e._zod.def,f=r.seen.get(e);if(f){if(f.count++,a.schemaPath.includes(e))f.cycle=a.path;return f.schema}let m={schema:{},count:1,cycle:void 0,path:a.path};r.seen.set(e,m);let h=e._zod.toJSONSchema?.();if(h)m.schema=h;else{let v={...a,schemaPath:[...a.schemaPath,e],path:a.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(r,m.schema,v);else{let Z=m.schema,k=r.processors[l.type];if(!k)throw Error(`[toJSONSchema]: Non-representable type encountered: ${l.type}`);k(e,r,Z,v)}let w=e._zod.parent;if(w){if(!m.ref)m.ref=w;O(w,r,v),r.seen.get(w).isParent=!0}}let g=r.metadataRegistry.get(e);if(g)Object.assign(m.schema,g);if(r.io==="input"&&F(e))delete m.schema.examples,delete m.schema.default;if(r.io==="input"&&"_prefault"in m.schema)(p=m.schema).default??(p.default=m.schema._prefault);return delete m.schema._prefault,r.seen.get(e).schema}function xe(e,r){let a=e.seen.get(r);if(!a)throw Error("Unprocessed schema. This is a bug in Zod.");let p=new Map;for(let m of e.seen.entries()){let h=e.metadataRegistry.get(m[0])?.id;if(h){let g=p.get(h);if(g&&g!==m[0])throw Error(`Duplicate schema id "${h}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);p.set(h,m[0])}}let l=(m)=>{let h=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let w=e.external.registry.get(m[0])?.id,Z=e.external.uri??((S)=>S);if(w)return{ref:Z(w)};let k=m[1].defId??m[1].schema.id??`schema${e.counter++}`;return m[1].defId=k,{defId:k,ref:`${Z("__shared")}#/${h}/${k}`}}if(m[1]===a)return{ref:"#"};let x=`${"#"}/${h}/`,v=m[1].schema.id??`__schema${e.counter++}`;return{defId:v,ref:x+v}},f=(m)=>{if(m[1].schema.$ref)return;let h=m[1],{ref:g,defId:x}=l(m);if(h.def={...h.schema},x)h.defId=x;let v=h.schema;for(let w in v)delete v[w];v.$ref=g};if(e.cycles==="throw")for(let m of e.seen.entries()){let h=m[1];if(h.cycle)throw Error(`Cycle detected: #/${h.cycle?.join("/")}/<root>
|
|
64
|
+
|
|
65
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let m of e.seen.entries()){let h=m[1];if(r===m[0]){f(m);continue}if(e.external){let x=e.external.registry.get(m[0])?.id;if(r!==m[0]&&x){f(m);continue}}if(e.metadataRegistry.get(m[0])?.id){f(m);continue}if(h.cycle){f(m);continue}if(h.count>1){if(e.reused==="ref"){f(m);continue}}}}function ze(e,r){let a=e.seen.get(r);if(!a)throw Error("Unprocessed schema. This is a bug in Zod.");let p=(h)=>{let g=e.seen.get(h);if(g.ref===null)return;let x=g.def??g.schema,v={...x},w=g.ref;if(g.ref=null,w){p(w);let k=e.seen.get(w),S=k.schema;if(S.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"))x.allOf=x.allOf??[],x.allOf.push(S);else Object.assign(x,S);if(Object.assign(x,v),h._zod.parent===w)for(let C in x){if(C==="$ref"||C==="allOf")continue;if(!(C in v))delete x[C]}if(S.$ref&&k.def)for(let C in x){if(C==="$ref"||C==="allOf")continue;if(C in k.def&&JSON.stringify(x[C])===JSON.stringify(k.def[C]))delete x[C]}}let Z=h._zod.parent;if(Z&&Z!==w){p(Z);let k=e.seen.get(Z);if(k?.schema.$ref){if(x.$ref=k.schema.$ref,k.def)for(let S in x){if(S==="$ref"||S==="allOf")continue;if(S in k.def&&JSON.stringify(x[S])===JSON.stringify(k.def[S]))delete x[S]}}}e.override({zodSchema:h,jsonSchema:x,path:g.path??[]})};for(let h of[...e.seen.entries()].reverse())p(h[0]);let l={};if(e.target==="draft-2020-12")l.$schema="https://json-schema.org/draft/2020-12/schema";else if(e.target==="draft-07")l.$schema="http://json-schema.org/draft-07/schema#";else if(e.target==="draft-04")l.$schema="http://json-schema.org/draft-04/schema#";else if(e.target==="openapi-3.0");if(e.external?.uri){let h=e.external.registry.get(r)?.id;if(!h)throw Error("Schema is missing an `id` property");l.$id=e.external.uri(h)}Object.assign(l,a.def??a.schema);let f=e.metadataRegistry.get(r)?.id;if(f!==void 0&&l.id===f)delete l.id;let m=e.external?.defs??{};for(let h of e.seen.entries()){let g=h[1];if(g.def&&g.defId){if(g.def.id===g.defId)delete g.def.id;m[g.defId]=g.def}}if(e.external);else if(Object.keys(m).length>0)if(e.target==="draft-2020-12")l.$defs=m;else l.definitions=m;try{let h=JSON.parse(JSON.stringify(l));return Object.defineProperty(h,"~standard",{value:{...r["~standard"],jsonSchema:{input:_e(r,"input",e.processors),output:_e(r,"output",e.processors)}},enumerable:!1,writable:!1}),h}catch(h){throw Error("Error converting schema to JSON.")}}function F(e,r){let a=r??{seen:new Set};if(a.seen.has(e))return!1;a.seen.add(e);let p=e._zod.def;if(p.type==="transform")return!0;if(p.type==="array")return F(p.element,a);if(p.type==="set")return F(p.valueType,a);if(p.type==="lazy")return F(p.getter(),a);if(p.type==="promise"||p.type==="optional"||p.type==="nonoptional"||p.type==="nullable"||p.type==="readonly"||p.type==="default"||p.type==="prefault")return F(p.innerType,a);if(p.type==="intersection")return F(p.left,a)||F(p.right,a);if(p.type==="record"||p.type==="map")return F(p.keyType,a)||F(p.valueType,a);if(p.type==="pipe"){if(e._zod.traits.has("$ZodCodec"))return!0;return F(p.in,a)||F(p.out,a)}if(p.type==="object"){for(let l in p.shape)if(F(p.shape[l],a))return!0;return!1}if(p.type==="union"){for(let l of p.options)if(F(l,a))return!0;return!1}if(p.type==="tuple"){for(let l of p.items)if(F(l,a))return!0;if(p.rest&&F(p.rest,a))return!0;return!1}return!1}var is=(e,r={})=>(a)=>{let p=ge({...a,processors:r});return O(e,p),xe(p,e),ze(p,e)},_e=(e,r,a={})=>(p)=>{let{libraryOptions:l,target:f}=p??{},m=ge({...l??{},target:f,io:r,processors:a});return O(e,m),xe(m,e),ze(m,e)};var _i={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},xr=(e,r,a,p)=>{let l=a;l.type="string";let{minimum:f,maximum:m,format:h,patterns:g,contentEncoding:x}=e._zod.bag;if(typeof f==="number")l.minLength=f;if(typeof m==="number")l.maxLength=m;if(h){if(l.format=_i[h]??h,l.format==="")delete l.format;if(h==="time")delete l.format}if(x)l.contentEncoding=x;if(g&&g.size>0){let v=[...g];if(v.length===1)l.pattern=v[0].source;else if(v.length>1)l.allOf=[...v.map((w)=>({...r.target==="draft-07"||r.target==="draft-04"||r.target==="openapi-3.0"?{type:"string"}:{},pattern:w.source}))]}},zr=(e,r,a,p)=>{let l=a,{minimum:f,maximum:m,format:h,multipleOf:g,exclusiveMaximum:x,exclusiveMinimum:v}=e._zod.bag;if(typeof h==="string"&&h.includes("int"))l.type="integer";else l.type="number";let w=typeof v==="number"&&v>=(f??Number.NEGATIVE_INFINITY),Z=typeof x==="number"&&x<=(m??Number.POSITIVE_INFINITY),k=r.target==="draft-04"||r.target==="openapi-3.0";if(w)if(k)l.minimum=v,l.exclusiveMinimum=!0;else l.exclusiveMinimum=v;else if(typeof f==="number")l.minimum=f;if(Z)if(k)l.maximum=x,l.exclusiveMaximum=!0;else l.exclusiveMaximum=x;else if(typeof m==="number")l.maximum=m;if(typeof g==="number")l.multipleOf=g},vr=(e,r,a,p)=>{a.type="boolean"},us=(e,r,a,p)=>{if(r.unrepresentable==="throw")throw Error("BigInt cannot be represented in JSON Schema")},as=(e,r,a,p)=>{if(r.unrepresentable==="throw")throw Error("Symbols cannot be represented in JSON Schema")},yr=(e,r,a,p)=>{if(r.target==="openapi-3.0")a.type="string",a.nullable=!0,a.enum=[null];else a.type="null"},ps=(e,r,a,p)=>{if(r.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")},ls=(e,r,a,p)=>{if(r.unrepresentable==="throw")throw Error("Void cannot be represented in JSON Schema")},$r=(e,r,a,p)=>{a.not={}},fs=(e,r,a,p)=>{},br=(e,r,a,p)=>{},ds=(e,r,a,p)=>{if(r.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema")},wr=(e,r,a,p)=>{let l=e._zod.def,f=be(l.entries);if(f.every((m)=>typeof m==="number"))a.type="number";if(f.every((m)=>typeof m==="string"))a.type="string";a.enum=f},kr=(e,r,a,p)=>{let l=e._zod.def,f=[];for(let m of l.values)if(m===void 0){if(r.unrepresentable==="throw")throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof m==="bigint")if(r.unrepresentable==="throw")throw Error("BigInt literals cannot be represented in JSON Schema");else f.push(Number(m));else f.push(m);if(f.length===0);else if(f.length===1){let m=f[0];if(a.type=m===null?"null":typeof m,r.target==="draft-04"||r.target==="openapi-3.0")a.enum=[m];else a.const=m}else{if(f.every((m)=>typeof m==="number"))a.type="number";if(f.every((m)=>typeof m==="string"))a.type="string";if(f.every((m)=>typeof m==="boolean"))a.type="boolean";if(f.every((m)=>m===null))a.type="null";a.enum=f}},ms=(e,r,a,p)=>{if(r.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema")},hs=(e,r,a,p)=>{let l=a,f=e._zod.pattern;if(!f)throw Error("Pattern not found in template literal");l.type="string",l.pattern=f.source},_s=(e,r,a,p)=>{let l=a,f={type:"string",format:"binary",contentEncoding:"binary"},{minimum:m,maximum:h,mime:g}=e._zod.bag;if(m!==void 0)f.minLength=m;if(h!==void 0)f.maxLength=h;if(g)if(g.length===1)f.contentMediaType=g[0],Object.assign(l,f);else Object.assign(l,f),l.anyOf=g.map((x)=>({contentMediaType:x}));else Object.assign(l,f)},gs=(e,r,a,p)=>{a.type="boolean"},Zr=(e,r,a,p)=>{if(r.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")},xs=(e,r,a,p)=>{if(r.unrepresentable==="throw")throw Error("Function types cannot be represented in JSON Schema")},Pr=(e,r,a,p)=>{if(r.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")},zs=(e,r,a,p)=>{if(r.unrepresentable==="throw")throw Error("Map cannot be represented in JSON Schema")},vs=(e,r,a,p)=>{if(r.unrepresentable==="throw")throw Error("Set cannot be represented in JSON Schema")},Sr=(e,r,a,p)=>{let l=a,f=e._zod.def,{minimum:m,maximum:h}=e._zod.bag;if(typeof m==="number")l.minItems=m;if(typeof h==="number")l.maxItems=h;l.type="array",l.items=O(f.element,r,{...p,path:[...p.path,"items"]})},Or=(e,r,a,p)=>{let l=a,f=e._zod.def;l.type="object",l.properties={};let m=f.shape;for(let x in m)l.properties[x]=O(m[x],r,{...p,path:[...p.path,"properties",x]});let h=new Set(Object.keys(m)),g=new Set([...h].filter((x)=>{let v=f.shape[x]._zod;if(r.io==="input")return v.optin===void 0;else return v.optout===void 0}));if(g.size>0)l.required=Array.from(g);if(f.catchall?._zod.def.type==="never")l.additionalProperties=!1;else if(!f.catchall){if(r.io==="output")l.additionalProperties=!1}else if(f.catchall)l.additionalProperties=O(f.catchall,r,{...p,path:[...p.path,"additionalProperties"]})},Er=(e,r,a,p)=>{let l=e._zod.def,f=l.inclusive===!1,m=l.options.map((h,g)=>O(h,r,{...p,path:[...p.path,f?"oneOf":"anyOf",g]}));if(f)a.oneOf=m;else a.anyOf=m},Ir=(e,r,a,p)=>{let l=e._zod.def,f=O(l.left,r,{...p,path:[...p.path,"allOf",0]}),m=O(l.right,r,{...p,path:[...p.path,"allOf",1]}),h=(x)=>("allOf"in x)&&Object.keys(x).length===1,g=[...h(f)?f.allOf:[f],...h(m)?m.allOf:[m]];a.allOf=g},ys=(e,r,a,p)=>{let l=a,f=e._zod.def;l.type="array";let m=r.target==="draft-2020-12"?"prefixItems":"items",h=r.target==="draft-2020-12"?"items":r.target==="openapi-3.0"?"items":"additionalItems",g=f.items.map((Z,k)=>O(Z,r,{...p,path:[...p.path,m,k]})),x=f.rest?O(f.rest,r,{...p,path:[...p.path,h,...r.target==="openapi-3.0"?[f.items.length]:[]]}):null;if(r.target==="draft-2020-12"){if(l.prefixItems=g,x)l.items=x}else if(r.target==="openapi-3.0"){if(l.items={anyOf:g},x)l.items.anyOf.push(x);if(l.minItems=g.length,!x)l.maxItems=g.length}else if(l.items=g,x)l.additionalItems=x;let{minimum:v,maximum:w}=e._zod.bag;if(typeof v==="number")l.minItems=v;if(typeof w==="number")l.maxItems=w},Tr=(e,r,a,p)=>{let l=a,f=e._zod.def;l.type="object";let m=f.keyType,g=m._zod.bag?.patterns;if(f.mode==="loose"&&g&&g.size>0){let v=O(f.valueType,r,{...p,path:[...p.path,"patternProperties","*"]});l.patternProperties={};for(let w of g)l.patternProperties[w.source]=v}else{if(r.target==="draft-07"||r.target==="draft-2020-12")l.propertyNames=O(f.keyType,r,{...p,path:[...p.path,"propertyNames"]});l.additionalProperties=O(f.valueType,r,{...p,path:[...p.path,"additionalProperties"]})}let x=m._zod.values;if(x){let v=[...x].filter((w)=>typeof w==="string"||typeof w==="number");if(v.length>0)l.required=v}},Nr=(e,r,a,p)=>{let l=e._zod.def,f=O(l.innerType,r,p),m=r.seen.get(e);if(r.target==="openapi-3.0")m.ref=l.innerType,a.nullable=!0;else a.anyOf=[f,{type:"null"}]},Ar=(e,r,a,p)=>{let l=e._zod.def;O(l.innerType,r,p);let f=r.seen.get(e);f.ref=l.innerType},jr=(e,r,a,p)=>{let l=e._zod.def;O(l.innerType,r,p);let f=r.seen.get(e);f.ref=l.innerType,a.default=JSON.parse(JSON.stringify(l.defaultValue))},Cr=(e,r,a,p)=>{let l=e._zod.def;O(l.innerType,r,p);let f=r.seen.get(e);if(f.ref=l.innerType,r.io==="input")a._prefault=JSON.parse(JSON.stringify(l.defaultValue))},Rr=(e,r,a,p)=>{let l=e._zod.def;O(l.innerType,r,p);let f=r.seen.get(e);f.ref=l.innerType;let m;try{m=l.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}a.default=m},Dr=(e,r,a,p)=>{let l=e._zod.def,f=l.in._zod.traits.has("$ZodTransform"),m=r.io==="input"?f?l.out:l.in:l.out;O(m,r,p);let h=r.seen.get(e);h.ref=m},Lr=(e,r,a,p)=>{let l=e._zod.def;O(l.innerType,r,p);let f=r.seen.get(e);f.ref=l.innerType,a.readOnly=!0},$s=(e,r,a,p)=>{let l=e._zod.def;O(l.innerType,r,p);let f=r.seen.get(e);f.ref=l.innerType},Ue=(e,r,a,p)=>{let l=e._zod.def;O(l.innerType,r,p);let f=r.seen.get(e);f.ref=l.innerType},Fr=(e,r,a,p)=>{let l=e._zod.innerType;O(l,r,p);let f=r.seen.get(e);f.ref=l},cs={string:xr,number:zr,boolean:vr,bigint:us,symbol:as,null:yr,undefined:ps,void:ls,never:$r,any:fs,unknown:br,date:ds,enum:wr,literal:kr,nan:ms,template_literal:hs,file:_s,success:gs,custom:Zr,function:xs,transform:Pr,map:zs,set:vs,array:Sr,object:Or,union:Er,intersection:Ir,tuple:ys,record:Tr,nullable:Nr,nonoptional:Ar,default:jr,prefault:Cr,catch:Rr,pipe:Dr,readonly:Lr,promise:$s,optional:Ue,lazy:Fr};function Wr(e,r){if("_idmap"in e){let p=e,l=ge({...r,processors:cs}),f={};for(let g of p._idmap.entries()){let[x,v]=g;O(v,l)}let m={},h={registry:p,uri:r?.uri,defs:f};l.external=h;for(let g of p._idmap.entries()){let[x,v]=g;xe(l,v),m[x]=ze(l,v)}if(Object.keys(f).length>0){let g=l.target==="draft-2020-12"?"$defs":"definitions";m.__shared={[g]:f}}return{schemas:m}}let a=ge({...r,processors:cs});return O(e,a),xe(a,e),ze(a,e)}var y={};Mo(y,{ZodISODate:()=>ws,ZodISODateTime:()=>bs,ZodISODuration:()=>Zs,ZodISOTime:()=>ks,date:()=>Mr,datetime:()=>Ur,duration:()=>Br,time:()=>Jr});var bs=z("ZodISODateTime",(e,r)=>{Co.init(e,r),N.init(e,r)});function Ur(e){return Wn(bs,e)}var ws=z("ZodISODate",(e,r)=>{Ro.init(e,r),N.init(e,r)});function Mr(e){return Kn(ws,e)}var ks=z("ZodISOTime",(e,r)=>{Fo.init(e,r),N.init(e,r)});function Jr(e){return Gn(ks,e)}var Zs=z("ZodISODuration",(e,r)=>{Uo.init(e,r),N.init(e,r)});function Br(e){return qn(Zs,e)}var wi=(e,r)=>{Se.init(e,r),e.name="ZodError",Object.defineProperties(e,{format:{value:(a)=>lt(e,a)},flatten:{value:(a)=>at(e,a)},addIssue:{value:(a)=>{e.issues.push(a),e.message=JSON.stringify(e.issues,ae,2)}},addIssues:{value:(a)=>{e.issues.push(...a),e.message=JSON.stringify(e.issues,ae,2)}},isEmpty:{get(){return e.issues.length===0}}})};var U=z("ZodError",wi,{Parent:Error});var Ps=Oe(U),Ss=Ee(U),Os=le(U),Es=fe(U),Is=mt(U),Ts=_t(U),Ns=gt(U),As=xt(U),js=zt(U),Cs=vt(U),Rs=yt(U),Ds=$t(U);var Ls=new WeakMap;function ye(e,r,a){let p=Object.getPrototypeOf(e),l=Ls.get(p);if(!l)l=new Set,Ls.set(p,l);if(l.has(r))return;l.add(r);for(let f in a){let m=a[f];Object.defineProperty(p,f,{configurable:!0,enumerable:!1,get(){let h=m.bind(this);return Object.defineProperty(this,f,{configurable:!0,writable:!0,enumerable:!0,value:h}),h},set(h){Object.defineProperty(this,f,{configurable:!0,writable:!0,enumerable:!0,value:h})}})}}var T=z("ZodType",(e,r)=>(E.init(e,r),Object.assign(e["~standard"],{jsonSchema:{input:_e(e,"input"),output:_e(e,"output")}}),e.toJSONSchema=is(e,{}),e.def=r,e.type=r.type,Object.defineProperty(e,"_def",{value:r}),e.parse=(a,p)=>Ps(e,a,p,{callee:e.parse}),e.safeParse=(a,p)=>Os(e,a,p),e.parseAsync=async(a,p)=>Ss(e,a,p,{callee:e.parseAsync}),e.safeParseAsync=async(a,p)=>Es(e,a,p),e.spa=e.safeParseAsync,e.encode=(a,p)=>Is(e,a,p),e.decode=(a,p)=>Ts(e,a,p),e.encodeAsync=async(a,p)=>Ns(e,a,p),e.decodeAsync=async(a,p)=>As(e,a,p),e.safeEncode=(a,p)=>js(e,a,p),e.safeDecode=(a,p)=>Cs(e,a,p),e.safeEncodeAsync=async(a,p)=>Rs(e,a,p),e.safeDecodeAsync=async(a,p)=>Ds(e,a,p),ye(e,"ZodType",{check(...a){let p=this.def;return this.clone(W(p,{checks:[...p.checks??[],...a.map((l)=>typeof l==="function"?{_zod:{check:l,def:{check:"custom"},onattach:[]}}:l)]}),{parent:!0})},with(...a){return this.check(...a)},clone(a,p){return M(this,a,p)},brand(){return this},register(a,p){return a.add(this,p),this},refine(a,p){return this.check(hc(a,p))},superRefine(a,p){return this.check(_c(a,p))},overwrite(a){return this.check(Y(a))},optional(){return Us(this)},exactOptional(){return tc(this)},nullable(){return Ms(this)},nullish(){return Us(Ms(this))},nonoptional(a){return uc(this,a)},array(){return u(this)},or(a){return Q([this,a])},and(a){return Xi(this,a)},transform(a){return Js(this,ec(a))},default(a){return sc(this,a)},prefault(a){return cc(this,a)},catch(a){return pc(this,a)},pipe(a){return Js(this,a)},readonly(){return dc(this)},describe(a){let p=this.clone();return te.add(p,{description:a}),p},meta(...a){if(a.length===0)return te.get(this);let p=this.clone();return te.add(p,a[0]),p},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(a){return a(this)}}),Object.defineProperty(e,"description",{get(){return te.get(e)?.description},configurable:!0}),e)),Bs=z("_ZodString",(e,r)=>{Ae.init(e,r),T.init(e,r),e._zod.processJSONSchema=(p,l,f)=>xr(e,p,l,f);let a=e._zod.bag;e.format=a.format??null,e.minLength=a.minimum??null,e.maxLength=a.maximum??null,ye(e,"_ZodString",{regex(...p){return this.check(cr(...p))},includes(...p){return this.check(pr(...p))},startsWith(...p){return this.check(lr(...p))},endsWith(...p){return this.check(fr(...p))},min(...p){return this.check(ie(...p))},max(...p){return this.check(Le(...p))},length(...p){return this.check(Fe(...p))},nonempty(...p){return this.check(ie(1,...p))},lowercase(p){return this.check(ur(p))},uppercase(p){return this.check(ar(p))},trim(){return this.check(mr())},normalize(...p){return this.check(dr(...p))},toLowerCase(){return this.check(hr())},toUpperCase(){return this.check(_r())},slugify(){return this.check(gr())}})}),Zi=z("ZodString",(e,r)=>{Ae.init(e,r),Bs.init(e,r),e.email=(a)=>e.check(Pn(Pi,a)),e.url=(a)=>e.check(ir(Vs,a)),e.jwt=(a)=>e.check(Vn(Mi,a)),e.emoji=(a)=>e.check(In(Si,a)),e.guid=(a)=>e.check(je(Kr,a)),e.uuid=(a)=>e.check(sr(ve,a)),e.uuidv4=(a)=>e.check(Sn(ve,a)),e.uuidv6=(a)=>e.check(On(ve,a)),e.uuidv7=(a)=>e.check(En(ve,a)),e.nanoid=(a)=>e.check(Tn(Oi,a)),e.guid=(a)=>e.check(je(Kr,a)),e.cuid=(a)=>e.check(Nn(Ei,a)),e.cuid2=(a)=>e.check(An(Ii,a)),e.ulid=(a)=>e.check(jn(Ti,a)),e.base64=(a)=>e.check(Mn(Li,a)),e.base64url=(a)=>e.check(Jn(Fi,a)),e.xid=(a)=>e.check(Cn(Ni,a)),e.ksuid=(a)=>e.check(Rn(Ai,a)),e.ipv4=(a)=>e.check(Dn(ji,a)),e.ipv6=(a)=>e.check(Ln(Ci,a)),e.cidrv4=(a)=>e.check(Fn(Ri,a)),e.cidrv6=(a)=>e.check(Un(Di,a)),e.e164=(a)=>e.check(Bn(Ui,a)),e.datetime=(a)=>e.check(Ur(a)),e.date=(a)=>e.check(Mr(a)),e.time=(a)=>e.check(Jr(a)),e.duration=(a)=>e.check(Br(a))});function t(e){return Zn(Zi,e)}var N=z("ZodStringFormat",(e,r)=>{I.init(e,r),Bs.init(e,r)}),Pi=z("ZodEmail",(e,r)=>{Zo.init(e,r),N.init(e,r)});var Kr=z("ZodGUID",(e,r)=>{wo.init(e,r),N.init(e,r)});function pt(e){return je(Kr,e)}var ve=z("ZodUUID",(e,r)=>{ko.init(e,r),N.init(e,r)});function A(e){return sr(ve,e)}var Vs=z("ZodURL",(e,r)=>{Po.init(e,r),N.init(e,r)});function ht(e){return ir(Vs,e)}var Si=z("ZodEmoji",(e,r)=>{So.init(e,r),N.init(e,r)});var Oi=z("ZodNanoID",(e,r)=>{Oo.init(e,r),N.init(e,r)});var Ei=z("ZodCUID",(e,r)=>{Eo.init(e,r),N.init(e,r)});var Ii=z("ZodCUID2",(e,r)=>{Io.init(e,r),N.init(e,r)});var Ti=z("ZodULID",(e,r)=>{To.init(e,r),N.init(e,r)});var Ni=z("ZodXID",(e,r)=>{Ao.init(e,r),N.init(e,r)});var Ai=z("ZodKSUID",(e,r)=>{jo.init(e,r),N.init(e,r)});var ji=z("ZodIPv4",(e,r)=>{Jo.init(e,r),N.init(e,r)});var Ci=z("ZodIPv6",(e,r)=>{Bo.init(e,r),N.init(e,r)});var Ri=z("ZodCIDRv4",(e,r)=>{Vo.init(e,r),N.init(e,r)});var Di=z("ZodCIDRv6",(e,r)=>{Wo.init(e,r),N.init(e,r)});var Li=z("ZodBase64",(e,r)=>{Go.init(e,r),N.init(e,r)});var Fi=z("ZodBase64URL",(e,r)=>{qo.init(e,r),N.init(e,r)});var Ui=z("ZodE164",(e,r)=>{Yo.init(e,r),N.init(e,r)});var Mi=z("ZodJWT",(e,r)=>{Xo.init(e,r),N.init(e,r)});var Ws=z("ZodNumber",(e,r)=>{tr.init(e,r),T.init(e,r),e._zod.processJSONSchema=(p,l,f)=>zr(e,p,l,f),ye(e,"ZodNumber",{gt(p,l){return this.check(Re(p,l))},gte(p,l){return this.check(he(p,l))},min(p,l){return this.check(he(p,l))},lt(p,l){return this.check(Ce(p,l))},lte(p,l){return this.check(me(p,l))},max(p,l){return this.check(me(p,l))},int(p){return this.check(Fs(p))},safe(p){return this.check(Fs(p))},positive(p){return this.check(Re(0,p))},nonnegative(p){return this.check(he(0,p))},negative(p){return this.check(Ce(0,p))},nonpositive(p){return this.check(me(0,p))},multipleOf(p,l){return this.check(De(p,l))},step(p,l){return this.check(De(p,l))},finite(){return this}});let a=e._zod.bag;e.minValue=Math.max(a.minimum??Number.NEGATIVE_INFINITY,a.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(a.maximum??Number.POSITIVE_INFINITY,a.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(a.format??"").includes("int")||Number.isSafeInteger(a.multipleOf??0.5),e.isFinite=!0,e.format=a.format??null});function o(e){return Yn(Ws,e)}var Ji=z("ZodNumberFormat",(e,r)=>{Ho.init(e,r),Ws.init(e,r)});function Fs(e){return Xn(Ji,e)}var Bi=z("ZodBoolean",(e,r)=>{Qo.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>vr(e,a,p,l)});function d(e){return Hn(Bi,e)}var Vi=z("ZodNull",(e,r)=>{en.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>yr(e,a,p,l)});function Do(e){return Qn(Vi,e)}var Wi=z("ZodUnknown",(e,r)=>{rn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>br(e,a,p,l)});function Pe(){return es(Wi)}var Ki=z("ZodNever",(e,r)=>{tn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>$r(e,a,p,l)});function pi(e){return rs(Ki,e)}var Gi=z("ZodArray",(e,r)=>{on.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Sr(e,a,p,l),e.element=r.element,ye(e,"ZodArray",{min(a,p){return this.check(ie(a,p))},nonempty(a){return this.check(ie(1,a))},max(a,p){return this.check(Le(a,p))},length(a,p){return this.check(Fe(a,p))},unwrap(){return this.element}})});function u(e,r){return ts(Gi,e,r)}var Yr=z("ZodObject",(e,r)=>{cn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Or(e,a,p,l),P(e,"shape",()=>r.shape),ye(e,"ZodObject",{keyof(){return s(Object.keys(this._zod.def.shape))},catchall(a){return this.clone({...this._zod.def,catchall:a})},passthrough(){return this.clone({...this._zod.def,catchall:Pe()})},loose(){return this.clone({...this._zod.def,catchall:Pe()})},strict(){return this.clone({...this._zod.def,catchall:pi()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(a){return ri(this,a)},safeExtend(a){return ti(this,a)},merge(a){return oi(this,a)},pick(a){return Qs(this,a)},omit(a){return ei(this,a)},partial(...a){return ni(Gs,this,a[0])},required(...a){return si(qs,this,a[0])}})});function i(e,r){let a={type:"object",shape:e??{},...b(r)};return new Yr(a)}function c(e,r){return new Yr({type:"object",shape:e,catchall:pi(),...b(r)})}function No(e,r){return new Yr({type:"object",shape:e,catchall:Pe(),...b(r)})}var Ks=z("ZodUnion",(e,r)=>{or.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Er(e,a,p,l),e.options=r.options});function Q(e,r){return new Ks({type:"union",options:e,...b(r)})}var qi=z("ZodDiscriminatedUnion",(e,r)=>{Ks.init(e,r),un.init(e,r)});function _(e,r,a){return new qi({type:"union",options:r,discriminator:e,...b(a)})}var Yi=z("ZodIntersection",(e,r)=>{an.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Ir(e,a,p,l)});function Xi(e,r){return new Yi({type:"intersection",left:e,right:r})}var Gr=z("ZodRecord",(e,r)=>{pn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Tr(e,a,p,l),e.keyType=r.keyType,e.valueType=r.valueType});function oe(e,r,a){if(!r||!r._zod)return new Gr({type:"record",keyType:t(),valueType:e,...b(r)});return new Gr({type:"record",keyType:e,valueType:r,...b(a)})}function Lo(e,r,a){let p=M(e);return p._zod.values=void 0,new Gr({type:"record",keyType:p,valueType:r,...b(a)})}var qr=z("ZodEnum",(e,r)=>{ln.init(e,r),T.init(e,r),e._zod.processJSONSchema=(p,l,f)=>wr(e,p,l,f),e.enum=r.entries,e.options=Object.values(r.entries);let a=new Set(Object.keys(r.entries));e.extract=(p,l)=>{let f={};for(let m of p)if(a.has(m))f[m]=r.entries[m];else throw Error(`Key ${m} not found in enum`);return new qr({...r,checks:[],...b(l),entries:f})},e.exclude=(p,l)=>{let f={...r.entries};for(let m of p)if(a.has(m))delete f[m];else throw Error(`Key ${m} not found in enum`);return new qr({...r,checks:[],...b(l),entries:f})}});function s(e,r){let a=Array.isArray(e)?Object.fromEntries(e.map((p)=>[p,p])):e;return new qr({type:"enum",entries:a,...b(r)})}var Hi=z("ZodLiteral",(e,r)=>{fn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>kr(e,a,p,l),e.values=new Set(r.values),Object.defineProperty(e,"value",{get(){if(r.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return r.values[0]}})});function n(e,r){return new Hi({type:"literal",values:Array.isArray(e)?e:[e],...b(r)})}var Qi=z("ZodTransform",(e,r)=>{dn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Pr(e,a,p,l),e._zod.parse=(a,p)=>{if(p.direction==="backward")throw new ue(e.constructor.name);a.addIssue=(f)=>{if(typeof f==="string")a.issues.push(re(f,a.value,r));else{let m=f;if(m.fatal)m.continue=!1;m.code??(m.code="custom"),m.input??(m.input=a.value),m.inst??(m.inst=e),a.issues.push(re(m))}};let l=r.transform(a.value,a);if(l instanceof Promise)return l.then((f)=>(a.value=f,a.fallback=!0,a));return a.value=l,a.fallback=!0,a}});function ec(e){return new Qi({type:"transform",transform:e})}var Gs=z("ZodOptional",(e,r)=>{nr.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Ue(e,a,p,l),e.unwrap=()=>e._zod.def.innerType});function Us(e){return new Gs({type:"optional",innerType:e})}var rc=z("ZodExactOptional",(e,r)=>{mn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Ue(e,a,p,l),e.unwrap=()=>e._zod.def.innerType});function tc(e){return new rc({type:"optional",innerType:e})}var oc=z("ZodNullable",(e,r)=>{hn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Nr(e,a,p,l),e.unwrap=()=>e._zod.def.innerType});function Ms(e){return new oc({type:"nullable",innerType:e})}var nc=z("ZodDefault",(e,r)=>{_n.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>jr(e,a,p,l),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function sc(e,r){return new nc({type:"default",innerType:e,get defaultValue(){return typeof r==="function"?r():Ke(r)}})}var ic=z("ZodPrefault",(e,r)=>{gn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Cr(e,a,p,l),e.unwrap=()=>e._zod.def.innerType});function cc(e,r){return new ic({type:"prefault",innerType:e,get defaultValue(){return typeof r==="function"?r():Ke(r)}})}var qs=z("ZodNonOptional",(e,r)=>{xn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Ar(e,a,p,l),e.unwrap=()=>e._zod.def.innerType});function uc(e,r){return new qs({type:"nonoptional",innerType:e,...b(r)})}var ac=z("ZodCatch",(e,r)=>{zn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Rr(e,a,p,l),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function pc(e,r){return new ac({type:"catch",innerType:e,catchValue:typeof r==="function"?r:()=>r})}var lc=z("ZodPipe",(e,r)=>{vn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Dr(e,a,p,l),e.in=r.in,e.out=r.out});function Js(e,r){return new lc({type:"pipe",in:e,out:r})}var fc=z("ZodReadonly",(e,r)=>{yn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Lr(e,a,p,l),e.unwrap=()=>e._zod.def.innerType});function dc(e){return new fc({type:"readonly",innerType:e})}var mc=z("ZodLazy",(e,r)=>{$n.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Fr(e,a,p,l),e.unwrap=()=>e._zod.def.getter()});function go(e){return new mc({type:"lazy",getter:e})}var Ys=z("ZodCustom",(e,r)=>{bn.init(e,r),T.init(e,r),e._zod.processJSONSchema=(a,p,l)=>Zr(e,a,p,l)});function Vr(e,r){return os(Ys,e??(()=>!0),r)}function hc(e,r={}){return ns(Ys,e,r)}function _c(e,r){return ss(e,r)}export{fo,L,ui,di,mo,Wr,y,t,pt,A,ht,o,d,Do,Pe,pi,u,i,c,No,Q,_,oe,Lo,s,n,go,Vr};
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import"./vm-hands-entry-lite-8tcnbfnm.js";import"./vm-hands-entry-lite-ky0w7t09.js";import"./vm-hands-entry-lite-vr38bh6k.js";import{Xk as B}from"./vm-hands-entry-lite-72nn2b4n.js";import{readFileSync as J}from"fs";var G=performance.now();delete process.env.BUN_BE_BUN;var z=(q,b={})=>console.log(JSON.stringify({stage:q,ms:Math.round(performance.now()),...b}));async function K(){if(process.argv.includes("--vm-hands-op-runner")){let{runVmHandsOpRunner:j}=await import("./vm-hands-op-runner-6amaw4zn.js");await j();return}z("parsed",{t0:Math.round(G)});let q="";try{q=J(3,"utf8")}catch{}z("fd3_read",{bytes:q.length});let b=null;if(q.trim())try{b=JSON.parse(q)}catch{b=null}if(!b||typeof b!=="object"||Array.isArray(b))z(q.trim()?"identity_invalid":"identity_free"),await new Promise(()=>{setInterval(()=>{return},1073741824)});let{parseVmHandsInit:C,runVmHands:D}=await import("./vm-hands-runtime-jt4j6362.js"),A=C(b);if(!A)z("identity_invalid"),await new Promise(()=>{setInterval(()=>{return},1073741824)});try{await D(A,z)}catch(j){let E=j&&typeof j==="object"&&"code"in j&&typeof j.code==="string"?j.code:"error";throw z("failed",{code:E}),j}process.exit(0)}K();
|
|
2
|
+
import{Mn,ut,Bn,Fn,jn,li}from"./vm-hands-entry-lite-ym1djztp.js";import{createHash as W,randomBytes as le}from"crypto";import{closeSync as be,fsyncSync as ke,mkdirSync as Ke,openSync as Se,renameSync as He,rmSync as Le,statSync as Ie,writeSync as Ee,constants as q}from"fs";import{join as ee}from"path";var Je=1;var ne=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function ue(e){if(e.environment!==void 0||e.payload.environment!==void 0)throw new l("vm_hands_bind_invalid","bind carries a plaintext environment");if(e.payload.vm_hands_env_deferred===!0&&e.environment_sealed!==void 0)throw new l("vm_hands_bind_invalid","split bind carries an environment");return e.environment_sealed!==void 0}function ye(e,n){let{payload:i,authority:r}=e;if(!i||typeof i!=="object"||Array.isArray(i)||!r||typeof r!=="object"||Array.isArray(r)||!n.deviceId||!n.rootId||i.run_id!==n.runId||i.device_id!==n.deviceId||r.device_id!==n.deviceId||i.root_id!==n.rootId||n.snapshotId!==void 0&&i.snapshot_id!==n.snapshotId)throw new l("vm_hands_env_invalid","environment does not match this Hands");return i}function Pe(e){if(e.capability!=="hands.connect")throw new l("vm_hands_bind_invalid","not a hands.connect claim");let n=e.payload;return{kind:"vm_hands.bind",v:1,bind_id:e.attempt_id,attempt_id:e.attempt_id,attempt_token:e.attempt_token,run_id:e.run_id,session_id:typeof n.workspace_id==="string"&&ne.test(n.workspace_id)?n.workspace_id:e.run_id,brain_generation:n.target_generation,fence_id:n.target_fence_id,lease_until:e.lease_until,policy:{agent_profile:"",confinement_key:String(n.hands_confinement??""),browser_egress:n.browser_egress??null,policy_digest:n.vm_hands_policy_digest},cwd:typeof n.cwd==="string"?n.cwd:"",claim:e,env:ue(e)?e.environment_sealed:null,workspace_deferred:Ye(e)}}function Ye(e){let n=e.payload[Bn];if(n===void 0)return!1;if(n!==!0||e.payload.vm_hands_env_deferred!==!0||e.environment_sealed!==void 0)throw new l("vm_hands_bind_invalid","a pre-bind must be environment-less");return!0}class l extends Error{code;constructor(e,n){super(n);this.code=e}}var B=(e)=>Buffer.from(e instanceof Uint8Array?e:new Uint8Array(e)).toString("base64url"),F=(e)=>new Uint8Array(Buffer.from(e,"base64url"));function V(e){if(e===null||typeof e!=="object")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(V).join(",")}]`;return`{${Object.keys(e).sort().map((n)=>`${JSON.stringify(n)}:${V(e[n])}`).join(",")}}`}async function _i(e){let n=await crypto.subtle.importKey("pkcs8",F(e.device_key.pkcs8),{name:"ECDSA",namedCurve:"P-256"},!1,["sign"]),i=F(e.device_key.spki),r=await crypto.subtle.generateKey({name:"ECDH",namedCurve:"P-256"},!1,["deriveKey"]),g=new Uint8Array(await crypto.subtle.exportKey("spki",r.publicKey)),_=W("sha256").update(i).digest("base64url");return{signing:{privateKey:n},agreement:r,signingSpki:i,agreementSpki:g,fingerprint:_}}var Xe=4;class Jr{init;keys;hooks;options;identity="identity_free";lastBrainGeneration=new Map;bound=new Map;binding=new Map;unbinding=new Set;servedRun=!1;commandsSinceVerified=!1;bootKillPending=!1;unverified=new Set;unverifiedTeardowns=new Map;grants=new Map;structural=Promise.resolve();exclusive(e){let n=this.structural.then(e,e);return this.structural=n.catch(()=>{return}),n}constructor(e,n,i,r){this.init=e;this.keys=n;this.hooks=i;this.options=r;if(!ne.test(e.workspace_id)&&!/^ws-[a-z0-9]{8,64}$/.test(e.workspace_id))throw new l("vm_hands_layout_invalid","bad workspace id");if(!Number.isSafeInteger(e.instance_generation)||e.instance_generation<1)throw new l("vm_hands_layout_invalid","bad generation")}get phase(){if(this.identity==="identity_free")return"identity_free";if(this.unbinding.size)return"unbinding";return this.bound.size||this.binding.size?"bound":"registered"}isBoundRun(e){for(let n of this.bound.values())if(n.runId===e)return!0;return!1}bindIdForRun(e){for(let n of this.bound.values())if(n.runId===e)return n.bindId;return null}get liveBindIds(){return[...new Set([...this.bound.keys(),...this.binding.keys(),...this.unbinding])]}async environmentInstalled(e,n,i){for(let r=Date.now()+n;;){let g=this.bound.get(e);if(!g)return!1;if(g.envInstalled)return!0;if(Date.now()>=r||i?.aborted)return!1;await new Promise((_)=>setTimeout(_,25))}}opServed(){this.commandsSinceVerified=!0}canSpawn(e){for(let n of this.bound.values())if(n.runId===e)return n.envInstalled;return!1}async registerFrame(e){if(this.identity!=="identity_free")throw new l("vm_hands_register_twice","already registered");if(typeof e!=="string"||e.length<16||e.length>256)throw new l("vm_hands_challenge_invalid","bad register challenge");let n={challenge:e,t:"register",v:Je,workspace_id:this.init.workspace_id,instance_generation:this.init.instance_generation,credential:this.init.credential,device_public_key:B(this.keys.signingSpki),env_public_key:B(this.keys.agreementSpki),key_fingerprint:this.keys.fingerprint,manifest_digest:this.init.manifest_digest,nonce:B(le(32)),timestamp_ms:(this.options.now??Date.now)(),vm_hands_attest_hold:!0},i=await crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},this.keys.signing.privateKey,new TextEncoder().encode(V(n)));return{...n,device_signature:B(i)}}async helloFrame(e,n){if(this.identity==="identity_free")throw new l("vm_hands_not_registered","hello before register");let i=String((this.options.now??Date.now)()),r=B(le(32)),g=li({method:"GET",pathAndQuery:Mn,timestamp:i,nonce:r,challenge:e,bodySha256:W("sha256").update("").digest("hex")}),_=new Uint8Array(await crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},this.keys.signing.privateKey,new Uint8Array(g)));return{t:"hello",timestamp:i,nonce:r,signature:B(Qe(_)),...n?{vm_hands_previous_connection:n}:{}}}registered(){if(this.identity!=="identity_free")throw new l("vm_hands_register_unexpected","registered twice");this.identity="registered"}async bind(e){if(this.identity!=="registered")throw new l("vm_hands_not_registered","bind before register");if(e.kind!=="vm_hands.bind"||e.v!==1)throw new l("vm_hands_bind_invalid","bad bind");for(let i of[e.bind_id,e.attempt_id,e.run_id,e.session_id,e.fence_id])if(!ne.test(i))throw new l("vm_hands_bind_invalid","bad id");if(!Number.isSafeInteger(e.brain_generation)||e.brain_generation<=(this.lastBrainGeneration.get(e.run_id)??0))throw new l("vm_hands_generation_stale","brain generation not strictly higher");if(e.env&&(e.env.aad!==e.bind_id||e.env.alg!=="ECDH-P256+A256GCM"))throw new l("vm_hands_bind_invalid","bad env envelope");if(!/^[0-9a-f]{64}$/.test(e.policy.policy_digest))throw new l("vm_hands_bind_invalid","bad policy or nonce");if(W("sha256").update(V({hands_confinement:e.policy.confinement_key||null,browser_egress:e.policy.browser_egress??null})).digest("hex")!==e.policy.policy_digest)throw new l("vm_hands_policy_mismatch","policy digest does not match the claim");if(this.liveBindIds.includes(e.bind_id)||[...this.bound.values()].some((i)=>i.runId===e.run_id)||[...this.binding.values()].includes(e.run_id))throw new l("vm_hands_busy","this run already holds a bind here");if(this.liveBindIds.length>=Xe)throw new l("vm_hands_busy","every bind slot is held");if(this.grants.size)throw new l("vm_hands_busy","a bind waits for its workspace beside the setup");if(e.workspace_deferred&&(this.liveBindIds.length||this.commandsSinceVerified))throw new l("vm_hands_prebind_unsafe","a pre-bind needs a VM that served nothing since its last full kill");if(this.lastBrainGeneration.set(e.run_id,e.brain_generation),this.binding.set(e.bind_id,e.run_id),e.workspace_deferred){let i,r,g=new Promise((_,u)=>{i=_,r=u});g.catch(()=>{return}),this.grants.set(e.bind_id,{promise:g,resolve:i,reject:r})}return this.exclusive(()=>this.setUp(e))}async setUp(e){let n=[...this.bound.keys()],i=null,r=!1,g=this.grants.get(e.bind_id);try{if(g&&(n.length||this.commandsSinceVerified))throw new l("vm_hands_prebind_unsafe","a pre-bind needs a VM that served nothing since its last full kill");if(n.length===0){if(this.bootKillPending&&!this.servedRun){try{await this.hooks.killProbe()}catch{throw new l("vm_hands_kill_unverified","the boot's scoped kill did not verify")}this.bootKillPending=!1}if(this.commandsSinceVerified)await this.hooks.killAndVerifyPayload(),this.unverified.clear(),this.commandsSinceVerified=!1;else if(this.unverified.size>0)await this.hooks.killAndVerifyPayload({own:!0}),this.unverified.clear()}else if(this.unverified.size>0)await this.hooks.killAndVerifyPayload({keep:n}),this.unverified.clear();this.servedRun=!0,r=!0;let{launchId:_,applied:u,readyData:y}=await this.hooks.startExecutor({bindId:e.bind_id,sessionId:e.session_id,policyDigest:e.policy.policy_digest,confinementKey:e.policy.confinement_key,browserEgress:e.policy.browser_egress,cwd:e.cwd,claim:e.claim,...g?{workspaceGrant:g.promise}:{}}),S=this.hooks.restatLayout();this.hooks.verifyMounts?.();let I=null,v=null;if(e.env){let A=e.claim?.owner??{},M=ye(await this.openSealed(e.env,e.bind_id),{runId:e.run_id,deviceId:typeof A.device_id==="string"?A.device_id:"",rootId:e.claim?.root_id??""});this.commandsSinceVerified=!0,I=this.hooks.installEnvironment(e.bind_id,M),v=typeof M.snapshot_id==="string"&&M.snapshot_id?M.snapshot_id:null,i=this.writeJobEnvRootOnly(e.bind_id,M)}if(this.unbinding.has(e.bind_id))throw new l("vm_hands_bind_lost","unbound while binding");return this.bound.set(e.bind_id,{bindId:e.bind_id,runId:e.run_id,sessionId:e.session_id,brainGeneration:e.brain_generation,policyDigest:e.policy.policy_digest,launchId:_,envInstalled:I!==null,rootId:e.claim?.root_id??"",envDirectory:i}),this.binding.delete(e.bind_id),this.grants.delete(e.bind_id),{bind_id:e.bind_id,attempt_id:e.attempt_id,attempt_token:e.attempt_token,launch_id:_,snapshot_revision:I,snapshot_id:v,layout:S,...y?{ready_data:y}:{},policy_digest:W("sha256").update(V({hands_confinement:u.hands_confinement??null,browser_egress:u.browser_egress??null})).digest("hex")}}catch(_){if(i)_e(i);if(r){let y=[...this.bound.keys()];await this.hooks.killAndVerifyPayload({bindId:e.bind_id,keep:y,own:!0}).catch(()=>{this.unverified.add(e.bind_id)})}this.binding.delete(e.bind_id),this.grants.delete(e.bind_id);let u=_&&typeof _==="object"&&"code"in _&&typeof _.code==="string"&&/^[a-z][a-z0-9_]{2,63}$/.test(_.code)?_.code:"vm_hands_bind_failed";throw _ instanceof l?_:new l(u,"executor refused the bind")}}grantWorkspace(e){let n=this.grants.get(e);if(!n)throw new l("vm_hands_not_binding","no pre-bind waits for a workspace grant");n.resolve()}abandonWorkspaceGrant(e){this.grants.get(e)?.reject(new l("vm_hands_bind_lost","the pre-bind ended before its workspace grant"))}async deliverEnvironment(e){let n=this.bound.get(e.attemptId);if(!n||this.unbinding.has(e.attemptId))throw new l("vm_hands_not_bound","environment delivered while not bound");if(!ne.test(e.attemptId)||typeof e.snapshotId!=="string"||!e.snapshotId||e.snapshotId.length>128||e.snapshotId.includes("/"))throw new l("vm_hands_env_invalid","bad snapshot id");let i=`${e.attemptId}/${e.snapshotId}`;if(e.sealed?.alg!=="ECDH-P256+A256GCM"||e.sealed.aad!==i)throw new l("vm_hands_env_invalid","bad env envelope");let r=ye(await this.openSealed(e.sealed,i),{runId:n.runId,deviceId:e.deviceId,rootId:n.rootId,snapshotId:e.snapshotId});this.commandsSinceVerified=!0;let g=this.hooks.installEnvironment(n.bindId,r);if(n.envInstalled=!0,n.envDirectory)_e(n.envDirectory);return n.envDirectory=null,n.envDirectory=this.writeJobEnvRootOnly(`${n.bindId}-r${g}`,r),{snapshot_id:e.snapshotId,installed_revision:g,installed:!0}}async attestFrame(e,n){if(this.identity==="identity_free")throw new l("vm_hands_not_registered","attest before register");if(!e||e.length>65536)throw new l("vm_hands_attest_invalid","no probe script");return this.exclusive(async()=>{if(this.liveBindIds.length)throw new l("vm_hands_attest_invalid","attest beside a bind");let i=await this.hooks.runProbe({nonce:n,script:e});try{await this.hooks.killProbe()}catch{this.bootKillPending=!0}return{t:"attest",nonce:n,exit_code:i.exitCode,markers:i.markers,proof_dir_inode:i.proofDirInode,script_sha256:W("sha256").update(e).digest("hex")}})}executorExited(e){return this.hooks.executorExited?.(e)??new Promise(()=>{})}async boundRefused(e){await this.unbind(e)}async unbind(e){let n=this.bound.get(e)??null;if(this.unbinding.add(e),this.bound.delete(e),this.abandonWorkspaceGrant(e),n)try{this.hooks.freezeBind?.(e)}catch{}return this.exclusive(()=>this.tearDown(e,n))}async retryUnbind(e){if(!this.unverifiedTeardowns.has(e))throw new l("vm_hands_unbind_unknown","no unverified unbind of this bind");return this.exclusive(async()=>{if(!this.unverifiedTeardowns.has(e))throw new l("vm_hands_unbind_unknown","no unverified unbind of this bind");return this.tearDown(e,this.unverifiedTeardowns.get(e)??null,!0)})}async tearDown(e,n,i=!1){try{this.bound.delete(e);let r=[...this.bound.keys()].filter((_)=>_!==e),g=!r.length&&(i||!this.commandsSinceVerified);try{await this.hooks.killAndVerifyPayload(r.length?{bindId:e,keep:r}:g?{bindId:e,own:!0}:void 0)}catch(_){if(this.unverified.add(e),!this.unverifiedTeardowns.has(e))this.unverifiedTeardowns.set(e,n);throw _}if(this.unverified.delete(e),!r.length&&!i)this.unverified.clear(),this.commandsSinceVerified=!1;if(n?.envDirectory)_e(n.envDirectory);return this.unverifiedTeardowns.delete(e),{bind_id:n?e:null,killed_verified:!0,shredded:!0,srt_fallbacks:r.length||i?null:this.hooks.takeSrtFallbacks?.()??null}}finally{this.unbinding.delete(e)}}async openSealed(e,n){let i=()=>{throw new l("vm_hands_env_invalid","env did not decrypt")},r=await crypto.subtle.importKey("spki",F(e.epk),{name:"ECDH",namedCurve:"P-256"},!1,[]).catch(i),g=await crypto.subtle.deriveKey({name:"ECDH",public:r},this.keys.agreement.privateKey,{name:"AES-GCM",length:256},!1,["decrypt"]),_=await crypto.subtle.decrypt({name:"AES-GCM",iv:F(e.iv),additionalData:new TextEncoder().encode(n)},g,F(e.ct)).catch(i),u=JSON.parse(new TextDecoder().decode(_));if(!u||typeof u!=="object"||Array.isArray(u))throw new l("vm_hands_env_invalid","env not an object");return u}writeJobEnvRootOnly(e,n){let i=ee(this.options.envRoot,`bind-${e}`);Ke(i,{mode:448});let r=Ie(i);if(!r.isDirectory()||(r.mode&63)!==0||r.uid!==(process.getuid?.()??-1))throw new l("vm_hands_env_dir_unsafe","env directory is not root's 0700");let g=n.variables&&typeof n.variables==="object"?n.variables:{},_=Object.entries(g).filter(([S,I])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(S)&&typeof I==="string").map(([S,I])=>`export ${S}='${String(I).replaceAll("'","'\\''")}'`).join(`
|
|
3
|
+
`)+`
|
|
4
|
+
`,u=ee(i,`.job.env.${le(8).toString("hex")}`),y=Se(u,q.O_WRONLY|q.O_CREAT|q.O_EXCL|q.O_NOFOLLOW,384);try{Ee(y,_),ke(y)}finally{be(y)}return He(u,ee(i,"job.env")),i}}function _e(e){try{let n=ee(e,"job.env"),i=Ie(n).size,r=Se(n,q.O_WRONLY|q.O_NOFOLLOW);try{Ee(r,Buffer.alloc(i)),ke(r)}finally{be(r)}}catch{}Le(e,{recursive:!0,force:!0})}function Qe(e){if(e.length!==64)throw new l("vm_hands_signature_invalid","unexpected ECDSA signature length");let n=(g)=>{let _=0;while(_<g.length-1&&g[_]===0)_++;let u=g.subarray(_),y=u[0]&128?Uint8Array.of(0,...u):u;return Uint8Array.of(2,y.length,...y)},i=n(e.subarray(0,32)),r=n(e.subarray(32));return Uint8Array.of(48,i.length+r.length,...i,...r)}import{randomUUID as Ze}from"crypto";var en="/app/local-runtime/session?register=vm_hands_v1",nn="/app/local-runtime",Te=25000,Ae=20000,tn=1e4,Me=5000,Re=new Set(["pty.start","jobs.control","preview.serve.v1","display.stream.v1"]),me=75000,rn=2000,sn=1e4,on=new Set(["vm_hands_no_register","vm_hands_register_failed"]),an=3,dn=20000,cn=250,ln=2000;function Ce(e){let n=Math.min(cn*2**(e-1),ln);return Math.round(n/2+Math.random()*n/2)}var _n=5000;function un(e){return e>=500||e===408||e===429}var te=20000;function xe(e,n){return typeof e==="string"&&/^[A-Za-z0-9._:-]{1,160}$/.test(e)?e:n}class O extends Error{}var mn=64,De=[1000,2000,4000,8000,15000,30000,60000,120000];function Ne(e){let n=e&&typeof e==="object"&&"code"in e?e.code:null;return typeof n==="string"&&/^[a-z][a-z0-9_]{2,63}$/.test(n)?n:"vm_hands_unbind_failed"}function hn(e,n,i,r,g){let _=i.turn.claim.attempt_id,u=e.healing??=new Set;if(u.has(_))return;u.add(_);let y=i.turn.claim.operation_id;(async()=>{for(let[S,I]of De.entries()){if(r.aborted)return;if(await new Promise((v)=>{let A=setTimeout(v,I);A.unref?.(),r.addEventListener("abort",()=>{clearTimeout(A),v()},{once:!0})}),r.aborted)return;try{let v=await n.retryUnbind(_);g("vm_hands.unbind_healed",{operation_id:y,attempt:S+1}),e.receipts.push({...i,unbound:v}),e.flushReceipts?.();return}catch(v){let A=Ne(v);if(g("vm_hands.unbind_unverified",{operation_id:y,code:A,attempt:S+1}),A==="vm_hands_unbind_unknown")return}}g("vm_hands.unbind_heal_exhausted",{operation_id:y,attempts:De.length})})().finally(()=>u.delete(_))}async function Be(e,n){let i=[...e.modelOps.get(n)??[]];for(let r of i)r.abort.abort();await Promise.race([Promise.all(i.map((r)=>r.settled)),new Promise((r)=>setTimeout(r,Me))])}async function gn(e){let n=[...e.personTerminals];for(let i of n)i.abort.abort();if(n.length)await Promise.race([Promise.all(n.map((i)=>i.settled)),new Promise((i)=>setTimeout(i,Me))]);return n.length}async function z(e,n,i){return await Be(e,i),n.unbind(i)}function ie(e){for(let n of e.outbox?.splice(0)??[])n.reject(Error("vm_hands_attempt_ended"))}var Oe=15000,fn=1e4,pn=1000;async function yi(e){let n=Date.now(),i={deviceId:null,connection:null,turns:new Map,lostAt:0,receipts:[],attest:"pending",attestWaiters:[],modelOps:new Map,personTerminals:new Set,bindsStarting:0},r=e.log??(()=>{}),g=async(y)=>{for(let[S,I]of[...i.turns]){i.turns.delete(S),e.onTurn?.(S,null),ie(I);let v=await z(i,e.agent,S).catch(()=>null);if(v)i.receipts.push({turn:I,failure:"vm_hands_bind_lost",unbound:v});r("vm_hands.bound_dropped",{reason:y})}},_=0,u=0;try{for(let y=0;!e.signal.aborted;y++){let S=await vn(e,i).catch((v)=>{if(v instanceof l&&i.deviceId===null&&v.code==="vm_hands_no_session"&&Date.now()-n<sn)return{closeCode:0,closeReason:"vm_hands_no_session"};if(v instanceof l&&i.deviceId===null&&on.has(v.code)&&_<an&&Date.now()-n<dn)return _++,u=Ce(_),r("vm_hands.register_retry",{attempt:_,code:v.code,delay_ms:u}),{closeCode:0,closeReason:"vm_hands_register_retry"};if(v instanceof l&&i.deviceId===null)throw v;return{closeCode:0,closeReason:v instanceof Error?v.message:String(v)}});if(r("vm_hands.session_closed",{close_code:S.closeCode,reason:S.closeReason.slice(0,120),registered:i.deviceId!==null}),S.closeCode===4401||i.attest==="refused")return;if(e.signal.aborted)return;if(i.turns.size&&Date.now()-i.lostAt>=me)await g("reconnect_deadline");if(i.served)i.served=!1,y=0;let I=S.closeReason==="drain_reconnect"?0:S.closeReason==="vm_hands_register_retry"?u:S.closeReason==="vm_hands_no_session"?Math.min(250*2**Math.min(y,5),2000):i.turns.size?Math.min(250*2**Math.min(y,5),5000,Math.max(0,i.lostAt+me-Date.now())):Math.min(500*2**y,30000);if(await new Promise((v)=>setTimeout(v,I)),i.turns.size&&Date.now()-i.lostAt>=me)await g("reconnect_deadline")}}finally{await g("session_ended")}}async function vn(e,n){let i=n.deviceId,r=e.log??(()=>{}),g=i?`/app/local-runtime/session?device_id=${encodeURIComponent(i)}`:en,_=`${e.apiOrigin.replace(/^http/,"ws")}${g}`,u=new WebSocket(_),y=0,S="",I=new Map,v=[],A=null,M=new Promise((t)=>{u.onclose=(o)=>{y=o.code,S=o.reason;for(let s of I.values())s.reject(new O(`session closed ${o.code}`));for(let s of n.attestWaiters.splice(0))s(!1);I.clear(),t()}});u.onmessage=(t)=>{let o;try{o=JSON.parse(String(t.data))}catch{u.close(4400);return}if(o.t==="res"){let s=o;I.get(s.id)?.resolve({status:s.status,body:s.body}),I.delete(s.id);return}if(o.t==="reconnect"){let s=Math.max(0,Math.min(Number(o.after_ms)||0,pn));r("vm_hands.drain_reconnect",{after_ms:s}),setTimeout(()=>{try{u.close(4001,"drain_reconnect")}catch{}},s).unref?.();return}if(!A?.(o))v.push(o)};let G=(t,o)=>new Promise((s,c)=>{let h=v.findIndex((p)=>t.includes(p.t));if(h>=0){s(v.splice(h,1)[0]);return}let f=setTimeout(()=>{A=null,c(new l("vm_hands_no_register",`no ${t.join("/")} in ${o} ms`))},o);A=(p)=>{if(!t.includes(p.t))return!1;return clearTimeout(f),A=null,s(p),!0}}),K=(t)=>u.send(JSON.stringify(t)),x=(t,o)=>new Promise((s,c)=>{if(u.readyState!==WebSocket.OPEN){c(new O("session closed"));return}let h=Ze(),f=typeof o.wait_ms==="number"?o.wait_ms:0,p=setTimeout(()=>{if(!I.delete(h))return;c(new O(`no answer to ${t.split("/").pop()} in ${f+Oe} ms`)),u.close(4000,"request_timeout")},f+Oe);I.set(h,{reject:(a)=>{clearTimeout(p),c(a)},resolve:({status:a,body:d})=>{clearTimeout(p);let m=null;try{m=d?JSON.parse(d):null}catch{}s({status:a,json:m})}}),K({t:"req",id:h,path:`${nn}${t}`,body:JSON.stringify(o)})}),he=()=>u.close(1001,"stopping");e.signal.addEventListener("abort",he,{once:!0});let re,H=new Map,L=new Map,se=!1,oe=new Set,ae=new Set,de=Promise.resolve(),ge=()=>{X().catch(()=>{return})},J=!1;try{await new Promise((a,d)=>{let m=setTimeout(()=>d(Error("session open timeout")),fn);u.onopen=()=>{clearTimeout(m),r("vm_hands.ws_open",{}),a()},u.onerror=()=>{clearTimeout(m),d(Error("session socket error"))}});let t=await G(["challenge"],5000);r("vm_hands.challenge",{});let o=[],s=null,c;if(i){K(await e.agent.helloFrame(t.challenge,n.connection));let a=await G(["ready"],1e4);if(typeof a.vm_hands_connection==="string")n.connection=a.vm_hands_connection;if(c={device_id:i,...a.cadence?{cadence:a.cadence}:{}},typeof a.vm_hands_probe_script==="string"){if(s=a.vm_hands_probe_script,J=!0,e.agent.phase==="registered"&&!n.turns.size)n.attest="pending"}n.served=!0,r("vm_hands.reconnected",{device_id:i});let d=Array.isArray(a.vm_hands_binds)?a.vm_hands_binds:a.vm_hands_bind?[a.vm_hands_bind]:[];for(let[m,k]of[...n.turns]){if(d.some((P)=>P&&P.operation_id===k.claim.operation_id&&P.attempt_id===k.claim.attempt_id)){o.push(k),r("vm_hands.bound_resumed",{operation_id:k.claim.operation_id});continue}n.turns.delete(m),e.onTurn?.(m,null),ie(k);let E=await z(n,e.agent,m).catch((P)=>Y(P,k,"vm_hands_bind_lost"));if(E)n.receipts.push({turn:k,failure:"vm_hands_bind_lost",unbound:E});r("vm_hands.bound_dropped",{reason:"not_named_on_reconnect"})}}else{K(await e.agent.registerFrame(t.challenge)),r("vm_hands.register_sent",{});let a=await Promise.race([G(["registered","register_refused"],1e4),M.then(()=>{throw new l(S==="register_failed"?"vm_hands_register_failed":"vm_hands_register_closed","session closed before the register was answered")})]);if(a.t==="register_refused")throw new l(a.code,"register refused");e.agent.registered();let d=a;if(c=d,n.deviceId=d.device_id,typeof d.vm_hands_connection==="string")n.connection=d.vm_hands_connection;if(typeof d.vm_hands_probe_script==="string"){if(s=d.vm_hands_probe_script,J=!0,e.agent.phase==="registered"&&!n.turns.size)n.attest="pending"}n.served=!0,r("vm_hands.registered",{device_id:c.device_id})}let h=async()=>{let a=await x("/heartbeat",await e.heartbeat());if(a.status>=300)throw Error(`heartbeat ${a.status}`)};await h();let f=c.cadence?.presence_interval_ms??30000;if(re=setInterval(()=>{h().catch(()=>u.close())},f),s&&n.attest!=="accepted"&&e.agent.phase==="registered"&&!n.turns.size)$e(s,t.challenge);let p=(a,d)=>{L.set(a,d().catch(async(m)=>{if(await fe(m,a),m instanceof O)u.close();else await X().catch(()=>{return})}).finally(()=>{L.delete(a)}))};n.flushReceipts=ge;try{await X();for(let a of o)a.flush=()=>pe(a),a.flush(),p(a.claim.attempt_id,()=>ve(a));while(!e.signal.aborted&&u.readyState===WebSocket.OPEN){let a=await x("/operations/claim",{wait_ms:Math.min(c.cadence?.claim_wait_ms??Te,Te)});if(a.status===204||!a.json)continue;if(a.status>=300)throw Error(`claim ${a.status}`);let d=a.json;if(d.capability==="hands.connect"){if(L.has(d.attempt_id)){R({claim:d,eventSeq:0}).complete("failed",{error_code:"vm_hands_busy"}).catch(()=>{return});continue}p(d.attempt_id,()=>je(d))}else We(d).catch(()=>{return})}}catch(a){await fe(a,null)}}finally{if(re)clearInterval(re);e.signal.removeEventListener("abort",he);for(let t of n.turns.values())t.flush=null;if(n.flushReceipts===ge)n.flushReceipts=null;u.close(),await M,await Promise.all([...L.values()]);for(let t of e.agent.liveBindIds){if(n.turns.has(t))continue;let o=H.get(t),s=o?{...o,eventSeq:o.eventSeq+1}:null,c=await z(n,e.agent,t).catch((h)=>s?Y(h,s,"vm_hands_bind_lost"):null);if(c&&s)n.receipts.push({turn:s,failure:"vm_hands_bind_lost",unbound:c});r("vm_hands.bound_dropped",{reason:"bound_after_loss"})}for(let t of oe)t.abort()}return{closeCode:y,closeReason:S};async function fe(t,o){if(t instanceof O){if(!se&&n.turns.size)n.lostAt=Date.now();se=!0}else{let s=o!==null?[o]:[...new Set([...n.turns.keys(),...e.agent.liveBindIds])];if(o===null)se=!0;for(let c of s){let h=n.turns.get(c);if(n.turns.delete(c),h)ie(h),e.onTurn?.(c,null);if(e.agent.liveBindIds.includes(c)){let f=H.get(c)??h,p=f?{...f,eventSeq:f.eventSeq+1}:null,a=await z(n,e.agent,c).catch((d)=>p?Y(d,p,"vm_hands_bind_lost"):null);if(a&&p)n.receipts.push({turn:p,failure:"vm_hands_bind_lost",unbound:a})}}}r("vm_hands.session_lost",{error:t instanceof Error?t.message:String(t),bound_kept:n.turns.size})}function R(t){let o=t.claim,s={attempt_id:o.attempt_id,attempt_token:o.attempt_token},c=encodeURIComponent(o.operation_id);return{fence:s,op:c,complete:(f,p={})=>x(`/operations/${c}/complete`,{...s,status:f,...p}),emit:(f,p)=>{let a=(t.chain??Promise.resolve()).catch(()=>{return}).then(()=>h(f,p));return t.chain=a,a}};async function h(f,p){let a=t.eventSeq,d=(P)=>x(`/operations/${c}/events`,{...s,event_seq_start:P,events:[{kind:f,payload:{sequence:P,capability:String(o.capability??"hands.connect"),data:p}}]}),m=a,k=await d(m),E=k.status===409?k.json?.expected_event_seq:void 0;if(typeof E==="number"&&E===a+1)k={status:200,json:{duplicate:!0}};else if(typeof E==="number"&&E>=0&&E!==a)m=E,k=await d(m);if(k.status<300)t.eventSeq=m+1;return k}}function qe(t){return(o,s)=>new Promise((c,h)=>{if(n.turns.get(t.claim.attempt_id)!==t){h(Error("vm_hands_attempt_ended"));return}if(t.outbox??=[],t.outbox.length>=mn){h(Error("vm_hands_outbox_full"));return}t.outbox.push({kind:o,data:s,resolve:c,reject:h}),t.flush?.()})}function pe(t){if(ae.has(t))return;ae.add(t),(async()=>{try{while(t.outbox?.length&&n.turns.get(t.claim.attempt_id)===t&&u.readyState===WebSocket.OPEN){let o=t.outbox[0],s;try{s=await R(t).emit(o.kind,o.data)}catch(c){if(c instanceof O)return;s={status:500}}if(t.outbox.shift(),s.status<300)o.resolve();else o.reject(Error(`${o.kind} refused ${s.status}`))}}finally{ae.delete(t)}})()}async function $e(t,o){try{let s=await e.agent.attestFrame(t,o);if(u.readyState!==WebSocket.OPEN)return;K(s);let c=await G(["attested","attest_refused"],15000);n.attest=c.t==="attested"?"accepted":"refused";for(let h of n.attestWaiters.splice(0))h(n.attest==="accepted");if(r("vm_hands.attest",{result:n.attest,exit_code:s.exit_code,...c.t==="attest_refused"?{code:String(c.code??"")}:{}}),n.attest==="refused")u.close(4401,"attest_refused")}catch(s){r("vm_hands.attest_failed",{code:s instanceof l?s.code:"probe_error"});for(let c of n.attestWaiters.splice(0))c(!1);if(n.attest!=="accepted")u.close(4000,"attest_unanswered")}}async function je(t){let o=J&&n.attest==="pending",s=t.vm_hands_attest,c=s;if(n.attest==="refused"){r("vm_hands.claim_attest_refused",{said:typeof s==="string"?s.slice(0,16):typeof s,local:n.attest}),await R({claim:t,eventSeq:0}).complete("failed",{error_code:"vm_hands_unattested"}).catch(()=>{return});return}if(c==="accepted"){if(!o&&n.attest!=="accepted"){n.attest="accepted";for(let w of n.attestWaiters.splice(0))w(!0)}}else if(c!=="pending"||!o&&n.attest!=="accepted"){r("vm_hands.claim_attest_refused",{said:typeof s==="string"?s.slice(0,16):typeof s,local:n.attest}),await R({claim:t,eventSeq:0}).complete("failed",{error_code:"vm_hands_unattested"}).catch(()=>{return});return}if(n.attest!=="accepted"){let w=Date.parse(t.lease_until)-Date.now()-5000,D=Math.max(0,Math.min(te,Number.isFinite(w)?w:te));if(!await new Promise((Z)=>{let ze=setTimeout(()=>Z(!1),D);n.attestWaiters.push((Ge)=>{clearTimeout(ze),Z(Ge)})})){await R({claim:t,eventSeq:0}).complete("failed",{error_code:"vm_hands_unattested"}).catch(()=>{return});return}}let h={claim:t,eventSeq:0},{complete:f,emit:p}=R(h),a;try{if(t.capability!=="hands.connect")throw new l("vm_hands_bind_invalid","not hands.connect");a=!ue(t)}catch(w){r("vm_hands.bind_refused",{code:w instanceof l?w.code:"unexpected"}),await f("failed",{error_code:w instanceof l?w.code:"vm_hands_bind_invalid"});return}let d,m=null,k=!1;n.bindsStarting++;try{let w=await gn(n);if(w)r("vm_hands.person_terminals_closed",{count:w});let D=Pe(t),Q=e.agent.bind(D);if(D.workspace_deferred)k=!0,m=Ue(h,()=>k);d=await Q}catch(w){r("vm_hands.bind_refused",{code:w instanceof l?w.code:"unexpected"}),await f("failed",{error_code:w instanceof l?w.code:"vm_hands_bind_failed"});return}finally{k=!1,n.bindsStarting--}let E=m?await m:-1,P={...d.ready_data??e.readyData({launchId:d.launch_id,claim:t})};if(a)delete P.environment_installed;let ce=!a&&d.snapshot_revision!==null&&d.snapshot_id!==null?{environment_installed:{snapshot_id:d.snapshot_id,installed_revision:d.snapshot_revision}}:{};H.set(t.attempt_id,{claim:t,launchId:d.launch_id,readyData:P,eventSeq:h.eventSeq,ackSeq:-1});let C={...P,...ce,vm_hands:{layout:d.layout,policy_digest:d.policy_digest,launch_id:d.launch_id}},U=Date.now()+_n,N=1,b=await p("hands.ready",C);while(un(b.status)&&!e.signal.aborted){let w=Ce(N);if(Date.now()+w>=U)break;await new Promise((D)=>setTimeout(D,w)),N++,b=await p("hands.ready",C)}if(N>1)r("vm_hands.ready_retried",{attempts:N,status_class:`${Math.floor(b.status/100)}xx`});if(H.delete(t.attempt_id),b.status>=300){await Be(n,t.attempt_id),await e.agent.boundRefused(t.attempt_id),await f("failed",{error_code:xe(b.json?.error,"vm_hands_probe_failed")});return}let T={claim:t,launchId:d.launch_id,readyData:P,eventSeq:h.eventSeq,ackSeq:E};n.turns.set(t.attempt_id,T),T.flush=()=>pe(T),e.onTurn?.(t.attempt_id,qe(T)),await ve(T)}async function Ue(t,o){let{fence:s,op:c}=R(t),h=t.claim.attempt_id,f=-1;try{for(;;){let p=await x(`/operations/${c}/heartbeat`,{...s,control_ack_seq:f,wait_ms:Ae});if(!o())return f;if(p.status>=300)return e.agent.abandonWorkspaceGrant(h),f;let a=(p.json?.controls??[]).slice().sort((d,m)=>d.seq-m.seq);for(let d of a){if(d.seq<=f)continue;if(f=d.seq,d.kind===Fn)return r("vm_hands.workspace_granted",{}),e.agent.grantWorkspace(h),f;return r("vm_hands.workspace_grant_abandoned",{control:/^[a-z][a-z0-9._-]{0,63}$/.test(d.kind)?d.kind:"other"}),e.agent.abandonWorkspaceGrant(h),f}}}catch{return e.agent.abandonWorkspaceGrant(h),f}}async function ve(t){let{fence:o,op:s}=R(t),c=null,h=null,f=e.agent.executorExited(t.claim.attempt_id).then((p)=>(h=p,null));e:for(;;){let p=await Promise.race([f,x(`/operations/${s}/heartbeat`,{...o,control_ack_seq:t.ackSeq,wait_ms:Ae})]);if(!p){c="vm_hands_executor_exited",r("vm_hands.executor_exited",{reason:h});break}if(p.status>=300)break;let a=(p.json?.controls??[]).slice().sort((d,m)=>d.seq-m.seq);for(let d of a){if(d.seq<=t.ackSeq)continue;if(d.kind==="operation.cancel"||d.kind==="cancel"){t.ackSeq=d.seq;break e}if(d.kind===ut)try{await Ve(t,d.payload??{})}catch(m){if(m instanceof O)throw m;c=m instanceof l?m.code:"environment_unavailable";let k=m&&typeof m==="object"&&"code"in m&&typeof m.code==="string"&&/^[a-z][a-z0-9_]{2,63}$/.test(m.code)?m.code:null;r("vm_hands.environment_refused",{code:c,cause:k});break e}t.ackSeq=d.seq}}await Fe(t,c)}async function We(t){let o=t,s={claim:o,eventSeq:0},{complete:c,emit:h,fence:f,op:p}={...R(s)},a=t.vm_hands_origin==="person"?"person":"model",d=String(t.capability??"");if(!e.executeOp){await c("failed",{error_code:"vm_hands_op_unsupported"});return}if(t.vm_hands_attest==="accepted"&&n.attest==="pending"&&!(J&&n.attest==="pending")){n.attest="accepted";for(let b of n.attestWaiters.splice(0))b(!0)}if(n.attest!=="accepted"){let b=Date.parse(String(t.lease_until??""))-Date.now()-5000,T=n.attest==="refused"?0:Math.max(0,Math.min(te,Number.isFinite(b)?b:te));if(!(T>0&&await new Promise((D)=>{let Q=setTimeout(()=>D(!1),T);n.attestWaiters.push((Z)=>{clearTimeout(Q),D(Z)})}))){await c("failed",{error_code:"vm_hands_unattested"});return}}let m=e.agent.bindIdForRun(o.run_id);if(a==="model"&&m===null){await c("failed",{error_code:"vm_hands_not_bound"});return}let k=d==="pty.start"&&a==="person"&&!t.authority;if(k&&(e.agent.liveBindIds.length>0||n.bindsStarting>0)){await c("failed",{error_code:"vm_hands_bound"});return}if(Re.has(d)&&!k&&e.agent.liveBindIds.length===0){await c("failed",{error_code:"vm_hands_not_bound"});return}if(a==="model"&&m||Re.has(d)&&!k)e.agent.opServed();let E=new AbortController;oe.add(E);let P,ce=new Promise((b)=>{P=b}),C={abort:E,settled:ce};if(k)n.personTerminals.add(C);if(a==="model"&&m){let b=n.modelOps.get(m)??new Set;b.add(C),n.modelOps.set(m,b),await e.agent.environmentInstalled(m,rn,E.signal)}let U=-1,N=setInterval(()=>{x(`/operations/${p}/heartbeat`,{...f,control_ack_seq:U,wait_ms:0}).then((b)=>{if(b.status>=300){E.abort();return}let T=b.json?.controls??[];for(let w of T)if(U=Math.max(U,w.seq),w.kind==="operation.cancel"||w.kind==="cancel")E.abort()},()=>E.abort())},tn);try{let b=await e.executeOp({kind:a,claim:t,...a==="model"&&m?{bindId:m}:{},signal:E.signal,emit:async(w)=>{await h(w.kind,w.data??{})}}),T=await c(b.status,{...b.result?{result:b.result}:{},...b.error_code?{error_code:xe(b.error_code,"vm_hands_op_failed")}:{}});r("vm_hands.op",{capability:d,kind:a,status:b.status,code:b.error_code??null,...T.status>=300?{complete_status:T.status,complete_error:String(T.json?.error??"").slice(0,64)}:{}})}finally{if(clearInterval(N),oe.delete(E),m)n.modelOps.get(m)?.delete(C);n.personTerminals.delete(C),P()}}async function Fe(t,o){let s=t.claim.attempt_id;if(n.turns.get(s)===t)n.turns.delete(s);e.onTurn?.(s,null),ie(t);let c=await z(n,e.agent,s).catch((h)=>Y(h,t,o));if(!c)return;n.receipts.push({turn:t,failure:o,unbound:c}),await X()}function Y(t,o,s){let c=Ne(t);return r("vm_hands.unbind_unverified",{operation_id:o.claim.operation_id,code:c,attempt:0}),R(o).emit(jn,{code:c}).catch(()=>{return}),hn(n,e.agent,{turn:o,failure:s},e.signal,r),null}function X(){return de=de.then(we,we),de}async function we(){while(n.receipts.length){let{turn:t,failure:o,unbound:s}=n.receipts[0],{complete:c,emit:h}=R(t);try{if(await h("hands.stopped",{...t.readyData,reason_code:o?"failed":"cancelled",killed_verified:s.killed_verified,shredded:s.shredded,...s.srt_fallbacks?{vm_hands_srt_fallbacks:s.srt_fallbacks}:{}}),o)await c("failed",{error_code:o});else await c("cancelled",{error_code:"driver_stopped"})}catch(f){if(f instanceof O)return}n.receipts.shift()}}async function Ve(t,o){let{fence:s,op:c}=R(t),h=o.snapshot_id;if(o.version!==1||typeof h!=="string"||Object.keys(o).length!==2)throw new l("vm_hands_env_invalid","invalid environment delivery");let f=await x(`/operations/${c}/environment`,{...s,snapshot_id:h}),p=f.json?.environment_sealed;if(f.status!==200||!p||f.json?.payload!==void 0)throw new l("vm_hands_env_invalid","environment not delivered sealed");let a=await e.agent.deliverEnvironment({attemptId:t.claim.attempt_id,snapshotId:h,deviceId:n.deviceId??"",sealed:p});if((await x(`/operations/${c}/environment-ack`,{...s,...a})).status>=300)throw new l("vm_hands_env_ack_refused","environment ack refused")}}import{readFileSync as yn}from"fs";var wn=performance.now();delete process.env.BUN_BE_BUN;var j=(e,n={})=>console.log(JSON.stringify({stage:e,ms:Math.round(performance.now()),...n}));async function bn(){if(process.argv.includes("--vm-hands-op-runner")){let{runVmHandsOpRunner:_}=await import("./vm-hands-op-runner-kh1myd15.js");await _();return}j("parsed",{t0:Math.round(wn)});let e="";try{e=yn(3,"utf8")}catch{}j("fd3_read",{bytes:e.length});let n=null;if(e.trim())try{n=JSON.parse(e)}catch{n=null}if(!n||typeof n!=="object"||Array.isArray(n))j(e.trim()?"identity_invalid":"identity_free"),await new Promise(()=>{setInterval(()=>{return},1073741824)});let{parseVmHandsInit:i,runVmHands:r}=await import("./vm-hands-runtime-yacvv937.js"),g=i(n);if(!g)j("identity_invalid"),await new Promise(()=>{setInterval(()=>{return},1073741824)});try{await r(g,j)}catch(_){let u=_&&typeof _==="object"&&"code"in _&&typeof _.code==="string"?_.code:"error";throw j("failed",{code:u}),_}process.exit(0)}bn();export{_i,Jr,yi};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import"./vm-hands-entry-lite-ym1djztp.js";import"./vm-hands-entry-lite-mvx29q2q.js";import"./vm-hands-entry-lite-g3ja0c3y.js";import"./vm-hands-entry-lite-hcw5tk5d.js";import{Ke,Ri,cr,wt}from"./vm-hands-entry-lite-et2bh990.js";import"./vm-hands-entry-lite-v3xznxcw.js";import"./vm-hands-entry-lite-wd576mgy.js";import"./vm-hands-entry-lite-8gtgr399.js";import"./vm-hands-entry-lite-t7an5zg2.js";import"./vm-hands-entry-lite-mw0gzbds.js";import"./vm-hands-entry-lite-5p5h1eng.js";import"./vm-hands-entry-lite-dq1m5ykp.js";import"./vm-hands-entry-lite-51qvfk93.js";import{Zt}from"./vm-hands-entry-lite-saqdrc2w.js";import"./vm-hands-entry-lite-wyh6dp1t.js";import"./vm-hands-entry-lite-dkcm3hyn.js";import"./vm-hands-entry-lite-zg3b0c08.js";import{spawn as De}from"child_process";import{chmodSync as Me,chownSync as Le,existsSync as U,lstatSync as V,mkdirSync as ee,mkdtempSync as Ae,readdirSync as Z,readFileSync as P,realpathSync as Te,rmdirSync as ne,rmSync as ze,writeFileSync as K}from"fs";import{join as p}from"path";import{readFileSync as ae,readlinkSync as ce}from"fs";import{relative as $e}from"path";var le=16;function de(n){return n.replace(/\\([0-7]{3})/g,(r,i)=>String.fromCharCode(Number.parseInt(i,8)))}function Ie(n){let r=[];for(let i of n.split(`
|
|
3
|
+
`)){let e=i.split(" ");if(e.length<10||!/^\d+:\d+$/.test(e[2]))continue;r.push({device:e[2],root:de(e[3]),mountPoint:de(e[4])})}return r}function Ne(n,r,i){let e=n.replace(/\/+$/,"")||"/",c=(m)=>e==="/"||m===e||m.startsWith(`${e}/`),a=(m)=>new Map(Ie(m).filter((b)=>c(b.mountPoint)).map((b)=>[`${b.mountPoint}\x00${b.device}\x00${b.root}`,b.mountPoint])),l=a(r),v=a(i),y=(m)=>$e(e,m)||".",O=[...l].filter(([m])=>!v.has(m)).map(([,m])=>y(m)),R=[...v].filter(([m])=>!l.has(m)).map(([,m])=>y(m));return{missing:O,extra:R,referenceCount:l.size,ownCount:v.size}}function ue(n,r,i,e="/proc"){let c,a,l=null;try{c=ae(`${e}/1/mountinfo`,"utf8"),a=ae(`${e}/self/mountinfo`,"utf8")}catch(b){let I=b&&typeof b==="object"&&"code"in b&&typeof b.code==="string"?b.code:"unreadable";r("vm_hands.mount_check_unavailable",{code:I});return}try{l=ce(`${e}/1/ns/mnt`)===ce(`${e}/self/ns/mnt`)}catch{}let{missing:v,extra:y,referenceCount:O,ownCount:R}=Ne(n,c,a),m={reference_count:O,own_count:R,missing_count:v.length,extra_count:y.length,same_namespace:l};if(y.length)r("vm_hands.mount_extra",{...m,extra:y.slice(0,le)});if(v.length)throw r("vm_hands.mount_mismatch",{...m,missing:v.slice(0,le)}),i(`${v.length} mount(s) under the Session root are missing from vm-hands' namespace`)}var we="/sys/fs/cgroup/reason-payload",M="vm-hands",We="/run/ara-srt/fallbacks.jsonl",B="/reason-person",te=5000,Be=1e4,pe="__VM_HANDS_PROOF_DIR__",je="__VM_HANDS_PROBE_NONCE__";class h extends Error{code;constructor(n,r){super(r);this.code=n}}function He(n,r){if(!/^[0-9a-f-]{36}$/i.test(r))throw new h("vm_hands_bind_invalid","bad bind id");return p(n,M,`b-${r.toLowerCase()}`)}var Ue=5000,ve=(n)=>`'${n.replaceAll("'","'\\''")}'`;function on(n){let r=n.cgroup??we,i=n.init.layout.payload_uid,e=n.log??(()=>{}),c=new Map,a=new Map,l=0,v=()=>{try{let t=P("/run/ara-srt/starts.jsonl","utf8"),o=t.slice(l>t.length?0:l).split(`
|
|
4
|
+
`).filter(Boolean);l=t.length;let d=o.map((f)=>{try{return Number(JSON.parse(f).elapsed_ms)||0}catch{return 0}});if(d.length)e("vm_hands.srt_server_starts",{count:d.length,elapsed_ms:d.slice(0,8)})}catch{}},y=null,O=!1,R=n.srtCgroup??"/sys/fs/cgroup/reason-srt",m=()=>{y??=me()},b=0,I=()=>{try{let t=P(We,"utf8"),o=t.slice(b>t.length?0:b);b=t.length;let d=o.split(`
|
|
5
|
+
`).filter(Boolean).slice(0,1000);if(!d.length)return null;let f={},g=0;for(let w of d)try{let _=JSON.parse(w),u=typeof _.code==="string"&&/^[a-z_]{1,40}$/.test(_.code)?_.code:"other";if(f[u]=(f[u]??0)+1,typeof _.elapsed_ms==="number")g=Math.max(g,_.elapsed_ms)}catch{f.unparsed=(f.unparsed??0)+1}return e("vm_hands.srt_fallbacks",{count:d.length,codes:f,max_elapsed_ms:g}),{count:d.length,codes:f,max_elapsed_ms:g}}catch{return null}},S=!1,j=(t,o,d)=>{if(S)throw Error("vm_hands_pool_held");return Ce(t,o,d)},X=(t)=>(o,d,f)=>De("/bin/sh",["-c",`echo $$ > ${ve(p(t,"cgroup.procs"))} || exit 125; exec "$@"`,"vm-hands-join",o,...d],f),Ce=X(p(r,M)),H=p(r,M,"probe"),z=(t)=>He(r,t),Oe=(t)=>{let o=z(t);try{ee(o,{mode:493})}catch(d){if(!(d&&typeof d==="object"&&("code"in d)&&d.code==="EEXIST"))throw new h("vm_hands_bind_failed","bind cgroup")}return o},Re=(t)=>{try{ne(z(t))}catch{}},D=n.prespawn?Ri({spawnProcess:j,...n.relayDependencies?.sourceEntrypoint?{sourceEntrypoint:n.relayDependencies.sourceEntrypoint}:{},log:(t,o)=>e(t,o??{})}):null;D?.arm();let Q=D?setInterval(()=>{D.arm()},Ue):null;Q?.unref?.();async function F(t){let o=c.get(t);if(c.delete(t),!o)return;o.abort.abort(),await o.done}return{bindCgroup:z,async startExecutor(t){if(m(),a.set(t.bindId,me()),O=!0,!t.claim)throw new h("vm_hands_bind_invalid","an executor needs the claim it serves");await F(t.bindId);let{claim:o,bindId:d}=t,f=Oe(d),g=o.owner;if(!g||typeof g.device_id!=="string"||typeof o.root_id!=="string")throw new h("vm_hands_bind_invalid","claim without its owner Device or root");let w=new AbortController,_,u,x=new Promise((s,k)=>{_=s,u=k}),L,C=new Promise((s)=>{L=s}),W=wt({headless:!0,hostExecution:!0,runtimeDirectory:n.runtimeDirectory,deviceIdentity:{deviceId:g.device_id,rootId:o.root_id,apiOrigin:n.apiOrigin},claimOwner:o.owner,root:n.root,runId:o.run_id,operationId:o.operation_id,attemptId:o.attempt_id,payload:Object.fromEntries(Object.entries(o.payload).filter(([s])=>!s.startsWith("vm_hands_"))),signal:w.signal,...t.workspaceGrant?{workspaceGrant:t.workspaceGrant}:{},emitEvent:async(s,k)=>{if(s==="hands.ready"){_(k);return}if(s==="hands.started"||s==="hands.stopped"||s==="hands.failed")return;await n.forward(d,s,k)}},{...n.relayDependencies,spawnWorker:(s)=>X(f)(s.command,s.args,s.options),...D?{takePrespawnedWorker:(s)=>{let k=D.take(s);if(!k?.pid)return k;try{return K(p(f,"cgroup.procs"),String(k.pid)),k}catch{try{k.kill("SIGKILL")}catch{}return null}},adoptSpawnedWorker:D.adopt}:{}}).then(()=>{L("executor_stopped")},(s)=>{let k=s&&typeof s==="object"&&"code"in s?String(s.code):"executor_failed";u(new h(k,s instanceof Error?s.message:String(s))),L(k)}).finally(()=>u(new h("vm_hands_executor_exited","executor ended before it was ready")));c.set(d,{abort:w,done:W,exited:C,operationId:o.operation_id,runId:o.run_id,expiresAtMs:Date.parse(String(o.payload.expires_at??""))||0});let A=await x,G=A.executor_launch_id;if(typeof G!=="string")throw new h("vm_hands_bind_failed","executor ready without a launch id");return{launchId:G,readyData:A,applied:{hands_confinement:typeof o.payload.hands_confinement==="string"?o.payload.hands_confinement:null,browser_egress:o.payload.browser_egress??null}}},takeSrtFallbacks:I,executorExited(t){return c.get(t)?.exited??new Promise(()=>{})},freezeBind(t){let o=z(t);if(U(p(o,"cgroup.freeze")))K(p(o,"cgroup.freeze"),"1")},async killAndVerifyPayload(t){let o=new Set(t?.keep??[]);if(o.size||t?.own)return xe(t?.bindId??null,o,t?.own===!0);S=!0;let d=he();try{await ye();let f=Promise.all([...c.keys()].map((u)=>F(u).catch(()=>{return})));v();let g=Date.now()+te;await J(r,g,"payload"),await f;let w=(O||n.srtWarmLate?.()===!0)&&U(p(R,"cgroup.events"));if(w)await J(R,g,"srt");let _=se(i).filter((u)=>!N(u,B));if(y!==null){let u=re(y).filter((x)=>x!==process.pid&&!N(x,B));if(u.length)throw e("vm_hands.kill_strays",{strays:E(u)}),new h("vm_hands_kill_unverified",`${u.length} process(es) the run started survived it`);y=null}if(O=!1,w)n.onSrtReset?.();if(_.length)throw e("vm_hands.kill_survivors",{pids:_.slice(0,16)}),new h("vm_hands_kill_unverified",`${_.length} payload-uid process(es) outside the payload cgroup`);a.clear();for(let u of ie())try{ne(p(r,M,u))}catch{}}finally{S=!1,d()}if(D)setTimeout(()=>{if(!c.size)D.arm()},100).unref?.()},async killProbe(){let t=Date.now()+te;if(U(p(H,"cgroup.events"))){await J(H,t,"probe");try{ne(H)}catch{}}let o=oe(process.pid);if(o===null)throw new h("vm_hands_kill_unverified","agent start time unreadable");await Fe(r,o,t);let d=(g)=>{let w=oe(g);return w!==null&&w<=o},f=se(i).filter((g)=>d(g)&&!N(g,B));if(f.length)throw e("vm_hands.kill_survivors",{pids:f.slice(0,16),at:"attest"}),new h("vm_hands_kill_unverified",`${f.length} payload-uid process(es) from before this agent`);if(y!==null){let g=[r,p(r,M)].map((u)=>u.replace(/^\/sys\/fs\/cgroup/,"")),w=R.replace(/^\/sys\/fs\/cgroup/,""),_=re(y).filter((u)=>u!==process.pid&&!N(u,B)&&!N(u,"/reason-vm-hands")&&!N(u,w)&&!g.some((x)=>fe(u,x)));if(_.length&&O)throw e("vm_hands.kill_strays",{strays:E(_),at:"attest"}),new h("vm_hands_kill_unverified",`${_.length} process(es) the run started survived it`);if(_.length)e("vm_hands.attest_concurrent",{processes:E(_),count:_.length});y=null}},async runProbe({nonce:t,script:o}){if(m(),!o.includes(pe))throw new h("vm_hands_probe_failed","probe names no proof directory");let d=n.proofParent??"/tmp/reason-vm-hands-proof";ee(d,{mode:457,recursive:!0});let f=V(d);if(f.isSymbolicLink()||!f.isDirectory()||f.uid!==(process.getuid?.()??-1)||(f.mode&4095)!==457)throw new h("vm_hands_probe_failed","proof parent is not root's 0711 directory");let g=Ae(p(d,"p-")),w=!1;try{if(!/^[A-Za-z0-9/._-]+$/.test(g)||!/^[A-Za-z0-9_-]{1,128}$/.test(t))throw new h("vm_hands_probe_failed","proof directory path or nonce");Le(g,i,i),Me(g,448);let _=V(g).ino;try{ee(H,{mode:493})}catch(C){if(!(C&&typeof C==="object"&&("code"in C)&&C.code==="EEXIST"))throw new h("vm_hands_probe_failed","probe cgroup")}let u=X(H)("/bin/bash",["-c",o.replaceAll(pe,g).replaceAll(je,t)],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:["ignore","pipe","ignore"]}),x="";u.stdout?.on("data",(C)=>{if(x.length<16384)x+=C.toString("utf8").slice(0,16384-x.length)});let L=await new Promise((C)=>{let W=setTimeout(()=>{w=!0,u.kill("SIGKILL"),C(124)},Be);u.once("error",()=>{clearTimeout(W),C(127)}),u.once("close",(A)=>{clearTimeout(W),C(A??1)})});return e("vm_hands.probe",{nonce_len:t.length,exit_code:L}),{exitCode:L,markers:x,proofDirInode:_}}finally{if(!w)ze(g,{recursive:!0,force:!0})}},restatLayout(){let{session_root:t,alias:o}=n.init.layout,d="invalid";try{cr(t),d="0:0:755"}catch{}let f=!1,g=-1;try{let w=V(o);g=w.uid,f=d==="0:0:755"&&o===p(t,"repo")&&!w.isSymbolicLink()&&w.isDirectory()&&Te(o)===o&&w.uid===i}catch{}return{root_mode:d,alias_ok:f,owner_uid:g}},verifyMounts(){ue(n.init.layout.session_root,e,(t)=>new h("vm_hands_mount_mismatch",t))},installEnvironment(t,o){let d=c.get(t);if(!d)throw new h("environment_unavailable","no executor owns an environment");return Ke({root:n.root,operationId:d.operationId,payload:o}).installed_revision},async stop(){if(Q)clearInterval(Q);D?.close(),await Promise.all([...c.keys()].map((t)=>F(t)))}};function ie(){try{return Z(p(r,M),{withFileTypes:!0}).filter((t)=>t.isDirectory()&&/^b-[0-9a-f-]{36}$/.test(t.name)).map((t)=>t.name)}catch{return[]}}async function xe(t,o,d=!1){let f=new Set([...o].map((w)=>w.toLowerCase())),g=he();try{await ye();let w=Date.now()+te,_=new Set(ie().filter((s)=>!f.has(s.slice(2))).map((s)=>s.slice(2)));if(t)_.add(t.toLowerCase());let u=null;for(let s of _){let k=F(s).catch(()=>{return}),q=a.get(s);if(q!==void 0)u=u===null?q:Math.min(u,q);if(U(p(z(s),"cgroup.events")))await J(z(s),w,"bind");await k}let x=[...f].map((s)=>z(s).replace(/^\/sys\/fs\/cgroup/,"")),L=[r,p(r,M)].map((s)=>s.replace(/^\/sys\/fs\/cgroup/,"")),C=R.replace(/^\/sys\/fs\/cgroup/,""),W=(s)=>N(s,B)||x.some((k)=>N(s,k)),A=d?[]:se(i).filter((s)=>!W(s));if(A.length)throw e("vm_hands.kill_survivors",{pids:A.slice(0,16),beside:f.size}),new h("vm_hands_kill_unverified",`${A.length} payload-uid process(es) outside a live bind`);let G=(s)=>!W(s)&&!N(s,"/reason-vm-hands")&&!N(s,C)&&!L.some((k)=>fe(s,k));if(u!==null){let s=re(u).filter((k)=>k!==process.pid&&G(k));if(s.length)throw e("vm_hands.kill_strays",{strays:E(s),beside:f.size}),new h("vm_hands_kill_unverified",`${s.length} process(es) the run started survived it`)}for(let s of _)a.delete(s),Re(s)}finally{g()}}}function oe(n,r="/proc"){try{let i=P(p(r,String(n),"stat"),"utf8"),e=Number(i.slice(i.lastIndexOf(")")+2).split(" ")[19]);return Number.isFinite(e)?e:null}catch{return null}}function be(n,r="/proc"){try{let i=P(p(r,String(n),"stat"),"utf8"),e=Number(i.slice(i.lastIndexOf(")")+2).split(" ")[1]);return Number.isFinite(e)?e:null}catch{return null}}async function Fe(n,r,i){try{K(p(n,"cgroup.freeze"),"1")}catch(e){throw new h("vm_hands_kill_unverified",`payload cgroup.freeze: ${e instanceof Error?e.message:String(e)}`)}try{for(;;){let e=Se(n).filter((a)=>ke(a,n)),c=new Set(e.filter((a)=>{let l=oe(a);return l!==null&&l<=r}));for(let a=!0;a;){a=!1;for(let l of e){if(c.has(l))continue;let v=be(l);if(v!==null&&c.has(v))c.add(l),a=!0}}if(c.size===0)return;if(Date.now()>i)throw new h("vm_hands_kill_unverified",`${c.size} previous-boot process(es) survived`);for(let a of c)try{process.kill(a,"SIGKILL")}catch{}await new Promise((a)=>setTimeout(a,10))}}finally{try{K(p(n,"cgroup.freeze"),"0")}catch{}}}function fe(n,r,i="/proc"){try{return P(p(i,String(n),"cgroup"),"utf8").split(`
|
|
6
|
+
`).find((c)=>c.startsWith("0::"))?.slice(3)===r}catch{return!1}}function N(n,r,i="/proc"){try{let c=P(p(i,String(n),"cgroup"),"utf8").split(`
|
|
7
|
+
`).find((a)=>a.startsWith("0::"))?.slice(3)??"";return c===r||c.startsWith(`${r}/`)}catch{return!1}}var Ge=100;function me(){try{return Math.floor(Number(P("/proc/uptime","utf8").split(" ")[0])*Ge)}catch{return 0}}async function J(n,r,i){try{K(p(n,"cgroup.freeze"),"1")}catch(e){throw new h("vm_hands_kill_unverified",`${i} cgroup.freeze: ${e instanceof Error?e.message:String(e)}`)}while(!/^populated 0$/m.test(P(p(n,"cgroup.events"),"utf8"))){if(Date.now()>r)throw new h("vm_hands_kill_unverified",`${i} cgroup still populated (left frozen)`);for(let e of Se(n)){if(!ke(e,n))continue;try{process.kill(e,"SIGKILL")}catch{}}await new Promise((e)=>setTimeout(e,10))}try{K(p(n,"cgroup.freeze"),"0")}catch(e){throw new h("vm_hands_kill_unverified",`${i} cgroup thaw: ${e instanceof Error?e.message:String(e)}`)}}function ke(n,r){let i=r.replace(/^\/sys\/fs\/cgroup/,"")||"/",e="";try{e=P(`/proc/${n}/cgroup`,"utf8").split(`
|
|
8
|
+
`).find((a)=>a.startsWith("0::"))??""}catch{return!1}let c=e.slice(3);return c===i||c.startsWith(`${i}/`)}function Se(n){let r=[],i=(e)=>{try{for(let a of P(p(e,"cgroup.procs"),"utf8").split(`
|
|
9
|
+
`))if(/^\d+$/.test(a))r.push(Number(a))}catch{}let c=[];try{c=Z(e,{withFileTypes:!0}).filter((a)=>a.isDirectory()).map((a)=>a.name)}catch{}for(let a of c)i(p(e,a))};return i(n),r}function E(n,r="/proc"){return n.slice(0,16).map((i)=>{let e="?",c="?";try{e=P(p(r,String(i),"comm"),"utf8").trim().slice(0,32)}catch{}try{c=(P(p(r,String(i),"cgroup"),"utf8").split(`
|
|
10
|
+
`).find((a)=>a.startsWith("0::"))??"").slice(3,120)}catch{}return{pid:i,comm:e,ppid:be(i,r),cgroup:c}})}function re(n,r="/proc"){let i=[];for(let e of Z(r)){if(!/^\d+$/.test(e))continue;let c;try{c=P(p(r,e,"stat"),"utf8")}catch{continue}let a=c.slice(c.lastIndexOf(")")+2).split(" "),l=Number(a[1]),v=Number(a[6]),y=Number(a[19]);if(!((v&2097152)!==0||l===2||e==="2")&&a[0]!=="Z"&&y>=n)i.push(Number(e))}return i}function se(n,r="/proc"){let i=[];for(let e of Z(r)){if(!/^\d+$/.test(e))continue;let c;try{c=P(p(r,e,"status"),"utf8")}catch{continue}let a=/^Uid:\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/m.exec(c);if(a&&a.slice(1).some((l)=>Number(l)===n))i.push(Number(e))}return i}function ge(n="/proc/sys/kernel/yama/ptrace_scope"){try{return Number(P(n,"utf8").trim())>=1}catch{return!1}}var T=0,Pe=[],Y=new Set;function he(){T++;let n=!1;return()=>{if(n)return;if(n=!0,--T===0)for(let r of Pe.splice(0))r()}}function Je(){return T===0?Promise.resolve():new Promise((n)=>{Pe.push(n)})}async function _e(){while(T>0)await Je()}async function ye(){let n=Date.now()+1000;while(Y.size&&Date.now()<n)await new Promise((r)=>setTimeout(r,2))}function Ee(n,r){let i=r.replace(/^\/sys\/fs\/cgroup/,"");Y.add(n);let e=()=>{let c="";try{c=P(`/proc/${n}/cgroup`,"utf8").split(`
|
|
11
|
+
`).find((a)=>a.startsWith("0::"))??""}catch{Y.delete(n);return}if(c.slice(3)===i){Y.delete(n);return}setTimeout(e,1)};e()}function an(n){let r={person:n.personCgroup??p("/sys/fs/cgroup",B,M),model:n.payloadCgroup??p(we,M)},i=n.entry??process.argv[1]??"",e={},c=(l)=>l.startsWith("model:")&&n.bindCgroup?n.bindCgroup(l.slice(6)):r[l.startsWith("model")?"model":"person"],a=(l)=>{let v=l.startsWith("model")?"model":"person",y=new Map,O=String(n.payloadUid),R=String(n.payloadGid),m=Bun.spawn(["/bin/sh","-c",`echo $$ > ${ve(p(c(l),"cgroup.procs"))} || exit 125; exec /usr/bin/setpriv --no-new-privs --reuid=${O} --regid=${R} --clear-groups -- "$@"`,"vm-hands-op-join",process.execPath,"--no-install",i,"--vm-hands-op-runner",...v==="person"?[Zt]:[]],{cwd:"/",env:{PATH:process.env.PATH??"/usr/bin:/bin",BUN_BE_BUN:"1",HOME:"/home/runner",...U("/bin/bash")?{SHELL:"/bin/bash"}:{}},stdio:["ignore","ignore","ignore"],ipc(I){let S=I,j=y.get(S.id);if(!j)return;if(S.t==="event"&&S.event)j.onEvent(S.event);if(S.t==="done")y.delete(S.id),j.done(S.completion??{status:"failed",error_code:"vm_hands_op_failed"})}});m.exited.then((I)=>{if(e[l]?.child===m)delete e[l];for(let[,S]of y)S.done({status:"failed",error_code:"vm_hands_op_runner_exited"});y.clear(),n.log?.("vm_hands.op_runner_exited",{kind:v,code:I})}),Ee(m.pid,c(l));let b={child:m,pending:y};return e[l]=b,b};return{run(l,v,y,O,R){if(!ge())return Promise.resolve({status:"failed",error_code:"vm_hands_ptrace_unprotected"});let m=l==="model"&&R&&n.bindCgroup?`model:${R.toLowerCase()}`:l,b=async()=>{while(!e[m]&&T>0)await _e()};return b().then(async()=>{if(!e[m]&&T>0)await b()}).then(()=>new Promise((I)=>{if(!e[m]&&T>0){I({status:"failed",error_code:"vm_hands_op_runner_unavailable"});return}let S=e[m]??a(m);S.pending.set(v.id,{onEvent:y,done:I}),O.addEventListener("abort",()=>{try{S.child.send({t:"cancel",id:v.id})}catch{}},{once:!0});try{S.child.send({t:"op",...v})}catch{S.pending.delete(v.id),I({status:"failed",error_code:"vm_hands_op_runner_unavailable"})}}))},warm(l){if(!e[l]&&ge())_e().then(()=>{if(!e[l]&&T===0)a(l)})},stop(){for(let l of Object.keys(e))e[l]?.child.kill()}}}export{we as VM_HANDS_PAYLOAD_CGROUP,M as VM_HANDS_PAYLOAD_JOIN,B as VM_HANDS_PERSON_CGROUP,je as VM_HANDS_PROBE_NONCE_TOKEN,pe as VM_HANDS_PROOF_DIR_TOKEN,h as VmHandsExecutorError,on as createVmHandsExecutor,an as createVmHandsOpRunners,E as describeProcesses,N as inCgroup,se as payloadUidProcesses,re as processesStartedSince,ge as ptraceProtected,Se as subtreePids,He as vmHandsBindCgroup};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{Ve}from"./vm-hands-entry-lite-ym1djztp.js";import{_i,Jr,yi}from"./vm-hands-entry-lite.js";import{spawn as G}from"child_process";import{createHash as z}from"crypto";import{lstatSync as E,mkdirSync as K,readFileSync as W,statSync as X,writeFileSync as F}from"fs";var v="/run/reason-vm-hands",D="/run/reason-vm-hands/env",A="/home/runner/.reason/workspace",J=/^https:\/\/[a-z0-9.-]+(?::\d{1,5})?$/,V="/sys/fs/cgroup/reason-srt",q=["/usr/local/bin/reason-srt-exec","/usr/local/bin/ara-srt-exec"],Q=65536,Z=21600000;function ee(r,e="/run/ara-srt"){try{if((process.getuid?.()??-1)!==0)return;K(e,{recursive:!0,mode:448});let n=E(e);if(!n.isDirectory()||n.uid!==0||(n.mode&63)!==0){r("srt_base_keyed_skipped",{reason:"socket_dir_unsafe"});return}F(`${e}/base-keyed`,`1
|
|
3
|
+
`,{mode:420}),r("srt_base_keyed",{})}catch{r("srt_base_keyed_skipped",{reason:"error"})}}function C(r,e){let n=(c)=>(e("srt_warm_skipped",{reason:c}),Promise.resolve());if(typeof r.srt_base_settings!=="string")return n("no_settings");let o=Buffer.from(r.srt_base_settings,"base64");if(o.length===0||o.length>Q||o.toString("base64")!==r.srt_base_settings)return n("settings_invalid");let a;try{let c=E(V);if(!c.isDirectory()||c.uid!==0||(c.mode&18)!==0)return n("cgroup_unsafe");let p=q.find((f)=>E(f,{throwIfNoEntry:!1})!==void 0);if(!p)return n("cgroup_or_exec_missing");a=p;for(let[f,w]of[[a,!1],["/usr/local/bin",!0]]){let u=E(f);if((w?!u.isDirectory():!u.isFile())||u.uid!==0||(u.mode&18)!==0)return n("srt_exec_unsafe")}}catch{return n("cgroup_or_exec_missing")}if((process.getuid?.()??-1)!==0)return n("not_root");let i=performance.now(),R=z("sha256").update(o).digest("hex"),S=`${v}/srt-base-settings.json`;try{F(S,o,{mode:384,flag:"w"})}catch{return n("settings_write")}let g=G("/bin/sh",["-c",`echo $$ > ${V}/cgroup.procs || exit 125; exec "$@"`,"vm-hands-srt",a,"--settings",S,"--idle-ms",String(Z),"--","/bin/true"],{cwd:"/",env:{PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},stdio:"ignore"});return new Promise((c)=>{g.once("error",()=>{e("srt_warm_failed",{reason:"spawn"}),c()}),g.once("close",(p)=>{e(p===0?"srt_warm_done":"srt_warm_failed",{exit_code:p,warm_ms:Math.round(performance.now()-i),settings_sha256:R}),c()})})}var M=3000;function pe(r){if(!r||typeof r!=="object"||Array.isArray(r))return null;let e=r,{layout:n,device_key:o,credential:a}=e;return typeof e.workspace_id==="string"&&Number.isSafeInteger(e.instance_generation)&&typeof e.api_origin==="string"&&J.test(e.api_origin)&&typeof e.manifest_digest==="string"&&!!a&&typeof a.key_id==="string"&&Number.isSafeInteger(a.expires_at_ms)&&typeof a.signature==="string"&&!!n&&typeof n.session_root==="string"&&typeof n.alias==="string"&&Number.isSafeInteger(n.payload_uid)&&typeof n.kind==="string"&&!!o&&typeof o.pkcs8==="string"&&typeof o.spki==="string"?e:null}function L(r){K(r,{recursive:!0,mode:448});let e=X(r);if(!e.isDirectory()||(e.mode&63)!==0||e.uid!==(process.getuid?.()??-1))throw Error(`vm_hands_runtime_directory_unsafe: ${r}`)}async function ne(r){let[{CLI_VERSION:e},n,o,a]=await Promise.all([import("./version-vdev7tyq.js"),import("./hands-worker-source-yxsap3qk.js"),import("./network-contract-qt2s82ap.js"),import("./device-workspace-n9tn4bzw.js")]),{REASON_HANDS_PROTOCOL_VERSION:i}=await import("./reason-hands-protocol-r356wr4t.js");return{reason_runtime_version:e,bridge_version:e,protocol_version:Ve,execution_eligible:!0,instance_generation:r.instance_generation,capabilities:{supported_operations:["hands.connect"],hands_worker_artifact_sha256:n.REASON_HANDS_WORKER_ARTIFACT_SHA256,hands_worker_entrypoint:n.REASON_HANDS_WORKER_ENTRYPOINT,hands_slots:1,max_payload_bytes:o.LOCAL_OPERATION_MAX_BYTES,max_result_bytes:o.LOCAL_OPERATION_MAX_BYTES,operation_constraints:{"hands.connect":{ready:!0,execution_mode:"host",transport:"wss_relay",worker:"ara_hands",slots:1,session_group:o.HANDS_SESSION_GROUP,worker_version:n.REASON_HANDS_WORKER_VERSION,protocol_version:i,worker_artifact_sha256:n.REASON_HANDS_WORKER_ARTIFACT_SHA256,worker_entrypoint:n.REASON_HANDS_WORKER_ENTRYPOINT,policy_mode:"full_access",policy_version:1,workspace_base:a.REASON_WORKSPACE_BASE,workspace_layout:a.SESSION_WORKSPACE_LAYOUT,browser_state:"optional_headless",desktop:!1,max_session_ms:43200000,environment_delivery:o.HANDS_ENVIRONMENT_DELIVERY,[o.HANDS_ENVIRONMENT_AT_CLAIM_KEY]:o.HANDS_ENVIRONMENT_AT_CLAIM,[o.HANDS_CLOUD_ACCESS_KEY]:o.HANDS_CLOUD_ACCESS,[o.HANDS_LARGE_ENVIRONMENT_KEY]:o.HANDS_LARGE_ENVIRONMENT,[o.HANDS_CONFINEMENT_KEY]:o.HANDS_CONFINEMENT,[o.HANDS_JOBS_USER_KEY]:o.HANDS_JOBS_USER,vm_hands:"v1"}}}}}var k=["fs.read","fs.write","fs.export","fs.import","exec.run","exec.full","process.list","ports.list","pty.start","jobs.control"],te=new Set(["pty.start","jobs.control"]);function re(r,e){let n=e([{id:"vm-hands",label:"workspace",path:A,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}],{worker:{executionMode:"unsandboxed",readiness:Object.fromEntries(k.map((i)=>[i,!0]))}}),o=r.capabilities,a={...o.operation_constraints};for(let i of k)a[i]={...n.operation_constraints?.[i]??{},ready:!0,execution_mode:n.operation_constraints?.[i]?.execution_mode??"host"};return{...r,capabilities:{...o,supported_operations:["hands.connect",...k],operation_constraints:a}}}function oe(r){for(let e of W("/etc/passwd","utf8").split(`
|
|
4
|
+
`)){let n=e.split(":");if(n.length>=4&&Number(n[2])===r&&/^\d+$/.test(n[3]??"")&&Number(n[3])>0)return Number(n[3])}throw Error("vm_hands_payload_account_unavailable")}function se(r,e){let n=e.owner;if(!n||typeof n.organization_id!=="string"||typeof n.device_id!=="string"||typeof e.root_id!=="string")return null;return{version:4,apiOrigin:r.api_origin,orgId:n.organization_id,deviceId:n.device_id,devicePublicKey:"",displayName:"vm-hands",registeredAt:new Date(0).toISOString(),handsSlots:1,roots:[{id:e.root_id,label:"workspace",path:A,pathFingerprint:"0".repeat(64),permissions:{read:!0,write:!0,execute:!0,discover_environment:!0,expose_mcp:!1}}]}}function ae(r=process.platform,e="/proc/self/oom_score_adj"){if(r!=="linux")return null;let n;try{n=W(e,"utf8").trim()}catch{return{value:"unreadable"}}if(!/^-?\d+$/.test(n))return{value:"unreadable"};let o=Number(n);return o<0?{value:o}:null}async function fe(r,e){let n=ae();if(n)e("vm_hands.oom_protected",{code:"vm_hands_oom_protected",value:n.value}),await new Promise(()=>{setInterval(()=>{return},1073741824)});L(v),L(D),ee(e);let o=C(r,e),a=!1,i=async()=>{if(!await Promise.race([o.then(()=>!0),new Promise((s)=>setTimeout(()=>s(!1),M).unref?.())]))a=!0,e("srt_warm_late",{wait_ms:M})},[{configureDesktopAccount:R},{configureWorkerSandbox:S}]=await Promise.all([import("./desktop-account-rx4ajy2j.js"),import("./worker-sandbox-x8dsz324.js")]);S();try{R({value:String(r.layout.payload_uid)})}catch{e("payload_account_unavailable"),await new Promise(()=>{setInterval(()=>{return},1073741824)})}let g=new AbortController;for(let t of["SIGTERM","SIGINT"])process.on(t,()=>g.abort());let c=new Map,p,f=new Promise((t)=>{p=t}),w=f.then(()=>import("./vm-hands-executor-79av9nam.js")).then(({createVmHandsExecutor:t})=>{let s=t({init:r,root:A,runtimeDirectory:v,apiOrigin:r.api_origin,prespawn:!0,onSrtReset:()=>{a=!1,o=C(r,e)},srtWarmLate:()=>a,forward:(_,d,y)=>c.get(_)?.(d,y)??Promise.reject(Error("vm_hands_not_bound")),log:(_,d)=>e(_,d)});return e("executor_loaded"),s}),u=(t)=>async(...s)=>(await w)[t](...s),h=null;w.then((t)=>{h=(s)=>t.executorExited(s)});let m={startExecutor:async(...t)=>(await i(),u("startExecutor")(...t)),killAndVerifyPayload:u("killAndVerifyPayload"),killProbe:u("killProbe"),runProbe:async(...t)=>(await i(),u("runProbe")(...t)),restatLayout:()=>{throw Error("replaced below")},verifyMounts:()=>{throw Error("replaced below")},installEnvironment:()=>{throw Error("replaced below")},executorExited:(t)=>h?h(t):new Promise(()=>{}),takeSrtFallbacks:()=>null};w.then((t)=>{m.restatLayout=()=>t.restatLayout(),m.verifyMounts=()=>t.verifyMounts(),m.installEnvironment=(s,_)=>t.installEnvironment(s,_),m.freezeBind=(s)=>t.freezeBind(s),m.takeSrtFallbacks=()=>t.takeSrtFallbacks?.()??null});let B=await _i(r),Y=new Jr(r,B,m,{envRoot:D}),x=ne(r),I=null,U=Promise.all([x,import("./local-capabilities-hchsc804.js")]).then(([t,s])=>{I=re(t,s.capabilityInventoryForRoots),e("device_ops_loaded")}).catch((t)=>e("device_ops_unavailable",{error:t instanceof Error?t.name:"error"})),N=f.then(()=>import("./vm-hands-executor-79av9nam.js")).then(({createVmHandsOpRunners:t,vmHandsBindCgroup:s,VM_HANDS_PAYLOAD_CGROUP:_})=>t({payloadUid:r.layout.payload_uid,payloadGid:oe(r.layout.payload_uid),bindCgroup:(d)=>s(_,d),log:(d,y)=>e(d,y)})).catch(()=>null);N.then((t)=>t?.warm("person")),e("agent_ready"),await yi({apiOrigin:r.api_origin,agent:Y,signal:g.signal,heartbeat:async()=>I??await x,executeOp:async({kind:t,claim:s,bindId:_,signal:d,emit:y})=>{let O=se(r,s);if(!O)return{status:"failed",error_code:"vm_hands_bind_invalid"};let H={executionMode:"unsandboxed",runtimeDirectory:v,readiness:Object.fromEntries(k.map((l)=>[l,!0]))},P=(l)=>{let b=typeof l.kind==="string"?l.kind:"";if(b)y({kind:b,...l.data&&typeof l.data==="object"?{data:l.data}:{}})};if(s.capability==="exec.full"&&t!=="person")return{status:"failed",error_code:"capability_not_granted"};if(s.capability==="automation.call.v1"&&t!=="model")return{status:"failed",error_code:"capability_not_granted"};let j=s.capability==="pty.start"&&t==="person"&&!s.authority;if(te.has(String(s.capability))&&!j){let{executeLocalOperation:l}=await import("./local-capabilities-hchsc804.js");return l(O,s,{worker:H,signal:d,emit:(b)=>P(b)})}let T=await N;if(!T)return{status:"failed",error_code:"vm_hands_payload_account_unavailable"};return T.run(t,{id:String(s.attempt_id),claim:s,state:O,worker:H},P,d,_)},readyData:({launchId:t})=>({executor_launch_id:t}),log:(t,s)=>{if(t==="vm_hands.registered"||t==="vm_hands.reconnected")p();e(t,s)},onTurn:(t,s)=>{if(s)c.set(t,s);else c.delete(t)}}),await(await w).stop(),(await N)?.stop()}export{pe as parseVmHandsInit,fe as runVmHands};
|
package/package.json
CHANGED
|
@@ -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-h9t84ekh.js";import"./vm-hands-entry-lite-g5c9ec33.js";import"./vm-hands-entry-lite-h0y0xv5f.js";import"./vm-hands-entry-lite-swwb5mp2.js";import"./vm-hands-entry-lite-q4tcfj61.js";import"./vm-hands-entry-lite-fbpxs065.js";import"./vm-hands-entry-lite-hye6r7dy.js";import"./vm-hands-entry-lite-6berk108.js";import"./vm-hands-entry-lite-vr38bh6k.js";import"./vm-hands-entry-lite-8gjrr6hg.js";import"./vm-hands-entry-lite-hepppjp0.js";import"./vm-hands-entry-lite-wer0qzxg.js";import"./vm-hands-entry-lite-72nn2b4n.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{F as a,G as b,H as c,I as d,J as e,K as f}from"./vm-hands-entry-lite-g5c9ec33.js";import"./vm-hands-entry-lite-h0y0xv5f.js";import"./vm-hands-entry-lite-q4tcfj61.js";import"./vm-hands-entry-lite-fbpxs065.js";import"./vm-hands-entry-lite-hye6r7dy.js";import"./vm-hands-entry-lite-6berk108.js";import"./vm-hands-entry-lite-vr38bh6k.js";import"./vm-hands-entry-lite-8gjrr6hg.js";import"./vm-hands-entry-lite-hepppjp0.js";import"./vm-hands-entry-lite-wer0qzxg.js";import"./vm-hands-entry-lite-72nn2b4n.js";export{d as sessionPlace,c as sessionMachine,e as createMachineEnrollmentTicketWithToken,f as ReasonApi,b as REASONING_EFFORTS,a as ApiError};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{xa as u}from"./vm-hands-entry-lite-h0y0xv5f.js";import{Xj as g}from"./vm-hands-entry-lite-0c4nxpza.js";import"./vm-hands-entry-lite-z5912r1q.js";import"./vm-hands-entry-lite-vr38bh6k.js";import{Xk as M}from"./vm-hands-entry-lite-72nn2b4n.js";import{existsSync as uq,mkdirSync as gq,readFileSync as Nq,writeFileSync as wq}from"fs";import{homedir as Yq}from"os";import{dirname as e,join as hq}from"path";import{spawnSync as G}from"child_process";import{createHash as Qq}from"crypto";import{chmodSync as Bq,closeSync as Kq,existsSync as U,lstatSync as Jq,mkdirSync as c,mkdtempSync as Lq,openSync as Dq,readFileSync as Wq,readSync as Hq,renameSync as p,rmSync as b,statSync as s,symlinkSync as Cq,writeFileSync as a}from"fs";import{connect as Fq}from"net";import{homedir as V}from"os";import{dirname as S,join as J}from"path";class C extends Error{}var F="reason-network",H="0.10.3",Vq={"aarch64-apple-darwin":"1e793a89ea8b53c603cddbc65ac08b0dd83f1dbfc30a1987858e2c52e2ed907c","x86_64-apple-darwin":"ef1f0f8d7d9e8a286de54eeb78f8ff8a53152c1a661c50b6182bfefa8eef8a02","aarch64-unknown-linux-musl":"75fdfd10314225ffb2875acc7ac73c66de23b5678b684d70b4678eb16ba35124","x86_64-unknown-linux-musl":"17111a623396eed0a2d98aa4d3bb03f00da37c25bdc39b6d0ba3ab202dfbe874"},xq="https://reasonmachines.com/cli/engine",P="REASON_AGENT_NETWORK_BIN";function Gq(){let q=process.arch==="arm64"?"aarch64":process.arch==="x64"?"x86_64":null,z=process.platform==="darwin"?"apple-darwin":process.platform==="linux"?"unknown-linux-musl":null;return q&&z?`${q}-${z}`:null}function N(q){let z=G(q,["--version"],{encoding:"utf8",timeout:5000}),[X,Y]=z.status===0?z.stdout.trim().split(/\s+/):[];return X===F?Y??null:null}function _(q,z){let X=q.split(".").map(Number),Y=z.split(".").map(Number);for(let Z=0;Z<3;Z+=1)if((X[Z]??0)!==(Y[Z]??0))return(X[Z]??0)>(Y[Z]??0);return!0}function v(q=V()){return J(q,".reason","bin","reason-network")}var j=`~/.local/bin/${F}`;async function Uq(q=process.env,z=()=>{}){if(q[P])return q[P];let X=v(),Y=t(),Z=Y?.path===X&&f(X)===Y.fingerprint?Y:null,Q=Z?.kept,$=h(q)?null:Mq(Q);if(Z?.version===H&&!$)return X;let B=U(X)?N(X):null;if($){let K=N($.path),L=B&&_(B,H)?B:H;if(!K||!_(L,K)){if(K)z(`Reason Network: ${j} (${K}) is newer than the engine reason network uses (${L}), so it was left as it is.`);Q=$.fingerprint,$=null}}if(Z?.version===H&&!$)return d(X,Q);if(!B||!_(B,H))await jq(X);let D=G(X,["setup",...h(q)?["--no-service"]:[]],{env:await i(q),encoding:"utf8",timeout:60000});if(D.status!==0){let K=O((D.stderr||D.stdout||"").trim().split(`
|
|
3
|
-
`).pop()??"");if(Z)return r(V(),{...Z,fingerprint:f(X)??Z.fingerprint,...Q?{kept:Q}:{}}),z($?`Reason Network: couldn't move your agents off ${j}${K?` (${K})`:""}; they keep using it. Run reason network setup to try again.`:`Reason Network: couldn't finish setting up the network engine${K?` (${K})`:""}. Run reason network setup to try again.`),X;throw new C(`Couldn't connect this computer's agents to the network${K?` (${K})`:""}. Run reason network setup to try again.`)}if($)Q=Pq($,X,z);return d(X,Q),G(X,["stop"],{env:q,stdio:"ignore",timeout:15000}),X}function Mq(q){let z=J(V(),".local","bin",F),X;try{X=Jq(z)}catch{return null}let Y=`${X.size}:${X.mtimeMs}:${X.ino}`;if(!X.isFile()||Y===q)return null;try{let Z=s(v());if(Z.ino===X.ino&&Z.dev===X.dev)return null}catch{}try{let Z=Buffer.alloc(2),Q=Dq(z,"r");try{Hq(Q,Z,0,2,0)}finally{Kq(Q)}if(Z.toString("latin1")==="#!")return null}catch{return null}return{path:z,fingerprint:Y}}function Pq(q,z,X){let Y=`${q.path}.reason-${process.pid}`;try{b(Y,{force:!0}),Cq(z,Y),p(Y,q.path),X(`Reason Network: your agents now use the engine reason network keeps up to date; ${j} points to it. Restart a running agent to pick it up.`);return}catch(Z){return b(Y,{force:!0}),X(`Reason Network: your agents now use the engine reason network keeps up to date, but ${j} couldn't be pointed to it (${Z instanceof Error?Z.message:String(Z)}). Remove that copy so it can't take them back.`),q.fingerprint}}async function i(q){if(q[w])return q;try{let{defaultWorkerServiceHost:z,workerServiceLauncher:X}=await import("./serve-service-hd0k7s2x.js");return{...q,[w]:X(z(V()),q)}}catch{return q}}var w="REASON_NETWORK_REASON_BIN";function h(q=process.env){return Boolean(q.REASON_NETWORK_NO_SERVICE||q.TINCAN_NO_SERVICE)}var y=(q)=>J(q,".reason","ask-engine.json");function f(q){try{let z=s(q);return`${z.size}:${z.mtimeMs}:${z.ino}`}catch{return null}}function t(q=V()){try{let z=JSON.parse(Wq(y(q),"utf8"));if(typeof z.path!=="string"||typeof z.fingerprint!=="string"||typeof z.version!=="string")return null;return{path:z.path,fingerprint:z.fingerprint,version:z.version,...typeof z.kept==="string"?{kept:z.kept}:{}}}catch{return null}}function r(q,z){c(S(y(q)),{recursive:!0}),a(y(q),JSON.stringify(z))}function d(q,z){let X=f(q);if(X)r(V(),{path:q,fingerprint:X,version:H,...z?{kept:z}:{}});return q}async function jq(q){let z=Gq(),X=z?Vq[z]:void 0;if(!z||!X)throw new C(`Reason Network runs on macOS and Linux (arm64 or x64); this is ${process.platform} ${process.arch}.`);let Y=`${xq}/${H}/${F}-${z}.tar.gz`,Z;try{let B=await fetch(Y,{signal:AbortSignal.timeout(120000)});if(!B.ok)throw Error(`HTTP ${B.status}`);Z=Buffer.from(await B.arrayBuffer())}catch(B){let D=B instanceof Error&&B.name==="TimeoutError"?"no download within 2 minutes":B instanceof Error?B.message.replace(/\.$/,""):String(B);throw new C(`Couldn't download the network engine from ${new URL(Y).host} (${D}). Check the connection and run reason network again.`)}if(Qq("sha256").update(Z).digest("hex")!==X)throw new C("The downloaded network engine didn't match its checksum, so it wasn't installed.");c(S(q),{recursive:!0});let $=Lq(J(S(q),".reason-engine-"));try{if(a(J($,"engine.tar.gz"),Z),G("tar",["-xzf",J($,"engine.tar.gz"),"-C",$]).status!==0||!U(J($,F)))throw new C("Couldn't unpack the network engine.");Bq(J($,F),493),p(J($,F),q)}finally{b($,{recursive:!0,force:!0})}}function fq(q=process.env,z=V()){let X=q.REASON_NETWORK_HOME?.trim()||q.TINCAN_HOME?.trim();if(X)return X;let Y=J(z,".reason","network"),Z=J(z,".tincan");return!k(Y)&&k(Z)?Z:Y}var k=(q)=>U(J(q,"network.db"))||U(J(q,"tincan.db"));function Tq(q){let z=U(J(q,"network.db"))||!U(J(q,"tincan.db")),X=J(q,z?"network.sock":"tincan.sock");if(Buffer.byteLength(X)<100)return X;let Y=0xcbf29ce484222325n;for(let Z of Buffer.from(X))Y=BigInt.asUintN(64,(Y^BigInt(Z))*0x100000001b3n);return J("/tmp",`${z?"reason-network":"tincan"}-${process.getuid?.()??0}`,`${Y.toString(16).padStart(16,"0")}.sock`)}var o=15000,Oq=new Set(["who","team","inbox","unread","held"]),Rq=90000,Iq="the network daemon closed the connection";class T{socket;nextId=1;buffer="";pending=new Map;closed=null;hungUp=!1;constructor(q){this.socket=q;q.setEncoding("utf8"),q.on("data",(X)=>this.read(X));let z=(X)=>{this.closed=X;for(let Y of this.pending.values())Y.reject(X);this.pending.clear()};q.on("error",(X)=>z(X)),q.on("close",()=>z(Error(this.hungUp?"the connection to the network daemon was closed here":Iq)))}static open(q){return new Promise((z,X)=>{let Y=Fq(q);Y.once("connect",()=>z(new T(Y))),Y.once("error",X)})}read(q){this.buffer+=q;let z=this.buffer.indexOf(`
|
|
4
|
-
`);while(z>=0){let X=this.buffer.slice(0,z);if(this.buffer=this.buffer.slice(z+1),z=this.buffer.indexOf(`
|
|
5
|
-
`),!X.trim())continue;let Y;try{Y=JSON.parse(X)}catch{continue}if(typeof Y.id!=="number")continue;let Z=this.pending.get(Y.id);if(!Z)continue;if(this.pending.delete(Y.id),Y.ok)Z.resolve(Y.result);else Z.reject(Error(O(Y.error??"the network daemon refused the request")))}}call(q,z={},X=o){if(this.closed)return Promise.reject(this.closed);let Y=this.nextId++;return this.socket.write(`${JSON.stringify({id:Y,op:q,...z})}
|
|
6
|
-
`),new Promise((Z,Q)=>{let $=setTimeout(()=>{this.pending.delete(Y),Q(Error(`the network daemon didn't answer ${q} within ${Math.round(X/1000)}s`))},X);this.pending.set(Y,{resolve:(B)=>{clearTimeout($),Z(B)},reject:(B)=>{clearTimeout($),Q(B)}})})}get isClosed(){return this.closed!==null}close(){this.hungUp=!0,this.socket.end()}}var A=/^(Claude Code|Grok|Codex) \u00B7 (.*)$/,_q={"Claude Code":"claude-code",Grok:"grok",Codex:"codex"},Aq=/^ask-[0-9a-f]{6}$/;function l(q){return{id:q.id,from:q.from,fromAgent:q.from_agent,to:q.to,replyTo:q.reply_to,body:q.body,sentAt:q.sent_at}}function m(q){return{person:q.person,machine:q.machine,isMe:q.is_me,online:q.online,link:q.link,rttMs:q.rtt_ms}}class x{engine;env;connection=null;waits=new Set;constructor(q,z){this.engine=q;this.env=z}static async open(q=process.env,z){return new x(await Uq(q,z),q)}static openInstalled(q=process.env){if(q[P])return new x(q[P],q);let z=v(),X=t();return X?.path===z&&f(z)===X.fingerprint?new x(z,q):null}socketPath(){return Tq(fq(this.env))}async open(){try{return await T.open(this.socketPath())}catch{return G(this.engine,["who","--json"],{env:this.env,stdio:"ignore",timeout:15000}),await T.open(this.socketPath())}}async call(q,z={},X){if(!this.connection||this.connection.isClosed)this.connection=await this.open();try{return await this.connection.call(q,z,X)}catch(Y){if(!/closed|ECONNRESET|EPIPE/.test(String(Y)))throw Y;if(this.connection=await this.open(),!Oq.has(q))throw Y;return await this.connection.call(q,z)}}async waitOn(q,z){let X=await this.open();this.waits.add(X);try{return await X.call(q,z,z.wait_secs*1000+o)}finally{this.waits.delete(X),X.close()}}close(){this.connection?.close(),this.connection=null;for(let q of this.waits)q.close();this.waits.clear()}async team(){try{let q=await this.call("team");return{...q,machines:q.machines.map(m)}}catch(q){if(/team/i.test(String(q)))return null;throw q}}async snapshot(q={}){let z=await this.call("who",{all:Boolean(q.all),...q.filter?{filter:q.filter}:{}}),X=new Set(z.sessions.filter((Z)=>A.test(Z.doing??"")).map((Z)=>`${Z.person}/${Z.machine}:${Z.cwd}`)),Y=z.sessions.filter((Z)=>q.all||!Aq.test(Z.name)).filter((Z)=>A.test(Z.doing??"")||!X.has(`${Z.person}/${Z.machine}:${Z.cwd}`)).map((Z)=>{let Q=A.exec(Z.doing??"");return{address:Z.address,name:Z.name,person:Z.person,machine:Z.machine,agent:Q?_q[Q[1]]:Z.agent,cwd:Z.cwd,repo:Z.repo,branch:Z.branch,status:Q?Q[2]==="ready for work"?"idle":Q[2]==="stopped"?"offline":"busy":Z.status,since:Z.since,doing:Q?Q[2]:Z.doing,isMe:Z.is_me,worker:Boolean(Q),tier:Z.tier??null}});return{team:z.team,person:z.person,machine:z.machine,machines:z.machines.map(m),sessions:Y}}async send(q,z,X={}){if(!X.from)await this.call("hook",{agent:"cli",event:"stop",session_id:"terminal",name:"terminal",cwd:process.cwd(),mail:!1});let Y=await this.call("send",{from:X.from??"terminal",to:q,body:z,...X.replyTo?{reply_to:X.replyTo}:{},wake:X.wake??!0,...X.notify?{notify:!0}:{}});return{ids:Y.ids,recipients:Y.recipients.map((Z)=>Z.address),deliveries:Y.recipients.map((Z)=>({address:Z.address,state:Z.state,note:Z.note??""}))}}async session(q,z={}){let X=z.agent??"cli",Y=($,B={})=>this.call("hook",{agent:X,event:$,session_id:q,name:q,cwd:process.cwd(),mail:!1,...B}),Z=await Y("stop"),Q=`${X}:${q}`;return{name:q,address:Z.address??q,next:async($)=>{return(await this.waitOn("inbox",{key:Q,wait_secs:$,peek:!0})).messages.map(l)},ack:async($)=>{if($.length)await this.call("delivered",{key:Q,ids:$})},busy:async($)=>{if(await Y("prompt"),$)await Y("doing",{doing:$})},idle:async($)=>{if(await Y("stop"),$)await Y("doing",{doing:$})},doing:async($)=>{await Y("doing",{doing:$})},send:($,B,D,K)=>this.send($,B,{from:Q,...D?{replyTo:D}:{},...K?.notify?{notify:!0}:{}})}}async inbox(q={}){let X=(await this.waitOn("inbox",{key:"cli:terminal",wait_secs:q.waitSeconds??0,peek:!0}).catch((Y)=>{if(/isn't registered/.test(String(Y)))return{messages:[]};throw Y})).messages.map(l);if(X.length&&!q.peek)await this.call("delivered",{key:"cli:terminal",ids:X.map((Y)=>Y.id)});return X}async link(q={}){return await this.call("link",{new:Boolean(q.new)})}async changeTeam(q,z){try{return await this.call(q,z,Rq)}finally{this.close()}}async changeOntoTeam(q,z){try{await this.changeTeam(q,z)}catch(X){if(!/closed|ECONNRESET|EPIPE/.test(String(X)))throw X;if(await this.team())return;await this.changeTeam(q,z)}}async createTeam(q,z){await this.changeOntoTeam("create_team",{name:q,person:z})}async join(q,z){await this.changeOntoTeam("join",{ticket:q,person:z})}async leave(){return await this.changeTeam("leave",{force:!0})}async remove(q){return await this.call("remove",{who:q})}async setup(q,z={}){return this.passthrough(["setup",...q],z,await i(this.env))}passthrough(q,z={},X=this.env){this.close();let Y=G(this.engine,q,{stdio:["inherit","pipe","pipe"],encoding:"utf8",env:X});if(!z.quiet||Y.status!==0)process.stdout.write(O(Y.stdout??"")),process.stderr.write(O(Y.stderr??""));return Y.status??1}}function O(q){return q.replace(/not in a team yet:[^\n]*/g,"this computer isn't on a team yet: run `reason network setup`").replace(/`tincan (\w+)/g,"`reason network $1").replace(/\btincan (who|send|inbox|invite|join|team|link|setup|doctor|remove|leave|listen)\b/g,"reason network $1").replace(/(?<![\w./-])tincan(?![\w./-])/gi,"Reason Network")}import{existsSync as Jz,mkdirSync as Lz,readFileSync as bq,writeFileSync as Dz}from"fs";import{homedir as Sq,hostname as Hz}from"os";import{dirname as Fz,join as yq}from"path";var vq=(q)=>yq(q,".reason","ask.json");function Eq(q){try{let z=JSON.parse(bq(vq(q),"utf8"));if(typeof z.orgId!=="string"||typeof z.team!=="string")return null;let X=z.pendingRotation;return{orgId:z.orgId,team:z.team,...typeof z.checkedAt==="number"?{checkedAt:z.checkedAt}:{},...X&&typeof X.link==="string"&&typeof X.team==="string"&&typeof X.replaces==="string"?{pendingRotation:X}:{}}}catch{return null}}function n(q=Sq()){let z=Eq(q);return z?{orgId:z.orgId,team:z.team}:null}var qq=86400000,dq=300,R=(q)=>hq(q,".reason","ask-relay.json");function E(q){try{let z=JSON.parse(Nq(R(q),"utf8"));return{sessions:Array.isArray(z.sessions)?z.sessions.filter((X)=>typeof X?.name==="string"&&typeof X.agent==="string"&&typeof X.usedAt==="number"):[]}}catch{return{sessions:[]}}}function kq(q,z){try{if(!uq(e(R(q))))gq(e(R(q)),{recursive:!0});wq(R(q),`${JSON.stringify(z)}
|
|
7
|
-
`,{mode:384})}catch{}}var W=(q,z)=>new Promise((X)=>{if(z.aborted)return X();let Y=setTimeout(Z,q);Y.unref?.();function Z(){clearTimeout(Y),z.removeEventListener("abort",Z),X()}z.addEventListener("abort",Z,{once:!0})});function zq(q){let z=q?.status;return typeof z==="number"?z:null}var Xq=60000;function lq(q){return{address:q.address.slice(0,300),state:q.state.slice(0,40),note:q.note.slice(0,500)}}function mq(q){let z=Number.isFinite(q.sentAt)&&Math.abs(q.sentAt)<8640000000000000?q.sentAt:Date.now();return{id:q.id.slice(0,100),from:q.from.slice(0,300),from_agent:q.fromAgent?.slice(0,100)??null,to:q.to.slice(0,300),reply_to:q.replyTo?.slice(0,100)??null,sent_at:z,body:q.body.length>Xq?`${q.body.slice(0,Xq)}
|
|
8
|
-
[cut: the answer was ${q.body.length} characters]`:q.body}}class Zq{network;api;home;signal;log;team;sessions=new Map;readers=new Set;constructor(q,z,X,Y,Z,Q){this.network=q;this.api=z;this.home=X;this.signal=Y;this.log=Z;this.team=Q}async run(){let q=Date.now()-qq;for(let X of E(this.home).sessions)if(X.usedAt>q)this.read(X);let z=0;while(!this.signal.aborted){let X=await this.network.team().catch(()=>null);if(!X){await W(60000,this.signal);continue}if(X.name!==this.team)return;let Y;try{let Z=await this.api.claimAgentNetworkRelayJob({machine:X.machine,person:X.person,team:X.name,version:g,wait_seconds:u},AbortSignal.any([this.signal,AbortSignal.timeout((u+20)*1000)]));if(z=0,Z.retry_after_seconds)await W(Z.retry_after_seconds*1000,this.signal);Y=Z.job}catch(Z){if(this.signal.aborted)return;let Q=zq(Z);if(Q===403||Q===401){await W(900000,this.signal);continue}if(Q===404||Q===405){await W(120000,this.signal);continue}z+=1,await W(Math.min(60000,1000*2**Math.min(z,6)),this.signal);continue}if(Y)this.carry(Y)}}async carry(q){let z;try{z=q.kind==="who"?{who:await this.who(q)}:{sent:await this.send(q)}}catch(X){z={error:X instanceof Error?X.message:String(X)}}for(let X=1;;X+=1)try{if(await this.api.completeAgentNetworkRelayJob(q.id,z),q.kind==="send")this.log(`relayed a message to ${q.to} from ${"sent"in z?z.sent.from:q.from_name}`,"relayed");return}catch(Y){if(X>=4||this.signal.aborted){this.log(`couldn't report a relayed call: ${Y instanceof Error?Y.message:String(Y)}`);return}await W(X*1000,this.signal)}}async who(q){let z=q.all===!0,X=await this.network.snapshot({all:z});return{all:z,team:X.team,sessions:X.sessions.map((Y)=>({address:Y.address,person:Y.person,machine:Y.machine,agent:Y.agent,repo:Y.repo,branch:Y.branch,status:Y.status,since:Y.since,doing:Y.doing,worker:Y.worker,...Y.tier?{tier:Y.tier.slice(0,10)}:{}})),machines:X.machines.map((Y)=>({person:Y.person,machine:Y.machine,online:Y.online}))}}async send(q){let z={name:q.from_name,agent:q.from_agent},X=await this.session(z),Y=await X.send(q.to,q.body,q.reply_to,{notify:q.notify===!0});return this.remember(z),this.read(z),{ids:Y.ids,recipients:Y.recipients,from:X.address,deliveries:Y.deliveries.slice(0,500).map(lq)}}session(q){let z=`${q.agent}:${q.name}`,X=this.sessions.get(z);if(!X)X=this.network.session(q.name,{agent:q.agent}).then(async(Y)=>{return await Y.idle(`personal agent (${q.agent}), through Reason`).catch(()=>{}),Y}),X.catch(()=>this.sessions.delete(z)),this.sessions.set(z,X);return X}remember(q){let X=E(this.home).sessions.filter((Y)=>Y.name!==q.name||Y.agent!==q.agent);kq(this.home,{sessions:[...X,{...q,usedAt:Date.now()}].slice(-50)})}read(q){let z=`${q.agent}:${q.name}`;if(this.readers.has(z))return;this.readers.add(z),(async()=>{let X=0;try{while(!this.signal.aborted){let Y=E(this.home).sessions.find((Z)=>Z.name===q.name&&Z.agent===q.agent)?.usedAt??0;if(Date.now()-Y>qq)return;try{let Z=await this.session(q),Q=await Z.next(dq);if(Q.length===0)continue;await this.api.recordAgentNetworkRelayReplies(Q.map(mq)).catch(($)=>{let B=zq($);if(B===null||B>=500||B===429||B===401)throw $;this.log(`dropped ${Q.length} answer(s) the server refused (HTTP ${B})`)}),await Z.ack(Q.map(($)=>$.id)),X=0}catch{if(this.signal.aborted)return;this.sessions.delete(z),X+=1,await W(Math.min(60000,1000*2**Math.min(X,6)),this.signal)}}}finally{this.readers.delete(z)}})()}}async function cq(q){await new Zq(q.network,q.api,q.home??Yq(),q.signal,q.log??(()=>{}),q.team).run()}async function pq(q,z=()=>{}){let X="";while(!q.aborted){try{let Y=n(),Z=Y?x.openInstalled():null;if(Y&&Z){let[{requireApiCredentials:Q},{ReasonApi:$}]=await Promise.all([import("./api-credentials-4e2gypqj.js"),import("./api-f48wa4ym.js")]),B=await Q({});if(B.credentialKind!=="api_key"&&B.orgId.toLowerCase()===Y.orgId.toLowerCase())try{await cq({network:Z,api:new $(B),team:Y.team,signal:q,log:z})}finally{Z.close()}}X=""}catch(Y){let Z=`agent network relay: ${Y instanceof Error?Y.message:String(Y)}`;if(Z!==X)z(Z);X=Z}await W(300000,q)}}var sq=600000,aq=3600000,iq=180000;async function Rz(q,z,X={}){let Y=-1/0,Z="",Q=(L,$q)=>{let I=Date.now();if($q==="relayed"||I-Y<sq||L===Z&&I-Y<aq)return;Y=I,Z=L,z(L)},$=new AbortController,B=()=>$.abort();q.once("end",B),q.once("close",B),q.once("error",B),q.resume();let D=X.installedVersion??(()=>tq()),K=setInterval(()=>{D().then((L)=>{if(L!==null&&L!==g)$.abort()},()=>{})},X.checkMs??iq);K.unref?.();try{await(X.relay??pq)($.signal,Q)}finally{clearInterval(K)}}async function tq(q={}){if(!(q.compiled??Bun.main.startsWith("/$bunfs/")))return null;let z=q.home??Yq(),X=q.env??process.env;if((q.platform??process.platform)==="darwin"){let{currentManagedRuntimeVersion:Q,isManagedRuntimeVersionExecutable:$,legacyManagedRuntimePaths:B,managedRuntimePaths:D}=await import("./managed-runtime-5zrdx8xk.js");try{let K=D({platform:"darwin",home:z,environment:X});for(let L of[K,B(K)])if(L&&$(L))return Q(L)}catch{}return null}let{installationReceiptPath:Y,loadInstallationReceipt:Z}=await import("./install-receipt-e6s355j1.js");return Z(Y(X,z))?.version??null}export{Rz as runDaemonRelay,pq as runBackgroundAskRelay,cq as runAskRelay,tq as installedCliVersion};
|
|
@@ -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-g1wjmmr9.js";import"./vm-hands-entry-lite-wa261sf8.js";import"./vm-hands-entry-lite-h9t84ekh.js";import"./vm-hands-entry-lite-g5c9ec33.js";import"./vm-hands-entry-lite-wn4gvb8w.js";import"./vm-hands-entry-lite-h0y0xv5f.js";import"./vm-hands-entry-lite-c60v3v0v.js";import"./vm-hands-entry-lite-5tgm1m3h.js";import"./vm-hands-entry-lite-yg5h9mhm.js";import"./vm-hands-entry-lite-69ray4x8.js";import"./vm-hands-entry-lite-jcd21jpm.js";import"./vm-hands-entry-lite-swwb5mp2.js";import"./vm-hands-entry-lite-5rkakg10.js";import"./vm-hands-entry-lite-nqvb7a2m.js";import"./vm-hands-entry-lite-jw5y1aa5.js";import"./vm-hands-entry-lite-dsh32j5a.js";import"./vm-hands-entry-lite-ac8sdh78.js";import"./vm-hands-entry-lite-np1fcr2t.js";import"./vm-hands-entry-lite-ky0w7t09.js";import"./vm-hands-entry-lite-vwpraybq.js";import"./vm-hands-entry-lite-1sc3wc94.js";import"./vm-hands-entry-lite-yqrmr2c8.js";import"./vm-hands-entry-lite-9vf97byd.js";import"./vm-hands-entry-lite-xqve205b.js";import"./vm-hands-entry-lite-mapxp682.js";import"./vm-hands-entry-lite-2nec0vk1.js";import"./vm-hands-entry-lite-q4tcfj61.js";import"./vm-hands-entry-lite-fbpxs065.js";import"./vm-hands-entry-lite-159860ns.js";import"./vm-hands-entry-lite-8f3px72v.js";import"./vm-hands-entry-lite-bmywbwj4.js";import"./vm-hands-entry-lite-hye6r7dy.js";import"./vm-hands-entry-lite-6berk108.js";import"./vm-hands-entry-lite-0c4nxpza.js";import"./vm-hands-entry-lite-z5912r1q.js";import"./vm-hands-entry-lite-hd4a0a6f.js";import"./vm-hands-entry-lite-vr38bh6k.js";import"./vm-hands-entry-lite-r2xmr627.js";import"./vm-hands-entry-lite-8gjrr6hg.js";import"./vm-hands-entry-lite-hepppjp0.js";import"./vm-hands-entry-lite-wer0qzxg.js";import"./vm-hands-entry-lite-40nkzw38.js";import"./vm-hands-entry-lite-72nn2b4n.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{Ad as s,Bd as t,Cd as u,Dd as v,id as a,jd as b,kd as c,ld as d,md as e,nd as f,od as g,pd as h,qd as i,rd as j,sd as k,td as l,ud as m,vd as n,wd as o,xd as p,yd as q,zd as r}from"./vm-hands-entry-lite-jw5y1aa5.js";import"./vm-hands-entry-lite-vr38bh6k.js";import"./vm-hands-entry-lite-72nn2b4n.js";export{q as isCustomEndpointSessionRequiredMessage,v as isCustomEndpointFirewallBlockMessage,u as isCustomEndpointFailureMessage,s as isCustomEndpointDeviceFailureMessage,o as isCustomEndpointDeviceFailureCode,h as customEndpointRequestMatchesConfig,t as customEndpointFailureMessage,r as customEndpointDeviceFailureMessage,i as CustomEndpointDeviceRequestSchema,l as CustomEndpointDeviceReceiptSchema,j as CustomEndpointDeviceHeadersSchema,m as CustomEndpointDeviceCredentialSchema,k as CustomEndpointDeviceChunkSchema,f as CUSTOM_ENDPOINT_DEVICE_TIMEOUT_MS,p as CUSTOM_ENDPOINT_DEVICE_SESSION_REQUIRED,g as CUSTOM_ENDPOINT_DEVICE_SAFE_HEADERS,c as CUSTOM_ENDPOINT_DEVICE_MAX_RESPONSE_BYTES,d as CUSTOM_ENDPOINT_DEVICE_MAX_CHUNKS,e as CUSTOM_ENDPOINT_DEVICE_MAX_BODY_BYTES,n as CUSTOM_ENDPOINT_DEVICE_FAILURE_CODES,b as CUSTOM_ENDPOINT_DEVICE_CHUNK_BYTES,a as CUSTOM_ENDPOINT_DEVICE_CAPABILITY};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{$g as c,Zg as a,_g as b,ah as d,bh as e}from"./vm-hands-entry-lite-9vf97byd.js";import"./vm-hands-entry-lite-hye6r7dy.js";import"./vm-hands-entry-lite-6berk108.js";import"./vm-hands-entry-lite-72nn2b4n.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{Cj as a,Dj as b,Ej as c,Fj as d,Gj as e,Hj as f,Ij as g,Jj as h,Kj as i,Lj as j,Mj as k,Nj as l,Oj as m,Pj as n,Qj as o,Rj as p,Sj as q,Tj as r,Uj as s,Vj as t,Wj as u}from"./vm-hands-entry-lite-6berk108.js";import"./vm-hands-entry-lite-72nn2b4n.js";export{j as parseDeviceWorkspace,g as isSessionWorktreePath,h as isDeviceWorkspacePath,i as deviceWorkspaceRootRelative,t as computeWorkerWorkspace,s as cloudSessionRootLayout,u as cloudSessionLayoutOfRoot,r as cloudSessionLayout,n as SIDECHAT_WORKSPACE_ID,f as SESSION_WORKTREE_ID,e as SESSION_WORKTREES,c as SESSION_WORKSPACE_LAYOUT,a as REASON_WORKSPACE_BASE,d as HANDS_WORKSPACE_LAYOUT_KEY,b as HANDS_WORKSPACE_BASE_KEY,q as CLOUD_SESSION_ROOT_SHELL_PATTERNS,p as CLOUD_SESSION_ROOT,m as CLOUD_SESSION_CONTROL_BASE,o as CLOUD_REPOSITORY_WORKSPACE_ID,l as CLOUD_PAYLOAD_UID,k as CLOUD_PAYLOAD_HOME};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{$c as i,Tc as a,Uc as b,Vc as c,Wc as d,Xc as e,Yc as f,Zc as g,_c as h}from"./vm-hands-entry-lite-jcd21jpm.js";import"./vm-hands-entry-lite-xqve205b.js";import"./vm-hands-entry-lite-mapxp682.js";import"./vm-hands-entry-lite-8f3px72v.js";import"./vm-hands-entry-lite-6berk108.js";import"./vm-hands-entry-lite-wer0qzxg.js";import"./vm-hands-entry-lite-72nn2b4n.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};
|