@oracle-agent/oracle 0.35.54 → 0.35.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
  2. package/dist/bin/desk-server.mjs +1 -1
  3. package/dist/cli/commands/chat.mjs +221 -221
  4. package/dist/cli/commands/data.mjs +1 -1
  5. package/dist/cli/commands/doctor.mjs +5 -5
  6. package/dist/cli/commands/eval.mjs +150 -150
  7. package/dist/cli/commands/farm.mjs +16 -16
  8. package/dist/cli/commands/model.mjs +223 -223
  9. package/dist/cli/commands/quickstart.mjs +6 -6
  10. package/dist/cli/commands/sign.mjs +14 -14
  11. package/dist/cli/commands/signer.mjs +32 -25
  12. package/dist/cli/commands/venues.mjs +2 -2
  13. package/dist/data/desk-data.mjs +22 -22
  14. package/dist/data/providers/farming.mjs +2 -2
  15. package/dist/index.mjs +34 -34
  16. package/dist/local-signer/anvil-attestation-worker.mjs +1 -1
  17. package/dist/local-signer/index.mjs +5 -5
  18. package/dist/local-signer/runtime.mjs +21 -22
  19. package/dist/teams/index.mjs +7 -7
  20. package/dist/tui/standalone-client.mjs +102 -102
  21. package/package.json +1 -1
  22. package/public/oracle-splash/docs/browser-and-web/index.html +2 -2
  23. package/public/oracle-splash/docs/connectors/index.html +2 -2
  24. package/public/oracle-splash/docs/getting-started/index.html +2 -2
  25. package/public/oracle-splash/docs/index.html +3 -3
  26. package/public/oracle-splash/docs/reference/index.html +2 -2
  27. package/public/oracle-splash/docs/security/index.html +2 -2
  28. package/public/oracle-splash/docs/using-oracle/index.html +2 -2
  29. package/public/oracle-splash/download/index.html +3 -3
  30. package/public/oracle-splash/downloads/index.html +1 -1
  31. package/public/oracle-splash/index.html +6 -6
  32. package/server.json +2 -2
