@oracle-agent/oracle 0.35.43 → 0.35.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/agent-sessions.mjs +19 -19
  2. package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
  3. package/dist/bin/desk-server.mjs +28 -28
  4. package/dist/bin/oracle-data-mcp.mjs +19 -19
  5. package/dist/bin/oracle-gateway.mjs +42 -42
  6. package/dist/bin/oracle-investigate.mjs +5 -5
  7. package/dist/bin/oracle-launch-radar-shadow.mjs +6 -6
  8. package/dist/bin/oracle-mev-arb-shadow.mjs +6 -6
  9. package/dist/bin/oracle-mev-shadow.mjs +6 -6
  10. package/dist/bin/oracle-public-server.mjs +5 -5
  11. package/dist/bin/oracle-route.mjs +18 -18
  12. package/dist/bin/oracle-scan.mjs +11 -11
  13. package/dist/bin/oracle.mjs +12 -12
  14. package/dist/cli/commands/agent-session.mjs +21 -21
  15. package/dist/cli/commands/airdrop.mjs +10 -10
  16. package/dist/cli/commands/chat.mjs +218 -217
  17. package/dist/cli/commands/data.mjs +244 -8
  18. package/dist/cli/commands/doctor.mjs +5 -5
  19. package/dist/cli/commands/eval.mjs +157 -153
  20. package/dist/cli/commands/extension-policy.mjs +1 -1
  21. package/dist/cli/commands/farm.mjs +17 -17
  22. package/dist/cli/commands/fees.mjs +3 -3
  23. package/dist/cli/commands/follow.mjs +17 -17
  24. package/dist/cli/commands/mcp.mjs +6 -6
  25. package/dist/cli/commands/mint.mjs +10 -10
  26. package/dist/cli/commands/model.mjs +222 -221
  27. package/dist/cli/commands/quickstart.mjs +7 -7
  28. package/dist/cli/commands/receipt.mjs +8 -8
  29. package/dist/cli/commands/resolve.mjs +10 -10
  30. package/dist/cli/commands/sign.mjs +11 -11
  31. package/dist/cli/commands/signer.mjs +20 -20
  32. package/dist/cli/commands/snipe.mjs +11 -11
  33. package/dist/cli/commands/strategy.mjs +5 -5
  34. package/dist/cli/commands/swap.mjs +11 -11
  35. package/dist/cli/commands/venues.mjs +2 -2
  36. package/dist/data/desk-data.mjs +26 -26
  37. package/dist/data/names.mjs +3 -3
  38. package/dist/data/providers/farming.mjs +2 -2
  39. package/dist/data/providers/lp-destination-discovery.mjs +4 -4
  40. package/dist/index.mjs +44 -44
  41. package/dist/investigator/index.mjs +2 -2
  42. package/dist/launch-radar/index.mjs +5 -5
  43. package/dist/local-signer/anvil-attestation-worker.mjs +1 -1
  44. package/dist/local-signer/index.mjs +3 -3
  45. package/dist/local-signer/runtime.mjs +16 -16
  46. package/dist/nft/universal-mint-router.mjs +4 -4
  47. package/dist/notifications/index.mjs +7 -7
  48. package/dist/router/index.mjs +3 -3
  49. package/dist/router/prepare-bridge.mjs +2 -2
  50. package/dist/router/prepare-route.mjs +3 -3
  51. package/dist/scanner/index.mjs +4 -4
  52. package/dist/strategy/index.mjs +3 -3
  53. package/dist/tui/standalone-client.mjs +90 -88
  54. package/package.json +1 -1
  55. package/public/eval-report.json +347 -13
  56. package/public/oracle-splash/docs/browser-and-web/index.html +2 -2
  57. package/public/oracle-splash/docs/connectors/index.html +2 -2
  58. package/public/oracle-splash/docs/getting-started/index.html +2 -2
  59. package/public/oracle-splash/docs/index.html +3 -3
  60. package/public/oracle-splash/docs/reference/index.html +2 -2
  61. package/public/oracle-splash/docs/security/index.html +2 -2
  62. package/public/oracle-splash/docs/using-oracle/index.html +2 -2
  63. package/server.json +2 -2
