@oracle-agent/oracle 0.35.44 → 0.35.45
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/agent-sessions.mjs +24 -24
- package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
- package/dist/bin/desk-server.mjs +26 -26
- package/dist/bin/oracle-data-mcp.mjs +14 -14
- package/dist/bin/oracle-gateway.mjs +47 -47
- package/dist/bin/oracle-investigate.mjs +4 -4
- package/dist/bin/oracle-launch-radar-shadow.mjs +5 -5
- package/dist/bin/oracle-mev-arb-shadow.mjs +5 -5
- package/dist/bin/oracle-mev-shadow.mjs +5 -5
- package/dist/bin/oracle-public-server.mjs +5 -5
- package/dist/bin/oracle-route.mjs +23 -23
- package/dist/bin/oracle-scan.mjs +6 -6
- package/dist/bin/oracle.mjs +1 -0
- package/dist/cli/commands/account.mjs +39 -0
- package/dist/cli/commands/agent-session.mjs +23 -23
- package/dist/cli/commands/airdrop.mjs +7 -7
- package/dist/cli/commands/chat.mjs +198 -198
- package/dist/cli/commands/data.mjs +29 -29
- package/dist/cli/commands/doctor.mjs +7 -7
- package/dist/cli/commands/eval.mjs +123 -123
- package/dist/cli/commands/farm.mjs +16 -16
- package/dist/cli/commands/follow.mjs +36 -36
- package/dist/cli/commands/mint.mjs +10 -10
- package/dist/cli/commands/model.mjs +205 -205
- package/dist/cli/commands/quickstart.mjs +6 -6
- package/dist/cli/commands/receipt.mjs +11 -11
- package/dist/cli/commands/resolve.mjs +9 -9
- package/dist/cli/commands/session-vault.mjs +5 -5
- package/dist/cli/commands/sign.mjs +12 -12
- package/dist/cli/commands/signer.mjs +25 -25
- package/dist/cli/commands/snipe.mjs +7 -7
- package/dist/cli/commands/strategy.mjs +5 -5
- package/dist/cli/commands/swap.mjs +14 -14
- package/dist/cli/commands/venues.mjs +2 -2
- package/dist/data/desk-data.mjs +24 -24
- package/dist/data/names.mjs +3 -3
- package/dist/data/providers/farming.mjs +2 -2
- package/dist/data/providers/lp-destination-discovery.mjs +4 -4
- package/dist/index.mjs +44 -44
- package/dist/investigator/index.mjs +2 -2
- package/dist/launch-radar/index.mjs +5 -5
- package/dist/local-signer/anvil-attestation-worker.mjs +1 -1
- package/dist/local-signer/index.mjs +7 -3
- package/dist/local-signer/runtime.mjs +22 -22
- package/dist/nft/universal-mint-router.mjs +4 -4
- package/dist/notifications/index.mjs +7 -7
- package/dist/router/index.mjs +3 -3
- package/dist/router/prepare-bridge.mjs +2 -2
- package/dist/router/prepare-route.mjs +3 -3
- package/dist/scanner/index.mjs +4 -4
- package/dist/strategy/index.mjs +3 -3
- package/dist/tui/standalone-client.mjs +85 -85
- 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 so=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 Ce=(e,t)=>{for(var r in t)so(e,r,{get:t[r],enumerable:!0})};function ar(e){return ao.get(Number(e))||null}function cr(e,t=process.env){let r=ar(e);if(!r)return null;for(let o of r.rpcEnv){let n=(t[o]||"").trim();if(n)return n}return null}var _e,ao,rt=u(()=>{_e={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}},ao=new Map(Object.values(_e).map(e=>[e.chainId,e]))});function de(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 nt=u(()=>{});var ur=u(()=>{});var lr=u(()=>{});var fe=u(()=>{});var ee=u(()=>{});var Le=u(()=>{fe();ee()});import{isAddress as ga}from"ethers";var it=u(()=>{Le();fe();ee()});import{Interface as lo,isAddress as Aa}from"ethers";var Oa,dr=u(()=>{it();fe();ee();Oa=new lo(["function approve(address spender,uint256 amount) returns (bool)"])});import{Interface as fo,isAddress as Ca}from"ethers";var $a,Pa,fr=u(()=>{it();fe();ee();$a=new fo(["function approve(address spender,uint256 amount) returns (bool)"]),Pa=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"})});var K=u(()=>{});import{Interface as po,MaxUint256 as Ha,isAddress as za,keccak256 as Ua,toUtf8Bytes as Wa}from"ethers";var Xa,J=u(()=>{lr();dr();fr();K();ee();Xa=new po(["function approve(address spender,uint256 amount) returns (bool)"])});var Qa,ec,$e=u(()=>{Qa=300*1e3,ec=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});var Pe=u(()=>{J()});import{Address as ic,NETWORK as sc,OutScript as ac,RawTx as cc,SigHash as uc,TEST_NETWORK as lc,Transaction as dc}from"@scure/btc-signer";var ct=u(()=>{});import{createHash as mo}from"node:crypto";import{base58 as wc}from"@scure/base";import{getCompiledTransactionMessageDecoder as gc}from"@solana/transaction-messages";var pr,yc,ut=u(()=>{pr=e=>mo("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),yc=new Map([[pr("route"),{name:"route",prefixBytes:0}],[pr("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]])});import{AsyncLocalStorage as wo}from"node:async_hooks";function Be(e){let t=ho.getStore();if(!t||t.closed||!go.includes(e))return null;if(t.spans.length>=yo)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 ho,go,yo,mr=u(()=>{ho=new wo,go=["http","retry","shared"],yo=512});import G from"node:net";import bo from"node:dns";function De(e){let t=String(e).toLowerCase().split("%")[0];if((t.match(/::/g)||[]).length>1)return null;let r=a=>{if(!a)return[];let d=a.split(":"),m=d.at(-1);if(m?.includes(".")){let p=m.split(".").map(Number);if(p.length!==4||p.some(h=>!Number.isInteger(h)||h<0||h>255))return null;d.splice(d.length-1,1,(p[0]<<8|p[1]).toString(16),(p[2]<<8|p[3]).toString(16))}return d.some(p=>!/^[0-9a-f]{1,4}$/.test(p))?null:d.map(p=>Number.parseInt(p,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 lt(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 dt(e){if(G.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(G.isIPv6(e)){let t=De(e);if(!t)return!1;let r=De("::ffff:0:0");return lt(t,r,96)?dt([...t.slice(12)].join(".")):lt(t,De("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([n,i])=>lt(t,De(n),i)):!1}return!1}function xo(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(Eo.has(r)||r.endsWith(".localhost")||r.endsWith(".internal"))return{ok:!1,error:`refused internal host ${r}`};let o=G.isIP(r);return o!==0&&!dt(r)?{ok:!1,error:`refused private address ${r}`}:{ok:!0,url:t,host:r,isLiteralIp:o!==0}}async function ft(e,{lookupFn:t=bo.promises.lookup}={}){let r=xo(e);if(!r.ok)return r;if(r.isLiteralIp)return{ok:!0,url:r.url,addresses:[{address:r.host,family:G.isIPv6(r.host)?6:4}]};let o;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=>!dt(n.address))?{ok:!1,error:`refused: ${r.host} resolves to a non-public address`}:{ok:!0,url:r.url,addresses:o}}async function pt({requireUndici:e=!1,importUndici:t=()=>import("undici")}={}){let r,o;try{let d=await t();r=d.Agent,o=d.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 n=d=>String(d).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),i=new Map,s=d=>(Array.isArray(d)?d:[d]).map(m=>typeof m=="string"?{address:m}:m).filter(m=>m&&m.address).map(m=>({address:m.address,family:m.family||(G.isIPv6(m.address)?6:4)})),l=(d,m,p)=>{i.set(n(d),s(typeof m=="string"?[{address:m,family:p}]:m))},c=d=>{let m=n(d);if(G.isIP(m))return[{address:m,family:G.isIPv6(m)?6:4}];let p=i.get(m);if(!p||!p.length)throw new Error(`refused: unpinned host ${d} during pinned fetch`);return p},f=new r({connect:{lookup(d,m,p){let h;try{h=c(d)}catch(w){return p(w)}return m?.all?p(null,h):p(null,h[0].address,h[0].family)}}}),a=So((d,m={})=>o(d,{...m,dispatcher:f}),l);return{dispatcher:f,fetch:a,pin:l,resolve:c,async close(){try{await f.destroy()}catch{}}}}function So(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[mt]=Object.freeze({pin:t}),e}function wt(e){return typeof e=="function"&&typeof e[mt]?.pin=="function"}function wr(e,t,r){if(!wt(e))throw new Error("pinFetchToAddresses: fetchImpl is not pin-capable");e[mt].pin(t,r)}var Eo,mt,hr=u(()=>{Eo=new Set(["localhost","metadata.google.internal","metadata.goog"]);mt=Symbol.for("oracle.egressGuard.pinCapableFetch")});import{createHash as Ao}from"node:crypto";import{types as F}from"node:util";function A(e){return z(`HTTP JSON body refused: ${e}`)}function Ro(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 F[t]=="function"&&F[t](e))}function Lo(e){let t=[],r=0,o=0,n=0,i=0,s=new WeakSet,l=a=>{if(r+=Buffer.byteLength(a,"utf8"),r>j.bytes)throw A("serialized byte limit exceeded");t.push(a)},c=a=>{if(Buffer.byteLength(a,"utf8")>j.bytes)throw A("serialized byte limit exceeded");return JSON.stringify(a)},f=(a,d)=>{if(o+=1,o>j.nodes)throw A("node limit exceeded");if(d>j.depth)throw A("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 A("non-finite number");l(Object.is(a,-0)?"0":String(a));return}if(typeof a!="object")throw A("unsupported non-JSON value");if(F.isProxy(a))throw A("proxy value");if(Ro(a))throw A("unsupported exotic object");if(s.has(a))throw A("cyclic value");s.add(a);try{if(Object.getOwnPropertySymbols(a).length>0)throw A("symbol-keyed fields are unsupported");if(Array.isArray(a)){let h=Object.getPrototypeOf(a),w=0;for(;h!==null;){if(F.isProxy(h))throw A("proxy array prototype");if(w+=1,w>j.depth)throw A("array prototype depth limit exceeded");h=Object.getPrototypeOf(h)}if(a.length>j.arrayLength)throw A("array length limit exceeded");for(let v=0;v<a.length;v+=1){let $=Object.getOwnPropertyDescriptor(a,String(v));if(!$||!Object.hasOwn($,"value")||$.enumerable!==!0)throw A("array entries must be dense enumerable own data")}let y=0;for(let v in a){if(i+=1,i>j.fields)throw A("enumeration limit exceeded");if(Object.hasOwn(a,v)&&(y+=1,y>a.length))throw A("named array fields are unsupported")}if(y!==a.length)throw A("array entries must be dense enumerable own data");l("[");for(let v=0;v<a.length;v+=1)v&&l(","),f(Object.getOwnPropertyDescriptor(a,String(v)).value,d+1);l("]");return}let m=Object.getPrototypeOf(a);if(m!==Object.prototype&&m!==null)throw A("non-plain object");let p=[];for(let h in a){if(i+=1,i>j.fields)throw A("enumeration limit exceeded");if(!Object.hasOwn(a,h))continue;if(n+=1,n>j.fields)throw A("field limit exceeded");let w=Object.getOwnPropertyDescriptor(a,h);if(!w||!Object.hasOwn(w,"value")||w.enumerable!==!0)throw A("object fields must be enumerable own data");p.push([h,w.value])}l("{");for(let h=0;h<p.length;h+=1)h&&l(","),l(c(p[h][0])),l(":"),f(p[h][1],d+1);l("}")}finally{s.delete(a)}};return f(e,0),t.join("")}function $o(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(F.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 Po(){return Object.assign(Object.create(null),{Accept:"application/json"})}function Bo(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 Do(e,t){return new URL(String(e)).origin===new URL(String(t)).origin}function je(e){if((typeof e!="object"||e===null)&&typeof e!="function")return`${typeof e}:${String(e)}`;let t=xr.get(e);return t||(t=Sr,Sr+=1,xr.set(e,t)),`reference:${t}`}function Ar(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?jo.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 vr(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(Ar);if(!r||typeof r!="object")return!1;if(Object.hasOwn(r,"jsonrpc")||Object.hasOwn(r,"method"))return Ar(r);let o=Object.hasOwn(r,"type")?r.type:null;return typeof o=="string"&&Fo.has(o)&&(!Object.hasOwn(r,"action")||r.action==null)&&(!Object.hasOwn(r,"signature")||r.signature==null)&&(!Object.hasOwn(r,"nonce")||r.nonce==null)}function Mo(e,t,r,o={},n=null){let i=Ao("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 qo(e,t){let r=Number(t);return Number.isFinite(r)&&r>0?Math.min(r*1e3,yr):Math.min(250*2**e,yr)+Math.floor(Math.random()*100)}function z(e,t={}){let r=new Error(e);return r.retryable=!1,Object.assign(r,t),r}function gt(e,t,r){return z(`HTTP response from ${e} exceeded maxResponseBytes ${r} (${t})`,{oversize:!0})}function Y(e){try{let t=e?.body?.cancel?.();t&&typeof t.then=="function"&&t.catch(()=>{})}catch{}}function zo(e){return e?e.byteLength??e.length??0:0}async function Uo(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&&(Y(e),!o))throw gt(r,`content-length ${i}`,t);let s=e.body?.getReader?.();if(!s){let d=await e.text(),m=Buffer.byteLength(d,"utf8");if(m>t){if(!o)throw gt(r,`body ${m} bytes`,t);return Buffer.from(d,"utf8").subarray(0,t).toString("utf8")}return d}let l=[],c=0,f=!1;try{for(;;){let{value:d,done:m}=await s.read();if(m)break;if(d&&(l.push(Buffer.from(d)),c+=zo(d),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 gt(r,`streamed ${c} bytes`,t);let a=Buffer.concat(l);return(f?a.subarray(0,t):a).toString("utf8")}function Wo(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}async function Vo(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:d,validateResponse:m,signal:p,redirectPolicy:h="follow",maxRedirects:w=Fe}){let y=null,v=t,$=s?{lookupFn:s}:{};if(c&&!l&&!wt(v))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=p?Er?Er([p,_.signal]):p:_.signal,ae=async(b,{status:k=null}={})=>{let O=await ft(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 pt({requireUndici:!0,...d?{importUndici:d}:{}})}catch(g){throw z(k==null?`HTTP refused ${b}: ${g?.message||g}`:`HTTP redirect to ${b} refused: ${g?.message||g}`,k==null?{}:{status:k})}y.pin(H,O.addresses),v=y.fetch}else wr(v,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}),g=await v(b,H);if((h==="error"||w===0)&&g.status>=300&&g.status<400)throw Y(g),z(`HTTP ${g.status} ${r} redirect refused`,{status:g.status,redirectRefused:!0});if(_o.has(g.status)){let R=a===!0&&r==="POST"&&[307,308].includes(g.status)&&vr(r,n);if(r!=="GET"&&r!=="HEAD"&&!R){Y(g);let I=new Error(`HTTP ${g.status} ${r} ${b} redirected non-idempotent request`);throw I.status=g.status,I}if(O===w)throw Y(g),z(`HTTP ${g.status} ${r} redirect budget exhausted`,{status:g.status,redirectRefused:!0});let rr=g.headers?.get?.("location"),B;try{B=Bo(rr,b)}catch(I){throw Y(g),I}let V=!Do(B,b);if(Y(g),V&&r==="POST"){let I=new Error(`HTTP ${g.status} ${r} cross-origin redirect refused`);throw I.status=g.status,I}if(V&&a){let I=new Error(`HTTP ${g.status} ${r} cross-origin redirect refused`);throw I.status=g.status,I.retryable=!1,I}if(V&&(k=Po(k)),c)await ae(B,{status:g.status});else if(V){let I=await ft(B,$);if(!I.ok){let x=new Error(`HTTP redirect from ${b} ${I.error}`);throw x.status=g.status,x.retryable=!1,x}l&&I.addresses?.length&&(y||(y=await pt(d?{importUndici:d}:{})),y&&(y.pin(new URL(B).hostname,I.addresses),v=y.fetch))}b=B;continue}if(typeof m=="function")try{await m(g,{url:b})}catch(R){throw Y(g),z(R?.message||String(R))}let T=await Uo(g,f,{url:b,onOversize:()=>_.abort()}),ce=Wo(T);if(!g.ok){let R=new Error(`HTTP ${g.status} ${r} ${b}`);throw R.status=g.status,R.retryAfter=g.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&&!me(p)){let k=b&&(typeof b=="object"||typeof b=="function")&&!F.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 g=new Error("HTTP request timed out");throw Object.defineProperties(g,{oracleTimeout:{value:!0,enumerable:!1},retryable:{value:!1,enumerable:!1}}),g}}throw b}finally{clearTimeout(P),y&&await y.close()}}async function Me(e,t={}){if(t!=null&&typeof t!="object"&&typeof t!="function")throw new TypeError("HTTP options must be an object");if(t!=null&&F.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>Fe))throw new TypeError(`HTTP maxRedirects must be an integer from 0 through ${Fe}`);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??Fe;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 d=o("maxResponseBytes");if(d!==void 0&&(!Number.isInteger(d)||d<1||d>64*1024*1024))throw new TypeError("HTTP maxResponseBytes must be a bounded integer");let m=o("signal");if(m!==void 0){if(F.isProxy(m)||!(m instanceof AbortSignal))throw new TypeError("HTTP signal must be a native AbortSignal");try{me(m)}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 p=o("fetchImpl"),h=p||globalThis.fetch;if(typeof h!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let w=i??12e3,y=(n||"GET").toUpperCase(),v=o("headers"),$=$o(v),_=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=Lo(P));let W=s??Io,ae=o("lookupFn"),b=!p,k=o("untrustedUrl")===!0,O=o("sameOriginRedirectsOnly")===!0,H=o("importUndici"),g=o("validateResponse"),T=m,ce=d??null,R=async()=>{let x;for(let E=0;E<=W;E++){T&&To.call(T);let nr=Be("http");try{let D=await Vo(e,{fetchImpl:h,method:y,headers:_,body:P,timeoutMs:w,lookupFn:ae,realFetch:b,untrustedUrl:k,maxResponseBytes:ce,sameOriginRedirectsOnly:O,importUndici:H,validateResponse:g,signal:T,redirectPolicy:f,maxRedirects:a});return nr?.("succeeded"),D}catch(D){x=D;let Q=tt=>{if(!D||typeof D!="object"&&typeof D!="function"||F.isProxy(D))return;let ue=Object.getOwnPropertyDescriptor(D,tt);return ue&&Object.hasOwn(ue,"value")?ue.value:void 0},Ne=Q("status");nr?.("failed",Ne);let ro=Q("oracleTimeout")===!0||Q("name")==="AbortError"||Q("name")==="TimeoutError"||me(T),no=new Set([408,425,429]),oo=Q("retryable")===!1?!1:Ne!=null?no.has(Ne)||vo.has(Ne)&&gr.has(y):!ro&&gr.has(y);if(E===W||!oo)throw D;let or=qo(E,Q("retryAfter")),io=Be("retry"),ir=!1;try{T?await new Promise((tt,ue)=>{let sr,le=()=>{clearTimeout(sr),br.call(T,"abort",le),ue(Co(T)||new DOMException("Aborted","AbortError"))};if(me(T)){le();return}sr=setTimeout(()=>{br.call(T,"abort",le),tt()},or),No.call(T,"abort",le,{once:!0}),me(T)&&le()}):await Ho(or),ir=!0}finally{io?.(ir?"succeeded":"failed")}}}throw x};if(!(o("dedupe")!==!1&&!T&&vr(y,P)))return R();let B=Mo(y,e,_,{untrustedUrl:k,maxResponseBytes:ce,sameOriginRedirectsOnly:O,redirectPolicy:f,maxRedirects:a,timeoutMs:w,retries:W,fetchImpl:je(h),realFetch:b,lookupFn:je(ae),importUndici:je(H),validateResponse:je(g)},P),V=ht.get(B);if(V){let x=Be("shared");try{let E=await V;return x?.("succeeded"),E}catch(E){throw x?.("failed"),E}}let I=R().finally(()=>ht.delete(B));return ht.set(B,I),I}var vo,gr,Io,yr,ko,Oo,To,No,br,Er,me,Co,_o,Fe,Nc,j,ht,xr,Sr,jo,Fo,Ho,qe=u(()=>{mr();hr();vo=new Set([408,425,429,500,502,503,504]),gr=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),Io=2,yr=4e3,ko=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,Oo=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,To=AbortSignal.prototype.throwIfAborted,No=EventTarget.prototype.addEventListener,br=EventTarget.prototype.removeEventListener,Er=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null,me=e=>e?ko.call(e):!1,Co=e=>e?Oo.call(e):void 0,_o=new Set([301,302,303,307,308]),Fe=3,Nc=64*1024,j=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024});ht=new Map,xr=new WeakMap,Sr=1;jo=new Set(["eth_blockNumber","eth_call","eth_chainId","eth_estimateGas","getHealth","minimumLedgerSlot","net_version","simulateTransaction","web3_clientVersion"]),Fo=new Set(["allMids","l2Book","outcomeMeta","spotClearinghouseState","userFills","meta","metaAndAssetCtxs","perpDexs","candleSnapshot","fundingHistory","openOrders","frontendOpenOrders","clearinghouseState","spotMeta","validatorSummaries","delegatorSummary","delegations","delegatorRewards","delegatorHistory","maxBuilderFee"]);Ho=e=>new Promise(t=>setTimeout(t,e))});var Ir=u(()=>{});var kr=u(()=>{qe();Ir()});var Fc,Or=u(()=>{kr();Fc=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"})});var Uc,Wc,bt=u(()=>{K();Or();Uc=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"}),Wc=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 Jc,Et=u(()=>{K();Jc="0x"+"00".repeat(32)});var Ko,Qc,xt=u(()=>{Et();K();Ko=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),Qc=Object.freeze(Ko.map(e=>e[0]))});var He=u(()=>{K()});import{TypedDataEncoder as ou,getAddress as iu,isAddress as su}from"ethers";var Go,Yo,_r=u(()=>{$e();Go=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Yo=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 uu,Rr=u(()=>{uu=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"})});var Lr=u(()=>{});import{TypedDataEncoder as gu,getAddress as yu,isAddress as bu}from"ethers";var Xo,ku,Zo,Ou,$r=u(()=>{qe();Le();Rr();Lr();$e();Xo=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),ku=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"}),Zo=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"}]}),Ou=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]})});import{TypedDataEncoder as Cu,getAddress as _u}from"ethers";var $u,St=u(()=>{_r();$r();$u=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"])});import{Interface as Br}from"ethers";var oi,Xu,ii,Zu,Qu,el,tl,si,rl,ze=u(()=>{J();Le();$e();Pe();ct();ut();bt();xt();He();St();oi=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]),Xu=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"}}),Zu=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),Qu=new Br(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),el=new Br(["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"]),tl=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"}}),si=Object.freeze([...oi]),rl=Object.freeze({...ii})});import{encode as il}from"@msgpack/msgpack";import{keccak256 as al,verifyTypedData as cl}from"ethers";var ul,ll,At=u(()=>{ul=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),ll=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]})});var vt=u(()=>{He()});import{ed25519 as yl}from"@noble/curves/ed25519.js";import{base58 as El}from"@scure/base";import{RawTx as Sl,SigHash as Al,Transaction as vl}from"@scure/btc-signer";import{Transaction as kl,keccak256 as Ol,verifyTypedData as Tl}from"ethers";var It=u(()=>{At();vt()});import{base58 as Pl}from"@scure/base";var we=u(()=>{ze();Pe();J();It()});var Dr=u(()=>{we();ze()});import{wordlists as ui}from"ethers";function pi(e){let t=String(e).trim().toLowerCase().split(/\s+/).filter(Boolean);return fi.has(t.length)&&t.every(r=>ui.en.getWordIndex(r)>=0)}function gi(e){let t=jr(e);return hi.has(t)||wi.test(t)}function jr(e){return String(e).replace(/[^a-z0-9]/gi,"").toLowerCase()}function yi(e){let t=jr(e);return[...li].some(r=>t.includes(r))}function bi(e,t,r){if(typeof t=="string"){if(di.some(o=>o.test(t))||pi(t))throw new he(r);if(mi.test(t)&&!gi(e))throw new he(r)}}function Ot(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string")return bi(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)=>Ot(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(yi(n))throw new he(i);e[n]!==void 0&&(o[n]=Ot(e[n],i,n))}return o}function Ue(e){return Ot(e)}var li,di,fi,mi,wi,hi,he,ge=u(()=>{li=new Set(["privatekey","privkey","secretkey","seedphrase","seed","mnemonic","passphrase","password","keystore","keymaterial","wif","xprv","xpriv","bearer","authorization","signature","apikey","credential"]),di=[/\b[5KL][1-9A-HJ-NP-Za-km-z]{50,51}\b/,/\bxprv[0-9A-Za-z]{50,}\b/],fi=new Set([12,15,18,21,24]);mi=/^\s*(?:0x)?[0-9a-fA-F]{64}\s*$/,wi=/(hash|digest|root|salt|nonce|proof|commitment|sig|id)(?:e?s)?$/i,hi=new Set(["calldata","data","publickey","pubkey","message","payload","input","extradata"]);he=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 Yl,constants as Ei,fchmodSync as Xl,fsyncSync as Zl,lstatSync as Ql,mkdirSync as ed,openSync as td,readFileSync as rd,renameSync as nd,rmSync as od,writeFileSync as id}from"node:fs";var cd,Fr=u(()=>{ge();we();cd=Ei.O_NOFOLLOW??0});import{wordlists as dd}from"ethers";var Mr,pd,te=u(()=>{ge();Mr=64*1024,pd=32*1024});var Ai,hd,gd,Ve=u(()=>{te();Ai=["schemaVersion","buildVersion","recordType","execution","custody"],hd=[...Ai,"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 vi,Gr,Sd,Rt=u(()=>{te();Ve();vi=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),Gr=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"]),Sd=new Set(Gr)});var Ci,Yr=u(()=>{te();Rt();Ci=64*1024*1024});var Nd,Cd,_d,Xr=u(()=>{Nd=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),Cd=Object.freeze(["read","simulate"]),_d=1440*60});function Lt(e){let t=String(e),r=t.toLowerCase().replace(/[\s._-]+/g,"");return _i.test(t)||Ri.includes(r)}function Li(e){return e.replace(/"([A-Za-z0-9_-]+)"\s*:\s*"(?:0x)?([0-9a-fA-F]{64})"/g,(t,r)=>Qr.includes(String(r).toLowerCase().replace(/[_-]/g,""))?`"${r}":"<hex64>"`:t)}function en(e){let t;try{t=JSON.stringify(e)}catch(n){throw new M("$",`unserializable-payload: ${String(n?.message||n)}`)}if(t===void 0)return"null";let r=Li(t);for(let{rule:n,re:i}of Zr)if(i.test(r))throw new M("$<serialized>",n);if(/(?:^|[^0-9a-fA-Fx])0x[0-9a-fA-F]{64}(?![0-9a-fA-F])/.test(r))throw new M("$<serialized>","raw-32-byte-hex-embedded");return JSON.parse(t,(n,i)=>{if(n&&Lt(n))throw new M(`$<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=Qr.includes(String(o).toLowerCase().replace(/[_-]/g,""));for(let{rule:i,re:s}of Zr)if(!(n&&i.startsWith("raw-32-byte-hex"))&&s.test(e))throw new M(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"&&Lt(n))throw new M(`${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(Lt(n))throw new M(`${t}.${n}`,"forbidden-key-name");U(i,`${t}.${n}`,r,n)}return e}var M,_i,Ri,Zr,Qr,$t=u(()=>{Xr();M=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}},_i=/(private[_-]?key|secret|bearer|keystore|mnemonic|seed[_-]?phrase|passphrase|password|api[_-]?key|access[_-]?token|auth[_-]?token|session[_-]?token|signer[_-]?url|signature)/i,Ri=Object.freeze(["privkey","wif","xprv","seed"]);Zr=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}]),Qr=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});var Pt,Hd,tn=u(()=>{$t();Pt=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Hd=Object.freeze(Object.fromEntries(Pt.map((e,t)=>[e,Object.freeze(t+1<Pt.length?[Pt[t+1]]:[])])))});var $i,rn=u(()=>{tn();te();Ve();$i=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 nn=u(()=>{te();Ve();Rt();Yr();rn()});var Bi,Di,ji,Of,Tf,Nf,Cf,_f,Fi,Rf,on=u(()=>{Bi=Object.freeze(["owner","operator","agent","viewer"]),Di=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),ji=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),Of=Object.freeze(["owner"]),Tf=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"}),Nf=new Set(Bi),Cf=new Set(Di),_f=new Set(Object.values(ji)),Fi=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"])}),Rf=Object.freeze(Object.fromEntries(Object.entries(Fi).map(([e,t])=>[e,Object.freeze([...t])])))});var Mi,qi,Hi,Bf,Df,jf,Ff,Mf,qf,Bt=u(()=>{on();Mi=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),qi=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),Hi=Object.freeze(["taskId","intentId","planId","runId","eventId"]),Bf=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),Df=new Set(Mi),jf=new Set(qi),Ff=new Set(Hi),Mf=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"]),qf=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 Kf,sn=u(()=>{nn();Bt();Kf=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"})});var Qf,an=u(()=>{Bt();Qf=32*1024*1024});var tp,rp,np,re=u(()=>{tp=Object.freeze({N:1<<17,r:8,p:1}),rp=256*1024*1024,np=16*1024});var ip,cn=u(()=>{ip=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 Dt}from"node:os";import{join as jt}from"node:path";var un,zi,up,ln=u(()=>{un=process.env.ORACLE_PUBLIC_DESKTOP==="1",zi=un?process.env.ORACLE_CONFIG_DIR||jt(Dt(),".config","oracle"):jt(Dt(),".config","oracle"),up=un?zi:jt(Dt(),".config","mad-desk")});var mp,wp,hp,dn=u(()=>{ln();mp="0".repeat(64),wp=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"}),hp=Promise.resolve()});var Ft=u(()=>{dn();K();re();we()});var pn=u(()=>{});var hn={};Ce(hn,{SIGN_TIME_REVIEW_VERSION:()=>Ui,SignTimeReviewSecretError:()=>ye,createSignTimeReview:()=>wn});function Mt(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string"){let n=e.trim().split(/\s+/);if(Gi.test(e)||Yi.has(n.length)&&n.every(i=>/^[a-z]+$/i.test(i)))throw new ye(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)=>Mt(n,`${t}[${i}]`,r));X(e,t);let o={};for(let n of Object.keys(e).sort()){let i=n.replace(/[^a-z0-9]/gi,"");if(Ji.test(i))throw new ye(`${t}.${n}`);e[n]!==void 0&&(o[n]=Mt(e[n],`${t}.${n}`,n))}return o}function X(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 be(e,t){if(e==null||e==="")throw new TypeError(`sign-time review: ${t} required`);return e}function ne(e,t){let r=String(be(e,t)).toLowerCase();if(!Wi.test(r))throw new TypeError(`sign-time review: ${t} must be an EVM address`);return r}function q(e,t,{positive:r=!1}={}){try{let o=BigInt(be(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 qt(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 mn(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){for(let t of Object.values(e))mn(t);Object.freeze(e)}return e}function Xi(e,t){if(typeof e=="boolean")return{passed:e,reason:e?"passed":"failed"};X(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:qt(String(o),`${t}.reason`)}}function Zi(e){if(!Array.isArray(e))throw new TypeError("sign-time review: policyChecks must be an array");let t=e.map((o,n)=>Xi(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 Qi(e){if(e==null)return null;if(X(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:qt(String(e.summary??"simulation result recorded"),"simulation.summary")};return e.gasEstimate!=null&&(t.gasEstimate=q(e.gasEstimate,"simulation.gasEstimate")),e.gasLimit!=null&&(t.gasLimit=q(e.gasLimit,"simulation.gasLimit")),t}function es(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)=>{X(t,`assetDeltas[${r}]`);let o=q(t.before,`assetDeltas[${r}].before`),n=q(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:qt(String(be(t.asset??t.token,`assetDeltas[${r}].asset`)),`assetDeltas[${r}].asset`),before:o,after:n,delta:s}})}function ts(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)=>{X(t,`approvalDeltas[${r}]`);let o=q(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:ne(t.token,`approvalDeltas[${r}].token`),spender:ne(t.spender,`approvalDeltas[${r}].spender`),owner:ne(t.owner,`approvalDeltas[${r}].owner`),amount:o,revokeLike:t.revokeLike??BigInt(o)===0n}})}function wn(e={}){X(e,"input");let t=Mt(e),r=t.tx==null?t:X(t.tx,"tx"),o=q(t.chainId??r.chainId,"chainId",{positive:!0}),n=ne(t.account??t.from??r.from,"account/from"),i=ne(t.destination??t.to??r.to,"destination/to"),s=String(be(t.prepareHash,"prepareHash")).toLowerCase();if(!Ki.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(be(t.calldata??t.data??r.data,"calldata/data")).toLowerCase();if(!Vi.test(f))throw new TypeError("sign-time review: calldata/data must be even-length hex");let a=t.policyChecks!==void 0&&t.policyChecks!==null,d=Zi(a?t.policyChecks:[]),m=Qi(t.simulation),p=es(t.assetDeltas),h=ts(t.approvalDeltas),w=t.allowlistHits??[];if(!Array.isArray(w))throw new TypeError("sign-time review: allowlistHits must be an array");let y=m?.willRevert===!0||["failed","error"].includes(m?.status),v=m!=null&&m.willRevert===!1&&["ok","success"].includes(m.status),$=y||d.failed>0?"BLOCKED":v&&a&&d.checks.length>0&&p!=null?"READY":"UNKNOWN",_=typeof c=="string"?c:c.method??c.action??c.type??"transaction",P=`${$}: review ${_} on chain ${o}; policy ${d.passed} passed, ${d.failed} failed; ${p?.length??0} asset delta${p?.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:ne(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:q(t.value??r.value??0,"value"),...(t.gasEstimate??r.gasEstimate)==null?{}:{gasEstimate:q(t.gasEstimate??r.gasEstimate,"gasEstimate")},...(t.gasLimit??r.gasLimit)==null?{}:{gasLimit:q(t.gasLimit??r.gasLimit,"gasLimit")},simulation:m,policyChecks:d,allowlistHits:w,assetDeltas:p,approvalDeltas:h,summary:P};return mn(W)}var Ui,Wi,Vi,Ki,Ji,Gi,Yi,ye,Ht=u(()=>{Ui=1,Wi=/^0x[0-9a-f]{40}$/,Vi=/^0x(?:[0-9a-f]{2})*$/,Ki=/^(?:0x)?[0-9a-f]{64}$/,Ji=/(privatekey|privkey|secretkey|seedphrase|mnemonic|passphrase|password|keystore|keymaterial|wif|xprv|xpriv|bearer|authorization|signature|apikey|credential)/i,Gi=/\b(?:[5KL][1-9A-HJ-NP-Za-km-z]{50,51}|xprv[0-9A-Za-z]{50,})\b/,Yi=new Set([12,15,18,21,24]),ye=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 kp,readdirSync as Op,existsSync as rs}from"node:fs";import{dirname as ns,join as Ee}from"node:path";import{fileURLToPath as os}from"node:url";function is(){let e=[Ee(xe,"descriptors"),Ee(xe,"clear-sign","descriptors"),Ee(xe,"..","clear-sign","descriptors"),Ee(xe,"..","..","clear-sign","descriptors"),Ee(xe,"..","..","..","clear-sign","descriptors")];for(let t of e)if(rs(t))return t;return e[0]}var xe,_p,Rp,gn=u(()=>{J();xe=ns(os(import.meta.url));_p=is(),Rp=(1n<<256n)-1n});var yn=u(()=>{Ht();J();gn()});import{Wallet as Mp}from"ethers";import{base58 as Hp}from"@scure/base";import{ed25519 as Up}from"@noble/curves/ed25519.js";import{NETWORK as Vp,TEST_NETWORK as Kp,WIF as Jp,p2wpkh as Gp}from"@scure/btc-signer";import{pubECDSA as Xp}from"@scure/btc-signer/utils.js";var bn=u(()=>{});var em,tm,rm,nm,om,im,sm,am,cm,um,lm,En=u(()=>{Ft();em=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),tm=Object.freeze(["binance","bybit","okx","coinbase"]),rm=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),nm=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),om=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),im=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),sm=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),am=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),cm=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),um=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),lm=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"})});var xn=u(()=>{re()});var cs,Sn,Je=u(()=>{cs=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}"]})}),Sn=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"})});var An=u(()=>{Je()});var Em,vn=u(()=>{Je();An();Em=256*1024});var In=u(()=>{Je();vn()});var kn=u(()=>{re()});import N from"node:path";import us from"node:os";import{createHash as ls,randomBytes as mw}from"node:crypto";import{Interface as zt,keccak256 as hw}from"ethers";import{Transaction as yw}from"@scure/btc-signer";import{ed25519 as Ew}from"@noble/curves/ed25519.js";function On(e){let t=process.env.ORACLE_SIGNER_STATE_DIR||N.join(process.env.XDG_STATE_HOME||N.join(us.homedir(),".local","state"),"oracle"),r=ls("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 Xw,Zw,Qw,Tn=u(()=>{Dr();Fr();sn();an();we();re();cn();Ft();pn();J();yn();ze();Pe();It();bt();xt();He();vt();Et();At();ct();ut();St();bn();En();xn();In();kn();Xw=new zt(["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"]),Zw=new zt(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),Qw=new zt(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"])});import Ut from"node:fs";import Nn from"node:path";import{homedir as ds}from"node:os";function fs(){return process.env.ORACLE_CONFIG_DIR||Nn.join(ds(),".config","oracle")}function Se(){let e=On(Nn.join(fs(),"signer")),t=Ut.existsSync(e.vault),r=Ut.existsSync(e.lock),o=t?r?"disarmed":"armed-owner-confirmed":"inert-no-key";return{vaultExists:t,policyConfigured:Ut.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 lh,Wt=u(()=>{nt();ur();Tn();re();lh=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 Ge from"node:fs";import ps from"node:os";import ie from"node:path";import{fileURLToPath as ms}from"node:url";function Cn(){return process.env.ORACLE_FAKE_HOME||ps.homedir()}function hs(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function Ye(){return hs()?process.env.ORACLE_CONFIG_DIR||ie.join(Cn(),".config","oracle"):ie.join(Cn(),".config","oracle")}function gs(){return ie.join(Ye(),"desk.json")}function ys(){return ie.join(Ye(),"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=ys();if(Ge.existsSync(n))for(let i of Ge.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=gs();if(Ge.existsSync(n)){let i=JSON.parse(Ge.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 ws,hh,_n=u(()=>{ws=ie.dirname(ms(import.meta.url)),hh=ie.resolve(ws,"../..");try{oe()}catch{}});function Xe(e){return String(e||"").trim()||void 0}function Es(e,{required:t=!1}={}){let r=Xe(e)?.toLowerCase();if(!r){if(t)throw new Error("model provider is required");return}if(!bs.has(r))throw new Error(`unsupported provider: ${r}`);return r}function xs(e,{required:t=!1}={}){let r=Xe(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 Ss(e){let t=Xe(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 Rn({provider:e,model:t,baseUrl:r}={},{requireModel:o=!1}={}){let n=Es(e),i=xs(t,{required:o});if(n==="custom")return{provider:n,...i?{model:i}:{},baseUrl:Ss(r)};if(Xe(r))throw new Error("baseUrl is only supported for the custom provider");return{...n?{provider:n}:{},...i?{model:i}:{}}}var bs,Ln=u(()=>{bs=new Set(["openrouter","openai","anthropic","xai","deepseek","gemini","kimi","mistral","nous","qwen","glm","local","ollama","custom","anthropic-oauth","openai-codex","xai-oauth"])});import $n from"node:fs";import As from"node:path";function Is(){return As.join(Ye(),"model.json")}function se(e){return String(e||"").trim()||void 0}function ks(e={}){let t=se(e.backend)?.toLowerCase()||"auto",r=Rn({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(!vs.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 Pn(){let e=Is();if(!$n.existsSync(e))return null;try{return ks(JSON.parse($n.readFileSync(e,"utf8")))}catch{return null}}var vs,Bn=u(()=>{_n();Ln();vs=new Set(["auto","standalone","hermes","remote","arch"])});import{Interface as Os,getAddress as Ts}from"ethers";function Vt(e,t){try{return Ts(e).toLowerCase()}catch{throw new Error(`${t} must be a valid EVM address`)}}function Ns(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 Kt(e){return e==null?null:Number.parseInt(String(e),16)}function _s(e,{rpcUrl:t,env:r=process.env}={}){if(t)return t;let o=cr(e,r);return o||Cs[Number(e)]||null}function Ls(e){let t=String(e||""),r=t.toLowerCase();if(t!==t.trim()||!/^[a-zA-Z0-9_]+$/.test(t)||!Rs.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 $s(e){let t=new Error(e?.message||JSON.stringify(e));return t.code=e?.code,t}function Ps(e){if(e?.error)throw $s(e.error);return e?.result}function Bs(e,t,r){return`${e}
|
|
1
|
+
var fo=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 _e=(e,t)=>{for(var r in t)fo(e,r,{get:t[r],enumerable:!0})};function cr(e){return po.get(Number(e))||null}function ur(e,t=process.env){let r=cr(e);if(!r)return null;for(let o of r.rpcEnv){let n=(t[o]||"").trim();if(n)return n}return null}var Re,po,it=u(()=>{Re={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}},po=new Map(Object.values(Re).map(e=>[e.chainId,e]))});function de(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 lr=u(()=>{});var dr=u(()=>{});var fe=u(()=>{});var ee=u(()=>{});var $e=u(()=>{fe();ee()});import{isAddress as Ea}from"ethers";var ct=u(()=>{$e();fe();ee()});import{Interface as ho,isAddress as ka}from"ethers";var Ca,fr=u(()=>{ct();fe();ee();Ca=new ho(["function approve(address spender,uint256 amount) returns (bool)"])});import{Interface as go,isAddress as La}from"ethers";var Da,ja,pr=u(()=>{ct();fe();ee();Da=new go(["function approve(address spender,uint256 amount) returns (bool)"]),ja=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"})});var K=u(()=>{});import{Interface as yo,MaxUint256 as Wa,isAddress as Va,keccak256 as Ka,toUtf8Bytes as Ja}from"ethers";var ec,J=u(()=>{dr();fr();pr();K();ee();ec=new yo(["function approve(address spender,uint256 amount) returns (bool)"])});var hr={};_e(hr,{SIGN_TIME_REVIEW_VERSION:()=>bo,SignTimeReviewSecretError:()=>pe,createSignTimeReview:()=>wr});function lt(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string"){let n=e.trim().split(/\s+/);if(vo.test(e)||Io.has(n.length)&&n.every(i=>/^[a-z]+$/i.test(i)))throw new pe(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(Ao.test(i))throw new pe(`${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 me(e,t){if(e==null||e==="")throw new TypeError(`sign-time review: ${t} required`);return e}function te(e,t){let r=String(me(e,t)).toLowerCase();if(!Eo.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(me(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 mr(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){for(let t of Object.values(e))mr(t);Object.freeze(e)}return e}function ko(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 Oo(e){if(!Array.isArray(e))throw new TypeError("sign-time review: policyChecks must be an array");let t=e.map((o,n)=>ko(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 To(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 No(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(me(t.asset??t.token,`assetDeltas[${r}].asset`)),`assetDeltas[${r}].asset`),before:o,after:n,delta:s}})}function Co(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 wr(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(me(t.prepareHash,"prepareHash")).toLowerCase();if(!So.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(me(t.calldata??t.data??r.data,"calldata/data")).toLowerCase();if(!xo.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=Oo(a?t.policyChecks:[]),g=To(t.simulation),d=No(t.assetDeltas),p=Co(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 mr(W)}var bo,Eo,xo,So,Ao,vo,Io,pe,ft=u(()=>{bo=1,Eo=/^0x[0-9a-f]{40}$/,xo=/^0x(?:[0-9a-f]{2})*$/,So=/^(?:0x)?[0-9a-f]{64}$/,Ao=/(privatekey|privkey|secretkey|seedphrase|mnemonic|passphrase|password|keystore|keymaterial|wif|xprv|xpriv|bearer|authorization|signature|apikey|credential)/i,vo=/\b(?:[5KL][1-9A-HJ-NP-Za-km-z]{50,51}|xprv[0-9A-Za-z]{50,})\b/,Io=new Set([12,15,18,21,24]),pe=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 nc,readdirSync as oc,existsSync as _o}from"node:fs";import{dirname as Ro,join as we}from"node:path";import{fileURLToPath as Lo}from"node:url";function $o(){let e=[we(he,"descriptors"),we(he,"clear-sign","descriptors"),we(he,"..","clear-sign","descriptors"),we(he,"..","..","clear-sign","descriptors"),we(he,"..","..","..","clear-sign","descriptors")];for(let t of e)if(_o(t))return t;return e[0]}var he,cc,uc,gr=u(()=>{J();he=Ro(Lo(import.meta.url));cc=$o(),uc=(1n<<256n)-1n});var yr=u(()=>{ft();J();gr()});import{Address as gc,NETWORK as yc,OutScript as bc,RawTx as Ec,SigHash as xc,TEST_NETWORK as Sc,Transaction as Ac}from"@scure/btc-signer";var mt=u(()=>{});import{createHash as Po}from"node:crypto";import{base58 as Oc}from"@scure/base";import{getCompiledTransactionMessageDecoder as Nc}from"@solana/transaction-messages";var br,Cc,wt=u(()=>{br=e=>Po("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),Cc=new Map([[br("route"),{name:"route",prefixBytes:0}],[br("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]])});import{AsyncLocalStorage as Bo}from"node:async_hooks";function Pe(e){let t=Do.getStore();if(!t||t.closed||!jo.includes(e))return null;if(t.spans.length>=Fo)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 Do,jo,Fo,Er=u(()=>{Do=new Bo,jo=["http","retry","shared"],Fo=512});import Y from"node:net";import Mo 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 Ho(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(qo.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=Mo.promises.lookup}={}){let r=Ho(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 zo(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=zo(),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=Uo((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 Uo(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 xr(e,t,r){if(!xt(e))throw new Error("pinFetchToAddresses: fetchImpl is not pin-capable");e[Et].pin(t,r)}var qo,Et,Sr=u(()=>{qo=new Set(["localhost","metadata.google.internal","metadata.goog"]);Et=Symbol.for("oracle.egressGuard.pinCapableFetch")});import{createHash as Wo}from"node:crypto";import{types as M}from"node:util";function v(e){return z(`HTTP JSON body refused: ${e}`)}function ei(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 ti(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(ei(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 ri(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 ni(){return Object.assign(Object.create(null),{Accept:"application/json"})}function oi(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 ii(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=Or.get(e);return t||(t=Tr,Tr+=1,Or.set(e,t)),`reference:${t}`}function Nr(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?si.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 Cr(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(Nr);if(!r||typeof r!="object")return!1;if(Object.hasOwn(r,"jsonrpc")||Object.hasOwn(r,"method"))return Nr(r);let o=Object.hasOwn(r,"type")?r.type:null;return typeof o=="string"&&ai.has(o)&&(!Object.hasOwn(r,"action")||r.action==null)&&(!Object.hasOwn(r,"signature")||r.signature==null)&&(!Object.hasOwn(r,"nonce")||r.nonce==null)}function ci(e,t,r,o={},n=null){let i=Wo("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 ui(e,t){let r=Number(t);return Number.isFinite(r)&&r>0?Math.min(r*1e3,vr):Math.min(250*2**e,vr)+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 di(e){return e?e.byteLength??e.length??0:0}async function fi(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+=di(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 pi(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}async function mi(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?kr?kr([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 xr(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(Qo.has(h.status)){let R=a===!0&&r==="POST"&&[307,308].includes(h.status)&&Cr(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=oi(nr,b)}catch(I){throw X(h),I}let V=!ii(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=ni(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 fi(h,f,{url:b,onOversize:()=>_.abort()}),ce=pi(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&&!ye(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{ye(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"),$=ri(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=ti(P));let W=s??Ko,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&&Yo.call(T);let or=Pe("http");try{let D=await mi(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},Ce=Q("status");or?.("failed",Ce);let ao=Q("oracleTimeout")===!0||Q("name")==="AbortError"||Q("name")==="TimeoutError"||ye(T),co=new Set([408,425,429]),uo=Q("retryable")===!1?!1:Ce!=null?co.has(Ce)||Vo.has(Ce)&&Ar.has(y):!ao&&Ar.has(y);if(E===W||!uo)throw D;let ir=ui(E,Q("retryAfter")),lo=Pe("retry"),sr=!1;try{T?await new Promise((ot,ue)=>{let ar,le=()=>{clearTimeout(ar),Ir.call(T,"abort",le),ue(Zo(T)||new DOMException("Aborted","AbortError"))};if(ye(T)){le();return}ar=setTimeout(()=>{Ir.call(T,"abort",le),ot()},ir),Xo.call(T,"abort",le,{once:!0}),ye(T)&&le()}):await li(ir),sr=!0}finally{lo?.(sr?"succeeded":"failed")}}}throw x};if(!(o("dedupe")!==!1&&!T&&Cr(y,P)))return R();let B=ci(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 Vo,Ar,Ko,vr,Jo,Go,Yo,Xo,Ir,kr,ye,Zo,Qo,je,qc,F,St,Or,Tr,si,ai,li,Me=u(()=>{Er();Sr();Vo=new Set([408,425,429,500,502,503,504]),Ar=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),Ko=2,vr=4e3,Jo=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,Go=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,Yo=AbortSignal.prototype.throwIfAborted,Xo=EventTarget.prototype.addEventListener,Ir=EventTarget.prototype.removeEventListener,kr=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null,ye=e=>e?Jo.call(e):!1,Zo=e=>e?Go.call(e):void 0,Qo=new Set([301,302,303,307,308]),je=3,qc=64*1024,F=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024});St=new Map,Or=new WeakMap,Tr=1;si=new Set(["eth_blockNumber","eth_call","eth_chainId","eth_estimateGas","getHealth","minimumLedgerSlot","net_version","simulateTransaction","web3_clientVersion"]),ai=new Set(["allMids","l2Book","outcomeMeta","spotClearinghouseState","userFills","meta","metaAndAssetCtxs","perpDexs","candleSnapshot","fundingHistory","openOrders","frontendOpenOrders","clearinghouseState","spotMeta","validatorSummaries","delegatorSummary","delegations","delegatorRewards","delegatorHistory","maxBuilderFee"]);li=e=>new Promise(t=>setTimeout(t,e))});var _r=u(()=>{});var Rr=u(()=>{Me();_r()});var Xc,Lr=u(()=>{Rr();Xc=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"})});var ru,nu,qe=u(()=>{K();Lr();ru=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"}),nu=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 su,It=u(()=>{K();su="0x"+"00".repeat(32)});var wi,du,He=u(()=>{It();K();wi=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),du=Object.freeze(wi.map(e=>e[0]))});var be=u(()=>{K()});var ze=u(()=>{J();yr();mt();wt();qe();He();be()});var ku,Ou,Ue=u(()=>{ku=300*1e3,Ou=(()=>{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 Ru,getAddress as Lu,isAddress as $u}from"ethers";var gi,yi,Mr=u(()=>{Ue();gi=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),yi=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 Du,qr=u(()=>{Du=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"})});var Hr=u(()=>{});import{TypedDataEncoder as Wu,getAddress as Vu,isAddress as Ku}from"ethers";var bi,el,Ei,tl,zr=u(()=>{Me();$e();qr();Hr();Ue();bi=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),el=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"}),Ei=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"}]}),tl=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]})});import{TypedDataEncoder as ol,getAddress as il}from"ethers";var cl,kt=u(()=>{Mr();zr();cl=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"])});import{Interface as Wr}from"ethers";var Ai,Il,vi,kl,Ol,Tl,Nl,Ii,Cl,Ve=u(()=>{J();$e();Ue();We();mt();wt();qe();He();be();kt();Ai=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]),Il=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}),vi=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"}}),kl=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),Ol=new Wr(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Tl=new Wr(["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"]),Nl=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"}}),Ii=Object.freeze([...Ai]),Cl=Object.freeze({...vi})});import{encode as Ll}from"@msgpack/msgpack";import{keccak256 as Pl,verifyTypedData as Bl}from"ethers";var Dl,jl,Ot=u(()=>{Dl=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),jl=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]})});var Tt=u(()=>{be()});import{ed25519 as Vl}from"@noble/curves/ed25519.js";import{base58 as Jl}from"@scure/base";import{RawTx as Yl,SigHash as Xl,Transaction as Zl}from"@scure/btc-signer";import{Transaction as ed,keccak256 as td,verifyTypedData as rd}from"ethers";var Nt=u(()=>{Ot();Tt()});import{base58 as ld}from"@scure/base";var Ee=u(()=>{ze();Ve();We();J();Nt()});var Kr=u(()=>{Ee();Ve()});import{wordlists as Ti}from"ethers";function Ri(e){let t=String(e).trim().toLowerCase().split(/\s+/).filter(Boolean);return _i.has(t.length)&&t.every(r=>Ti.en.getWordIndex(r)>=0)}function Bi(e){let t=Jr(e);return Pi.has(t)||$i.test(t)}function Jr(e){return String(e).replace(/[^a-z0-9]/gi,"").toLowerCase()}function Di(e){let t=Jr(e);return[...Ni].some(r=>t.includes(r))}function ji(e,t,r){if(typeof t=="string"){if(Ci.some(o=>o.test(t))||Ri(t))throw new xe(r);if(Li.test(t)&&!Bi(e))throw new xe(r)}}function _t(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string")return ji(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(Di(n))throw new xe(i);e[n]!==void 0&&(o[n]=_t(e[n],i,n))}return o}function Ke(e){return _t(e)}var Ni,Ci,_i,Li,$i,Pi,xe,Se=u(()=>{Ni=new Set(["privatekey","privkey","secretkey","seedphrase","seed","mnemonic","passphrase","password","keystore","keymaterial","wif","xprv","xpriv","bearer","authorization","signature","apikey","credential"]),Ci=[/\b[5KL][1-9A-HJ-NP-Za-km-z]{50,51}\b/,/\bxprv[0-9A-Za-z]{50,}\b/],_i=new Set([12,15,18,21,24]);Li=/^\s*(?:0x)?[0-9a-fA-F]{64}\s*$/,$i=/(hash|digest|root|salt|nonce|proof|commitment|sig|id)(?:e?s)?$/i,Pi=new Set(["calldata","data","publickey","pubkey","message","payload","input","extradata"]);xe=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 Id,constants as Fi,fchmodSync as kd,fsyncSync as Od,lstatSync as Td,mkdirSync as Nd,openSync as Cd,readFileSync as _d,renameSync as Rd,rmSync as Ld,writeFileSync as $d}from"node:fs";var Dd,Gr=u(()=>{Se();Ee();Dd=Fi.O_NOFOLLOW??0});import{wordlists as Md}from"ethers";var Yr,Hd,re=u(()=>{Se();Yr=64*1024,Hd=32*1024});var Hi,Wd,Vd,Ge=u(()=>{re();Hi=["schemaVersion","buildVersion","recordType","execution","custody"],Wd=[...Hi,"recordHash"],Vd=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 zi,sn,Xd,Bt=u(()=>{re();Ge();zi=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),sn=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"]),Xd=new Set(sn)});var Gi,an=u(()=>{re();Bt();Gi=64*1024*1024});var of,sf,af,cn=u(()=>{of=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),sf=Object.freeze(["read","simulate"]),af=1440*60});function Dt(e){let t=String(e),r=t.toLowerCase().replace(/[\s._-]+/g,"");return Yi.test(t)||Xi.includes(r)}function Zi(e){return e.replace(/"([A-Za-z0-9_-]+)"\s*:\s*"(?:0x)?([0-9a-fA-F]{64})"/g,(t,r)=>ln.includes(String(r).toLowerCase().replace(/[_-]/g,""))?`"${r}":"<hex64>"`:t)}function dn(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=Zi(t);for(let{rule:n,re:i}of un)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=ln.includes(String(o).toLowerCase().replace(/[_-]/g,""));for(let{rule:i,re:s}of un)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,Yi,Xi,un,ln,jt=u(()=>{cn();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}},Yi=/(private[_-]?key|secret|bearer|keystore|mnemonic|seed[_-]?phrase|passphrase|password|api[_-]?key|access[_-]?token|auth[_-]?token|session[_-]?token|signer[_-]?url|signature)/i,Xi=Object.freeze(["privkey","wif","xprv","seed"]);un=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}]),ln=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});var Ft,yf,fn=u(()=>{jt();Ft=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),yf=Object.freeze(Object.fromEntries(Ft.map((e,t)=>[e,Object.freeze(t+1<Ft.length?[Ft[t+1]]:[])])))});var Qi,pn=u(()=>{fn();re();Ge();Qi=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 mn=u(()=>{re();Ge();Bt();an();pn()});var ts,rs,ns,rp,np,op,ip,sp,os,ap,wn=u(()=>{ts=Object.freeze(["owner","operator","agent","viewer"]),rs=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),ns=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),rp=Object.freeze(["owner"]),np=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"}),op=new Set(ts),ip=new Set(rs),sp=new Set(Object.values(ns)),os=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"])}),ap=Object.freeze(Object.fromEntries(Object.entries(os).map(([e,t])=>[e,Object.freeze([...t])])))});var is,ss,as,dp,fp,pp,mp,wp,hp,Mt=u(()=>{wn();is=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),ss=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),as=Object.freeze(["taskId","intentId","planId","runId","eventId"]),dp=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),fp=new Set(is),pp=new Set(ss),mp=new Set(as),wp=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"]),hp=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 Sp,hn=u(()=>{mn();Mt();Sp=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"})});var Tp,gn=u(()=>{Mt();Tp=32*1024*1024});var Cp,_p,Rp,ne=u(()=>{Cp=Object.freeze({N:1<<17,r:8,p:1}),_p=256*1024*1024,Rp=16*1024});var $p,yn=u(()=>{$p=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 bn,cs,jp,En=u(()=>{bn=process.env.ORACLE_PUBLIC_DESKTOP==="1",cs=bn?process.env.ORACLE_CONFIG_DIR||Ht(qt(),".config","oracle"):Ht(qt(),".config","oracle"),jp=bn?cs:Ht(qt(),".config","mad-desk")});var zp,Up,Wp,xn=u(()=>{En();zp="0".repeat(64),Up=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"}),Wp=Promise.resolve()});var zt=u(()=>{xn();K();ne();Ee()});var An=u(()=>{});import{Wallet as tm}from"ethers";import{base58 as nm}from"@scure/base";import{ed25519 as im}from"@noble/curves/ed25519.js";import{NETWORK as am,TEST_NETWORK as cm,WIF as um,p2wpkh as lm}from"@scure/btc-signer";import{pubECDSA as fm}from"@scure/btc-signer/utils.js";var vn=u(()=>{});var wm,hm,gm,ym,bm,Em,xm,Sm,Am,vm,Im,In=u(()=>{zt();wm=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),hm=Object.freeze(["binance","bybit","okx","coinbase"]),gm=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),ym=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),bm=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),Em=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),xm=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),Sm=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),Am=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),vm=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),Im=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"})});var kn=u(()=>{ne()});var ds,On,Xe=u(()=>{ds=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}"]})}),On=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"})});var Tn=u(()=>{Xe()});var Pm,Nn=u(()=>{Xe();Tn();Pm=256*1024});var Cn=u(()=>{Xe();Nn()});var _n=u(()=>{ne()});import N from"node:path";import fs from"node:os";import{createHash as ps,randomBytes as kw}from"node:crypto";import{Interface as Ut,keccak256 as Tw}from"ethers";import{Transaction as Cw}from"@scure/btc-signer";import{ed25519 as Rw}from"@noble/curves/ed25519.js";function Rn(e){let t=process.env.ORACLE_SIGNER_STATE_DIR||N.join(process.env.XDG_STATE_HOME||N.join(fs.homedir(),".local","state"),"oracle"),r=ps("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 sh,ah,ch,Ln=u(()=>{Kr();Gr();hn();gn();Ee();ze();ze();ne();yn();zt();An();Ve();We();Nt();qe();He();be();Tt();It();Ot();kt();vn();In();kn();Cn();_n();sh=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"]),ah=new Ut(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),ch=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 $n from"node:path";import{homedir as ms}from"node:os";function ws(){return process.env.ORACLE_CONFIG_DIR||$n.join(ms(),".config","oracle")}function Ae(){let e=Rn($n.join(ws(),"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 Eh,Vt=u(()=>{st();lr();Ln();ne();Eh=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 hs from"node:os";import ie from"node:path";import{fileURLToPath as gs}from"node:url";function Pn(){return process.env.ORACLE_FAKE_HOME||hs.homedir()}function bs(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function Qe(){return bs()?process.env.ORACLE_CONFIG_DIR||ie.join(Pn(),".config","oracle"):ie.join(Pn(),".config","oracle")}function Es(){return ie.join(Qe(),"desk.json")}function xs(){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=xs();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=Es();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 ys,kh,Bn=u(()=>{ys=ie.dirname(gs(import.meta.url)),kh=ie.resolve(ys,"../..");try{oe()}catch{}});function et(e){return String(e||"").trim()||void 0}function As(e,{required:t=!1}={}){let r=et(e)?.toLowerCase();if(!r){if(t)throw new Error("model provider is required");return}if(!Ss.has(r))throw new Error(`unsupported provider: ${r}`);return r}function vs(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 Is(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 Dn({provider:e,model:t,baseUrl:r}={},{requireModel:o=!1}={}){let n=As(e),i=vs(t,{required:o});if(n==="custom")return{provider:n,...i?{model:i}:{},baseUrl:Is(r)};if(et(r))throw new Error("baseUrl is only supported for the custom provider");return{...n?{provider:n}:{},...i?{model:i}:{}}}var Ss,jn=u(()=>{Ss=new Set(["openrouter","openai","anthropic","xai","deepseek","gemini","kimi","mistral","nous","qwen","glm","local","ollama","custom","anthropic-oauth","openai-codex","xai-oauth"])});import Fn from"node:fs";import ks from"node:path";function Ts(){return ks.join(Qe(),"model.json")}function se(e){return String(e||"").trim()||void 0}function Ns(e={}){let t=se(e.backend)?.toLowerCase()||"auto",r=Dn({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(!Os.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 Mn(){let e=Ts();if(!Fn.existsSync(e))return null;try{return Ns(JSON.parse(Fn.readFileSync(e,"utf8")))}catch{return null}}var Os,qn=u(()=>{Bn();jn();Os=new Set(["auto","standalone","hermes","remote","arch"])});import{Interface as Cs,getAddress as _s}from"ethers";function Kt(e,t){try{return _s(e).toLowerCase()}catch{throw new Error(`${t} must be a valid EVM address`)}}function Rs(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 $s(e,{rpcUrl:t,env:r=process.env}={}){if(t)return t;let o=ur(e,r);return o||Ls[Number(e)]||null}function Bs(e){let t=String(e||""),r=t.toLowerCase();if(t!==t.trim()||!/^[a-zA-Z0-9_]+$/.test(t)||!Ps.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 Ds(e){let t=new Error(e?.message||JSON.stringify(e));return t.code=e?.code,t}function js(e){if(e?.error)throw Ds(e.error);return e?.result}function Fs(e,t,r){return`${e}
|
|
3
3
|
${t}
|
|
4
|
-
${JSON.stringify(r??[])}`}async function Ds(e,t,r){return Me(e,{method:"POST",body:t,fetchImpl:r.fetchImpl,timeoutMs:r.timeoutMs??12e3,signal:r.signal})}async function Jt(e,t,r=[],o={}){let n=String(t||""),i=Ls(n),s=_s(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=Dn.get(s);if(a!=null)return a}let c=o.dedupe!==!1&&!o.signal?Bs(s,n,r):null;if(c&&Ae.has(c))return Ae.get(c);let f=(async()=>{let a=await Ds(s,{jsonrpc:"2.0",id:1,method:t,params:r},o),d=Ps(a);return i==="eth_chainid"&&typeof d=="string"&&Dn.set(s,d),d})();return c&&(Ae.set(c,f),f.finally(()=>{Ae.get(c)===f&&Ae.delete(c)}).catch(()=>{})),f}async function jn(e={},t={}){let r=Number(e.chainId??t.chainId??1),o=Ns(e.txHash||e.hash||e.transactionHash),n=await Jt(r,"eth_getTransactionReceipt",[o],t);if(!n)return{ok:!1,chainId:r,txHash:o,status:"pending",receipt:null,reason:"receipt pending"};let i=Kt(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?Vt(e.expectedTo,"expectedTo"):null,a=n.to?Vt(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?Vt(n.from,"receipt.from"):null,blockNumber:Kt(n.blockNumber),transactionIndex:Kt(n.transactionIndex),logs:Array.isArray(n.logs)?n.logs:[],receipt:n}}var Nh,Cs,Rs,Ae,Dn,Fn=u(()=>{qe();rt();Nh=new Os(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);Cs={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"};Rs=/^(?:eth_(?:call|blocknumber|chainid|get[a-z0-9]+|feehistory|gasprice|maxpriorityfeepergas|syncing|protocolversion|estimategas|createaccesslist)|net_(?:version|listening|peercount)|web3_(?:clientversion|sha3))$/;Ae=new Map,Dn=new Map});function Gt(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 Yt(e,t="control input"){try{U(e,t),en(e)}catch(r){throw new TypeError(`${t} contains secret or custody material: ${r.message}`)}return e}function ve(e,{required:t=[],optional:r=[]}={},o="object"){Gt(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 Xt(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 Ie(e,t,r=80){let o=Xt(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 Ze(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 js,Zt=u(()=>{ge();$t();js=/[\u0000-\u001f\u007f]/});function Mn({family:e,chainId:t},r="chain"){let o=Ie(e,`${r}.family`,40),n;if(o==="evm"){if(typeof t=="number")n=String(Ze(t,`${r}.chainId`,{positive:!0}));else if(n=Xt(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=Ie(t,`${r}.chainId`,80);return{family:o,chainId:n}}function qs(e,t="chain"){return ve(e,{required:["family","chainId"]},t),L(Mn(e,t))}function qn(e,t="finality rule"){Yt(e,t),Gt(e,t);let r=e.rule;if(!Fs.includes(r))throw new TypeError(`${t}.rule must be confirmations, finalizedTag, or checkpoint`);let o=r==="confirmations"?"confirmations":r;ve(e,{required:["family","chainId","rule",o]},t);let n=Mn(e,t);return r==="confirmations"?{...n,rule:r,confirmations:Ze(e.confirmations,`${t}.confirmations`,{positive:!0})}:{...n,rule:r,[o]:Ie(e[o],`${t}.${o}`,80)}}function Qt(e){if(!Array.isArray(e))throw new TypeError("finality policy rules must be an array");let t=e.map((o,n)=>qn(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 Hs(e){if(ve(e,{required:["policyVersion","rules"]},"finality policy"),e.policyVersion!==1||!Array.isArray(e.rules))throw new TypeError("unsupported finality policy");return Qt(e.rules)}function Hn(e,t){let r=qs(t,"finality query"),n=Hs(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 zs(e,t){if(e==null)return null;Yt(e,"finality evidence");let r=t.rule==="confirmations"?"confirmations":t.rule;if(ve(e,{required:["status"],optional:[r]},"finality evidence"),!Ms.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"?Ze(e.confirmations,"finality evidence.confirmations",{positive:!0}):Ie(e[r],`finality evidence.${r}`,80)),o}function zn(e,t){if(!e||e.status===Z.UNKNOWN||e.rule==null)return L({status:Z.UNKNOWN,final:!1,reason:"MISSING_FINALITY_RULE"});let r=qn(e.rule??e,"resolved finality rule"),o=zs(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 Fs,Z,Ms,Un=u(()=>{Zt();Fs=Object.freeze(["confirmations","finalizedTag","checkpoint"]),Z=Object.freeze({UNKNOWN:"UNKNOWN",INCLUDED:"INCLUDED",FINAL:"FINAL"}),Ms=Object.freeze(["LIVE","STALE","UNKNOWN","UNAVAILABLE"])});function Ws(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 Wn(e){return typeof e=="string"&&["FAIL","FAILED","FAILURE","ORPHAN","ORPHANED","REVERTED"].includes(e.trim().toUpperCase())}function tr(e){return e==null?e:Array.isArray(e)?e.map(tr):ke(e)?Object.fromEntries(Object.keys(e).sort().map(t=>[t,tr(e[t])])):String(e)}function Vs(e,t,r,o){let n=S(e.finalityEvidence,o?.finality,e.evidence),i=S(e.finalityPolicy,e.policy);try{return i==null&&ke(e.finalityRule)&&(i=Qt([{family:t,chainId:r,...e.finalityRule}])),i==null||t==null||r==null?{status:"UNKNOWN",final:!1,reason:"MISSING_FINALITY_RULE"}:zn(Hn(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 Ks(e){return e==null?null:String(e).trim().toLowerCase()}function er(...e){let t=e.map(Ks).filter(Boolean);return t.length<=1||t.every(r=>r===t[0])}function Vn(e={}){if(!ke(e))throw new TypeError("verified receipt: input object required");let t=Ue(e),r=S(t.actionReceipt,t.receipt),o=ke(r)?r:t,n=S(t.observation,t.chainObservation,t.observedReceipt),i=ke(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=!er(t.txHash,o.txHash,o.transactionHash,n?.txHash,n?.transactionHash)||!er(t.family,o.family,o.chain?.family,n?.family,n?.chain?.family)||!er(t.chainId,o.chainId,o.chain?.chainId,n?.chainId,n?.chain?.chainId),a=Vs(t,l,c,i&&!f?n:null),d=Ws(S(n?.receiptStatus,n?.executionStatus,n?.status)),m=S(t.reconciliationStatus,t.reconciliation?.status,n?.reconciliationStatus),p=S(t.finalityState,t.finalityEvidence?.status,t.evidence?.status,n?.finalityState),h="UNKNOWN";Wn(m)||!f&&(i&&d==="FAIL"||Wn(p))?h="FAIL":!f&&s&&i&&d==="SUCCESS"&&["INCLUDED","FINAL"].includes(a.status)&&(h="SUCCESS");let w={verifiedReceiptVersion:Us,status:h};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=tr(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 Us,Mh,S,ke,Kn=u(()=>{ge();Un();Zt();Us=1,Mh=Object.freeze(["SUCCESS","FAIL","UNKNOWN"]),S=(...e)=>e.find(t=>t!=null),ke=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype});var Gn={};Ce(Gn,{observeEvmReceipt:()=>Jn,verifyEvmReceipt:()=>Ys});function Gs(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 Jn({txHash:e,chainId:t,rpcUrl:r},o={}){let n=String(e||"").trim().toLowerCase();if(!Js.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||jn,l=o.rpcCall||Jt,c={...o.rpcOptions||{},...r?{rpcUrl:r}:{}},f;try{f=await s({txHash:n,chainId:i},c)}catch(p){return{observation:null,reason:`RPC_UNAVAILABLE: ${p.message}`}}if(!f||f.receipt==null)return{observation:null,reason:f?.reason||"receipt pending"};let a=null,d=f.blockNumber;if(Number.isSafeInteger(d))try{let p=Gs(await l(i,"eth_blockNumber",[],c));p!=null&&p>=d&&(a=p-d+1)}catch{}let m={txHash:n,family:"evm",chainId:String(i),receiptStatus:f.status==="success"?"SUCCESS":f.status==="reverted"?"FAIL":"UNKNOWN",block:d==null?void 0:String(d),observedAt:new Date().toISOString(),finality:{status:"LIVE",...a==null?{}:{confirmations:a}}};return a!=null&&(m.confirmations=a),{observation:m,reason:null}}async function Ys({txHash:e,chainId:t,confirmations:r=1,rpcUrl:o},n={}){let{observation:i,reason:s}=await Jn({txHash:e,chainId:t,rpcUrl:o},n),l=Vn({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 Js,Yn=u(()=>{Fn();Kn();Js=/^0x[0-9a-f]{64}$/});var Xn={};Ce(Xn,{classifyReceipt:()=>de,configDir:()=>ea,firstHourReport:()=>Oe,probeReceiptModule:()=>ra,probeReviewModule:()=>ta,venueMap:()=>Qe});import Xs from"node:path";import{homedir as Zs}from"node:os";function ea(e=process.env){return e.ORACLE_CONFIG_DIR||Xs.join(Zs(),".config","oracle")}function Qe({env:e=process.env,vault:t=null}={}){let r=t||Se(),o=[];for(let[n,i]of Object.entries(_e)){let s=(i.rpcEnv||[]).some(c=>String(e[c]||"").trim()),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 Oe({env:e=process.env,model:t=Pn(),vault:r=Se(),signerReachable:o=!1,quote:n=null,reviewAvailable:i=!1,receiptAvailable:s=!1}={}){let l=[],c=(p,h,w,y=null)=>l.push({id:p,status:h,detail:w,fix:y}),f=(()=>{let[p,h]=process.versions.node.split(".").map(Number);return p>20||p===20&&h>=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(Qs.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 p=String(n.detail||"net quote returned");c("quote","ok",p.length>140?`${p.slice(0,140)}\u2026`:p)}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 d=l.some(p=>p.status==="fail"),m=l.filter(p=>p.status==="ok").length;return{ok:!d,checks:l,firstRunScore:{ok:m,total:l.length,label:`${m}/${l.length} first-run hops green`},venues:Qe({env:e,vault:r})}}async function ta(){try{return typeof(await Promise.resolve().then(()=>(Ht(),hn))).createSignTimeReview=="function"}catch{return!1}}async function ra(){try{let e=await Promise.resolve().then(()=>(Yn(),Gn));return typeof e.observeReceipt=="function"||typeof e.default=="function"||Object.values(e).some(t=>typeof t=="function")}catch{return!1}}var Qs,et=u(()=>{rt();Wt();Bn();nt();Qs=new Set(["127.0.0.1","::1","localhost"])});var Qn={};Ce(Qn,{classifyReceipt:()=>de,default:()=>ia,detailText:()=>Zn,firstHourReport:()=>Oe,probeQuote:()=>oa,probeSigner:()=>na,symbol:()=>Te,vaultStatus:()=>Se});async function na(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 Te(e){let t=String(e??"?").replace(/[^\w.$-]/g,"");return t.length>12?`${t.slice(0,12)}...`:t||"?"}function Zn(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 oa(){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:`${Te(r.chainId)} ${Te(r.baseToken?.symbol)}/${Te(r.quoteToken?.symbol)} $${Te(r.priceUsd)}`}}catch(e){return{ok:!1,detail:Zn(e instanceof Error?e.message:"quote failed")}}}var ia,eo=u(()=>{et();Wt();ia={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=Qe();if(t)return process.stdout.write(`${JSON.stringify({venues:r},null,2)}
|
|
4
|
+
${JSON.stringify(r??[])}`}async function Ms(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=Bs(n),s=$s(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=Hn.get(s);if(a!=null)return a}let c=o.dedupe!==!1&&!o.signal?Fs(s,n,r):null;if(c&&ve.has(c))return ve.get(c);let f=(async()=>{let a=await Ms(s,{jsonrpc:"2.0",id:1,method:t,params:r},o),m=js(a);return i==="eth_chainid"&&typeof m=="string"&&Hn.set(s,m),m})();return c&&(ve.set(c,f),f.finally(()=>{ve.get(c)===f&&ve.delete(c)}).catch(()=>{})),f}async function zn(e={},t={}){let r=Number(e.chainId??t.chainId??1),o=Rs(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 Fh,Ls,Ps,ve,Hn,Un=u(()=>{Me();it();Fh=new Cs(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);Ls={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"};Ps=/^(?:eth_(?:call|blocknumber|chainid|get[a-z0-9]+|feehistory|gasprice|maxpriorityfeepergas|syncing|protocolversion|estimategas|createaccesslist)|net_(?:version|listening|peercount)|web3_(?:clientversion|sha3))$/;ve=new Map,Hn=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),dn(e)}catch(r){throw new TypeError(`${t} contains secret or custody material: ${r.message}`)}return e}function Ie(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||qs.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 ke(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 qs,Qt=u(()=>{Se();jt();qs=/[\u0000-\u001f\u007f]/});function Wn({family:e,chainId:t},r="chain"){let o=ke(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=ke(t,`${r}.chainId`,80);return{family:o,chainId:n}}function Us(e,t="chain"){return Ie(e,{required:["family","chainId"]},t),L(Wn(e,t))}function Vn(e,t="finality rule"){Xt(e,t),Yt(e,t);let r=e.rule;if(!Hs.includes(r))throw new TypeError(`${t}.rule must be confirmations, finalizedTag, or checkpoint`);let o=r==="confirmations"?"confirmations":r;Ie(e,{required:["family","chainId","rule",o]},t);let n=Wn(e,t);return r==="confirmations"?{...n,rule:r,confirmations:tt(e.confirmations,`${t}.confirmations`,{positive:!0})}:{...n,rule:r,[o]:ke(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)=>Vn(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 Ws(e){if(Ie(e,{required:["policyVersion","rules"]},"finality policy"),e.policyVersion!==1||!Array.isArray(e.rules))throw new TypeError("unsupported finality policy");return er(e.rules)}function Kn(e,t){let r=Us(t,"finality query"),n=Ws(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 Vs(e,t){if(e==null)return null;Xt(e,"finality evidence");let r=t.rule==="confirmations"?"confirmations":t.rule;if(Ie(e,{required:["status"],optional:[r]},"finality evidence"),!zs.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}):ke(e[r],`finality evidence.${r}`,80)),o}function Jn(e,t){if(!e||e.status===Z.UNKNOWN||e.rule==null)return L({status:Z.UNKNOWN,final:!1,reason:"MISSING_FINALITY_RULE"});let r=Vn(e.rule??e,"resolved finality rule"),o=Vs(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 Hs,Z,zs,Gn=u(()=>{Qt();Hs=Object.freeze(["confirmations","finalizedTag","checkpoint"]),Z=Object.freeze({UNKNOWN:"UNKNOWN",INCLUDED:"INCLUDED",FINAL:"FINAL"}),zs=Object.freeze(["LIVE","STALE","UNKNOWN","UNAVAILABLE"])});function Js(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 Yn(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):Oe(e)?Object.fromEntries(Object.keys(e).sort().map(t=>[t,rr(e[t])])):String(e)}function Gs(e,t,r,o){let n=S(e.finalityEvidence,o?.finality,e.evidence),i=S(e.finalityPolicy,e.policy);try{return i==null&&Oe(e.finalityRule)&&(i=er([{family:t,chainId:r,...e.finalityRule}])),i==null||t==null||r==null?{status:"UNKNOWN",final:!1,reason:"MISSING_FINALITY_RULE"}:Jn(Kn(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 Ys(e){return e==null?null:String(e).trim().toLowerCase()}function tr(...e){let t=e.map(Ys).filter(Boolean);return t.length<=1||t.every(r=>r===t[0])}function Xn(e={}){if(!Oe(e))throw new TypeError("verified receipt: input object required");let t=Ke(e),r=S(t.actionReceipt,t.receipt),o=Oe(r)?r:t,n=S(t.observation,t.chainObservation,t.observedReceipt),i=Oe(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=Gs(t,l,c,i&&!f?n:null),m=Js(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";Yn(g)||!f&&(i&&m==="FAIL"||Yn(d))?p="FAIL":!f&&s&&i&&m==="SUCCESS"&&["INCLUDED","FINAL"].includes(a.status)&&(p="SUCCESS");let w={verifiedReceiptVersion:Ks,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 Ks,Yh,S,Oe,Zn=u(()=>{Se();Gn();Qt();Ks=1,Yh=Object.freeze(["SUCCESS","FAIL","UNKNOWN"]),S=(...e)=>e.find(t=>t!=null),Oe=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype});var eo={};_e(eo,{observeEvmReceipt:()=>Qn,verifyEvmReceipt:()=>Qs});function Zs(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 Qn({txHash:e,chainId:t,rpcUrl:r},o={}){let n=String(e||"").trim().toLowerCase();if(!Xs.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||zn,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=Zs(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 Qs({txHash:e,chainId:t,confirmations:r=1,rpcUrl:o},n={}){let{observation:i,reason:s}=await Qn({txHash:e,chainId:t,rpcUrl:o},n),l=Xn({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 Xs,to=u(()=>{Un();Zn();Xs=/^0x[0-9a-f]{64}$/});var ro={};_e(ro,{classifyReceipt:()=>de,configDir:()=>na,firstHourReport:()=>Te,probeReceiptModule:()=>ia,probeReviewModule:()=>oa,venueMap:()=>rt});import ea from"node:path";import{homedir as ta}from"node:os";function na(e=process.env){return e.ORACLE_CONFIG_DIR||ea.join(ta(),".config","oracle")}function rt({env:e=process.env,vault:t=null}={}){let r=t||Ae(),o=[];for(let[n,i]of Object.entries(Re)){let s=(i.rpcEnv||[]).some(c=>String(e[c]||"").trim()),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 Te({env:e=process.env,model:t=Mn(),vault:r=Ae(),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(ra.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 oa(){try{return typeof(await Promise.resolve().then(()=>(ft(),hr))).createSignTimeReview=="function"}catch{return!1}}async function ia(){try{let e=await Promise.resolve().then(()=>(to(),eo));return typeof e.observeReceipt=="function"||typeof e.default=="function"||Object.values(e).some(t=>typeof t=="function")}catch{return!1}}var ra,nt=u(()=>{it();Vt();qn();st();ra=new Set(["127.0.0.1","::1","localhost"])});var oo={};_e(oo,{classifyReceipt:()=>de,default:()=>ca,detailText:()=>no,firstHourReport:()=>Te,probeQuote:()=>aa,probeSigner:()=>sa,symbol:()=>Ne,vaultStatus:()=>Ae});async function sa(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 Ne(e){let t=String(e??"?").replace(/[^\w.$-]/g,"");return t.length>12?`${t.slice(0,12)}...`:t||"?"}function no(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 aa(){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:`${Ne(r.chainId)} ${Ne(r.baseToken?.symbol)}/${Ne(r.quoteToken?.symbol)} $${Ne(r.priceUsd)}`}}catch(e){return{ok:!1,detail:no(e instanceof Error?e.message:"quote failed")}}}var ca,io=u(()=>{nt();Vt();ca={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)}
|
|
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}}});nt();var so=[{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."}],ug={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:l}=await Promise.resolve().then(()=>(io(),oo)),{probeReviewModule:c,probeReceiptModule:f}=await Promise.resolve().then(()=>(nt(),ro)),[a,m,g,d]=await Promise.all([s(process.env),l(),c(),f()]);n=Te({signerReachable:a,quote:m,reviewAvailable:g,receiptAvailable:d})}if(r)return process.stdout.write(`${JSON.stringify({steps:so,...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 so)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 l=s.status==="ok"?"ok ":s.status==="warn"?"warn":"FAIL";i.push(` ${l} ${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{ug as default};
|