@oracle-agent/oracle 0.9.8 → 0.11.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 (160) hide show
  1. package/README.md +15 -10
  2. package/bin/oracle-data-mcp.mjs +9 -0
  3. package/docs/architecture.md +3 -1
  4. package/docs/profiles.md +3 -6
  5. package/docs/public-surface.md +133 -0
  6. package/package.json +3 -2
  7. package/public/oracle-splash/assets/cli-chain-hyperliquid.jpg +0 -0
  8. package/public/oracle-splash/brand/aave.webp +0 -0
  9. package/public/oracle-splash/brand/aavev2.webp +0 -0
  10. package/public/oracle-splash/brand/aborean.webp +0 -0
  11. package/public/oracle-splash/brand/across.webp +0 -0
  12. package/public/oracle-splash/brand/aerodrome.webp +0 -0
  13. package/public/oracle-splash/brand/afi.webp +0 -0
  14. package/public/oracle-splash/brand/arcus.webp +0 -0
  15. package/public/oracle-splash/brand/aster.webp +0 -0
  16. package/public/oracle-splash/brand/avant.webp +0 -0
  17. package/public/oracle-splash/brand/balancer.webp +0 -0
  18. package/public/oracle-splash/brand/beefy.webp +0 -0
  19. package/public/oracle-splash/brand/benqi.webp +0 -0
  20. package/public/oracle-splash/brand/bestinslot.ico +0 -0
  21. package/public/oracle-splash/brand/bitfi.webp +0 -0
  22. package/public/oracle-splash/brand/bonkswap.webp +0 -0
  23. package/public/oracle-splash/brand/bouncebit.webp +0 -0
  24. package/public/oracle-splash/brand/camelot.webp +0 -0
  25. package/public/oracle-splash/brand/compound.webp +0 -0
  26. package/public/oracle-splash/brand/concrete.webp +0 -0
  27. package/public/oracle-splash/brand/cow.webp +0 -0
  28. package/public/oracle-splash/brand/curve.webp +0 -0
  29. package/public/oracle-splash/brand/derive.webp +0 -0
  30. package/public/oracle-splash/brand/dolomite.webp +0 -0
  31. package/public/oracle-splash/brand/eigenlayer.webp +0 -0
  32. package/public/oracle-splash/brand/ekubo.webp +0 -0
  33. package/public/oracle-splash/brand/ethena.webp +0 -0
  34. package/public/oracle-splash/brand/etherfi.webp +0 -0
  35. package/public/oracle-splash/brand/etherfiborrow.webp +0 -0
  36. package/public/oracle-splash/brand/felix.webp +0 -0
  37. package/public/oracle-splash/brand/fluid.webp +0 -0
  38. package/public/oracle-splash/brand/fluxbeam.webp +0 -0
  39. package/public/oracle-splash/brand/folks.webp +0 -0
  40. package/public/oracle-splash/brand/fortyacres.webp +0 -0
  41. package/public/oracle-splash/brand/gainsnetwork.webp +0 -0
  42. package/public/oracle-splash/brand/gassss.webp +0 -0
  43. package/public/oracle-splash/brand/gmx.webp +0 -0
  44. package/public/oracle-splash/brand/harmonix.webp +0 -0
  45. package/public/oracle-splash/brand/hlorderbook.webp +0 -0
  46. package/public/oracle-splash/brand/hlp.webp +0 -0
  47. package/public/oracle-splash/brand/hop.webp +0 -0
  48. package/public/oracle-splash/brand/hyperbeat.webp +0 -0
  49. package/public/oracle-splash/brand/hyperlend.webp +0 -0
  50. package/public/oracle-splash/brand/hyperliquid.webp +0 -0
  51. package/public/oracle-splash/brand/hyperliquidhpl.webp +0 -0
  52. package/public/oracle-splash/brand/hyperliquidspot.webp +0 -0
  53. package/public/oracle-splash/brand/hyperswap.webp +0 -0
  54. package/public/oracle-splash/brand/hypha.webp +0 -0
  55. package/public/oracle-splash/brand/joedex.webp +0 -0
  56. package/public/oracle-splash/brand/jupiter.webp +0 -0
  57. package/public/oracle-splash/brand/kelp.webp +0 -0
  58. package/public/oracle-splash/brand/kinetiq.webp +0 -0
  59. package/public/oracle-splash/brand/kmhype.webp +0 -0
  60. package/public/oracle-splash/brand/kona.webp +0 -0
  61. package/public/oracle-splash/brand/konalend.webp +0 -0
  62. package/public/oracle-splash/brand/lfj.webp +0 -0
  63. package/public/oracle-splash/brand/lido.webp +0 -0
  64. package/public/oracle-splash/brand/lifi.webp +0 -0
  65. package/public/oracle-splash/brand/lighter.webp +0 -0
  66. package/public/oracle-splash/brand/lista.webp +0 -0
  67. package/public/oracle-splash/brand/loopedhype.webp +0 -0
  68. package/public/oracle-splash/brand/lorenzo.webp +0 -0
  69. package/public/oracle-splash/brand/magic-eden.webp +0 -0
  70. package/public/oracle-splash/brand/magiceden.webp +0 -0
  71. package/public/oracle-splash/brand/mempool.png +0 -0
  72. package/public/oracle-splash/brand/meteora.webp +0 -0
  73. package/public/oracle-splash/brand/morpho.webp +0 -0
  74. package/public/oracle-splash/brand/myriad.webp +0 -0
  75. package/public/oracle-splash/brand/noxa.webp +0 -0
  76. package/public/oracle-splash/brand/odos.webp +0 -0
  77. package/public/oracle-splash/brand/oneinch.webp +0 -0
  78. package/public/oracle-splash/brand/openbook.webp +0 -0
  79. package/public/oracle-splash/brand/opensea.webp +0 -0
  80. package/public/oracle-splash/brand/orca.webp +0 -0
  81. package/public/oracle-splash/brand/ordinals.png +0 -0
  82. package/public/oracle-splash/brand/ostium.webp +0 -0
  83. package/public/oracle-splash/brand/pancakeswap.webp +0 -0
  84. package/public/oracle-splash/brand/pendle.webp +0 -0
  85. package/public/oracle-splash/brand/perena.webp +0 -0
  86. package/public/oracle-splash/brand/pharaoh.webp +0 -0
  87. package/public/oracle-splash/brand/phoenix.webp +0 -0
  88. package/public/oracle-splash/brand/polymarket.webp +0 -0
  89. package/public/oracle-splash/brand/polynomial.webp +0 -0
  90. package/public/oracle-splash/brand/projectx.webp +0 -0
  91. package/public/oracle-splash/brand/pumpfun.webp +0 -0
  92. package/public/oracle-splash/brand/quickswap.webp +0 -0
  93. package/public/oracle-splash/brand/rain.webp +0 -0
  94. package/public/oracle-splash/brand/raydium.webp +0 -0
  95. package/public/oracle-splash/brand/relay.webp +0 -0
  96. package/public/oracle-splash/brand/rocketpool.webp +0 -0
  97. package/public/oracle-splash/brand/saber.webp +0 -0
  98. package/public/oracle-splash/brand/sakuraswap.webp +0 -0
  99. package/public/oracle-splash/brand/sanctum.webp +0 -0
  100. package/public/oracle-splash/brand/satflow.png +0 -0
  101. package/public/oracle-splash/brand/sierra.webp +0 -0
  102. package/public/oracle-splash/brand/sky.webp +0 -0
  103. package/public/oracle-splash/brand/solv.webp +0 -0
  104. package/public/oracle-splash/brand/spark.webp +0 -0
  105. package/public/oracle-splash/brand/sparksavings.webp +0 -0
  106. package/public/oracle-splash/brand/sphere.webp +0 -0
  107. package/public/oracle-splash/brand/ssv.webp +0 -0
  108. package/public/oracle-splash/brand/stabble.webp +0 -0
  109. package/public/oracle-splash/brand/stableswap.webp +0 -0
  110. package/public/oracle-splash/brand/stakewise.webp +0 -0
  111. package/public/oracle-splash/brand/stargate.webp +0 -0
  112. package/public/oracle-splash/brand/sthype.webp +0 -0
  113. package/public/oracle-splash/brand/sushiswap.webp +0 -0
  114. package/public/oracle-splash/brand/unisat.png +0 -0
  115. package/public/oracle-splash/brand/uniswap.webp +0 -0
  116. package/public/oracle-splash/brand/uniswapv2.webp +0 -0
  117. package/public/oracle-splash/brand/uniswapv4.webp +0 -0
  118. package/public/oracle-splash/brand/unit.webp +0 -0
  119. package/public/oracle-splash/brand/velodrome.webp +0 -0
  120. package/public/oracle-splash/brand/velora.webp +0 -0
  121. package/public/oracle-splash/brand/venus.webp +0 -0
  122. package/public/oracle-splash/brand/wbeth.webp +0 -0
  123. package/public/oracle-splash/brand/xsy.webp +0 -0
  124. package/public/oracle-splash/brand/yieldyak.webp +0 -0
  125. package/public/oracle-splash/brand/zerobase.webp +0 -0
  126. package/public/oracle-splash/brand/zerox.webp +0 -0
  127. package/public/oracle-splash/index.html +337 -197
  128. package/scripts/check-doc-drift.mjs +11 -0
  129. package/scripts/e2e-solana-bitcoin.mjs +1 -1
  130. package/scripts/secret-scan.mjs +1 -1
  131. package/src/action-receipts.mjs +108 -11
  132. package/src/auth/oauth.mjs +672 -0
  133. package/src/cli/commands/auth.mjs +193 -0
  134. package/src/cli/commands/bootstrap.mjs +2 -2
  135. package/src/cli/commands/chat.mjs +97 -75
  136. package/src/cli/commands/data.mjs +3 -1
  137. package/src/cli/commands/doctor.mjs +11 -1
  138. package/src/cli/commands/model.mjs +79 -23
  139. package/src/cli/kernel.mjs +4 -3
  140. package/src/cli/model-config.mjs +70 -0
  141. package/src/data/catalog.mjs +38 -7
  142. package/src/data/desk-data.mjs +12 -0
  143. package/src/data/providers/evm-rpc.mjs +19 -16
  144. package/src/data/providers/jupiter-venues.mjs +119 -0
  145. package/src/data/providers/jupiter.mjs +132 -0
  146. package/src/data/providers/magiceden-sol.mjs +13 -0
  147. package/src/data/providers/morpho.mjs +6 -2
  148. package/src/data/providers/pendle.mjs +3 -2
  149. package/src/data/providers/satflow.mjs +4 -1
  150. package/src/data/providers/signed-material-guard.mjs +108 -0
  151. package/src/data/providers/uniswap-v3.mjs +34 -5
  152. package/src/data/providers/uniswap-v4.mjs +414 -0
  153. package/src/prepare-envelope.mjs +22 -4
  154. package/src/router/prepare-route.mjs +17 -0
  155. package/src/router/route-sources.mjs +35 -0
  156. package/src/tui/app.mjs +18 -7
  157. package/src/tui/backend.mjs +145 -0
  158. package/src/tui/standalone-client.mjs +666 -0
  159. package/src/cards.mjs +0 -369
  160. package/src/cli/__pycache__/oracle-harness.cpython-311.pyc +0 -0
