@oracle-agent/oracle 0.24.7 → 0.24.9

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 (51) hide show
  1. package/README.md +49 -45
  2. package/SECURITY.md +1 -1
  3. package/SETUP.md +16 -13
  4. package/dist/assets/profiles/_template/SOUL.md +2 -2
  5. package/dist/assets/profiles/oracle/SOUL.md +11 -13
  6. package/dist/assets/profiles/profile.schema.json +1 -1
  7. package/dist/assets/profiles/robinhood-agent/SOUL.md +5 -5
  8. package/dist/assets/skills/multi-venue-prepare-only-ranking/SKILL.md +2 -2
  9. package/dist/assets/skills/oracle-action-semantics/SKILL.md +5 -5
  10. package/dist/assets/skills/oracle-chat/SKILL.md +8 -8
  11. package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
  12. package/dist/assets/skills/oracle-receipts/SKILL.md +2 -2
  13. package/dist/bin/desk-server.mjs +80 -36
  14. package/dist/bin/oracle-data-mcp.mjs +51 -7
  15. package/dist/bin/oracle-gateway.mjs +13 -15
  16. package/dist/bin/oracle-init.mjs +9 -9
  17. package/dist/bin/oracle-public-server.mjs +48 -4
  18. package/dist/bin/oracle-route.mjs +66 -22
  19. package/dist/bin/oracle-scan.mjs +58 -14
  20. package/dist/cli/commands/chat.mjs +140 -96
  21. package/dist/cli/commands/doctor.mjs +6 -6
  22. package/dist/cli/commands/eval.mjs +17 -17
  23. package/dist/cli/commands/farm.mjs +72 -28
  24. package/dist/cli/commands/follow.mjs +61 -17
  25. package/dist/cli/commands/model.mjs +147 -103
  26. package/dist/cli/commands/receipt.mjs +3 -3
  27. package/dist/cli/commands/resolve.mjs +55 -11
  28. package/dist/cli/commands/setup.mjs +27 -27
  29. package/dist/cli/commands/sign.mjs +14 -13
  30. package/dist/cli/commands/signer.mjs +12 -17
  31. package/dist/cli/commands/strategy.mjs +50 -6
  32. package/dist/cli/commands/swap.mjs +72 -29
  33. package/dist/cli/commands/venues.mjs +3 -3
  34. package/dist/data/desk-data.mjs +78 -34
  35. package/dist/data/names.mjs +46 -2
  36. package/dist/data/providers/farming.mjs +46 -2
  37. package/dist/index.mjs +83 -39
  38. package/dist/local-signer/index.mjs +1 -1
  39. package/dist/router/index.mjs +46 -2
  40. package/dist/router/prepare-bridge.mjs +46 -2
  41. package/dist/scanner/index.mjs +48 -4
  42. package/dist/strategy/index.mjs +47 -3
  43. package/package.json +5 -3
  44. package/public/install.ps1 +1 -1
  45. package/public/install.sh +5 -4
  46. package/public/oracle-splash/_variants/ice.html +3 -3
  47. package/public/oracle-splash/_variants/ivory.html +3 -3
  48. package/public/oracle-splash/downloads/index.html +5 -5
  49. package/public/oracle-splash/index.html +7 -7
  50. package/public/oracle-splash/install.ps1 +1 -1
  51. package/public/oracle-splash/install.sh +5 -4
