@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.
- package/README.md +15 -10
- package/bin/oracle-data-mcp.mjs +9 -0
- package/docs/architecture.md +3 -1
- package/docs/profiles.md +3 -6
- package/docs/public-surface.md +133 -0
- package/package.json +3 -2
- package/public/oracle-splash/assets/cli-chain-hyperliquid.jpg +0 -0
- package/public/oracle-splash/brand/aave.webp +0 -0
- package/public/oracle-splash/brand/aavev2.webp +0 -0
- package/public/oracle-splash/brand/aborean.webp +0 -0
- package/public/oracle-splash/brand/across.webp +0 -0
- package/public/oracle-splash/brand/aerodrome.webp +0 -0
- package/public/oracle-splash/brand/afi.webp +0 -0
- package/public/oracle-splash/brand/arcus.webp +0 -0
- package/public/oracle-splash/brand/aster.webp +0 -0
- package/public/oracle-splash/brand/avant.webp +0 -0
- package/public/oracle-splash/brand/balancer.webp +0 -0
- package/public/oracle-splash/brand/beefy.webp +0 -0
- package/public/oracle-splash/brand/benqi.webp +0 -0
- package/public/oracle-splash/brand/bestinslot.ico +0 -0
- package/public/oracle-splash/brand/bitfi.webp +0 -0
- package/public/oracle-splash/brand/bonkswap.webp +0 -0
- package/public/oracle-splash/brand/bouncebit.webp +0 -0
- package/public/oracle-splash/brand/camelot.webp +0 -0
- package/public/oracle-splash/brand/compound.webp +0 -0
- package/public/oracle-splash/brand/concrete.webp +0 -0
- package/public/oracle-splash/brand/cow.webp +0 -0
- package/public/oracle-splash/brand/curve.webp +0 -0
- package/public/oracle-splash/brand/derive.webp +0 -0
- package/public/oracle-splash/brand/dolomite.webp +0 -0
- package/public/oracle-splash/brand/eigenlayer.webp +0 -0
- package/public/oracle-splash/brand/ekubo.webp +0 -0
- package/public/oracle-splash/brand/ethena.webp +0 -0
- package/public/oracle-splash/brand/etherfi.webp +0 -0
- package/public/oracle-splash/brand/etherfiborrow.webp +0 -0
- package/public/oracle-splash/brand/felix.webp +0 -0
- package/public/oracle-splash/brand/fluid.webp +0 -0
- package/public/oracle-splash/brand/fluxbeam.webp +0 -0
- package/public/oracle-splash/brand/folks.webp +0 -0
- package/public/oracle-splash/brand/fortyacres.webp +0 -0
- package/public/oracle-splash/brand/gainsnetwork.webp +0 -0
- package/public/oracle-splash/brand/gassss.webp +0 -0
- package/public/oracle-splash/brand/gmx.webp +0 -0
- package/public/oracle-splash/brand/harmonix.webp +0 -0
- package/public/oracle-splash/brand/hlorderbook.webp +0 -0
- package/public/oracle-splash/brand/hlp.webp +0 -0
- package/public/oracle-splash/brand/hop.webp +0 -0
- package/public/oracle-splash/brand/hyperbeat.webp +0 -0
- package/public/oracle-splash/brand/hyperlend.webp +0 -0
- package/public/oracle-splash/brand/hyperliquid.webp +0 -0
- package/public/oracle-splash/brand/hyperliquidhpl.webp +0 -0
- package/public/oracle-splash/brand/hyperliquidspot.webp +0 -0
- package/public/oracle-splash/brand/hyperswap.webp +0 -0
- package/public/oracle-splash/brand/hypha.webp +0 -0
- package/public/oracle-splash/brand/joedex.webp +0 -0
- package/public/oracle-splash/brand/jupiter.webp +0 -0
- package/public/oracle-splash/brand/kelp.webp +0 -0
- package/public/oracle-splash/brand/kinetiq.webp +0 -0
- package/public/oracle-splash/brand/kmhype.webp +0 -0
- package/public/oracle-splash/brand/kona.webp +0 -0
- package/public/oracle-splash/brand/konalend.webp +0 -0
- package/public/oracle-splash/brand/lfj.webp +0 -0
- package/public/oracle-splash/brand/lido.webp +0 -0
- package/public/oracle-splash/brand/lifi.webp +0 -0
- package/public/oracle-splash/brand/lighter.webp +0 -0
- package/public/oracle-splash/brand/lista.webp +0 -0
- package/public/oracle-splash/brand/loopedhype.webp +0 -0
- package/public/oracle-splash/brand/lorenzo.webp +0 -0
- package/public/oracle-splash/brand/magic-eden.webp +0 -0
- package/public/oracle-splash/brand/magiceden.webp +0 -0
- package/public/oracle-splash/brand/mempool.png +0 -0
- package/public/oracle-splash/brand/meteora.webp +0 -0
- package/public/oracle-splash/brand/morpho.webp +0 -0
- package/public/oracle-splash/brand/myriad.webp +0 -0
- package/public/oracle-splash/brand/noxa.webp +0 -0
- package/public/oracle-splash/brand/odos.webp +0 -0
- package/public/oracle-splash/brand/oneinch.webp +0 -0
- package/public/oracle-splash/brand/openbook.webp +0 -0
- package/public/oracle-splash/brand/opensea.webp +0 -0
- package/public/oracle-splash/brand/orca.webp +0 -0
- package/public/oracle-splash/brand/ordinals.png +0 -0
- package/public/oracle-splash/brand/ostium.webp +0 -0
- package/public/oracle-splash/brand/pancakeswap.webp +0 -0
- package/public/oracle-splash/brand/pendle.webp +0 -0
- package/public/oracle-splash/brand/perena.webp +0 -0
- package/public/oracle-splash/brand/pharaoh.webp +0 -0
- package/public/oracle-splash/brand/phoenix.webp +0 -0
- package/public/oracle-splash/brand/polymarket.webp +0 -0
- package/public/oracle-splash/brand/polynomial.webp +0 -0
- package/public/oracle-splash/brand/projectx.webp +0 -0
- package/public/oracle-splash/brand/pumpfun.webp +0 -0
- package/public/oracle-splash/brand/quickswap.webp +0 -0
- package/public/oracle-splash/brand/rain.webp +0 -0
- package/public/oracle-splash/brand/raydium.webp +0 -0
- package/public/oracle-splash/brand/relay.webp +0 -0
- package/public/oracle-splash/brand/rocketpool.webp +0 -0
- package/public/oracle-splash/brand/saber.webp +0 -0
- package/public/oracle-splash/brand/sakuraswap.webp +0 -0
- package/public/oracle-splash/brand/sanctum.webp +0 -0
- package/public/oracle-splash/brand/satflow.png +0 -0
- package/public/oracle-splash/brand/sierra.webp +0 -0
- package/public/oracle-splash/brand/sky.webp +0 -0
- package/public/oracle-splash/brand/solv.webp +0 -0
- package/public/oracle-splash/brand/spark.webp +0 -0
- package/public/oracle-splash/brand/sparksavings.webp +0 -0
- package/public/oracle-splash/brand/sphere.webp +0 -0
- package/public/oracle-splash/brand/ssv.webp +0 -0
- package/public/oracle-splash/brand/stabble.webp +0 -0
- package/public/oracle-splash/brand/stableswap.webp +0 -0
- package/public/oracle-splash/brand/stakewise.webp +0 -0
- package/public/oracle-splash/brand/stargate.webp +0 -0
- package/public/oracle-splash/brand/sthype.webp +0 -0
- package/public/oracle-splash/brand/sushiswap.webp +0 -0
- package/public/oracle-splash/brand/unisat.png +0 -0
- package/public/oracle-splash/brand/uniswap.webp +0 -0
- package/public/oracle-splash/brand/uniswapv2.webp +0 -0
- package/public/oracle-splash/brand/uniswapv4.webp +0 -0
- package/public/oracle-splash/brand/unit.webp +0 -0
- package/public/oracle-splash/brand/velodrome.webp +0 -0
- package/public/oracle-splash/brand/velora.webp +0 -0
- package/public/oracle-splash/brand/venus.webp +0 -0
- package/public/oracle-splash/brand/wbeth.webp +0 -0
- package/public/oracle-splash/brand/xsy.webp +0 -0
- package/public/oracle-splash/brand/yieldyak.webp +0 -0
- package/public/oracle-splash/brand/zerobase.webp +0 -0
- package/public/oracle-splash/brand/zerox.webp +0 -0
- package/public/oracle-splash/index.html +337 -197
- package/scripts/check-doc-drift.mjs +11 -0
- package/scripts/e2e-solana-bitcoin.mjs +1 -1
- package/scripts/secret-scan.mjs +1 -1
- package/src/action-receipts.mjs +108 -11
- package/src/auth/oauth.mjs +672 -0
- package/src/cli/commands/auth.mjs +193 -0
- package/src/cli/commands/bootstrap.mjs +2 -2
- package/src/cli/commands/chat.mjs +97 -75
- package/src/cli/commands/data.mjs +3 -1
- package/src/cli/commands/doctor.mjs +11 -1
- package/src/cli/commands/model.mjs +79 -23
- package/src/cli/kernel.mjs +4 -3
- package/src/cli/model-config.mjs +70 -0
- package/src/data/catalog.mjs +38 -7
- package/src/data/desk-data.mjs +12 -0
- package/src/data/providers/evm-rpc.mjs +19 -16
- package/src/data/providers/jupiter-venues.mjs +119 -0
- package/src/data/providers/jupiter.mjs +132 -0
- package/src/data/providers/magiceden-sol.mjs +13 -0
- package/src/data/providers/morpho.mjs +6 -2
- package/src/data/providers/pendle.mjs +3 -2
- package/src/data/providers/satflow.mjs +4 -1
- package/src/data/providers/signed-material-guard.mjs +108 -0
- package/src/data/providers/uniswap-v3.mjs +34 -5
- package/src/data/providers/uniswap-v4.mjs +414 -0
- package/src/prepare-envelope.mjs +22 -4
- package/src/router/prepare-route.mjs +17 -0
- package/src/router/route-sources.mjs +35 -0
- package/src/tui/app.mjs +18 -7
- package/src/tui/backend.mjs +145 -0
- package/src/tui/standalone-client.mjs +666 -0
- package/src/cards.mjs +0 -369
- 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
|
|
26
|
-
|
|
27
|
-
|
|
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.
|
|
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
|
-
**
|
|
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
|
-
|
|
|
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
|
package/bin/oracle-data-mcp.mjs
CHANGED
|
@@ -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: {} }),
|
package/docs/architecture.md
CHANGED
|
@@ -49,7 +49,9 @@ fails on:
|
|
|
49
49
|
|
|
50
50
|
## Data plane
|
|
51
51
|
|
|
52
|
-
`src/data/` —
|
|
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
|
|
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.
|
|
4
|
-
"description": "Oracle: prepare-only multichain agent control plane. Policy-bounded intents for a user-signed wallet
|
|
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/",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|