@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
package/SETUP.md DELETED
@@ -1,381 +0,0 @@
1
- # Setup
2
-
3
- ## Unified CLI
4
-
5
- Prefer the root `oracle` command:
6
-
7
- ```bash
8
- npm i -g @oracle-agent/oracle
9
- oracle
10
- oracle init --apply
11
- oracle doctor
12
- ```
13
-
14
- Full reference: [docs/cli.md](./docs/cli.md). Connectors: [docs/connectors.md](./docs/connectors.md).
15
-
16
-
17
- Oracle's public surface runs locally against your API accounts and never accepts
18
- a wallet private key. Prepared actions are signed in the user's wallet.
19
-
20
- ## Install
21
-
22
- ```bash
23
- npm install @oracle-agent/oracle # Node >= 20.19.0
24
- ```
25
-
26
- Or from source, if you want to run the suite:
27
-
28
- ```bash
29
- git clone https://github.com/demi-hl/oracle.git
30
- cd oracle
31
- npm install
32
- npm test
33
- ```
34
-
35
- ## The one thing to understand first
36
-
37
- Oracle has two distribution boundaries and they are separate on purpose:
38
-
39
- | Plane | What it does | Needs a key? |
40
- |---|---|---|
41
- | **Read / prepare** | Market data, quotes, and *unsigned* transactions or EIP-712 actions | No, mostly |
42
- | **Owner-local source lane** | Optional companion `@oracle-agent/operator` — keys on YOUR machine | Yes |
43
-
44
- A prepared object is inert. It becomes real only when something signs it. You
45
- choose whether that something is your browser wallet or separately operated
46
- owner-local infrastructure.
47
-
48
- ## Public posture: always prepare-only
49
-
50
- The public data facade rejects `hl-exec` even when a signing key exists in the
51
- environment. The npm artifact excludes the key vault and live signer modules.
52
- Wallet signing, submission, receipt confirmation, and revocation happen outside
53
- that public surface.
54
-
55
- ### Capability is not authorization
56
-
57
- The public Oracle profile must report these as separate planes:
58
-
59
- | Plane | Default capability |
60
- |---|---|
61
- | Public Oracle package | read, quote, simulate, unsigned prepare |
62
- | Generic `oracle-signer` daemon | six bounded surfaces: `hl`, `poly`, `evm-swap`, `evm-bridge`, `btc`, `sol` (each fails closed on empty allowlists) |
63
- | Ordinary EVM | unsigned preparation, user-wallet signature |
64
- | Optional owner-gated EVM executor | one exact bounded action after explicit `arm` |
65
-
66
- The optional EVM executor is not bundled into this public package and must never be exposed over LAN or a tailnet. A profile may describe bounded EVM execution as available only after verifying that separate local executor and its owner gate. Otherwise say the current deployment is prepare-only. Do not claim EVM execution is universally impossible.
67
-
68
- Action records require explicit fields:
69
-
70
- ```json
71
- {
72
- "active": true,
73
- "actionMode": "alert_only"
74
- }
75
- ```
76
-
77
- `watch`, `watch this`, and `ping me` always use `alert_only`. `arm` uses `execute` only for one exact owner-authorized action. A legacy `status: armed` field is not execution authority.
78
-
79
- ---
80
-
81
- ## Source-only operator credentials
82
-
83
- This section applies only to an owner-local source checkout. These signing
84
- credentials are not consumed by the public package entrypoints.
85
-
86
- ## Keys: what each one unlocks
87
-
88
- Everything is optional. Oracle degrades to whatever you have configured.
89
-
90
- ### Hyperliquid — perps, spot, staking
91
-
92
- Hyperliquid does not issue API keys. You authorize with an **Ethereum private
93
- key**, either your account key or (recommended) an **API wallet**.
94
-
95
- Create an API wallet at <https://app.hyperliquid.xyz/API>. It can trade your
96
- account but **cannot withdraw**, which is exactly what you want for an agent.
97
-
98
- ```bash
99
- export HL_PRIVATE_KEY=0xabc... # the API wallet's key
100
- # or, better, keep it in a file:
101
- export HL_KEY_FILE=~/.config/oracle/keys/hl.key
102
- ```
103
-
104
- Reads (prices, funding, order books, your positions) need **no key at all**.
105
-
106
- ### Polymarket — prediction markets
107
-
108
- Two different credentials, for two different things:
109
-
110
- ```bash
111
- # 1. L2 API credentials — read your orders, post orders to the CLOB
112
- export POLYMARKET_API_KEY=...
113
- export POLYMARKET_API_SECRET=...
114
- export POLYMARKET_API_PASSPHRASE=...
115
-
116
- # 2. The Polygon key that actually owns the funds
117
- export POLYMARKET_PRIVATE_KEY=0x...
118
- ```
119
-
120
- Derive the L2 credentials from your wallet at <https://polymarket.com> under
121
- API access, or via the CLOB `create-api-key` endpoint. Public market data,
122
- prices, and order books need **no credentials**.
123
-
124
- ### Everything else
125
-
126
- | Variable | Unlocks | Without it |
127
- |---|---|---|
128
- | `OPENSEA_API_KEY` | NFT collections, listings, offers | Heavily rate limited |
129
- | `MAGICEDEN_API_KEY` | Solana NFT buy/list/mint intents | Floor and listing reads still work |
130
- | `SATFLOW_API_KEY` | Bitcoin ordinals + runes marketplace | Esplora reads still work |
131
- | `ZEROX_API_KEY` | 0x swap routing | Other routers still quote |
132
- | `ONEINCH_API_KEY` | 1inch routing | Other routers still quote |
133
- | `UNISAT_API_KEY` | Ordinals/BRC-20 indexing | Tip and UTXOs still work |
134
- | `ORACLE_ROUTE_ATTESTATION_SECRET` | HMAC-signs route and slippage guards | **Required for swap sign/broadcast.** Read/quote/prepare still work. Fresh installs: `oracle-init --apply` writes one to `~/.config/oracle/exec.env`. Unsigned guards are refused at the signer boundary. |
135
-
136
- Chain RPCs default to public endpoints. Override any of them:
137
-
138
- ```bash
139
- export ETH_RPC_URL=https://...
140
- export BASE_RPC_URL=https://...
141
- export SOLANA_RPC_URL=https://...
142
- ```
143
-
144
- `/balance` and plain `balance` need only public addresses. Set any families the
145
- wallet uses, then start `oracle-data` from the same environment:
146
-
147
- ```bash
148
- export ORACLE_EVM_ADDRESS=0x...
149
- export ORACLE_SOLANA_ADDRESS=...
150
- export ORACLE_BITCOIN_ADDRESS=bc1...
151
- export ORACLE_HYPERLIQUID_ADDRESS=0x... # optional, defaults to EVM address
152
- npx oracle-data
153
- ```
154
-
155
- Missing address families are reported as `not-configured`, failed providers as
156
- `unavailable`, and unsupported chain families as `unsupported`. They are never
157
- reported as zero. EVM native balances cover every configured EVM chain. Solana
158
- adds SPL and Token-2022 accounts, Bitcoin adds Runes and inscriptions when an
159
- address indexer is configured, Hyperliquid adds spot and perp account state, and
160
- NFT inventory adds OpenSea-supported EVM/Solana collections plus Bitcoin
161
- inscriptions where owner indexers are available.
162
-
163
- Every `portfolio_snapshot` call appends one compact observation to
164
- `$HERMES_HOME/state/oracle/portfolio-history.jsonl` with mode `0600`. It stores a
165
- public-address fingerprint, coverage, value breakdown, and warnings, not keys,
166
- prepared transactions, or raw NFT metadata. Override the internal location only
167
- when needed:
168
-
169
- ```bash
170
- export ORACLE_PORTFOLIO_HISTORY_FILE="$HOME/.local/state/oracle/portfolio-history.jsonl"
171
- ```
172
-
173
- `portfolio_history` reads those observations. `portfolio_value_graph` returns an
174
- SVG chart of known priced value and omits unavailable observations instead of
175
- plotting them as zero.
176
-
177
- ---
178
-
179
- ## Where keys are stored
180
-
181
- **Oracle never transmits your keys anywhere except the venue they authenticate
182
- to.** Provider endpoints are pinned: if something redirects a provider's
183
- `baseUrl` to another host, the credential is dropped rather than forwarded.
184
- A plaintext `http://` downgrade also drops it.
185
-
186
- Three options, worst to best:
187
-
188
- ### 1. Environment variables
189
-
190
- Fine for a laptop. Visible in `ps`, inherited by child processes, and easy to
191
- leak into a shell history or a log.
192
-
193
- ### 2. A key file
194
-
195
- ```bash
196
- mkdir -p ~/.config/oracle/keys && chmod 700 ~/.config/oracle/keys
197
- printf '%s' "0xYOUR_KEY" > ~/.config/oracle/keys/hl.key
198
- chmod 600 ~/.config/oracle/keys/hl.key
199
- export HL_KEY_FILE=~/.config/oracle/keys/hl.key
200
- ```
201
-
202
- Keeps the secret out of the process environment.
203
-
204
- ### 3. An encrypted vault (recommended)
205
-
206
- Install the companion and use its CLI (not shipped in this package):
207
-
208
- ```bash
209
- npm i -g @oracle-agent/operator # or npm i -D in your project
210
- oracle-vault encrypt ~/.config/oracle/keys/hl.key
211
- # writes hl.key.vault.json (scrypt N=2^17 + AES-256-GCM)
212
- # moves hl.key -> hl.key.plaintext.bak
213
-
214
- export ORACLE_VAULT_PASSPHRASE="..." # or be prompted
215
- export HL_KEY_FILE=~/.config/oracle/keys/hl.key.vault.json
216
-
217
- # verify it unlocks, THEN destroy the plaintext backup
218
- oracle-vault inspect ~/.config/oracle/keys/hl.key.vault.json
219
- shred -u ~/.config/oracle/keys/hl.key.plaintext.bak
220
- ```
221
-
222
- The operator vault decrypts in memory only. The key is never written back to
223
- disk, never logged, and never included in any returned object.
224
-
225
- **What the vault does and does not protect.** It defends against a key file read
226
- by something that is not you: a synced backup, a stolen laptop at rest, an
227
- overly-broad `chmod`, a leaked tarball. It does **not** defend against malware
228
- running as your user while the vault is unlocked. Nothing file-based does. If
229
- you need that, use a hardware wallet and the prepare-only path.
230
-
231
- ```bash
232
- oracle-vault rekey <vault> # rotate the passphrase
233
- oracle-vault inspect <vault> # show KDF params, no secret
234
- ```
235
-
236
- ---
237
-
238
- ## Two ways to trade
239
-
240
- ### A. Non-custodial — Oracle never sees a key
241
-
242
- Oracle prepares, your wallet signs:
243
-
244
- ```js
245
- import { data } from "./src/index.mjs";
246
-
247
- const order = await data.call("hl-perps", "prepareOrder", {
248
- coin: "BTC", side: "buy", type: "limit", price: "60000", size: "0.01",
249
- });
250
-
251
- // order.action + order.signingReady === false
252
- // Hand order.action to the user's wallet. Oracle is done.
253
- ```
254
-
255
- ### B. Owner-local execution
256
-
257
- The public `data.call()` facade refuses `hl-exec`. Operator signing lives in
258
- [`@oracle-agent/operator`](https://github.com/demi-hl/oracle-operator) on your
259
- machine with your key. Import `hlSignAndSubmit` from that package — never from
260
- this one. Do not expose it on a public HTTP port.
261
-
262
- The public prepare path hard-caps slippage at 100 bps, bounds leverage by the
263
- asset maximum, rounds sizes and prices to venue precision, and makes brackets
264
- reduce-only. Any separately operated executor must enforce those controls again
265
- at its signing and broadcast boundaries.
266
-
267
- ---
268
-
269
- ## Model providers: use anything, but Hermes is better here
270
-
271
- Oracle is a library — it does not care what drives it. Point Claude, GPT,
272
- Gemini, Grok, a local Llama, or your own script at it. The tools are plain
273
- functions and an MCP server.
274
-
275
- ```bash
276
- npx oracle-data # local read plane on 127.0.0.1:8787
277
- npx oracle-data-mcp # MCP stdio server, works with any MCP client (needs oracle-data up)
278
- ```
279
-
280
- **Why [Hermes](https://claude-code.nousresearch.com/docs) is the better host: per-profile routing.**
281
-
282
- A trading stack is not one workload, it is several with opposite requirements,
283
- and a single model config is wrong for all of them at once:
284
-
285
- - **Research** — wide context, cheap, tolerant of latency. A big cheap model.
286
- - **Execution** — fast and deterministic. Latency is money; a slow model turns
287
- a limit order into a market order.
288
- - **Risk review** — the strongest model available, because this is the one that
289
- says no.
290
- - **Alerts and crons** — small and cheap, running unattended all day.
291
-
292
- Hermes gives each of those its own **profile**: its own model, its own tools,
293
- its own memory, its own key scope. The research profile can hold no signing key
294
- at all. The execution profile can hold one but run a fast model. The risk
295
- profile can be the expensive model that reviews what the others propose.
296
-
297
- That last point is the real argument. **Different model lineages have different
298
- blind spots.** Oracle's own pre-release audit ran four — Grok 4.5, Opus 5,
299
- Fable 5, and GPT-5.6 — and each found a critical issue the others missed:
300
-
301
- - a credential leak in an HTTP dedupe cache
302
- - a `Number()` truncation that made a signing UI display a different amount
303
- than the one being signed
304
- - a spending guard that authorized any amount when both limit fields were
305
- omitted
306
- - a cap passed as a JS number above 2^53 that silently rounded **upward**
307
-
308
- One model reviewing its own work would have shipped three of those. Per-profile
309
- routing is what makes running several practical instead of theoretical.
310
-
311
- Everything still works fine with a single provider. It is just better with a
312
- router that knows which brain to use for which job.
313
-
314
- ### Operator hardening (0.4+)
315
-
316
- Prefer the local signer daemon so the agent never sees the vault passphrase:
317
-
318
- ```bash
319
- npx oracle-signer # reads the passphrase from the OS credential store
320
- # agent: ORACLE_SIGNER_URL + ORACLE_SIGNER_TOKEN only
321
- ```
322
-
323
- See [oracle-operator SETUP](https://github.com/demi-hl/oracle-operator/blob/main/SETUP.md).
324
-
325
- ## Local HIP-3 / HIP-4 / Polymarket (no VPS)
326
-
327
- ### Hyperliquid HIP-3 (builder perps)
328
- ```js
329
- const prep = await data.call("hl-perps", "prepareOrder", {
330
- coin: "xyz:TSLA", side: "buy", type: "limit", price: "250", size: "1",
331
- });
332
- await hlSignAndSubmit(prep, { keyFile, userInitiated: true });
333
- // or signViaDaemon({ surface: "hl", prepared: prep, userInitiated: true })
334
- ```
335
-
336
- ### Hyperliquid HIP-4 (outcomes)
337
- ```js
338
- const prep = await data.call("hl-outcome", "prepareOrder", {
339
- outcome: 969, side: "yes", // or coin: "#9690"
340
- side: "buy", type: "limit", price: "0.42", size: "20",
341
- });
342
- await hlSignAndSubmit(prep, { keyFile, userInitiated: true });
343
- ```
344
-
345
- ### Polymarket (local CLOB)
346
- ```js
347
- const prep = await data.call("poly-clob", "prepareOrder", {
348
- tokenId, side: "BUY", price: 0.45, size: 10,
349
- maker: eoa, signer: eoa, tickSize: "0.01",
350
- });
351
- // signer process needs POLYMARKET_API_KEY/SECRET/PASSPHRASE + key
352
- await polySignAndSubmit(prep, { keyFile, userInitiated: true });
353
- // or signViaDaemon({ surface: "poly", prepared: prep, userInitiated: true })
354
- ```
355
-
356
- ## Protocol templates (builder)
357
-
358
- Gated Foundry templates under `protocols/templates/`.
359
-
360
- ```bash
361
- # requires Foundry (forge)
362
- cd protocols/templates/safe-erc20 && forge install && forge test
363
- npm run protocol:gate -- safe-erc20
364
- ```
365
-
366
- `prepareTemplateDeploy` will not stamp an unsigned deploy unless `forge test` passes.
367
- **Not a paid security-firm audit** — see each template `SECURITY.md`.
368
-
369
-
370
- ## Optional keyed prepare stamps (hardening)
371
-
372
- Integrity hash is always on. For a shared HMAC between prepare process and signer:
373
-
374
- ```bash
375
- # same secret on prepare host and signer host (not in the agent chat)
376
- export ORACLE_STAMP_HMAC_SECRET='long-random-secret'
377
- # signer-only: refuse envelopes without MAC
378
- export ORACLE_STAMP_REQUIRE_MAC=1
379
- ```
380
-
381
- Default remains hash-only (public GO path). HMAC is opt-in hardening.
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000" width="1000" height="1000"><defs><radialGradient id="halo" cx="50%" cy="34%" r="54%"><stop offset="0%" stop-color="#7CC4FF" stop-opacity=".20"/><stop offset="52%" stop-color="#7CC4FF" stop-opacity=".05"/><stop offset="100%" stop-color="#7CC4FF" stop-opacity="0"/></radialGradient><radialGradient id="orb" cx="50%" cy="50%" r="50%"><stop offset="0%" stop-color="#F2FAFF"/><stop offset="38%" stop-color="#A7D8FF"/><stop offset="100%" stop-color="#7CC4FF" stop-opacity=".14"/></radialGradient><linearGradient id="rule" x1="0" y1="0" x2="1" y2="0"><stop offset="0%" stop-color="#7CC4FF" stop-opacity="0"/><stop offset="50%" stop-color="#7CC4FF" stop-opacity=".6"/><stop offset="100%" stop-color="#7CC4FF" stop-opacity="0"/></linearGradient><linearGradient id="sweep" x1="0" y1="0" x2="1" y2="1"><stop offset="0%" stop-color="#7CC4FF" stop-opacity="0"/><stop offset="100%" stop-color="#EAF6FF" stop-opacity=".95"/></linearGradient></defs><rect width="1000" height="1000" fill="#0B1018"/><rect width="1000" height="1000" fill="url(#halo)"/><circle cx="500.0" cy="336.0" r="166.0" fill="none" stroke="#7CC4FF" stroke-opacity=".24" stroke-width="1.1"/><circle cx="500.0" cy="336.0" r="128.0" fill="none" stroke="#7CC4FF" stroke-opacity=".16" stroke-width="1"/><circle cx="500.0" cy="336.0" r="92.0" fill="none" stroke="#7CC4FF" stroke-opacity=".34" stroke-width="1" stroke-dasharray="1.5 7"/><path d="M482.65 170.91 A166.0 166.0 0 0 1 665.60 347.58" fill="none" stroke="url(#sweep)" stroke-width="2.2" stroke-linecap="round"/><line x1="500.00" y1="170.00" x2="500.00" y2="183.00" stroke="#7CC4FF" stroke-opacity=".5" stroke-width="1.5"/><line x1="617.38" y1="218.62" x2="608.19" y2="227.81" stroke="#7CC4FF" stroke-opacity=".5" stroke-width="1.5"/><line x1="666.00" y1="336.00" x2="653.00" y2="336.00" stroke="#7CC4FF" stroke-opacity=".5" stroke-width="1.5"/><line x1="617.38" y1="453.38" x2="608.19" y2="444.19" stroke="#7CC4FF" stroke-opacity=".5" stroke-width="1.5"/><line x1="500.00" y1="502.00" x2="500.00" y2="489.00" stroke="#7CC4FF" stroke-opacity=".5" stroke-width="1.5"/><line x1="382.62" y1="453.38" x2="391.81" y2="444.19" stroke="#7CC4FF" stroke-opacity=".5" stroke-width="1.5"/><line x1="334.00" y1="336.00" x2="347.00" y2="336.00" stroke="#7CC4FF" stroke-opacity=".5" stroke-width="1.5"/><line x1="382.62" y1="218.62" x2="391.81" y2="227.81" stroke="#7CC4FF" stroke-opacity=".5" stroke-width="1.5"/><circle cx="590.51" cy="245.49" r="2.6" fill="#7CC4FF" opacity=".72"/><circle cx="590.51" cy="426.51" r="2.6" fill="#7CC4FF" opacity=".72"/><circle cx="409.49" cy="426.51" r="2.6" fill="#7CC4FF" opacity=".72"/><circle cx="409.49" cy="245.49" r="2.6" fill="#7CC4FF" opacity=".72"/><circle cx="500.0" cy="336.0" r="52" fill="url(#orb)" opacity=".20"/><circle cx="500.0" cy="336.0" r="16" fill="url(#orb)"/><circle cx="500.0" cy="336.0" r="16" fill="none" stroke="#F2FAFF" stroke-opacity=".55" stroke-width=".9"/><g transform="translate(452.700,122.000)" fill="#7CC4FF"><g transform="translate(0.000,0) scale(0.016000,-0.016000)"><path d="M300 -12Q236 -12 190.0 12.5Q144 37 114.0 83.0Q84 129 70.0 196.0Q56 263 56 349Q56 434 70.0 501.5Q84 569 114.0 615.0Q144 661 190.0 685.5Q236 710 300 710Q364 710 410.0 685.5Q456 661 486.0 615.0Q516 569 530.0 501.5Q544 434 544 349Q544 263 530.0 196.0Q516 129 486.0 83.0Q456 37 410.0 12.5Q364 -12 300 -12ZM300 61Q342 61 371.0 77.5Q400 94 419.0 124.0Q438 154 446.5 196.5Q455 239 455 292V406Q455 458 446.5 501.0Q438 544 419.0 574.0Q400 604 371.0 620.5Q342 637 300 637Q258 637 229.0 620.5Q200 604 181.0 574.0Q162 544 153.5 501.0Q145 458 145 406V292Q145 239 153.5 196.5Q162 154 181.0 124.0Q200 94 229.0 77.5Q258 61 300 61Z"/></g><g transform="translate(17.000,0) scale(0.016000,-0.016000)"><path d="M174 0H90V698H344Q441 698 492.0 645.0Q543 592 543 497Q543 412 499.0 361.0Q455 310 371 302L549 0H455L285 298H174ZM342 369Q395 369 424.5 395.5Q454 422 454 471V523Q454 572 424.5 598.5Q395 625 342 625H174V369Z"/></g><g transform="translate(34.000,0) scale(0.016000,-0.016000)"><path d="M481 0 422 199H177L118 0H31L245 698H356L570 0ZM304 609H295L197 272H402Z"/></g><g transform="translate(51.000,0) scale(0.016000,-0.016000)"><path d="M323 -12Q195 -12 132.5 81.0Q70 174 70 349Q70 524 132.5 617.0Q195 710 323 710Q371 710 406.0 697.0Q441 684 466.0 662.0Q491 640 508.0 612.5Q525 585 538 557L466 524Q457 547 445.0 567.5Q433 588 416.5 603.5Q400 619 377.5 628.0Q355 637 323 637Q240 637 199.5 574.0Q159 511 159 406V292Q159 187 199.5 124.0Q240 61 323 61Q355 61 377.5 70.0Q400 79 416.5 94.5Q433 110 445.0 130.5Q457 151 466 174L538 141Q525 112 508.0 85.0Q491 58 466.0 36.0Q441 14 406.0 1.0Q371 -12 323 -12Z"/></g><g transform="translate(68.000,0) scale(0.016000,-0.016000)"><path d="M120 0V698H204V73H535V0Z"/></g><g transform="translate(85.000,0) scale(0.016000,-0.016000)"><path d="M90 0V698H520V625H174V390H508V317H174V73H520V0Z"/></g></g><rect x="416.0" y="143" width="168" height="1" fill="url(#rule)"/><g transform="translate(313.367,690.000)" fill="#A7D8FF"><g transform="translate(0.000,0) scale(0.178000,-0.178000)"><path d="M154.00006103515625 -14Q106.199951171875 -14 75.2999267578125 13.800018310546875Q44.39990234375 41.60003662109375 33.199920654296875 88.60003662109375Q21.99993896484375 135.60003662109375 32.7999267578125 193Q43.99993896484375 251.60003662109375 74.79995727539062 298.10003662109375Q105.5999755859375 344.60003662109375 149.60000610351562 371.8000183105469Q193.60003662109375 399 243.40008544921875 399Q295.400146484375 399 326.8001708984375 370.70001220703125Q358.2001953125 342.4000244140625 368.40020751953125 295.5000305175781Q378.6002197265625 248.60003662109375 367.40020751953125 193Q355.2001953125 129.7999267578125 321.7001647949219 82.89993286132812Q288.20013427734375 35.99993896484375 243.80010986328125 10.999969482421875Q199.40008544921875 -14 154.00006103515625 -14ZM188.800048828125 11Q230.39990234375 11 264.6997375488281 47.300018310546875Q298.99957275390625 83.60003662109375 310.799560546875 149Q317.99957275390625 186.0001220703125 315.89959716796875 225.30014038085938Q313.79962158203125 264.60015869140625 301.9996643066406 298.6001281738281Q290.19970703125 332.60009765625 268.1997985839844 353.800048828125Q246.19989013671875 375 213.60003662109375 375Q172.000244140625 375 137.20040893554688 337.800048828125Q102.40057373046875 300.60009765625 89.40057373046875 236Q81.40057373046875 197.39990234375 84.00054931640625 157.9998779296875Q86.60052490234375 118.599853515625 99.1004638671875 85.19989013671875Q111.60040283203125 51.7999267578125 134.40029907226562 31.39996337890625Q157.2001953125 11 188.800048828125 11Z"/></g><g transform="translate(70.844,0) scale(0.178000,-0.178000)"><path d="M110.600341796875 7.2000732421875 100.600341796875 8.2000732421875Q109.0003662109375 53.2001953125 123.600341796875 105.70022583007812Q138.2003173828125 158.20025634765625 157.30026245117188 209.20022583007812Q176.40020751953125 260.2001953125 198.20016479492188 302.3001403808594Q220.0001220703125 344.40008544921875 243.20010375976562 369.7000427246094Q266.40008544921875 395 289.0001220703125 395Q302.60015869140625 395 316.0002136230469 387.6999816894531Q329.4002685546875 380.39996337890625 337.6003112792969 367.99993896484375Q345.80035400390625 355.59991455078125 342.80035400390625 340.9998779296875Q340.20037841796875 327.9998779296875 331.8003234863281 320.7997741699219Q323.4002685546875 313.59967041015625 310.8001708984375 313.59967041015625Q295.8001708984375 313.59967041015625 288.4001159667969 321.899658203125Q281.00006103515625 330.19964599609375 275.5 338.4996337890625Q269.99993896484375 346.79962158203125 259.7999267578125 346.79962158203125Q245.5999755859375 346.79962158203125 228.80001831054688 323.2996520996094Q212.00006103515625 299.7996826171875 193.90011596679688 261.5997314453125Q175.8001708984375 223.3997802734375 159.50021362304688 177.89984130859375Q143.20025634765625 132.39990234375 130.30029296875 87.39996337890625Q117.40032958984375 42.4000244140625 110.600341796875 7.2000732421875ZM79.39996337890625 -8Q65.19989013671875 -8 60.999847412109375 -6.29998779296875Q56.7998046875 -4.5999755859375 56.7998046875 -1.5999755859375Q56.7998046875 1.60003662109375 62.399810791015625 26.399993896484375Q67.99981689453125 51.199951171875 71.99981689453125 74L104.99993896484375 258.6005859375Q112.79986572265625 298.80023193359375 110.9998779296875 319.3000793457031Q109.19989013671875 339.7999267578125 102.2999267578125 347.69989013671875Q95.39996337890625 355.599853515625 86.5999755859375 355.599853515625Q72.800048828125 355.599853515625 56.7000732421875 343.9998779296875Q40.60009765625 332.39990234375 26.4000244140625 318.7998046875Q24 316.3997802734375 20.0 320.09979248046875Q16 323.7998046875 18.4000244140625 326.99981689453125Q48.0001220703125 361.199951171875 74.20016479492188 378.0999755859375Q100.40020751953125 395 126.000244140625 395Q144.00030517578125 395 153.80032348632812 383.4000244140625Q163.600341796875 371.800048828125 164.90036010742188 342.8002014160156Q166.20037841796875 313.80035400390625 156.40045166015625 261.000732421875L110.600341796875 7.2000732421875Q108.40032958984375 -8 79.39996337890625 -8Z"/></g><g transform="translate(131.364,0) scale(0.178000,-0.178000)"><path d="M80.60003662109375 -13Q48.20001220703125 -13 31.0999755859375 11.100006103515625Q13.99993896484375 35.20001220703125 21.199951171875 91Q28.99993896484375 145.199951171875 55.699951171875 199.49993896484375Q82.39996337890625 253.7999267578125 120.5 299.0999450683594Q158.60003662109375 344.39996337890625 201.7000732421875 371.6999816894531Q244.80010986328125 399 284.400146484375 399Q302.8001708984375 399 320.6002197265625 392.29998779296875Q338.4002685546875 385.5999755859375 351.1003112792969 370.2999572753906Q363.80035400390625 354.99993896484375 365.80035400390625 330.39990234375L323.40008544921875 357Q335.60015869140625 359 352.1001892089844 373.3999938964844Q368.6002197265625 387.79998779296875 373.600341796875 407Q375.600341796875 410 381.100341796875 408.79998779296875Q386.600341796875 407.5999755859375 385.600341796875 405.5999755859375L327.600341796875 89Q317.80035400390625 30.8001708984375 342.60028076171875 30.8001708984375Q354.20025634765625 30.8001708984375 371.40020751953125 43.5001220703125Q388.60015869140625 56.2000732421875 409.40008544921875 77Q412.40008544921875 80 416.40008544921875 76.0Q420.40008544921875 72 417.40008544921875 69Q384.80010986328125 32 358.10009765625 11.5Q331.40008544921875 -9 305.40008544921875 -9Q280.5999755859375 -9 273.89990234375 12.9000244140625Q267.1998291015625 34.800048828125 276.7998046875 89L300.99981689453125 229L317.9998779296875 246Q288.39996337890625 170.39990234375 248.39999389648438 111.59991455078125Q208.4000244140625 52.7999267578125 165.00003051757812 19.89996337890625Q121.60003662109375 -13 80.60003662109375 -13ZM116.6004638671875 36.0003662109375Q144.60040283203125 36.0003662109375 174.60031127929688 57.800323486328125Q204.6002197265625 79.60028076171875 232.30010986328125 115.2001953125Q260 150.80010986328125 280.4999084472656 193.49996948242188Q300.99981689453125 236.1998291015625 309.19976806640625 276.9996337890625Q317.19976806640625 313.999755859375 301.9997863769531 339.19976806640625Q286.7998046875 364.3997802734375 249.59991455078125 363.59979248046875Q215.20001220703125 362.7998046875 179.00015258789062 332.59991455078125Q142.80029296875 302.4000244140625 115.00039672851562 251.60018920898438Q87.20050048828125 200.80035400390625 77.4005126953125 136.00054931640625Q69.80047607421875 85.80035400390625 79.4005126953125 60.900360107421875Q89.00054931640625 36.0003662109375 116.6004638671875 36.0003662109375Z"/></g><g transform="translate(208.616,0) scale(0.178000,-0.178000)"><path d="M156.800048828125 -13Q114.20001220703125 -13 86.5 6.399993896484375Q58.79998779296875 25.79998779296875 44.999969482421875 57.5999755859375Q31.199951171875 89.39996337890625 28.99993896484375 127.39996337890625Q26.7999267578125 165.39996337890625 34.59991455078125 202Q47.9998779296875 265.199951171875 82.29989624023438 308.7999572753906Q116.59991455078125 352.39996337890625 161.39996337890625 375.6999816894531Q206.20001220703125 399 249.00006103515625 399Q272.800048828125 399 293.2000732421875 391.70001220703125Q313.60009765625 384.4000244140625 325.3001403808594 371.0Q337.00018310546875 357.5999755859375 335.00018310546875 339.9998779296875Q334.00018310546875 327.19976806640625 326.10009765625 317.4997253417969Q318.20001220703125 307.7996826171875 302.39990234375 307.7996826171875Q288.19970703125 307.7996826171875 279.3996887207031 316.69976806640625Q270.59967041015625 325.599853515625 265.99969482421875 339.9998779296875Q262.7996826171875 351.7999267578125 250.999755859375 364.59991455078125Q239.1998291015625 377.39990234375 213.7999267578125 377.39990234375Q181.0001220703125 377.39990234375 157.1002197265625 357.5999450683594Q133.2003173828125 337.79998779296875 118.40036010742188 305.4000244140625Q103.60040283203125 273.00006103515625 95.8004150390625 233.00006103515625Q86.00042724609375 178.00006103515625 92.50042724609375 129.60009765625Q99.00042724609375 81.20013427734375 125.10040283203125 51.400177001953125Q151.20037841796875 21.6002197265625 198.600341796875 21.6002197265625Q232.400146484375 21.6002197265625 258.3001403808594 35.900146484375Q284.20013427734375 50.2000732421875 305.00006103515625 67Q307.800048828125 69 311.800048828125 65.0Q315.800048828125 61 313.00006103515625 58Q272.0001220703125 21 232.90008544921875 4.0Q193.800048828125 -13 156.800048828125 -13Z"/></g><g transform="translate(270.026,0) scale(0.178000,-0.178000)"><path d="M90.800048828125 -9Q64.7999267578125 -9 58.19989013671875 13.200042724609375Q51.599853515625 35.40008544921875 61.1998291015625 89L160.39971923828125 619.3995361328125Q166.79974365234375 654.5997314453125 153.09976196289062 663.7997436523438Q139.3997802734375 672.999755859375 93.599853515625 650.5997924804688Q89.599853515625 648.7998046875 87.19985961914062 654.7998046875Q84.79986572265625 660.7998046875 88.79986572265625 661.7998046875L218.20025634765625 725Q222.4002685546875 727 226.4002685546875 723.0Q230.4002685546875 719 229.4002685546875 717L113.40032958984375 89Q106.600341796875 58.60003662109375 112.00033569335938 44.700103759765625Q117.40032958984375 30.8001708984375 129.4002685546875 30.8001708984375Q140.4002685546875 30.8001708984375 157.40020751953125 43.600128173828125Q174.400146484375 56.40008544921875 195.2000732421875 77Q199.2000732421875 81 203.2000732421875 77.0Q207.2000732421875 73 203.2000732421875 69Q170.60009765625 32 144.00009155273438 11.5Q117.40008544921875 -9 90.800048828125 -9Z"/></g><g transform="translate(312.212,0) scale(0.178000,-0.178000)"><path d="M155.2000732421875 -12Q102 -12 71.49996948242188 15.800018310546875Q40.99993896484375 43.60003662109375 31.49993896484375 88.60003662109375Q21.99993896484375 133.60003662109375 31.7999267578125 185Q38.199951171875 222.4000244140625 58.799957275390625 260.5000305175781Q79.39996337890625 298.60003662109375 110.19998168945312 329.9000244140625Q141 361.20001220703125 179.20004272460938 380.1000061035156Q217.40008544921875 399 260.400146484375 399Q296.6002197265625 399 314.3002624511719 384.6000061035156Q332.00030517578125 370.20001220703125 327.600341796875 345Q323.0003662109375 321.39996337890625 300.2003479003906 299.3999328613281Q277.40032958984375 277.39990234375 241.10028076171875 259.5998840332031Q204.80023193359375 241.79986572265625 160.3001708984375 229.099853515625Q115.80010986328125 216.39984130859375 68.2000732421875 210.599853515625L70.2000732421875 223.599853515625Q146.79998779296875 234.599853515625 199.19992065429688 259.29986572265625Q251.599853515625 283.9998779296875 260.99981689453125 324Q268.19976806640625 350.7999267578125 252.09988403320312 361.39996337890625Q236 372 215.60003662109375 372Q182.2001953125 372 156.90029907226562 351.1000061035156Q131.60040283203125 330.20001220703125 115.700439453125 295.20001220703125Q99.80047607421875 260.20001220703125 92.80047607421875 218Q82.4005126953125 162.2000732421875 90.60049438476562 118.20010375976562Q98.80047607421875 74.20013427734375 124.80044555664062 48.300140380859375Q150.8004150390625 22.400146484375 193.400390625 22.400146484375Q217.2003173828125 22.400146484375 243.30029296875 29.400146484375Q269.4002685546875 36.400146484375 293.80023193359375 55.0001220703125Q296.6002197265625 57.0001220703125 300.1002197265625 53.0001220703125Q303.6002197265625 49.0001220703125 300.80023193359375 46.20013427734375Q262.80023193359375 14.800048828125 226.70016479492188 1.4000244140625Q190.60009765625 -12 155.2000732421875 -12Z"/></g></g><g transform="translate(347.096,786.000)" fill="#9BB6D1" opacity=".9"><g transform="translate(0.000,0) scale(0.092000,-0.092000)"><path d="M439 1 302 303Q282 348 269.0 361.0Q256 374 237 374Q235 374 235.0 380.0Q235 386 237 386Q252 386 268.5 385.0Q285 384 299 384Q332 384 356.0 385.0Q380 386 400 386Q403 386 403.0 380.0Q403 374 400 374Q369 374 350.0 366.5Q331 359 343 335L473 50L450 22L568 311Q582 346 565.0 360.0Q548 374 492 374Q490 374 490.0 380.0Q490 386 492 386Q516 386 537.5 385.0Q559 384 593 384Q614 384 627.0 385.0Q640 386 658 386Q661 386 661.0 380.0Q661 374 658 374Q635 374 619.0 360.0Q603 346 586 305L461 1Q459 -3 450.0 -3.0Q441 -3 439 1ZM205 1 68 303Q48 348 35.0 361.0Q22 374 4 374Q1 374 1.0 380.0Q1 386 4 386Q18 386 34.5 385.0Q51 384 65 384Q96 384 120.0 385.0Q144 386 166 386Q169 386 169.0 380.0Q169 374 166 374Q133 374 116.5 366.0Q100 358 110 335L240 50L216 22L325 285L339 271L227 1Q226 -3 216.5 -3.0Q207 -3 205 1Z"/></g><g transform="translate(61.364,0) scale(0.092000,-0.092000)"><path d="M313 -6Q309 -8 305 -8Q293 -8 283.0 13.0Q273 34 273 74V267Q273 329 253.5 353.0Q234 377 205 377Q180 377 163.5 365.5Q147 354 138.5 337.0Q130 320 126 305Q124 295 119.0 281.5Q114 268 94 268Q79 268 71.5 277.0Q64 286 64 296Q64 313 82.0 330.5Q100 348 127.5 363.0Q155 378 185.0 387.0Q215 396 240 396Q281 396 300.0 369.5Q319 343 319 297V108Q319 72 327.5 55.5Q336 39 357 39Q376 39 412 54Q417 56 419.0 50.5Q421 45 416 43ZM136 -7Q99 -7 79.5 13.5Q60 34 60 61Q60 78 68.5 94.0Q77 110 98.5 125.0Q120 140 158 154L283 201L285 188L167 143Q146 135 135.0 125.5Q124 116 120.0 105.5Q116 95 116 84Q116 62 130.5 44.0Q145 26 173 26Q184 26 196.0 29.5Q208 33 225 43L292 82L294 70L219 23Q194 7 175.0 0.0Q156 -7 136 -7Z"/></g><g transform="translate(99.912,0) scale(0.092000,-0.092000)"><path d="M96 322Q96 295 109.5 276.5Q123 258 144.5 245.5Q166 233 189 221Q215 209 238.0 194.5Q261 180 276.0 160.0Q291 140 291 108Q291 76 275.0 49.0Q259 22 227.5 5.5Q196 -11 151 -11Q127 -11 104.0 -4.5Q81 2 57 20Q55 22 53.0 25.0Q51 28 51 32L49 104Q49 107 54.5 107.5Q60 108 61 105Q74 71 91.5 49.5Q109 28 131.0 18.0Q153 8 180 8Q215 8 233.5 24.5Q252 41 250 74Q249 103 235.0 121.0Q221 139 200.0 151.0Q179 163 156 174Q131 186 108.5 199.5Q86 213 71.5 234.0Q57 255 57 288Q57 326 77.0 350.5Q97 375 127.5 387.0Q158 399 191 399Q209 399 227.0 395.5Q245 392 262 384Q271 380 271 373Q271 358 270.0 341.0Q269 324 269 304Q269 302 263.0 302.0Q257 302 257 304Q257 327 240.5 344.0Q224 361 200.5 370.0Q177 379 154 379Q127 379 111.5 365.0Q96 351 96 322Z"/></g><g transform="translate(152.536,0) scale(0.092000,-0.092000)"><path d="M27 0Q24 0 24.0 6.0Q24 12 27 12Q68 12 80.0 25.0Q92 38 92 81V600Q92 636 85.0 652.5Q78 669 60 669Q44 669 12 654Q8 652 5.5 657.5Q3 663 7 665L130 725Q131 725 131.0 725.0Q131 725 132 725Q135 725 137.0 723.0Q139 721 139 718V81Q139 38 151.0 25.0Q163 12 205 12Q207 12 207.0 6.0Q207 0 205 0Q187 0 164.5 1.0Q142 2 116 2Q91 2 67.5 1.0Q44 0 27 0ZM296 0Q293 0 293.0 6.0Q293 12 296 12Q337 12 349.0 25.0Q361 38 361 81V244Q361 363 267 363Q228 363 188.5 337.5Q149 312 120 269L116 281Q163 343 206.0 369.5Q249 396 294 396Q348 396 378.0 366.5Q408 337 408 275V81Q408 38 420.0 25.0Q432 12 474 12Q476 12 476.0 6.0Q476 0 474 0Q456 0 433.5 1.0Q411 2 385 2Q360 2 336.5 1.0Q313 0 296 0Z"/></g><g transform="translate(198.168,0) scale(0.092000,-0.092000)"><path d="M215 -12Q156 -12 116.5 15.5Q77 43 57.0 87.0Q37 131 37 180Q37 241 65.0 289.5Q93 338 140.5 366.5Q188 395 244 395Q301 395 329.0 364.0Q357 333 357 281Q357 268 354.5 262.0Q352 256 345 256H298Q303 318 278.5 346.5Q254 375 212 375Q156 375 125.0 332.5Q94 290 94 216Q94 160 112.0 115.5Q130 71 165.0 45.5Q200 20 250 20Q285 20 307.5 30.5Q330 41 351 54Q353 56 356.5 51.5Q360 47 358 44Q323 14 287.5 1.0Q252 -12 215 -12ZM81 255 80 267 308 271V256Z"/></g><g transform="translate(235.428,0) scale(0.092000,-0.092000)"><path d="M139 271 135 281Q172 327 195.5 351.5Q219 376 236.0 385.5Q253 395 269 395Q290 395 310.0 384.0Q330 373 330 357Q330 347 322.5 339.0Q315 331 301 331Q289 331 280.5 338.0Q272 345 262.0 351.5Q252 358 235 358Q226 358 215.5 352.5Q205 347 187.5 328.5Q170 310 139 271ZM46 0Q43 0 43.0 6.0Q43 12 46 12Q87 12 99.0 25.0Q111 38 111 81V281Q111 315 103.0 330.5Q95 346 75 346Q65 346 51.0 342.0Q37 338 19 331Q15 330 12.5 335.0Q10 340 14 342L125 394Q127 395 130 395Q137 395 147.5 374.5Q158 354 158 315V81Q158 52 165.0 37.0Q172 22 193.5 17.0Q215 12 258 12Q261 12 261.0 6.0Q261 0 258 0Q234 0 202.0 1.0Q170 2 135 2Q110 2 86.5 1.0Q63 0 46 0Z"/></g><g transform="translate(268.548,0) scale(0.092000,-0.092000)"><path d="M215 -12Q156 -12 116.5 15.5Q77 43 57.0 87.0Q37 131 37 180Q37 241 65.0 289.5Q93 338 140.5 366.5Q188 395 244 395Q301 395 329.0 364.0Q357 333 357 281Q357 268 354.5 262.0Q352 256 345 256H298Q303 318 278.5 346.5Q254 375 212 375Q156 375 125.0 332.5Q94 290 94 216Q94 160 112.0 115.5Q130 71 165.0 45.5Q200 20 250 20Q285 20 307.5 30.5Q330 41 351 54Q353 56 356.5 51.5Q360 47 358 44Q323 14 287.5 1.0Q252 -12 215 -12ZM81 255 80 267 308 271V256Z"/></g></g><rect x="368.0" y="836" width="264" height="1" fill="url(#rule)"/><g transform="translate(368.650,880.000)" fill="#7CC4FF"><g transform="translate(0.000,0) scale(0.014500,-0.014500)"><path d="M342 625V0H258V625H25V698H575V625Z"/></g><g transform="translate(12.700,0) scale(0.014500,-0.014500)"><path d="M436 317H164V0H80V698H164V390H436V698H520V0H436Z"/></g><g transform="translate(25.400,0) scale(0.014500,-0.014500)"><path d="M90 0V698H520V625H174V390H508V317H174V73H520V0Z"/></g><g transform="translate(50.800,0) scale(0.014500,-0.014500)"><path d="M90 0V698H530V625H174V390H500V317H174V0Z"/></g><g transform="translate(63.500,0) scale(0.014500,-0.014500)"><path d="M164 698V279Q164 228 167.0 188.0Q170 148 183.0 119.5Q196 91 223.5 76.0Q251 61 300 61Q349 61 376.5 76.0Q404 91 417.0 119.5Q430 148 433.0 188.0Q436 228 436 279V698H520V299Q520 221 512.5 163.0Q505 105 481.5 66.0Q458 27 414.5 7.5Q371 -12 300 -12Q229 -12 185.5 7.5Q142 27 118.5 66.0Q95 105 87.5 163.0Q80 221 80 299V698Z"/></g><g transform="translate(76.200,0) scale(0.014500,-0.014500)"><path d="M342 625V0H258V625H25V698H575V625Z"/></g><g transform="translate(88.900,0) scale(0.014500,-0.014500)"><path d="M164 698V279Q164 228 167.0 188.0Q170 148 183.0 119.5Q196 91 223.5 76.0Q251 61 300 61Q349 61 376.5 76.0Q404 91 417.0 119.5Q430 148 433.0 188.0Q436 228 436 279V698H520V299Q520 221 512.5 163.0Q505 105 481.5 66.0Q458 27 414.5 7.5Q371 -12 300 -12Q229 -12 185.5 7.5Q142 27 118.5 66.0Q95 105 87.5 163.0Q80 221 80 299V698Z"/></g><g transform="translate(101.600,0) scale(0.014500,-0.014500)"><path d="M174 0H90V698H344Q441 698 492.0 645.0Q543 592 543 497Q543 412 499.0 361.0Q455 310 371 302L549 0H455L285 298H174ZM342 369Q395 369 424.5 395.5Q454 422 454 471V523Q454 572 424.5 598.5Q395 625 342 625H174V369Z"/></g><g transform="translate(114.300,0) scale(0.014500,-0.014500)"><path d="M90 0V698H520V625H174V390H508V317H174V73H520V0Z"/></g><g transform="translate(139.700,0) scale(0.014500,-0.014500)"><path d="M84 0V67H258V631H84V698H516V631H342V67H516V0Z"/></g><g transform="translate(152.400,0) scale(0.014500,-0.014500)"><path d="M298 -12Q204 -12 144.0 22.5Q84 57 45 111L106 161Q147 110 192.5 85.0Q238 60 301 60Q377 60 417.0 95.0Q457 130 457 193Q457 244 428.0 272.5Q399 301 327 313L249 326Q198 335 163.5 353.0Q129 371 108.0 396.5Q87 422 78.0 452.5Q69 483 69 516Q69 612 132.0 661.0Q195 710 302 710Q386 710 443.5 682.0Q501 654 536 603L477 552Q448 590 407.0 614.0Q366 638 301 638Q230 638 192.0 608.0Q154 578 154 518Q154 471 182.5 441.5Q211 412 285 399L360 386Q411 377 446.0 359.0Q481 341 502.5 316.0Q524 291 533.0 260.0Q542 229 542 195Q542 98 478.5 43.0Q415 -12 298 -12Z"/></g><g transform="translate(177.800,0) scale(0.014500,-0.014500)"><path d="M481 0 422 199H177L118 0H31L245 698H356L570 0ZM304 609H295L197 272H402Z"/></g><g transform="translate(190.500,0) scale(0.014500,-0.014500)"><path d="M444 93H439Q430 73 418.0 54.0Q406 35 387.5 20.5Q369 6 343.0 -3.0Q317 -12 281 -12Q167 -12 111.5 80.0Q56 172 56 344Q56 524 117.0 617.0Q178 710 305 710Q354 710 390.0 697.0Q426 684 451.5 662.0Q477 640 494.0 612.5Q511 585 522 557L450 524Q441 547 429.5 567.5Q418 588 401.5 603.5Q385 619 362.0 628.0Q339 637 308 637Q224 637 184.5 574.0Q145 511 145 406V298Q145 245 153.0 201.5Q161 158 179.5 126.0Q198 94 227.5 76.5Q257 59 300 59Q368 59 406.0 100.0Q444 141 444 206V278H297V345H522V0H444Z"/></g><g transform="translate(203.200,0) scale(0.014500,-0.014500)"><path d="M90 0V698H520V625H174V390H508V317H174V73H520V0Z"/></g><g transform="translate(215.900,0) scale(0.014500,-0.014500)"><path d="M163 588H156V0H80V698H199L437 110H444V698H520V0H401Z"/></g><g transform="translate(228.600,0) scale(0.014500,-0.014500)"><path d="M342 625V0H258V625H25V698H575V625Z"/></g><g transform="translate(241.300,0) scale(0.014500,-0.014500)"><path d="M84 0V67H258V631H84V698H516V631H342V67H516V0Z"/></g><g transform="translate(254.000,0) scale(0.014500,-0.014500)"><path d="M323 -12Q195 -12 132.5 81.0Q70 174 70 349Q70 524 132.5 617.0Q195 710 323 710Q371 710 406.0 697.0Q441 684 466.0 662.0Q491 640 508.0 612.5Q525 585 538 557L466 524Q457 547 445.0 567.5Q433 588 416.5 603.5Q400 619 377.5 628.0Q355 637 323 637Q240 637 199.5 574.0Q159 511 159 406V292Q159 187 199.5 124.0Q240 61 323 61Q355 61 377.5 70.0Q400 79 416.5 94.5Q433 110 445.0 130.5Q457 151 466 174L538 141Q525 112 508.0 85.0Q491 58 466.0 36.0Q441 14 406.0 1.0Q371 -12 323 -12Z"/></g></g><g transform="translate(448.700,916.000)" fill="#5B738F"><g transform="translate(0.000,0) scale(0.012000,-0.012000)"><path d="M88 698H325Q415 698 466.0 649.0Q517 600 517 518Q517 455 486.5 419.0Q456 383 408 368V365Q467 351 505.0 312.5Q543 274 543 201Q543 159 529.0 122.0Q515 85 489.5 58.0Q464 31 429.5 15.5Q395 0 355 0H88ZM330 73Q388 73 421.0 99.0Q454 125 454 179V220Q454 273 421.0 299.5Q388 326 330 326H172V73ZM316 395Q369 395 399.0 418.5Q429 442 429 490V529Q429 577 399.0 601.0Q369 625 316 625H172V395Z"/></g><g transform="translate(10.600,0) scale(0.012000,-0.012000)"><path d="M84 0V67H258V631H84V698H516V631H342V67H516V0Z"/></g><g transform="translate(21.200,0) scale(0.012000,-0.012000)"><path d="M342 625V0H258V625H25V698H575V625Z"/></g><g transform="translate(31.800,0) scale(0.012000,-0.012000)"><path d="M323 -12Q195 -12 132.5 81.0Q70 174 70 349Q70 524 132.5 617.0Q195 710 323 710Q371 710 406.0 697.0Q441 684 466.0 662.0Q491 640 508.0 612.5Q525 585 538 557L466 524Q457 547 445.0 567.5Q433 588 416.5 603.5Q400 619 377.5 628.0Q355 637 323 637Q240 637 199.5 574.0Q159 511 159 406V292Q159 187 199.5 124.0Q240 61 323 61Q355 61 377.5 70.0Q400 79 416.5 94.5Q433 110 445.0 130.5Q457 151 466 174L538 141Q525 112 508.0 85.0Q491 58 466.0 36.0Q441 14 406.0 1.0Q371 -12 323 -12Z"/></g><g transform="translate(42.400,0) scale(0.012000,-0.012000)"><path d="M300 -12Q236 -12 190.0 12.5Q144 37 114.0 83.0Q84 129 70.0 196.0Q56 263 56 349Q56 434 70.0 501.5Q84 569 114.0 615.0Q144 661 190.0 685.5Q236 710 300 710Q364 710 410.0 685.5Q456 661 486.0 615.0Q516 569 530.0 501.5Q544 434 544 349Q544 263 530.0 196.0Q516 129 486.0 83.0Q456 37 410.0 12.5Q364 -12 300 -12ZM300 61Q342 61 371.0 77.5Q400 94 419.0 124.0Q438 154 446.5 196.5Q455 239 455 292V406Q455 458 446.5 501.0Q438 544 419.0 574.0Q400 604 371.0 620.5Q342 637 300 637Q258 637 229.0 620.5Q200 604 181.0 574.0Q162 544 153.5 501.0Q145 458 145 406V292Q145 239 153.5 196.5Q162 154 181.0 124.0Q200 94 229.0 77.5Q258 61 300 61Z"/></g><g transform="translate(53.000,0) scale(0.012000,-0.012000)"><path d="M84 0V67H258V631H84V698H516V631H342V67H516V0Z"/></g><g transform="translate(63.600,0) scale(0.012000,-0.012000)"><path d="M163 588H156V0H80V698H199L437 110H444V698H520V0H401Z"/></g><g transform="translate(84.800,0) scale(0.012000,-0.012000)"><path d="M120 0V698H204V73H535V0Z"/></g><g transform="translate(95.400,0) scale(0.012000,-0.012000)"><path d="M85 0V73H285V636H278L102 472L53 525L238 698H369V73H553V0Z"/></g></g><path d="M52 76 L52 52 L76 52" fill="none" stroke="#7CC4FF" stroke-opacity=".38" stroke-width="1.3"/><path d="M948 76 L948 52 L924 52" fill="none" stroke="#7CC4FF" stroke-opacity=".38" stroke-width="1.3"/><path d="M52 924 L52 948 L76 948" fill="none" stroke="#7CC4FF" stroke-opacity=".38" stroke-width="1.3"/><path d="M948 924 L948 948 L924 948" fill="none" stroke="#7CC4FF" stroke-opacity=".38" stroke-width="1.3"/></svg>