package/README.md CHANGED
@@ -20,11 +20,12 @@ Specialist agent profiles, real protocol intents, self-custody by default,
20
20
  receipts or it didn't happen.
21
21
 
22
22
  Built for [Hermes](https://github.com/NousResearch/hermes-agent), the
23
- open-source agent runtime from [Nous Research](https://nousresearch.com).
23
+ open-source agent runtime from [Nous Research](https://nousresearch.com), but
24
+ Hermes is optional.
24
25
 
25
- Oracle itself makes **no model calls and needs no API key**. On first chat it
26
- installs an isolated local agent runtime and opens its model/provider picker.
27
- An existing compatible runtime is reused when available.
26
+ Oracle can run standalone model auth directly with API keys or Claude, Codex,
27
+ and Grok OAuth. OAuth credentials use the OS keychain when available, with a
28
+ private `0600` local fallback when keychain storage is unavailable.
28
29
 
29
30
  This package is **prepare-only**: it never takes a private key and never
30
31
  broadcasts. For agentic trading with **your** keys on **your** machine, install
@@ -35,9 +36,7 @@ alongside it — same split we run ourselves.
35
36
 
36
37
  ## Start in 5 steps
37
38
 
38
- Source tree: **oracle `0.5.0`** · **operator `0.14.0`**
39
-
40
- Published npm: **oracle `0.4.2`** · **operator `0.13.7`** until this source release is published.
39
+ Source tree: **oracle `0.11.0`** · **operator `0.7.0`**
41
40
 
42
41
  ```bash
43
42
  # 1) install Oracle's public prepare plane
@@ -212,18 +211,24 @@ known answer. This matters: the canonical QuoterV2 address also has bytecode on
212
211
  Base, but does not price that chain's pairs. A codesize check would have
213
212
  allowlisted the wrong contract.
214
213
 
215
- **30+ providers** in the read/quote catalog:
214
+ **42 provider modules** in the read/quote catalog, covering **219 unique
215
+ protocols/venues** across EVM, Solana, and Bitcoin (115 EVM + cross-chain, 98
216
+ Solana venues backed by 101 verified Jupiter program IDs, 6 Bitcoin surfaces).
217
+ One module can cover many protocols: the Jupiter module alone routes 98 Solana
218
+ venues, so provider-module count and protocol count are different numbers.
216
219
 
217
220
  | Class | Providers |
218
221
  |---|---|
219
222
  | Chain / explorer | EVM JSON-RPC, Blockscout, Solana RPC, Bitcoin Esplora |
220
223
  | Market data | DexScreener, GeckoTerminal, DeFiLlama |
221
- | DEX / aggregator | Uniswap V3, Aerodrome, Curve, Balancer, LI.FI, ParaSwap, Odos, 0x, 1inch |
222
- | Intents | CoW Protocol |
224
+ | DEX / aggregator | Uniswap V3/V4, Aerodrome, Curve, Balancer, LI.FI, ParaSwap, Odos, 0x, 1inch, HyperEVM DEXes |
225
+ | Solana | Jupiter (98 venue labels, 101 verified program IDs) |
226
+ | Intents | CoW Protocol, RFQ |
223
227
  | Perps / lending / yield | GMX v2, Morpho, Pendle |
224
228
  | Bridges | Across, Hop, Relay |
225
229
  | Venues | Hyperliquid (core perps + HIP-3 builder dexs + HIP-4 outcomes), Polymarket (read + local CLOB prepare) |
226
230
  | NFT | OpenSea, Satflow, Magic Eden (Solana) |
231
+ | Bitcoin | mempool/Esplora, Ordinals, Runes, UniSat, Best-in-Slot, Satflow |
227
232
 
228
233
  Every provider and every scanner capability declares an honest tier —
229
234
  `read-only`, `quote-only`, `prepare`, or `intent`. **API coverage is not execution
@@ -345,6 +345,14 @@ const tools = [
345
345
  properties: { transaction: { type: "string" }, sigVerify: { type: "boolean" }, replaceRecentBlockhash: { type: "boolean" } },
346
346
  },
347
347
  },
348
+ {
349
+ name: "jupiter_venues",
350
+ description: "Jupiter Solana venue map, optionally verified on-chain against executable BPF loader ownership. Read-only.",
351
+ inputSchema: {
352
+ type: "object",
353
+ properties: { verify: { type: "boolean" }, rpc: { type: "string" } },
354
+ },
355
+ },
348
356
  {
349
357
  name: "jupiter_quote",
350
358
  description: "Jupiter Solana Swap API quote with a hard <=100 bps slippage cap. Read-only.",
@@ -768,6 +776,7 @@ const ROUTES = {
768
776
  solana_balance: (a) => ({ provider: "solana-rpc", op: "getBalance", args: { address: a.address, commitment: a.commitment } }),
769
777
  solana_token_accounts: (a) => ({ provider: "solana-rpc", op: "tokenAccounts", args: { owner: a.owner, mint: a.mint, commitment: a.commitment } }),
770
778
  solana_simulate: (a) => ({ provider: "solana-rpc", op: "simulate", args: { transaction: a.transaction, sigVerify: a.sigVerify, replaceRecentBlockhash: a.replaceRecentBlockhash } }),
779
+ jupiter_venues: (a) => ({ provider: "jupiter", op: "venues", args: { verify: a.verify, rpc: a.rpc } }),
771
780
  jupiter_quote: (a) => ({ provider: "jupiter", op: "quote", args: { inputMint: a.inputMint, outputMint: a.outputMint, amount: a.amount, slippageBps: a.slippageBps } }),
772
781
  jupiter_prepare: (a) => ({ provider: "jupiter", op: "prepare", args: { userPublicKey: a.userPublicKey, quoteResponse: a.quoteResponse, inputMint: a.inputMint, outputMint: a.outputMint, amount: a.amount, slippageBps: a.slippageBps } }),
773
782
  btc_health: () => ({ provider: "bitcoin-esplora", op: "health", args: {} }),
@@ -49,7 +49,9 @@ fails on:
49
49
 
50
50
  ## Data plane
51
51
 
52
- `src/data/` — 30+ providers, each declaring an honest tier.
52
+ `src/data/` — 42 provider modules covering 219 unique protocols/venues, each
53
+ declaring an honest tier. One module can cover many protocols: the Jupiter
54
+ module alone routes 98 Solana venues.
53
55
 
54
56
  | Tier | Meaning |
55
57
  |---|---|
package/docs/profiles.md CHANGED
@@ -122,14 +122,11 @@ args as separate tokens):
122
122
  npx oracle-data
123
123
 
124
124
  # terminal 2 — wire MCP into a lane
125
- hermes -p polymarket-agent mcp add oracle-data \
126
- --command node \
127
- --args "$(node -p "require.resolve('@oracle-agent/oracle/package.json').replace(/package\\.json$/, 'bin/oracle-data-mcp.mjs')")"
128
- # or after npm link / PATH has the bin:
129
- # hermes -p polymarket-agent mcp add oracle-data --command oracle-data-mcp
125
+ hermes -p polymarket-agent mcp add oracle-data --command oracle-data-mcp
130
126
  ```
131
127
 
132
- Now that lane can read 30+ providers across 11 chains, quote real routes, and
128
+ Now that lane can read 42 provider modules covering 219 protocols/venues across
129
+ EVM, Solana, and Bitcoin, quote real routes, and
133
130
  prepare unsigned transactions — and it still cannot sign anything.
134
131
 
135
132
  ## Posture
@@ -0,0 +1,133 @@
1
+ # Public surface
2
+
3
+ Every supported import subpath, executable, and runtime environment variable in
4
+ `@oracle-agent/oracle`. If something is in `exports`/`bin` it is a public
5
+ contract and belongs here; if it is not meant to be public it should be removed
6
+ from the manifest rather than left undocumented.
7
+
8
+ Generated counts are asserted by `test/public-surface-doc.test.mjs`, so this
9
+ file cannot silently drift from `package.json`.
10
+
11
+ ## Import subpaths
12
+
13
+ | Subpath | What it gives you |
14
+ |---|---|
15
+ | `@oracle-agent/oracle` | package root — re-exports the common surface |
16
+ | `@oracle-agent/oracle/data` | provider catalog + `dataCall` read plane |
17
+ | `@oracle-agent/oracle/policy` | transaction policy: caps, allowlists, `enforceTxPolicy` |
18
+ | `@oracle-agent/oracle/chains` | chain registry and per-chain metadata |
19
+ | `@oracle-agent/oracle/scanner` | token/contract scanner capabilities |
20
+ | `@oracle-agent/oracle/router` | route sources and quote routing |
21
+ | `@oracle-agent/oracle/action-semantics` | decoded-action semantics for review |
22
+ | `@oracle-agent/oracle/address-book` | label store — refuses key material |
23
+ | `@oracle-agent/oracle/nft-gas-war` | NFT mint/gas-war helpers |
24
+ | `@oracle-agent/oracle/prepare-envelope` | `stampPrepared` / `assertPreparedEnvelope` |
25
+ | `@oracle-agent/oracle/connect` | wallet-connect request/assemble surface |
26
+ | `@oracle-agent/oracle/receipts` | action receipts — refuses secret-bearing fields |
27
+ | `@oracle-agent/oracle/risk` | risk scoring helpers |
28
+ | `@oracle-agent/oracle/watch` | watch/alert subscriptions |
29
+ | `@oracle-agent/oracle/signals` | signal feed helpers |
30
+
31
+ `./package.json` is deliberately **not** exported. Do not derive internal paths
32
+ with `require.resolve('@oracle-agent/oracle/package.json')` — it throws
33
+ `ERR_PACKAGE_PATH_NOT_EXPORTED`. Invoke the shipped bins by name instead.
34
+
35
+ ## Executables
36
+
37
+ | Bin | Purpose |
38
+ |---|---|
39
+ | `oracle` | main CLI |
40
+ | `oracle-data` | local read-plane server (`oracle data serve`) |
41
+ | `oracle-public` | public-plane server (`oracle public serve`) |
42
+ | `oracle-data-mcp` | MCP stdio server for agent lanes |
43
+ | `oracle-init` | write config + attestation secret (`oracle init --apply`) |
44
+ | `oracle-upgrade` | in-place upgrade helper (`oracle upgrade`) |
45
+ | `oracle-scan` | scanner entrypoint |
46
+ | `oracle-route` | route/quote entrypoint |
47
+
48
+ ## Environment variables
49
+
50
+ ### Arming flags — default OFF, enable only on literal `1`
51
+
52
+ These are the gates that decide whether anything can ever be signed or
53
+ broadcast. `envFlag` is strict: `true`, `yes`, `on`, or any other value leaves
54
+ them OFF. Setting them is not sufficient to move funds — the signer's own
55
+ policy and custody wall still apply.
56
+
57
+ | Name | Default | Meaning |
58
+ |---|---|---|
59
+ | `ORACLE_EXECUTE_ENABLED` | off | allow the signing surface to arm at all |
60
+ | `ORACLE_DEPLOY_ENABLED` | off | allow contract deployment paths to arm |
61
+ | `ORACLE_ONBOARD_HTTP` | off | expose onboarding routes over HTTP |
62
+ | `ORACLE_PUBLIC_API_MODE` | off | run the server in public-plane mode |
63
+ | `ORACLE_ALLOW_CREATE` | off | allow create/deploy-shaped actions |
64
+ | `ORACLE_ALLOW_EPHEMERAL_CAPS` | off | allow ephemeral cap grants |
65
+
66
+ ### Guard rails — default ON, honor disable words
67
+
68
+ | Name | Default | Meaning |
69
+ |---|---|---|
70
+ | `ORACLE_VALUE_CAPS_ENABLED` | on | per-transaction value caps. Uses strict `!== "0"` so a stray `false` leaves the cap wall standing |
71
+
72
+ ### Integrity and attestation
73
+
74
+ | Name | Meaning |
75
+ |---|---|
76
+ | `ORACLE_ROUTE_ATTESTATION_SECRET` | keyed route attestation HMAC. Written by `oracle init --apply` |
77
+ | `MAD_ROUTE_ATTESTATION_SECRET` | legacy alias for the above |
78
+ | `ORACLE_ATTESTATION_SECRET` | alternate attestation secret name |
79
+ | `ORACLE_STAMP_HMAC_SECRET` | keyed MAC over prepared envelopes. A verifier holding this secret **requires** a valid MAC — an envelope with the MAC stripped is refused, so the keyed mode cannot be silently downgraded to the unkeyed checksum |
80
+ | `ORACLE_STAMP_REQUIRE_MAC` | set `1` to require a MAC even when the verifier has no secret configured. With a secret set this is already implied |
81
+ | `ORACLE_PREPARE_HARD_MAX_AGE_MS` | hard ceiling on prepared-envelope age |
82
+
83
+ ### Servers and endpoints
84
+
85
+ | Name | Default | Meaning |
86
+ |---|---|---|
87
+ | `ORACLE_DATA_HOST` | `127.0.0.1` | read-plane bind host (loopback enforced) |
88
+ | `ORACLE_DATA_PORT` | `8787` | read-plane port |
89
+ | `ORACLE_DATA_URL` | `http://127.0.0.1:8787` | where the CLI looks for the data server |
90
+ | `ORACLE_PUBLIC_HOST` | `127.0.0.1` | public-plane bind host (loopback enforced) |
91
+ | `ORACLE_PUBLIC_PORT` | — | public-plane port |
92
+
93
+ The data server serves `/health`; `/` intentionally returns 404 with a route
94
+ list.
95
+
96
+ ### Paths and config
97
+
98
+ | Name | Meaning |
99
+ |---|---|
100
+ | `ORACLE_CONFIG_DIR` | config directory (default `~/.config/oracle`) |
101
+ | `ORACLE_EXEC_ENV_FILE` | path to `exec.env` |
102
+ | `ORACLE_AGENT_KEYS_PATH` | agent key store path |
103
+ | `ORACLE_AUTH_FILE_STORE` | auth file store path |
104
+ | `ORACLE_ADDRESS_BOOK` | address-book path |
105
+ | `ORACLE_OPERATOR_BIN_DIR` | operator binary directory |
106
+ | `ORACLE_AUDIT_STREAM` | audit stream destination |
107
+
108
+ ### Routing and defaults
109
+
110
+ | Name | Meaning |
111
+ |---|---|
112
+ | `ORACLE_ALLOWED_CHAINS` | restrict routing to a chain allowlist |
113
+ | `ORACLE_DEFAULT_ADDRESS` | default address for reads |
114
+ | `ORACLE_PROFILE` | active profile name |
115
+ | `ORACLE_PRIVY_APP_ID` | Privy app id for connect flows |
116
+
117
+ ### Runtime integration
118
+
119
+ | Name | Meaning |
120
+ |---|---|
121
+ | `ORACLE_HERMES_BIN` | path to the agent runtime binary |
122
+ | `ORACLE_CLAUDE_CODE_VERSION` | pinned agent runtime version |
123
+ | `ORACLE_PYTHON` / `ORACLE_UV_BIN` | interpreter overrides |
124
+ | `ORACLE_NATIVE_TUI` / `ORACLE_FORCE_CHAT` / `ORACLE_PLAIN_HARNESS` | CLI presentation modes |
125
+ | `ORACLE_NO_BOOTSTRAP` | skip bootstrap on start |
126
+ | `ORACLE_CLI_DEBUG` | verbose CLI diagnostics |
127
+
128
+ ### Test-only
129
+
130
+ | Name | Meaning |
131
+ |---|---|
132
+ | `ORACLE_TEST_ISOLATE_SECRETS` | isolate secrets during tests |
133
+ | `ORACLE_FAKE_HOME` | redirect `$HOME` during tests |
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@oracle-agent/oracle",
3
- "version": "0.9.8",
4
- "description": "Oracle: prepare-only multichain agent control plane. Policy-bounded intents for a user-signed wallet. Self-custody by default — the public package never takes your key. Built for Hermes; no model key required.",
3
+ "version": "0.11.0",
4
+ "description": "Oracle: standalone prepare-only multichain agent control plane with optional Hermes integration. Policy-bounded intents for a user-signed wallet; the public package never takes your key.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "publishConfig": {
@@ -85,6 +85,7 @@
85
85
  "files": [
86
86
  "bin/",
87
87
  "src/",
88
+ "!src/**/__pycache__/**",
88
89
  "profiles/",
89
90
  "skills/",
90
91
  "skins/",