@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,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 C,Zt,Y=d(()=>{C={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}},Zt=new Map(Object.values(C).map(e=>[e.chainId,e]))});var Wr,Vr,x=d(()=>{Wr=300*1e3,Vr=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});import{AsyncLocalStorage as De}from"node:async_hooks";var mn,Z=d(()=>{mn=new De});var Q=d(()=>{});var vn,In,kn,On,Tn,Nn,Cn,_n,P=d(()=>{Z();Q();vn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,In=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,kn=AbortSignal.prototype.throwIfAborted,On=EventTarget.prototype.addEventListener,Tn=EventTarget.prototype.removeEventListener,Nn=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null,Cn=64*1024,_n=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024})});import{wordlists as Xi}from"ethers";var j=d(()=>{});var Ls,$s,Ps,we=d(()=>{Ls=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),$s=Object.freeze(["read","simulate"]),Ps=1440*60});var Us,Ws,Vs,he=d(()=>{we();Us=Object.freeze(["privkey","wif","xprv","seed"]),Ws=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}]),Vs=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});var be=d(()=>{});import I from"node:fs";import $t from"node:os";import m from"node:path";import{fileURLToPath as Pt}from"node:url";function Ae(){return process.env.ORACLE_FAKE_HOME||$t.homedir()}function Dt(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function k(){return Dt()?process.env.ORACLE_CONFIG_DIR||m.join(Ae(),".config","oracle"):m.join(Ae(),".config","oracle")}function jt(){return m.join(k(),"desk.json")}function Ft(){return m.join(k(),"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 c=String(n).trim();c&&(process.env[i]!=null&&String(process.env[i]).trim()!==""||(process.env[i]=c,r[i]=c))};try{let i=Ft();if(I.existsSync(i))for(let n of I.readFileSync(i,"utf8").split(/\r?\n/)){let c=n.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!c||c[2].startsWith("#"))continue;let s=c[2];(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),t(c[1],s)}}catch{}try{let i=jt();if(I.existsSync(i)){let n=JSON.parse(I.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 Bt,Id,ve=d(()=>{Bt=m.dirname(Pt(import.meta.url)),Id=m.resolve(Bt,"../..");try{p()}catch{}});Y();import K from"node:fs";import Se from"node:path";import{homedir as Rt}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 Ct from"node:os";import{createHash as _t,randomBytes as Al}from"node:crypto";import{Interface as V,keccak256 as Il}from"ethers";import{Transaction as Ol}from"@scure/btc-signer";import{ed25519 as Nl}from"@noble/curves/ed25519.js";import{base58 as ji}from"@scure/base";import{Interface as oe}from"ethers";import{Interface as Pe,MaxUint256 as $r,isAddress as Pr,keccak256 as Br,toUtf8Bytes as Dr}from"ethers";import{Interface as Le,isAddress as wr}from"ethers";import{isAddress as ur}from"ethers";var br=new Le(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as $e,isAddress as Sr}from"ethers";var kr=new $e(["function approve(address spender,uint256 amount) returns (bool)"]),Or=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var zr=new Pe(["function approve(address spender,uint256 amount) returns (bool)"]);x();import{Address as Xr,NETWORK as Zr,OutScript as Qr,RawTx as en,SigHash as tn,TEST_NETWORK as rn,Transaction as nn}from"@scure/btc-signer";import{createHash as Be}from"node:crypto";import{base58 as cn}from"@scure/base";import{getCompiledTransactionMessageDecoder as ln}from"@solana/transaction-messages";var X=e=>Be("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),dn=new Map([[X("route"),{name:"route",prefixBytes:0}],[X("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);P();var qn=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var Vn=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"}),Kn=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 Yn="0x"+"00".repeat(32);var Fe=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),to=Object.freeze(Fe.map(e=>e[0]));import{TypedDataEncoder as Lo,getAddress as $o}from"ethers";x();import{TypedDataEncoder as so,getAddress as ao,isAddress as co}from"ethers";var qe=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),He=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 Eo,getAddress as xo,isAddress as So}from"ethers";var fo=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});x();var ze=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),No=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var Ue=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"}]}),Co=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var Do=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var Ye=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var ei=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 Xe=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"}}),ti=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),ri=new oe(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),ni=new oe(["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"]),oi=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 Ze=Object.freeze([...Ye]),ii=Object.freeze({...Xe});import{ed25519 as xi}from"@noble/curves/ed25519.js";import{base58 as Ai}from"@scure/base";import{RawTx as Ii,SigHash as ki,Transaction as Oi}from"@scure/btc-signer";import{Transaction as Ni,keccak256 as Ci,verifyTypedData as _i}from"ethers";import{encode as ci}from"@msgpack/msgpack";import{keccak256 as li,verifyTypedData as di}from"ethers";var fi=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),pi=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as es,constants as rt,fchmodSync as ts,fsyncSync as rs,lstatSync as ns,mkdirSync as os,openSync as is,readFileSync as ss,renameSync as as,rmSync as cs,writeFileSync as us}from"node:fs";j();var fs=rt.O_NOFOLLOW??0;j();import{wordlists as ws}from"ethers";var ie=64*1024;var gs=32*1024;var it=["schemaVersion","buildVersion","recordType","execution","custody"],Es=[...it,"recordHash"];var xs=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 st=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),me=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"]),ks=new Set(me);var ft=64*1024*1024;he();var z=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Ys=Object.freeze(Object.fromEntries(z.map((e,r)=>[e,Object.freeze(r+1<z.length?[z[r+1]]:[])])));var pt=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 wt=Object.freeze(["owner","operator","agent","viewer"]),ht=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),gt=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),$a=Object.freeze(["owner"]),Pa=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"}),Ba=new Set(wt),Da=new Set(ht),ja=new Set(Object.values(gt));var yt=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"])}),Fa=Object.freeze(Object.fromEntries(Object.entries(yt).map(([e,r])=>[e,Object.freeze([...r])])));var bt=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),Et=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),xt=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var za=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),Ua=new Set(bt),Wa=new Set(Et),Va=new Set(xt);var Ka=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 Ja=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 ec=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var sc=32*1024*1024;var cc=Object.freeze({N:1<<17,r:8,p:1}),uc=256*1024*1024,lc=16*1024;var fc=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 ge=process.env.ORACLE_PUBLIC_DESKTOP==="1",St=ge?process.env.ORACLE_CONFIG_DIR||W(U(),".config","oracle"):W(U(),".config","oracle"),hc=ge?St:W(U(),".config","mad-desk");var xc="0".repeat(64),Sc=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 Ac=Promise.resolve();be();import{readFileSync as $c,readdirSync as Pc,existsSync as At}from"node:fs";import{dirname as vt,join as y}from"node:path";import{fileURLToPath as It}from"node:url";var b=vt(It(import.meta.url));function kt(){let e=[y(b,"descriptors"),y(b,"clear-sign","descriptors"),y(b,"..","clear-sign","descriptors"),y(b,"..","..","clear-sign","descriptors"),y(b,"..","..","..","clear-sign","descriptors")];for(let r of e)if(At(r))return r;return e[0]}var Fc=kt();var Mc=(1n<<256n)-1n;import{Wallet as Gc}from"ethers";import{base58 as Xc}from"@scure/base";import{ed25519 as Qc}from"@noble/curves/ed25519.js";import{NETWORK as tu,TEST_NETWORK as ru,WIF as nu,p2wpkh as ou}from"@scure/btc-signer";import{pubECDSA as su}from"@scure/btc-signer/utils.js";var uu=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),lu=Object.freeze(["binance","bybit","okx","coinbase"]),du=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),fu=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),pu=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),mu=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),wu=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),hu=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),gu=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),yu=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),bu=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"});var Nt=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}"]})}),Ee=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"});var Nu=256*1024;var sd=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"]),ad=new V(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),cd=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 xe(e){let r=process.env.ORACLE_SIGNER_STATE_DIR||u.join(process.env.XDG_STATE_HOME||u.join(Ct.homedir(),".local","state"),"oracle"),t=_t("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 Lt(){return process.env.ORACLE_CONFIG_DIR||Se.join(Rt(),".config","oracle")}function v(){let e=xe(Se.join(Lt(),"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 bd=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}}}]);ve();import ke from"node:fs";import Ut from"node:path";var Mt=new Set(["openrouter","openai","anthropic","xai","deepseek","gemini","kimi","mistral","nous","qwen","glm","local","ollama","custom","anthropic-oauth","openai-codex","xai-oauth"]);function O(e){return String(e||"").trim()||void 0}function qt(e,{required:r=!1}={}){let t=O(e)?.toLowerCase();if(!t){if(r)throw new Error("model provider is required");return}if(!Mt.has(t))throw new Error(`unsupported provider: ${t}`);return t}function Ht(e,{required:r=!1}={}){let t=O(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 zt(e){let r=O(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 Ie({provider:e,model:r,baseUrl:t}={},{requireModel:o=!1}={}){let i=qt(e),n=Ht(r,{required:o});if(i==="custom")return{provider:i,...n?{model:n}:{},baseUrl:zt(t)};if(O(t))throw new Error("baseUrl is only supported for the custom provider");return{...i?{provider:i}:{},...n?{model:n}:{}}}var Wt=new Set(["auto","standalone","hermes","remote","arch"]);function Vt(){return Ut.join(k(),"model.json")}function w(e){return String(e||"").trim()||void 0}function Kt(e={}){let r=w(e.backend)?.toLowerCase()||"auto",t=Ie({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)),c=w(e.reasoningEffort),s=w(e.computeHost||e.remoteHost),a=w(e.computeUser||e.remoteUser),h=w(e.computePath||e.remotePath);if(!Wt.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}:{},...c?{reasoningEffort:c}:{},...s?{computeHost:s}:{},...a?{computeUser:a}:{},...h?{computePath:h}:{}}}function Oe(){let e=Vt();if(!ke.existsSync(e))return null;try{return Kt(JSON.parse(ke.readFileSync(e,"utf8")))}catch{return null}}var Jt=new Set(["127.0.0.1","::1","localhost"]);function J({env:e=process.env,vault:r=null}={}){let t=r||v(),o=[];for(let[i,n]of Object.entries(C)){let c=(n.rpcEnv||[]).some(a=>String(e[a]||"").trim()),s="prepare";n.evm?c&&(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:c?"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 Gt({env:e=process.env,model:r=Oe(),vault:t=v(),signerReachable:o=!1,quote:i=null,reviewAvailable:n=!1,receiptAvailable:c=!1}={}){let s=[],a=(l,N,Ne,Ce=null)=>s.push({id:l,status:N,detail:Ne,fix:Ce}),h=(()=>{let[l,N]=process.versions.node.split(".").map(Number);return l>20||l===20&&N>=19})();a("node",h?"ok":"fail",`node ${process.versions.node}`,h?null:"install node >= 20.19"),r?r.backend==="hermes"?a("model","warn","backend=hermes (opt-in attach)","oracle model --backend standalone"):a("model","ok",`${r.backend||"auto"} ${r.provider||""} ${r.model||""}`.trim()):a("model","fail","no model.json","oracle setup model"),t.vaultExists?t.disarmed?a("vault","warn","vault present, DISARMED","oracle signer (re-arm after confirm)"):a("vault",t.armed?"ok":"warn",t.armed?"present, armed":"present, not armed"):a("vault","fail","no local vault","oracle sign init");let f=e.ORACLE_SIGNER_HOST||"127.0.0.1";if(Jt.has(f)?a("signer",o?"ok":"warn",o?`loopback ${f}:${e.ORACLE_SIGNER_PORT||9462}`:"loopback signer not reachable",o?null:"oracle signer"):a("signer","fail",`signer host ${f} is not loopback`,"unset ORACLE_SIGNER_HOST"),!i)a("quote","warn","quote not probed",null);else if(i.ok){let l=String(i.detail||"net quote returned");a("quote","ok",l.length>140?`${l.slice(0,140)}\u2026`:l)}else a("quote","warn",i.detail||"quote unavailable","check network / oracle data serve");a("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)"),a("receipt",c?"ok":"fail",c?"oracle receipt verifies on-chain state (SUCCESS/FAIL/UNKNOWN, finality-pinned)":"verified-receipt observer missing from this build",c?null:"reinstall @oracle-agent/oracle (src/desk/observe-receipt.mjs)");let Te=s.some(l=>l.status==="fail"),G=s.filter(l=>l.status==="ok").length;return{ok:!Te,checks:s,firstRunScore:{ok:G,total:s.length,label:`${G}/${s.length} first-run hops green`},venues:J({env:e,vault:t})}}async function qd(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 T(e){let r=String(e??"?").replace(/[^\w.$-]/g,"");return r.length>12?`${r.slice(0,12)}...`:r||"?"}function Yt(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 Hd(){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(t.chainId)} ${T(t.baseToken?.symbol)}/${T(t.quoteToken?.symbol)} $${T(t.priceUsd)}`}}catch(e){return{ok:!1,detail:Yt(e instanceof Error?e.message:"quote failed")}}}var zd={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 _,Qt,Y=d(()=>{_={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}},Qt=new Map(Object.values(_).map(e=>[e.chainId,e]))});var X=d(()=>{});import{AsyncLocalStorage as We}from"node:async_hooks";var kn,Q=d(()=>{kn=new We});var ee=d(()=>{});var Bn,Dn,jn,Fn,Mn,qn,Hn,zn,P=d(()=>{Q();ee();Bn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,Dn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,jn=AbortSignal.prototype.throwIfAborted,Fn=EventTarget.prototype.addEventListener,Mn=EventTarget.prototype.removeEventListener,qn=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null,Hn=64*1024,zn=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024})});var No,_o,x=d(()=>{No=300*1e3,_o=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});import{wordlists as ks}from"ethers";var j=d(()=>{});var ca,ua,la,Ee=d(()=>{ca=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),ua=Object.freeze(["read","simulate"]),la=1440*60});var ba,Ea,xa,xe=d(()=>{Ee();ba=Object.freeze(["privkey","wif","xprv","seed"]),Ea=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}]),xa=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});import I from"node:fs";import Pt from"node:os";import m from"node:path";import{fileURLToPath as Bt}from"node:url";function Oe(){return process.env.ORACLE_FAKE_HOME||Pt.homedir()}function jt(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function k(){return jt()?process.env.ORACLE_CONFIG_DIR||m.join(Oe(),".config","oracle"):m.join(Oe(),".config","oracle")}function Ft(){return m.join(k(),"desk.json")}function Mt(){return m.join(k(),"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 c=String(n).trim();c&&(process.env[i]!=null&&String(process.env[i]).trim()!==""||(process.env[i]=c,r[i]=c))};try{let i=Mt();if(I.existsSync(i))for(let n of I.readFileSync(i,"utf8").split(/\r?\n/)){let c=n.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!c||c[2].startsWith("#"))continue;let s=c[2];(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),t(c[1],s)}}catch{}try{let i=Ft();if(I.existsSync(i)){let n=JSON.parse(I.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 Dt,Ld,Te=d(()=>{Dt=m.dirname(Bt(import.meta.url)),Ld=m.resolve(Dt,"../..");try{p()}catch{}});Y();import K from"node:fs";import ke from"node:path";import{homedir as Lt}from"node:os";function C(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 Ct from"node:os";import{createHash as Rt,randomBytes as Ll}from"node:crypto";import{Interface as V,keccak256 as Pl}from"ethers";import{Transaction as Dl}from"@scure/btc-signer";import{ed25519 as Fl}from"@noble/curves/ed25519.js";import{Interface as Fe,MaxUint256 as Pr,isAddress as Br,keccak256 as Dr,toUtf8Bytes as jr}from"ethers";import{Interface as De,isAddress as hr}from"ethers";import{isAddress as lr}from"ethers";var Er=new De(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as je,isAddress as Ar}from"ethers";var Or=new je(["function approve(address spender,uint256 amount) returns (bool)"]),Tr=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var Ur=new Fe(["function approve(address spender,uint256 amount) returns (bool)"]);X();import{readFileSync as Jr,readdirSync as Gr,existsSync as Me}from"node:fs";import{dirname as qe,join as g}from"node:path";import{fileURLToPath as He}from"node:url";var y=qe(He(import.meta.url));function ze(){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 Qr=ze();var en=(1n<<256n)-1n;import{Address as ln,NETWORK as dn,OutScript as fn,RawTx as pn,SigHash as mn,TEST_NETWORK as wn,Transaction as hn}from"@scure/btc-signer";import{createHash as Ue}from"node:crypto";import{base58 as En}from"@scure/base";import{getCompiledTransactionMessageDecoder as Sn}from"@solana/transaction-messages";var Z=e=>Ue("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),An=new Map([[Z("route"),{name:"route",prefixBytes:0}],[Z("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);P();var Qn=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var oo=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"}),io=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 co="0x"+"00".repeat(32);var Ke=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),mo=Object.freeze(Ke.map(e=>e[0]));import{base58 as ps}from"@scure/base";import{Interface as ce}from"ethers";x();import{TypedDataEncoder as ai,getAddress as ci}from"ethers";x();import{TypedDataEncoder as Po,getAddress as Bo,isAddress as Do}from"ethers";var Ge=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Ye=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 Jo,getAddress as Go,isAddress as Yo}from"ethers";var Mo=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});x();var Xe=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),ni=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var Ze=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"}]}),oi=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var di=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var tt=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var Ti=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 rt=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"}}),Ni=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),_i=new ce(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Ci=new ce(["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"]),Ri=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 nt=Object.freeze([...tt]),Li=Object.freeze({...rt});import{ed25519 as Gi}from"@noble/curves/ed25519.js";import{base58 as Xi}from"@scure/base";import{RawTx as Qi,SigHash as es,Transaction as ts}from"@scure/btc-signer";import{Transaction as ns,keccak256 as os,verifyTypedData as is}from"ethers";import{encode as Bi}from"@msgpack/msgpack";import{keccak256 as ji,verifyTypedData as Fi}from"ethers";var Mi=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),qi=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as Ns,constants as at,fchmodSync as _s,fsyncSync as Cs,lstatSync as Rs,mkdirSync as Ls,openSync as $s,readFileSync as Ps,renameSync as Bs,rmSync as Ds,writeFileSync as js}from"node:fs";j();var qs=at.O_NOFOLLOW??0;j();import{wordlists as Us}from"ethers";var le=64*1024;var Vs=32*1024;var lt=["schemaVersion","buildVersion","recordType","execution","custody"],Gs=[...lt,"recordHash"];var Ys=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 dt=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),be=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"]),ta=new Set(be);var gt=64*1024*1024;xe();var z=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Ia=Object.freeze(Object.fromEntries(z.map((e,r)=>[e,Object.freeze(r+1<z.length?[z[r+1]]:[])])));var yt=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 Et=Object.freeze(["owner","operator","agent","viewer"]),xt=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),St=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),uc=Object.freeze(["owner"]),lc=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"}),dc=new Set(Et),fc=new Set(xt),pc=new Set(Object.values(St));var At=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"])}),mc=Object.freeze(Object.fromEntries(Object.entries(At).map(([e,r])=>[e,Object.freeze([...r])])));var vt=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),It=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),kt=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var yc=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),bc=new Set(vt),Ec=new Set(It),xc=new Set(kt);var Sc=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 Ac=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 Nc=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var Pc=32*1024*1024;var Dc=Object.freeze({N:1<<17,r:8,p:1}),jc=256*1024*1024,Fc=16*1024;var qc=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 Se=process.env.ORACLE_PUBLIC_DESKTOP==="1",Ot=Se?process.env.ORACLE_CONFIG_DIR||W(U(),".config","oracle"):W(U(),".config","oracle"),Wc=Se?Ot:W(U(),".config","mad-desk");var Yc="0".repeat(64),Xc=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 Zc=Promise.resolve();import{Wallet as cu}from"ethers";import{base58 as lu}from"@scure/base";import{ed25519 as fu}from"@noble/curves/ed25519.js";import{NETWORK as mu,TEST_NETWORK as wu,WIF as hu,p2wpkh as gu}from"@scure/btc-signer";import{pubECDSA as bu}from"@scure/btc-signer/utils.js";var Su=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),Au=Object.freeze(["binance","bybit","okx","coinbase"]),vu=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),Iu=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),ku=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),Ou=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),Tu=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),Nu=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),_u=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),Cu=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),Ru=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}"]})}),ve=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"});var Hu=256*1024;var pd=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"]),md=new V(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),wd=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 Ie(e){let r=process.env.ORACLE_SIGNER_STATE_DIR||u.join(process.env.XDG_STATE_HOME||u.join(Ct.homedir(),".local","state"),"oracle"),t=Rt("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 $t(){return process.env.ORACLE_CONFIG_DIR||ke.join(Lt(),".config","oracle")}function v(){let e=Ie(ke.join($t(),"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 Od=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}}}]);Te();import _e from"node:fs";import Wt from"node:path";var qt=new Set(["openrouter","openai","anthropic","xai","deepseek","gemini","kimi","mistral","nous","qwen","glm","local","ollama","custom","anthropic-oauth","openai-codex","xai-oauth"]);function O(e){return String(e||"").trim()||void 0}function Ht(e,{required:r=!1}={}){let t=O(e)?.toLowerCase();if(!t){if(r)throw new Error("model provider is required");return}if(!qt.has(t))throw new Error(`unsupported provider: ${t}`);return t}function zt(e,{required:r=!1}={}){let t=O(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 Ut(e){let r=O(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 Ne({provider:e,model:r,baseUrl:t}={},{requireModel:o=!1}={}){let i=Ht(e),n=zt(r,{required:o});if(i==="custom")return{provider:i,...n?{model:n}:{},baseUrl:Ut(t)};if(O(t))throw new Error("baseUrl is only supported for the custom provider");return{...i?{provider:i}:{},...n?{model:n}:{}}}var Vt=new Set(["auto","standalone","hermes","remote","arch"]);function Kt(){return Wt.join(k(),"model.json")}function w(e){return String(e||"").trim()||void 0}function Jt(e={}){let r=w(e.backend)?.toLowerCase()||"auto",t=Ne({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)),c=w(e.reasoningEffort),s=w(e.computeHost||e.remoteHost),a=w(e.computeUser||e.remoteUser),h=w(e.computePath||e.remotePath);if(!Vt.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}:{},...c?{reasoningEffort:c}:{},...s?{computeHost:s}:{},...a?{computeUser:a}:{},...h?{computePath:h}:{}}}function Ce(){let e=Kt();if(!_e.existsSync(e))return null;try{return Jt(JSON.parse(_e.readFileSync(e,"utf8")))}catch{return null}}var Gt=new Set(["127.0.0.1","::1","localhost"]);function J({env:e=process.env,vault:r=null}={}){let t=r||v(),o=[];for(let[i,n]of Object.entries(_)){let c=(n.rpcEnv||[]).some(a=>String(e[a]||"").trim()),s="prepare";n.evm?c&&(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:c?"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 Yt({env:e=process.env,model:r=Ce(),vault:t=v(),signerReachable:o=!1,quote:i=null,reviewAvailable:n=!1,receiptAvailable:c=!1}={}){let s=[],a=(l,N,Le,$e=null)=>s.push({id:l,status:N,detail:Le,fix:$e}),h=(()=>{let[l,N]=process.versions.node.split(".").map(Number);return l>20||l===20&&N>=19})();a("node",h?"ok":"fail",`node ${process.versions.node}`,h?null:"install node >= 20.19"),r?r.backend==="hermes"?a("model","warn","backend=hermes (opt-in attach)","oracle model --backend standalone"):a("model","ok",`${r.backend||"auto"} ${r.provider||""} ${r.model||""}`.trim()):a("model","fail","no model.json","oracle setup model"),t.vaultExists?t.disarmed?a("vault","warn","vault present, DISARMED","oracle signer (re-arm after confirm)"):a("vault",t.armed?"ok":"warn",t.armed?"present, armed":"present, not armed"):a("vault","fail","no local vault","oracle sign init");let f=e.ORACLE_SIGNER_HOST||"127.0.0.1";if(Gt.has(f)?a("signer",o?"ok":"warn",o?`loopback ${f}:${e.ORACLE_SIGNER_PORT||9462}`:"loopback signer not reachable",o?null:"oracle signer"):a("signer","fail",`signer host ${f} is not loopback`,"unset ORACLE_SIGNER_HOST"),!i)a("quote","warn","quote not probed",null);else if(i.ok){let l=String(i.detail||"net quote returned");a("quote","ok",l.length>140?`${l.slice(0,140)}\u2026`:l)}else a("quote","warn",i.detail||"quote unavailable","check network / oracle data serve");a("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)"),a("receipt",c?"ok":"fail",c?"oracle receipt verifies on-chain state (SUCCESS/FAIL/UNKNOWN, finality-pinned)":"verified-receipt observer missing from this build",c?null:"reinstall @oracle-agent/oracle (src/desk/observe-receipt.mjs)");let Re=s.some(l=>l.status==="fail"),G=s.filter(l=>l.status==="ok").length;return{ok:!Re,checks:s,firstRunScore:{ok:G,total:s.length,label:`${G}/${s.length} first-run hops green`},venues:J({env:e,vault:t})}}async function Gd(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 T(e){let r=String(e??"?").replace(/[^\w.$-]/g,"");return r.length>12?`${r.slice(0,12)}...`:r||"?"}function Xt(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 Yd(){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(t.chainId)} ${T(t.baseToken?.symbol)}/${T(t.quoteToken?.symbol)} $${T(t.priceUsd)}`}}catch(e){return{ok:!1,detail:Xt(e instanceof Error?e.message:"quote failed")}}}var Xd={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)}
|
|
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{
|
|
3
|
+
`);return 0}};export{C as classifyReceipt,Xd as default,Xt as detailText,Yt as firstHourReport,Yd as probeQuote,Gd as probeSigner,T as symbol,v as vaultStatus};
|