@@ -1,2 +1,2 @@
1
- var ue=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(t=e(e=0)),t}catch(i){throw r=[i],i}};var _r,Rr,C=ue(()=>{_r=300*1e3,Rr=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});var Te=ue(()=>{});import jt from"node:fs";import{JsonRpcProvider as qt}from"ethers";import{Interface as ne,keccak256 as Bt}from"ethers";import{Transaction as nl}from"@scure/btc-signer";import{ed25519 as il}from"@noble/curves/ed25519.js";import{base58 as bi}from"@scure/base";import{Interface as we}from"ethers";import{Interface as He,MaxUint256 as Er,isAddress as xr,keccak256 as Sr,toUtf8Bytes as Ar}from"ethers";import{Interface as qe,isAddress as tr}from"ethers";import{isAddress as Gt}from"ethers";var ir=new qe(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as Me,isAddress as cr}from"ethers";var fr=new Me(["function approve(address spender,uint256 amount) returns (bool)"]),pr=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var Nr=new He(["function approve(address spender,uint256 amount) returns (bool)"]);C();import{Address as Dr,NETWORK as Fr,OutScript as jr,RawTx as qr,SigHash as Mr,TEST_NETWORK as Hr,Transaction as zr}from"@scure/btc-signer";import{createHash as ze}from"node:crypto";import{base58 as Jr}from"@scure/base";import{getCompiledTransactionMessageDecoder as Gr}from"@solana/transaction-messages";var le=e=>ze("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),Yr=new Map([[le("route"),{name:"route",prefixBytes:0}],[le("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);var on=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,an=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,sn=AbortSignal.prototype.throwIfAborted,cn=EventTarget.prototype.addEventListener,un=EventTarget.prototype.removeEventListener,ln=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null;var dn=64*1024,fn=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024});var Sn=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var On=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"}),Tn=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 _n="0x"+"00".repeat(32);var Ue=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),Bn=Object.freeze(Ue.map(e=>e[0]));import{TypedDataEncoder as mo,getAddress as wo}from"ethers";C();import{TypedDataEncoder as Mn,getAddress as Hn,isAddress as zn}from"ethers";var Je=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Ke=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 eo,getAddress as to,isAddress as ro}from"ethers";var Vn=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});C();var Ge=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),uo=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var Ye=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"}]}),lo=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var yo=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var rt=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var Po=Object.freeze({swap:5,bridge:5,perps:0,nft:0,mint:0,transfer:0,approve:0,delegate:0,identity:0,order:0,cancel:0,leverage:0,margin:0,approveBuilder:0,stake:0,unstake:0});var nt=Object.freeze({"0x04e45aaf":{provider:"uniswap-v3",action:"swap",layout:"router02-exact-input-single"},"0x414bf389":{provider:"uniswap-v3",action:"swap",layout:"swap-router-exact-input-single"},"0xc04b8d59":{provider:"uniswap-v3",action:"swap",layout:"exact-input-deadline"},"0xb858183f":{provider:"uniswap-v3",action:"swap",layout:"exact-input"},"0x5ae401dc":{provider:"uniswap-v3",action:"swap",layout:"multicall-deadline"},"0xa026383e":{provider:"aerodrome",action:"swap",layout:"aerodrome-exact-input-single"},"0x7b939232":{provider:"across-v3",action:"bridge",layout:"across-deposit-v3"}}),Bo=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),Do=new we(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Fo=new we(["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"]),jo=Object.freeze({"0xa0712d68":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0x1249c58b":{provider:"nft-mint",action:"mint",layout:"mint-no-args"},"0x2db11544":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xefef39a1":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xa6f2ae3a":{provider:"nft-mint",action:"mint",layout:"mint-no-args"}});var ot=Object.freeze([...rt]),qo=Object.freeze({...nt});import{ed25519 as ri}from"@noble/curves/ed25519.js";import{base58 as oi}from"@scure/base";import{RawTx as ai,SigHash as si,Transaction as ci}from"@scure/btc-signer";import{Transaction as li,keccak256 as di,verifyTypedData as fi}from"ethers";import{encode as zo}from"@msgpack/msgpack";import{keccak256 as Uo,verifyTypedData as Vo}from"ethers";var Jo=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),Ko=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as Pi,constants as ct,fchmodSync as Bi,fsyncSync as Di,lstatSync as Fi,mkdirSync as ji,openSync as qi,readFileSync as Mi,renameSync as Hi,rmSync as zi,writeFileSync as Wi}from"node:fs";import{wordlists as Ri}from"ethers";var Ji=ct.O_NOFOLLOW??0;import{wordlists as Yi}from"ethers";var he=64*1024;var Zi=32*1024;var dt=["schemaVersion","buildVersion","recordType","execution","custody"],ta=[...dt,"recordHash"];var ra=Object.freeze({signed:new Set(["workflow.signed","legacy.signed"]),submitted:new Set(["workflow.submitted","legacy.broadcast"]),finalized:new Set(["workflow.finalized"]),reorged:new Set(["workflow.reorged"]),orphaned:new Set(["workflow.orphaned"]),compensating:new Set(["workflow.compensating"]),compensated:new Set(["workflow.compensated"])});var ft=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),Ie=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"]),sa=new Set(Ie);var yt=64*1024*1024;var ma=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),wa=Object.freeze(["read","simulate"]);var ha=1440*60;var Ia=Object.freeze(["privkey","wif","xprv","seed"]);var ka=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}]),Oa=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"]);var Z=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),_a=Object.freeze(Object.fromEntries(Z.map((e,t)=>[e,Object.freeze(t+1<Z.length?[Z[t+1]]:[])])));var bt=Object.freeze({intent:"draft",quote_comparison:"draft",simulation:"draft",prepared:"checked",approval:"approval",signed:"signed",broadcast:"submitted",settlement:"finalized",balance_delta:"compensated",position:"compensated"});var xt=Object.freeze(["owner","operator","agent","viewer"]),St=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),At=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),ws=Object.freeze(["owner"]),hs=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"}),gs=new Set(xt),ys=new Set(St),bs=new Set(Object.values(At));var vt=Object.freeze({owner:Object.freeze(["tenant:read","tenant:manage","config:read","config:manage","policy:read","policy:manage","grant:read","grant:create","grant:update","grant:delete","grant:manage","workflow:read","workflow:create","workflow:update","workflow:delete","workflow:cancel","workflow:approve","trade:read","trade:prepare","receipt:read","receipt:export","audit:read","audit:export","telemetry:read","telemetry:create","telemetry:export","context:read","context:create","context:update","context:delete","context:manage","context:export","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:delete","lifecycle:manage","lifecycle:approve","lifecycle:export"]),operator:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","workflow:cancel","trade:read","trade:prepare","receipt:read","audit:read","telemetry:read","telemetry:create","context:read","context:create","context:update","context:delete","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:manage"]),agent:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","trade:read","trade:prepare","receipt:read","telemetry:create","context:read","context:create","context:update","lifecycle:read"]),viewer:Object.freeze(["tenant:read","config:read","grant:read","workflow:read","trade:read","receipt:read","audit:read","telemetry:read","context:read","lifecycle:read"])}),Es=Object.freeze(Object.fromEntries(Object.entries(vt).map(([e,t])=>[e,Object.freeze([...t])])));var It=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),kt=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),Ot=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var vs=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),Is=new Set(It),ks=new Set(kt),Os=new Set(Ot);var Ts=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 Ns=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 Ps=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var Ms=32*1024*1024;var zs=Object.freeze({N:1<<17,r:8,p:1}),Ws=256*1024*1024,Us=16*1024;var Js=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 Q}from"node:os";import{join as ee}from"node:path";var ke=process.env.ORACLE_PUBLIC_DESKTOP==="1",Tt=ke?process.env.ORACLE_CONFIG_DIR||ee(Q(),".config","oracle"):ee(Q(),".config","oracle"),Xs=ke?Tt:ee(Q(),".config","mad-desk");var rc="0".repeat(64),nc=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 oc=Promise.resolve();Te();import{readFileSync as wc,readdirSync as hc,existsSync as Nt}from"node:fs";import{dirname as Ct,join as x}from"node:path";import{fileURLToPath as _t}from"node:url";var S=Ct(_t(import.meta.url));function Rt(){let e=[x(S,"descriptors"),x(S,"clear-sign","descriptors"),x(S,"..","clear-sign","descriptors"),x(S,"..","..","clear-sign","descriptors"),x(S,"..","..","..","clear-sign","descriptors")];for(let t of e)if(Nt(t))return t;return e[0]}var Ec=Rt();var xc=(1n<<256n)-1n;import{Wallet as Cc}from"ethers";import{base58 as Rc}from"@scure/base";import{ed25519 as $c}from"@noble/curves/ed25519.js";import{NETWORK as Bc,TEST_NETWORK as Dc,WIF as Fc,p2wpkh as jc}from"@scure/btc-signer";import{pubECDSA as Mc}from"@scure/btc-signer/utils.js";var Wc=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),Uc=Object.freeze(["binance","bybit","okx","coinbase"]),Vc=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),Jc=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),Kc=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),Gc=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),Yc=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),Xc=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),Zc=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),Qc=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),eu=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"});var Pt=Object.freeze({binance:Object.freeze({create:["POST","/api/v3/order"],cancel:["DELETE","/api/v3/order"],status:["GET","/api/v3/order"]}),bybit:Object.freeze({create:["POST","/v5/order/create"],cancel:["POST","/v5/order/cancel"],status:["GET","/v5/order/realtime"]}),okx:Object.freeze({create:["POST","/api/v5/trade/order"],cancel:["POST","/api/v5/trade/cancel-order"],status:["GET","/api/v5/trade/order"]}),coinbase:Object.freeze({create:["POST","/orders"],cancel:["DELETE","/orders/{order_id}"],status:["GET","/orders/{order_id}"]})}),Ne=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"});var lu=256*1024;var u=new ne(["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"]),Ce=new ne(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),re=new ne(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"]);function c(e,t){let r=String(e||"").toLowerCase();if(!/^0x[0-9a-f]{40}$/.test(r))throw new Error(`signer: invalid ${t}`);return r}function _e(e,t){return Object.entries(e||{}).find(([r])=>r.toLowerCase()===t)?.[1]}function Dt(e,t){let r=e?.anvilQuote;if(!r||typeof r!="object"||Array.isArray(r))throw new Error("signer: exact prepared Anvil quote is required");if(!e?.artifact?.anvilQuote||JSON.stringify(e.artifact.anvilQuote)!==JSON.stringify(r))throw new Error("signer: exact prepared Anvil quote artifact mismatch");return Object.freeze(t==="buy"?{totalCostRaw:BigInt(r.totalCostRaw).toString(),baseCostRaw:BigInt(r.baseCostRaw).toString(),feeRaw:BigInt(r.feeRaw).toString(),protocolFeeRaw:BigInt(r.protocolFeeRaw).toString(),available:r.available===!0}:{netPayoutRaw:BigInt(r.netPayoutRaw).toString(),grossPayoutRaw:BigInt(r.grossPayoutRaw).toString(),feeRaw:BigInt(r.feeRaw).toString(),protocolFeeRaw:BigInt(r.protocolFeeRaw).toString()})}function Ft(e,t,r){if(e.preconditions?.exactQuoteConfirmed!==!0)throw new Error("signer: exact prepared Anvil quote confirmation required");let i=e.artifact,p=t==="buy"?[r.totalCostRaw,e.maxPaymentTokenAmountRaw,i?.maxPaymentTokenAmountRaw,e.exactQuoteTotalCostRaw,i?.exactQuoteTotalCostRaw,e.preconditions?.confirmedTotalCostRaw]:[r.netPayoutRaw,e.minPayoutRaw,i?.minPayoutRaw,e.exactQuoteNetPayoutRaw,i?.exactQuoteNetPayoutRaw,e.preconditions?.confirmedNetPayoutRaw],n;try{n=BigInt(p[0]);for(let g of p.slice(1))if(BigInt(g)!==n)throw new Error("mismatch")}catch{throw new Error(`signer: exact Anvil ${t} settlement limit mismatch`)}let d=i?.transactions;if(!Array.isArray(d)||d.length!==1)throw new Error("signer: exact Anvil action transaction required");let h=t==="buy"?"buySpecificNFT":"sellNFT",f;try{if(f=u.decodeFunctionData(h,d[0].data),u.encodeFunctionData(h,[f[0],f[1]]).toLowerCase()!==String(d[0].data).toLowerCase())throw new Error("non-canonical")}catch{throw new Error(`signer: exact Anvil ${t} calldata required`)}if(BigInt(f[0])!==BigInt(e.tokenId)||BigInt(f[1])!==n)throw new Error(`signer: exact Anvil ${t} calldata limit mismatch`);return n}async function l(e,t,r,i,p,n=[]){let d=await e.send("eth_call",[{to:t,data:r.encodeFunctionData(i,n)},p]);return r.decodeFunctionResult(i,d)[0]}async function Re(e,t,r,{nowMs:i=Date.now(),signerAddress:p}={}){if(t?.surface!=="evm-nft"||String(t?.provider).toLowerCase()!=="anvil-nft")return null;if(!e||typeof e.send!="function")throw new Error("signer: trusted RPC cannot attest Anvil market");let n=c(t.destination,"Anvil market"),d=c(t.contract,"Anvil collection"),h=c(t.paymentToken,"Anvil payment token"),f=BigInt(t.nativeSwapFeeWei),g=Number(t.paymentTokenDecimals),y=c(p,"Anvil signer identity"),Le=c(t.owner,"Anvil envelope owner");if(y!==Le)throw new Error("signer: Anvil signer identity mismatch");let m=BigInt(t.tokenId);if(m<0n)throw new Error("signer: invalid Anvil tokenId");let w=String(t.nftAction||"").toLowerCase();if(w!=="buy"&&w!=="sell")throw new Error("signer: unsupported Anvil NFT action");let R=Dt(t,w),L=Ft(t,w,R),A=t.anvilAttestation;if(!A||typeof A!="object"||Number(A.snapshotExpiresAtMs)<=Number(i))throw new Error("signer: fresh provider Anvil attestation required");let $=String(_e(r.anvilRuntimeCodeHashes,n)||"").toLowerCase();if(!/^0x[0-9a-f]{64}$/.test($)||$!==String(A.runtimeCodeHash||"").toLowerCase())throw new Error("signer: Anvil runtime is not reviewed by policy");let oe=_e(r.nftPaymentTokenCaps,h);if(!oe||Number(oe.decimals)!==g)throw new Error("signer: Anvil payment token decimals are not reviewed by policy");let ie=String(await e.send("eth_chainId",[])).toLowerCase();if(!/^0x(?:0|[1-9a-f][0-9a-f]*)$/.test(ie)||BigInt(ie)!==4663n)throw new Error("signer: trusted RPC Anvil chain mismatch");let v=String(await e.send("eth_blockNumber",[])).toLowerCase();if(!/^0x(?:0|[1-9a-f][0-9a-f]*)$/.test(v))throw new Error("signer: trusted RPC returned an invalid Anvil block number");let $e=BigInt(v),ae=await e.send("eth_getBlockByNumber",[v,!1]),P=String(ae?.hash||"").toLowerCase();if(String(ae?.number||"").toLowerCase()!==v||!/^0x[0-9a-f]{64}$/.test(P))throw new Error("signer: trusted RPC returned an invalid Anvil block attestation");let a=Object.freeze({blockHash:P,requireCanonical:!0}),B=String(await e.send("eth_getCode",[n,a])).toLowerCase();if(!/^0x[0-9a-f]+$/.test(B)||B==="0x")throw new Error("signer: Anvil market runtime is empty");let se=Bt(B).toLowerCase();if(se!==$)throw new Error("signer: Anvil market runtime mismatch with reviewed policy");let[Pe,Be,De]=await Promise.all([l(e,n,u,"collection",a),l(e,n,u,"token",a),l(e,n,u,"robinhoodSwapFeeWei",a)]),b=c(Pe,"live Anvil collection"),I=c(Be,"live Anvil payment token"),ce=BigInt(De).toString();if(b!==d)throw new Error("signer: live Anvil collection mismatch");if(I!==h)throw new Error("signer: live Anvil payment token mismatch");if(ce!==f.toString())throw new Error("signer: live Anvil native swap fee mismatch");let D=Number(await l(e,I,Ce,"decimals",a));if(!Number.isSafeInteger(D)||D!==g)throw new Error("signer: live Anvil payment token decimals mismatch");let F=c(await l(e,b,re,"ownerOf",a,[m]),"live Anvil token owner"),j=null,k=null,O=null,T=null,o;if(w==="buy"){let[q,M,H]=await Promise.all([l(e,n,u,"inventory",a,[m]),l(e,I,Ce,"allowance",a,[y,n]),e.send("eth_call",[{to:n,data:u.encodeFunctionData("quoteSpecificBuy",[m])},a])]);j=!!q,k=BigInt(M).toString();let s=u.decodeFunctionResult("quoteSpecificBuy",H);if(o=Object.freeze({totalCostRaw:BigInt(s[0]).toString(),baseCostRaw:BigInt(s[1]).toString(),feeRaw:BigInt(s[2]).toString(),protocolFeeRaw:BigInt(s[3]).toString(),available:!!s[4]}),JSON.stringify(o)!==JSON.stringify(R))throw new Error("signer: exact Anvil buy quote changed after preparation");if(F!==n)throw new Error("signer: exact Anvil token owner is not the market");if(!j)throw new Error("signer: exact Anvil token is not in market inventory");if(BigInt(k)!==BigInt(t.preconditions?.allowanceRaw))throw new Error("signer: live Anvil ERC20 allowance changed after preparation");if(BigInt(k)<L)throw new Error("signer: live Anvil ERC20 allowance is insufficient");if(!o.available)throw new Error("signer: exact Anvil buy quote is unavailable");if(BigInt(o.totalCostRaw)!==L)throw new Error("signer: live Anvil buy quote does not equal exact payment limit");if(BigInt(o.totalCostRaw)!==BigInt(o.baseCostRaw)+BigInt(o.feeRaw)+BigInt(o.protocolFeeRaw))throw new Error("signer: exact Anvil buy quote fee arithmetic mismatch")}else{let[q,M,H]=await Promise.all([l(e,b,re,"getApproved",a,[m]),l(e,b,re,"isApprovedForAll",a,[y,n]),e.send("eth_call",[{to:n,data:u.encodeFunctionData("quoteSellNFT")},a])]);O=c(q,"live Anvil token approval"),T=!!M;let s=u.decodeFunctionResult("quoteSellNFT",H);if(o=Object.freeze({netPayoutRaw:BigInt(s[0]).toString(),grossPayoutRaw:BigInt(s[1]).toString(),feeRaw:BigInt(s[2]).toString(),protocolFeeRaw:BigInt(s[3]).toString()}),JSON.stringify(o)!==JSON.stringify(R))throw new Error("signer: exact Anvil sell quote changed after preparation");if(F!==y)throw new Error("signer: exact Anvil token owner does not match signer");if(O!==n&&!T)throw new Error("signer: live Anvil NFT approval is insufficient");if(O!==c(t.preconditions?.approvedAddress,"prepared Anvil token approval")||T!==!!t.preconditions?.approvedForAll)throw new Error("signer: live Anvil NFT approval changed after preparation");if(BigInt(o.netPayoutRaw)!==L)throw new Error("signer: live Anvil sell quote does not equal exact payout limit");if(BigInt(o.netPayoutRaw)+BigInt(o.feeRaw)+BigInt(o.protocolFeeRaw)!==BigInt(o.grossPayoutRaw))throw new Error("signer: exact Anvil sell quote fee arithmetic mismatch")}return Object.freeze({source:"local-signer-trusted-rpc",chainId:4663,market:n,collection:b,paymentToken:I,paymentTokenDecimals:D,nativeSwapFeeWei:ce,signerAddress:y,nftAction:w,tokenId:m.toString(),tokenOwner:F,inventoryMember:j,allowanceRaw:k,approvedAddress:O,approvedForAll:T,quote:o,blockNumber:$e.toString(),blockHash:P,runtimeCodeHash:se,verifiedAtMs:Number(i)})}try{let e=JSON.parse(jt.readFileSync(0,"utf8")),t=new qt(e.rpcUrl,Number(e.chainId)),r=await Re(t,e.envelope,e.policy,{nowMs:Number(e.nowMs),signerAddress:e.signerAddress});process.stdout.write(JSON.stringify(r))}catch(e){process.stderr.write(`Anvil attestation failed: ${String(e?.message||e)}
1
+ var ue=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(t=e(e=0)),t}catch(i){throw r=[i],i}};var Lr,Rr,C=ue(()=>{Lr=300*1e3,Rr=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});var Te=ue(()=>{});import Mt from"node:fs";import{JsonRpcProvider as qt}from"ethers";import{Interface as ne,keccak256 as Dt}from"ethers";import{Transaction as ul}from"@scure/btc-signer";import{ed25519 as dl}from"@noble/curves/ed25519.js";import{base58 as Ii}from"@scure/base";import{Interface as we}from"ethers";import{Interface as He,MaxUint256 as xr,isAddress as Sr,keccak256 as Ar,toUtf8Bytes as vr}from"ethers";import{Interface as Me,isAddress as rr}from"ethers";import{isAddress as Yt}from"ethers";var sr=new Me(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as qe,isAddress as ur}from"ethers";var pr=new qe(["function approve(address spender,uint256 amount) returns (bool)"]),mr=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var Cr=new He(["function approve(address spender,uint256 amount) returns (bool)"]);C();import{Address as Fr,NETWORK as jr,OutScript as Mr,RawTx as qr,SigHash as Hr,TEST_NETWORK as zr,Transaction as Wr}from"@scure/btc-signer";import{createHash as ze}from"node:crypto";import{base58 as Kr}from"@scure/base";import{getCompiledTransactionMessageDecoder as Yr}from"@solana/transaction-messages";var le=e=>ze("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),Xr=new Map([[le("route"),{name:"route",prefixBytes:0}],[le("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);import{AsyncLocalStorage as We}from"node:async_hooks";var en=new We;var dn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,fn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,pn=AbortSignal.prototype.throwIfAborted,mn=EventTarget.prototype.addEventListener,wn=EventTarget.prototype.removeEventListener,hn=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null;var gn=64*1024,yn=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024});var Tn=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var Rn=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"}),$n=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 Dn="0x"+"00".repeat(32);var Ve=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),Hn=Object.freeze(Ve.map(e=>e[0]));import{TypedDataEncoder as Eo,getAddress as xo}from"ethers";C();import{TypedDataEncoder as Jn,getAddress as Kn,isAddress as Gn}from"ethers";var Ke=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Ge=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 so,getAddress as ao,isAddress as co}from"ethers";var Zn=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});C();var Ye=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),ho=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var Xe=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"}]}),go=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var vo=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var nt=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var qo=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 ot=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"}}),Ho=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),zo=new we(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Wo=new we(["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"]),Uo=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 it=Object.freeze([...nt]),Vo=Object.freeze({...ot});import{ed25519 as ci}from"@noble/curves/ed25519.js";import{base58 as li}from"@scure/base";import{RawTx as fi,SigHash as pi,Transaction as mi}from"@scure/btc-signer";import{Transaction as hi,keccak256 as gi,verifyTypedData as yi}from"ethers";import{encode as Go}from"@msgpack/msgpack";import{keccak256 as Xo,verifyTypedData as Zo}from"ethers";var Qo=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),ei=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as qi,constants as ut,fchmodSync as Hi,fsyncSync as zi,lstatSync as Wi,mkdirSync as Ui,openSync as Vi,readFileSync as Ji,renameSync as Ki,rmSync as Gi,writeFileSync as Yi}from"node:fs";import{wordlists as Fi}from"ethers";var Qi=ut.O_NOFOLLOW??0;import{wordlists as rs}from"ethers";var he=64*1024;var os=32*1024;var ft=["schemaVersion","buildVersion","recordType","execution","custody"],as=[...ft,"recordHash"];var cs=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 pt=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),Ie=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"]),ps=new Set(Ie);var bt=64*1024*1024;var Es=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),xs=Object.freeze(["read","simulate"]);var Ss=1440*60;var _s=Object.freeze(["privkey","wif","xprv","seed"]);var Ls=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}]),Rs=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"]);var Z=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Ds=Object.freeze(Object.fromEntries(Z.map((e,t)=>[e,Object.freeze(t+1<Z.length?[Z[t+1]]:[])])));var Et=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 St=Object.freeze(["owner","operator","agent","viewer"]),At=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),vt=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),xa=Object.freeze(["owner"]),Sa=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"}),Aa=new Set(St),va=new Set(At),Ia=new Set(Object.values(vt));var It=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"])}),ka=Object.freeze(Object.fromEntries(Object.entries(It).map(([e,t])=>[e,Object.freeze([...t])])));var kt=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),Ot=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),Tt=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var Ca=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),_a=new Set(kt),La=new Set(Ot),Ra=new Set(Tt);var $a=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 Pa=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 qa=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var Ja=32*1024*1024;var Ga=Object.freeze({N:1<<17,r:8,p:1}),Ya=256*1024*1024,Xa=16*1024;var Qa=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 Q}from"node:os";import{join as ee}from"node:path";var ke=process.env.ORACLE_PUBLIC_DESKTOP==="1",Nt=ke?process.env.ORACLE_CONFIG_DIR||ee(Q(),".config","oracle"):ee(Q(),".config","oracle"),nc=ke?Nt:ee(Q(),".config","mad-desk");var cc="0".repeat(64),uc=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 lc=Promise.resolve();Te();import{readFileSync as xc,readdirSync as Sc,existsSync as Ct}from"node:fs";import{dirname as _t,join as x}from"node:path";import{fileURLToPath as Lt}from"node:url";var S=_t(Lt(import.meta.url));function Rt(){let e=[x(S,"descriptors"),x(S,"clear-sign","descriptors"),x(S,"..","clear-sign","descriptors"),x(S,"..","..","clear-sign","descriptors"),x(S,"..","..","..","clear-sign","descriptors")];for(let t of e)if(Ct(t))return t;return e[0]}var kc=Rt();var Oc=(1n<<256n)-1n;import{Wallet as Bc}from"ethers";import{base58 as Fc}from"@scure/base";import{ed25519 as Mc}from"@noble/curves/ed25519.js";import{NETWORK as Hc,TEST_NETWORK as zc,WIF as Wc,p2wpkh as Uc}from"@scure/btc-signer";import{pubECDSA as Jc}from"@scure/btc-signer/utils.js";var Yc=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),Xc=Object.freeze(["binance","bybit","okx","coinbase"]),Zc=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),Qc=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),eu=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),tu=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),ru=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"]),ou=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),iu=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),su=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"});var Bt=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}"]})}),Ne=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 u=new ne(["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"]),Ce=new ne(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),re=new ne(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"]);function c(e,t){let r=String(e||"").toLowerCase();if(!/^0x[0-9a-f]{40}$/.test(r))throw new Error(`signer: invalid ${t}`);return r}function _e(e,t){return Object.entries(e||{}).find(([r])=>r.toLowerCase()===t)?.[1]}function Ft(e,t){let r=e?.anvilQuote;if(!r||typeof r!="object"||Array.isArray(r))throw new Error("signer: exact prepared Anvil quote is required");if(!e?.artifact?.anvilQuote||JSON.stringify(e.artifact.anvilQuote)!==JSON.stringify(r))throw new Error("signer: exact prepared Anvil quote artifact mismatch");return Object.freeze(t==="buy"?{totalCostRaw:BigInt(r.totalCostRaw).toString(),baseCostRaw:BigInt(r.baseCostRaw).toString(),feeRaw:BigInt(r.feeRaw).toString(),protocolFeeRaw:BigInt(r.protocolFeeRaw).toString(),available:r.available===!0}:{netPayoutRaw:BigInt(r.netPayoutRaw).toString(),grossPayoutRaw:BigInt(r.grossPayoutRaw).toString(),feeRaw:BigInt(r.feeRaw).toString(),protocolFeeRaw:BigInt(r.protocolFeeRaw).toString()})}function jt(e,t,r){if(e.preconditions?.exactQuoteConfirmed!==!0)throw new Error("signer: exact prepared Anvil quote confirmation required");let i=e.artifact,p=t==="buy"?[r.totalCostRaw,e.maxPaymentTokenAmountRaw,i?.maxPaymentTokenAmountRaw,e.exactQuoteTotalCostRaw,i?.exactQuoteTotalCostRaw,e.preconditions?.confirmedTotalCostRaw]:[r.netPayoutRaw,e.minPayoutRaw,i?.minPayoutRaw,e.exactQuoteNetPayoutRaw,i?.exactQuoteNetPayoutRaw,e.preconditions?.confirmedNetPayoutRaw],n;try{n=BigInt(p[0]);for(let g of p.slice(1))if(BigInt(g)!==n)throw new Error("mismatch")}catch{throw new Error(`signer: exact Anvil ${t} settlement limit mismatch`)}let d=i?.transactions;if(!Array.isArray(d)||d.length!==1)throw new Error("signer: exact Anvil action transaction required");let h=t==="buy"?"buySpecificNFT":"sellNFT",f;try{if(f=u.decodeFunctionData(h,d[0].data),u.encodeFunctionData(h,[f[0],f[1]]).toLowerCase()!==String(d[0].data).toLowerCase())throw new Error("non-canonical")}catch{throw new Error(`signer: exact Anvil ${t} calldata required`)}if(BigInt(f[0])!==BigInt(e.tokenId)||BigInt(f[1])!==n)throw new Error(`signer: exact Anvil ${t} calldata limit mismatch`);return n}async function l(e,t,r,i,p,n=[]){let d=await e.send("eth_call",[{to:t,data:r.encodeFunctionData(i,n)},p]);return r.decodeFunctionResult(i,d)[0]}async function Le(e,t,r,{nowMs:i=Date.now(),signerAddress:p}={}){if(t?.surface!=="evm-nft"||String(t?.provider).toLowerCase()!=="anvil-nft")return null;if(!e||typeof e.send!="function")throw new Error("signer: trusted RPC cannot attest Anvil market");let n=c(t.destination,"Anvil market"),d=c(t.contract,"Anvil collection"),h=c(t.paymentToken,"Anvil payment token"),f=BigInt(t.nativeSwapFeeWei),g=Number(t.paymentTokenDecimals),y=c(p,"Anvil signer identity"),Re=c(t.owner,"Anvil envelope owner");if(y!==Re)throw new Error("signer: Anvil signer identity mismatch");let m=BigInt(t.tokenId);if(m<0n)throw new Error("signer: invalid Anvil tokenId");let w=String(t.nftAction||"").toLowerCase();if(w!=="buy"&&w!=="sell")throw new Error("signer: unsupported Anvil NFT action");let L=Ft(t,w),R=jt(t,w,L),A=t.anvilAttestation;if(!A||typeof A!="object"||Number(A.snapshotExpiresAtMs)<=Number(i))throw new Error("signer: fresh provider Anvil attestation required");let $=String(_e(r.anvilRuntimeCodeHashes,n)||"").toLowerCase();if(!/^0x[0-9a-f]{64}$/.test($)||$!==String(A.runtimeCodeHash||"").toLowerCase())throw new Error("signer: Anvil runtime is not reviewed by policy");let oe=_e(r.nftPaymentTokenCaps,h);if(!oe||Number(oe.decimals)!==g)throw new Error("signer: Anvil payment token decimals are not reviewed by policy");let ie=String(await e.send("eth_chainId",[])).toLowerCase();if(!/^0x(?:0|[1-9a-f][0-9a-f]*)$/.test(ie)||BigInt(ie)!==4663n)throw new Error("signer: trusted RPC Anvil chain mismatch");let v=String(await e.send("eth_blockNumber",[])).toLowerCase();if(!/^0x(?:0|[1-9a-f][0-9a-f]*)$/.test(v))throw new Error("signer: trusted RPC returned an invalid Anvil block number");let $e=BigInt(v),se=await e.send("eth_getBlockByNumber",[v,!1]),P=String(se?.hash||"").toLowerCase();if(String(se?.number||"").toLowerCase()!==v||!/^0x[0-9a-f]{64}$/.test(P))throw new Error("signer: trusted RPC returned an invalid Anvil block attestation");let s=Object.freeze({blockHash:P,requireCanonical:!0}),B=String(await e.send("eth_getCode",[n,s])).toLowerCase();if(!/^0x[0-9a-f]+$/.test(B)||B==="0x")throw new Error("signer: Anvil market runtime is empty");let ae=Dt(B).toLowerCase();if(ae!==$)throw new Error("signer: Anvil market runtime mismatch with reviewed policy");let[Pe,Be,De]=await Promise.all([l(e,n,u,"collection",s),l(e,n,u,"token",s),l(e,n,u,"robinhoodSwapFeeWei",s)]),b=c(Pe,"live Anvil collection"),I=c(Be,"live Anvil payment token"),ce=BigInt(De).toString();if(b!==d)throw new Error("signer: live Anvil collection mismatch");if(I!==h)throw new Error("signer: live Anvil payment token mismatch");if(ce!==f.toString())throw new Error("signer: live Anvil native swap fee mismatch");let D=Number(await l(e,I,Ce,"decimals",s));if(!Number.isSafeInteger(D)||D!==g)throw new Error("signer: live Anvil payment token decimals mismatch");let F=c(await l(e,b,re,"ownerOf",s,[m]),"live Anvil token owner"),j=null,k=null,O=null,T=null,o;if(w==="buy"){let[M,q,H]=await Promise.all([l(e,n,u,"inventory",s,[m]),l(e,I,Ce,"allowance",s,[y,n]),e.send("eth_call",[{to:n,data:u.encodeFunctionData("quoteSpecificBuy",[m])},s])]);j=!!M,k=BigInt(q).toString();let a=u.decodeFunctionResult("quoteSpecificBuy",H);if(o=Object.freeze({totalCostRaw:BigInt(a[0]).toString(),baseCostRaw:BigInt(a[1]).toString(),feeRaw:BigInt(a[2]).toString(),protocolFeeRaw:BigInt(a[3]).toString(),available:!!a[4]}),JSON.stringify(o)!==JSON.stringify(L))throw new Error("signer: exact Anvil buy quote changed after preparation");if(F!==n)throw new Error("signer: exact Anvil token owner is not the market");if(!j)throw new Error("signer: exact Anvil token is not in market inventory");if(BigInt(k)!==BigInt(t.preconditions?.allowanceRaw))throw new Error("signer: live Anvil ERC20 allowance changed after preparation");if(BigInt(k)<R)throw new Error("signer: live Anvil ERC20 allowance is insufficient");if(!o.available)throw new Error("signer: exact Anvil buy quote is unavailable");if(BigInt(o.totalCostRaw)!==R)throw new Error("signer: live Anvil buy quote does not equal exact payment limit");if(BigInt(o.totalCostRaw)!==BigInt(o.baseCostRaw)+BigInt(o.feeRaw)+BigInt(o.protocolFeeRaw))throw new Error("signer: exact Anvil buy quote fee arithmetic mismatch")}else{let[M,q,H]=await Promise.all([l(e,b,re,"getApproved",s,[m]),l(e,b,re,"isApprovedForAll",s,[y,n]),e.send("eth_call",[{to:n,data:u.encodeFunctionData("quoteSellNFT")},s])]);O=c(M,"live Anvil token approval"),T=!!q;let a=u.decodeFunctionResult("quoteSellNFT",H);if(o=Object.freeze({netPayoutRaw:BigInt(a[0]).toString(),grossPayoutRaw:BigInt(a[1]).toString(),feeRaw:BigInt(a[2]).toString(),protocolFeeRaw:BigInt(a[3]).toString()}),JSON.stringify(o)!==JSON.stringify(L))throw new Error("signer: exact Anvil sell quote changed after preparation");if(F!==y)throw new Error("signer: exact Anvil token owner does not match signer");if(O!==n&&!T)throw new Error("signer: live Anvil NFT approval is insufficient");if(O!==c(t.preconditions?.approvedAddress,"prepared Anvil token approval")||T!==!!t.preconditions?.approvedForAll)throw new Error("signer: live Anvil NFT approval changed after preparation");if(BigInt(o.netPayoutRaw)!==R)throw new Error("signer: live Anvil sell quote does not equal exact payout limit");if(BigInt(o.netPayoutRaw)+BigInt(o.feeRaw)+BigInt(o.protocolFeeRaw)!==BigInt(o.grossPayoutRaw))throw new Error("signer: exact Anvil sell quote fee arithmetic mismatch")}return Object.freeze({source:"local-signer-trusted-rpc",chainId:4663,market:n,collection:b,paymentToken:I,paymentTokenDecimals:D,nativeSwapFeeWei:ce,signerAddress:y,nftAction:w,tokenId:m.toString(),tokenOwner:F,inventoryMember:j,allowanceRaw:k,approvedAddress:O,approvedForAll:T,quote:o,blockNumber:$e.toString(),blockHash:P,runtimeCodeHash:ae,verifiedAtMs:Number(i)})}try{let e=JSON.parse(Mt.readFileSync(0,"utf8")),t=new qt(e.rpcUrl,Number(e.chainId)),r=await Le(t,e.envelope,e.policy,{nowMs:Number(e.nowMs),signerAddress:e.signerAddress});process.stdout.write(JSON.stringify(r))}catch(e){process.stderr.write(`Anvil attestation failed: ${String(e?.message||e)}
2
2
  `),process.exitCode=1}