@oracle-agent/oracle 0.11.0 → 0.13.0

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 (487) hide show
  1. package/LICENSE +115 -201
  2. package/README.md +13 -516
  3. package/bin/oracle.mjs +19 -27
  4. package/package.json +15 -98
  5. package/CONTRIBUTING.md +0 -98
  6. package/SECURITY.md +0 -89
  7. package/SETUP.md +0 -381
  8. package/artifacts/inscription/oracle-was-here-preview.png +0 -0
  9. package/artifacts/inscription/oracle-was-here.svg +0 -1
  10. package/artifacts/specialist-packs/oracle-full-crypto.json +0 -295
  11. package/bin/desk-server.mjs +0 -440
  12. package/bin/oracle-data-mcp.mjs +0 -1019
  13. package/bin/oracle-init.mjs +0 -496
  14. package/bin/oracle-public-server.mjs +0 -36
  15. package/bin/oracle-route.mjs +0 -254
  16. package/bin/oracle-scan.mjs +0 -192
  17. package/bin/oracle-upgrade.mjs +0 -42
  18. package/docs/adding-a-chain.md +0 -229
  19. package/docs/architecture.md +0 -138
  20. package/docs/cli.md +0 -47
  21. package/docs/connectors.md +0 -13
  22. package/docs/oracle-pack-standard.md +0 -29
  23. package/docs/profiles.md +0 -151
  24. package/docs/public-surface.md +0 -133
  25. package/examples/add-a-chain.mjs +0 -65
  26. package/examples/oracle-pack-template.mjs +0 -38
  27. package/examples/research-a-token.mjs +0 -70
  28. package/plugins/oracle-owner-gate/__init__.py +0 -227
  29. package/plugins/oracle-owner-gate/plugin.yaml +0 -9
  30. package/profiles/_template/SOUL.md +0 -54
  31. package/profiles/_template/profile.json +0 -22
  32. package/profiles/bitcoin-agent/SOUL.md +0 -31
  33. package/profiles/bitcoin-agent/profile.json +0 -32
  34. package/profiles/hyperliquid-agent/SOUL.md +0 -34
  35. package/profiles/hyperliquid-agent/profile.json +0 -37
  36. package/profiles/oracle/SOUL.md +0 -107
  37. package/profiles/oracle/profile.json +0 -39
  38. package/profiles/polymarket-agent/SOUL.md +0 -35
  39. package/profiles/polymarket-agent/profile.json +0 -34
  40. package/profiles/profile.schema.json +0 -90
  41. package/profiles/protocol-builder/SOUL.md +0 -57
  42. package/profiles/protocol-builder/profile.json +0 -39
  43. package/profiles/robinhood-agent/SOUL.md +0 -53
  44. package/profiles/robinhood-agent/profile.json +0 -40
  45. package/profiles/solana-agent/SOUL.md +0 -37
  46. package/profiles/solana-agent/profile.json +0 -37
  47. package/profiles/stable-agent/SOUL.md +0 -43
  48. package/profiles/stable-agent/profile.json +0 -37
  49. package/protocols/templates/safe-erc20/SECURITY.md +0 -16
  50. package/protocols/templates/safe-erc20/foundry.toml +0 -12
  51. package/protocols/templates/safe-erc20/remappings.txt +0 -2
  52. package/protocols/templates/safe-erc20/src/SafeERC20.sol +0 -53
  53. package/protocols/templates/safe-erc20/test/SafeERC20.t.sol +0 -72
  54. package/public/agent-connect/app.js +0 -84
  55. package/public/agent-connect/index.html +0 -83
  56. package/public/agent-connect/styles.css +0 -70
  57. package/public/index.html +0 -12
  58. package/public/oracle-console/app.js +0 -272
  59. package/public/oracle-console/bitcoin-wallets.js +0 -206
  60. package/public/oracle-console/index.html +0 -91
  61. package/public/oracle-console/styles.css +0 -239
  62. package/public/oracle-splash/assets/cli-chain-hyperliquid.jpg +0 -0
  63. package/public/oracle-splash/assets/hero/orb.avif +0 -0
  64. package/public/oracle-splash/assets/hero/orb.webm +0 -0
  65. package/public/oracle-splash/assets/llms/claude.svg +0 -1
  66. package/public/oracle-splash/assets/llms/codex-icon.svg +0 -1
  67. package/public/oracle-splash/assets/llms/codex.svg +0 -1
  68. package/public/oracle-splash/assets/llms/cursor-icon.svg +0 -12
  69. package/public/oracle-splash/assets/llms/cursor.svg +0 -17
  70. package/public/oracle-splash/assets/llms/deepseek.svg +0 -1
  71. package/public/oracle-splash/assets/llms/gemini-icon.svg +0 -1
  72. package/public/oracle-splash/assets/llms/gemini.svg +0 -1
  73. package/public/oracle-splash/assets/llms/grok.svg +0 -8
  74. package/public/oracle-splash/assets/llms/hermes.png +0 -0
  75. package/public/oracle-splash/assets/llms/kimi-icon.svg +0 -1
  76. package/public/oracle-splash/assets/llms/kimi.svg +0 -1
  77. package/public/oracle-splash/assets/llms/manus.svg +0 -18
  78. package/public/oracle-splash/assets/llms/openclaw.svg +0 -22
  79. package/public/oracle-splash/assets/llms/perplexity.svg +0 -1
  80. package/public/oracle-splash/assets/llms/qwen.svg +0 -1
  81. package/public/oracle-splash/assets/llms/windsurf.svg +0 -1
  82. package/public/oracle-splash/assets/protocols/abcdex.png +0 -0
  83. package/public/oracle-splash/assets/protocols/across.png +0 -0
  84. package/public/oracle-splash/assets/protocols/aerodrome.png +0 -0
  85. package/public/oracle-splash/assets/protocols/balancer.png +0 -0
  86. package/public/oracle-splash/assets/protocols/cowswap.png +0 -0
  87. package/public/oracle-splash/assets/protocols/curve.png +0 -0
  88. package/public/oracle-splash/assets/protocols/dreamcash.png +0 -0
  89. package/public/oracle-splash/assets/protocols/felix.png +0 -0
  90. package/public/oracle-splash/assets/protocols/gmx.png +0 -0
  91. package/public/oracle-splash/assets/protocols/hyena.png +0 -0
  92. package/public/oracle-splash/assets/protocols/hyperbeat.png +0 -0
  93. package/public/oracle-splash/assets/protocols/hyperliquid.png +0 -0
  94. package/public/oracle-splash/assets/protocols/hyperswap.png +0 -0
  95. package/public/oracle-splash/assets/protocols/jupiter.png +0 -0
  96. package/public/oracle-splash/assets/protocols/kinetiq.png +0 -0
  97. package/public/oracle-splash/assets/protocols/lfj.png +0 -0
  98. package/public/oracle-splash/assets/protocols/lifi.png +0 -0
  99. package/public/oracle-splash/assets/protocols/magic-eden.png +0 -0
  100. package/public/oracle-splash/assets/protocols/morpho.png +0 -0
  101. package/public/oracle-splash/assets/protocols/odos.png +0 -0
  102. package/public/oracle-splash/assets/protocols/oneinch.png +0 -0
  103. package/public/oracle-splash/assets/protocols/opensea.png +0 -0
  104. package/public/oracle-splash/assets/protocols/pancakeswap.png +0 -0
  105. package/public/oracle-splash/assets/protocols/paragon.png +0 -0
  106. package/public/oracle-splash/assets/protocols/paraswap.png +0 -0
  107. package/public/oracle-splash/assets/protocols/pendle.png +0 -0
  108. package/public/oracle-splash/assets/protocols/polymarket.png +0 -0
  109. package/public/oracle-splash/assets/protocols/quickswap.png +0 -0
  110. package/public/oracle-splash/assets/protocols/relay.png +0 -0
  111. package/public/oracle-splash/assets/protocols/stargate.png +0 -0
  112. package/public/oracle-splash/assets/protocols/tradexyz.png +0 -0
  113. package/public/oracle-splash/assets/protocols/uniswap.png +0 -0
  114. package/public/oracle-splash/assets/protocols/velodrome.png +0 -0
  115. package/public/oracle-splash/assets/protocols/ventuals.png +0 -0
  116. package/public/oracle-splash/assets/wordmarks/across-icon.webp +0 -0
  117. package/public/oracle-splash/assets/wordmarks/across.svg +0 -4
  118. package/public/oracle-splash/assets/wordmarks/aerodrome.svg +0 -23
  119. package/public/oracle-splash/assets/wordmarks/balancer.svg +0 -3
  120. package/public/oracle-splash/assets/wordmarks/cowswap.svg +0 -1
  121. package/public/oracle-splash/assets/wordmarks/curve.png +0 -0
  122. package/public/oracle-splash/assets/wordmarks/gmx.svg +0 -13
  123. package/public/oracle-splash/assets/wordmarks/hop-icon.webp +0 -0
  124. package/public/oracle-splash/assets/wordmarks/hyena.svg +0 -7
  125. package/public/oracle-splash/assets/wordmarks/hyperliquid.svg +0 -21
  126. package/public/oracle-splash/assets/wordmarks/hyperswap.svg +0 -13
  127. package/public/oracle-splash/assets/wordmarks/jupiter.svg +0 -35
  128. package/public/oracle-splash/assets/wordmarks/kinetiq.svg +0 -1
  129. package/public/oracle-splash/assets/wordmarks/lfj.webp +0 -0
  130. package/public/oracle-splash/assets/wordmarks/lifi.png +0 -0
  131. package/public/oracle-splash/assets/wordmarks/magic-eden.svg +0 -1
  132. package/public/oracle-splash/assets/wordmarks/markets.svg +0 -1
  133. package/public/oracle-splash/assets/wordmarks/morpho.svg +0 -1
  134. package/public/oracle-splash/assets/wordmarks/odos.svg +0 -3
  135. package/public/oracle-splash/assets/wordmarks/oneinch-icon.webp +0 -0
  136. package/public/oracle-splash/assets/wordmarks/oneinch.svg +0 -6
  137. package/public/oracle-splash/assets/wordmarks/opensea-icon.svg +0 -17
  138. package/public/oracle-splash/assets/wordmarks/opensea.svg +0 -1
  139. package/public/oracle-splash/assets/wordmarks/outcome.svg +0 -16
  140. package/public/oracle-splash/assets/wordmarks/pancakeswap.svg +0 -18
  141. package/public/oracle-splash/assets/wordmarks/paragon.svg +0 -9
  142. package/public/oracle-splash/assets/wordmarks/paraswap.svg +0 -16
  143. package/public/oracle-splash/assets/wordmarks/pendle.png +0 -0
  144. package/public/oracle-splash/assets/wordmarks/polymarket.png +0 -0
  145. package/public/oracle-splash/assets/wordmarks/quickswap.png +0 -0
  146. package/public/oracle-splash/assets/wordmarks/relay.svg +0 -8
  147. package/public/oracle-splash/assets/wordmarks/satflow-icon.png +0 -0
  148. package/public/oracle-splash/assets/wordmarks/stargate-icon.webp +0 -0
  149. package/public/oracle-splash/assets/wordmarks/stargate.svg +0 -15
  150. package/public/oracle-splash/assets/wordmarks/uniswap.svg +0 -18
  151. package/public/oracle-splash/assets/wordmarks/velodrome.svg +0 -84
  152. package/public/oracle-splash/assets/wordmarks/xyz.svg +0 -12
  153. package/public/oracle-splash/assets/wordmarks/zerox-icon.webp +0 -0
  154. package/public/oracle-splash/brand/aave.webp +0 -0
  155. package/public/oracle-splash/brand/aavev2.webp +0 -0
  156. package/public/oracle-splash/brand/aborean.webp +0 -0
  157. package/public/oracle-splash/brand/across.webp +0 -0
  158. package/public/oracle-splash/brand/aerodrome.webp +0 -0
  159. package/public/oracle-splash/brand/afi.webp +0 -0
  160. package/public/oracle-splash/brand/arcus.webp +0 -0
  161. package/public/oracle-splash/brand/aster.webp +0 -0
  162. package/public/oracle-splash/brand/avant.webp +0 -0
  163. package/public/oracle-splash/brand/balancer.webp +0 -0
  164. package/public/oracle-splash/brand/beefy.webp +0 -0
  165. package/public/oracle-splash/brand/benqi.webp +0 -0
  166. package/public/oracle-splash/brand/bestinslot.ico +0 -0
  167. package/public/oracle-splash/brand/bitfi.webp +0 -0
  168. package/public/oracle-splash/brand/bonkswap.webp +0 -0
  169. package/public/oracle-splash/brand/bouncebit.webp +0 -0
  170. package/public/oracle-splash/brand/camelot.webp +0 -0
  171. package/public/oracle-splash/brand/compound.webp +0 -0
  172. package/public/oracle-splash/brand/concrete.webp +0 -0
  173. package/public/oracle-splash/brand/cow.webp +0 -0
  174. package/public/oracle-splash/brand/curve.webp +0 -0
  175. package/public/oracle-splash/brand/derive.webp +0 -0
  176. package/public/oracle-splash/brand/dolomite.webp +0 -0
  177. package/public/oracle-splash/brand/eigenlayer.webp +0 -0
  178. package/public/oracle-splash/brand/ekubo.webp +0 -0
  179. package/public/oracle-splash/brand/ethena.webp +0 -0
  180. package/public/oracle-splash/brand/etherfi.webp +0 -0
  181. package/public/oracle-splash/brand/etherfiborrow.webp +0 -0
  182. package/public/oracle-splash/brand/felix.webp +0 -0
  183. package/public/oracle-splash/brand/fluid.webp +0 -0
  184. package/public/oracle-splash/brand/fluxbeam.webp +0 -0
  185. package/public/oracle-splash/brand/folks.webp +0 -0
  186. package/public/oracle-splash/brand/fortyacres.webp +0 -0
  187. package/public/oracle-splash/brand/gainsnetwork.webp +0 -0
  188. package/public/oracle-splash/brand/gassss.webp +0 -0
  189. package/public/oracle-splash/brand/gmx.webp +0 -0
  190. package/public/oracle-splash/brand/harmonix.webp +0 -0
  191. package/public/oracle-splash/brand/hlorderbook.webp +0 -0
  192. package/public/oracle-splash/brand/hlp.webp +0 -0
  193. package/public/oracle-splash/brand/hop.webp +0 -0
  194. package/public/oracle-splash/brand/hyperbeat.webp +0 -0
  195. package/public/oracle-splash/brand/hyperlend.webp +0 -0
  196. package/public/oracle-splash/brand/hyperliquid.webp +0 -0
  197. package/public/oracle-splash/brand/hyperliquidhpl.webp +0 -0
  198. package/public/oracle-splash/brand/hyperliquidspot.webp +0 -0
  199. package/public/oracle-splash/brand/hyperswap.webp +0 -0
  200. package/public/oracle-splash/brand/hypha.webp +0 -0
  201. package/public/oracle-splash/brand/joedex.webp +0 -0
  202. package/public/oracle-splash/brand/jupiter.webp +0 -0
  203. package/public/oracle-splash/brand/kelp.webp +0 -0
  204. package/public/oracle-splash/brand/kinetiq.webp +0 -0
  205. package/public/oracle-splash/brand/kmhype.webp +0 -0
  206. package/public/oracle-splash/brand/kona.webp +0 -0
  207. package/public/oracle-splash/brand/konalend.webp +0 -0
  208. package/public/oracle-splash/brand/lfj.webp +0 -0
  209. package/public/oracle-splash/brand/lido.webp +0 -0
  210. package/public/oracle-splash/brand/lifi.webp +0 -0
  211. package/public/oracle-splash/brand/lighter.webp +0 -0
  212. package/public/oracle-splash/brand/lista.webp +0 -0
  213. package/public/oracle-splash/brand/loopedhype.webp +0 -0
  214. package/public/oracle-splash/brand/lorenzo.webp +0 -0
  215. package/public/oracle-splash/brand/magic-eden.webp +0 -0
  216. package/public/oracle-splash/brand/magiceden.webp +0 -0
  217. package/public/oracle-splash/brand/mempool.png +0 -0
  218. package/public/oracle-splash/brand/meteora.webp +0 -0
  219. package/public/oracle-splash/brand/morpho.webp +0 -0
  220. package/public/oracle-splash/brand/myriad.webp +0 -0
  221. package/public/oracle-splash/brand/noxa.webp +0 -0
  222. package/public/oracle-splash/brand/odos.webp +0 -0
  223. package/public/oracle-splash/brand/oneinch.webp +0 -0
  224. package/public/oracle-splash/brand/openbook.webp +0 -0
  225. package/public/oracle-splash/brand/opensea.webp +0 -0
  226. package/public/oracle-splash/brand/orca.webp +0 -0
  227. package/public/oracle-splash/brand/ordinals.png +0 -0
  228. package/public/oracle-splash/brand/ostium.webp +0 -0
  229. package/public/oracle-splash/brand/pancakeswap.webp +0 -0
  230. package/public/oracle-splash/brand/pendle.webp +0 -0
  231. package/public/oracle-splash/brand/perena.webp +0 -0
  232. package/public/oracle-splash/brand/pharaoh.webp +0 -0
  233. package/public/oracle-splash/brand/phoenix.webp +0 -0
  234. package/public/oracle-splash/brand/polymarket.webp +0 -0
  235. package/public/oracle-splash/brand/polynomial.webp +0 -0
  236. package/public/oracle-splash/brand/projectx.webp +0 -0
  237. package/public/oracle-splash/brand/pumpfun.webp +0 -0
  238. package/public/oracle-splash/brand/quickswap.webp +0 -0
  239. package/public/oracle-splash/brand/rain.webp +0 -0
  240. package/public/oracle-splash/brand/raydium.webp +0 -0
  241. package/public/oracle-splash/brand/relay.webp +0 -0
  242. package/public/oracle-splash/brand/rocketpool.webp +0 -0
  243. package/public/oracle-splash/brand/saber.webp +0 -0
  244. package/public/oracle-splash/brand/sakuraswap.webp +0 -0
  245. package/public/oracle-splash/brand/sanctum.webp +0 -0
  246. package/public/oracle-splash/brand/satflow.png +0 -0
  247. package/public/oracle-splash/brand/sierra.webp +0 -0
  248. package/public/oracle-splash/brand/sky.webp +0 -0
  249. package/public/oracle-splash/brand/solv.webp +0 -0
  250. package/public/oracle-splash/brand/spark.webp +0 -0
  251. package/public/oracle-splash/brand/sparksavings.webp +0 -0
  252. package/public/oracle-splash/brand/sphere.webp +0 -0
  253. package/public/oracle-splash/brand/ssv.webp +0 -0
  254. package/public/oracle-splash/brand/stabble.webp +0 -0
  255. package/public/oracle-splash/brand/stableswap.webp +0 -0
  256. package/public/oracle-splash/brand/stakewise.webp +0 -0
  257. package/public/oracle-splash/brand/stargate.webp +0 -0
  258. package/public/oracle-splash/brand/sthype.webp +0 -0
  259. package/public/oracle-splash/brand/sushiswap.webp +0 -0
  260. package/public/oracle-splash/brand/unisat.png +0 -0
  261. package/public/oracle-splash/brand/uniswap.webp +0 -0
  262. package/public/oracle-splash/brand/uniswapv2.webp +0 -0
  263. package/public/oracle-splash/brand/uniswapv4.webp +0 -0
  264. package/public/oracle-splash/brand/unit.webp +0 -0
  265. package/public/oracle-splash/brand/velodrome.webp +0 -0
  266. package/public/oracle-splash/brand/velora.webp +0 -0
  267. package/public/oracle-splash/brand/venus.webp +0 -0
  268. package/public/oracle-splash/brand/wbeth.webp +0 -0
  269. package/public/oracle-splash/brand/xsy.webp +0 -0
  270. package/public/oracle-splash/brand/yieldyak.webp +0 -0
  271. package/public/oracle-splash/brand/zerobase.webp +0 -0
  272. package/public/oracle-splash/brand/zerox.webp +0 -0
  273. package/public/oracle-splash/favicon.ico +0 -0
  274. package/public/oracle-splash/favicon.svg +0 -6
  275. package/public/oracle-splash/index.html +0 -1558
  276. package/public/oracle-splash/mesh-graph.png +0 -0
  277. package/public/oracle-splash/mesh-graph.svg +0 -216
  278. package/scripts/adversarial-bench.mjs +0 -114
  279. package/scripts/build-inscription.py +0 -230
  280. package/scripts/check-doc-drift.mjs +0 -123
  281. package/scripts/check-test-count.mjs +0 -105
  282. package/scripts/e2e-hl-markets.mjs +0 -21
  283. package/scripts/e2e-hl-perps.mjs +0 -48
  284. package/scripts/e2e-hypercore-staking.mjs +0 -128
  285. package/scripts/e2e-solana-bitcoin.mjs +0 -183
  286. package/scripts/protocol-template-gate.mjs +0 -15
  287. package/scripts/public-api-scan.mjs +0 -23
  288. package/scripts/secret-scan.mjs +0 -181
  289. package/scripts/verify-v3-venues.mjs +0 -192
  290. package/skills/balance/SKILL.md +0 -176
  291. package/skills/oracle-action-semantics/SKILL.md +0 -40
  292. package/skills/oracle-best-execution/SKILL.md +0 -127
  293. package/skills/oracle-bitcoin/SKILL.md +0 -53
  294. package/skills/oracle-chain-graphs-telegram-cards/SKILL.md +0 -59
  295. package/skills/oracle-chat/SKILL.md +0 -61
  296. package/skills/oracle-chat/chain.SKILL.md +0 -31
  297. package/skills/oracle-chat/setup.SKILL.md +0 -37
  298. package/skills/oracle-circuit-breaker/SKILL.md +0 -51
  299. package/skills/oracle-contract-research/SKILL.md +0 -55
  300. package/skills/oracle-desk/SKILL.md +0 -58
  301. package/skills/oracle-dex-launch/SKILL.md +0 -38
  302. package/skills/oracle-grants/SKILL.md +0 -69
  303. package/skills/oracle-hypercore-staking/SKILL.md +0 -57
  304. package/skills/oracle-hyperliquid/SKILL.md +0 -56
  305. package/skills/oracle-meme-token-sniper/SKILL.md +0 -73
  306. package/skills/oracle-multichain-nft-launch/SKILL.md +0 -338
  307. package/skills/oracle-multichain-token-launch/SKILL.md +0 -300
  308. package/skills/oracle-nft-gacha-launch/SKILL.md +0 -48
  309. package/skills/oracle-nft-mint-gas-war/SKILL.md +0 -63
  310. package/skills/oracle-polymarket/SKILL.md +0 -60
  311. package/skills/oracle-protocol-builder/SKILL.md +0 -59
  312. package/skills/oracle-protocol-security/SKILL.md +0 -60
  313. package/skills/oracle-public-product/SKILL.md +0 -44
  314. package/skills/oracle-receipts/SKILL.md +0 -52
  315. package/skills/oracle-rfq-tokenized-assets/SKILL.md +0 -69
  316. package/skills/oracle-smart-wallet-scanner/SKILL.md +0 -49
  317. package/skills/oracle-solana/SKILL.md +0 -65
  318. package/skills/oracle-solana-nft/SKILL.md +0 -54
  319. package/skills/oracle-token-research/SKILL.md +0 -67
  320. package/skins/oracle.yaml +0 -56
  321. package/src/action-receipts.mjs +0 -265
  322. package/src/action-semantics.mjs +0 -62
  323. package/src/address-book.mjs +0 -208
  324. package/src/agent-auth.mjs +0 -206
  325. package/src/approval-guard.mjs +0 -282
  326. package/src/attestation-secret.mjs +0 -88
  327. package/src/audit-log.mjs +0 -196
  328. package/src/auth/oauth.mjs +0 -672
  329. package/src/auto-slippage.mjs +0 -378
  330. package/src/capability-posture.mjs +0 -125
  331. package/src/chains.mjs +0 -62
  332. package/src/cli/chain-catalog.mjs +0 -215
  333. package/src/cli/chain-state.mjs +0 -74
  334. package/src/cli/commands/auth.mjs +0 -193
  335. package/src/cli/commands/bootstrap.mjs +0 -87
  336. package/src/cli/commands/chain.mjs +0 -143
  337. package/src/cli/commands/chat.mjs +0 -434
  338. package/src/cli/commands/credential.mjs +0 -9
  339. package/src/cli/commands/data-mcp.mjs +0 -18
  340. package/src/cli/commands/data.mjs +0 -75
  341. package/src/cli/commands/doctor.mjs +0 -136
  342. package/src/cli/commands/help.mjs +0 -7
  343. package/src/cli/commands/init.mjs +0 -27
  344. package/src/cli/commands/mcp.mjs +0 -142
  345. package/src/cli/commands/model.mjs +0 -99
  346. package/src/cli/commands/prepare.mjs +0 -12
  347. package/src/cli/commands/public.mjs +0 -20
  348. package/src/cli/commands/route.mjs +0 -12
  349. package/src/cli/commands/runner.mjs +0 -9
  350. package/src/cli/commands/scan.mjs +0 -12
  351. package/src/cli/commands/setup.mjs +0 -275
  352. package/src/cli/commands/sign.mjs +0 -21
  353. package/src/cli/commands/signer.mjs +0 -9
  354. package/src/cli/commands/upgrade.mjs +0 -12
  355. package/src/cli/commands/vault.mjs +0 -9
  356. package/src/cli/commands/version.mjs +0 -22
  357. package/src/cli/first-run.mjs +0 -23
  358. package/src/cli/kernel.mjs +0 -239
  359. package/src/cli/mcp-targets/chatgpt.mjs +0 -51
  360. package/src/cli/mcp-targets/claude-code.mjs +0 -39
  361. package/src/cli/mcp-targets/claude-desktop.mjs +0 -24
  362. package/src/cli/mcp-targets/codex.mjs +0 -41
  363. package/src/cli/mcp-targets/shared.mjs +0 -61
  364. package/src/cli/messaging-platforms.mjs +0 -209
  365. package/src/cli/model-config.mjs +0 -70
  366. package/src/cli/operator-dispatch.mjs +0 -258
  367. package/src/cli/oracle-harness.py +0 -415
  368. package/src/cli/paths.mjs +0 -83
  369. package/src/cli/runtime.mjs +0 -351
  370. package/src/cli/setup-state.mjs +0 -168
  371. package/src/cli/spawn-child.mjs +0 -43
  372. package/src/data/catalog.mjs +0 -585
  373. package/src/data/desk-data.mjs +0 -695
  374. package/src/data/http.mjs +0 -253
  375. package/src/data/provider-endpoint.mjs +0 -94
  376. package/src/data/providers/aerodrome.mjs +0 -245
  377. package/src/data/providers/balancer.mjs +0 -209
  378. package/src/data/providers/bitcoin-esplora.mjs +0 -216
  379. package/src/data/providers/bitcoin-meta.mjs +0 -378
  380. package/src/data/providers/blockscout.mjs +0 -14
  381. package/src/data/providers/bridges.mjs +0 -242
  382. package/src/data/providers/cowswap.mjs +0 -415
  383. package/src/data/providers/curve.mjs +0 -201
  384. package/src/data/providers/defillama.mjs +0 -88
  385. package/src/data/providers/dexscreener.mjs +0 -43
  386. package/src/data/providers/evm-rpc.mjs +0 -225
  387. package/src/data/providers/geckoterminal.mjs +0 -34
  388. package/src/data/providers/gmx.mjs +0 -496
  389. package/src/data/providers/hl-assets.mjs +0 -165
  390. package/src/data/providers/hl-info.mjs +0 -108
  391. package/src/data/providers/hl-markets.mjs +0 -210
  392. package/src/data/providers/hl-outcome.mjs +0 -61
  393. package/src/data/providers/hl-perps.mjs +0 -387
  394. package/src/data/providers/hl-staking.mjs +0 -353
  395. package/src/data/providers/hl-ws.mjs +0 -119
  396. package/src/data/providers/hyperevm-dex.mjs +0 -49
  397. package/src/data/providers/jupiter-venues.mjs +0 -119
  398. package/src/data/providers/jupiter.mjs +0 -315
  399. package/src/data/providers/lifi.mjs +0 -151
  400. package/src/data/providers/magiceden-sol.mjs +0 -406
  401. package/src/data/providers/morpho.mjs +0 -177
  402. package/src/data/providers/nft-gallery.mjs +0 -163
  403. package/src/data/providers/nft-portfolio.mjs +0 -494
  404. package/src/data/providers/odos.mjs +0 -156
  405. package/src/data/providers/oneinch.mjs +0 -174
  406. package/src/data/providers/opensea-multichain.mjs +0 -136
  407. package/src/data/providers/opensea-nft.mjs +0 -371
  408. package/src/data/providers/paraswap.mjs +0 -118
  409. package/src/data/providers/pendle.mjs +0 -188
  410. package/src/data/providers/poly-clob.mjs +0 -283
  411. package/src/data/providers/poly-public.mjs +0 -96
  412. package/src/data/providers/poly-ws.mjs +0 -103
  413. package/src/data/providers/portfolio-history.mjs +0 -394
  414. package/src/data/providers/portfolio.mjs +0 -594
  415. package/src/data/providers/rfq.mjs +0 -15
  416. package/src/data/providers/rh-agent.mjs +0 -59
  417. package/src/data/providers/satflow.mjs +0 -341
  418. package/src/data/providers/signed-material-guard.mjs +0 -108
  419. package/src/data/providers/solana-rpc.mjs +0 -197
  420. package/src/data/providers/uniswap-v3.mjs +0 -349
  421. package/src/data/providers/uniswap-v4.mjs +0 -414
  422. package/src/data/providers/zerox.mjs +0 -167
  423. package/src/data/public-api-scan.mjs +0 -61
  424. package/src/data/quote-placeholder.mjs +0 -31
  425. package/src/exact-integer.mjs +0 -72
  426. package/src/exec-policy.mjs +0 -455
  427. package/src/flags.mjs +0 -15
  428. package/src/fresh-window.mjs +0 -76
  429. package/src/gmx-attestation.mjs +0 -176
  430. package/src/index.mjs +0 -100
  431. package/src/nft-gas-war-guard.mjs +0 -139
  432. package/src/onboarding/agent-keys.mjs +0 -161
  433. package/src/onboarding/harness-configs.mjs +0 -102
  434. package/src/onboarding/index.mjs +0 -18
  435. package/src/onboarding/tiers.mjs +0 -139
  436. package/src/oracle-env.mjs +0 -47
  437. package/src/portfolio-risk.mjs +0 -170
  438. package/src/prepare-envelope.mjs +0 -204
  439. package/src/profile-upgrade.mjs +0 -277
  440. package/src/protocol-execution.mjs +0 -84
  441. package/src/protocol-templates/gate.mjs +0 -179
  442. package/src/protocol-templates/prepare-deploy.mjs +0 -81
  443. package/src/public-api/buzz-integration.mjs +0 -256
  444. package/src/public-api/connect-agent.mjs +0 -416
  445. package/src/public-api/grants.mjs +0 -142
  446. package/src/public-api/http.mjs +0 -389
  447. package/src/public-control/aa-adapter.mjs +0 -402
  448. package/src/public-control/build-registry.mjs +0 -227
  449. package/src/public-control/bundler-client.mjs +0 -357
  450. package/src/public-control/grant-indexer.mjs +0 -296
  451. package/src/public-control/policy-render.mjs +0 -69
  452. package/src/public-control/policy-schema.mjs +0 -318
  453. package/src/public-control/runtime-config.mjs +0 -275
  454. package/src/public-control/session-key-model.mjs +0 -374
  455. package/src/public-control/session-orchestrator.mjs +0 -412
  456. package/src/rfq/intent.mjs +0 -180
  457. package/src/rfq/sources.mjs +0 -181
  458. package/src/route-attestation.mjs +0 -132
  459. package/src/router/best-execution.mjs +0 -326
  460. package/src/router/index.mjs +0 -226
  461. package/src/router/prepare-bridge.mjs +0 -289
  462. package/src/router/prepare-route.mjs +0 -398
  463. package/src/router/proposal.mjs +0 -311
  464. package/src/router/risk-classifier.mjs +0 -119
  465. package/src/router/route-sources.mjs +0 -364
  466. package/src/scanner/chains.config.mjs +0 -430
  467. package/src/scanner/contract.mjs +0 -270
  468. package/src/scanner/evm-scanner.mjs +0 -394
  469. package/src/scanner/index.mjs +0 -9
  470. package/src/scanner/v2-venue.mjs +0 -335
  471. package/src/scanner/v3-venue.mjs +0 -290
  472. package/src/scopes.mjs +0 -44
  473. package/src/sell-simulation.mjs +0 -167
  474. package/src/signals/engine.mjs +0 -146
  475. package/src/signals/index.mjs +0 -1
  476. package/src/token-transfer-guard.mjs +0 -188
  477. package/src/tui/app.mjs +0 -438
  478. package/src/tui/backend.mjs +0 -145
  479. package/src/tui/format.mjs +0 -272
  480. package/src/tui/gateway-client.mjs +0 -177
  481. package/src/tui/input.mjs +0 -501
  482. package/src/tui/renderer.mjs +0 -443
  483. package/src/tui/standalone-client.mjs +0 -666
  484. package/src/tui/theme.mjs +0 -81
  485. package/src/vault-attestation.mjs +0 -146
  486. package/src/venues.mjs +0 -206
  487. package/src/watch-preferences.mjs +0 -85
