@oracle-agent/oracle 0.35.55 → 0.35.56
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/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
- package/dist/bin/desk-server.mjs +1 -1
- package/dist/cli/commands/chat.mjs +221 -221
- package/dist/cli/commands/data.mjs +1 -1
- package/dist/cli/commands/doctor.mjs +5 -5
- package/dist/cli/commands/eval.mjs +150 -150
- package/dist/cli/commands/farm.mjs +16 -16
- package/dist/cli/commands/model.mjs +223 -223
- package/dist/cli/commands/quickstart.mjs +6 -6
- package/dist/cli/commands/sign.mjs +14 -14
- package/dist/cli/commands/signer.mjs +32 -25
- package/dist/cli/commands/venues.mjs +2 -2
- package/dist/data/desk-data.mjs +22 -22
- package/dist/data/providers/farming.mjs +2 -2
- package/dist/index.mjs +31 -31
- package/dist/local-signer/anvil-attestation-worker.mjs +1 -1
- package/dist/local-signer/index.mjs +5 -5
- package/dist/local-signer/runtime.mjs +21 -22
- package/dist/teams/index.mjs +7 -7
- package/dist/tui/standalone-client.mjs +102 -102
- package/package.json +1 -1
- package/public/oracle-splash/docs/browser-and-web/index.html +2 -2
- package/public/oracle-splash/docs/connectors/index.html +2 -2
- package/public/oracle-splash/docs/getting-started/index.html +2 -2
- package/public/oracle-splash/docs/index.html +3 -3
- package/public/oracle-splash/docs/reference/index.html +2 -2
- package/public/oracle-splash/docs/security/index.html +2 -2
- package/public/oracle-splash/docs/using-oracle/index.html +2 -2
- package/public/oracle-splash/download/index.html +3 -3
- package/public/oracle-splash/downloads/index.html +1 -1
- package/public/oracle-splash/index.html +6 -6
- package/server.json +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var po=Object.defineProperty;var u=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(t=e(e=0)),t}catch(o){throw r=[o],o}};var Re=(e,t)=>{for(var r in t)po(e,r,{get:t[r],enumerable:!0})};var de,cr=u(()=>{de={robinhood:{chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC"],evm:!0},ethereum:{chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],evm:!0},polygon:{chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],evm:!0},arbitrum:{chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],evm:!0},base:{chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],evm:!0},hyperevm:{chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],evm:!0},bsc:{chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],evm:!0},avalanche:{chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],evm:!0},optimism:{chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],evm:!0},abstract:{chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],evm:!0},stable:{chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],evm:!0},elysium:{chainId:1339,name:"Elysium",rpcEnv:["ELYSIUM_RPC_URL"],evm:!0,readOnly:!0}}});function ur(e){return mo.get(Number(e))||null}function lr(e,t=process.env){let r=ur(e);if(!r)return null;for(let o of r.rpcEnv){let n=(t[o]||"").trim();if(n)return n}return null}var mo,it=u(()=>{cr();mo=new Map(Object.values(de).map(e=>[e.chainId,e]))});function fe(e){let t=e?.transactionHash||e?.hash||e?.txid||null;return t?{happened:!0,hash:String(t),note:null}:{happened:!1,hash:null,note:"no transaction hash \u2014 the action did not succeed"}}var st=u(()=>{});var dr=u(()=>{});var fr=u(()=>{});var pe=u(()=>{});var ee=u(()=>{});var $e=u(()=>{pe();ee()});import{isAddress as Aa}from"ethers";var ct=u(()=>{$e();pe();ee()});import{Interface as go,isAddress as Na}from"ethers";var La,pr=u(()=>{ct();pe();ee();La=new go(["function approve(address spender,uint256 amount) returns (bool)"])});import{Interface as yo,isAddress as Ba}from"ethers";var Ma,qa,mr=u(()=>{ct();pe();ee();Ma=new yo(["function approve(address spender,uint256 amount) returns (bool)"]),qa=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"})});var K=u(()=>{});import{Interface as bo,MaxUint256 as Ja,isAddress as Ga,keccak256 as Ya,toUtf8Bytes as Xa}from"ethers";var nc,J=u(()=>{fr();pr();mr();K();ee();nc=new bo(["function approve(address spender,uint256 amount) returns (bool)"])});var gr={};Re(gr,{SIGN_TIME_REVIEW_VERSION:()=>Eo,SignTimeReviewSecretError:()=>me,createSignTimeReview:()=>hr});function lt(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string"){let n=e.trim().split(/\s+/);if(Io.test(e)||ko.has(n.length)&&n.every(i=>/^[a-z]+$/i.test(i)))throw new me(t);return e}if(typeof e=="bigint")return e.toString();if(typeof e=="number"){if(!Number.isSafeInteger(e))throw new TypeError(`sign-time review: safe integer required at ${t}`);return e}if(Array.isArray(e))return e.map((n,i)=>lt(n,`${t}[${i}]`,r));G(e,t);let o={};for(let n of Object.keys(e).sort()){let i=n.replace(/[^a-z0-9]/gi,"");if(vo.test(i))throw new me(`${t}.${n}`);e[n]!==void 0&&(o[n]=lt(e[n],`${t}.${n}`,n))}return o}function G(e,t){if(e==null||typeof e!="object"||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`sign-time review: ${t} must be a plain object`);return e}function we(e,t){if(e==null||e==="")throw new TypeError(`sign-time review: ${t} required`);return e}function te(e,t){let r=String(we(e,t)).toLowerCase();if(!xo.test(r))throw new TypeError(`sign-time review: ${t} must be an EVM address`);return r}function j(e,t,{positive:r=!1}={}){try{let o=BigInt(we(e,t));if(o<0n||r&&o===0n)throw new Error;return o.toString()}catch{throw new TypeError(`sign-time review: ${t} must be an unsigned integer`)}}function dt(e,t){if(typeof e!="string"||e.length===0||e.length>500||e!==e.trim())throw new TypeError(`sign-time review: ${t} must be non-empty text`);return e}function wr(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){for(let t of Object.values(e))wr(t);Object.freeze(e)}return e}function Oo(e,t){if(typeof e=="boolean")return{passed:e,reason:e?"passed":"failed"};G(e,t);let r=e.passed??e.ok??e.allowed;if(typeof r!="boolean")throw new TypeError(`sign-time review: ${t} needs a boolean result`);let o=e.reason??e.message??e.name??(r?"passed":"failed");return{...e,passed:r,reason:dt(String(o),`${t}.reason`)}}function To(e){if(!Array.isArray(e))throw new TypeError("sign-time review: policyChecks must be an array");let t=e.map((o,n)=>Oo(o,`policyChecks[${n}]`)),r=t.filter(o=>!o.passed);return{checks:t,passed:t.length-r.length,failed:r.length,reasons:r.map(o=>o.reason)}}function No(e){if(e==null)return null;if(G(e,"simulation"),typeof e.status!="string"||!["ok","success","failed","error","unavailable","unknown"].includes(e.status))throw new TypeError("sign-time review: simulation.status is invalid");if(e.willRevert!==!0&&e.willRevert!==!1&&e.willRevert!==null)throw new TypeError("sign-time review: simulation.willRevert must be boolean or null");let t={status:e.status,willRevert:e.willRevert??null,summary:dt(String(e.summary??"simulation result recorded"),"simulation.summary")};return e.gasEstimate!=null&&(t.gasEstimate=j(e.gasEstimate,"simulation.gasEstimate")),e.gasLimit!=null&&(t.gasLimit=j(e.gasLimit,"simulation.gasLimit")),t}function Co(e){if(e==null)return null;if(!Array.isArray(e)||e.length===0)throw new TypeError("sign-time review: assetDeltas must be a non-empty array");return e.map((t,r)=>{G(t,`assetDeltas[${r}]`);let o=j(t.before,`assetDeltas[${r}].before`),n=j(t.after,`assetDeltas[${r}].after`),i=(BigInt(n)-BigInt(o)).toString(),s;try{s=t.delta==null?i:BigInt(t.delta).toString()}catch{throw new TypeError(`sign-time review: assetDeltas[${r}].delta must be an integer`)}if(s!==i)throw new TypeError(`sign-time review: assetDeltas[${r}].delta does not match before/after`);return{...t,asset:dt(String(we(t.asset??t.token,`assetDeltas[${r}].asset`)),`assetDeltas[${r}].asset`),before:o,after:n,delta:s}})}function _o(e){if(e==null)return[];if(!Array.isArray(e))throw new TypeError("sign-time review: approvalDeltas must be an array");return e.map((t,r)=>{G(t,`approvalDeltas[${r}]`);let o=j(t.amount??t.after,`approvalDeltas[${r}].amount`);if(t.revokeLike!=null&&typeof t.revokeLike!="boolean")throw new TypeError(`sign-time review: approvalDeltas[${r}].revokeLike must be boolean`);return{token:te(t.token,`approvalDeltas[${r}].token`),spender:te(t.spender,`approvalDeltas[${r}].spender`),owner:te(t.owner,`approvalDeltas[${r}].owner`),amount:o,revokeLike:t.revokeLike??BigInt(o)===0n}})}function hr(e={}){G(e,"input");let t=lt(e),r=t.tx==null?t:G(t.tx,"tx"),o=j(t.chainId??r.chainId,"chainId",{positive:!0}),n=te(t.account??t.from??r.from,"account/from"),i=te(t.destination??t.to??r.to,"destination/to"),s=String(we(t.prepareHash,"prepareHash")).toLowerCase();if(!Ao.test(s))throw new TypeError("sign-time review: prepareHash must be a 32-byte hash");let l=t.route??t.venue;if(l==null)throw new TypeError("sign-time review: route/venue required");let c=t.decodedCalldata??t.decodedAction;if(c==null)throw new TypeError("sign-time review: decodedCalldata or decodedAction required");let f=String(we(t.calldata??t.data??r.data,"calldata/data")).toLowerCase();if(!So.test(f))throw new TypeError("sign-time review: calldata/data must be even-length hex");let a=t.policyChecks!==void 0&&t.policyChecks!==null,m=To(a?t.policyChecks:[]),g=No(t.simulation),d=Co(t.assetDeltas),p=_o(t.approvalDeltas),w=t.allowlistHits??[];if(!Array.isArray(w))throw new TypeError("sign-time review: allowlistHits must be an array");let y=g?.willRevert===!0||["failed","error"].includes(g?.status),A=g!=null&&g.willRevert===!1&&["ok","success"].includes(g.status),$=y||m.failed>0?"BLOCKED":A&&a&&m.checks.length>0&&d!=null?"READY":"UNKNOWN",_=typeof c=="string"?c:c.method??c.action??c.type??"transaction",P=`${$}: review ${_} on chain ${o}; policy ${m.passed} passed, ${m.failed} failed; ${d?.length??0} asset delta${d?.length===1?"":"s"}; local signature required`,W={reviewVersion:1,status:$,requiresLocalSignature:!0,signingLocal:!0,custody:"none",execution:"review-only",chainId:o,account:n,from:n,route:l,venue:t.venue??(typeof l=="string"?l:l.venue??l.provider??null),destination:i,to:i,...t.spender==null?{}:{spender:te(t.spender,"spender")},prepareHash:s,...t.decodedCalldata!==void 0?{decodedCalldata:t.decodedCalldata}:{decodedAction:t.decodedAction},calldata:f,data:f,selector:f.length>=10?f.slice(0,10):null,value:j(t.value??r.value??0,"value"),...(t.gasEstimate??r.gasEstimate)==null?{}:{gasEstimate:j(t.gasEstimate??r.gasEstimate,"gasEstimate")},...(t.gasLimit??r.gasLimit)==null?{}:{gasLimit:j(t.gasLimit??r.gasLimit,"gasLimit")},simulation:g,policyChecks:m,allowlistHits:w,assetDeltas:d,approvalDeltas:p,summary:P};return wr(W)}var Eo,xo,So,Ao,vo,Io,ko,me,ft=u(()=>{Eo=1,xo=/^0x[0-9a-f]{40}$/,So=/^0x(?:[0-9a-f]{2})*$/,Ao=/^(?:0x)?[0-9a-f]{64}$/,vo=/(privatekey|privkey|secretkey|seedphrase|mnemonic|passphrase|password|keystore|keymaterial|wif|xprv|xpriv|bearer|authorization|signature|apikey|credential)/i,Io=/\b(?:[5KL][1-9A-HJ-NP-Za-km-z]{50,51}|xprv[0-9A-Za-z]{50,})\b/,ko=new Set([12,15,18,21,24]),me=class extends Error{constructor(t){super(`sign-time review refused: secret-bearing field at ${t}`),this.name="SignTimeReviewSecretError",this.code="SIGN_TIME_REVIEW_SECRET"}}});import{readFileSync as sc,readdirSync as ac,existsSync as Ro}from"node:fs";import{dirname as Lo,join as he}from"node:path";import{fileURLToPath as $o}from"node:url";function Po(){let e=[he(ge,"descriptors"),he(ge,"clear-sign","descriptors"),he(ge,"..","clear-sign","descriptors"),he(ge,"..","..","clear-sign","descriptors"),he(ge,"..","..","..","clear-sign","descriptors")];for(let t of e)if(Ro(t))return t;return e[0]}var ge,dc,fc,yr=u(()=>{J();ge=Lo($o(import.meta.url));dc=Po(),fc=(1n<<256n)-1n});var br=u(()=>{ft();J();yr()});import{Address as Ec,NETWORK as xc,OutScript as Sc,RawTx as Ac,SigHash as vc,TEST_NETWORK as Ic,Transaction as kc}from"@scure/btc-signer";var mt=u(()=>{});import{createHash as Bo}from"node:crypto";import{base58 as Cc}from"@scure/base";import{getCompiledTransactionMessageDecoder as Rc}from"@solana/transaction-messages";var Er,Lc,wt=u(()=>{Er=e=>Bo("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),Lc=new Map([[Er("route"),{name:"route",prefixBytes:0}],[Er("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]])});import{AsyncLocalStorage as Do}from"node:async_hooks";function Pe(e){let t=jo.getStore();if(!t||t.closed||!Fo.includes(e))return null;if(t.spans.length>=Mo)return t.droppedSpans++,null;let r={stage:e,startMs:t.now()-t.start,durationMs:null,outcome:"pending",status:null};return t.spans.push(r),(o,n=null)=>{t.closed||r.durationMs!==null||(r.durationMs=Math.max(0,t.now()-t.start-r.startMs),r.outcome=o==="succeeded"?"succeeded":"failed",r.status=Number.isInteger(n)&&n>=100&&n<=599?n:null)}}var jo,Fo,Mo,xr=u(()=>{jo=new Do,Fo=["http","retry","shared"],Mo=512});import Y from"node:net";import qo from"node:dns";function Be(e){let t=String(e).toLowerCase().split("%")[0];if((t.match(/::/g)||[]).length>1)return null;let r=a=>{if(!a)return[];let m=a.split(":"),g=m.at(-1);if(g?.includes(".")){let d=g.split(".").map(Number);if(d.length!==4||d.some(p=>!Number.isInteger(p)||p<0||p>255))return null;m.splice(m.length-1,1,(d[0]<<8|d[1]).toString(16),(d[2]<<8|d[3]).toString(16))}return m.some(d=>!/^[0-9a-f]{1,4}$/.test(d))?null:m.map(d=>Number.parseInt(d,16))},[o,n]=t.split("::"),i=r(o),s=r(n);if(!i||!s)return null;let l=t.includes("::"),c=8-i.length-s.length;if(!l&&c!==0||l&&c<1)return null;let f=[...i,...Array(Math.max(0,c)).fill(0),...s];return f.length!==8?null:Uint8Array.from(f.flatMap(a=>[a>>8,a&255]))}function ht(e,t,r){let o=Math.floor(r/8),n=r%8;for(let s=0;s<o;s+=1)if(e[s]!==t[s])return!1;if(!n)return!0;let i=255<<8-n;return(e[o]&i)===(t[o]&i)}function gt(e){if(Y.isIPv4(e)){let t=e.split(".").map(Number);return!(t[0]===0||t[0]===10||t[0]===127||t[0]>=224||t[0]===100&&t[1]>=64&&t[1]<=127||t[0]===169&&t[1]===254||t[0]===172&&t[1]>=16&&t[1]<=31||t[0]===192&&(t[1]===0||t[1]===2||t[1]===168)||t[0]===192&&t[1]===88&&t[2]===99||t[0]===198&&(t[1]===18||t[1]===19||t[1]===51)||t[0]===203&&t[1]===0&&t[2]===113)}if(Y.isIPv6(e)){let t=Be(e);if(!t)return!1;let r=Be("::ffff:0:0");return ht(t,r,96)?gt([...t.slice(12)].join(".")):ht(t,Be("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([n,i])=>ht(t,Be(n),i)):!1}return!1}function zo(e){let t;try{t=new URL(String(e))}catch{return{ok:!1,error:`not a valid URL: ${String(e).slice(0,120)}`}}if(t.protocol!=="http:"&&t.protocol!=="https:")return{ok:!1,error:`refused protocol ${t.protocol} (only http/https)`};let r=t.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(Ho.has(r)||r.endsWith(".localhost")||r.endsWith(".internal"))return{ok:!1,error:`refused internal host ${r}`};let o=Y.isIP(r);return o!==0&&!gt(r)?{ok:!1,error:`refused private address ${r}`}:{ok:!0,url:t,host:r,isLiteralIp:o!==0}}async function yt(e,{lookupFn:t=qo.promises.lookup}={}){let r=zo(e);if(!r.ok)return r;if(r.isLiteralIp)return{ok:!0,url:r.url,addresses:[{address:r.host,family:Y.isIPv6(r.host)?6:4}]};let o;if(process.env.ORACLE_HOSTED_EGRESS_PROXY)return{ok:!0,url:r.url,addresses:[]};try{o=await t(r.host,{all:!0,verbatim:!0})}catch{return{ok:!1,error:`refused: ${r.host} did not resolve`}}return!Array.isArray(o)||o.length===0||o.some(n=>!gt(n.address))?{ok:!1,error:`refused: ${r.host} resolves to a non-public address`}:{ok:!0,url:r.url,addresses:o}}function Uo(e=process.env){let t=e.ORACLE_HOSTED_EGRESS_PROXY||"";if(!t)return null;let r;try{r=new URL(t)}catch{throw new Error("egress-guard: ORACLE_HOSTED_EGRESS_PROXY is not a URL")}if(r.protocol!=="http:"||!["127.0.0.1","::1","localhost","[::1]"].includes(r.hostname)||!r.port||r.username||r.password)throw new Error("egress-guard: egress proxy must be an exact loopback http origin");let o=e.ORACLE_HOSTED_EGRESS_TOKEN||"";if(!/^[A-Za-z0-9_-]{43}$/.test(o))throw new Error("egress-guard: egress proxy token is missing");return{uri:r.origin,token:o}}async function bt({requireUndici:e=!1,importUndici:t=()=>import("undici")}={}){let r,o,n;try{n=await t(),r=n.Agent,o=n.fetch}catch(d){if(e)throw new Error(`egress-guard: untrustedUrl pinning requires the undici package, which failed to load: ${d?.message||d}`);return null}if(typeof r!="function"||typeof o!="function"){if(e)throw new Error("egress-guard: untrustedUrl pinning requires undici's Agent and fetch exports, which were not found on the imported module");return null}let i=d=>String(d).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),s=new Map,l=d=>(Array.isArray(d)?d:[d]).map(p=>typeof p=="string"?{address:p}:p).filter(p=>p&&p.address).map(p=>({address:p.address,family:p.family||(Y.isIPv6(p.address)?6:4)})),c=(d,p,w)=>{s.set(i(d),l(typeof p=="string"?[{address:p,family:w}]:p))},f=d=>{let p=i(d);if(Y.isIP(p))return[{address:p,family:Y.isIPv6(p)?6:4}];let w=s.get(p);if(!w||!w.length)throw new Error(`refused: unpinned host ${d} during pinned fetch`);return w},a=Uo(),m=a&&typeof n.ProxyAgent=="function"?new n.ProxyAgent({uri:a.uri,token:`Bearer ${a.token}`,connectTimeout:1e4}):new r({connect:{lookup(d,p,w){let y;try{y=f(d)}catch(A){return w(A)}return p?.all?w(null,y):w(null,y[0].address,y[0].family)}}}),g=Wo((d,p={})=>o(d,{...p,dispatcher:m}),c);return{dispatcher:m,fetch:g,pin:c,resolve:f,async close(){try{await m.destroy()}catch{}}}}function Wo(e,t){if(typeof e!="function")throw new Error("markPinCapableFetch: fetchImpl must be a function");if(typeof t!="function")throw new Error("markPinCapableFetch: pin must be a function");return e[Et]=Object.freeze({pin:t}),e}function xt(e){return typeof e=="function"&&typeof e[Et]?.pin=="function"}function Sr(e,t,r){if(!xt(e))throw new Error("pinFetchToAddresses: fetchImpl is not pin-capable");e[Et].pin(t,r)}var Ho,Et,Ar=u(()=>{Ho=new Set(["localhost","metadata.google.internal","metadata.goog"]);Et=Symbol.for("oracle.egressGuard.pinCapableFetch")});import{createHash as Vo}from"node:crypto";import{types as M}from"node:util";function v(e){return z(`HTTP JSON body refused: ${e}`)}function ti(e){return["isArgumentsObject","isArrayBuffer","isAnyArrayBuffer","isArrayBufferView","isBoxedPrimitive","isDataView","isDate","isExternal","isGeneratorObject","isKeyObject","isCryptoKey","isMap","isMapIterator","isModuleNamespaceObject","isNativeError","isPromise","isRegExp","isSet","isSetIterator","isTypedArray","isWeakMap","isWeakSet"].some(t=>typeof M[t]=="function"&&M[t](e))}function ri(e){let t=[],r=0,o=0,n=0,i=0,s=new WeakSet,l=a=>{if(r+=Buffer.byteLength(a,"utf8"),r>F.bytes)throw v("serialized byte limit exceeded");t.push(a)},c=a=>{if(Buffer.byteLength(a,"utf8")>F.bytes)throw v("serialized byte limit exceeded");return JSON.stringify(a)},f=(a,m)=>{if(o+=1,o>F.nodes)throw v("node limit exceeded");if(m>F.depth)throw v("depth limit exceeded");if(a===null){l("null");return}if(typeof a=="string"){l(c(a));return}if(typeof a=="boolean"){l(a?"true":"false");return}if(typeof a=="number"){if(!Number.isFinite(a))throw v("non-finite number");l(Object.is(a,-0)?"0":String(a));return}if(typeof a!="object")throw v("unsupported non-JSON value");if(M.isProxy(a))throw v("proxy value");if(ti(a))throw v("unsupported exotic object");if(s.has(a))throw v("cyclic value");s.add(a);try{if(Object.getOwnPropertySymbols(a).length>0)throw v("symbol-keyed fields are unsupported");if(Array.isArray(a)){let p=Object.getPrototypeOf(a),w=0;for(;p!==null;){if(M.isProxy(p))throw v("proxy array prototype");if(w+=1,w>F.depth)throw v("array prototype depth limit exceeded");p=Object.getPrototypeOf(p)}if(a.length>F.arrayLength)throw v("array length limit exceeded");for(let A=0;A<a.length;A+=1){let $=Object.getOwnPropertyDescriptor(a,String(A));if(!$||!Object.hasOwn($,"value")||$.enumerable!==!0)throw v("array entries must be dense enumerable own data")}let y=0;for(let A in a){if(i+=1,i>F.fields)throw v("enumeration limit exceeded");if(Object.hasOwn(a,A)&&(y+=1,y>a.length))throw v("named array fields are unsupported")}if(y!==a.length)throw v("array entries must be dense enumerable own data");l("[");for(let A=0;A<a.length;A+=1)A&&l(","),f(Object.getOwnPropertyDescriptor(a,String(A)).value,m+1);l("]");return}let g=Object.getPrototypeOf(a);if(g!==Object.prototype&&g!==null)throw v("non-plain object");let d=[];for(let p in a){if(i+=1,i>F.fields)throw v("enumeration limit exceeded");if(!Object.hasOwn(a,p))continue;if(n+=1,n>F.fields)throw v("field limit exceeded");let w=Object.getOwnPropertyDescriptor(a,p);if(!w||!Object.hasOwn(w,"value")||w.enumerable!==!0)throw v("object fields must be enumerable own data");d.push([p,w.value])}l("{");for(let p=0;p<d.length;p+=1)p&&l(","),l(c(d[p][0])),l(":"),f(d[p][1],m+1);l("}")}finally{s.delete(a)}};return f(e,0),t.join("")}function ni(e){let t=Object.create(null);if(e==null)return t;if(typeof e!="object"&&typeof e!="function")throw new TypeError("HTTP headers must be an object");if(M.isProxy(e))throw new TypeError("HTTP headers must not be a proxy");if(Object.getOwnPropertySymbols(e).length>0)throw new TypeError("HTTP headers must not contain symbol fields");let r=new Set;for(let o of Object.keys(e)){if(!/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/u.test(o))throw new TypeError("HTTP header names must be valid tokens");let n=o.toLowerCase();if(r.has(n))throw new TypeError("HTTP headers contain a duplicate canonical name");r.add(n);let i=Object.getOwnPropertyDescriptor(e,o);if(!i||!Object.hasOwn(i,"value"))throw new TypeError("HTTP headers must contain own data properties");let s=i.value;if(s==null||["object","function","symbol"].includes(typeof s))throw new TypeError("HTTP header values must be scalar");t[o]=String(s)}return t}function oi(){return Object.assign(Object.create(null),{Accept:"application/json"})}function ii(e,t){if(!e)throw new Error(`HTTP redirect from ${t} missing Location`);let r=new URL(String(e),String(t));if(r.protocol!=="http:"&&r.protocol!=="https:")throw new Error(`HTTP redirect from ${t} used unsupported protocol ${r.protocol}`);return r.toString()}function si(e,t){return new URL(String(e)).origin===new URL(String(t)).origin}function De(e){if((typeof e!="object"||e===null)&&typeof e!="function")return`${typeof e}:${String(e)}`;let t=Tr.get(e);return t||(t=Nr,Nr+=1,Tr.set(e,t)),`reference:${t}`}function Cr(e){if(!e||typeof e!="object"||Array.isArray(e)||!Object.hasOwn(e,"jsonrpc")||!Object.hasOwn(e,"method")||e.jsonrpc!=="2.0")return!1;let t=typeof e.method=="string"?e.method:"";return t?ai.has(t)||/^get[A-Z0-9_]/u.test(t)||/^is[A-Z0-9_]/u.test(t)||/^eth_get[A-Z0-9_]/u.test(t):!1}function _r(e,t){if(e==="GET"&&t==null)return!0;if(e!=="POST"||t==null)return!1;let r=t;if(typeof t=="string")try{r=JSON.parse(t)}catch{return!1}if(Array.isArray(r))return r.length>0&&r.every(Cr);if(!r||typeof r!="object")return!1;if(Object.hasOwn(r,"jsonrpc")||Object.hasOwn(r,"method"))return Cr(r);let o=Object.hasOwn(r,"type")?r.type:null;return typeof o=="string"&&ci.has(o)&&(!Object.hasOwn(r,"action")||r.action==null)&&(!Object.hasOwn(r,"signature")||r.signature==null)&&(!Object.hasOwn(r,"nonce")||r.nonce==null)}function ui(e,t,r,o={},n=null){let i=Vo("sha256"),s=(c,f)=>{let a=String(f);i.update(String(Buffer.byteLength(c,"utf8"))).update(":").update(c),i.update("=").update(String(Buffer.byteLength(a,"utf8"))).update(":").update(a).update(`
|
|
2
|
-
`)};s("method",e),s("url",t),Object.keys(r||{}).map((c,f)=>({name:c.toLowerCase(),order:f,value:String(r[c])})).sort((c,f)=>c.name.localeCompare(f.name)||c.order-f.order).forEach((c,f)=>{s(`header-name-${f}`,c.name),s(`header-value-${f}`,c.value)}),s("body",n??"-");for(let c of["untrustedUrl","maxResponseBytes","sameOriginRedirectsOnly","redirectPolicy","maxRedirects","timeoutMs","retries","fetchImpl","realFetch","lookupFn","importUndici","validateResponse"])s(`context-${c}`,o[c]??"-");return i.digest("hex")}function li(e,t){let r=Number(t);return Number.isFinite(r)&&r>0?Math.min(r*1e3,Ir):Math.min(250*2**e,Ir)+Math.floor(Math.random()*100)}function z(e,t={}){let r=new Error(e);return r.retryable=!1,Object.assign(r,t),r}function At(e,t,r){return z(`HTTP response from ${e} exceeded maxResponseBytes ${r} (${t})`,{oversize:!0})}function X(e){try{let t=e?.body?.cancel?.();t&&typeof t.then=="function"&&t.catch(()=>{})}catch{}}function fi(e){return e?e.byteLength??e.length??0:0}async function pi(e,t,{url:r,truncate:o=!1,onOversize:n}={}){if(t==null)return await e.text();let i=Number(e.headers?.get?.("content-length"));if(Number.isFinite(i)&&i>t&&(X(e),!o))throw At(r,`content-length ${i}`,t);let s=e.body?.getReader?.();if(!s){let m=await e.text(),g=Buffer.byteLength(m,"utf8");if(g>t){if(!o)throw At(r,`body ${g} bytes`,t);return Buffer.from(m,"utf8").subarray(0,t).toString("utf8")}return m}let l=[],c=0,f=!1;try{for(;;){let{value:m,done:g}=await s.read();if(g)break;if(m&&(l.push(Buffer.from(m)),c+=fi(m),c>t)){f=!0;break}}}finally{if(f)try{await s.cancel()}catch{}try{s.releaseLock?.()}catch{}}if(f&&(typeof n=="function"&&n(),!o))throw At(r,`streamed ${c} bytes`,t);let a=Buffer.concat(l);return(f?a.subarray(0,t):a).toString("utf8")}function mi(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}async function wi(e,{fetchImpl:t,method:r,headers:o,body:n,timeoutMs:i,lookupFn:s,realFetch:l,untrustedUrl:c=!1,maxResponseBytes:f=null,sameOriginRedirectsOnly:a=!1,importUndici:m,validateResponse:g,signal:d,redirectPolicy:p="follow",maxRedirects:w=je}){let y=null,A=t,$=s?{lookupFn:s}:{};if(c&&!l&&!xt(A))throw z(`HTTP refused ${e}: untrustedUrl requires a pin-capable fetchImpl (see markPinCapableFetch in egress-guard.mjs) or no fetchImpl override so Oracle can pin the connection itself`);let _=new AbortController,P=setTimeout(()=>_.abort(),i),W=d?Or?Or([d,_.signal]):d:_.signal,ae=async(b,{status:k=null}={})=>{let O=await yt(b,$);if(!O.ok)throw z(k==null?`HTTP refused ${b}: ${O.error}`:`HTTP redirect to ${b} ${O.error}`,k==null?{}:{status:k});let H=new URL(b).hostname;if(l){if(y&&(await y.close(),y=null),!y)try{y=await bt({requireUndici:!0,...m?{importUndici:m}:{}})}catch(h){throw z(k==null?`HTTP refused ${b}: ${h?.message||h}`:`HTTP redirect to ${b} refused: ${h?.message||h}`,k==null?{}:{status:k})}y.pin(H,O.addresses),A=y.fetch}else Sr(A,H,O.addresses);return O};try{let b=String(e),k=Object.assign(Object.create(null),o||{});c&&await ae(b);for(let O=0;O<=w;O+=1){let H=Object.assign(Object.create(null),{method:r,headers:k,body:n,signal:W,redirect:"manual",dispatcher:void 0}),h=await A(b,H);if((p==="error"||w===0)&&h.status>=300&&h.status<400)throw X(h),z(`HTTP ${h.status} ${r} redirect refused`,{status:h.status,redirectRefused:!0});if(ei.has(h.status)){let R=a===!0&&r==="POST"&&[307,308].includes(h.status)&&_r(r,n);if(r!=="GET"&&r!=="HEAD"&&!R){X(h);let I=new Error(`HTTP ${h.status} ${r} ${b} redirected non-idempotent request`);throw I.status=h.status,I}if(O===w)throw X(h),z(`HTTP ${h.status} ${r} redirect budget exhausted`,{status:h.status,redirectRefused:!0});let nr=h.headers?.get?.("location"),B;try{B=ii(nr,b)}catch(I){throw X(h),I}let V=!si(B,b);if(X(h),V&&r==="POST"){let I=new Error(`HTTP ${h.status} ${r} cross-origin redirect refused`);throw I.status=h.status,I}if(V&&a){let I=new Error(`HTTP ${h.status} ${r} cross-origin redirect refused`);throw I.status=h.status,I.retryable=!1,I}if(V&&(k=oi(k)),c)await ae(B,{status:h.status});else if(V){let I=await yt(B,$);if(!I.ok){let x=new Error(`HTTP redirect from ${b} ${I.error}`);throw x.status=h.status,x.retryable=!1,x}l&&I.addresses?.length&&(y||(y=await bt(m?{importUndici:m}:{})),y&&(y.pin(new URL(B).hostname,I.addresses),A=y.fetch))}b=B;continue}if(typeof g=="function")try{await g(h,{url:b})}catch(R){throw X(h),z(R?.message||String(R))}let T=await pi(h,f,{url:b,onOversize:()=>_.abort()}),ce=mi(T);if(!h.ok){let R=new Error(`HTTP ${h.status} ${r} ${b}`);throw R.status=h.status,R.retryAfter=h.headers?.get?.("retry-after")??null,R.body=ce??T.slice(0,300),R}return ce??T}throw new Error(`HTTP redirect loop for ${e}`)}catch(b){if(_.signal.aborted&&!be(d)){let k=b&&(typeof b=="object"||typeof b=="function")&&!M.isProxy(b)?b:null,O=k?Object.getOwnPropertyDescriptor(k,"oversize"):null;if(!(O&&Object.hasOwn(O,"value")&&O.value===!0))try{if(!k)throw new TypeError("unsafe rejection");Object.defineProperties(k,{oracleTimeout:{value:!0,enumerable:!1},retryable:{value:!1,enumerable:!1}})}catch{let h=new Error("HTTP request timed out");throw Object.defineProperties(h,{oracleTimeout:{value:!0,enumerable:!1},retryable:{value:!1,enumerable:!1}}),h}}throw b}finally{clearTimeout(P),y&&await y.close()}}async function Fe(e,t={}){if(t!=null&&typeof t!="object"&&typeof t!="function")throw new TypeError("HTTP options must be an object");if(t!=null&&M.isProxy(t))throw new TypeError("HTTP options must not be a proxy");let r=new Set(["body","dedupe","fetchImpl","headers","importUndici","lookupFn","maxRedirects","maxResponseBytes","method","redirectPolicy","retries","sameOriginRedirectsOnly","signal","timeoutMs","untrustedUrl","validateResponse"]);if(t!=null){if(Object.getOwnPropertySymbols(t).length>0)throw new TypeError("HTTP options contain unknown fields");for(let x of Object.getOwnPropertyNames(t)){let E=Object.getOwnPropertyDescriptor(t,x);if(!(x==="toJSON"&&E&&Object.hasOwn(E,"value")&&E.value===void 0)){if(!r.has(x))throw new TypeError("HTTP options contain unknown fields");if(!E||!E.enumerable||!Object.hasOwn(E,"value"))throw new TypeError("HTTP options must contain enumerable own data properties")}}}let o=x=>{if(t==null||!Object.hasOwn(t,x))return;let E=Object.getOwnPropertyDescriptor(t,x);if(!E||!Object.hasOwn(E,"value"))throw new TypeError("HTTP options must contain own data properties");return E.value};if(typeof e!="string"||e.length===0||e.length>8192)throw new TypeError("HTTP URL must be a bounded string");let n=o("method");if(n!==void 0&&(typeof n!="string"||!/^[A-Za-z]+$/u.test(n)))throw new TypeError("HTTP method must be a string token");let i=o("timeoutMs");if(i!==void 0&&(!Number.isInteger(i)||i<1||i>12e4))throw new TypeError("HTTP timeoutMs must be a bounded integer");let s=o("retries");if(s!==void 0&&(!Number.isInteger(s)||s<0||s>10))throw new TypeError("HTTP retries must be a bounded integer");let l=o("redirectPolicy");if(l!==void 0&&l!=="follow"&&l!=="error")throw new TypeError('HTTP redirectPolicy must be "follow" or "error"');let c=o("maxRedirects");if(c!==void 0&&(!Number.isInteger(c)||c<0||c>je))throw new TypeError(`HTTP maxRedirects must be an integer from 0 through ${je}`);if(l==="error"&&c!==void 0&&c!==0)throw new TypeError('HTTP redirectPolicy "error" requires maxRedirects 0 when supplied');let f=l??"follow",a=f==="error"?0:c??je;for(let x of["dedupe","untrustedUrl","sameOriginRedirectsOnly"]){let E=o(x);if(E!==void 0&&typeof E!="boolean")throw new TypeError(`HTTP ${x} must be boolean`)}let m=o("maxResponseBytes");if(m!==void 0&&(!Number.isInteger(m)||m<1||m>64*1024*1024))throw new TypeError("HTTP maxResponseBytes must be a bounded integer");let g=o("signal");if(g!==void 0){if(M.isProxy(g)||!(g instanceof AbortSignal))throw new TypeError("HTTP signal must be a native AbortSignal");try{be(g)}catch{throw new TypeError("HTTP signal must be a native AbortSignal")}}for(let x of["importUndici","lookupFn","validateResponse"]){let E=o(x);if(E!==void 0&&typeof E!="function")throw new TypeError(`HTTP ${x} must be a function`)}let d=o("fetchImpl"),p=d||globalThis.fetch;if(typeof p!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let w=i??12e3,y=(n||"GET").toUpperCase(),A=o("headers"),$=ni(A),_=Object.assign(Object.create(null),$);Object.keys(_).some(x=>x.toLowerCase()==="accept")||(_.Accept="application/json");let P=o("body");P!=null&&typeof P!="string"&&(Object.keys(_).find(E=>E.toLowerCase()==="content-type")||(_["Content-Type"]="application/json"),P=ri(P));let W=s??Jo,ae=o("lookupFn"),b=!d,k=o("untrustedUrl")===!0,O=o("sameOriginRedirectsOnly")===!0,H=o("importUndici"),h=o("validateResponse"),T=g,ce=m??null,R=async()=>{let x;for(let E=0;E<=W;E++){T&&Xo.call(T);let or=Pe("http");try{let D=await wi(e,{fetchImpl:p,method:y,headers:_,body:P,timeoutMs:w,lookupFn:ae,realFetch:b,untrustedUrl:k,maxResponseBytes:ce,sameOriginRedirectsOnly:O,importUndici:H,validateResponse:h,signal:T,redirectPolicy:f,maxRedirects:a});return or?.("succeeded"),D}catch(D){x=D;let Q=ot=>{if(!D||typeof D!="object"&&typeof D!="function"||M.isProxy(D))return;let ue=Object.getOwnPropertyDescriptor(D,ot);return ue&&Object.hasOwn(ue,"value")?ue.value:void 0},_e=Q("status");or?.("failed",_e);let co=Q("oracleTimeout")===!0||Q("name")==="AbortError"||Q("name")==="TimeoutError"||be(T),uo=new Set([408,425,429]),lo=Q("retryable")===!1?!1:_e!=null?uo.has(_e)||Ko.has(_e)&&vr.has(y):!co&&vr.has(y);if(E===W||!lo)throw D;let ir=li(E,Q("retryAfter")),fo=Pe("retry"),sr=!1;try{T?await new Promise((ot,ue)=>{let ar,le=()=>{clearTimeout(ar),kr.call(T,"abort",le),ue(Qo(T)||new DOMException("Aborted","AbortError"))};if(be(T)){le();return}ar=setTimeout(()=>{kr.call(T,"abort",le),ot()},ir),Zo.call(T,"abort",le,{once:!0}),be(T)&&le()}):await di(ir),sr=!0}finally{fo?.(sr?"succeeded":"failed")}}}throw x};if(!(o("dedupe")!==!1&&!T&&_r(y,P)))return R();let B=ui(y,e,_,{untrustedUrl:k,maxResponseBytes:ce,sameOriginRedirectsOnly:O,redirectPolicy:f,maxRedirects:a,timeoutMs:w,retries:W,fetchImpl:De(p),realFetch:b,lookupFn:De(ae),importUndici:De(H),validateResponse:De(h)},P),V=St.get(B);if(V){let x=Pe("shared");try{let E=await V;return x?.("succeeded"),E}catch(E){throw x?.("failed"),E}}let I=R().finally(()=>St.delete(B));return St.set(B,I),I}var Ko,vr,Jo,Ir,Go,Yo,Xo,Zo,kr,Or,be,Qo,ei,je,Uc,F,St,Tr,Nr,ai,ci,di,Me=u(()=>{xr();Ar();Ko=new Set([408,425,429,500,502,503,504]),vr=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),Jo=2,Ir=4e3,Go=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,Yo=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,Xo=AbortSignal.prototype.throwIfAborted,Zo=EventTarget.prototype.addEventListener,kr=EventTarget.prototype.removeEventListener,Or=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null,be=e=>e?Go.call(e):!1,Qo=e=>e?Yo.call(e):void 0,ei=new Set([301,302,303,307,308]),je=3,Uc=64*1024,F=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024});St=new Map,Tr=new WeakMap,Nr=1;ai=new Set(["eth_blockNumber","eth_call","eth_chainId","eth_estimateGas","getHealth","minimumLedgerSlot","net_version","simulateTransaction","web3_clientVersion"]),ci=new Set(["allMids","l2Book","outcomeMeta","spotClearinghouseState","userFills","meta","metaAndAssetCtxs","perpDexs","candleSnapshot","fundingHistory","openOrders","frontendOpenOrders","clearinghouseState","spotMeta","validatorSummaries","delegatorSummary","delegations","delegatorRewards","delegatorHistory","maxBuilderFee"]);di=e=>new Promise(t=>setTimeout(t,e))});var Rr=u(()=>{});var Lr=u(()=>{Me();Rr()});var eu,$r=u(()=>{Lr();eu=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"})});var iu,su,qe=u(()=>{K();$r();iu=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"leverage","perp-isolated-margin":"margin","builder-fee-approval":"approveBuilder","hype-stake-deposit":"stake","hype-stake-withdraw":"unstake","hype-delegate":"delegate","hype-undelegate":"delegate"}),su=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"updateLeverage","perp-isolated-margin":"updateIsolatedMargin","builder-fee-approval":"approveBuilderFee","hype-stake-deposit":"cDeposit","hype-stake-withdraw":"cWithdraw","hype-delegate":"tokenDelegate","hype-undelegate":"tokenDelegate"})});var uu,It=u(()=>{K();uu="0x"+"00".repeat(32)});var hi,mu,He=u(()=>{It();K();hi=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),mu=Object.freeze(hi.map(e=>e[0]))});var Ee=u(()=>{K()});var ze=u(()=>{J();br();mt();wt();qe();He();Ee()});var Nu,Cu,Ue=u(()=>{Nu=300*1e3,Cu=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});var We=u(()=>{J()});import{TypedDataEncoder as Pu,getAddress as Bu,isAddress as Du}from"ethers";var yi,bi,qr=u(()=>{Ue();yi=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),bi=Object.freeze({Order:[{name:"salt",type:"uint256"},{name:"maker",type:"address"},{name:"receiver",type:"address"},{name:"makerAsset",type:"address"},{name:"takerAsset",type:"address"},{name:"makingAmount",type:"uint256"},{name:"takingAmount",type:"uint256"},{name:"makerTraits",type:"uint256"}]})});var Mu,Hr=u(()=>{Mu=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"})});var zr=u(()=>{});import{TypedDataEncoder as Ju,getAddress as Gu,isAddress as Yu}from"ethers";var Ei,nl,xi,ol,Ur=u(()=>{Me();$e();Hr();zr();Ue();Ei=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),nl=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"}),xi=Object.freeze({Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}),ol=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]})});import{TypedDataEncoder as al,getAddress as cl}from"ethers";var dl,kt=u(()=>{qr();Ur();dl=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"])});import{Interface as Vr}from"ethers";var vi,Tl,Ii,Nl,Cl,_l,Rl,ki,Ll,Ve=u(()=>{J();$e();Ue();We();mt();wt();qe();He();Ee();kt();vi=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]),Tl=Object.freeze({swap:5,bridge:5,perps:0,nft:0,mint:0,transfer:0,approve:0,delegate:0,identity:0,order:0,cancel:0,leverage:0,margin:0,approveBuilder:0,stake:0,unstake:0}),Ii=Object.freeze({"0x04e45aaf":{provider:"uniswap-v3",action:"swap",layout:"router02-exact-input-single"},"0x414bf389":{provider:"uniswap-v3",action:"swap",layout:"swap-router-exact-input-single"},"0xc04b8d59":{provider:"uniswap-v3",action:"swap",layout:"exact-input-deadline"},"0xb858183f":{provider:"uniswap-v3",action:"swap",layout:"exact-input"},"0x5ae401dc":{provider:"uniswap-v3",action:"swap",layout:"multicall-deadline"},"0xa026383e":{provider:"aerodrome",action:"swap",layout:"aerodrome-exact-input-single"},"0x7b939232":{provider:"across-v3",action:"bridge",layout:"across-deposit-v3"}}),Nl=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),Cl=new Vr(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),_l=new Vr(["function mintAllowList(address nftContract,address feeRecipient,address minterIfNotPayer,uint256 quantity,(uint80 mintPrice,uint48 maxTotalMintableByWallet,uint48 startTime,uint48 endTime,uint48 dropStageIndex,uint32 maxTokenSupplyForStage,uint16 feeBps,bool restrictFeeRecipients) mintParams,bytes32[] proof) payable"]),Rl=Object.freeze({"0xa0712d68":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0x1249c58b":{provider:"nft-mint",action:"mint",layout:"mint-no-args"},"0x2db11544":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xefef39a1":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xa6f2ae3a":{provider:"nft-mint",action:"mint",layout:"mint-no-args"}}),ki=Object.freeze([...vi]),Ll=Object.freeze({...Ii})});import{encode as Bl}from"@msgpack/msgpack";import{keccak256 as jl,verifyTypedData as Fl}from"ethers";var Ml,ql,Ot=u(()=>{Ml=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),ql=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]})});var Tt=u(()=>{Ee()});import{ed25519 as Gl}from"@noble/curves/ed25519.js";import{base58 as Xl}from"@scure/base";import{RawTx as Ql,SigHash as ed,Transaction as td}from"@scure/btc-signer";import{Transaction as nd,keccak256 as od,verifyTypedData as id}from"ethers";var Nt=u(()=>{Ot();Tt()});import{base58 as pd}from"@scure/base";var xe=u(()=>{ze();Ve();We();J();Nt()});var Jr=u(()=>{xe();Ve()});import{wordlists as Ni}from"ethers";function Li(e){let t=String(e).trim().toLowerCase().split(/\s+/).filter(Boolean);return Ri.has(t.length)&&t.every(r=>Ni.en.getWordIndex(r)>=0)}function Di(e){let t=Gr(e);return Bi.has(t)||Pi.test(t)}function Gr(e){return String(e).replace(/[^a-z0-9]/gi,"").toLowerCase()}function ji(e){let t=Gr(e);return[...Ci].some(r=>t.includes(r))}function Fi(e,t,r){if(typeof t=="string"){if(_i.some(o=>o.test(t))||Li(t))throw new Se(r);if($i.test(t)&&!Di(e))throw new Se(r)}}function _t(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string")return Fi(r,e,t),e;if(typeof e=="number"){if(!Number.isFinite(e))throw new TypeError(`action receipt: non-finite number at ${t}`);return e}if(typeof e=="bigint")return e.toString();if(Array.isArray(e))return e.map((n,i)=>_t(n,`${t}[${i}]`,r));if(typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`action receipt: JSON-like value required at ${t}`);let o={};for(let n of Object.keys(e).sort()){let i=`${t}.${n}`;if(ji(n))throw new Se(i);e[n]!==void 0&&(o[n]=_t(e[n],i,n))}return o}function Ke(e){return _t(e)}var Ci,_i,Ri,$i,Pi,Bi,Se,Ae=u(()=>{Ci=new Set(["privatekey","privkey","secretkey","seedphrase","seed","mnemonic","passphrase","password","keystore","keymaterial","wif","xprv","xpriv","bearer","authorization","signature","apikey","credential"]),_i=[/\b[5KL][1-9A-HJ-NP-Za-km-z]{50,51}\b/,/\bxprv[0-9A-Za-z]{50,}\b/],Ri=new Set([12,15,18,21,24]);$i=/^\s*(?:0x)?[0-9a-fA-F]{64}\s*$/,Pi=/(hash|digest|root|salt|nonce|proof|commitment|sig|id)(?:e?s)?$/i,Bi=new Set(["calldata","data","publickey","pubkey","message","payload","input","extradata"]);Se=class extends Error{constructor(t){super(`action receipt refused: secret-bearing field at ${t}`),this.name="ActionReceiptSecretError",this.code="ACTION_RECEIPT_SECRET"}}});import{closeSync as Td,constants as Mi,fchmodSync as Nd,fsyncSync as Cd,lstatSync as _d,mkdirSync as Rd,openSync as Ld,readFileSync as $d,renameSync as Pd,rmSync as Bd,writeFileSync as Dd}from"node:fs";var Md,Yr=u(()=>{Ae();xe();Md=Mi.O_NOFOLLOW??0});import{wordlists as zd}from"ethers";var Xr,Wd,re=u(()=>{Ae();Xr=64*1024,Wd=32*1024});var zi,Jd,Gd,Ge=u(()=>{re();zi=["schemaVersion","buildVersion","recordType","execution","custody"],Jd=[...zi,"recordHash"],Gd=Object.freeze({signed:new Set(["workflow.signed","legacy.signed"]),submitted:new Set(["workflow.submitted","legacy.broadcast"]),finalized:new Set(["workflow.finalized"]),reorged:new Set(["workflow.reorged"]),orphaned:new Set(["workflow.orphaned"]),compensating:new Set(["workflow.compensating"]),compensated:new Set(["workflow.compensated"])})});var Ui,an,ef,Bt=u(()=>{re();Ge();Ui=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),an=Object.freeze(["workflow.drafted","workflow.checked","workflow.approval_requested","workflow.approval_granted","workflow.signed","workflow.submitted","workflow.finalized","workflow.reorged","workflow.orphaned","workflow.compensating","workflow.compensated","workflow.failed","workflow.cancelled","workflow.annotated"]),ef=new Set(an)});var Yi,cn=u(()=>{re();Bt();Yi=64*1024*1024});var cf,uf,lf,un=u(()=>{cf=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),uf=Object.freeze(["read","simulate"]),lf=1440*60});function Dt(e){let t=String(e),r=t.toLowerCase().replace(/[\s._-]+/g,"");return Xi.test(t)||Zi.includes(r)}function Qi(e){return e.replace(/"([A-Za-z0-9_-]+)"\s*:\s*"(?:0x)?([0-9a-fA-F]{64})"/g,(t,r)=>dn.includes(String(r).toLowerCase().replace(/[_-]/g,""))?`"${r}":"<hex64>"`:t)}function fn(e){let t;try{t=JSON.stringify(e)}catch(n){throw new q("$",`unserializable-payload: ${String(n?.message||n)}`)}if(t===void 0)return"null";let r=Qi(t);for(let{rule:n,re:i}of ln)if(i.test(r))throw new q("$<serialized>",n);if(/(?:^|[^0-9a-fA-Fx])0x[0-9a-fA-F]{64}(?![0-9a-fA-F])/.test(r))throw new q("$<serialized>","raw-32-byte-hex-embedded");return JSON.parse(t,(n,i)=>{if(n&&Dt(n))throw new q(`$<serialized>.${n}`,"forbidden-key-name");return i}),t}function U(e,t="$",r=new Set,o=""){if(e==null)return e;if(typeof e=="string"){let n=dn.includes(String(o).toLowerCase().replace(/[_-]/g,""));for(let{rule:i,re:s}of ln)if(!(n&&i.startsWith("raw-32-byte-hex"))&&s.test(e))throw new q(t,i);return e}if(typeof e!="object"||r.has(e)||(r.add(e),ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e;if(e instanceof Map){for(let[n,i]of e.entries()){if(typeof n=="string"&&Dt(n))throw new q(`${t}[${JSON.stringify(n)}]`,"forbidden-key-name");U(n,`${t}[key]`,r),U(i,`${t}[${String(n)}]`,r)}return e}if(e instanceof Set){let n=0;for(let i of e.values())U(i,`${t}[${n++}]`,r);return e}if(Array.isArray(e))return e.forEach((n,i)=>U(n,`${t}[${i}]`,r)),e;for(let[n,i]of Object.entries(e)){if(Dt(n))throw new q(`${t}.${n}`,"forbidden-key-name");U(i,`${t}.${n}`,r,n)}return e}var q,Xi,Zi,ln,dn,jt=u(()=>{un();q=class extends Error{constructor(t,r){super(`secret material must never appear in a public API object (at ${t}, rule: ${r})`),this.name="SecretLeakError",this.path=t,this.rule=r}},Xi=/(private[_-]?key|secret|bearer|keystore|mnemonic|seed[_-]?phrase|passphrase|password|api[_-]?key|access[_-]?token|auth[_-]?token|session[_-]?token|signer[_-]?url|signature)/i,Zi=Object.freeze(["privkey","wif","xprv","seed"]);ln=Object.freeze([{rule:"raw-32-byte-hex-key",re:/^0x[0-9a-fA-F]{64}$/},{rule:"raw-32-byte-hex-bare",re:/^[0-9a-fA-F]{64}$/},{rule:"extended-private-key",re:/\b(?:xprv|tprv|yprv|zprv)[1-9A-HJ-NP-Za-km-z]{107}\b/},{rule:"bitcoin-wif",re:/\b[59KLc][1-9A-HJ-NP-Za-km-z]{50,51}\b/},{rule:"bip39-mnemonic",re:/\b(?:[a-z]{3,8}\s+){11,23}[a-z]{3,8}\b/},{rule:"bearer-token",re:/bearer\s+[A-Za-z0-9._~+/=-]+/i},{rule:"pem-private-key",re:/-----BEGIN[A-Z ]*PRIVATE KEY-----/},{rule:"keystore-path",re:/keystore/i},{rule:"signer-url",re:/https?:\/\/\S*sign/i},{rule:"authorization-header",re:/authorization\s*:/i}]),dn=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});var Ft,xf,pn=u(()=>{jt();Ft=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),xf=Object.freeze(Object.fromEntries(Ft.map((e,t)=>[e,Object.freeze(t+1<Ft.length?[Ft[t+1]]:[])])))});var es,mn=u(()=>{pn();re();Ge();es=Object.freeze({intent:"draft",quote_comparison:"draft",simulation:"draft",prepared:"checked",approval:"approval",signed:"signed",broadcast:"submitted",settlement:"finalized",balance_delta:"compensated",position:"compensated"})});var wn=u(()=>{re();Ge();Bt();cn();mn()});var rs,ns,os,ip,sp,ap,cp,up,is,lp,hn=u(()=>{rs=Object.freeze(["owner","operator","agent","viewer"]),ns=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),os=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),ip=Object.freeze(["owner"]),sp=Object.freeze({ALLOW_ROLE_PERMISSION:"allow.role_permission",DENY_MISSING_CONTEXT:"deny.missing_context",DENY_INVALID_CONTEXT:"deny.invalid_context",DENY_INVALID_REQUEST:"deny.invalid_request",DENY_UNKNOWN_RESOURCE:"deny.unknown_resource",DENY_UNKNOWN_ACTION:"deny.unknown_action",DENY_UNBOUND_OBJECT:"deny.unbound_object",DENY_TENANT_MISMATCH:"deny.tenant_mismatch",DENY_RESOURCE_MISMATCH:"deny.resource_mismatch",DENY_ROLE_PERMISSION:"deny.role_permission",DENY_POLICY_NOT_APPROVER:"deny.policy_not_approver"}),ap=new Set(rs),cp=new Set(ns),up=new Set(Object.values(os)),is=Object.freeze({owner:Object.freeze(["tenant:read","tenant:manage","config:read","config:manage","policy:read","policy:manage","grant:read","grant:create","grant:update","grant:delete","grant:manage","workflow:read","workflow:create","workflow:update","workflow:delete","workflow:cancel","workflow:approve","trade:read","trade:prepare","receipt:read","receipt:export","audit:read","audit:export","telemetry:read","telemetry:create","telemetry:export","context:read","context:create","context:update","context:delete","context:manage","context:export","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:delete","lifecycle:manage","lifecycle:approve","lifecycle:export"]),operator:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","workflow:cancel","trade:read","trade:prepare","receipt:read","audit:read","telemetry:read","telemetry:create","context:read","context:create","context:update","context:delete","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:manage"]),agent:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","trade:read","trade:prepare","receipt:read","telemetry:create","context:read","context:create","context:update","lifecycle:read"]),viewer:Object.freeze(["tenant:read","config:read","grant:read","workflow:read","trade:read","receipt:read","audit:read","telemetry:read","context:read","lifecycle:read"])}),lp=Object.freeze(Object.fromEntries(Object.entries(is).map(([e,t])=>[e,Object.freeze([...t])])))});var ss,as,cs,mp,wp,hp,gp,yp,bp,Mt=u(()=>{hn();ss=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),as=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),cs=Object.freeze(["taskId","intentId","planId","runId","eventId"]),mp=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),wp=new Set(ss),hp=new Set(as),gp=new Set(cs),yp=Object.freeze(["authorization","bearer","cookie","credential","password","passphrase","secret","token","privatekey","privkey","seed","mnemonic","keystore","signature","prompt","systemmessage","usermessage","assistantmessage","rawtransaction","signedtransaction","serializedtransaction","transactionbytes","calldata","callbytes","inputdata"]),bp=Object.freeze({taskId:"x-oracle-task-id",intentId:"x-oracle-intent-id",planId:"x-oracle-plan-id",runId:"x-oracle-run-id",eventId:"x-oracle-event-id"})});var Ip,gn=u(()=>{wn();Mt();Ip=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"})});var _p,yn=u(()=>{Mt();_p=32*1024*1024});var Lp,$p,Pp,ne=u(()=>{Lp=Object.freeze({N:1<<17,r:8,p:1}),$p=256*1024*1024,Pp=16*1024});var Dp,bn=u(()=>{Dp=Object.freeze({1:{name:"ethereum",mode:"mempool-private",endpoints:["https://rpc.flashbots.net/fast","https://rpc.mevblocker.io"]},8453:{name:"base",mode:"sequencer",endpoints:["https://mainnet-sequencer.base.org"]},10:{name:"optimism",mode:"sequencer",endpoints:["https://mainnet-sequencer.optimism.io"]},42161:{name:"arbitrum",mode:"sequencer",endpoints:["https://arb1-sequencer.arbitrum.io/rpc"]},56:{name:"bsc",mode:"mempool-private",endpoints:["https://rpc.48.club","https://bsc.rpc.blxrbdn.com"]},137:{name:"polygon",mode:"mempool-private",endpoints:["https://polygon-bor-rpc.publicnode.com"]},43114:{name:"avalanche",mode:"public-only",endpoints:[]},999:{name:"hyperevm",mode:"public-only",endpoints:[]}})});import{homedir as qt}from"node:os";import{join as Ht}from"node:path";var En,us,qp,xn=u(()=>{En=process.env.ORACLE_PUBLIC_DESKTOP==="1",us=En?process.env.ORACLE_CONFIG_DIR||Ht(qt(),".config","oracle"):Ht(qt(),".config","oracle"),qp=En?us:Ht(qt(),".config","mad-desk")});var Vp,Kp,Jp,Sn=u(()=>{xn();Vp="0".repeat(64),Kp=Object.freeze({PREPARE:"exec.prepare",SIGN:"exec.sign",BROADCAST:"exec.broadcast",POLICY_REJECT:"policy.reject",AUTH_GRANT:"auth.grant",AUTH_OK:"auth.verify.ok",AUTH_FAIL:"auth.verify.fail"}),Jp=Promise.resolve()});var zt=u(()=>{Sn();K();ne();xe()});var vn=u(()=>{});import{Wallet as om}from"ethers";import{base58 as sm}from"@scure/base";import{ed25519 as cm}from"@noble/curves/ed25519.js";import{NETWORK as lm,TEST_NETWORK as dm,WIF as fm,p2wpkh as pm}from"@scure/btc-signer";import{pubECDSA as wm}from"@scure/btc-signer/utils.js";var In=u(()=>{});var ym,bm,Em,xm,Sm,Am,vm,Im,km,Om,Tm,kn=u(()=>{zt();ym=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),bm=Object.freeze(["binance","bybit","okx","coinbase"]),Em=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),xm=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),Sm=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),Am=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),vm=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),Im=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),km=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),Om=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),Tm=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"})});var On=u(()=>{ne()});var fs,Tn,Xe=u(()=>{fs=Object.freeze({binance:Object.freeze({create:["POST","/api/v3/order"],cancel:["DELETE","/api/v3/order"],status:["GET","/api/v3/order"]}),bybit:Object.freeze({create:["POST","/v5/order/create"],cancel:["POST","/v5/order/cancel"],status:["GET","/v5/order/realtime"]}),okx:Object.freeze({create:["POST","/api/v5/trade/order"],cancel:["POST","/api/v5/trade/cancel-order"],status:["GET","/api/v5/trade/order"]}),coinbase:Object.freeze({create:["POST","/orders"],cancel:["DELETE","/orders/{order_id}"],status:["GET","/orders/{order_id}"]})}),Tn=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"})});var Nn=u(()=>{Xe()});var jm,Cn=u(()=>{Xe();Nn();jm=256*1024});var _n=u(()=>{Xe();Cn()});var Rn=u(()=>{ne()});import N from"node:path";import ps from"node:os";import{createHash as ms,randomBytes as Nw}from"node:crypto";import{Interface as Ut,keccak256 as _w}from"ethers";import{Transaction as Lw}from"@scure/btc-signer";import{ed25519 as Pw}from"@noble/curves/ed25519.js";function Ln(e){let t=process.env.ORACLE_SIGNER_STATE_DIR||N.join(process.env.XDG_STATE_HOME||N.join(ps.homedir(),".local","state"),"oracle"),r=ms("sha256").update(N.resolve(e)).digest("hex").slice(0,16);return{vault:N.join(e,"vault.json"),policy:N.join(e,"signer-policy.json"),policyKey:N.join(e,"policy-integrity-key"),policyAnchor:N.join(t,`signer-policy-${r}.high-water`),ledger:N.join(e,"signer-ledger.json"),ledgerAnchor:N.join(t,`signer-ledger-${r}.high-water`),executionOutbox:N.join(e,"signer-execution-outbox.json"),cexOrders:N.join(e,"cex-orders.json"),cexOrdersAnchor:N.join(t,`cex-orders-${r}.high-water`),token:N.join(e,"signer-token"),lock:N.join(t,`signer-${r}.lock`),workflowLedger:N.join(e,"workflow-events.jsonl")}}var uh,lh,dh,$n=u(()=>{Jr();Yr();gn();yn();xe();ze();ze();ne();bn();zt();vn();Ve();We();Nt();qe();He();Ee();Tt();It();Ot();kt();In();kn();On();_n();Rn();uh=new Ut(["function collection() view returns (address)","function token() view returns (address)","function robinhoodSwapFeeWei() view returns (uint256)","function quoteSpecificBuy(uint256 tokenId) view returns (uint256 totalCost,uint256 baseCost,uint256 fee,uint256 protocolFee,bool available)","function quoteSellNFT() view returns (uint256 netPayout,uint256 grossPayout,uint256 fee,uint256 protocolFee)","function inventory(uint256 tokenId) view returns (bool)","function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),lh=new Ut(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),dh=new Ut(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"])});import Wt from"node:fs";import Pn from"node:path";import{homedir as ws}from"node:os";function hs(){return process.env.ORACLE_CONFIG_DIR||Pn.join(ws(),".config","oracle")}function ve(){let e=Ln(Pn.join(hs(),"signer")),t=Wt.existsSync(e.vault),r=Wt.existsSync(e.lock),o=t?r?"disarmed":"armed-owner-confirmed":"inert-no-key";return{vaultExists:t,policyConfigured:Wt.existsSync(e.policy),armed:t&&!r,disarmed:r,capabilities:{swap:o,bridge:o},autonomous:!1,note:"Keys stay on this machine. Exact confirmation is required before any broadcast."}}var Ah,Vt=u(()=>{st();dr();$n();ne();Ah=Object.freeze([{type:"function",function:{name:"vault_status",description:"Read local Oracle vault/signer readiness. Never returns key material.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_status",description:"Ping the loopback signer. Fails closed if it is not running.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_pending",description:"List pending local-signer artifacts. Read-only. Does not approve, sign, or broadcast.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_queue",description:"Queue a prepared unsigned artifact on the loopback signer. Does not broadcast.",parameters:{type:"object",properties:{artifact:{type:"object"}},required:["artifact"],additionalProperties:!1}}},{type:"function",function:{name:"signer_deny",description:"Drop one pending local-signer artifact. Nothing signed.",parameters:{type:"object",properties:{id:{type:"string"},digest:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"signer_execute",description:"Broadcast one already-confirmed local artifact. Requires a one-use confirmationNonce from the local signer TTY confirm. Cannot mint confirmation itself.",parameters:{type:"object",properties:{artifact:{type:"object"},confirmationNonce:{type:"string",minLength:32,maxLength:128}},required:["artifact","confirmationNonce"],additionalProperties:!1}}},{type:"function",function:{name:"signer_disarm",description:"Global kill switch. Stops the local signer from broadcasting.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"receipt_report",description:"Receipt or it did not happen. Requires transactionHash/hash/txid.",parameters:{type:"object",properties:{receipt:{type:"object"},transactionHash:{type:"string"},hash:{type:"string"},txid:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"watch_create",description:"Create an alert-only watch. Never execute.",parameters:{type:"object",properties:{chain:{type:"string"},token:{type:"string"},condition:{type:"string"},note:{type:"string"}},required:["chain","token","condition"],additionalProperties:!1}}},{type:"function",function:{name:"watch_list",description:"List local alert-only watches.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"portfolio_snapshot",description:"How to read the one portfolio snapshot. knownUsd is incomplete if a provider is missing.",parameters:{type:"object",properties:{},additionalProperties:!1}}}])});import Ze from"node:fs";import gs from"node:os";import ie from"node:path";import{fileURLToPath as ys}from"node:url";function Bn(){return process.env.ORACLE_FAKE_HOME||gs.homedir()}function Es(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function Qe(){return Es()?process.env.ORACLE_CONFIG_DIR||ie.join(Bn(),".config","oracle"):ie.join(Bn(),".config","oracle")}function xs(){return ie.join(Qe(),"desk.json")}function Ss(){return ie.join(Qe(),"env")}function oe({force:e=!1}={}){if(oe._done&&!e)return oe._result||null;oe._done=!0;let t={},r=(n,i)=>{if(i==null)return;let s=String(i).trim();s&&(process.env[n]!=null&&String(process.env[n]).trim()!==""||(process.env[n]=s,t[n]=s))};try{let n=Ss();if(Ze.existsSync(n))for(let i of Ze.readFileSync(n,"utf8").split(/\r?\n/)){let s=i.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!s||s[2].startsWith("#"))continue;let l=s[2];(l.startsWith('"')&&l.endsWith('"')||l.startsWith("'")&&l.endsWith("'"))&&(l=l.slice(1,-1)),r(s[1],l)}}catch{}try{let n=xs();if(Ze.existsSync(n)){let i=JSON.parse(Ze.readFileSync(n,"utf8"));i&&typeof i=="object"&&(r("ORACLE_DESK_URL",i.deskUrl||i.dataUrl||i.url),r("ORACLE_DATA_URL",i.dataUrl||i.deskUrl||i.url),r("ORACLE_API_URL",i.apiUrl||i.dataUrl||i.deskUrl),r("ORACLE_PUBLIC_URL",i.publicUrl||i.deskUrl||i.dataUrl),r("ORACLE_EXEC_URL",i.execUrl),r("MAD_DESK_URL",i.deskUrl||i.dataUrl))}}catch{}let o=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return o&&(r("ORACLE_DESK_URL",o),r("ORACLE_DATA_URL",o),r("ORACLE_API_URL",o),r("ORACLE_PUBLIC_URL",o),r("MAD_DESK_URL",o)),oe._result=Object.keys(t).length?t:null,oe._result}var bs,Nh,Dn=u(()=>{bs=ie.dirname(ys(import.meta.url)),Nh=ie.resolve(bs,"../..");try{oe()}catch{}});function et(e){return String(e||"").trim()||void 0}function vs(e,{required:t=!1}={}){let r=et(e)?.toLowerCase();if(!r){if(t)throw new Error("model provider is required");return}if(!As.has(r))throw new Error(`unsupported provider: ${r}`);return r}function Is(e,{required:t=!1}={}){let r=et(e);if(!r){if(t)throw new Error("model is required");return}if(r.includes("..")||r.startsWith("/")||!/^[a-zA-Z0-9._:/-]{1,200}$/.test(r))throw new Error("invalid model id");return r}function ks(e){let t=et(e);if(!t||t.length>2048)throw new Error("invalid custom base URL");let r;try{r=new URL(t)}catch{throw new Error("invalid custom base URL")}let o=r.hostname.toLowerCase().replace(/^\[|\]$/g,""),n=o==="localhost"||o==="127.0.0.1"||o==="::1";if(r.protocol!=="https:"&&!(r.protocol==="http:"&&n)||r.username||r.password||r.search||r.hash)throw new Error("custom base URL must use HTTPS or loopback HTTP without credentials, query, or fragment");return r.toString().replace(/\/+$/,"")}function jn({provider:e,model:t,baseUrl:r}={},{requireModel:o=!1}={}){let n=vs(e),i=Is(t,{required:o});if(n==="custom")return{provider:n,...i?{model:i}:{},baseUrl:ks(r)};if(et(r))throw new Error("baseUrl is only supported for the custom provider");return{...n?{provider:n}:{},...i?{model:i}:{}}}var As,Fn=u(()=>{As=new Set(["openrouter","openai","anthropic","xai","deepseek","gemini","kimi","mistral","nous","qwen","glm","local","ollama","custom","anthropic-oauth","openai-codex","xai-oauth"])});import Mn from"node:fs";import Os from"node:path";function Ns(){return Os.join(Qe(),"model.json")}function se(e){return String(e||"").trim()||void 0}function Cs(e={}){let t=se(e.backend)?.toLowerCase()||"auto",r=jn({provider:e.provider,model:e.model,baseUrl:e.baseUrl},{requireModel:t==="standalone"}),o=se(e.apiKeyEnv),n=Number.parseInt(String(e.contextLength||""),10),i=Object.fromEntries(Object.entries(e.contextByModel||{}).filter(([,a])=>Number.isSafeInteger(a)&&a>0)),s=se(e.reasoningEffort),l=se(e.computeHost||e.remoteHost),c=se(e.computeUser||e.remoteUser),f=se(e.computePath||e.remotePath);if(!Ts.has(t))throw new Error(`unsupported backend: ${t}`);if(process.env.ORACLE_PUBLIC_DESKTOP==="1"&&["remote","arch"].includes(t))throw new Error("remote compute backends are disabled in the public desktop");if(o&&!/^[A-Z][A-Z0-9_]*$/.test(o))throw new Error("api key env must be an uppercase environment variable name");if(t==="remote"&&!l)throw new Error("remote backend requires computeHost");return{backend:t,...r,...o?{apiKeyEnv:o}:{},...Number.isFinite(n)&&n>0?{contextLength:n}:{},...Object.keys(i).length?{contextByModel:i}:{},...s?{reasoningEffort:s}:{},...l?{computeHost:l}:{},...c?{computeUser:c}:{},...f?{computePath:f}:{}}}function qn(){let e=Ns();if(!Mn.existsSync(e))return null;try{return Cs(JSON.parse(Mn.readFileSync(e,"utf8")))}catch{return null}}var Ts,Hn=u(()=>{Dn();Fn();Ts=new Set(["auto","standalone","hermes","remote","arch"])});import{Interface as _s,getAddress as Rs}from"ethers";function Kt(e,t){try{return Rs(e).toLowerCase()}catch{throw new Error(`${t} must be a valid EVM address`)}}function Ls(e){let t=String(e||"").trim();if(!/^0x[0-9a-fA-F]{64}$/.test(t))throw new Error("txHash must be a 32-byte hex transaction hash");return t.toLowerCase()}function Jt(e){return e==null?null:Number.parseInt(String(e),16)}function Ps(e,{rpcUrl:t,env:r=process.env}={}){if(t)return t;let o=lr(e,r);return o||$s[Number(e)]||null}function Ds(e){let t=String(e||""),r=t.toLowerCase();if(t!==t.trim()||!/^[a-zA-Z0-9_]+$/.test(t)||!Bs.test(r))throw new Error(`evm-rpc: ${t} refused \u2014 @oracle-agent/oracle is prepare-only (read RPC only; no broadcast/sign)`);return r}function js(e){let t=new Error(e?.message||JSON.stringify(e));return t.code=e?.code,t}function Fs(e){if(e?.error)throw js(e.error);return e?.result}function Ms(e,t,r){return`${e}
|
|
1
|
+
var ho=Object.defineProperty;var l=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(t=e(e=0)),t}catch(o){throw r=[o],o}};var Le=(e,t)=>{for(var r in t)ho(e,r,{get:t[r],enumerable:!0})};var de,pr=l(()=>{de={robinhood:{chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC"],evm:!0},ethereum:{chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],evm:!0},polygon:{chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],evm:!0},arbitrum:{chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],evm:!0},base:{chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],evm:!0},hyperevm:{chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],evm:!0},bsc:{chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],evm:!0},avalanche:{chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],evm:!0},optimism:{chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],evm:!0},abstract:{chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],evm:!0},stable:{chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],evm:!0},elysium:{chainId:1339,name:"Elysium",rpcEnv:["ELYSIUM_RPC_URL"],evm:!0,readOnly:!0}}});function mr(e){return go.get(Number(e))||null}function wr(e,t=process.env){let r=mr(e);if(!r)return null;for(let o of r.rpcEnv){let n=(t[o]||"").trim();if(n)return n}return null}var go,ct=l(()=>{pr();go=new Map(Object.values(de).map(e=>[e.chainId,e]))});function fe(e){let t=e?.transactionHash||e?.hash||e?.txid||null;return t?{happened:!0,hash:String(t),note:null}:{happened:!1,hash:null,note:"no transaction hash \u2014 the action did not succeed"}}var lt=l(()=>{});var hr=l(()=>{});var gr=l(()=>{});var pe=l(()=>{});var ee=l(()=>{});var $e=l(()=>{pe();ee()});import{isAddress as Na}from"ethers";var dt=l(()=>{$e();pe();ee()});import{Interface as Eo,isAddress as Pa}from"ethers";var ja,yr=l(()=>{dt();pe();ee();ja=new Eo(["function approve(address spender,uint256 amount) returns (bool)"])});import{Interface as xo,isAddress as Ha}from"ethers";var Va,Ka,br=l(()=>{dt();pe();ee();Va=new xo(["function approve(address spender,uint256 amount) returns (bool)"]),Ka=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"})});var M=l(()=>{});import{Interface as So,MaxUint256 as ec,isAddress as tc,keccak256 as rc,toUtf8Bytes as nc}from"ethers";var lc,J=l(()=>{gr();yr();br();M();ee();lc=new So(["function approve(address spender,uint256 amount) returns (bool)"])});var Sr={};Le(Sr,{SIGN_TIME_REVIEW_VERSION:()=>Ao,SignTimeReviewSecretError:()=>me,createSignTimeReview:()=>xr});function pt(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string"){let n=e.trim().split(/\s+/);if(To.test(e)||No.has(n.length)&&n.every(i=>/^[a-z]+$/i.test(i)))throw new me(t);return e}if(typeof e=="bigint")return e.toString();if(typeof e=="number"){if(!Number.isSafeInteger(e))throw new TypeError(`sign-time review: safe integer required at ${t}`);return e}if(Array.isArray(e))return e.map((n,i)=>pt(n,`${t}[${i}]`,r));G(e,t);let o={};for(let n of Object.keys(e).sort()){let i=n.replace(/[^a-z0-9]/gi,"");if(Oo.test(i))throw new me(`${t}.${n}`);e[n]!==void 0&&(o[n]=pt(e[n],`${t}.${n}`,n))}return o}function G(e,t){if(e==null||typeof e!="object"||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`sign-time review: ${t} must be a plain object`);return e}function we(e,t){if(e==null||e==="")throw new TypeError(`sign-time review: ${t} required`);return e}function te(e,t){let r=String(we(e,t)).toLowerCase();if(!vo.test(r))throw new TypeError(`sign-time review: ${t} must be an EVM address`);return r}function j(e,t,{positive:r=!1}={}){try{let o=BigInt(we(e,t));if(o<0n||r&&o===0n)throw new Error;return o.toString()}catch{throw new TypeError(`sign-time review: ${t} must be an unsigned integer`)}}function mt(e,t){if(typeof e!="string"||e.length===0||e.length>500||e!==e.trim())throw new TypeError(`sign-time review: ${t} must be non-empty text`);return e}function Er(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){for(let t of Object.values(e))Er(t);Object.freeze(e)}return e}function Co(e,t){if(typeof e=="boolean")return{passed:e,reason:e?"passed":"failed"};G(e,t);let r=e.passed??e.ok??e.allowed;if(typeof r!="boolean")throw new TypeError(`sign-time review: ${t} needs a boolean result`);let o=e.reason??e.message??e.name??(r?"passed":"failed");return{...e,passed:r,reason:mt(String(o),`${t}.reason`)}}function _o(e){if(!Array.isArray(e))throw new TypeError("sign-time review: policyChecks must be an array");let t=e.map((o,n)=>Co(o,`policyChecks[${n}]`)),r=t.filter(o=>!o.passed);return{checks:t,passed:t.length-r.length,failed:r.length,reasons:r.map(o=>o.reason)}}function Lo(e){if(e==null)return null;if(G(e,"simulation"),typeof e.status!="string"||!["ok","success","failed","error","unavailable","unknown"].includes(e.status))throw new TypeError("sign-time review: simulation.status is invalid");if(e.willRevert!==!0&&e.willRevert!==!1&&e.willRevert!==null)throw new TypeError("sign-time review: simulation.willRevert must be boolean or null");let t={status:e.status,willRevert:e.willRevert??null,summary:mt(String(e.summary??"simulation result recorded"),"simulation.summary")};return e.gasEstimate!=null&&(t.gasEstimate=j(e.gasEstimate,"simulation.gasEstimate")),e.gasLimit!=null&&(t.gasLimit=j(e.gasLimit,"simulation.gasLimit")),t}function Ro(e){if(e==null)return null;if(!Array.isArray(e)||e.length===0)throw new TypeError("sign-time review: assetDeltas must be a non-empty array");return e.map((t,r)=>{G(t,`assetDeltas[${r}]`);let o=j(t.before,`assetDeltas[${r}].before`),n=j(t.after,`assetDeltas[${r}].after`),i=(BigInt(n)-BigInt(o)).toString(),s;try{s=t.delta==null?i:BigInt(t.delta).toString()}catch{throw new TypeError(`sign-time review: assetDeltas[${r}].delta must be an integer`)}if(s!==i)throw new TypeError(`sign-time review: assetDeltas[${r}].delta does not match before/after`);return{...t,asset:mt(String(we(t.asset??t.token,`assetDeltas[${r}].asset`)),`assetDeltas[${r}].asset`),before:o,after:n,delta:s}})}function $o(e){if(e==null)return[];if(!Array.isArray(e))throw new TypeError("sign-time review: approvalDeltas must be an array");return e.map((t,r)=>{G(t,`approvalDeltas[${r}]`);let o=j(t.amount??t.after,`approvalDeltas[${r}].amount`);if(t.revokeLike!=null&&typeof t.revokeLike!="boolean")throw new TypeError(`sign-time review: approvalDeltas[${r}].revokeLike must be boolean`);return{token:te(t.token,`approvalDeltas[${r}].token`),spender:te(t.spender,`approvalDeltas[${r}].spender`),owner:te(t.owner,`approvalDeltas[${r}].owner`),amount:o,revokeLike:t.revokeLike??BigInt(o)===0n}})}function xr(e={}){G(e,"input");let t=pt(e),r=t.tx==null?t:G(t.tx,"tx"),o=j(t.chainId??r.chainId,"chainId",{positive:!0}),n=te(t.account??t.from??r.from,"account/from"),i=te(t.destination??t.to??r.to,"destination/to"),s=String(we(t.prepareHash,"prepareHash")).toLowerCase();if(!ko.test(s))throw new TypeError("sign-time review: prepareHash must be a 32-byte hash");let u=t.route??t.venue;if(u==null)throw new TypeError("sign-time review: route/venue required");let c=t.decodedCalldata??t.decodedAction;if(c==null)throw new TypeError("sign-time review: decodedCalldata or decodedAction required");let f=String(we(t.calldata??t.data??r.data,"calldata/data")).toLowerCase();if(!Io.test(f))throw new TypeError("sign-time review: calldata/data must be even-length hex");let a=t.policyChecks!==void 0&&t.policyChecks!==null,m=_o(a?t.policyChecks:[]),g=Lo(t.simulation),d=Ro(t.assetDeltas),p=$o(t.approvalDeltas),w=t.allowlistHits??[];if(!Array.isArray(w))throw new TypeError("sign-time review: allowlistHits must be an array");let y=g?.willRevert===!0||["failed","error"].includes(g?.status),A=g!=null&&g.willRevert===!1&&["ok","success"].includes(g.status),$=y||m.failed>0?"BLOCKED":A&&a&&m.checks.length>0&&d!=null?"READY":"UNKNOWN",_=typeof c=="string"?c:c.method??c.action??c.type??"transaction",P=`${$}: review ${_} on chain ${o}; policy ${m.passed} passed, ${m.failed} failed; ${d?.length??0} asset delta${d?.length===1?"":"s"}; local signature required`,V={reviewVersion:1,status:$,requiresLocalSignature:!0,signingLocal:!0,custody:"none",execution:"review-only",chainId:o,account:n,from:n,route:u,venue:t.venue??(typeof u=="string"?u:u.venue??u.provider??null),destination:i,to:i,...t.spender==null?{}:{spender:te(t.spender,"spender")},prepareHash:s,...t.decodedCalldata!==void 0?{decodedCalldata:t.decodedCalldata}:{decodedAction:t.decodedAction},calldata:f,data:f,selector:f.length>=10?f.slice(0,10):null,value:j(t.value??r.value??0,"value"),...(t.gasEstimate??r.gasEstimate)==null?{}:{gasEstimate:j(t.gasEstimate??r.gasEstimate,"gasEstimate")},...(t.gasLimit??r.gasLimit)==null?{}:{gasLimit:j(t.gasLimit??r.gasLimit,"gasLimit")},simulation:g,policyChecks:m,allowlistHits:w,assetDeltas:d,approvalDeltas:p,summary:P};return Er(V)}var Ao,vo,Io,ko,Oo,To,No,me,wt=l(()=>{Ao=1,vo=/^0x[0-9a-f]{40}$/,Io=/^0x(?:[0-9a-f]{2})*$/,ko=/^(?:0x)?[0-9a-f]{64}$/,Oo=/(privatekey|privkey|secretkey|seedphrase|mnemonic|passphrase|password|keystore|keymaterial|wif|xprv|xpriv|bearer|authorization|signature|apikey|credential)/i,To=/\b(?:[5KL][1-9A-HJ-NP-Za-km-z]{50,51}|xprv[0-9A-Za-z]{50,})\b/,No=new Set([12,15,18,21,24]),me=class extends Error{constructor(t){super(`sign-time review refused: secret-bearing field at ${t}`),this.name="SignTimeReviewSecretError",this.code="SIGN_TIME_REVIEW_SECRET"}}});import{readFileSync as fc,readdirSync as pc,existsSync as Po}from"node:fs";import{dirname as Bo,join as he}from"node:path";import{fileURLToPath as Do}from"node:url";function Mo(){let e=[he(ge,"descriptors"),he(ge,"clear-sign","descriptors"),he(ge,"..","clear-sign","descriptors"),he(ge,"..","..","clear-sign","descriptors"),he(ge,"..","..","..","clear-sign","descriptors")];for(let t of e)if(Po(t))return t;return e[0]}var ge,gc,yc,Ar=l(()=>{J();ge=Bo(Do(import.meta.url));gc=Mo(),yc=(1n<<256n)-1n});var vr=l(()=>{wt();J();Ar()});import{Address as kc,NETWORK as Oc,OutScript as Tc,RawTx as Nc,SigHash as Cc,TEST_NETWORK as _c,Transaction as Lc}from"@scure/btc-signer";var gt=l(()=>{});import{createHash as jo}from"node:crypto";import{base58 as Bc}from"@scure/base";import{getCompiledTransactionMessageDecoder as Mc}from"@solana/transaction-messages";var Ir,jc,yt=l(()=>{Ir=e=>jo("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),jc=new Map([[Ir("route"),{name:"route",prefixBytes:0}],[Ir("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]])});import{AsyncLocalStorage as Fo}from"node:async_hooks";function Pe(e){let t=qo.getStore();if(!t||t.closed||!Ho.includes(e))return null;if(t.spans.length>=zo)return t.droppedSpans++,null;let r={stage:e,startMs:t.now()-t.start,durationMs:null,outcome:"pending",status:null};return t.spans.push(r),(o,n=null)=>{t.closed||r.durationMs!==null||(r.durationMs=Math.max(0,t.now()-t.start-r.startMs),r.outcome=o==="succeeded"?"succeeded":"failed",r.status=Number.isInteger(n)&&n>=100&&n<=599?n:null)}}var qo,Ho,zo,kr=l(()=>{qo=new Fo,Ho=["http","retry","shared"],zo=512});import Y from"node:net";import Uo from"node:dns";function Be(e){let t=String(e).toLowerCase().split("%")[0];if((t.match(/::/g)||[]).length>1)return null;let r=a=>{if(!a)return[];let m=a.split(":"),g=m.at(-1);if(g?.includes(".")){let d=g.split(".").map(Number);if(d.length!==4||d.some(p=>!Number.isInteger(p)||p<0||p>255))return null;m.splice(m.length-1,1,(d[0]<<8|d[1]).toString(16),(d[2]<<8|d[3]).toString(16))}return m.some(d=>!/^[0-9a-f]{1,4}$/.test(d))?null:m.map(d=>Number.parseInt(d,16))},[o,n]=t.split("::"),i=r(o),s=r(n);if(!i||!s)return null;let u=t.includes("::"),c=8-i.length-s.length;if(!u&&c!==0||u&&c<1)return null;let f=[...i,...Array(Math.max(0,c)).fill(0),...s];return f.length!==8?null:Uint8Array.from(f.flatMap(a=>[a>>8,a&255]))}function bt(e,t,r){let o=Math.floor(r/8),n=r%8;for(let s=0;s<o;s+=1)if(e[s]!==t[s])return!1;if(!n)return!0;let i=255<<8-n;return(e[o]&i)===(t[o]&i)}function Et(e){if(Y.isIPv4(e)){let t=e.split(".").map(Number);return!(t[0]===0||t[0]===10||t[0]===127||t[0]>=224||t[0]===100&&t[1]>=64&&t[1]<=127||t[0]===169&&t[1]===254||t[0]===172&&t[1]>=16&&t[1]<=31||t[0]===192&&(t[1]===0||t[1]===2||t[1]===168)||t[0]===192&&t[1]===88&&t[2]===99||t[0]===198&&(t[1]===18||t[1]===19||t[1]===51)||t[0]===203&&t[1]===0&&t[2]===113)}if(Y.isIPv6(e)){let t=Be(e);if(!t)return!1;let r=Be("::ffff:0:0");return bt(t,r,96)?Et([...t.slice(12)].join(".")):bt(t,Be("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([n,i])=>bt(t,Be(n),i)):!1}return!1}function Vo(e){let t;try{t=new URL(String(e))}catch{return{ok:!1,error:`not a valid URL: ${String(e).slice(0,120)}`}}if(t.protocol!=="http:"&&t.protocol!=="https:")return{ok:!1,error:`refused protocol ${t.protocol} (only http/https)`};let r=t.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(Wo.has(r)||r.endsWith(".localhost")||r.endsWith(".internal"))return{ok:!1,error:`refused internal host ${r}`};let o=Y.isIP(r);return o!==0&&!Et(r)?{ok:!1,error:`refused private address ${r}`}:{ok:!0,url:t,host:r,isLiteralIp:o!==0}}async function xt(e,{lookupFn:t=Uo.promises.lookup}={}){let r=Vo(e);if(!r.ok)return r;if(r.isLiteralIp)return{ok:!0,url:r.url,addresses:[{address:r.host,family:Y.isIPv6(r.host)?6:4}]};let o;if(process.env.ORACLE_HOSTED_EGRESS_PROXY)return{ok:!0,url:r.url,addresses:[]};try{o=await t(r.host,{all:!0,verbatim:!0})}catch{return{ok:!1,error:`refused: ${r.host} did not resolve`}}return!Array.isArray(o)||o.length===0||o.some(n=>!Et(n.address))?{ok:!1,error:`refused: ${r.host} resolves to a non-public address`}:{ok:!0,url:r.url,addresses:o}}function Ko(e=process.env){let t=e.ORACLE_HOSTED_EGRESS_PROXY||"";if(!t)return null;let r;try{r=new URL(t)}catch{throw new Error("egress-guard: ORACLE_HOSTED_EGRESS_PROXY is not a URL")}if(r.protocol!=="http:"||!["127.0.0.1","::1","localhost","[::1]"].includes(r.hostname)||!r.port||r.username||r.password)throw new Error("egress-guard: egress proxy must be an exact loopback http origin");let o=e.ORACLE_HOSTED_EGRESS_TOKEN||"";if(!/^[A-Za-z0-9_-]{43}$/.test(o))throw new Error("egress-guard: egress proxy token is missing");return{uri:r.origin,token:o}}async function St({requireUndici:e=!1,importUndici:t=()=>import("undici")}={}){let r,o,n;try{n=await t(),r=n.Agent,o=n.fetch}catch(d){if(e)throw new Error(`egress-guard: untrustedUrl pinning requires the undici package, which failed to load: ${d?.message||d}`);return null}if(typeof r!="function"||typeof o!="function"){if(e)throw new Error("egress-guard: untrustedUrl pinning requires undici's Agent and fetch exports, which were not found on the imported module");return null}let i=d=>String(d).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),s=new Map,u=d=>(Array.isArray(d)?d:[d]).map(p=>typeof p=="string"?{address:p}:p).filter(p=>p&&p.address).map(p=>({address:p.address,family:p.family||(Y.isIPv6(p.address)?6:4)})),c=(d,p,w)=>{s.set(i(d),u(typeof p=="string"?[{address:p,family:w}]:p))},f=d=>{let p=i(d);if(Y.isIP(p))return[{address:p,family:Y.isIPv6(p)?6:4}];let w=s.get(p);if(!w||!w.length)throw new Error(`refused: unpinned host ${d} during pinned fetch`);return w},a=Ko(),m=a&&typeof n.ProxyAgent=="function"?new n.ProxyAgent({uri:a.uri,token:`Bearer ${a.token}`,connectTimeout:1e4}):new r({connect:{lookup(d,p,w){let y;try{y=f(d)}catch(A){return w(A)}return p?.all?w(null,y):w(null,y[0].address,y[0].family)}}}),g=Jo((d,p={})=>o(d,{...p,dispatcher:m}),c);return{dispatcher:m,fetch:g,pin:c,resolve:f,async close(){try{await m.destroy()}catch{}}}}function Jo(e,t){if(typeof e!="function")throw new Error("markPinCapableFetch: fetchImpl must be a function");if(typeof t!="function")throw new Error("markPinCapableFetch: pin must be a function");return e[At]=Object.freeze({pin:t}),e}function vt(e){return typeof e=="function"&&typeof e[At]?.pin=="function"}function Or(e,t,r){if(!vt(e))throw new Error("pinFetchToAddresses: fetchImpl is not pin-capable");e[At].pin(t,r)}var Wo,At,Tr=l(()=>{Wo=new Set(["localhost","metadata.google.internal","metadata.goog"]);At=Symbol.for("oracle.egressGuard.pinCapableFetch")});import{createHash as Go}from"node:crypto";import{types as q}from"node:util";function v(e){return U(`HTTP JSON body refused: ${e}`)}function oi(e){return["isArgumentsObject","isArrayBuffer","isAnyArrayBuffer","isArrayBufferView","isBoxedPrimitive","isDataView","isDate","isExternal","isGeneratorObject","isKeyObject","isCryptoKey","isMap","isMapIterator","isModuleNamespaceObject","isNativeError","isPromise","isRegExp","isSet","isSetIterator","isTypedArray","isWeakMap","isWeakSet"].some(t=>typeof q[t]=="function"&&q[t](e))}function ii(e){let t=[],r=0,o=0,n=0,i=0,s=new WeakSet,u=a=>{if(r+=Buffer.byteLength(a,"utf8"),r>F.bytes)throw v("serialized byte limit exceeded");t.push(a)},c=a=>{if(Buffer.byteLength(a,"utf8")>F.bytes)throw v("serialized byte limit exceeded");return JSON.stringify(a)},f=(a,m)=>{if(o+=1,o>F.nodes)throw v("node limit exceeded");if(m>F.depth)throw v("depth limit exceeded");if(a===null){u("null");return}if(typeof a=="string"){u(c(a));return}if(typeof a=="boolean"){u(a?"true":"false");return}if(typeof a=="number"){if(!Number.isFinite(a))throw v("non-finite number");u(Object.is(a,-0)?"0":String(a));return}if(typeof a!="object")throw v("unsupported non-JSON value");if(q.isProxy(a))throw v("proxy value");if(oi(a))throw v("unsupported exotic object");if(s.has(a))throw v("cyclic value");s.add(a);try{if(Object.getOwnPropertySymbols(a).length>0)throw v("symbol-keyed fields are unsupported");if(Array.isArray(a)){let p=Object.getPrototypeOf(a),w=0;for(;p!==null;){if(q.isProxy(p))throw v("proxy array prototype");if(w+=1,w>F.depth)throw v("array prototype depth limit exceeded");p=Object.getPrototypeOf(p)}if(a.length>F.arrayLength)throw v("array length limit exceeded");for(let A=0;A<a.length;A+=1){let $=Object.getOwnPropertyDescriptor(a,String(A));if(!$||!Object.hasOwn($,"value")||$.enumerable!==!0)throw v("array entries must be dense enumerable own data")}let y=0;for(let A in a){if(i+=1,i>F.fields)throw v("enumeration limit exceeded");if(Object.hasOwn(a,A)&&(y+=1,y>a.length))throw v("named array fields are unsupported")}if(y!==a.length)throw v("array entries must be dense enumerable own data");u("[");for(let A=0;A<a.length;A+=1)A&&u(","),f(Object.getOwnPropertyDescriptor(a,String(A)).value,m+1);u("]");return}let g=Object.getPrototypeOf(a);if(g!==Object.prototype&&g!==null)throw v("non-plain object");let d=[];for(let p in a){if(i+=1,i>F.fields)throw v("enumeration limit exceeded");if(!Object.hasOwn(a,p))continue;if(n+=1,n>F.fields)throw v("field limit exceeded");let w=Object.getOwnPropertyDescriptor(a,p);if(!w||!Object.hasOwn(w,"value")||w.enumerable!==!0)throw v("object fields must be enumerable own data");d.push([p,w.value])}u("{");for(let p=0;p<d.length;p+=1)p&&u(","),u(c(d[p][0])),u(":"),f(d[p][1],m+1);u("}")}finally{s.delete(a)}};return f(e,0),t.join("")}function si(e){let t=Object.create(null);if(e==null)return t;if(typeof e!="object"&&typeof e!="function")throw new TypeError("HTTP headers must be an object");if(q.isProxy(e))throw new TypeError("HTTP headers must not be a proxy");if(Object.getOwnPropertySymbols(e).length>0)throw new TypeError("HTTP headers must not contain symbol fields");let r=new Set;for(let o of Object.keys(e)){if(!/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/u.test(o))throw new TypeError("HTTP header names must be valid tokens");let n=o.toLowerCase();if(r.has(n))throw new TypeError("HTTP headers contain a duplicate canonical name");r.add(n);let i=Object.getOwnPropertyDescriptor(e,o);if(!i||!Object.hasOwn(i,"value"))throw new TypeError("HTTP headers must contain own data properties");let s=i.value;if(s==null||["object","function","symbol"].includes(typeof s))throw new TypeError("HTTP header values must be scalar");t[o]=String(s)}return t}function ai(){return Object.assign(Object.create(null),{Accept:"application/json"})}function ci(e,t){if(!e)throw new Error(`HTTP redirect from ${t} missing Location`);let r=new URL(String(e),String(t));if(r.protocol!=="http:"&&r.protocol!=="https:")throw new Error(`HTTP redirect from ${t} used unsupported protocol ${r.protocol}`);return r.toString()}function li(e,t){return new URL(String(e)).origin===new URL(String(t)).origin}function De(e){if((typeof e!="object"||e===null)&&typeof e!="function")return`${typeof e}:${String(e)}`;let t=Rr.get(e);return t||(t=$r,$r+=1,Rr.set(e,t)),`reference:${t}`}function Pr(e){if(!e||typeof e!="object"||Array.isArray(e)||!Object.hasOwn(e,"jsonrpc")||!Object.hasOwn(e,"method")||e.jsonrpc!=="2.0")return!1;let t=typeof e.method=="string"?e.method:"";return t?ui.has(t)||/^get[A-Z0-9_]/u.test(t)||/^is[A-Z0-9_]/u.test(t)||/^eth_get[A-Z0-9_]/u.test(t):!1}function Br(e,t){if(e==="GET"&&t==null)return!0;if(e!=="POST"||t==null)return!1;let r=t;if(typeof t=="string")try{r=JSON.parse(t)}catch{return!1}if(Array.isArray(r))return r.length>0&&r.every(Pr);if(!r||typeof r!="object")return!1;if(Object.hasOwn(r,"jsonrpc")||Object.hasOwn(r,"method"))return Pr(r);let o=Object.hasOwn(r,"type")?r.type:null;return typeof o=="string"&&di.has(o)&&(!Object.hasOwn(r,"action")||r.action==null)&&(!Object.hasOwn(r,"signature")||r.signature==null)&&(!Object.hasOwn(r,"nonce")||r.nonce==null)}function fi(e,t,r,o={},n=null){let i=Go("sha256"),s=(c,f)=>{let a=String(f);i.update(String(Buffer.byteLength(c,"utf8"))).update(":").update(c),i.update("=").update(String(Buffer.byteLength(a,"utf8"))).update(":").update(a).update(`
|
|
2
|
+
`)};s("method",e),s("url",t),Object.keys(r||{}).map((c,f)=>({name:c.toLowerCase(),order:f,value:String(r[c])})).sort((c,f)=>c.name.localeCompare(f.name)||c.order-f.order).forEach((c,f)=>{s(`header-name-${f}`,c.name),s(`header-value-${f}`,c.value)}),s("body",n??"-");for(let c of["untrustedUrl","maxResponseBytes","sameOriginRedirectsOnly","redirectPolicy","maxRedirects","timeoutMs","retries","fetchImpl","realFetch","lookupFn","importUndici","validateResponse"])s(`context-${c}`,o[c]??"-");return i.digest("hex")}function pi(e,t){let r=Number(t);return Number.isFinite(r)&&r>0?Math.min(r*1e3,Cr):Math.min(250*2**e,Cr)+Math.floor(Math.random()*100)}function U(e,t={}){let r=new Error(e);return r.retryable=!1,Object.assign(r,t),r}function kt(e,t,r){return U(`HTTP response from ${e} exceeded maxResponseBytes ${r} (${t})`,{oversize:!0})}function X(e){try{let t=e?.body?.cancel?.();t&&typeof t.then=="function"&&t.catch(()=>{})}catch{}}function wi(e){return e?e.byteLength??e.length??0:0}async function hi(e,t,{url:r,truncate:o=!1,onOversize:n}={}){if(t==null)return await e.text();let i=Number(e.headers?.get?.("content-length"));if(Number.isFinite(i)&&i>t&&(X(e),!o))throw kt(r,`content-length ${i}`,t);let s=e.body?.getReader?.();if(!s){let m=await e.text(),g=Buffer.byteLength(m,"utf8");if(g>t){if(!o)throw kt(r,`body ${g} bytes`,t);return Buffer.from(m,"utf8").subarray(0,t).toString("utf8")}return m}let u=[],c=0,f=!1;try{for(;;){let{value:m,done:g}=await s.read();if(g)break;if(m&&(u.push(Buffer.from(m)),c+=wi(m),c>t)){f=!0;break}}}finally{if(f)try{await s.cancel()}catch{}try{s.releaseLock?.()}catch{}}if(f&&(typeof n=="function"&&n(),!o))throw kt(r,`streamed ${c} bytes`,t);let a=Buffer.concat(u);return(f?a.subarray(0,t):a).toString("utf8")}function gi(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}async function yi(e,{fetchImpl:t,method:r,headers:o,body:n,timeoutMs:i,lookupFn:s,realFetch:u,untrustedUrl:c=!1,maxResponseBytes:f=null,sameOriginRedirectsOnly:a=!1,importUndici:m,validateResponse:g,signal:d,redirectPolicy:p="follow",maxRedirects:w=Me}){let y=null,A=t,$=s?{lookupFn:s}:{};if(c&&!u&&!vt(A))throw U(`HTTP refused ${e}: untrustedUrl requires a pin-capable fetchImpl (see markPinCapableFetch in egress-guard.mjs) or no fetchImpl override so Oracle can pin the connection itself`);let _=new AbortController,P=setTimeout(()=>_.abort(),i),V=d?Lr?Lr([d,_.signal]):d:_.signal,ae=async(b,{status:k=null}={})=>{let O=await xt(b,$);if(!O.ok)throw U(k==null?`HTTP refused ${b}: ${O.error}`:`HTTP redirect to ${b} ${O.error}`,k==null?{}:{status:k});let z=new URL(b).hostname;if(u){if(y&&(await y.close(),y=null),!y)try{y=await St({requireUndici:!0,...m?{importUndici:m}:{}})}catch(h){throw U(k==null?`HTTP refused ${b}: ${h?.message||h}`:`HTTP redirect to ${b} refused: ${h?.message||h}`,k==null?{}:{status:k})}y.pin(z,O.addresses),A=y.fetch}else Or(A,z,O.addresses);return O};try{let b=String(e),k=Object.assign(Object.create(null),o||{});c&&await ae(b);for(let O=0;O<=w;O+=1){let z=Object.assign(Object.create(null),{method:r,headers:k,body:n,signal:V,redirect:"manual",dispatcher:void 0}),h=await A(b,z);if((p==="error"||w===0)&&h.status>=300&&h.status<400)throw X(h),U(`HTTP ${h.status} ${r} redirect refused`,{status:h.status,redirectRefused:!0});if(ni.has(h.status)){let L=a===!0&&r==="POST"&&[307,308].includes(h.status)&&Br(r,n);if(r!=="GET"&&r!=="HEAD"&&!L){X(h);let I=new Error(`HTTP ${h.status} ${r} ${b} redirected non-idempotent request`);throw I.status=h.status,I}if(O===w)throw X(h),U(`HTTP ${h.status} ${r} redirect budget exhausted`,{status:h.status,redirectRefused:!0});let cr=h.headers?.get?.("location"),B;try{B=ci(cr,b)}catch(I){throw X(h),I}let K=!li(B,b);if(X(h),K&&r==="POST"){let I=new Error(`HTTP ${h.status} ${r} cross-origin redirect refused`);throw I.status=h.status,I}if(K&&a){let I=new Error(`HTTP ${h.status} ${r} cross-origin redirect refused`);throw I.status=h.status,I.retryable=!1,I}if(K&&(k=ai(k)),c)await ae(B,{status:h.status});else if(K){let I=await xt(B,$);if(!I.ok){let x=new Error(`HTTP redirect from ${b} ${I.error}`);throw x.status=h.status,x.retryable=!1,x}u&&I.addresses?.length&&(y||(y=await St(m?{importUndici:m}:{})),y&&(y.pin(new URL(B).hostname,I.addresses),A=y.fetch))}b=B;continue}if(typeof g=="function")try{await g(h,{url:b})}catch(L){throw X(h),U(L?.message||String(L))}let T=await hi(h,f,{url:b,onOversize:()=>_.abort()}),ce=gi(T);if(!h.ok){let L=new Error(`HTTP ${h.status} ${r} ${b}`);throw L.status=h.status,L.retryAfter=h.headers?.get?.("retry-after")??null,L.body=ce??T.slice(0,300),L}return ce??T}throw new Error(`HTTP redirect loop for ${e}`)}catch(b){if(_.signal.aborted&&!be(d)){let k=b&&(typeof b=="object"||typeof b=="function")&&!q.isProxy(b)?b:null,O=k?Object.getOwnPropertyDescriptor(k,"oversize"):null;if(!(O&&Object.hasOwn(O,"value")&&O.value===!0))try{if(!k)throw new TypeError("unsafe rejection");Object.defineProperties(k,{oracleTimeout:{value:!0,enumerable:!1},retryable:{value:!1,enumerable:!1}})}catch{let h=new Error("HTTP request timed out");throw Object.defineProperties(h,{oracleTimeout:{value:!0,enumerable:!1},retryable:{value:!1,enumerable:!1}}),h}}throw b}finally{clearTimeout(P),y&&await y.close()}}async function je(e,t={}){if(t!=null&&typeof t!="object"&&typeof t!="function")throw new TypeError("HTTP options must be an object");if(t!=null&&q.isProxy(t))throw new TypeError("HTTP options must not be a proxy");let r=new Set(["body","dedupe","fetchImpl","headers","importUndici","lookupFn","maxRedirects","maxResponseBytes","method","redirectPolicy","retries","sameOriginRedirectsOnly","signal","timeoutMs","untrustedUrl","validateResponse"]);if(t!=null){if(Object.getOwnPropertySymbols(t).length>0)throw new TypeError("HTTP options contain unknown fields");for(let x of Object.getOwnPropertyNames(t)){let E=Object.getOwnPropertyDescriptor(t,x);if(!(x==="toJSON"&&E&&Object.hasOwn(E,"value")&&E.value===void 0)){if(!r.has(x))throw new TypeError("HTTP options contain unknown fields");if(!E||!E.enumerable||!Object.hasOwn(E,"value"))throw new TypeError("HTTP options must contain enumerable own data properties")}}}let o=x=>{if(t==null||!Object.hasOwn(t,x))return;let E=Object.getOwnPropertyDescriptor(t,x);if(!E||!Object.hasOwn(E,"value"))throw new TypeError("HTTP options must contain own data properties");return E.value};if(typeof e!="string"||e.length===0||e.length>8192)throw new TypeError("HTTP URL must be a bounded string");let n=o("method");if(n!==void 0&&(typeof n!="string"||!/^[A-Za-z]+$/u.test(n)))throw new TypeError("HTTP method must be a string token");let i=o("timeoutMs");if(i!==void 0&&(!Number.isInteger(i)||i<1||i>12e4))throw new TypeError("HTTP timeoutMs must be a bounded integer");let s=o("retries");if(s!==void 0&&(!Number.isInteger(s)||s<0||s>10))throw new TypeError("HTTP retries must be a bounded integer");let u=o("redirectPolicy");if(u!==void 0&&u!=="follow"&&u!=="error")throw new TypeError('HTTP redirectPolicy must be "follow" or "error"');let c=o("maxRedirects");if(c!==void 0&&(!Number.isInteger(c)||c<0||c>Me))throw new TypeError(`HTTP maxRedirects must be an integer from 0 through ${Me}`);if(u==="error"&&c!==void 0&&c!==0)throw new TypeError('HTTP redirectPolicy "error" requires maxRedirects 0 when supplied');let f=u??"follow",a=f==="error"?0:c??Me;for(let x of["dedupe","untrustedUrl","sameOriginRedirectsOnly"]){let E=o(x);if(E!==void 0&&typeof E!="boolean")throw new TypeError(`HTTP ${x} must be boolean`)}let m=o("maxResponseBytes");if(m!==void 0&&(!Number.isInteger(m)||m<1||m>64*1024*1024))throw new TypeError("HTTP maxResponseBytes must be a bounded integer");let g=o("signal");if(g!==void 0){if(q.isProxy(g)||!(g instanceof AbortSignal))throw new TypeError("HTTP signal must be a native AbortSignal");try{be(g)}catch{throw new TypeError("HTTP signal must be a native AbortSignal")}}for(let x of["importUndici","lookupFn","validateResponse"]){let E=o(x);if(E!==void 0&&typeof E!="function")throw new TypeError(`HTTP ${x} must be a function`)}let d=o("fetchImpl"),p=d||globalThis.fetch;if(typeof p!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let w=i??12e3,y=(n||"GET").toUpperCase(),A=o("headers"),$=si(A),_=Object.assign(Object.create(null),$);Object.keys(_).some(x=>x.toLowerCase()==="accept")||(_.Accept="application/json");let P=o("body");P!=null&&typeof P!="string"&&(Object.keys(_).find(E=>E.toLowerCase()==="content-type")||(_["Content-Type"]="application/json"),P=ii(P));let V=s??Xo,ae=o("lookupFn"),b=!d,k=o("untrustedUrl")===!0,O=o("sameOriginRedirectsOnly")===!0,z=o("importUndici"),h=o("validateResponse"),T=g,ce=m??null,L=async()=>{let x;for(let E=0;E<=V;E++){T&&ei.call(T);let lr=Pe("http");try{let D=await yi(e,{fetchImpl:p,method:y,headers:_,body:P,timeoutMs:w,lookupFn:ae,realFetch:b,untrustedUrl:k,maxResponseBytes:ce,sameOriginRedirectsOnly:O,importUndici:z,validateResponse:h,signal:T,redirectPolicy:f,maxRedirects:a});return lr?.("succeeded"),D}catch(D){x=D;let Q=at=>{if(!D||typeof D!="object"&&typeof D!="function"||q.isProxy(D))return;let le=Object.getOwnPropertyDescriptor(D,at);return le&&Object.hasOwn(le,"value")?le.value:void 0},_e=Q("status");lr?.("failed",_e);let fo=Q("oracleTimeout")===!0||Q("name")==="AbortError"||Q("name")==="TimeoutError"||be(T),po=new Set([408,425,429]),mo=Q("retryable")===!1?!1:_e!=null?po.has(_e)||Yo.has(_e)&&Nr.has(y):!fo&&Nr.has(y);if(E===V||!mo)throw D;let ur=pi(E,Q("retryAfter")),wo=Pe("retry"),dr=!1;try{T?await new Promise((at,le)=>{let fr,ue=()=>{clearTimeout(fr),_r.call(T,"abort",ue),le(ri(T)||new DOMException("Aborted","AbortError"))};if(be(T)){ue();return}fr=setTimeout(()=>{_r.call(T,"abort",ue),at()},ur),ti.call(T,"abort",ue,{once:!0}),be(T)&&ue()}):await mi(ur),dr=!0}finally{wo?.(dr?"succeeded":"failed")}}}throw x};if(!(o("dedupe")!==!1&&!T&&Br(y,P)))return L();let B=fi(y,e,_,{untrustedUrl:k,maxResponseBytes:ce,sameOriginRedirectsOnly:O,redirectPolicy:f,maxRedirects:a,timeoutMs:w,retries:V,fetchImpl:De(p),realFetch:b,lookupFn:De(ae),importUndici:De(z),validateResponse:De(h)},P),K=It.get(B);if(K){let x=Pe("shared");try{let E=await K;return x?.("succeeded"),E}catch(E){throw x?.("failed"),E}}let I=L().finally(()=>It.delete(B));return It.set(B,I),I}var Yo,Nr,Xo,Cr,Zo,Qo,ei,ti,_r,Lr,be,ri,ni,Me,Yc,F,It,Rr,$r,ui,di,mi,Fe=l(()=>{kr();Tr();Yo=new Set([408,425,429,500,502,503,504]),Nr=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),Xo=2,Cr=4e3,Zo=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,Qo=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,ei=AbortSignal.prototype.throwIfAborted,ti=EventTarget.prototype.addEventListener,_r=EventTarget.prototype.removeEventListener,Lr=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null,be=e=>e?Zo.call(e):!1,ri=e=>e?Qo.call(e):void 0,ni=new Set([301,302,303,307,308]),Me=3,Yc=64*1024,F=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024});It=new Map,Rr=new WeakMap,$r=1;ui=new Set(["eth_blockNumber","eth_call","eth_chainId","eth_estimateGas","getHealth","minimumLedgerSlot","net_version","simulateTransaction","web3_clientVersion"]),di=new Set(["allMids","l2Book","outcomeMeta","spotClearinghouseState","userFills","meta","metaAndAssetCtxs","perpDexs","candleSnapshot","fundingHistory","openOrders","frontendOpenOrders","clearinghouseState","spotMeta","validatorSummaries","delegatorSummary","delegations","delegatorRewards","delegatorHistory","maxBuilderFee"]);mi=e=>new Promise(t=>setTimeout(t,e))});var Dr=l(()=>{});var Mr=l(()=>{Fe();Dr()});var sl,Ot=l(()=>{Mr();sl=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"})});var ul,dl,He=l(()=>{M();Ot();ul=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"leverage","perp-isolated-margin":"margin","builder-fee-approval":"approveBuilder","hype-stake-deposit":"stake","hype-stake-withdraw":"unstake","hype-delegate":"delegate","hype-undelegate":"delegate"}),dl=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"updateLeverage","perp-isolated-margin":"updateIsolatedMargin","builder-fee-approval":"approveBuilderFee","hype-stake-deposit":"cDeposit","hype-stake-withdraw":"cWithdraw","hype-delegate":"tokenDelegate","hype-undelegate":"tokenDelegate"})});var ml,Nt=l(()=>{M();ml="0x"+"00".repeat(32)});var Ei,bl,ze=l(()=>{Nt();M();Ei=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),bl=Object.freeze(Ei.map(e=>e[0]))});var Ee=l(()=>{M()});var Ue=l(()=>{J();vr();gt();yt();He();ze();Ee()});var $l,Pl,We=l(()=>{$l=300*1e3,Pl=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});var Ve=l(()=>{J()});import{TypedDataEncoder as Fl,getAddress as ql,isAddress as Hl}from"ethers";var Si,Ai,Ur=l(()=>{We();Si=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Ai=Object.freeze({Order:[{name:"salt",type:"uint256"},{name:"maker",type:"address"},{name:"receiver",type:"address"},{name:"makerAsset",type:"address"},{name:"takerAsset",type:"address"},{name:"makingAmount",type:"uint256"},{name:"takingAmount",type:"uint256"},{name:"makerTraits",type:"uint256"}]})});var Wl,Wr=l(()=>{Wl=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"})});var Vr=l(()=>{});import{TypedDataEncoder as Ql,getAddress as eu,isAddress as tu}from"ethers";var vi,cu,Ii,lu,Kr=l(()=>{Fe();$e();Wr();Vr();We();vi=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),cu=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"}),Ii=Object.freeze({Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}),lu=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]})});import{TypedDataEncoder as fu,getAddress as pu}from"ethers";var hu,Ct=l(()=>{Ur();Kr();hu=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"])});import{Interface as Gr}from"ethers";var Ti,Ru,Ni,$u,Pu,Bu,Du,Ci,Mu,Ke=l(()=>{J();$e();We();Ve();gt();yt();He();ze();Ee();Ct();Ti=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]),Ru=Object.freeze({swap:5,bridge:5,perps:0,nft:0,mint:0,transfer:0,approve:0,delegate:0,identity:0,order:0,cancel:0,leverage:0,margin:0,approveBuilder:0,stake:0,unstake:0}),Ni=Object.freeze({"0x04e45aaf":{provider:"uniswap-v3",action:"swap",layout:"router02-exact-input-single"},"0x414bf389":{provider:"uniswap-v3",action:"swap",layout:"swap-router-exact-input-single"},"0xc04b8d59":{provider:"uniswap-v3",action:"swap",layout:"exact-input-deadline"},"0xb858183f":{provider:"uniswap-v3",action:"swap",layout:"exact-input"},"0x5ae401dc":{provider:"uniswap-v3",action:"swap",layout:"multicall-deadline"},"0xa026383e":{provider:"aerodrome",action:"swap",layout:"aerodrome-exact-input-single"},"0x7b939232":{provider:"across-v3",action:"bridge",layout:"across-deposit-v3"}}),$u=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),Pu=new Gr(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Bu=new Gr(["function mintAllowList(address nftContract,address feeRecipient,address minterIfNotPayer,uint256 quantity,(uint80 mintPrice,uint48 maxTotalMintableByWallet,uint48 startTime,uint48 endTime,uint48 dropStageIndex,uint32 maxTokenSupplyForStage,uint16 feeBps,bool restrictFeeRecipients) mintParams,bytes32[] proof) payable"]),Du=Object.freeze({"0xa0712d68":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0x1249c58b":{provider:"nft-mint",action:"mint",layout:"mint-no-args"},"0x2db11544":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xefef39a1":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xa6f2ae3a":{provider:"nft-mint",action:"mint",layout:"mint-no-args"}}),Ci=Object.freeze([...Ti]),Mu=Object.freeze({...Ni})});import{encode as qu}from"@msgpack/msgpack";import{keccak256 as zu,verifyTypedData as Uu}from"ethers";var Wu,Vu,_t=l(()=>{Wu=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),Vu=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]})});var Lt=l(()=>{Ee()});import{ed25519 as ed}from"@noble/curves/ed25519.js";import{base58 as rd}from"@scure/base";import{RawTx as od,SigHash as id,Transaction as sd}from"@scure/btc-signer";import{Transaction as cd,keccak256 as ld,verifyTypedData as ud}from"ethers";var Rt=l(()=>{_t();Lt()});import{base58 as yd}from"@scure/base";var xe=l(()=>{Ue();Ke();Ve();J();Rt()});var Xr=l(()=>{xe();Ke()});import{wordlists as Ri}from"ethers";function Di(e){let t=String(e).trim().toLowerCase().split(/\s+/).filter(Boolean);return Bi.has(t.length)&&t.every(r=>Ri.en.getWordIndex(r)>=0)}function qi(e){let t=Zr(e);return Fi.has(t)||ji.test(t)}function Zr(e){return String(e).replace(/[^a-z0-9]/gi,"").toLowerCase()}function Hi(e){let t=Zr(e);return[...$i].some(r=>t.includes(r))}function zi(e,t,r){if(typeof t=="string"){if(Pi.some(o=>o.test(t))||Di(t))throw new Se(r);if(Mi.test(t)&&!qi(e))throw new Se(r)}}function Pt(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string")return zi(r,e,t),e;if(typeof e=="number"){if(!Number.isFinite(e))throw new TypeError(`action receipt: non-finite number at ${t}`);return e}if(typeof e=="bigint")return e.toString();if(Array.isArray(e))return e.map((n,i)=>Pt(n,`${t}[${i}]`,r));if(typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`action receipt: JSON-like value required at ${t}`);let o={};for(let n of Object.keys(e).sort()){let i=`${t}.${n}`;if(Hi(n))throw new Se(i);e[n]!==void 0&&(o[n]=Pt(e[n],i,n))}return o}function Je(e){return Pt(e)}var $i,Pi,Bi,Mi,ji,Fi,Se,Ae=l(()=>{$i=new Set(["privatekey","privkey","secretkey","seedphrase","seed","mnemonic","passphrase","password","keystore","keymaterial","wif","xprv","xpriv","bearer","authorization","signature","apikey","credential"]),Pi=[/\b[5KL][1-9A-HJ-NP-Za-km-z]{50,51}\b/,/\bxprv[0-9A-Za-z]{50,}\b/],Bi=new Set([12,15,18,21,24]);Mi=/^\s*(?:0x)?[0-9a-fA-F]{64}\s*$/,ji=/(hash|digest|root|salt|nonce|proof|commitment|sig|id)(?:e?s)?$/i,Fi=new Set(["calldata","data","publickey","pubkey","message","payload","input","extradata"]);Se=class extends Error{constructor(t){super(`action receipt refused: secret-bearing field at ${t}`),this.name="ActionReceiptSecretError",this.code="ACTION_RECEIPT_SECRET"}}});var Ge=l(()=>{M()});import Ye from"node:fs";var Pd,Bt=l(()=>{Pd=Ye.constants.O_CREAT|Ye.constants.O_EXCL|Ye.constants.O_WRONLY|(Ye.constants.O_NOFOLLOW||0)});import{closeSync as Md,constants as Vi,fchmodSync as jd,fsyncSync as Fd,lstatSync as qd,mkdirSync as Hd,openSync as zd,readFileSync as Ud,renameSync as Wd,rmSync as Vd,writeFileSync as Kd}from"node:fs";var Zd,Qr=l(()=>{Ae();Ge();xe();Bt();Zd=Vi.O_NOFOLLOW??0});import{wordlists as tf}from"ethers";var en,nf,re=l(()=>{Ae();en=64*1024,nf=32*1024});var Gi,af,cf,Ze=l(()=>{re();Gi=["schemaVersion","buildVersion","recordType","execution","custody"],af=[...Gi,"recordHash"],cf=Object.freeze({signed:new Set(["workflow.signed","legacy.signed"]),submitted:new Set(["workflow.submitted","legacy.broadcast"]),finalized:new Set(["workflow.finalized"]),reorged:new Set(["workflow.reorged"]),orphaned:new Set(["workflow.orphaned"]),compensating:new Set(["workflow.compensating"]),compensated:new Set(["workflow.compensated"])})});var Yi,un,pf,qt=l(()=>{re();Ze();Yi=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),un=Object.freeze(["workflow.drafted","workflow.checked","workflow.approval_requested","workflow.approval_granted","workflow.signed","workflow.submitted","workflow.finalized","workflow.reorged","workflow.orphaned","workflow.compensating","workflow.compensated","workflow.failed","workflow.cancelled","workflow.annotated"]),pf=new Set(un)});var rs,dn=l(()=>{re();qt();rs=64*1024*1024});var Ef,xf,Sf,fn=l(()=>{Ef=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),xf=Object.freeze(["read","simulate"]),Sf=1440*60});function Ht(e){let t=String(e),r=t.toLowerCase().replace(/[\s._-]+/g,"");return ns.test(t)||os.includes(r)}function is(e){return e.replace(/"([A-Za-z0-9_-]+)"\s*:\s*"(?:0x)?([0-9a-fA-F]{64})"/g,(t,r)=>mn.includes(String(r).toLowerCase().replace(/[_-]/g,""))?`"${r}":"<hex64>"`:t)}function wn(e){let t;try{t=JSON.stringify(e)}catch(n){throw new H("$",`unserializable-payload: ${String(n?.message||n)}`)}if(t===void 0)return"null";let r=is(t);for(let{rule:n,re:i}of pn)if(i.test(r))throw new H("$<serialized>",n);if(/(?:^|[^0-9a-fA-Fx])0x[0-9a-fA-F]{64}(?![0-9a-fA-F])/.test(r))throw new H("$<serialized>","raw-32-byte-hex-embedded");return JSON.parse(t,(n,i)=>{if(n&&Ht(n))throw new H(`$<serialized>.${n}`,"forbidden-key-name");return i}),t}function W(e,t="$",r=new Set,o=""){if(e==null)return e;if(typeof e=="string"){let n=mn.includes(String(o).toLowerCase().replace(/[_-]/g,""));for(let{rule:i,re:s}of pn)if(!(n&&i.startsWith("raw-32-byte-hex"))&&s.test(e))throw new H(t,i);return e}if(typeof e!="object"||r.has(e)||(r.add(e),ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e;if(e instanceof Map){for(let[n,i]of e.entries()){if(typeof n=="string"&&Ht(n))throw new H(`${t}[${JSON.stringify(n)}]`,"forbidden-key-name");W(n,`${t}[key]`,r),W(i,`${t}[${String(n)}]`,r)}return e}if(e instanceof Set){let n=0;for(let i of e.values())W(i,`${t}[${n++}]`,r);return e}if(Array.isArray(e))return e.forEach((n,i)=>W(n,`${t}[${i}]`,r)),e;for(let[n,i]of Object.entries(e)){if(Ht(n))throw new H(`${t}.${n}`,"forbidden-key-name");W(i,`${t}.${n}`,r,n)}return e}var H,ns,os,pn,mn,zt=l(()=>{fn();H=class extends Error{constructor(t,r){super(`secret material must never appear in a public API object (at ${t}, rule: ${r})`),this.name="SecretLeakError",this.path=t,this.rule=r}},ns=/(private[_-]?key|secret|bearer|keystore|mnemonic|seed[_-]?phrase|passphrase|password|api[_-]?key|access[_-]?token|auth[_-]?token|session[_-]?token|signer[_-]?url|signature)/i,os=Object.freeze(["privkey","wif","xprv","seed"]);pn=Object.freeze([{rule:"raw-32-byte-hex-key",re:/^0x[0-9a-fA-F]{64}$/},{rule:"raw-32-byte-hex-bare",re:/^[0-9a-fA-F]{64}$/},{rule:"extended-private-key",re:/\b(?:xprv|tprv|yprv|zprv)[1-9A-HJ-NP-Za-km-z]{107}\b/},{rule:"bitcoin-wif",re:/\b[59KLc][1-9A-HJ-NP-Za-km-z]{50,51}\b/},{rule:"bip39-mnemonic",re:/\b(?:[a-z]{3,8}\s+){11,23}[a-z]{3,8}\b/},{rule:"bearer-token",re:/bearer\s+[A-Za-z0-9._~+/=-]+/i},{rule:"pem-private-key",re:/-----BEGIN[A-Z ]*PRIVATE KEY-----/},{rule:"keystore-path",re:/keystore/i},{rule:"signer-url",re:/https?:\/\/\S*sign/i},{rule:"authorization-header",re:/authorization\s*:/i}]),mn=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});var Ut,Rf,hn=l(()=>{zt();Ut=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Rf=Object.freeze(Object.fromEntries(Ut.map((e,t)=>[e,Object.freeze(t+1<Ut.length?[Ut[t+1]]:[])])))});var ss,gn=l(()=>{hn();re();Ze();ss=Object.freeze({intent:"draft",quote_comparison:"draft",simulation:"draft",prepared:"checked",approval:"approval",signed:"signed",broadcast:"submitted",settlement:"finalized",balance_delta:"compensated",position:"compensated"})});var yn=l(()=>{re();Ze();qt();dn();gn()});var cs,ls,us,gp,yp,bp,Ep,xp,ds,Sp,bn=l(()=>{cs=Object.freeze(["owner","operator","agent","viewer"]),ls=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),us=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),gp=Object.freeze(["owner"]),yp=Object.freeze({ALLOW_ROLE_PERMISSION:"allow.role_permission",DENY_MISSING_CONTEXT:"deny.missing_context",DENY_INVALID_CONTEXT:"deny.invalid_context",DENY_INVALID_REQUEST:"deny.invalid_request",DENY_UNKNOWN_RESOURCE:"deny.unknown_resource",DENY_UNKNOWN_ACTION:"deny.unknown_action",DENY_UNBOUND_OBJECT:"deny.unbound_object",DENY_TENANT_MISMATCH:"deny.tenant_mismatch",DENY_RESOURCE_MISMATCH:"deny.resource_mismatch",DENY_ROLE_PERMISSION:"deny.role_permission",DENY_POLICY_NOT_APPROVER:"deny.policy_not_approver"}),bp=new Set(cs),Ep=new Set(ls),xp=new Set(Object.values(us)),ds=Object.freeze({owner:Object.freeze(["tenant:read","tenant:manage","config:read","config:manage","policy:read","policy:manage","grant:read","grant:create","grant:update","grant:delete","grant:manage","workflow:read","workflow:create","workflow:update","workflow:delete","workflow:cancel","workflow:approve","trade:read","trade:prepare","receipt:read","receipt:export","audit:read","audit:export","telemetry:read","telemetry:create","telemetry:export","context:read","context:create","context:update","context:delete","context:manage","context:export","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:delete","lifecycle:manage","lifecycle:approve","lifecycle:export"]),operator:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","workflow:cancel","trade:read","trade:prepare","receipt:read","audit:read","telemetry:read","telemetry:create","context:read","context:create","context:update","context:delete","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:manage"]),agent:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","trade:read","trade:prepare","receipt:read","telemetry:create","context:read","context:create","context:update","lifecycle:read"]),viewer:Object.freeze(["tenant:read","config:read","grant:read","workflow:read","trade:read","receipt:read","audit:read","telemetry:read","context:read","lifecycle:read"])}),Sp=Object.freeze(Object.fromEntries(Object.entries(ds).map(([e,t])=>[e,Object.freeze([...t])])))});var fs,ps,ms,kp,Op,Tp,Np,Cp,_p,Wt=l(()=>{bn();fs=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),ps=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),ms=Object.freeze(["taskId","intentId","planId","runId","eventId"]),kp=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),Op=new Set(fs),Tp=new Set(ps),Np=new Set(ms),Cp=Object.freeze(["authorization","bearer","cookie","credential","password","passphrase","secret","token","privatekey","privkey","seed","mnemonic","keystore","signature","prompt","systemmessage","usermessage","assistantmessage","rawtransaction","signedtransaction","serializedtransaction","transactionbytes","calldata","callbytes","inputdata"]),_p=Object.freeze({taskId:"x-oracle-task-id",intentId:"x-oracle-intent-id",planId:"x-oracle-plan-id",runId:"x-oracle-run-id",eventId:"x-oracle-event-id"})});var Dp,En=l(()=>{yn();Wt();Dp=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"})});var zp,xn=l(()=>{Wt();zp=32*1024*1024});var Wp,Vp,Kp,ne=l(()=>{Wp=Object.freeze({N:1<<17,r:8,p:1}),Vp=256*1024*1024,Kp=16*1024});var Gp,Sn=l(()=>{Gp=Object.freeze({1:{name:"ethereum",mode:"mempool-private",endpoints:["https://rpc.flashbots.net/fast","https://rpc.mevblocker.io"]},8453:{name:"base",mode:"sequencer",endpoints:["https://mainnet-sequencer.base.org"]},10:{name:"optimism",mode:"sequencer",endpoints:["https://mainnet-sequencer.optimism.io"]},42161:{name:"arbitrum",mode:"sequencer",endpoints:["https://arb1-sequencer.arbitrum.io/rpc"]},56:{name:"bsc",mode:"mempool-private",endpoints:["https://rpc.48.club","https://bsc.rpc.blxrbdn.com"]},137:{name:"polygon",mode:"mempool-private",endpoints:["https://polygon-bor-rpc.publicnode.com"]},43114:{name:"avalanche",mode:"public-only",endpoints:[]},999:{name:"hyperevm",mode:"public-only",endpoints:[]}})});import{homedir as Vt}from"node:os";import{join as Kt}from"node:path";var An,ws,Qp,vn=l(()=>{An=process.env.ORACLE_PUBLIC_DESKTOP==="1",ws=An?process.env.ORACLE_CONFIG_DIR||Kt(Vt(),".config","oracle"):Kt(Vt(),".config","oracle"),Qp=An?ws:Kt(Vt(),".config","mad-desk")});var om,im,sm,In=l(()=>{vn();om="0".repeat(64),im=Object.freeze({PREPARE:"exec.prepare",SIGN:"exec.sign",BROADCAST:"exec.broadcast",POLICY_REJECT:"policy.reject",AUTH_GRANT:"auth.grant",AUTH_OK:"auth.verify.ok",AUTH_FAIL:"auth.verify.fail"}),sm=Promise.resolve()});var Jt=l(()=>{In();M();ne();xe();Bt();Ge()});var On=l(()=>{});import{Wallet as bm}from"ethers";import{base58 as xm}from"@scure/base";import{ed25519 as Am}from"@noble/curves/ed25519.js";import{NETWORK as Im,TEST_NETWORK as km,WIF as Om,p2wpkh as Tm}from"@scure/btc-signer";import{pubECDSA as Cm}from"@scure/btc-signer/utils.js";var Tn=l(()=>{});var Rm,$m,Pm,Bm,Dm,Mm,jm,Fm,qm,Hm,zm,Nn=l(()=>{Jt();Rm=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),$m=Object.freeze(["binance","bybit","okx","coinbase"]),Pm=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),Bm=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),Dm=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),Mm=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),jm=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),Fm=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),qm=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),Hm=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),zm=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"})});var Cn=l(()=>{ne()});var ys,_n,et=l(()=>{ys=Object.freeze({binance:Object.freeze({create:["POST","/api/v3/order"],cancel:["DELETE","/api/v3/order"],status:["GET","/api/v3/order"]}),bybit:Object.freeze({create:["POST","/v5/order/create"],cancel:["POST","/v5/order/cancel"],status:["GET","/v5/order/realtime"]}),okx:Object.freeze({create:["POST","/api/v5/trade/order"],cancel:["POST","/api/v5/trade/cancel-order"],status:["GET","/api/v5/trade/order"]}),coinbase:Object.freeze({create:["POST","/orders"],cancel:["DELETE","/orders/{order_id}"],status:["GET","/orders/{order_id}"]})}),_n=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"})});var Ln=l(()=>{et()});var Qm,Rn=l(()=>{et();Ln();Qm=256*1024});var $n=l(()=>{et();Rn()});var Pn=l(()=>{ne()});import N from"node:path";import bs from"node:os";import{createHash as Es,randomBytes as Gw}from"node:crypto";import{Interface as Gt,keccak256 as Xw}from"ethers";import{Transaction as Qw}from"@scure/btc-signer";import{ed25519 as th}from"@noble/curves/ed25519.js";function Bn(e){let t=process.env.ORACLE_SIGNER_STATE_DIR||N.join(process.env.XDG_STATE_HOME||N.join(bs.homedir(),".local","state"),"oracle"),r=Es("sha256").update(N.resolve(e)).digest("hex").slice(0,16);return{vault:N.join(e,"vault.json"),policy:N.join(e,"signer-policy.json"),policyKey:N.join(e,"policy-integrity-key"),policyAnchor:N.join(t,`signer-policy-${r}.high-water`),ledger:N.join(e,"signer-ledger.json"),ledgerAnchor:N.join(t,`signer-ledger-${r}.high-water`),executionOutbox:N.join(e,"signer-execution-outbox.json"),cexOrders:N.join(e,"cex-orders.json"),cexOrdersAnchor:N.join(t,`cex-orders-${r}.high-water`),token:N.join(e,"signer-token"),lock:N.join(t,`signer-${r}.lock`),workflowLedger:N.join(e,"workflow-events.jsonl")}}var Lh,Rh,$h,Dn=l(()=>{Xr();Qr();En();xn();xe();Ue();Ue();ne();Sn();Jt();On();Ke();Ve();Rt();Ot();M();He();Ge();ze();Ee();Lt();Nt();_t();Ct();Tn();Nn();Cn();$n();Pn();Lh=new Gt(["function collection() view returns (address)","function token() view returns (address)","function robinhoodSwapFeeWei() view returns (uint256)","function quoteSpecificBuy(uint256 tokenId) view returns (uint256 totalCost,uint256 baseCost,uint256 fee,uint256 protocolFee,bool available)","function quoteSellNFT() view returns (uint256 netPayout,uint256 grossPayout,uint256 fee,uint256 protocolFee)","function inventory(uint256 tokenId) view returns (bool)","function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Rh=new Gt(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),$h=new Gt(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"])});import Yt from"node:fs";import Mn from"node:path";import{homedir as xs}from"node:os";function Ss(){return process.env.ORACLE_CONFIG_DIR||Mn.join(xs(),".config","oracle")}function ve(){let e=Bn(Mn.join(Ss(),"signer")),t=Yt.existsSync(e.vault),r=Yt.existsSync(e.lock),o=t?r?"disarmed":"armed-owner-confirmed":"inert-no-key";return{vaultExists:t,policyConfigured:Yt.existsSync(e.policy),armed:t&&!r,disarmed:r,capabilities:{swap:o,bridge:o},autonomous:!1,note:"Keys stay on this machine. Exact confirmation is required before any broadcast."}}var Vh,Xt=l(()=>{lt();hr();Dn();ne();Vh=Object.freeze([{type:"function",function:{name:"vault_status",description:"Read local Oracle vault/signer readiness. Never returns key material.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_status",description:"Ping the loopback signer. Fails closed if it is not running.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_pending",description:"List pending local-signer artifacts. Read-only. Does not approve, sign, or broadcast.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_queue",description:"Queue a prepared unsigned artifact on the loopback signer. Does not broadcast.",parameters:{type:"object",properties:{artifact:{type:"object"}},required:["artifact"],additionalProperties:!1}}},{type:"function",function:{name:"signer_deny",description:"Drop one pending local-signer artifact. Nothing signed.",parameters:{type:"object",properties:{id:{type:"string"},digest:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"signer_execute",description:"Broadcast one already-confirmed local artifact. Requires a one-use confirmationNonce from the local signer TTY confirm. Cannot mint confirmation itself.",parameters:{type:"object",properties:{artifact:{type:"object"},confirmationNonce:{type:"string",minLength:32,maxLength:128}},required:["artifact","confirmationNonce"],additionalProperties:!1}}},{type:"function",function:{name:"signer_disarm",description:"Global kill switch. Stops the local signer from broadcasting.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"receipt_report",description:"Receipt or it did not happen. Requires transactionHash/hash/txid.",parameters:{type:"object",properties:{receipt:{type:"object"},transactionHash:{type:"string"},hash:{type:"string"},txid:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"watch_create",description:"Create an alert-only watch. Never execute.",parameters:{type:"object",properties:{chain:{type:"string"},token:{type:"string"},condition:{type:"string"},note:{type:"string"}},required:["chain","token","condition"],additionalProperties:!1}}},{type:"function",function:{name:"watch_list",description:"List local alert-only watches.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"portfolio_snapshot",description:"How to read the one portfolio snapshot. knownUsd is incomplete if a provider is missing.",parameters:{type:"object",properties:{},additionalProperties:!1}}}])});import tt from"node:fs";import As from"node:os";import ie from"node:path";import{fileURLToPath as vs}from"node:url";function jn(){return process.env.ORACLE_FAKE_HOME||As.homedir()}function ks(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function rt(){return ks()?process.env.ORACLE_CONFIG_DIR||ie.join(jn(),".config","oracle"):ie.join(jn(),".config","oracle")}function Os(){return ie.join(rt(),"desk.json")}function Ts(){return ie.join(rt(),"env")}function oe({force:e=!1}={}){if(oe._done&&!e)return oe._result||null;oe._done=!0;let t={},r=(n,i)=>{if(i==null)return;let s=String(i).trim();s&&(process.env[n]!=null&&String(process.env[n]).trim()!==""||(process.env[n]=s,t[n]=s))};try{let n=Ts();if(tt.existsSync(n))for(let i of tt.readFileSync(n,"utf8").split(/\r?\n/)){let s=i.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!s||s[2].startsWith("#"))continue;let u=s[2];(u.startsWith('"')&&u.endsWith('"')||u.startsWith("'")&&u.endsWith("'"))&&(u=u.slice(1,-1)),r(s[1],u)}}catch{}try{let n=Os();if(tt.existsSync(n)){let i=JSON.parse(tt.readFileSync(n,"utf8"));i&&typeof i=="object"&&(r("ORACLE_DESK_URL",i.deskUrl||i.dataUrl||i.url),r("ORACLE_DATA_URL",i.dataUrl||i.deskUrl||i.url),r("ORACLE_API_URL",i.apiUrl||i.dataUrl||i.deskUrl),r("ORACLE_PUBLIC_URL",i.publicUrl||i.deskUrl||i.dataUrl),r("ORACLE_EXEC_URL",i.execUrl),r("MAD_DESK_URL",i.deskUrl||i.dataUrl))}}catch{}let o=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return o&&(r("ORACLE_DESK_URL",o),r("ORACLE_DATA_URL",o),r("ORACLE_API_URL",o),r("ORACLE_PUBLIC_URL",o),r("MAD_DESK_URL",o)),oe._result=Object.keys(t).length?t:null,oe._result}var Is,Zh,Fn=l(()=>{Is=ie.dirname(vs(import.meta.url)),Zh=ie.resolve(Is,"../..");try{oe()}catch{}});function nt(e){return String(e||"").trim()||void 0}function Cs(e,{required:t=!1}={}){let r=nt(e)?.toLowerCase();if(!r){if(t)throw new Error("model provider is required");return}if(!Ns.has(r))throw new Error(`unsupported provider: ${r}`);return r}function _s(e,{required:t=!1}={}){let r=nt(e);if(!r){if(t)throw new Error("model is required");return}if(r.includes("..")||r.startsWith("/")||!/^[a-zA-Z0-9._:/-]{1,200}$/.test(r))throw new Error("invalid model id");return r}function Ls(e){let t=nt(e);if(!t||t.length>2048)throw new Error("invalid custom base URL");let r;try{r=new URL(t)}catch{throw new Error("invalid custom base URL")}let o=r.hostname.toLowerCase().replace(/^\[|\]$/g,""),n=o==="localhost"||o==="127.0.0.1"||o==="::1";if(r.protocol!=="https:"&&!(r.protocol==="http:"&&n)||r.username||r.password||r.search||r.hash)throw new Error("custom base URL must use HTTPS or loopback HTTP without credentials, query, or fragment");return r.toString().replace(/\/+$/,"")}function qn({provider:e,model:t,baseUrl:r}={},{requireModel:o=!1}={}){let n=Cs(e),i=_s(t,{required:o});if(n==="custom")return{provider:n,...i?{model:i}:{},baseUrl:Ls(r)};if(nt(r))throw new Error("baseUrl is only supported for the custom provider");return{...n?{provider:n}:{},...i?{model:i}:{}}}var Ns,Hn=l(()=>{Ns=new Set(["openrouter","openai","anthropic","xai","deepseek","gemini","kimi","mistral","nous","qwen","glm","local","ollama","custom","anthropic-oauth","openai-codex","xai-oauth"])});import zn from"node:fs";import Rs from"node:path";function Ps(){return Rs.join(rt(),"model.json")}function se(e){return String(e||"").trim()||void 0}function Bs(e={}){let t=se(e.backend)?.toLowerCase()||"auto",r=qn({provider:e.provider,model:e.model,baseUrl:e.baseUrl},{requireModel:t==="standalone"}),o=se(e.apiKeyEnv),n=Number.parseInt(String(e.contextLength||""),10),i=Object.fromEntries(Object.entries(e.contextByModel||{}).filter(([,a])=>Number.isSafeInteger(a)&&a>0)),s=se(e.reasoningEffort),u=se(e.computeHost||e.remoteHost),c=se(e.computeUser||e.remoteUser),f=se(e.computePath||e.remotePath);if(!$s.has(t))throw new Error(`unsupported backend: ${t}`);if(process.env.ORACLE_PUBLIC_DESKTOP==="1"&&["remote","arch"].includes(t))throw new Error("remote compute backends are disabled in the public desktop");if(o&&!/^[A-Z][A-Z0-9_]*$/.test(o))throw new Error("api key env must be an uppercase environment variable name");if(t==="remote"&&!u)throw new Error("remote backend requires computeHost");return{backend:t,...r,...o?{apiKeyEnv:o}:{},...Number.isFinite(n)&&n>0?{contextLength:n}:{},...Object.keys(i).length?{contextByModel:i}:{},...s?{reasoningEffort:s}:{},...u?{computeHost:u}:{},...c?{computeUser:c}:{},...f?{computePath:f}:{}}}function Un(){let e=Ps();if(!zn.existsSync(e))return null;try{return Bs(JSON.parse(zn.readFileSync(e,"utf8")))}catch{return null}}var $s,Wn=l(()=>{Fn();Hn();$s=new Set(["auto","standalone","hermes","remote","arch"])});import{Interface as Ds,getAddress as Ms}from"ethers";function Zt(e,t){try{return Ms(e).toLowerCase()}catch{throw new Error(`${t} must be a valid EVM address`)}}function js(e){let t=String(e||"").trim();if(!/^0x[0-9a-fA-F]{64}$/.test(t))throw new Error("txHash must be a 32-byte hex transaction hash");return t.toLowerCase()}function Qt(e){return e==null?null:Number.parseInt(String(e),16)}function qs(e,{rpcUrl:t,env:r=process.env}={}){if(t)return t;let o=wr(e,r);return o||Fs[Number(e)]||null}function zs(e){let t=String(e||""),r=t.toLowerCase();if(t!==t.trim()||!/^[a-zA-Z0-9_]+$/.test(t)||!Hs.test(r))throw new Error(`evm-rpc: ${t} refused \u2014 @oracle-agent/oracle is prepare-only (read RPC only; no broadcast/sign)`);return r}function Us(e){let t=new Error(e?.message||JSON.stringify(e));return t.code=e?.code,t}function Ws(e){if(e?.error)throw Us(e.error);return e?.result}function Vs(e,t,r){return`${e}
|
|
3
3
|
${t}
|
|
4
|
-
${JSON.stringify(r??[])}`}async function qs(e,t,r){return Fe(e,{method:"POST",body:t,fetchImpl:r.fetchImpl,timeoutMs:r.timeoutMs??12e3,signal:r.signal})}async function Gt(e,t,r=[],o={}){let n=String(t||""),i=Ds(n),s=Ps(e,o);if(!s)throw new Error(`No RPC URL for chainId ${e} (set env from chain registry rpcEnv or pass rpcUrl)`);if(i==="eth_chainid"&&o.cacheChainId!==!1){let a=zn.get(s);if(a!=null)return a}let c=o.dedupe!==!1&&!o.signal?Ms(s,n,r):null;if(c&&Ie.has(c))return Ie.get(c);let f=(async()=>{let a=await qs(s,{jsonrpc:"2.0",id:1,method:t,params:r},o),m=Fs(a);return i==="eth_chainid"&&typeof m=="string"&&zn.set(s,m),m})();return c&&(Ie.set(c,f),f.finally(()=>{Ie.get(c)===f&&Ie.delete(c)}).catch(()=>{})),f}async function Un(e={},t={}){let r=Number(e.chainId??t.chainId??1),o=Ls(e.txHash||e.hash||e.transactionHash),n=await Gt(r,"eth_getTransactionReceipt",[o],t);if(!n)return{ok:!1,chainId:r,txHash:o,status:"pending",receipt:null,reason:"receipt pending"};let i=Jt(n.status),s=i===1,l=i===1?"success":i===0?"reverted":"unknown",c=s?null:l==="reverted"?"transaction reverted":"unknown receipt status",f=e.expectedTo?Kt(e.expectedTo,"expectedTo"):null,a=n.to?Kt(n.to,"receipt.to"):null;return f&&a!==f&&(s=!1,c=`to mismatch: expected ${f}, got ${a||"null"}`),{ok:s,chainId:r,txHash:o,status:l,reason:c,statusCode:i,to:a,from:n.from?Kt(n.from,"receipt.from"):null,blockNumber:Jt(n.blockNumber),transactionIndex:Jt(n.transactionIndex),logs:Array.isArray(n.logs)?n.logs:[],receipt:n}}var Hh,$s,Bs,Ie,zn,Wn=u(()=>{Me();it();Hh=new _s(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);$s={1:"https://ethereum.publicnode.com",137:"https://polygon-bor-rpc.publicnode.com",42161:"https://arbitrum-one-rpc.publicnode.com",8453:"https://base-rpc.publicnode.com",10:"https://optimism-rpc.publicnode.com",988:"https://rpc.stable.xyz",56:"https://bsc-rpc.publicnode.com",43114:"https://avalanche-c-chain-rpc.publicnode.com",999:"https://rpc.hyperliquid.xyz/evm",2741:"https://api.mainnet.abs.xyz",4663:"https://rpc.mainnet.chain.robinhood.com",1339:"https://rpc.elysiumchain.tech"};Bs=/^(?:eth_(?:call|blocknumber|chainid|get[a-z0-9]+|feehistory|gasprice|maxpriorityfeepergas|syncing|protocolversion|estimategas|createaccesslist)|net_(?:version|listening|peercount)|web3_(?:clientversion|sha3))$/;Ie=new Map,zn=new Map});function Yt(e,t){if(!e||typeof e!="object"||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`${t} must be a plain object`);return e}function Xt(e,t="control input"){try{U(e,t),fn(e)}catch(r){throw new TypeError(`${t} contains secret or custody material: ${r.message}`)}return e}function ke(e,{required:t=[],optional:r=[]}={},o="object"){Yt(e,o);let n=new Set([...t,...r]),i=Object.keys(e).filter(s=>!n.has(s));if(i.length)throw new TypeError(`${o} has unknown field ${i[0]}`);for(let s of t)if(!Object.hasOwn(e,s))throw new TypeError(`${o}.${s} is required`);return e}function Zt(e,t,r=200,{lower:o=!1}={}){if(typeof e!="string"||!e.trim()||e.length>r||Hs.test(e))throw new TypeError(`${t} must be non-empty control-free text up to ${r} characters`);let n=e.trim();return o?n.toLowerCase():n}function Oe(e,t,r=80){let o=Zt(e,t,r,{lower:!0});if(!/^[a-z0-9][a-z0-9._:-]*$/.test(o))throw new TypeError(`${t} must be a lowercase identifier`);return o}function tt(e,t,{positive:r=!1}={}){if(!Number.isSafeInteger(e)||e<0||r&&e===0)throw new TypeError(`${t} must be a ${r?"positive":"non-negative"} safe integer`);return e}function L(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){for(let t of Object.values(e))L(t);Object.freeze(e)}return e}var Hs,Qt=u(()=>{Ae();jt();Hs=/[\u0000-\u001f\u007f]/});function Vn({family:e,chainId:t},r="chain"){let o=Oe(e,`${r}.family`,40),n;if(o==="evm"){if(typeof t=="number")n=String(tt(t,`${r}.chainId`,{positive:!0}));else if(n=Zt(t,`${r}.chainId`,40),!/^[1-9][0-9]*$/.test(n))throw new TypeError(`${r}.chainId must be a positive decimal EVM chain id`)}else n=Oe(t,`${r}.chainId`,80);return{family:o,chainId:n}}function Ws(e,t="chain"){return ke(e,{required:["family","chainId"]},t),L(Vn(e,t))}function Kn(e,t="finality rule"){Xt(e,t),Yt(e,t);let r=e.rule;if(!zs.includes(r))throw new TypeError(`${t}.rule must be confirmations, finalizedTag, or checkpoint`);let o=r==="confirmations"?"confirmations":r;ke(e,{required:["family","chainId","rule",o]},t);let n=Vn(e,t);return r==="confirmations"?{...n,rule:r,confirmations:tt(e.confirmations,`${t}.confirmations`,{positive:!0})}:{...n,rule:r,[o]:Oe(e[o],`${t}.${o}`,80)}}function er(e){if(!Array.isArray(e))throw new TypeError("finality policy rules must be an array");let t=e.map((o,n)=>Kn(o,`finality policy rule ${n}`)),r=new Set;for(let o of t){let n=`${o.family}\0${o.chainId}`;if(r.has(n))throw new TypeError(`duplicate finality rule for ${o.family}:${o.chainId}`);r.add(n)}return L({policyVersion:1,rules:t})}function Vs(e){if(ke(e,{required:["policyVersion","rules"]},"finality policy"),e.policyVersion!==1||!Array.isArray(e.rules))throw new TypeError("unsupported finality policy");return er(e.rules)}function Jn(e,t){let r=Ws(t,"finality query"),n=Vs(e).rules.find(i=>i.family===r.family&&i.chainId===r.chainId);return n?L({status:"KNOWN",...r,rule:n}):L({status:Z.UNKNOWN,reason:"MISSING_FINALITY_RULE",...r,rule:null})}function Ks(e,t){if(e==null)return null;Xt(e,"finality evidence");let r=t.rule==="confirmations"?"confirmations":t.rule;if(ke(e,{required:["status"],optional:[r]},"finality evidence"),!Us.includes(e.status))throw new TypeError("finality evidence.status is unknown");let o={status:e.status};return e[r]!=null&&(o[r]=t.rule==="confirmations"?tt(e.confirmations,"finality evidence.confirmations",{positive:!0}):Oe(e[r],`finality evidence.${r}`,80)),o}function Gn(e,t){if(!e||e.status===Z.UNKNOWN||e.rule==null)return L({status:Z.UNKNOWN,final:!1,reason:"MISSING_FINALITY_RULE"});let r=Kn(e.rule??e,"resolved finality rule"),o=Ks(t,r);if(o==null)return L({status:Z.UNKNOWN,final:!1,reason:"MISSING_FINALITY_EVIDENCE"});if(o.status!=="LIVE")return L({status:Z.UNKNOWN,final:!1,reason:`${o.status}_EVIDENCE`});let n=!1;return r.rule==="confirmations"?n=o.confirmations!=null&&o.confirmations>=r.confirmations:r.rule==="finalizedTag"?n=o.finalizedTag===r.finalizedTag:n=o.checkpoint===r.checkpoint,L({status:n?Z.FINAL:Z.INCLUDED,final:n,reason:n?"PINNED_RULE_SATISFIED":"PINNED_RULE_NOT_SATISFIED",rule:r})}var zs,Z,Us,Yn=u(()=>{Qt();zs=Object.freeze(["confirmations","finalizedTag","checkpoint"]),Z=Object.freeze({UNKNOWN:"UNKNOWN",INCLUDED:"INCLUDED",FINAL:"FINAL"}),Us=Object.freeze(["LIVE","STALE","UNKNOWN","UNAVAILABLE"])});function Gs(e){if(e===!0||e===1||e==="1")return"SUCCESS";if(e===!1||e===0||e==="0")return"FAIL";if(typeof e!="string")return"UNKNOWN";let t=e.trim().toUpperCase();return["SUCCESS","SUCCEEDED","OK","EXECUTED"].includes(t)?"SUCCESS":["FAIL","FAILED","FAILURE","REVERTED","REJECTED"].includes(t)?"FAIL":"UNKNOWN"}function Xn(e){return typeof e=="string"&&["FAIL","FAILED","FAILURE","ORPHAN","ORPHANED","REVERTED"].includes(e.trim().toUpperCase())}function rr(e){return e==null?e:Array.isArray(e)?e.map(rr):Te(e)?Object.fromEntries(Object.keys(e).sort().map(t=>[t,rr(e[t])])):String(e)}function Ys(e,t,r,o){let n=S(e.finalityEvidence,o?.finality,e.evidence),i=S(e.finalityPolicy,e.policy);try{return i==null&&Te(e.finalityRule)&&(i=er([{family:t,chainId:r,...e.finalityRule}])),i==null||t==null||r==null?{status:"UNKNOWN",final:!1,reason:"MISSING_FINALITY_RULE"}:Gn(Jn(i,{family:t,chainId:r}),n)}catch{return{status:"UNKNOWN",final:!1,reason:"MALFORMED_FINALITY_EVIDENCE"}}}function C(e,t,r){r!=null&&(e[t]=r)}function Xs(e){return e==null?null:String(e).trim().toLowerCase()}function tr(...e){let t=e.map(Xs).filter(Boolean);return t.length<=1||t.every(r=>r===t[0])}function Zn(e={}){if(!Te(e))throw new TypeError("verified receipt: input object required");let t=Ke(e),r=S(t.actionReceipt,t.receipt),o=Te(r)?r:t,n=S(t.observation,t.chainObservation,t.observedReceipt),i=Te(n),s=S(t.txHash,o.txHash,o.transactionHash,n?.txHash,n?.transactionHash),l=S(t.family,o.family,o.chain?.family,n?.family,n?.chain?.family),c=S(t.chainId,o.chainId,o.chain?.chainId,n?.chainId,n?.chain?.chainId),f=!tr(t.txHash,o.txHash,o.transactionHash,n?.txHash,n?.transactionHash)||!tr(t.family,o.family,o.chain?.family,n?.family,n?.chain?.family)||!tr(t.chainId,o.chainId,o.chain?.chainId,n?.chainId,n?.chain?.chainId),a=Ys(t,l,c,i&&!f?n:null),m=Gs(S(n?.receiptStatus,n?.executionStatus,n?.status)),g=S(t.reconciliationStatus,t.reconciliation?.status,n?.reconciliationStatus),d=S(t.finalityState,t.finalityEvidence?.status,t.evidence?.status,n?.finalityState),p="UNKNOWN";Xn(g)||!f&&(i&&m==="FAIL"||Xn(d))?p="FAIL":!f&&s&&i&&m==="SUCCESS"&&["INCLUDED","FINAL"].includes(a.status)&&(p="SUCCESS");let w={verifiedReceiptVersion:Js,status:p};f&&(w.reason="REFERENCE_MISMATCH"),C(w,"txHash",s),C(w,"chain",S(t.chain,o.chain,n?.chain)),C(w,"family",l),C(w,"chainId",c),C(w,"block",S(n?.block,t.block)),C(w,"blockState",S(n?.blockState,n?.inclusionState)),w.finalityState=a.status,C(w,"confirmations",S(n?.confirmations,n?.finality?.confirmations,t.finalityEvidence?.confirmations,t.evidence?.confirmations)),C(w,"observedAt",S(n?.observedAt,t.observedAt)),C(w,"route",S(t.route,o.route)),C(w,"prepareHash",S(t.prepareHash,o.prepareHash)),C(w,"policyOutcome",S(t.policyOutcome,o.policyOutcome,o.policyChecks));let y=S(t.balanceChanges,n?.balanceChanges,n?.balances,o.balanceChanges,o.balances);return y!=null&&(w.balanceChanges=rr(y)),C(w,"createdAt",S(t.createdAt,o.createdAt)),C(w,"submittedAt",S(t.submittedAt,o.submittedAt)),C(w,"finalizedAt",S(t.finalizedAt,n?.finalizedAt)),C(w,"timestamps",S(t.timestamps,o.timestamps,n?.timestamps)),L(w)}var Js,Qh,S,Te,Qn=u(()=>{Ae();Yn();Qt();Js=1,Qh=Object.freeze(["SUCCESS","FAIL","UNKNOWN"]),S=(...e)=>e.find(t=>t!=null),Te=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype});var to={};Re(to,{observeEvmReceipt:()=>eo,verifyEvmReceipt:()=>ea});function Qs(e){if(e==null)return null;let t=typeof e=="number"?e:Number.parseInt(String(e),16);return Number.isSafeInteger(t)?t:null}async function eo({txHash:e,chainId:t,rpcUrl:r},o={}){let n=String(e||"").trim().toLowerCase();if(!Zs.test(n))throw new TypeError("observe receipt: txHash must be a 32-byte hash");let i=Number(t);if(!Number.isSafeInteger(i)||i<=0)throw new TypeError("observe receipt: chainId required");let s=o.transactionReceipt||Un,l=o.rpcCall||Gt,c={...o.rpcOptions||{},...r?{rpcUrl:r}:{}},f;try{f=await s({txHash:n,chainId:i},c)}catch(d){return{observation:null,reason:`RPC_UNAVAILABLE: ${d.message}`}}if(!f||f.receipt==null)return{observation:null,reason:f?.reason||"receipt pending"};let a=null,m=f.blockNumber;if(Number.isSafeInteger(m))try{let d=Qs(await l(i,"eth_blockNumber",[],c));d!=null&&d>=m&&(a=d-m+1)}catch{}let g={txHash:n,family:"evm",chainId:String(i),receiptStatus:f.status==="success"?"SUCCESS":f.status==="reverted"?"FAIL":"UNKNOWN",block:m==null?void 0:String(m),observedAt:new Date().toISOString(),finality:{status:"LIVE",...a==null?{}:{confirmations:a}}};return a!=null&&(g.confirmations=a),{observation:g,reason:null}}async function ea({txHash:e,chainId:t,confirmations:r=1,rpcUrl:o},n={}){let{observation:i,reason:s}=await eo({txHash:e,chainId:t,rpcUrl:o},n),l=Zn({txHash:String(e).trim().toLowerCase(),family:"evm",chainId:String(Number(t)),finalityRule:{rule:"confirmations",confirmations:r},...i?{observation:i}:{}});return{receipt:l,observed:!!i,final:l.finalityState==="FINAL",requiredConfirmations:r,reason:s}}var Zs,ro=u(()=>{Wn();Qn();Zs=/^0x[0-9a-f]{64}$/});var no={};Re(no,{classifyReceipt:()=>fe,configDir:()=>oa,firstHourReport:()=>Ne,probeReceiptModule:()=>sa,probeReviewModule:()=>ia,venueMap:()=>rt});import ta from"node:path";import{homedir as ra}from"node:os";function oa(e=process.env){return e.ORACLE_CONFIG_DIR||ta.join(ra(),".config","oracle")}function rt({env:e=process.env,vault:t=null}={}){let r=t||ve(),o=[];for(let[n,i]of Object.entries(de)){let s=(i.rpcEnv||[]).some(c=>String(e[c]||"").trim());if(i.readOnly===!0){o.push({key:n,chainId:i.chainId,name:i.name,family:"evm",status:"read-only",execute:!1,note:s?"rpc configured; reads only \u2014 no venue, no prepare, no signer":"public RPC reads only \u2014 no venue, no prepare, no signer"});continue}let l="prepare";i.evm?s&&(l="live"):l="unavailable",o.push({key:n,chainId:i.chainId,name:i.name,family:"evm",status:l,execute:!!(r.vaultExists&&r.armed&&!r.disarmed),note:s?"rpc configured":"public read/prepare; set RPC for live reads"})}return o.push({key:"solana",chainId:null,name:"Solana",family:"sol",status:"prepare",execute:!1,note:"Jupiter quote/prepare; local sol signer"},{key:"bitcoin",chainId:null,name:"Bitcoin",family:"btc",status:"prepare",execute:!1,note:"Esplora read; local btc signer"},{key:"hyperliquid-l1",chainId:null,name:"Hyperliquid L1",family:"data",status:"live",execute:!1,note:"data/prepare only \u2014 not an EVM signer family"},{key:"polymarket",chainId:null,name:"Polymarket",family:"data",status:"live",execute:!1,note:"data/prepare only \u2014 not a signer family"}),o}function Ne({env:e=process.env,model:t=qn(),vault:r=ve(),signerReachable:o=!1,quote:n=null,reviewAvailable:i=!1,receiptAvailable:s=!1}={}){let l=[],c=(d,p,w,y=null)=>l.push({id:d,status:p,detail:w,fix:y}),f=(()=>{let[d,p]=process.versions.node.split(".").map(Number);return d>20||d===20&&p>=19})();c("node",f?"ok":"fail",`node ${process.versions.node}`,f?null:"install node >= 20.19"),t?t.backend==="hermes"?c("model","warn","backend=hermes (opt-in attach)","oracle model --backend standalone"):c("model","ok",`${t.backend||"auto"} ${t.provider||""} ${t.model||""}`.trim()):c("model","fail","no model.json","oracle setup model"),r.vaultExists?r.disarmed?c("vault","warn","vault present, DISARMED","oracle signer (re-arm after confirm)"):c("vault",r.armed?"ok":"warn",r.armed?"present, armed":"present, not armed"):c("vault","fail","no local vault","oracle sign init");let a=e.ORACLE_SIGNER_HOST||"127.0.0.1";if(na.has(a)?c("signer",o?"ok":"warn",o?`loopback ${a}:${e.ORACLE_SIGNER_PORT||9462}`:"loopback signer not reachable",o?null:"oracle signer"):c("signer","fail",`signer host ${a} is not loopback`,"unset ORACLE_SIGNER_HOST"),!n)c("quote","warn","quote not probed",null);else if(n.ok){let d=String(n.detail||"net quote returned");c("quote","ok",d.length>140?`${d.slice(0,140)}\u2026`:d)}else c("quote","warn",n.detail||"quote unavailable","check network / oracle data serve");c("review",i?"ok":"fail",i?"sign-time review renders decoded action, policy hits, approval deltas":"sign-time review module missing from this build",i?null:"reinstall @oracle-agent/oracle (src/control/sign-time-review.mjs)"),c("receipt",s?"ok":"fail",s?"oracle receipt verifies on-chain state (SUCCESS/FAIL/UNKNOWN, finality-pinned)":"verified-receipt observer missing from this build",s?null:"reinstall @oracle-agent/oracle (src/desk/observe-receipt.mjs)");let m=l.some(d=>d.status==="fail"),g=l.filter(d=>d.status==="ok").length;return{ok:!m,checks:l,firstRunScore:{ok:g,total:l.length,label:`${g}/${l.length} first-run hops green`},venues:rt({env:e,vault:r})}}async function ia(){try{return typeof(await Promise.resolve().then(()=>(ft(),gr))).createSignTimeReview=="function"}catch{return!1}}async function sa(){try{let e=await Promise.resolve().then(()=>(ro(),to));return typeof e.observeReceipt=="function"||typeof e.default=="function"||Object.values(e).some(t=>typeof t=="function")}catch{return!1}}var na,nt=u(()=>{it();Vt();Hn();st();na=new Set(["127.0.0.1","::1","localhost"])});var io={};Re(io,{classifyReceipt:()=>fe,default:()=>ua,detailText:()=>oo,firstHourReport:()=>Ne,probeQuote:()=>ca,probeSigner:()=>aa,symbol:()=>Ce,vaultStatus:()=>ve});async function aa(e=process.env){let t=e.ORACLE_SIGNER_HOST||"127.0.0.1",r=e.ORACLE_SIGNER_PORT||9462;try{return(await fetch(`http://${t}:${r}/status`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function Ce(e){let t=String(e??"?").replace(/[^\w.$-]/g,"");return t.length>12?`${t.slice(0,12)}...`:t||"?"}function oo(e,t=120){let r=String(e??"").replace(/[\u0000-\u001f\u007f-\u009f]/g," ").replace(/\s+/g," ").trim();return r?r.length>t?`${r.slice(0,t)}...`:r:"quote failed"}async function ca(){try{let e=await fetch("https://api.dexscreener.com/latest/dex/search?q=WETH%20USDC",{signal:AbortSignal.timeout(4e3)});if(!e.ok)return{ok:!1,detail:`dexscreener ${e.status}`};let r=(await e.json())?.pairs?.[0];return!r?.chainId||!r?.priceUsd?{ok:!1,detail:"no pair"}:{ok:!0,detail:`${Ce(r.chainId)} ${Ce(r.baseToken?.symbol)}/${Ce(r.quoteToken?.symbol)} $${Ce(r.priceUsd)}`}}catch(e){return{ok:!1,detail:oo(e instanceof Error?e.message:"quote failed")}}}var ua,so=u(()=>{nt();Vt();ua={name:"venues",summary:"label every shipped venue live / prepare / unavailable",group:"read",usage:"oracle venues [--json]",async run(e){let t=e.argv.includes("--json"),r=rt();if(t)return process.stdout.write(`${JSON.stringify({venues:r},null,2)}
|
|
4
|
+
${JSON.stringify(r??[])}`}async function Ks(e,t,r){return je(e,{method:"POST",body:t,fetchImpl:r.fetchImpl,timeoutMs:r.timeoutMs??12e3,signal:r.signal})}async function er(e,t,r=[],o={}){let n=String(t||""),i=zs(n),s=qs(e,o);if(!s)throw new Error(`No RPC URL for chainId ${e} (set env from chain registry rpcEnv or pass rpcUrl)`);if(i==="eth_chainid"&&o.cacheChainId!==!1){let a=Vn.get(s);if(a!=null)return a}let c=o.dedupe!==!1&&!o.signal?Vs(s,n,r):null;if(c&&Ie.has(c))return Ie.get(c);let f=(async()=>{let a=await Ks(s,{jsonrpc:"2.0",id:1,method:t,params:r},o),m=Ws(a);return i==="eth_chainid"&&typeof m=="string"&&Vn.set(s,m),m})();return c&&(Ie.set(c,f),f.finally(()=>{Ie.get(c)===f&&Ie.delete(c)}).catch(()=>{})),f}async function Kn(e={},t={}){let r=Number(e.chainId??t.chainId??1),o=js(e.txHash||e.hash||e.transactionHash),n=await er(r,"eth_getTransactionReceipt",[o],t);if(!n)return{ok:!1,chainId:r,txHash:o,status:"pending",receipt:null,reason:"receipt pending"};let i=Qt(n.status),s=i===1,u=i===1?"success":i===0?"reverted":"unknown",c=s?null:u==="reverted"?"transaction reverted":"unknown receipt status",f=e.expectedTo?Zt(e.expectedTo,"expectedTo"):null,a=n.to?Zt(n.to,"receipt.to"):null;return f&&a!==f&&(s=!1,c=`to mismatch: expected ${f}, got ${a||"null"}`),{ok:s,chainId:r,txHash:o,status:u,reason:c,statusCode:i,to:a,from:n.from?Zt(n.from,"receipt.from"):null,blockNumber:Qt(n.blockNumber),transactionIndex:Qt(n.transactionIndex),logs:Array.isArray(n.logs)?n.logs:[],receipt:n}}var dg,Fs,Hs,Ie,Vn,Jn=l(()=>{Fe();ct();dg=new Ds(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);Fs={1:"https://ethereum.publicnode.com",137:"https://polygon-bor-rpc.publicnode.com",42161:"https://arbitrum-one-rpc.publicnode.com",8453:"https://base-rpc.publicnode.com",10:"https://optimism-rpc.publicnode.com",988:"https://rpc.stable.xyz",56:"https://bsc-rpc.publicnode.com",43114:"https://avalanche-c-chain-rpc.publicnode.com",999:"https://rpc.hyperliquid.xyz/evm",2741:"https://api.mainnet.abs.xyz",4663:"https://rpc.mainnet.chain.robinhood.com",1339:"https://rpc.elysiumchain.tech"};Hs=/^(?:eth_(?:call|blocknumber|chainid|get[a-z0-9]+|feehistory|gasprice|maxpriorityfeepergas|syncing|protocolversion|estimategas|createaccesslist)|net_(?:version|listening|peercount)|web3_(?:clientversion|sha3))$/;Ie=new Map,Vn=new Map});function tr(e,t){if(!e||typeof e!="object"||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`${t} must be a plain object`);return e}function rr(e,t="control input"){try{W(e,t),wn(e)}catch(r){throw new TypeError(`${t} contains secret or custody material: ${r.message}`)}return e}function ke(e,{required:t=[],optional:r=[]}={},o="object"){tr(e,o);let n=new Set([...t,...r]),i=Object.keys(e).filter(s=>!n.has(s));if(i.length)throw new TypeError(`${o} has unknown field ${i[0]}`);for(let s of t)if(!Object.hasOwn(e,s))throw new TypeError(`${o}.${s} is required`);return e}function nr(e,t,r=200,{lower:o=!1}={}){if(typeof e!="string"||!e.trim()||e.length>r||Js.test(e))throw new TypeError(`${t} must be non-empty control-free text up to ${r} characters`);let n=e.trim();return o?n.toLowerCase():n}function Oe(e,t,r=80){let o=nr(e,t,r,{lower:!0});if(!/^[a-z0-9][a-z0-9._:-]*$/.test(o))throw new TypeError(`${t} must be a lowercase identifier`);return o}function ot(e,t,{positive:r=!1}={}){if(!Number.isSafeInteger(e)||e<0||r&&e===0)throw new TypeError(`${t} must be a ${r?"positive":"non-negative"} safe integer`);return e}function R(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){for(let t of Object.values(e))R(t);Object.freeze(e)}return e}var Js,or=l(()=>{Ae();zt();Js=/[\u0000-\u001f\u007f]/});function Gn({family:e,chainId:t},r="chain"){let o=Oe(e,`${r}.family`,40),n;if(o==="evm"){if(typeof t=="number")n=String(ot(t,`${r}.chainId`,{positive:!0}));else if(n=nr(t,`${r}.chainId`,40),!/^[1-9][0-9]*$/.test(n))throw new TypeError(`${r}.chainId must be a positive decimal EVM chain id`)}else n=Oe(t,`${r}.chainId`,80);return{family:o,chainId:n}}function Xs(e,t="chain"){return ke(e,{required:["family","chainId"]},t),R(Gn(e,t))}function Yn(e,t="finality rule"){rr(e,t),tr(e,t);let r=e.rule;if(!Gs.includes(r))throw new TypeError(`${t}.rule must be confirmations, finalizedTag, or checkpoint`);let o=r==="confirmations"?"confirmations":r;ke(e,{required:["family","chainId","rule",o]},t);let n=Gn(e,t);return r==="confirmations"?{...n,rule:r,confirmations:ot(e.confirmations,`${t}.confirmations`,{positive:!0})}:{...n,rule:r,[o]:Oe(e[o],`${t}.${o}`,80)}}function ir(e){if(!Array.isArray(e))throw new TypeError("finality policy rules must be an array");let t=e.map((o,n)=>Yn(o,`finality policy rule ${n}`)),r=new Set;for(let o of t){let n=`${o.family}\0${o.chainId}`;if(r.has(n))throw new TypeError(`duplicate finality rule for ${o.family}:${o.chainId}`);r.add(n)}return R({policyVersion:1,rules:t})}function Zs(e){if(ke(e,{required:["policyVersion","rules"]},"finality policy"),e.policyVersion!==1||!Array.isArray(e.rules))throw new TypeError("unsupported finality policy");return ir(e.rules)}function Xn(e,t){let r=Xs(t,"finality query"),n=Zs(e).rules.find(i=>i.family===r.family&&i.chainId===r.chainId);return n?R({status:"KNOWN",...r,rule:n}):R({status:Z.UNKNOWN,reason:"MISSING_FINALITY_RULE",...r,rule:null})}function Qs(e,t){if(e==null)return null;rr(e,"finality evidence");let r=t.rule==="confirmations"?"confirmations":t.rule;if(ke(e,{required:["status"],optional:[r]},"finality evidence"),!Ys.includes(e.status))throw new TypeError("finality evidence.status is unknown");let o={status:e.status};return e[r]!=null&&(o[r]=t.rule==="confirmations"?ot(e.confirmations,"finality evidence.confirmations",{positive:!0}):Oe(e[r],`finality evidence.${r}`,80)),o}function Zn(e,t){if(!e||e.status===Z.UNKNOWN||e.rule==null)return R({status:Z.UNKNOWN,final:!1,reason:"MISSING_FINALITY_RULE"});let r=Yn(e.rule??e,"resolved finality rule"),o=Qs(t,r);if(o==null)return R({status:Z.UNKNOWN,final:!1,reason:"MISSING_FINALITY_EVIDENCE"});if(o.status!=="LIVE")return R({status:Z.UNKNOWN,final:!1,reason:`${o.status}_EVIDENCE`});let n=!1;return r.rule==="confirmations"?n=o.confirmations!=null&&o.confirmations>=r.confirmations:r.rule==="finalizedTag"?n=o.finalizedTag===r.finalizedTag:n=o.checkpoint===r.checkpoint,R({status:n?Z.FINAL:Z.INCLUDED,final:n,reason:n?"PINNED_RULE_SATISFIED":"PINNED_RULE_NOT_SATISFIED",rule:r})}var Gs,Z,Ys,Qn=l(()=>{or();Gs=Object.freeze(["confirmations","finalizedTag","checkpoint"]),Z=Object.freeze({UNKNOWN:"UNKNOWN",INCLUDED:"INCLUDED",FINAL:"FINAL"}),Ys=Object.freeze(["LIVE","STALE","UNKNOWN","UNAVAILABLE"])});function ta(e){if(e===!0||e===1||e==="1")return"SUCCESS";if(e===!1||e===0||e==="0")return"FAIL";if(typeof e!="string")return"UNKNOWN";let t=e.trim().toUpperCase();return["SUCCESS","SUCCEEDED","OK","EXECUTED"].includes(t)?"SUCCESS":["FAIL","FAILED","FAILURE","REVERTED","REJECTED"].includes(t)?"FAIL":"UNKNOWN"}function eo(e){return typeof e=="string"&&["FAIL","FAILED","FAILURE","ORPHAN","ORPHANED","REVERTED"].includes(e.trim().toUpperCase())}function ar(e){return e==null?e:Array.isArray(e)?e.map(ar):Te(e)?Object.fromEntries(Object.keys(e).sort().map(t=>[t,ar(e[t])])):String(e)}function ra(e,t,r,o){let n=S(e.finalityEvidence,o?.finality,e.evidence),i=S(e.finalityPolicy,e.policy);try{return i==null&&Te(e.finalityRule)&&(i=ir([{family:t,chainId:r,...e.finalityRule}])),i==null||t==null||r==null?{status:"UNKNOWN",final:!1,reason:"MISSING_FINALITY_RULE"}:Zn(Xn(i,{family:t,chainId:r}),n)}catch{return{status:"UNKNOWN",final:!1,reason:"MALFORMED_FINALITY_EVIDENCE"}}}function C(e,t,r){r!=null&&(e[t]=r)}function na(e){return e==null?null:String(e).trim().toLowerCase()}function sr(...e){let t=e.map(na).filter(Boolean);return t.length<=1||t.every(r=>r===t[0])}function to(e={}){if(!Te(e))throw new TypeError("verified receipt: input object required");let t=Je(e),r=S(t.actionReceipt,t.receipt),o=Te(r)?r:t,n=S(t.observation,t.chainObservation,t.observedReceipt),i=Te(n),s=S(t.txHash,o.txHash,o.transactionHash,n?.txHash,n?.transactionHash),u=S(t.family,o.family,o.chain?.family,n?.family,n?.chain?.family),c=S(t.chainId,o.chainId,o.chain?.chainId,n?.chainId,n?.chain?.chainId),f=!sr(t.txHash,o.txHash,o.transactionHash,n?.txHash,n?.transactionHash)||!sr(t.family,o.family,o.chain?.family,n?.family,n?.chain?.family)||!sr(t.chainId,o.chainId,o.chain?.chainId,n?.chainId,n?.chain?.chainId),a=ra(t,u,c,i&&!f?n:null),m=ta(S(n?.receiptStatus,n?.executionStatus,n?.status)),g=S(t.reconciliationStatus,t.reconciliation?.status,n?.reconciliationStatus),d=S(t.finalityState,t.finalityEvidence?.status,t.evidence?.status,n?.finalityState),p="UNKNOWN";eo(g)||!f&&(i&&m==="FAIL"||eo(d))?p="FAIL":!f&&s&&i&&m==="SUCCESS"&&["INCLUDED","FINAL"].includes(a.status)&&(p="SUCCESS");let w={verifiedReceiptVersion:ea,status:p};f&&(w.reason="REFERENCE_MISMATCH"),C(w,"txHash",s),C(w,"chain",S(t.chain,o.chain,n?.chain)),C(w,"family",u),C(w,"chainId",c),C(w,"block",S(n?.block,t.block)),C(w,"blockState",S(n?.blockState,n?.inclusionState)),w.finalityState=a.status,C(w,"confirmations",S(n?.confirmations,n?.finality?.confirmations,t.finalityEvidence?.confirmations,t.evidence?.confirmations)),C(w,"observedAt",S(n?.observedAt,t.observedAt)),C(w,"route",S(t.route,o.route)),C(w,"prepareHash",S(t.prepareHash,o.prepareHash)),C(w,"policyOutcome",S(t.policyOutcome,o.policyOutcome,o.policyChecks));let y=S(t.balanceChanges,n?.balanceChanges,n?.balances,o.balanceChanges,o.balances);return y!=null&&(w.balanceChanges=ar(y)),C(w,"createdAt",S(t.createdAt,o.createdAt)),C(w,"submittedAt",S(t.submittedAt,o.submittedAt)),C(w,"finalizedAt",S(t.finalizedAt,n?.finalizedAt)),C(w,"timestamps",S(t.timestamps,o.timestamps,n?.timestamps)),R(w)}var ea,Sg,S,Te,ro=l(()=>{Ae();Qn();or();ea=1,Sg=Object.freeze(["SUCCESS","FAIL","UNKNOWN"]),S=(...e)=>e.find(t=>t!=null),Te=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype});var oo={};Le(oo,{observeEvmReceipt:()=>no,verifyEvmReceipt:()=>sa});function ia(e){if(e==null)return null;let t=typeof e=="number"?e:Number.parseInt(String(e),16);return Number.isSafeInteger(t)?t:null}async function no({txHash:e,chainId:t,rpcUrl:r},o={}){let n=String(e||"").trim().toLowerCase();if(!oa.test(n))throw new TypeError("observe receipt: txHash must be a 32-byte hash");let i=Number(t);if(!Number.isSafeInteger(i)||i<=0)throw new TypeError("observe receipt: chainId required");let s=o.transactionReceipt||Kn,u=o.rpcCall||er,c={...o.rpcOptions||{},...r?{rpcUrl:r}:{}},f;try{f=await s({txHash:n,chainId:i},c)}catch(d){return{observation:null,reason:`RPC_UNAVAILABLE: ${d.message}`}}if(!f||f.receipt==null)return{observation:null,reason:f?.reason||"receipt pending"};let a=null,m=f.blockNumber;if(Number.isSafeInteger(m))try{let d=ia(await u(i,"eth_blockNumber",[],c));d!=null&&d>=m&&(a=d-m+1)}catch{}let g={txHash:n,family:"evm",chainId:String(i),receiptStatus:f.status==="success"?"SUCCESS":f.status==="reverted"?"FAIL":"UNKNOWN",block:m==null?void 0:String(m),observedAt:new Date().toISOString(),finality:{status:"LIVE",...a==null?{}:{confirmations:a}}};return a!=null&&(g.confirmations=a),{observation:g,reason:null}}async function sa({txHash:e,chainId:t,confirmations:r=1,rpcUrl:o},n={}){let{observation:i,reason:s}=await no({txHash:e,chainId:t,rpcUrl:o},n),u=to({txHash:String(e).trim().toLowerCase(),family:"evm",chainId:String(Number(t)),finalityRule:{rule:"confirmations",confirmations:r},...i?{observation:i}:{}});return{receipt:u,observed:!!i,final:u.finalityState==="FINAL",requiredConfirmations:r,reason:s}}var oa,io=l(()=>{Jn();ro();oa=/^0x[0-9a-f]{64}$/});var so={};Le(so,{classifyReceipt:()=>fe,configDir:()=>ua,firstHourReport:()=>Ne,probeReceiptModule:()=>fa,probeReviewModule:()=>da,venueMap:()=>it});import aa from"node:path";import{homedir as ca}from"node:os";function ua(e=process.env){return e.ORACLE_CONFIG_DIR||aa.join(ca(),".config","oracle")}function it({env:e=process.env,vault:t=null}={}){let r=t||ve(),o=[];for(let[n,i]of Object.entries(de)){let s=(i.rpcEnv||[]).some(c=>String(e[c]||"").trim());if(i.readOnly===!0){o.push({key:n,chainId:i.chainId,name:i.name,family:"evm",status:"read-only",execute:!1,note:s?"rpc configured; reads only \u2014 no venue, no prepare, no signer":"public RPC reads only \u2014 no venue, no prepare, no signer"});continue}let u="prepare";i.evm?s&&(u="live"):u="unavailable",o.push({key:n,chainId:i.chainId,name:i.name,family:"evm",status:u,execute:!!(r.vaultExists&&r.armed&&!r.disarmed),note:s?"rpc configured":"public read/prepare; set RPC for live reads"})}return o.push({key:"solana",chainId:null,name:"Solana",family:"sol",status:"prepare",execute:!1,note:"Jupiter quote/prepare; local sol signer"},{key:"bitcoin",chainId:null,name:"Bitcoin",family:"btc",status:"prepare",execute:!1,note:"Esplora read; local btc signer"},{key:"hyperliquid-l1",chainId:null,name:"Hyperliquid L1",family:"data",status:"live",execute:!1,note:"data/prepare only \u2014 not an EVM signer family"},{key:"polymarket",chainId:null,name:"Polymarket",family:"data",status:"live",execute:!1,note:"data/prepare only \u2014 not a signer family"}),o}function Ne({env:e=process.env,model:t=Un(),vault:r=ve(),signerReachable:o=!1,quote:n=null,reviewAvailable:i=!1,receiptAvailable:s=!1}={}){let u=[],c=(d,p,w,y=null)=>u.push({id:d,status:p,detail:w,fix:y}),f=(()=>{let[d,p]=process.versions.node.split(".").map(Number);return d>20||d===20&&p>=19})();c("node",f?"ok":"fail",`node ${process.versions.node}`,f?null:"install node >= 20.19"),t?t.backend==="hermes"?c("model","warn","backend=hermes (opt-in attach)","oracle model --backend standalone"):c("model","ok",`${t.backend||"auto"} ${t.provider||""} ${t.model||""}`.trim()):c("model","fail","no model.json","oracle setup model"),r.vaultExists?r.disarmed?c("vault","warn","vault present, DISARMED","oracle signer (re-arm after confirm)"):c("vault",r.armed?"ok":"warn",r.armed?"present, armed":"present, not armed"):c("vault","fail","no local vault","oracle sign init");let a=e.ORACLE_SIGNER_HOST||"127.0.0.1";if(la.has(a)?c("signer",o?"ok":"warn",o?`loopback ${a}:${e.ORACLE_SIGNER_PORT||9462}`:"loopback signer not reachable",o?null:"oracle signer"):c("signer","fail",`signer host ${a} is not loopback`,"unset ORACLE_SIGNER_HOST"),!n)c("quote","warn","quote not probed",null);else if(n.ok){let d=String(n.detail||"net quote returned");c("quote","ok",d.length>140?`${d.slice(0,140)}\u2026`:d)}else c("quote","warn",n.detail||"quote unavailable","check network / oracle data serve");c("review",i?"ok":"fail",i?"sign-time review renders decoded action, policy hits, approval deltas":"sign-time review module missing from this build",i?null:"reinstall @oracle-agent/oracle (src/control/sign-time-review.mjs)"),c("receipt",s?"ok":"fail",s?"oracle receipt verifies on-chain state (SUCCESS/FAIL/UNKNOWN, finality-pinned)":"verified-receipt observer missing from this build",s?null:"reinstall @oracle-agent/oracle (src/desk/observe-receipt.mjs)");let m=u.some(d=>d.status==="fail"),g=u.filter(d=>d.status==="ok").length;return{ok:!m,checks:u,firstRunScore:{ok:g,total:u.length,label:`${g}/${u.length} first-run hops green`},venues:it({env:e,vault:r})}}async function da(){try{return typeof(await Promise.resolve().then(()=>(wt(),Sr))).createSignTimeReview=="function"}catch{return!1}}async function fa(){try{let e=await Promise.resolve().then(()=>(io(),oo));return typeof e.observeReceipt=="function"||typeof e.default=="function"||Object.values(e).some(t=>typeof t=="function")}catch{return!1}}var la,st=l(()=>{ct();Xt();Wn();lt();la=new Set(["127.0.0.1","::1","localhost"])});var co={};Le(co,{classifyReceipt:()=>fe,default:()=>wa,detailText:()=>ao,firstHourReport:()=>Ne,probeQuote:()=>ma,probeSigner:()=>pa,symbol:()=>Ce,vaultStatus:()=>ve});async function pa(e=process.env){let t=e.ORACLE_SIGNER_HOST||"127.0.0.1",r=e.ORACLE_SIGNER_PORT||9462;try{return(await fetch(`http://${t}:${r}/status`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function Ce(e){let t=String(e??"?").replace(/[^\w.$-]/g,"");return t.length>12?`${t.slice(0,12)}...`:t||"?"}function ao(e,t=120){let r=String(e??"").replace(/[\u0000-\u001f\u007f-\u009f]/g," ").replace(/\s+/g," ").trim();return r?r.length>t?`${r.slice(0,t)}...`:r:"quote failed"}async function ma(){try{let e=await fetch("https://api.dexscreener.com/latest/dex/search?q=WETH%20USDC",{signal:AbortSignal.timeout(4e3)});if(!e.ok)return{ok:!1,detail:`dexscreener ${e.status}`};let r=(await e.json())?.pairs?.[0];return!r?.chainId||!r?.priceUsd?{ok:!1,detail:"no pair"}:{ok:!0,detail:`${Ce(r.chainId)} ${Ce(r.baseToken?.symbol)}/${Ce(r.quoteToken?.symbol)} $${Ce(r.priceUsd)}`}}catch(e){return{ok:!1,detail:ao(e instanceof Error?e.message:"quote failed")}}}var wa,lo=l(()=>{st();Xt();wa={name:"venues",summary:"label every shipped venue live / prepare / unavailable",group:"read",usage:"oracle venues [--json]",async run(e){let t=e.argv.includes("--json"),r=it();if(t)return process.stdout.write(`${JSON.stringify({venues:r},null,2)}
|
|
5
5
|
`),0;for(let o of r)process.stdout.write(`${o.status.padEnd(12)} ${o.key.padEnd(16)} ${o.name} exec=${o.execute?"local":"no"}
|
|
6
|
-
`);return 0}}});
|
|
7
|
-
`),n&&!n.ok?1:0;let i=["","Oracle first run \u2014 what actually happens to your money",""];for(let s of
|
|
8
|
-
`)),n&&!n.ok?1:0}};export{
|
|
6
|
+
`);return 0}}});st();var uo=[{n:1,title:"quote",cmd:"oracle swap quote 8453 <tokenIn> <tokenOut> <amount> --json",note:"read-only. No wallet, no keys."},{n:2,title:"prepare",cmd:"oracle swap prepare ... --taker <yourWallet>",note:"returns an UNSIGNED transaction. Oracle never holds a key."},{n:3,title:"review",cmd:"shown before any signature",note:"decoded action, route, policy pass/fail, approval deltas, prepare hash."},{n:4,title:"sign",cmd:"your wallet, or oracle signer (local encrypted vault)",note:"you type the exact digest. Nothing signs on your behalf."},{n:5,title:"receipt",cmd:"oracle receipt --hash <txid> --chain <chainId>",note:"observed chain state only. No evidence reads UNKNOWN, never success."}],Pg={name:"quickstart",summary:"walk the first-run path: quote -> review -> sign locally -> verified receipt",group:"read",usage:"oracle quickstart [--json] [--check]",async run(e){let t=e.argv||[],r=t.includes("--json"),o=t.includes("--check"),n=null;if(o){let{probeSigner:s,probeQuote:u}=await Promise.resolve().then(()=>(lo(),co)),{probeReviewModule:c,probeReceiptModule:f}=await Promise.resolve().then(()=>(st(),so)),[a,m,g,d]=await Promise.all([s(process.env),u(),c(),f()]);n=Ne({signerReachable:a,quote:m,reviewAvailable:g,receiptAvailable:d})}if(r)return process.stdout.write(`${JSON.stringify({steps:uo,...n?{readiness:n}:{}},null,2)}
|
|
7
|
+
`),n&&!n.ok?1:0;let i=["","Oracle first run \u2014 what actually happens to your money",""];for(let s of uo)i.push(` ${s.n}. ${s.title}`),i.push(` ${s.cmd}`),i.push(` ${s.note}`),i.push("");if(i.push(" Oracle prepares. You sign. Oracle verifies what happened on chain."),i.push(""),n){i.push("Readiness:");for(let s of n.checks){let u=s.status==="ok"?"ok ":s.status==="warn"?"warn":"FAIL";i.push(` ${u} ${s.id.padEnd(9)} ${s.detail}${s.fix?` -> ${s.fix}`:""}`)}i.push("")}return process.stdout.write(i.join(`
|
|
8
|
+
`)),n&&!n.ok?1:0}};export{Pg as default};
|