@@ -1,3 +1,3 @@
1
- var d=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(o){throw t=[o],o}};var E,Y=d(()=>{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},elysium:{chainId:1339,name:"Elysium",rpcEnv:["ELYSIUM_RPC_URL"],evm:!0,readOnly:!0}}});var rr,X=d(()=>{Y();rr=new Map(Object.values(E).map(e=>[e.chainId,e]))});var Z=d(()=>{});import{AsyncLocalStorage as Ve}from"node:async_hooks";var Nn,ee=d(()=>{Nn=new Ve});var te=d(()=>{});var Fn,qn,Mn,Hn,zn,Un,Wn,Vn,P=d(()=>{ee();te();Fn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,qn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,Mn=AbortSignal.prototype.throwIfAborted,Hn=EventTarget.prototype.addEventListener,zn=EventTarget.prototype.removeEventListener,Un=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null,Wn=64*1024,Vn=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024})});var Ro,Lo,S=d(()=>{Ro=300*1e3,Lo=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});import{wordlists as Ns}from"ethers";var j=d(()=>{});var da,fa,pa,xe=d(()=>{da=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),fa=Object.freeze(["read","simulate"]),pa=1440*60});var Sa,Aa,va,Se=d(()=>{xe();Sa=Object.freeze(["privkey","wif","xprv","seed"]),Aa=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}]),va=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});import k from"node:fs";import Bt from"node:os";import m from"node:path";import{fileURLToPath as Dt}from"node:url";function Te(){return process.env.ORACLE_FAKE_HOME||Bt.homedir()}function Ft(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function O(){return Ft()?process.env.ORACLE_CONFIG_DIR||m.join(Te(),".config","oracle"):m.join(Te(),".config","oracle")}function qt(){return m.join(O(),"desk.json")}function Mt(){return m.join(O(),"env")}function p({force:e=!1}={}){if(p._done&&!e)return p._result||null;p._done=!0;let r={},t=(i,n)=>{if(n==null)return;let a=String(n).trim();a&&(process.env[i]!=null&&String(process.env[i]).trim()!==""||(process.env[i]=a,r[i]=a))};try{let i=Mt();if(k.existsSync(i))for(let n of k.readFileSync(i,"utf8").split(/\r?\n/)){let a=n.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!a||a[2].startsWith("#"))continue;let s=a[2];(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),t(a[1],s)}}catch{}try{let i=qt();if(k.existsSync(i)){let n=JSON.parse(k.readFileSync(i,"utf8"));n&&typeof n=="object"&&(t("ORACLE_DESK_URL",n.deskUrl||n.dataUrl||n.url),t("ORACLE_DATA_URL",n.dataUrl||n.deskUrl||n.url),t("ORACLE_API_URL",n.apiUrl||n.dataUrl||n.deskUrl),t("ORACLE_PUBLIC_URL",n.publicUrl||n.deskUrl||n.dataUrl),t("ORACLE_EXEC_URL",n.execUrl),t("MAD_DESK_URL",n.deskUrl||n.dataUrl))}}catch{}let o=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return o&&(t("ORACLE_DESK_URL",o),t("ORACLE_DATA_URL",o),t("ORACLE_API_URL",o),t("ORACLE_PUBLIC_URL",o),t("MAD_DESK_URL",o)),p._result=Object.keys(r).length?r:null,p._result}var jt,Bd,Ne=d(()=>{jt=m.dirname(Dt(import.meta.url)),Bd=m.resolve(jt,"../..");try{p()}catch{}});X();import K from"node:fs";import Oe from"node:path";import{homedir as $t}from"node:os";function _(e){let r=e?.transactionHash||e?.hash||e?.txid||null;return r?{happened:!0,hash:String(r),note:null}:{happened:!1,hash:null,note:"no transaction hash \u2014 the action did not succeed"}}import u from"node:path";import Rt from"node:os";import{createHash as Lt,randomBytes as Bl}from"node:crypto";import{Interface as V,keccak256 as jl}from"ethers";import{Transaction as ql}from"@scure/btc-signer";import{ed25519 as Hl}from"@noble/curves/ed25519.js";import{Interface as qe,MaxUint256 as jr,isAddress as Fr,keccak256 as qr,toUtf8Bytes as Mr}from"ethers";import{Interface as je,isAddress as br}from"ethers";import{isAddress as pr}from"ethers";var Ar=new je(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as Fe,isAddress as kr}from"ethers";var Cr=new Fe(["function approve(address spender,uint256 amount) returns (bool)"]),_r=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var Kr=new qe(["function approve(address spender,uint256 amount) returns (bool)"]);Z();import{readFileSync as Xr,readdirSync as Zr,existsSync as Me}from"node:fs";import{dirname as He,join as g}from"node:path";import{fileURLToPath as ze}from"node:url";var y=He(ze(import.meta.url));function Ue(){let e=[g(y,"descriptors"),g(y,"clear-sign","descriptors"),g(y,"..","clear-sign","descriptors"),g(y,"..","..","clear-sign","descriptors"),g(y,"..","..","..","clear-sign","descriptors")];for(let r of e)if(Me(r))return r;return e[0]}var rn=Ue();var nn=(1n<<256n)-1n;import{Address as pn,NETWORK as mn,OutScript as wn,RawTx as hn,SigHash as gn,TEST_NETWORK as yn,Transaction as bn}from"@scure/btc-signer";import{createHash as We}from"node:crypto";import{base58 as An}from"@scure/base";import{getCompiledTransactionMessageDecoder as In}from"@solana/transaction-messages";var Q=e=>We("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),kn=new Map([[Q("route"),{name:"route",prefixBytes:0}],[Q("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);P();var ro=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var ao=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"}),co=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 fo="0x"+"00".repeat(32);var Je=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),go=Object.freeze(Je.map(e=>e[0]));import{base58 as hs}from"@scure/base";import{Interface as ue}from"ethers";S();import{TypedDataEncoder as li,getAddress as di}from"ethers";S();import{TypedDataEncoder as jo,getAddress as Fo,isAddress as qo}from"ethers";var Ye=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Xe=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"}]});P();import{TypedDataEncoder as Xo,getAddress as Zo,isAddress as Qo}from"ethers";var zo=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});S();var Ze=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),si=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var Qe=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"}]}),ai=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var mi=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var rt=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var _i=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});var nt=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"}}),Ri=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),Li=new ue(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),$i=new ue(["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"]),Pi=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"}});var ot=Object.freeze([...rt]),Bi=Object.freeze({...nt});import{ed25519 as Zi}from"@noble/curves/ed25519.js";import{base58 as es}from"@scure/base";import{RawTx as rs,SigHash as ns,Transaction as os}from"@scure/btc-signer";import{Transaction as ss,keccak256 as as,verifyTypedData as cs}from"ethers";import{encode as Fi}from"@msgpack/msgpack";import{keccak256 as Mi,verifyTypedData as Hi}from"ethers";var zi=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),Ui=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as Rs,constants as ct,fchmodSync as Ls,fsyncSync as $s,lstatSync as Ps,mkdirSync as Bs,openSync as Ds,readFileSync as js,renameSync as Fs,rmSync as qs,writeFileSync as Ms}from"node:fs";j();var Us=ct.O_NOFOLLOW??0;j();import{wordlists as Ks}from"ethers";var de=64*1024;var Gs=32*1024;var dt=["schemaVersion","buildVersion","recordType","execution","custody"],Zs=[...dt,"recordHash"];var Qs=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 ft=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),Ee=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"]),oa=new Set(Ee);var yt=64*1024*1024;Se();var z=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Ta=Object.freeze(Object.fromEntries(z.map((e,r)=>[e,Object.freeze(r+1<z.length?[z[r+1]]:[])])));var bt=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 xt=Object.freeze(["owner","operator","agent","viewer"]),St=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),At=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),fc=Object.freeze(["owner"]),pc=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"}),mc=new Set(xt),wc=new Set(St),hc=new Set(Object.values(At));var vt=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"])}),gc=Object.freeze(Object.fromEntries(Object.entries(vt).map(([e,r])=>[e,Object.freeze([...r])])));var It=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),kt=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),Ot=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var xc=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),Sc=new Set(It),Ac=new Set(kt),vc=new Set(Ot);var Ic=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"]);var kc=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 Rc=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var jc=32*1024*1024;var qc=Object.freeze({N:1<<17,r:8,p:1}),Mc=256*1024*1024,Hc=16*1024;var Uc=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 U}from"node:os";import{join as W}from"node:path";var Ae=process.env.ORACLE_PUBLIC_DESKTOP==="1",Tt=Ae?process.env.ORACLE_CONFIG_DIR||W(U(),".config","oracle"):W(U(),".config","oracle"),Jc=Ae?Tt:W(U(),".config","mad-desk");var Qc="0".repeat(64),eu=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"});var tu=Promise.resolve();import{Wallet as du}from"ethers";import{base58 as pu}from"@scure/base";import{ed25519 as wu}from"@noble/curves/ed25519.js";import{NETWORK as gu,TEST_NETWORK as yu,WIF as bu,p2wpkh as Eu}from"@scure/btc-signer";import{pubECDSA as Su}from"@scure/btc-signer/utils.js";var Iu=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),ku=Object.freeze(["binance","bybit","okx","coinbase"]),Ou=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),Tu=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),Nu=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),Cu=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),_u=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),Ru=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),Lu=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),$u=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),Pu=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"});var _t=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}"]})}),Ie=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"});var Wu=256*1024;var hd=new V(["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"]),gd=new V(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),yd=new V(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"]);function ke(e){let r=process.env.ORACLE_SIGNER_STATE_DIR||u.join(process.env.XDG_STATE_HOME||u.join(Rt.homedir(),".local","state"),"oracle"),t=Lt("sha256").update(u.resolve(e)).digest("hex").slice(0,16);return{vault:u.join(e,"vault.json"),policy:u.join(e,"signer-policy.json"),policyKey:u.join(e,"policy-integrity-key"),policyAnchor:u.join(r,`signer-policy-${t}.high-water`),ledger:u.join(e,"signer-ledger.json"),ledgerAnchor:u.join(r,`signer-ledger-${t}.high-water`),executionOutbox:u.join(e,"signer-execution-outbox.json"),cexOrders:u.join(e,"cex-orders.json"),cexOrdersAnchor:u.join(r,`cex-orders-${t}.high-water`),token:u.join(e,"signer-token"),lock:u.join(r,`signer-${t}.lock`),workflowLedger:u.join(e,"workflow-events.jsonl")}}function Pt(){return process.env.ORACLE_CONFIG_DIR||Oe.join($t(),".config","oracle")}function I(){let e=ke(Oe.join(Pt(),"signer")),r=K.existsSync(e.vault),t=K.existsSync(e.lock),o=r?t?"disarmed":"armed-owner-confirmed":"inert-no-key";return{vaultExists:r,policyConfigured:K.existsSync(e.policy),armed:r&&!t,disarmed:t,capabilities:{swap:o,bridge:o},autonomous:!1,note:"Keys stay on this machine. Exact confirmation is required before any broadcast."}}var Cd=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}}}]);Ne();import _e from"node:fs";import Vt from"node:path";var Ht=new Set(["openrouter","openai","anthropic","xai","deepseek","gemini","kimi","mistral","nous","qwen","glm","local","ollama","custom","anthropic-oauth","openai-codex","xai-oauth"]);function T(e){return String(e||"").trim()||void 0}function zt(e,{required:r=!1}={}){let t=T(e)?.toLowerCase();if(!t){if(r)throw new Error("model provider is required");return}if(!Ht.has(t))throw new Error(`unsupported provider: ${t}`);return t}function Ut(e,{required:r=!1}={}){let t=T(e);if(!t){if(r)throw new Error("model is required");return}if(t.includes("..")||t.startsWith("/")||!/^[a-zA-Z0-9._:/-]{1,200}$/.test(t))throw new Error("invalid model id");return t}function Wt(e){let r=T(e);if(!r||r.length>2048)throw new Error("invalid custom base URL");let t;try{t=new URL(r)}catch{throw new Error("invalid custom base URL")}let o=t.hostname.toLowerCase().replace(/^\[|\]$/g,""),i=o==="localhost"||o==="127.0.0.1"||o==="::1";if(t.protocol!=="https:"&&!(t.protocol==="http:"&&i)||t.username||t.password||t.search||t.hash)throw new Error("custom base URL must use HTTPS or loopback HTTP without credentials, query, or fragment");return t.toString().replace(/\/+$/,"")}function Ce({provider:e,model:r,baseUrl:t}={},{requireModel:o=!1}={}){let i=zt(e),n=Ut(r,{required:o});if(i==="custom")return{provider:i,...n?{model:n}:{},baseUrl:Wt(t)};if(T(t))throw new Error("baseUrl is only supported for the custom provider");return{...i?{provider:i}:{},...n?{model:n}:{}}}var Kt=new Set(["auto","standalone","hermes","remote","arch"]);function Jt(){return Vt.join(O(),"model.json")}function w(e){return String(e||"").trim()||void 0}function Gt(e={}){let r=w(e.backend)?.toLowerCase()||"auto",t=Ce({provider:e.provider,model:e.model,baseUrl:e.baseUrl},{requireModel:r==="standalone"}),o=w(e.apiKeyEnv),i=Number.parseInt(String(e.contextLength||""),10),n=Object.fromEntries(Object.entries(e.contextByModel||{}).filter(([,f])=>Number.isSafeInteger(f)&&f>0)),a=w(e.reasoningEffort),s=w(e.computeHost||e.remoteHost),c=w(e.computeUser||e.remoteUser),h=w(e.computePath||e.remotePath);if(!Kt.has(r))throw new Error(`unsupported backend: ${r}`);if(process.env.ORACLE_PUBLIC_DESKTOP==="1"&&["remote","arch"].includes(r))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(r==="remote"&&!s)throw new Error("remote backend requires computeHost");return{backend:r,...t,...o?{apiKeyEnv:o}:{},...Number.isFinite(i)&&i>0?{contextLength:i}:{},...Object.keys(n).length?{contextByModel:n}:{},...a?{reasoningEffort:a}:{},...s?{computeHost:s}:{},...c?{computeUser:c}:{},...h?{computePath:h}:{}}}function Re(){let e=Jt();if(!_e.existsSync(e))return null;try{return Gt(JSON.parse(_e.readFileSync(e,"utf8")))}catch{return null}}var Yt=new Set(["127.0.0.1","::1","localhost"]);function J({env:e=process.env,vault:r=null}={}){let t=r||I(),o=[];for(let[i,n]of Object.entries(E)){let a=(n.rpcEnv||[]).some(c=>String(e[c]||"").trim());if(n.readOnly===!0){o.push({key:i,chainId:n.chainId,name:n.name,family:"evm",status:"read-only",execute:!1,note:a?"rpc configured; reads only \u2014 no venue, no prepare, no signer":"public RPC reads only \u2014 no venue, no prepare, no signer"});continue}let s="prepare";n.evm?a&&(s="live"):s="unavailable",o.push({key:i,chainId:n.chainId,name:n.name,family:"evm",status:s,execute:!!(t.vaultExists&&t.armed&&!t.disarmed),note:a?"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 Xt({env:e=process.env,model:r=Re(),vault:t=I(),signerReachable:o=!1,quote:i=null,reviewAvailable:n=!1,receiptAvailable:a=!1}={}){let s=[],c=(l,C,$e,Pe=null)=>s.push({id:l,status:C,detail:$e,fix:Pe}),h=(()=>{let[l,C]=process.versions.node.split(".").map(Number);return l>20||l===20&&C>=19})();c("node",h?"ok":"fail",`node ${process.versions.node}`,h?null:"install node >= 20.19"),r?r.backend==="hermes"?c("model","warn","backend=hermes (opt-in attach)","oracle model --backend standalone"):c("model","ok",`${r.backend||"auto"} ${r.provider||""} ${r.model||""}`.trim()):c("model","fail","no model.json","oracle setup model"),t.vaultExists?t.disarmed?c("vault","warn","vault present, DISARMED","oracle signer (re-arm after confirm)"):c("vault",t.armed?"ok":"warn",t.armed?"present, armed":"present, not armed"):c("vault","fail","no local vault","oracle sign init");let f=e.ORACLE_SIGNER_HOST||"127.0.0.1";if(Yt.has(f)?c("signer",o?"ok":"warn",o?`loopback ${f}:${e.ORACLE_SIGNER_PORT||9462}`:"loopback signer not reachable",o?null:"oracle signer"):c("signer","fail",`signer host ${f} is not loopback`,"unset ORACLE_SIGNER_HOST"),!i)c("quote","warn","quote not probed",null);else if(i.ok){let l=String(i.detail||"net quote returned");c("quote","ok",l.length>140?`${l.slice(0,140)}\u2026`:l)}else c("quote","warn",i.detail||"quote unavailable","check network / oracle data serve");c("review",n?"ok":"fail",n?"sign-time review renders decoded action, policy hits, approval deltas":"sign-time review module missing from this build",n?null:"reinstall @oracle-agent/oracle (src/control/sign-time-review.mjs)"),c("receipt",a?"ok":"fail",a?"oracle receipt verifies on-chain state (SUCCESS/FAIL/UNKNOWN, finality-pinned)":"verified-receipt observer missing from this build",a?null:"reinstall @oracle-agent/oracle (src/desk/observe-receipt.mjs)");let Le=s.some(l=>l.status==="fail"),G=s.filter(l=>l.status==="ok").length;return{ok:!Le,checks:s,firstRunScore:{ok:G,total:s.length,label:`${G}/${s.length} first-run hops green`},venues:J({env:e,vault:t})}}async function Zd(e=process.env){let r=e.ORACLE_SIGNER_HOST||"127.0.0.1",t=e.ORACLE_SIGNER_PORT||9462;try{return(await fetch(`http://${r}:${t}/status`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function N(e){let r=String(e??"?").replace(/[^\w.$-]/g,"");return r.length>12?`${r.slice(0,12)}...`:r||"?"}function Zt(e,r=120){let t=String(e??"").replace(/[\u0000-\u001f\u007f-\u009f]/g," ").replace(/\s+/g," ").trim();return t?t.length>r?`${t.slice(0,r)}...`:t:"quote failed"}async function Qd(){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 t=(await e.json())?.pairs?.[0];return!t?.chainId||!t?.priceUsd?{ok:!1,detail:"no pair"}:{ok:!0,detail:`${N(t.chainId)} ${N(t.baseToken?.symbol)}/${N(t.quoteToken?.symbol)} $${N(t.priceUsd)}`}}catch(e){return{ok:!1,detail:Zt(e instanceof Error?e.message:"quote failed")}}}var ef={name:"venues",summary:"label every shipped venue live / prepare / unavailable",group:"read",usage:"oracle venues [--json]",async run(e){let r=e.argv.includes("--json"),t=J();if(r)return process.stdout.write(`${JSON.stringify({venues:t},null,2)}
1
+ var d=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(o){throw t=[o],o}};var E,Z=d(()=>{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},elysium:{chainId:1339,name:"Elysium",rpcEnv:["ELYSIUM_RPC_URL"],evm:!0,readOnly:!0}}});var sr,Q=d(()=>{Z();sr=new Map(Object.values(E).map(e=>[e.chainId,e]))});var ee=d(()=>{});import{AsyncLocalStorage as Je}from"node:async_hooks";var Rn,re=d(()=>{Rn=new Je});var ne=d(()=>{});var zn,Un,Wn,Vn,Jn,Kn,Gn,Yn,M=d(()=>{re();ne();zn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,Un=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,Wn=AbortSignal.prototype.throwIfAborted,Vn=EventTarget.prototype.addEventListener,Jn=EventTarget.prototype.removeEventListener,Kn=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null,Gn=64*1024,Yn=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024})});var Po,Bo,A=d(()=>{Po=300*1e3,Bo=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});import{wordlists as Ls}from"ethers";var F=d(()=>{});var xa,Sa,Aa,Se=d(()=>{xa=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),Sa=Object.freeze(["read","simulate"]),Aa=1440*60});var La,Ra,$a,Ae=d(()=>{Se();La=Object.freeze(["privkey","wif","xprv","seed"]),Ra=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}]),$a=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});import T from"node:fs";import Ft from"node:os";import m from"node:path";import{fileURLToPath as qt}from"node:url";function Ne(){return process.env.ORACLE_FAKE_HOME||Ft.homedir()}function zt(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function N(){return zt()?process.env.ORACLE_CONFIG_DIR||m.join(Ne(),".config","oracle"):m.join(Ne(),".config","oracle")}function Ut(){return m.join(N(),"desk.json")}function Wt(){return m.join(N(),"env")}function p({force:e=!1}={}){if(p._done&&!e)return p._result||null;p._done=!0;let r={},t=(i,n)=>{if(n==null)return;let a=String(n).trim();a&&(process.env[i]!=null&&String(process.env[i]).trim()!==""||(process.env[i]=a,r[i]=a))};try{let i=Wt();if(T.existsSync(i))for(let n of T.readFileSync(i,"utf8").split(/\r?\n/)){let a=n.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!a||a[2].startsWith("#"))continue;let s=a[2];(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),t(a[1],s)}}catch{}try{let i=Ut();if(T.existsSync(i)){let n=JSON.parse(T.readFileSync(i,"utf8"));n&&typeof n=="object"&&(t("ORACLE_DESK_URL",n.deskUrl||n.dataUrl||n.url),t("ORACLE_DATA_URL",n.dataUrl||n.deskUrl||n.url),t("ORACLE_API_URL",n.apiUrl||n.dataUrl||n.deskUrl),t("ORACLE_PUBLIC_URL",n.publicUrl||n.deskUrl||n.dataUrl),t("ORACLE_EXEC_URL",n.execUrl),t("MAD_DESK_URL",n.deskUrl||n.dataUrl))}}catch{}let o=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return o&&(t("ORACLE_DESK_URL",o),t("ORACLE_DATA_URL",o),t("ORACLE_API_URL",o),t("ORACLE_PUBLIC_URL",o),t("MAD_DESK_URL",o)),p._result=Object.keys(r).length?r:null,p._result}var Ht,nf,Ce=d(()=>{Ht=m.dirname(qt(import.meta.url)),nf=m.resolve(Ht,"../..");try{p()}catch{}});Q();import G from"node:fs";import Te from"node:path";import{homedir as Dt}from"node:os";function R(e){let r=e?.transactionHash||e?.hash||e?.txid||null;return r?{happened:!0,hash:String(r),note:null}:{happened:!1,hash:null,note:"no transaction hash \u2014 the action did not succeed"}}import l from"node:path";import Bt from"node:os";import{createHash as Mt,randomBytes as ed}from"node:crypto";import{Interface as K,keccak256 as rd}from"ethers";import{Transaction as od}from"@scure/btc-signer";import{ed25519 as sd}from"@noble/curves/ed25519.js";import{Interface as qe,MaxUint256 as Hr,isAddress as zr,keccak256 as Ur,toUtf8Bytes as Wr}from"ethers";import{Interface as je,isAddress as Ar}from"ethers";import{isAddress as gr}from"ethers";var Or=new je(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as Fe,isAddress as Cr}from"ethers";var $r=new Fe(["function approve(address spender,uint256 amount) returns (bool)"]),Pr=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var Xr=new qe(["function approve(address spender,uint256 amount) returns (bool)"]);ee();import{readFileSync as tn,readdirSync as rn,existsSync as He}from"node:fs";import{dirname as ze,join as g}from"node:path";import{fileURLToPath as Ue}from"node:url";var y=ze(Ue(import.meta.url));function We(){let e=[g(y,"descriptors"),g(y,"clear-sign","descriptors"),g(y,"..","clear-sign","descriptors"),g(y,"..","..","clear-sign","descriptors"),g(y,"..","..","..","clear-sign","descriptors")];for(let r of e)if(He(r))return r;return e[0]}var an=We();var cn=(1n<<256n)-1n;import{Address as gn,NETWORK as yn,OutScript as bn,RawTx as En,SigHash as xn,TEST_NETWORK as Sn,Transaction as An}from"@scure/btc-signer";import{createHash as Ve}from"node:crypto";import{base58 as On}from"@scure/base";import{getCompiledTransactionMessageDecoder as Nn}from"@solana/transaction-messages";var te=e=>Ve("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),Cn=new Map([[te("route"),{name:"route",prefixBytes:0}],[te("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);M();var so=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var uo=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"}),fo=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 wo="0x"+"00".repeat(32);var Ye=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),Eo=Object.freeze(Ye.map(e=>e[0]));import{base58 as bs}from"@scure/base";import{Interface as ue}from"ethers";A();import{TypedDataEncoder as pi,getAddress as mi}from"ethers";A();import{TypedDataEncoder as qo,getAddress as Ho,isAddress as zo}from"ethers";var Ze=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Qe=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"}]});M();import{TypedDataEncoder as ei,getAddress as ti,isAddress as ri}from"ethers";var Vo=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});A();var et=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),li=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var tt=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"}]}),ui=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var gi=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var ot=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var $i=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});var it=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"}}),Pi=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),Bi=new ue(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Mi=new ue(["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"]),Di=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"}});var st=Object.freeze([...ot]),ji=Object.freeze({...it});import{ed25519 as ts}from"@noble/curves/ed25519.js";import{base58 as ns}from"@scure/base";import{RawTx as is,SigHash as ss,Transaction as as}from"@scure/btc-signer";import{Transaction as ls,keccak256 as us,verifyTypedData as ds}from"ethers";import{encode as Hi}from"@msgpack/msgpack";import{keccak256 as Ui,verifyTypedData as Wi}from"ethers";var Vi=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),Ji=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as Fs,constants as ft,fchmodSync as qs,fsyncSync as Hs,lstatSync as zs,mkdirSync as Us,openSync as Ws,readFileSync as Vs,renameSync as Js,rmSync as Ks,writeFileSync as Gs}from"node:fs";F();import v from"node:fs";var Ms=v.constants.O_CREAT|v.constants.O_EXCL|v.constants.O_WRONLY|(v.constants.O_NOFOLLOW||0);var ea=ft.O_NOFOLLOW??0;F();import{wordlists as na}from"ethers";var fe=64*1024;var ia=32*1024;var wt=["schemaVersion","buildVersion","recordType","execution","custody"],ca=[...wt,"recordHash"];var la=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 ht=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),xe=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"]),ma=new Set(xe);var St=64*1024*1024;Ae();var W=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Da=Object.freeze(Object.fromEntries(W.map((e,r)=>[e,Object.freeze(r+1<W.length?[W[r+1]]:[])])));var At=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 It=Object.freeze(["owner","operator","agent","viewer"]),kt=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),Ot=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),Sc=Object.freeze(["owner"]),Ac=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"}),vc=new Set(It),Ic=new Set(kt),kc=new Set(Object.values(Ot));var Tt=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"])}),Oc=Object.freeze(Object.fromEntries(Object.entries(Tt).map(([e,r])=>[e,Object.freeze([...r])])));var Nt=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),Ct=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),_t=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var _c=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),Lc=new Set(Nt),Rc=new Set(Ct),$c=new Set(_t);var Pc=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"]);var Bc=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 Hc=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var Kc=32*1024*1024;var Yc=Object.freeze({N:1<<17,r:8,p:1}),Xc=256*1024*1024,Zc=16*1024;var el=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 V}from"node:os";import{join as J}from"node:path";var ve=process.env.ORACLE_PUBLIC_DESKTOP==="1",Lt=ve?process.env.ORACLE_CONFIG_DIR||J(V(),".config","oracle"):J(V(),".config","oracle"),ol=ve?Lt:J(V(),".config","mad-desk");var ll="0".repeat(64),ul=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"});var dl=Promise.resolve();import{Wallet as vl}from"ethers";import{base58 as kl}from"@scure/base";import{ed25519 as Tl}from"@noble/curves/ed25519.js";import{NETWORK as Cl,TEST_NETWORK as _l,WIF as Ll,p2wpkh as Rl}from"@scure/btc-signer";import{pubECDSA as Pl}from"@scure/btc-signer/utils.js";var Dl=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),jl=Object.freeze(["binance","bybit","okx","coinbase"]),Fl=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),ql=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),Hl=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),zl=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),Ul=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),Wl=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),Vl=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),Jl=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),Kl=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"});var Pt=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}"]})}),ke=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"});var ou=256*1024;var Md=new K(["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"]),Dd=new K(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),jd=new K(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"]);function Oe(e){let r=process.env.ORACLE_SIGNER_STATE_DIR||l.join(process.env.XDG_STATE_HOME||l.join(Bt.homedir(),".local","state"),"oracle"),t=Mt("sha256").update(l.resolve(e)).digest("hex").slice(0,16);return{vault:l.join(e,"vault.json"),policy:l.join(e,"signer-policy.json"),policyKey:l.join(e,"policy-integrity-key"),policyAnchor:l.join(r,`signer-policy-${t}.high-water`),ledger:l.join(e,"signer-ledger.json"),ledgerAnchor:l.join(r,`signer-ledger-${t}.high-water`),executionOutbox:l.join(e,"signer-execution-outbox.json"),cexOrders:l.join(e,"cex-orders.json"),cexOrdersAnchor:l.join(r,`cex-orders-${t}.high-water`),token:l.join(e,"signer-token"),lock:l.join(r,`signer-${t}.lock`),workflowLedger:l.join(e,"workflow-events.jsonl")}}function jt(){return process.env.ORACLE_CONFIG_DIR||Te.join(Dt(),".config","oracle")}function O(){let e=Oe(Te.join(jt(),"signer")),r=G.existsSync(e.vault),t=G.existsSync(e.lock),o=r?t?"disarmed":"armed-owner-confirmed":"inert-no-key";return{vaultExists:r,policyConfigured:G.existsSync(e.policy),armed:r&&!t,disarmed:t,capabilities:{swap:o,bridge:o},autonomous:!1,note:"Keys stay on this machine. Exact confirmation is required before any broadcast."}}var Xd=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}}}]);Ce();import Le from"node:fs";import Yt from"node:path";var Vt=new Set(["openrouter","openai","anthropic","xai","deepseek","gemini","kimi","mistral","nous","qwen","glm","local","ollama","custom","anthropic-oauth","openai-codex","xai-oauth"]);function C(e){return String(e||"").trim()||void 0}function Jt(e,{required:r=!1}={}){let t=C(e)?.toLowerCase();if(!t){if(r)throw new Error("model provider is required");return}if(!Vt.has(t))throw new Error(`unsupported provider: ${t}`);return t}function Kt(e,{required:r=!1}={}){let t=C(e);if(!t){if(r)throw new Error("model is required");return}if(t.includes("..")||t.startsWith("/")||!/^[a-zA-Z0-9._:/-]{1,200}$/.test(t))throw new Error("invalid model id");return t}function Gt(e){let r=C(e);if(!r||r.length>2048)throw new Error("invalid custom base URL");let t;try{t=new URL(r)}catch{throw new Error("invalid custom base URL")}let o=t.hostname.toLowerCase().replace(/^\[|\]$/g,""),i=o==="localhost"||o==="127.0.0.1"||o==="::1";if(t.protocol!=="https:"&&!(t.protocol==="http:"&&i)||t.username||t.password||t.search||t.hash)throw new Error("custom base URL must use HTTPS or loopback HTTP without credentials, query, or fragment");return t.toString().replace(/\/+$/,"")}function _e({provider:e,model:r,baseUrl:t}={},{requireModel:o=!1}={}){let i=Jt(e),n=Kt(r,{required:o});if(i==="custom")return{provider:i,...n?{model:n}:{},baseUrl:Gt(t)};if(C(t))throw new Error("baseUrl is only supported for the custom provider");return{...i?{provider:i}:{},...n?{model:n}:{}}}var Xt=new Set(["auto","standalone","hermes","remote","arch"]);function Zt(){return Yt.join(N(),"model.json")}function w(e){return String(e||"").trim()||void 0}function Qt(e={}){let r=w(e.backend)?.toLowerCase()||"auto",t=_e({provider:e.provider,model:e.model,baseUrl:e.baseUrl},{requireModel:r==="standalone"}),o=w(e.apiKeyEnv),i=Number.parseInt(String(e.contextLength||""),10),n=Object.fromEntries(Object.entries(e.contextByModel||{}).filter(([,f])=>Number.isSafeInteger(f)&&f>0)),a=w(e.reasoningEffort),s=w(e.computeHost||e.remoteHost),c=w(e.computeUser||e.remoteUser),h=w(e.computePath||e.remotePath);if(!Xt.has(r))throw new Error(`unsupported backend: ${r}`);if(process.env.ORACLE_PUBLIC_DESKTOP==="1"&&["remote","arch"].includes(r))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(r==="remote"&&!s)throw new Error("remote backend requires computeHost");return{backend:r,...t,...o?{apiKeyEnv:o}:{},...Number.isFinite(i)&&i>0?{contextLength:i}:{},...Object.keys(n).length?{contextByModel:n}:{},...a?{reasoningEffort:a}:{},...s?{computeHost:s}:{},...c?{computeUser:c}:{},...h?{computePath:h}:{}}}function Re(){let e=Zt();if(!Le.existsSync(e))return null;try{return Qt(JSON.parse(Le.readFileSync(e,"utf8")))}catch{return null}}var er=new Set(["127.0.0.1","::1","localhost"]);function Y({env:e=process.env,vault:r=null}={}){let t=r||O(),o=[];for(let[i,n]of Object.entries(E)){let a=(n.rpcEnv||[]).some(c=>String(e[c]||"").trim());if(n.readOnly===!0){o.push({key:i,chainId:n.chainId,name:n.name,family:"evm",status:"read-only",execute:!1,note:a?"rpc configured; reads only \u2014 no venue, no prepare, no signer":"public RPC reads only \u2014 no venue, no prepare, no signer"});continue}let s="prepare";n.evm?a&&(s="live"):s="unavailable",o.push({key:i,chainId:n.chainId,name:n.name,family:"evm",status:s,execute:!!(t.vaultExists&&t.armed&&!t.disarmed),note:a?"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 tr({env:e=process.env,model:r=Re(),vault:t=O(),signerReachable:o=!1,quote:i=null,reviewAvailable:n=!1,receiptAvailable:a=!1}={}){let s=[],c=(u,L,Pe,Be=null)=>s.push({id:u,status:L,detail:Pe,fix:Be}),h=(()=>{let[u,L]=process.versions.node.split(".").map(Number);return u>20||u===20&&L>=19})();c("node",h?"ok":"fail",`node ${process.versions.node}`,h?null:"install node >= 20.19"),r?r.backend==="hermes"?c("model","warn","backend=hermes (opt-in attach)","oracle model --backend standalone"):c("model","ok",`${r.backend||"auto"} ${r.provider||""} ${r.model||""}`.trim()):c("model","fail","no model.json","oracle setup model"),t.vaultExists?t.disarmed?c("vault","warn","vault present, DISARMED","oracle signer (re-arm after confirm)"):c("vault",t.armed?"ok":"warn",t.armed?"present, armed":"present, not armed"):c("vault","fail","no local vault","oracle sign init");let f=e.ORACLE_SIGNER_HOST||"127.0.0.1";if(er.has(f)?c("signer",o?"ok":"warn",o?`loopback ${f}:${e.ORACLE_SIGNER_PORT||9462}`:"loopback signer not reachable",o?null:"oracle signer"):c("signer","fail",`signer host ${f} is not loopback`,"unset ORACLE_SIGNER_HOST"),!i)c("quote","warn","quote not probed",null);else if(i.ok){let u=String(i.detail||"net quote returned");c("quote","ok",u.length>140?`${u.slice(0,140)}\u2026`:u)}else c("quote","warn",i.detail||"quote unavailable","check network / oracle data serve");c("review",n?"ok":"fail",n?"sign-time review renders decoded action, policy hits, approval deltas":"sign-time review module missing from this build",n?null:"reinstall @oracle-agent/oracle (src/control/sign-time-review.mjs)"),c("receipt",a?"ok":"fail",a?"oracle receipt verifies on-chain state (SUCCESS/FAIL/UNKNOWN, finality-pinned)":"verified-receipt observer missing from this build",a?null:"reinstall @oracle-agent/oracle (src/desk/observe-receipt.mjs)");let $e=s.some(u=>u.status==="fail"),X=s.filter(u=>u.status==="ok").length;return{ok:!$e,checks:s,firstRunScore:{ok:X,total:s.length,label:`${X}/${s.length} first-run hops green`},venues:Y({env:e,vault:t})}}async function Ef(e=process.env){let r=e.ORACLE_SIGNER_HOST||"127.0.0.1",t=e.ORACLE_SIGNER_PORT||9462;try{return(await fetch(`http://${r}:${t}/status`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function _(e){let r=String(e??"?").replace(/[^\w.$-]/g,"");return r.length>12?`${r.slice(0,12)}...`:r||"?"}function rr(e,r=120){let t=String(e??"").replace(/[\u0000-\u001f\u007f-\u009f]/g," ").replace(/\s+/g," ").trim();return t?t.length>r?`${t.slice(0,r)}...`:t:"quote failed"}async function xf(){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 t=(await e.json())?.pairs?.[0];return!t?.chainId||!t?.priceUsd?{ok:!1,detail:"no pair"}:{ok:!0,detail:`${_(t.chainId)} ${_(t.baseToken?.symbol)}/${_(t.quoteToken?.symbol)} $${_(t.priceUsd)}`}}catch(e){return{ok:!1,detail:rr(e instanceof Error?e.message:"quote failed")}}}var Sf={name:"venues",summary:"label every shipped venue live / prepare / unavailable",group:"read",usage:"oracle venues [--json]",async run(e){let r=e.argv.includes("--json"),t=Y();if(r)return process.stdout.write(`${JSON.stringify({venues:t},null,2)}
2
2
  `),0;for(let o of t)process.stdout.write(`${o.status.padEnd(12)} ${o.key.padEnd(16)} ${o.name} exec=${o.execute?"local":"no"}
3
- `);return 0}};export{_ as classifyReceipt,ef as default,Zt as detailText,Xt as firstHourReport,Qd as probeQuote,Zd as probeSigner,N as symbol,I as vaultStatus};
3
+ `);return 0}};export{R as classifyReceipt,Sf as default,rr as detailText,tr as firstHourReport,xf as probeQuote,Ef as probeSigner,_ as symbol,O as vaultStatus};