Binary file
@@ -1,216 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1400 900" width="1400" height="900">
2
- <defs>
3
- <style>
4
- @import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;1,400;1,500&amp;family=Outfit:wght@300;400;500&amp;family=IBM+Plex+Mono:wght@400;500&amp;display=swap');
5
- </style>
6
- <radialGradient id="bg" cx="50%" cy="35%" r="70%">
7
- <stop offset="0%" stop-color="#111925"/>
8
- <stop offset="45%" stop-color="#0B1018"/>
9
- <stop offset="100%" stop-color="#070b10"/>
10
- </radialGradient>
11
- <radialGradient id="orb1" cx="50%" cy="50%" r="50%">
12
- <stop offset="0%" stop-color="#7CC4FF" stop-opacity="0.18"/>
13
- <stop offset="55%" stop-color="#7CC4FF" stop-opacity="0.04"/>
14
- <stop offset="100%" stop-color="#7CC4FF" stop-opacity="0"/>
15
- </radialGradient>
16
- <radialGradient id="orb2" cx="50%" cy="50%" r="50%">
17
- <stop offset="0%" stop-color="#50D2C1" stop-opacity="0.10"/>
18
- <stop offset="100%" stop-color="#50D2C1" stop-opacity="0"/>
19
- </radialGradient>
20
- <pattern id="grid" width="48" height="48" patternUnits="userSpaceOnUse">
21
- <path d="M 48 0 L 0 0 0 48" fill="none" stroke="rgba(124,196,255,0.06)" stroke-width="1"/>
22
- </pattern>
23
- <linearGradient id="panelStroke" x1="0%" y1="0%" x2="100%" y2="100%">
24
- <stop offset="0%" stop-color="rgba(124,196,255,0.28)"/>
25
- <stop offset="100%" stop-color="rgba(124,196,255,0.08)"/>
26
- </linearGradient>
27
- <linearGradient id="cardFill" x1="0%" y1="0%" x2="0%" y2="100%">
28
- <stop offset="0%" stop-color="#152031"/>
29
- <stop offset="100%" stop-color="#111925"/>
30
- </linearGradient>
31
- <filter id="softGlow" x="-50%" y="-50%" width="200%" height="200%">
32
- <feGaussianBlur stdDeviation="8" result="b"/>
33
- <feMerge>
34
- <feMergeNode in="b"/>
35
- <feMergeNode in="SourceGraphic"/>
36
- </feMerge>
37
- </filter>
38
- <filter id="nodeGlow" x="-40%" y="-40%" width="180%" height="180%">
39
- <feGaussianBlur stdDeviation="4" result="b"/>
40
- <feMerge>
41
- <feMergeNode in="b"/>
42
- <feMergeNode in="SourceGraphic"/>
43
- </feMerge>
44
- </filter>
45
- <marker id="ah-blue" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
46
- <path d="M0,0 L8,4 L0,8 Z" fill="#7CC4FF"/>
47
- </marker>
48
- <marker id="ah-poly" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
49
- <path d="M0,0 L8,4 L0,8 Z" fill="#3B82F6"/>
50
- </marker>
51
- <marker id="ah-hl" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
52
- <path d="M0,0 L8,4 L0,8 Z" fill="#50D2C1"/>
53
- </marker>
54
- <marker id="ah-rh" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
55
- <path d="M0,0 L8,4 L0,8 Z" fill="#d7ff4d"/>
56
- </marker>
57
- <marker id="ah-sol" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
58
- <path d="M0,0 L8,4 L0,8 Z" fill="#9945FF"/>
59
- </marker>
60
- <marker id="ah-btc" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
61
- <path d="M0,0 L8,4 L0,8 Z" fill="#F0B90B"/>
62
- </marker>
63
- <marker id="ah-mute" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
64
- <path d="M0,0 L8,4 L0,8 Z" fill="#5B738F"/>
65
- </marker>
66
- </defs>
67
-
68
- <!-- page bg -->
69
- <rect width="1400" height="900" fill="url(#bg)"/>
70
- <rect width="1400" height="900" fill="url(#grid)"/>
71
- <ellipse cx="700" cy="420" rx="520" ry="280" fill="url(#orb1)"/>
72
- <ellipse cx="980" cy="620" rx="280" ry="180" fill="url(#orb2)"/>
73
-
74
- <!-- ========== brand top-left (oracle) ========== -->
75
- <g id="brand">
76
- <circle cx="52" cy="48" r="7" fill="#7CC4FF" filter="url(#softGlow)"/>
77
- <circle cx="52" cy="48" r="3.2" fill="#0B1018"/>
78
- <text x="70" y="54" fill="#E8F1FA" font-family="Outfit, system-ui, sans-serif" font-size="26" font-weight="400" letter-spacing="-0.3">oracle</text>
79
- <text x="52" y="78" fill="#5B738F" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" letter-spacing="1.8">MULTI-PROFILE MESH · POWERED BY HERMES</text>
80
- </g>
81
-
82
- <!-- right meta -->
83
- <text x="1350" y="48" fill="#5B738F" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" text-anchor="end" letter-spacing="1.5">FOR USERS</text>
84
- <text x="1350" y="68" fill="#9BB6D1" font-family="Outfit, system-ui, sans-serif" font-size="13" text-anchor="end">graph · customizable · add agents</text>
85
-
86
- <!-- ========== main glass panel ========== -->
87
- <rect x="48" y="110" width="1304" height="730" rx="22" fill="#111925" fill-opacity="0.72" stroke="url(#panelStroke)" stroke-width="1.2"/>
88
- <!-- panel header bar -->
89
- <rect x="48" y="110" width="1304" height="52" rx="22" fill="#152031" fill-opacity="0.9"/>
90
- <rect x="48" y="140" width="1304" height="22" fill="#152031" fill-opacity="0.9"/>
91
- <text x="72" y="142" fill="#7CC4FF" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="11" letter-spacing="1.6">FOR USERS</text>
92
- <text x="700" y="142" fill="#9BB6D1" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="11" text-anchor="middle" letter-spacing="1.6">MULTI-PROFILE // CUSTOMIZABLE</text>
93
- <text x="1328" y="142" fill="#5B738F" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="11" text-anchor="end" letter-spacing="1.4">POWERED BY HERMES</text>
94
-
95
- <!-- pills -->
96
- <g font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" letter-spacing="1.2">
97
- <rect x="72" y="182" width="128" height="28" rx="14" fill="none" stroke="rgba(124,196,255,0.28)" stroke-width="1"/>
98
- <text x="136" y="200" fill="#A7D8FF" text-anchor="middle">MULTI PROFILES</text>
99
- <rect x="210" y="182" width="128" height="28" rx="14" fill="none" stroke="rgba(124,196,255,0.28)" stroke-width="1"/>
100
- <text x="274" y="200" fill="#A7D8FF" text-anchor="middle">CUSTOMIZABLE</text>
101
- <rect x="348" y="182" width="112" height="28" rx="14" fill="none" stroke="rgba(124,196,255,0.28)" stroke-width="1"/>
102
- <text x="404" y="200" fill="#A7D8FF" text-anchor="middle">ADD AGENTS</text>
103
- <rect x="470" y="182" width="118" height="28" rx="14" fill="none" stroke="rgba(124,196,255,0.28)" stroke-width="1"/>
104
- <text x="529" y="200" fill="#A7D8FF" text-anchor="middle">MORE CHAINS</text>
105
- <rect x="598" y="182" width="148" height="28" rx="14" fill="none" stroke="rgba(124,196,255,0.28)" stroke-width="1"/>
106
- <text x="672" y="200" fill="#A7D8FF" text-anchor="middle">POWERED BY HERMES</text>
107
- </g>
108
-
109
- <!-- ========== connectors (behind nodes) ========== -->
110
- <!-- input -> oracle -->
111
- <line x1="700" y1="310" x2="700" y2="360" stroke="#7CC4FF" stroke-width="2.5" marker-end="url(#ah-blue)" filter="url(#nodeGlow)"/>
112
- <line x1="700" y1="310" x2="700" y2="360" stroke="#7CC4FF" stroke-width="10" stroke-opacity="0.12"/>
113
-
114
- <!-- oracle hub fan-out to profiles -->
115
- <!-- poly left -->
116
- <path d="M620 450 C560 450 420 450 280 520" fill="none" stroke="#3B82F6" stroke-width="2" marker-end="url(#ah-poly)"/>
117
- <path d="M620 450 C560 450 420 450 280 520" fill="none" stroke="#3B82F6" stroke-width="8" stroke-opacity="0.10"/>
118
- <!-- hl center-left -->
119
- <path d="M660 470 C640 500 560 520 500 560" fill="none" stroke="#50D2C1" stroke-width="2" marker-end="url(#ah-hl)"/>
120
- <path d="M660 470 C640 500 560 520 500 560" fill="none" stroke="#50D2C1" stroke-width="8" stroke-opacity="0.10"/>
121
- <!-- rh center -->
122
- <line x1="700" y1="470" x2="700" y2="560" stroke="#d7ff4d" stroke-width="2" marker-end="url(#ah-rh)"/>
123
- <line x1="700" y1="470" x2="700" y2="560" stroke="#d7ff4d" stroke-width="8" stroke-opacity="0.10"/>
124
- <!-- sol center-right -->
125
- <path d="M740 470 C760 500 840 520 900 560" fill="none" stroke="#9945FF" stroke-width="2" marker-end="url(#ah-sol)"/>
126
- <path d="M740 470 C760 500 840 520 900 560" fill="none" stroke="#9945FF" stroke-width="8" stroke-opacity="0.10"/>
127
- <!-- btc right -->
128
- <path d="M780 450 C860 450 1000 450 1120 520" fill="none" stroke="#F0B90B" stroke-width="2" marker-end="url(#ah-btc)"/>
129
- <path d="M780 450 C860 450 1000 450 1120 520" fill="none" stroke="#F0B90B" stroke-width="8" stroke-opacity="0.10"/>
130
- <!-- builder bottom -->
131
- <path d="M700 470 C700 510 700 640 700 680" fill="none" stroke="#5B738F" stroke-width="1.5" stroke-dasharray="4 4" marker-end="url(#ah-mute)"/>
132
-
133
- <!-- ========== 01 INPUT / COMMAND ========== -->
134
- <g filter="url(#nodeGlow)">
135
- <rect x="575" y="230" width="250" height="80" rx="14" fill="url(#cardFill)" stroke="rgba(124,196,255,0.35)" stroke-width="1.2"/>
136
- <text x="700" y="258" fill="#5B738F" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" text-anchor="middle" letter-spacing="1.6">YOU</text>
137
- <text x="700" y="282" fill="#E8F1FA" font-family="Outfit, system-ui, sans-serif" font-size="18" font-weight="500" text-anchor="middle">Input / Command</text>
138
- <text x="700" y="300" fill="#9BB6D1" font-family="Outfit, system-ui, sans-serif" font-size="12" font-weight="300" text-anchor="middle">what you type or ask</text>
139
- </g>
140
-
141
- <!-- ========== 02 CONTROL PLANE · oracle ========== -->
142
- <g filter="url(#nodeGlow)">
143
- <rect x="520" y="360" width="360" height="110" rx="16" fill="url(#cardFill)" stroke="rgba(124,196,255,0.45)" stroke-width="1.4"/>
144
- <rect x="520" y="360" width="360" height="110" rx="16" fill="rgba(124,196,255,0.04)"/>
145
- <text x="700" y="392" fill="#7CC4FF" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" text-anchor="middle" letter-spacing="1.8">CONTROL PLANE</text>
146
- <text x="700" y="424" fill="#E8F1FA" font-family="Cormorant Garamond, Georgia, serif" font-size="34" font-weight="500" font-style="italic" text-anchor="middle">oracle</text>
147
- <text x="700" y="450" fill="#9BB6D1" font-family="Outfit, system-ui, sans-serif" font-size="12" font-weight="300" text-anchor="middle">route · bound · evolve</text>
148
- </g>
149
-
150
- <!-- ========== 03 PROFILE CARDS ========== -->
151
- <!-- polymarket -->
152
- <g>
153
- <rect x="80" y="520" width="260" height="130" rx="16" fill="#111925" stroke="rgba(59,130,246,0.45)" stroke-width="1.2"/>
154
- <rect x="80" y="520" width="260" height="130" rx="16" fill="rgba(59,130,246,0.06)"/>
155
- <text x="100" y="548" fill="#3B82F6" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" letter-spacing="1.6">PROFILE</text>
156
- <text x="100" y="578" fill="#A7D8FF" font-family="Outfit, system-ui, sans-serif" font-size="18" font-weight="500">polymarket agent</text>
157
- <text x="100" y="600" fill="#9BB6D1" font-family="Outfit, system-ui, sans-serif" font-size="12" font-weight="300">events · arb · markets</text>
158
- <rect x="100" y="618" width="100" height="20" rx="10" fill="none" stroke="rgba(59,130,246,0.35)"/>
159
- <text x="150" y="632" fill="#7CC4FF" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="9" text-anchor="middle">Polymarket</text>
160
- </g>
161
-
162
- <!-- hyperliquid -->
163
- <g>
164
- <rect x="370" y="560" width="260" height="130" rx="16" fill="#111925" stroke="rgba(80,210,193,0.45)" stroke-width="1.2"/>
165
- <rect x="370" y="560" width="260" height="130" rx="16" fill="rgba(80,210,193,0.06)"/>
166
- <text x="390" y="588" fill="#50D2C1" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" letter-spacing="1.6">PROFILE</text>
167
- <text x="390" y="618" fill="#A8F0E6" font-family="Outfit, system-ui, sans-serif" font-size="18" font-weight="500">hyperliquid agent</text>
168
- <text x="390" y="640" fill="#9BB6D1" font-family="Outfit, system-ui, sans-serif" font-size="12" font-weight="300">perps · hip-3/4 · ta</text>
169
- <rect x="390" y="658" width="170" height="20" rx="10" fill="none" stroke="rgba(80,210,193,0.35)"/>
170
- <text x="475" y="672" fill="#50D2C1" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="9" text-anchor="middle">Hyperliquid · HyperEVM 999</text>
171
- </g>
172
-
173
- <!-- robinhood -->
174
- <g>
175
- <rect x="660" y="560" width="260" height="130" rx="16" fill="#111925" stroke="rgba(215,255,77,0.40)" stroke-width="1.2"/>
176
- <rect x="660" y="560" width="260" height="130" rx="16" fill="rgba(215,255,77,0.05)"/>
177
- <text x="680" y="588" fill="#d7ff4d" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" letter-spacing="1.6">PROFILE</text>
178
- <text x="680" y="618" fill="#EAF7B0" font-family="Outfit, system-ui, sans-serif" font-size="18" font-weight="500">robinhood agent</text>
179
- <text x="680" y="640" fill="#9BB6D1" font-family="Outfit, system-ui, sans-serif" font-size="12" font-weight="300">markets · nfts · names</text>
180
- <rect x="680" y="658" width="150" height="20" rx="10" fill="none" stroke="rgba(215,255,77,0.35)"/>
181
- <text x="755" y="672" fill="#d7ff4d" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="9" text-anchor="middle">Robinhood Chain 4663</text>
182
- </g>
183
-
184
- <!-- solana -->
185
- <g>
186
- <rect x="950" y="560" width="200" height="130" rx="16" fill="#111925" stroke="rgba(153,69,255,0.45)" stroke-width="1.2"/>
187
- <rect x="950" y="560" width="200" height="130" rx="16" fill="rgba(153,69,255,0.06)"/>
188
- <text x="970" y="588" fill="#9945FF" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" letter-spacing="1.6">PROFILE</text>
189
- <text x="970" y="618" fill="#D4B3FF" font-family="Outfit, system-ui, sans-serif" font-size="18" font-weight="500">solana agent</text>
190
- <text x="970" y="640" fill="#9BB6D1" font-family="Outfit, system-ui, sans-serif" font-size="12" font-weight="300">jup · nfts · dexs</text>
191
- <rect x="970" y="658" width="70" height="20" rx="10" fill="none" stroke="rgba(153,69,255,0.35)"/>
192
- <text x="1005" y="672" fill="#c4a0ff" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="9" text-anchor="middle">Solana</text>
193
- </g>
194
-
195
- <!-- bitcoin (top-right of profile row) -->
196
- <g>
197
- <rect x="1160" y="520" width="160" height="130" rx="16" fill="#111925" stroke="rgba(240,185,11,0.40)" stroke-width="1.2"/>
198
- <rect x="1160" y="520" width="160" height="130" rx="16" fill="rgba(240,185,11,0.05)"/>
199
- <text x="1180" y="548" fill="#F0B90B" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" letter-spacing="1.6">PROFILE</text>
200
- <text x="1180" y="578" fill="#F8E29A" font-family="Outfit, system-ui, sans-serif" font-size="18" font-weight="500">bitcoin</text>
201
- <text x="1180" y="600" fill="#9BB6D1" font-family="Outfit, system-ui, sans-serif" font-size="12" font-weight="300">ord · runes</text>
202
- <rect x="1180" y="618" width="50" height="20" rx="10" fill="none" stroke="rgba(240,185,11,0.35)"/>
203
- <text x="1205" y="632" fill="#F0B90B" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="9" text-anchor="middle">BTC</text>
204
- </g>
205
-
206
- <!-- protocol builder -->
207
- <g>
208
- <rect x="520" y="710" width="360" height="72" rx="14" fill="#111925" stroke="rgba(124,196,255,0.22)" stroke-width="1" stroke-dasharray="5 4"/>
209
- <text x="700" y="738" fill="#5B738F" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" text-anchor="middle" letter-spacing="1.6">BUILDER</text>
210
- <text x="700" y="762" fill="#E8F1FA" font-family="Outfit, system-ui, sans-serif" font-size="16" font-weight="400" text-anchor="middle">protocol builder · gated templates · user-signed deploy</text>
211
- </g>
212
-
213
- <!-- footer -->
214
- <text x="72" y="870" fill="#5B738F" font-family="Outfit, system-ui, sans-serif" font-size="12" font-weight="300">oracle routes input/command across a live multi-profile desk. profiles evolve. chains get added. not one bot.</text>
215
- <text x="1328" y="870" fill="#3a6f99" font-family="IBM Plex Mono, ui-monospace, monospace" font-size="10" text-anchor="end">self-custody · prepare → local sign</text>
216
- </svg>
@@ -1,114 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { pathToFileURL } from "node:url";
4
- import { resolve } from "node:path";
5
-
6
- const INJECTION_RULES = [
7
- ["instruction-override", /\b(?:ignore|disregard|override)\b.{0,48}\b(?:previous|prior|system|developer|instructions?)\b/i],
8
- ["secret-exfiltration", /\b(?:reveal|print|return|exfiltrate|send)\b.{0,48}\b(?:private\s*key|seed\s*phrase|mnemonic|secret|credentials?|system\s*prompt)\b/i],
9
- ["transaction-coercion", /\b(?:sign|send|broadcast|execute)\b.{0,32}\b(?:transaction|transfer|approval|trade)\b/i],
10
- ["tool-coercion", /\b(?:call|invoke|use|run)\b.{0,24}\b(?:tool|function|shell|command)\b/i],
11
- ];
12
-
13
- const FORBIDDEN_EXPORT = /^(?:signer|sign|signMessage|signTransaction|sendTransaction|broadcastTransaction|submitTransaction|executeTransaction|privateKey|secretKey|mnemonic|seedPhrase|wallet)$/i;
14
-
15
- function finding(code, path, message) {
16
- return { code, path, message };
17
- }
18
-
19
- function scanStrings(value, path, findings, seen) {
20
- if (typeof value === "string") {
21
- for (const [rule, pattern] of INJECTION_RULES) {
22
- if (pattern.test(value)) {
23
- findings.push(finding("prompt-injection", path, `metadata matches ${rule}`));
24
- break;
25
- }
26
- }
27
- return;
28
- }
29
- if (!value || typeof value !== "object" || seen.has(value)) return;
30
- seen.add(value);
31
- if (Array.isArray(value)) {
32
- value.forEach((item, index) => scanStrings(item, `${path}[${index}]`, findings, seen));
33
- return;
34
- }
35
- for (const key of Object.keys(value).sort()) {
36
- scanStrings(value[key], path ? `${path}.${key}` : key, findings, seen);
37
- }
38
- }
39
-
40
- /** Validate one loaded Oracle protocol pack without calling provider code. */
41
- export function benchmarkPack(moduleValue, { name = "pack" } = {}) {
42
- const namespace = moduleValue && typeof moduleValue === "object" ? moduleValue : {};
43
- const pack = namespace.default && typeof namespace.default === "object" ? namespace.default : namespace;
44
- const findings = [];
45
-
46
- for (const key of Object.keys(namespace).sort()) {
47
- if (key !== "default" && FORBIDDEN_EXPORT.test(key)) {
48
- findings.push(finding("forbidden-signer-export", `exports.${key}`, `pack exports custody capability ${key}`));
49
- }
50
- }
51
- for (const key of Object.keys(pack).sort()) {
52
- if (FORBIDDEN_EXPORT.test(key)) {
53
- findings.push(finding("forbidden-signer-export", `pack.${key}`, `pack exports custody capability ${key}`));
54
- }
55
- }
56
-
57
- if (!pack.provider || typeof pack.provider !== "object") {
58
- findings.push(finding("missing-provider", "pack.provider", "provider metadata is required"));
59
- }
60
- if (typeof pack.prepare !== "function") {
61
- findings.push(finding("missing-prepare", "pack.prepare", "prepare must be a function"));
62
- }
63
- if (typeof pack.decode !== "function") {
64
- findings.push(finding("missing-decoder", "pack.decode", "decode must be a function"));
65
- }
66
- if (!(Array.isArray(pack.riskRules) || typeof pack.riskRules === "function")) {
67
- findings.push(finding("missing-risk-rules", "pack.riskRules", "riskRules must be an array or function"));
68
- }
69
- if (!pack.tests || typeof pack.tests !== "object" || Array.isArray(pack.tests) || Object.keys(pack.tests).length === 0) {
70
- findings.push(finding("missing-tests", "pack.tests", "non-empty tests metadata is required"));
71
- }
72
-
73
- // Metadata is untrusted even when nested below token/NFT records. Scan data only;
74
- // functions are deliberately never invoked by this local harness.
75
- scanStrings(pack.metadata, "pack.metadata", findings, new Set());
76
- scanStrings(pack.provider, "pack.provider", findings, new Set());
77
-
78
- findings.sort((a, b) => `${a.code}\0${a.path}\0${a.message}`.localeCompare(`${b.code}\0${b.path}\0${b.message}`));
79
- return { name, ok: findings.length === 0, findings };
80
- }
81
-
82
- /** Run a stable summary over already-loaded fixture/module records. */
83
- export function runAdversarialBenchmark(entries) {
84
- const results = entries
85
- .map((entry, index) => benchmarkPack(entry.module ?? entry, { name: entry.name ?? `pack-${index + 1}` }))
86
- .sort((a, b) => a.name.localeCompare(b.name));
87
- return {
88
- ok: results.every((result) => result.ok),
89
- packs: results.length,
90
- passed: results.filter((result) => result.ok).length,
91
- failed: results.filter((result) => !result.ok).length,
92
- findings: results.reduce((count, result) => count + result.findings.length, 0),
93
- results,
94
- };
95
- }
96
-
97
- async function main(paths) {
98
- if (paths.length === 0) throw new Error("usage: node scripts/adversarial-bench.mjs <pack.mjs> [...]");
99
- const entries = [];
100
- for (const input of paths) {
101
- const absolute = resolve(input);
102
- entries.push({ name: input, module: await import(pathToFileURL(absolute).href) });
103
- }
104
- const summary = runAdversarialBenchmark(entries);
105
- process.stdout.write(`${JSON.stringify(summary, null, 2)}\n`);
106
- if (!summary.ok) process.exitCode = 1;
107
- }
108
-
109
- if (process.argv[1] && import.meta.url === pathToFileURL(resolve(process.argv[1])).href) {
110
- main(process.argv.slice(2)).catch((error) => {
111
- process.stdout.write(`${JSON.stringify({ ok: false, error: String(error.message || error) }, null, 2)}\n`);
112
- process.exitCode = 2;
113
- });
114
- }
@@ -1,230 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Build the Oracle inscription SVG.
3
-
4
- Text is converted to OUTLINED VECTOR PATHS so the inscription is fully
5
- self-contained: no font file, no external fetch, no <text> element that renders
6
- differently in every ordinals explorer. Design language is the Oracle splash:
7
- deep #0B1018 field, #7CC4FF blue, Cormorant Garamond display italic accent,
8
- IBM Plex Mono eyebrow, a single luminous orb.
9
- """
10
-
11
- import math
12
- import os
13
-
14
- from fontTools.ttLib import TTFont
15
- from fontTools.pens.svgPathPen import SVGPathPen
16
- from fontTools.varLib.instancer import instantiateVariableFont
17
-
18
- import os
19
- from pathlib import Path
20
-
21
- REPO_ROOT = Path(__file__).resolve().parent.parent
22
-
23
- W, H = 1000, 1000
24
-
25
- BG = "#0B1018"
26
- BLUE = "#7CC4FF"
27
- BLUE2 = "#A7D8FF"
28
- COOL = "#9BB6D1"
29
- MUTE = "#5B738F"
30
-
31
- # vertical rhythm
32
- CX = W / 2.0
33
- CY = 336.0
34
- R_OUT = 166.0
35
- R_MID = 128.0
36
- R_IN = 92.0
37
- MARK_BASELINE = 690.0
38
- SUB_BASELINE = 786.0
39
-
40
-
41
- def load(path, wght):
42
- f = TTFont(path)
43
- if "fvar" in f:
44
- f = instantiateVariableFont(f, {"wght": wght}, inplace=False, updateFontNames=False)
45
- return f
46
-
47
-
48
- def text_paths(font, text, size, letter_spacing=0.0):
49
- """Return (path_d, advance_width) with the text laid out at `size` px."""
50
- upem = font["head"].unitsPerEm
51
- scale = size / upem
52
- cmap = font.getBestCmap()
53
- gs = font.getGlyphSet()
54
- hmtx = font["hmtx"]
55
-
56
- try:
57
- kern = font["kern"].kernTables[0].kernTable
58
- except Exception:
59
- kern = None
60
-
61
- parts = []
62
- x = 0.0
63
- prev = None
64
-
65
- for ch in text:
66
- gname = cmap.get(ord(ch))
67
- if gname is None:
68
- x += size * 0.3
69
- prev = None
70
- continue
71
- if prev and kern:
72
- x += kern.get((prev, gname), 0) * scale
73
- pen = SVGPathPen(gs)
74
- gs[gname].draw(pen)
75
- d = pen.getCommands()
76
- if d:
77
- # flip Y (font space is y-up, SVG is y-down) and place at x
78
- parts.append(
79
- f'<g transform="translate({x:.3f},0) scale({scale:.6f},{-scale:.6f})">'
80
- f'<path d="{d}"/></g>'
81
- )
82
- x += hmtx[gname][0] * scale + letter_spacing
83
- prev = gname
84
- # trailing letter-spacing is not part of the inked width
85
- if letter_spacing and text:
86
- x -= letter_spacing
87
- return "".join(parts), x
88
-
89
-
90
- def centered(font, text, size, y, fill, letter_spacing=0.0, opacity=None):
91
- d, width = text_paths(font, text, size, letter_spacing)
92
- if not d:
93
- return ""
94
- x = (W - width) / 2.0
95
- op = f' opacity="{opacity}"' if opacity is not None else ""
96
- return f'<g transform="translate({x:.3f},{y:.3f})" fill="{fill}"{op}>{d}</g>'
97
-
98
-
99
- def arc(cx, cy, r, a0, a1):
100
- """SVG arc path between two angles in degrees."""
101
- x0 = cx + math.cos(math.radians(a0)) * r
102
- y0 = cy + math.sin(math.radians(a0)) * r
103
- x1 = cx + math.cos(math.radians(a1)) * r
104
- y1 = cy + math.sin(math.radians(a1)) * r
105
- large = 1 if abs(a1 - a0) > 180 else 0
106
- sweep = 1 if a1 > a0 else 0
107
- return f"M{x0:.2f} {y0:.2f} A{r} {r} 0 {large} {sweep} {x1:.2f} {y1:.2f}"
108
-
109
-
110
- def main():
111
- display_italic = load("/tmp/CormorantGaramond-Italic.ttf", 400)
112
- display = load("/tmp/CormorantGaramond.ttf", 300)
113
- mono = TTFont(os.environ.get("IBM_PLEX_MONO", str(Path.home() / ".local/share/fonts/protocols/IBMPlexMono-Regular.ttf")))
114
-
115
- o = []
116
- o.append(f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 {W} {H}" width="{W}" height="{H}">')
117
-
118
- o.append(
119
- "<defs>"
120
- '<radialGradient id="halo" cx="50%" cy="34%" r="54%">'
121
- f'<stop offset="0%" stop-color="{BLUE}" stop-opacity=".20"/>'
122
- f'<stop offset="52%" stop-color="{BLUE}" stop-opacity=".05"/>'
123
- f'<stop offset="100%" stop-color="{BLUE}" stop-opacity="0"/>'
124
- "</radialGradient>"
125
- '<radialGradient id="orb" cx="50%" cy="50%" r="50%">'
126
- '<stop offset="0%" stop-color="#F2FAFF"/>'
127
- f'<stop offset="38%" stop-color="{BLUE2}"/>'
128
- f'<stop offset="100%" stop-color="{BLUE}" stop-opacity=".14"/>'
129
- "</radialGradient>"
130
- '<linearGradient id="rule" x1="0" y1="0" x2="1" y2="0">'
131
- f'<stop offset="0%" stop-color="{BLUE}" stop-opacity="0"/>'
132
- f'<stop offset="50%" stop-color="{BLUE}" stop-opacity=".6"/>'
133
- f'<stop offset="100%" stop-color="{BLUE}" stop-opacity="0"/>'
134
- "</linearGradient>"
135
- '<linearGradient id="sweep" x1="0" y1="0" x2="1" y2="1">'
136
- f'<stop offset="0%" stop-color="{BLUE}" stop-opacity="0"/>'
137
- '<stop offset="100%" stop-color="#EAF6FF" stop-opacity=".95"/>'
138
- "</linearGradient>"
139
- "</defs>"
140
- )
141
-
142
- o.append(f'<rect width="{W}" height="{H}" fill="{BG}"/>')
143
- o.append(f'<rect width="{W}" height="{H}" fill="url(#halo)"/>')
144
-
145
- # --- orbit rings: readable at thumbnail size --------------------------
146
- o.append(
147
- f'<circle cx="{CX}" cy="{CY}" r="{R_OUT}" fill="none" '
148
- f'stroke="{BLUE}" stroke-opacity=".24" stroke-width="1.1"/>'
149
- )
150
- o.append(
151
- f'<circle cx="{CX}" cy="{CY}" r="{R_MID}" fill="none" '
152
- f'stroke="{BLUE}" stroke-opacity=".16" stroke-width="1"/>'
153
- )
154
- o.append(
155
- f'<circle cx="{CX}" cy="{CY}" r="{R_IN}" fill="none" '
156
- f'stroke="{BLUE}" stroke-opacity=".34" stroke-width="1" stroke-dasharray="1.5 7"/>'
157
- )
158
-
159
- # the agentic sweep: one bright arc, the thing that is moving
160
- o.append(
161
- f'<path d="{arc(CX, CY, R_OUT, -96, 4)}" fill="none" '
162
- 'stroke="url(#sweep)" stroke-width="2.2" stroke-linecap="round"/>'
163
- )
164
-
165
- # 8 lane ticks on the outer ring
166
- for i in range(8):
167
- a = math.radians(-90 + i * 45)
168
- x1 = CX + math.cos(a) * R_OUT
169
- y1 = CY + math.sin(a) * R_OUT
170
- x2 = CX + math.cos(a) * (R_OUT - 13)
171
- y2 = CY + math.sin(a) * (R_OUT - 13)
172
- o.append(
173
- f'<line x1="{x1:.2f}" y1="{y1:.2f}" x2="{x2:.2f}" y2="{y2:.2f}" '
174
- f'stroke="{BLUE}" stroke-opacity=".5" stroke-width="1.5"/>'
175
- )
176
-
177
- # node dots on the mid ring
178
- for i in range(4):
179
- a = math.radians(-45 + i * 90)
180
- x = CX + math.cos(a) * R_MID
181
- y = CY + math.sin(a) * R_MID
182
- o.append(f'<circle cx="{x:.2f}" cy="{y:.2f}" r="2.6" fill="{BLUE}" opacity=".72"/>')
183
-
184
- # --- the orb ----------------------------------------------------------
185
- o.append(f'<circle cx="{CX}" cy="{CY}" r="52" fill="url(#orb)" opacity=".20"/>')
186
- o.append(f'<circle cx="{CX}" cy="{CY}" r="16" fill="url(#orb)"/>')
187
- o.append(
188
- f'<circle cx="{CX}" cy="{CY}" r="16" fill="none" '
189
- 'stroke="#F2FAFF" stroke-opacity=".55" stroke-width=".9"/>'
190
- )
191
-
192
- # --- eyebrow ----------------------------------------------------------
193
- o.append(centered(mono, "ORACLE", 16, 122, BLUE, letter_spacing=7.4))
194
- o.append(f'<rect x="{CX - 84}" y="143" width="168" height="1" fill="url(#rule)"/>')
195
-
196
- # --- the mark ---------------------------------------------------------
197
- o.append(centered(display_italic, "oracle", 178, MARK_BASELINE, BLUE2))
198
- o.append(centered(display, "was here", 92, SUB_BASELINE, COOL, opacity=".9"))
199
-
200
- # --- footer -----------------------------------------------------------
201
- o.append(f'<rect x="{CX - 132}" y="836" width="264" height="1" fill="url(#rule)"/>')
202
- o.append(centered(mono, "THE FUTURE IS AGENTIC", 14.5, 880, BLUE, letter_spacing=4.0))
203
- o.append(centered(mono, "BITCOIN L1", 12, 916, MUTE, letter_spacing=3.4))
204
-
205
- # --- corner registration marks ---------------------------------------
206
- m, ln = 52, 24
207
- for (x, y, dx, dy) in ((m, m, 1, 1), (W - m, m, -1, 1), (m, H - m, 1, -1), (W - m, H - m, -1, -1)):
208
- o.append(
209
- f'<path d="M{x} {y + dy * ln} L{x} {y} L{x + dx * ln} {y}" fill="none" '
210
- f'stroke="{BLUE}" stroke-opacity=".38" stroke-width="1.3"/>'
211
- )
212
-
213
- o.append("</svg>")
214
-
215
- svg = "".join(o)
216
- path = str(REPO_ROOT / "artifacts/inscription/oracle-was-here.svg")
217
- os.makedirs(os.path.dirname(path), exist_ok=True)
218
- with open(path, "w") as f:
219
- f.write(svg)
220
-
221
- # sanity: the mark must not collide with the ring group
222
- mark_cap_top = MARK_BASELINE - 178 * 0.74
223
- ring_bottom = CY + R_OUT
224
- print(f"wrote {path}")
225
- print(f"bytes {len(svg.encode())}")
226
- print(f"ring_bottom={ring_bottom:.1f} mark_cap_top={mark_cap_top:.1f} clearance={mark_cap_top - ring_bottom:.1f}px")
227
-
228
-
229
- if __name__ == "__main__":
230
- main()