@@ -1,5 +1,5 @@
1
- var g={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}},M=new Map(Object.values(g).map(o=>[o.chainId,o]));function d(o){let n=o?.transactionHash||o?.hash||o?.txid||null;return n?{happened:!0,hash:String(n),note:null}:{happened:!1,hash:null,note:"no transaction hash \u2014 the action did not succeed"}}import{Interface as O,MaxUint256 as Ee,isAddress as Se,keccak256 as ve,toUtf8Bytes as ye}from"ethers";import{Interface as y,isAddress as ee}from"ethers";import{isAddress as z}from"ethers";var oe=new y(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as A,isAddress as se}from"ethers";var fe=new A(["function approve(address spender,uint256 amount) returns (bool)"]),pe=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var Ie=new O(["function approve(address spender,uint256 amount) returns (bool)"]);var _=new Set(["evm","evm-swap","evm-bridge","btc","sol"]),$e=Object.freeze({swap:5,bridge:5,perps:0,nft:0});var N=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"},"0x7b939232":{provider:"across-v3",action:"bridge",layout:"across-deposit-v3"}});var Pe=Object.freeze([..._]),Be=Object.freeze({...N});var Ye=Object.freeze({N:1<<17,r:8,p:1}),Xe=256*1024*1024,Ze=16*1024;import{homedir as m}from"node:os";import{join as h}from"node:path";var x=process.env.ORACLE_PUBLIC_DESKTOP==="1",I=x?process.env.ORACLE_CONFIG_DIR||h(m(),".config","oracle"):h(m(),".config","oracle"),tr=x?I:h(m(),".config","mad-desk");var sr="0".repeat(64),cr=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 ur=Promise.resolve();var jr=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_execute",description:"Broadcast one already-confirmed local artifact. Requires a one-use confirmationNonce from the local signer TTY confirm. Cannot mint confirmation itself.",parameters:{type:"object",properties:{artifact:{type:"object"},confirmationNonce:{type:"string",minLength:32,maxLength:128}},required:["artifact","confirmationNonce"],additionalProperties:!1}}},{type:"function",function:{name:"signer_disarm",description:"Global kill switch. Stops the local signer from broadcasting.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"receipt_report",description:"Receipt or it did not happen. Requires transactionHash/hash/txid.",parameters:{type:"object",properties:{receipt:{type:"object"},transactionHash:{type:"string"},hash:{type:"string"},txid:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"watch_create",description:"Create an alert-only watch. Never execute.",parameters:{type:"object",properties:{chain:{type:"string"},token:{type:"string"},condition:{type:"string"},note:{type:"string"}},required:["chain","token","condition"],additionalProperties:!1}}},{type:"function",function:{name:"watch_list",description:"List local alert-only watches.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"portfolio_snapshot",description:"How to read the one portfolio snapshot. knownUsd is incomplete if a provider is missing.",parameters:{type:"object",properties:{},additionalProperties:!1}}}]);import p from"node:fs";import k from"node:os";import u from"node:path";import{fileURLToPath as R}from"node:url";var L=u.dirname(R(import.meta.url)),Vr=u.resolve(L,"../..");function E(){return process.env.ORACLE_FAKE_HOME||k.homedir()}function $(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function w(){return $()?process.env.ORACLE_CONFIG_DIR||u.join(E(),".config","oracle"):u.join(E(),".config","oracle")}function P(){return u.join(w(),"desk.json")}function B(){return u.join(w(),"env")}function c({force:o=!1}={}){if(c._done&&!o)return c._result||null;c._done=!0;let n={},r=(t,e)=>{if(e==null)return;let i=String(e).trim();i&&(process.env[t]!=null&&String(process.env[t]).trim()!==""||(process.env[t]=i,n[t]=i))};try{let t=B();if(p.existsSync(t))for(let e of p.readFileSync(t,"utf8").split(/\r?\n/)){let i=e.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!i||i[2].startsWith("#"))continue;let s=i[2];(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),r(i[1],s)}}catch{}try{let t=P();if(p.existsSync(t)){let e=JSON.parse(p.readFileSync(t,"utf8"));e&&typeof e=="object"&&(r("ORACLE_DESK_URL",e.deskUrl||e.dataUrl||e.url),r("ORACLE_DATA_URL",e.dataUrl||e.deskUrl||e.url),r("ORACLE_API_URL",e.apiUrl||e.dataUrl||e.deskUrl),r("ORACLE_PUBLIC_URL",e.publicUrl||e.deskUrl||e.dataUrl),r("ORACLE_EXEC_URL",e.execUrl),r("MAD_DESK_URL",e.deskUrl||e.dataUrl))}}catch{}let a=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return a&&(r("ORACLE_DESK_URL",a),r("ORACLE_DATA_URL",a),r("ORACLE_API_URL",a),r("ORACLE_PUBLIC_URL",a),r("MAD_DESK_URL",a)),c._result=Object.keys(n).length?n:null,c._result}try{c()}catch{}var at={name:"receipt",summary:"say whether an on-chain action happened (hash or it did not)",group:"read",usage:"oracle receipt --hash <txid> | oracle receipt --json '<receipt>'",async run(o){let n=o.argv||[],r={},a=n.indexOf("--hash"),t=n.indexOf("--json");if(a>=0)r={transactionHash:n[a+1]};else if(t>=0)try{r=JSON.parse(n[t+1]||"{}")}catch(i){return process.stderr.write(`receipt: bad json: ${i.message}
2
- `),1}let e=d(r);return n.includes("--quiet")?process.stdout.write(`${JSON.stringify(e)}
1
+ var E={robinhood:{chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC"],evm:!0},ethereum:{chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],evm:!0},polygon:{chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],evm:!0},arbitrum:{chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],evm:!0},base:{chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],evm:!0},hyperevm:{chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],evm:!0},bsc:{chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],evm:!0},avalanche:{chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],evm:!0},optimism:{chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],evm:!0},abstract:{chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],evm:!0},stable:{chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],evm:!0}},W=new Map(Object.values(E).map(t=>[t.chainId,t]));function f(t){let o=t?.transactionHash||t?.hash||t?.txid||null;return o?{happened:!0,hash:String(o),note:null}:{happened:!1,hash:null,note:"no transaction hash \u2014 the action did not succeed"}}import{Transaction as Dt}from"@scure/btc-signer";import{ed25519 as Vt}from"@noble/curves/ed25519.js";import{base58 as Lr}from"@scure/base";import{Interface as _,MaxUint256 as Ie,isAddress as _e,keccak256 as Le,toUtf8Bytes as Ne}from"ethers";import{Interface as O,isAddress as ae}from"ethers";import{isAddress as ee}from"ethers";var fe=new O(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as I,isAddress as pe}from"ethers";var ge=new I(["function approve(address spender,uint256 amount) returns (bool)"]),Ee=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var Pe=new _(["function approve(address spender,uint256 amount) returns (bool)"]);var Fe=300*1e3,Me=(()=>{let t=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(t)&&t>0?t:1800*1e3})();import{Address as We,NETWORK as Ve,OutScript as Ge,RawTx as He,SigHash as ze,TEST_NETWORK as Je,Transaction as Ke}from"@scure/btc-signer";import{getCompiledTransactionMessageDecoder as Ye}from"@solana/transaction-messages";var T=new Set(["evm","evm-swap","evm-bridge","evm-nft","btc","sol"]);var fr=Object.freeze({swap:5,bridge:5,perps:0,nft:0,mint:0,transfer:0,approve:0});var R=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"},"0x7b939232":{provider:"across-v3",action:"bridge",layout:"across-deposit-v3"}}),lr=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"}});var C=Object.freeze([...T]),dr=Object.freeze({...R});import{ed25519 as hr}from"@noble/curves/ed25519.js";import{base58 as gr}from"@scure/base";import{RawTx as Sr,SigHash as xr,Transaction as yr}from"@scure/btc-signer";import{Transaction as vr}from"ethers";var Ur=Object.freeze({N:1<<17,r:8,p:1}),jr=256*1024*1024,Dr=16*1024;import{homedir as h}from"node:os";import{join as w}from"node:path";var x=process.env.ORACLE_PUBLIC_DESKTOP==="1",P=x?process.env.ORACLE_CONFIG_DIR||w(h(),".config","oracle"):w(h(),".config","oracle"),Hr=x?P:w(h(),".config","mad-desk");var Xr="0".repeat(64),Yr=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 Qr=Promise.resolve();import{Wallet as ct}from"ethers";import{base58 as ft}from"@scure/base";import{ed25519 as dt}from"@noble/curves/ed25519.js";import{NETWORK as mt,TEST_NETWORK as ht,WIF as wt,p2wpkh as gt}from"@scure/btc-signer";import{pubECDSA as St}from"@scure/btc-signer/utils.js";var dn=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_execute",description:"Broadcast one already-confirmed local artifact. Requires a one-use confirmationNonce from the local signer TTY confirm. Cannot mint confirmation itself.",parameters:{type:"object",properties:{artifact:{type:"object"},confirmationNonce:{type:"string",minLength:32,maxLength:128}},required:["artifact","confirmationNonce"],additionalProperties:!1}}},{type:"function",function:{name:"signer_disarm",description:"Global kill switch. Stops the local signer from broadcasting.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"receipt_report",description:"Receipt or it did not happen. Requires transactionHash/hash/txid.",parameters:{type:"object",properties:{receipt:{type:"object"},transactionHash:{type:"string"},hash:{type:"string"},txid:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"watch_create",description:"Create an alert-only watch. Never execute.",parameters:{type:"object",properties:{chain:{type:"string"},token:{type:"string"},condition:{type:"string"},note:{type:"string"}},required:["chain","token","condition"],additionalProperties:!1}}},{type:"function",function:{name:"watch_list",description:"List local alert-only watches.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"portfolio_snapshot",description:"How to read the one portfolio snapshot. knownUsd is incomplete if a provider is missing.",parameters:{type:"object",properties:{},additionalProperties:!1}}}]);import d from"node:fs";import F from"node:os";import u from"node:path";import{fileURLToPath as M}from"node:url";var q=u.dirname(M(import.meta.url)),En=u.resolve(q,"../..");function b(){return process.env.ORACLE_FAKE_HOME||F.homedir()}function U(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function g(){return U()?process.env.ORACLE_CONFIG_DIR||u.join(b(),".config","oracle"):u.join(b(),".config","oracle")}function j(){return u.join(g(),"desk.json")}function D(){return u.join(g(),"env")}function c({force:t=!1}={}){if(c._done&&!t)return c._result||null;c._done=!0;let o={},r=(n,e)=>{if(e==null)return;let i=String(e).trim();i&&(process.env[n]!=null&&String(process.env[n]).trim()!==""||(process.env[n]=i,o[n]=i))};try{let n=D();if(d.existsSync(n))for(let e of d.readFileSync(n,"utf8").split(/\r?\n/)){let i=e.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!i||i[2].startsWith("#"))continue;let s=i[2];(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),r(i[1],s)}}catch{}try{let n=j();if(d.existsSync(n)){let e=JSON.parse(d.readFileSync(n,"utf8"));e&&typeof e=="object"&&(r("ORACLE_DESK_URL",e.deskUrl||e.dataUrl||e.url),r("ORACLE_DATA_URL",e.dataUrl||e.deskUrl||e.url),r("ORACLE_API_URL",e.apiUrl||e.dataUrl||e.deskUrl),r("ORACLE_PUBLIC_URL",e.publicUrl||e.deskUrl||e.dataUrl),r("ORACLE_EXEC_URL",e.execUrl),r("MAD_DESK_URL",e.deskUrl||e.dataUrl))}}catch{}let a=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return a&&(r("ORACLE_DESK_URL",a),r("ORACLE_DATA_URL",a),r("ORACLE_API_URL",a),r("ORACLE_PUBLIC_URL",a),r("MAD_DESK_URL",a)),c._result=Object.keys(o).length?o:null,c._result}try{c()}catch{}var Bn={name:"receipt",summary:"say whether an on-chain action happened (hash or it did not)",group:"read",usage:"oracle receipt --hash <txid> | oracle receipt --json '<receipt>'",async run(t){let o=t.argv||[],r={},a=o.indexOf("--hash"),n=o.indexOf("--json");if(a>=0)r={transactionHash:o[a+1]};else if(n>=0)try{r=JSON.parse(o[n+1]||"{}")}catch(i){return process.stderr.write(`receipt: bad json: ${i.message}
2
+ `),1}let e=f(r);return o.includes("--quiet")?process.stdout.write(`${JSON.stringify(e)}
3
3
  `):e.happened?process.stdout.write(`happened ${e.hash}
4
4
  `):process.stdout.write(`did not happen ${e.note}
5
- `),e.happened?0:2}};export{at as default};
5
+ `),e.happened?0:2}};export{Bn as default};