@oracle-agent/oracle 0.35.42 → 0.35.43
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 +25 -24
- package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
- package/dist/bin/desk-server.mjs +27 -27
- package/dist/bin/oracle-data-mcp.mjs +18 -18
- package/dist/bin/oracle-gateway.mjs +44 -44
- package/dist/bin/oracle-launch-radar-shadow.mjs +6 -6
- package/dist/bin/oracle-public-server.mjs +5 -5
- package/dist/bin/oracle-route.mjs +16 -16
- package/dist/bin/oracle.mjs +12 -12
- package/dist/cli/commands/agent-session.mjs +27 -26
- package/dist/cli/commands/chat.mjs +245 -224
- package/dist/cli/commands/eval.mjs +181 -161
- package/dist/cli/commands/mint.mjs +11 -11
- package/dist/cli/commands/model.mjs +249 -228
- package/dist/cli/commands/sign.mjs +14 -14
- package/dist/cli/commands/signer.mjs +22 -22
- package/dist/cli/commands/swap.mjs +13 -13
- package/dist/cli/commands/venues.mjs +2 -2
- package/dist/data/desk-data.mjs +25 -25
- package/dist/index.mjs +46 -46
- package/dist/launch-radar/index.mjs +5 -5
- package/dist/local-signer/anvil-attestation-worker.mjs +1 -1
- package/dist/local-signer/index.mjs +3 -3
- package/dist/local-signer/runtime.mjs +19 -19
- package/dist/router/prepare-route.mjs +3 -3
- package/dist/task.mjs +2 -2
- package/dist/teams/index.mjs +6 -6
- package/dist/tui/standalone-client.mjs +115 -95
- 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/eval/benchmarks/evm-escrow-20260827.json +170 -0
- package/public/oracle-splash/eval/eval-story.css +722 -0
- package/public/oracle-splash/eval/eval-story.js +198 -0
- package/public/oracle-splash/eval/index.html +49 -11
- package/public/oracle-splash/eval/live-eval.js +546 -0
- 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 N,Gt,G=d(()=>{N={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}},Gt=new Map(Object.values(N).map(e=>[e.chainId,e]))});var X=d(()=>{});var hn,gn,yn,bn,En,xn,Sn,An,$=d(()=>{X();hn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,gn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,yn=AbortSignal.prototype.throwIfAborted,bn=EventTarget.prototype.addEventListener,En=EventTarget.prototype.removeEventListener,xn=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null,Sn=64*1024,An=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024})});import{wordlists as zi}from"ethers";var D=d(()=>{});var Is,ks,Os,pe=d(()=>{Is=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),ks=Object.freeze(["read","simulate"]),Os=1440*60});var Bs,Ds,js,me=d(()=>{pe();Bs=Object.freeze(["privkey","wif","xprv","seed"]),Ds=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}]),js=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});var ge=d(()=>{});import v from"node:fs";import _t from"node:os";import m from"node:path";import{fileURLToPath as Rt}from"node:url";function xe(){return process.env.ORACLE_FAKE_HOME||_t.homedir()}function $t(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function I(){return $t()?process.env.ORACLE_CONFIG_DIR||m.join(xe(),".config","oracle"):m.join(xe(),".config","oracle")}function Pt(){return m.join(I(),"desk.json")}function Bt(){return m.join(I(),"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=Bt();if(v.existsSync(i))for(let n of v.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=Pt();if(v.existsSync(i)){let n=JSON.parse(v.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 Lt,gd,Se=d(()=>{Lt=m.dirname(Rt(import.meta.url)),gd=m.resolve(Lt,"../..");try{p()}catch{}});G();import V from"node:fs";import Ee from"node:path";import{homedir as Nt}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 Ot from"node:os";import{createHash as Tt,randomBytes as wl}from"node:crypto";import{Interface as W,keccak256 as gl}from"ethers";import{Transaction as bl}from"@scure/btc-signer";import{ed25519 as xl}from"@noble/curves/ed25519.js";import{base58 as Ci}from"@scure/base";import{Interface as re}from"ethers";import{Interface as Le,MaxUint256 as _r,isAddress as Rr,keccak256 as Lr,toUtf8Bytes as $r}from"ethers";import{Interface as _e,isAddress as fr}from"ethers";import{isAddress as sr}from"ethers";var hr=new _e(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as Re,isAddress as br}from"ethers";var Ar=new Re(["function approve(address spender,uint256 amount) returns (bool)"]),vr=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var qr=new Le(["function approve(address spender,uint256 amount) returns (bool)"]);var Hr=300*1e3,zr=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})();import{Address as Jr,NETWORK as Gr,OutScript as Yr,RawTx as Xr,SigHash as Zr,TEST_NETWORK as Qr,Transaction as en}from"@scure/btc-signer";import{createHash as $e}from"node:crypto";import{base58 as on}from"@scure/base";import{getCompiledTransactionMessageDecoder as an}from"@solana/transaction-messages";var Y=e=>$e("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),cn=new Map([[Y("route"),{name:"route",prefixBytes:0}],[Y("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);$();var Ln=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var jn=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"}),Fn=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 Hn="0x"+"00".repeat(32);var Be=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),Kn=Object.freeze(Be.map(e=>e[0]));import{TypedDataEncoder as Io,getAddress as ko}from"ethers";import{TypedDataEncoder as Zn,getAddress as Qn,isAddress as eo}from"ethers";var je=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Fe=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"}]});$();import{TypedDataEncoder as fo,getAddress as po,isAddress as mo}from"ethers";var no=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});var qe=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),xo=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var Me=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"}]}),So=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var No=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var Ke=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var Vo=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 Je=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"}}),Ko=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),Jo=new re(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Go=new re(["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"]),Yo=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 Ge=Object.freeze([...Ke]),Xo=Object.freeze({...Je});import{ed25519 as pi}from"@noble/curves/ed25519.js";import{base58 as wi}from"@scure/base";import{RawTx as gi,SigHash as yi,Transaction as bi}from"@scure/btc-signer";import{Transaction as xi,keccak256 as Si,verifyTypedData as Ai}from"ethers";import{encode as ei}from"@msgpack/msgpack";import{keccak256 as ri,verifyTypedData as ni}from"ethers";var oi=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),ii=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as Vi,constants as Qe,fchmodSync as Ki,fsyncSync as Ji,lstatSync as Gi,mkdirSync as Yi,openSync as Xi,readFileSync as Zi,renameSync as Qi,rmSync as es,writeFileSync as ts}from"node:fs";D();var os=Qe.O_NOFOLLOW??0;D();import{wordlists as as}from"ethers";var ne=64*1024;var us=32*1024;var rt=["schemaVersion","buildVersion","recordType","execution","custody"],fs=[...rt,"recordHash"];var ps=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 nt=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),fe=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"]),ys=new Set(fe);var ut=64*1024*1024;me();var H=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Hs=Object.freeze(Object.fromEntries(H.map((e,r)=>[e,Object.freeze(r+1<H.length?[H[r+1]]:[])])));var lt=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 ft=Object.freeze(["owner","operator","agent","viewer"]),pt=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),mt=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),ka=Object.freeze(["owner"]),Oa=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"}),Ta=new Set(ft),Na=new Set(pt),Ca=new Set(Object.values(mt));var wt=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"])}),_a=Object.freeze(Object.fromEntries(Object.entries(wt).map(([e,r])=>[e,Object.freeze([...r])])));var ht=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),gt=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),yt=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var Pa=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),Ba=new Set(ht),Da=new Set(gt),ja=new Set(yt);var Fa=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 qa=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 Va=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var Za=32*1024*1024;var ec=Object.freeze({N:1<<17,r:8,p:1}),tc=256*1024*1024,rc=16*1024;var oc=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 z}from"node:os";import{join as U}from"node:path";var we=process.env.ORACLE_PUBLIC_DESKTOP==="1",bt=we?process.env.ORACLE_CONFIG_DIR||U(z(),".config","oracle"):U(z(),".config","oracle"),cc=we?bt:U(z(),".config","mad-desk");var pc="0".repeat(64),mc=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 wc=Promise.resolve();ge();import{readFileSync as kc,readdirSync as Oc,existsSync as Et}from"node:fs";import{dirname as xt,join as y}from"node:path";import{fileURLToPath as St}from"node:url";var b=xt(St(import.meta.url));function At(){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(Et(r))return r;return e[0]}var _c=At();var Rc=(1n<<256n)-1n;import{Wallet as Mc}from"ethers";import{base58 as zc}from"@scure/base";import{ed25519 as Wc}from"@noble/curves/ed25519.js";import{NETWORK as Kc,TEST_NETWORK as Jc,WIF as Gc,p2wpkh as Yc}from"@scure/btc-signer";import{pubECDSA as Zc}from"@scure/btc-signer/utils.js";var tu=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),ru=Object.freeze(["binance","bybit","okx","coinbase"]),nu=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),ou=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),iu=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),su=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),au=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),cu=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),uu=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),lu=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),du=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"});var kt=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}"]})}),ye=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"});var xu=256*1024;var Zl=new W(["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"]),Ql=new W(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),ed=new W(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"]);function be(e){let r=process.env.ORACLE_SIGNER_STATE_DIR||u.join(process.env.XDG_STATE_HOME||u.join(Ot.homedir(),".local","state"),"oracle"),t=Tt("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 Ct(){return process.env.ORACLE_CONFIG_DIR||Ee.join(Nt(),".config","oracle")}function A(){let e=be(Ee.join(Ct(),"signer")),r=V.existsSync(e.vault),t=V.existsSync(e.lock),o=r?t?"disarmed":"armed-owner-confirmed":"inert-no-key";return{vaultExists:r,policyConfigured:V.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 dd=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}}}]);Se();import ve from"node:fs";import Mt from"node:path";var Dt=new Set(["openrouter","openai","anthropic","xai","deepseek","gemini","kimi","mistral","nous","qwen","glm","local","ollama","custom","anthropic-oauth","openai-codex","xai-oauth"]);function k(e){return String(e||"").trim()||void 0}function jt(e,{required:r=!1}={}){let t=k(e)?.toLowerCase();if(!t){if(r)throw new Error("model provider is required");return}if(!Dt.has(t))throw new Error(`unsupported provider: ${t}`);return t}function Ft(e,{required:r=!1}={}){let t=k(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 qt(e){let r=k(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 Ae({provider:e,model:r,baseUrl:t}={},{requireModel:o=!1}={}){let i=jt(e),n=Ft(r,{required:o});if(i==="custom")return{provider:i,...n?{model:n}:{},baseUrl:qt(t)};if(k(t))throw new Error("baseUrl is only supported for the custom provider");return{...i?{provider:i}:{},...n?{model:n}:{}}}var Ht=new Set(["auto","standalone","hermes","remote","arch"]);function zt(){return Mt.join(I(),"model.json")}function w(e){return String(e||"").trim()||void 0}function Ut(e={}){let r=w(e.backend)?.toLowerCase()||"auto",t=Ae({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(!Ht.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 Ie(){let e=zt();if(!ve.existsSync(e))return null;try{return Ut(JSON.parse(ve.readFileSync(e,"utf8")))}catch{return null}}var Wt=new Set(["127.0.0.1","::1","localhost"]);function K({env:e=process.env,vault:r=null}={}){let t=r||A(),o=[];for(let[i,n]of Object.entries(N)){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 Vt({env:e=process.env,model:r=Ie(),vault:t=A(),signerReachable:o=!1,quote:i=null,reviewAvailable:n=!1,receiptAvailable:c=!1}={}){let s=[],a=(l,T,Oe,Te=null)=>s.push({id:l,status:T,detail:Oe,fix:Te}),h=(()=>{let[l,T]=process.versions.node.split(".").map(Number);return l>20||l===20&&T>=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(Wt.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 ke=s.some(l=>l.status==="fail"),J=s.filter(l=>l.status==="ok").length;return{ok:!ke,checks:s,firstRunScore:{ok:J,total:s.length,label:`${J}/${s.length} first-run hops green`},venues:K({env:e,vault:t})}}async function Ld(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 O(e){let r=String(e??"?").replace(/[^\w.$-]/g,"");return r.length>12?`${r.slice(0,12)}...`:r||"?"}function Kt(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 $d(){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:`${O(t.chainId)} ${O(t.baseToken?.symbol)}/${O(t.quoteToken?.symbol)} $${O(t.priceUsd)}`}}catch(e){return{ok:!1,detail:Kt(e instanceof Error?e.message:"quote failed")}}}var Pd={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=K();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 C,Yt,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}},Yt=new Map(Object.values(C).map(e=>[e.chainId,e]))});var zr,Ur,x=d(()=>{zr=300*1e3,Ur=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});var Z=d(()=>{});var gn,yn,bn,En,xn,Sn,An,vn,P=d(()=>{Z();gn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,yn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,bn=AbortSignal.prototype.throwIfAborted,En=EventTarget.prototype.addEventListener,xn=EventTarget.prototype.removeEventListener,Sn=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null,An=64*1024,vn=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024})});import{wordlists as Ui}from"ethers";var j=d(()=>{});var ks,Os,Ts,me=d(()=>{ks=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),Os=Object.freeze(["read","simulate"]),Ts=1440*60});var Ds,js,Fs,we=d(()=>{me();Ds=Object.freeze(["privkey","wif","xprv","seed"]),js=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}]),Fs=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});var ye=d(()=>{});import I from"node:fs";import Rt from"node:os";import m from"node:path";import{fileURLToPath as Lt}from"node:url";function Se(){return process.env.ORACLE_FAKE_HOME||Rt.homedir()}function Pt(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function k(){return Pt()?process.env.ORACLE_CONFIG_DIR||m.join(Se(),".config","oracle"):m.join(Se(),".config","oracle")}function Bt(){return m.join(k(),"desk.json")}function Dt(){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=Dt();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=Bt();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 $t,yd,Ae=d(()=>{$t=m.dirname(Lt(import.meta.url)),yd=m.resolve($t,"../..");try{p()}catch{}});Y();import K from"node:fs";import xe from"node:path";import{homedir as Ct}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 Tt from"node:os";import{createHash as Nt,randomBytes as hl}from"node:crypto";import{Interface as V,keccak256 as yl}from"ethers";import{Transaction as El}from"@scure/btc-signer";import{ed25519 as Sl}from"@noble/curves/ed25519.js";import{base58 as _i}from"@scure/base";import{Interface as ne}from"ethers";import{Interface as $e,MaxUint256 as Rr,isAddress as Lr,keccak256 as $r,toUtf8Bytes as Pr}from"ethers";import{Interface as Re,isAddress as pr}from"ethers";import{isAddress as ar}from"ethers";var gr=new Re(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as Le,isAddress as Er}from"ethers";var vr=new Le(["function approve(address spender,uint256 amount) returns (bool)"]),Ir=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var Mr=new $e(["function approve(address spender,uint256 amount) returns (bool)"]);x();import{Address as Gr,NETWORK as Yr,OutScript as Xr,RawTx as Zr,SigHash as Qr,TEST_NETWORK as en,Transaction as tn}from"@scure/btc-signer";import{createHash as Pe}from"node:crypto";import{base58 as sn}from"@scure/base";import{getCompiledTransactionMessageDecoder as cn}from"@solana/transaction-messages";var X=e=>Pe("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),un=new Map([[X("route"),{name:"route",prefixBytes:0}],[X("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);P();var $n=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var Fn=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"}),qn=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 zn="0x"+"00".repeat(32);var De=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),Jn=Object.freeze(De.map(e=>e[0]));import{TypedDataEncoder as ko,getAddress as Oo}from"ethers";x();import{TypedDataEncoder as Qn,getAddress as eo,isAddress as to}from"ethers";var Fe=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"}]});P();import{TypedDataEncoder as po,getAddress as mo,isAddress as wo}from"ethers";var oo=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});x();var Me=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),So=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var He=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"}]}),Ao=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var Co=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var Je=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var Ko=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 Ge=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"}}),Jo=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),Go=new ne(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Yo=new ne(["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"]),Xo=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 Ye=Object.freeze([...Je]),Zo=Object.freeze({...Ge});import{ed25519 as mi}from"@noble/curves/ed25519.js";import{base58 as hi}from"@scure/base";import{RawTx as yi,SigHash as bi,Transaction as Ei}from"@scure/btc-signer";import{Transaction as Si,keccak256 as Ai,verifyTypedData as vi}from"ethers";import{encode as ti}from"@msgpack/msgpack";import{keccak256 as ni,verifyTypedData as oi}from"ethers";var ii=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),si=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as Ki,constants as et,fchmodSync as Ji,fsyncSync as Gi,lstatSync as Yi,mkdirSync as Xi,openSync as Zi,readFileSync as Qi,renameSync as es,rmSync as ts,writeFileSync as rs}from"node:fs";j();var is=et.O_NOFOLLOW??0;j();import{wordlists as cs}from"ethers";var oe=64*1024;var ls=32*1024;var nt=["schemaVersion","buildVersion","recordType","execution","custody"],ps=[...nt,"recordHash"];var ms=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 ot=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),pe=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"]),bs=new Set(pe);var lt=64*1024*1024;we();var z=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),zs=Object.freeze(Object.fromEntries(z.map((e,r)=>[e,Object.freeze(r+1<z.length?[z[r+1]]:[])])));var dt=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 pt=Object.freeze(["owner","operator","agent","viewer"]),mt=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),wt=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),Oa=Object.freeze(["owner"]),Ta=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"}),Na=new Set(pt),Ca=new Set(mt),_a=new Set(Object.values(wt));var ht=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"])}),Ra=Object.freeze(Object.fromEntries(Object.entries(ht).map(([e,r])=>[e,Object.freeze([...r])])));var gt=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),yt=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),bt=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var Ba=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),Da=new Set(gt),ja=new Set(yt),Fa=new Set(bt);var qa=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 Ma=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 Ka=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var Qa=32*1024*1024;var tc=Object.freeze({N:1<<17,r:8,p:1}),rc=256*1024*1024,nc=16*1024;var ic=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 he=process.env.ORACLE_PUBLIC_DESKTOP==="1",Et=he?process.env.ORACLE_CONFIG_DIR||W(U(),".config","oracle"):W(U(),".config","oracle"),uc=he?Et:W(U(),".config","mad-desk");var mc="0".repeat(64),wc=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 hc=Promise.resolve();ye();import{readFileSync as Oc,readdirSync as Tc,existsSync as xt}from"node:fs";import{dirname as St,join as y}from"node:path";import{fileURLToPath as At}from"node:url";var b=St(At(import.meta.url));function vt(){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(xt(r))return r;return e[0]}var Rc=vt();var Lc=(1n<<256n)-1n;import{Wallet as Hc}from"ethers";import{base58 as Uc}from"@scure/base";import{ed25519 as Vc}from"@noble/curves/ed25519.js";import{NETWORK as Jc,TEST_NETWORK as Gc,WIF as Yc,p2wpkh as Xc}from"@scure/btc-signer";import{pubECDSA as Qc}from"@scure/btc-signer/utils.js";var ru=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),nu=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"}),iu=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),su=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),au=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),cu=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),uu=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}),du=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),fu=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"});var Ot=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}"]})}),be=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"});var Su=256*1024;var Ql=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"]),ed=new V(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),td=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 Ee(e){let r=process.env.ORACLE_SIGNER_STATE_DIR||u.join(process.env.XDG_STATE_HOME||u.join(Tt.homedir(),".local","state"),"oracle"),t=Nt("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||xe.join(Ct(),".config","oracle")}function v(){let e=Ee(xe.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 fd=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}}}]);Ae();import Ie from"node:fs";import Ht from"node:path";var jt=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 Ft(e,{required:r=!1}={}){let t=O(e)?.toLowerCase();if(!t){if(r)throw new Error("model provider is required");return}if(!jt.has(t))throw new Error(`unsupported provider: ${t}`);return t}function qt(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 Mt(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 ve({provider:e,model:r,baseUrl:t}={},{requireModel:o=!1}={}){let i=Ft(e),n=qt(r,{required:o});if(i==="custom")return{provider:i,...n?{model:n}:{},baseUrl:Mt(t)};if(O(t))throw new Error("baseUrl is only supported for the custom provider");return{...i?{provider:i}:{},...n?{model:n}:{}}}var zt=new Set(["auto","standalone","hermes","remote","arch"]);function Ut(){return Ht.join(k(),"model.json")}function w(e){return String(e||"").trim()||void 0}function Wt(e={}){let r=w(e.backend)?.toLowerCase()||"auto",t=ve({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(!zt.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 ke(){let e=Ut();if(!Ie.existsSync(e))return null;try{return Wt(JSON.parse(Ie.readFileSync(e,"utf8")))}catch{return null}}var Vt=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 Kt({env:e=process.env,model:r=ke(),vault:t=v(),signerReachable:o=!1,quote:i=null,reviewAvailable:n=!1,receiptAvailable:c=!1}={}){let s=[],a=(l,N,Te,Ne=null)=>s.push({id:l,status:N,detail:Te,fix:Ne}),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(Vt.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 Oe=s.some(l=>l.status==="fail"),G=s.filter(l=>l.status==="ok").length;return{ok:!Oe,checks:s,firstRunScore:{ok:G,total:s.length,label:`${G}/${s.length} first-run hops green`},venues:J({env:e,vault:t})}}async function $d(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 Jt(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 Pd(){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:Jt(e instanceof Error?e.message:"quote failed")}}}var Bd={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{_ as classifyReceipt,Bd as default,Jt as detailText,Kt as firstHourReport,Pd as probeQuote,$d as probeSigner,T as symbol,v as vaultStatus};
|