@oracle-agent/oracle 0.24.7 → 0.24.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -45
- package/SECURITY.md +1 -1
- package/SETUP.md +16 -13
- package/dist/assets/profiles/_template/SOUL.md +2 -2
- package/dist/assets/profiles/oracle/SOUL.md +11 -13
- package/dist/assets/profiles/profile.schema.json +1 -1
- package/dist/assets/profiles/robinhood-agent/SOUL.md +5 -5
- package/dist/assets/skills/multi-venue-prepare-only-ranking/SKILL.md +2 -2
- package/dist/assets/skills/oracle-action-semantics/SKILL.md +5 -5
- package/dist/assets/skills/oracle-chat/SKILL.md +8 -8
- package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
- package/dist/assets/skills/oracle-receipts/SKILL.md +2 -2
- package/dist/bin/desk-server.mjs +80 -36
- package/dist/bin/oracle-data-mcp.mjs +51 -7
- package/dist/bin/oracle-gateway.mjs +13 -15
- package/dist/bin/oracle-init.mjs +9 -9
- package/dist/bin/oracle-public-server.mjs +48 -4
- package/dist/bin/oracle-route.mjs +66 -22
- package/dist/bin/oracle-scan.mjs +58 -14
- package/dist/cli/commands/chat.mjs +140 -96
- package/dist/cli/commands/doctor.mjs +6 -6
- package/dist/cli/commands/eval.mjs +17 -17
- package/dist/cli/commands/farm.mjs +72 -28
- package/dist/cli/commands/follow.mjs +61 -17
- package/dist/cli/commands/model.mjs +147 -103
- package/dist/cli/commands/receipt.mjs +3 -3
- package/dist/cli/commands/resolve.mjs +55 -11
- package/dist/cli/commands/setup.mjs +27 -27
- package/dist/cli/commands/sign.mjs +14 -13
- package/dist/cli/commands/signer.mjs +12 -17
- package/dist/cli/commands/strategy.mjs +50 -6
- package/dist/cli/commands/swap.mjs +72 -29
- package/dist/cli/commands/venues.mjs +3 -3
- package/dist/data/desk-data.mjs +78 -34
- package/dist/data/names.mjs +46 -2
- package/dist/data/providers/farming.mjs +46 -2
- package/dist/index.mjs +83 -39
- package/dist/local-signer/index.mjs +1 -1
- package/dist/router/index.mjs +46 -2
- package/dist/router/prepare-bridge.mjs +46 -2
- package/dist/scanner/index.mjs +48 -4
- package/dist/strategy/index.mjs +47 -3
- package/package.json +5 -3
- package/public/install.ps1 +1 -1
- package/public/install.sh +5 -4
- package/public/oracle-splash/_variants/ice.html +3 -3
- package/public/oracle-splash/_variants/ivory.html +3 -3
- package/public/oracle-splash/downloads/index.html +5 -5
- package/public/oracle-splash/index.html +7 -7
- package/public/oracle-splash/install.ps1 +1 -1
- package/public/oracle-splash/install.sh +5 -4
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ The private operator configuration, approval flow, wire units, and holder waiver
|
|
|
23
23
|
[Hyperliquid builder code](docs/hyperliquid-builder-code.md).
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
**
|
|
26
|
+
**Oracle is a self-custody multichain agent control plane.** It reads, quotes, prepares, arms, signs, and broadcasts under owner policy.
|
|
27
27
|
|
|
28
28
|
Specialist agent profiles, real protocol intents, self-custody by default,
|
|
29
29
|
receipts or it didn't happen.
|
|
@@ -45,14 +45,12 @@ Oracle can run standalone model auth directly with API keys or Claude, Codex,
|
|
|
45
45
|
and Grok OAuth. OAuth credentials use the OS keychain when available, with a
|
|
46
46
|
private `0600` local fallback when keychain storage is unavailable.
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
separately provisioned trigger authority (the signer holds only its public key).
|
|
55
|
-
Never paste a seed, key, passphrase, or signer token into Oracle chat or argv.
|
|
48
|
+
Wallet-sign and the local `oracle signer` are both first-class. The signer
|
|
49
|
+
stays off until the owner initializes an encrypted vault and sealed policy.
|
|
50
|
+
Every sign needs one-use confirmation. Autonomous trading additionally requires
|
|
51
|
+
`ORACLE_AUTONOMOUS_TRADING=1`. Never paste a seed, key, passphrase, or signer
|
|
52
|
+
token into Oracle chat or argv. The private `@oracle-agent/agent` package is
|
|
53
|
+
not included here.
|
|
56
54
|
|
|
57
55
|
---
|
|
58
56
|
|
|
@@ -98,17 +96,17 @@ decides what may even be asked.
|
|
|
98
96
|
|
|
99
97
|
Three properties define it:
|
|
100
98
|
|
|
101
|
-
1. **Self-custody by default.** Hosted
|
|
102
|
-
private key.
|
|
103
|
-
wallet signs them.
|
|
104
|
-
encrypted local vault
|
|
99
|
+
1. **Self-custody by default.** Hosted and default Oracle never accept your
|
|
100
|
+
private key. They build unsigned transactions and typed-data intents; your
|
|
101
|
+
wallet signs them. An explicit self-host setup may import a key into the
|
|
102
|
+
encrypted local vault and sign through `oracle signer`.
|
|
105
103
|
2. **Bound grants.** A grant is a signed, scoped, expiring permission: max
|
|
106
104
|
value, chain, venue, destination allowlist, TTL. Oracle canonicalizes it,
|
|
107
105
|
renders it for review, and refuses to prepare anything outside it. Runtime
|
|
108
|
-
enforcement is the wallet's
|
|
109
|
-
|
|
106
|
+
enforcement is the wallet's or smart account's job, or the optional local
|
|
107
|
+
signer's sealed policy when that signer is explicitly enabled.
|
|
110
108
|
3. **Receipts or it didn't happen.** A claim without a transaction hash, a
|
|
111
|
-
receipt
|
|
109
|
+
receipt is not a result. If a transport cannot verify a balance delta, the receipt must say `balanceDeltaVerified: false`.
|
|
112
110
|
|
|
113
111
|
Default posture is `DISARMED`.
|
|
114
112
|
|
|
@@ -123,7 +121,7 @@ loop.
|
|
|
123
121
|
| Authority | prompt-level "be careful" | signed grant: chain, spend, targets, TTL — enforced by your wallet, not by us |
|
|
124
122
|
| Destinations | whatever the model emits | reviewed per-chain allowlist, fail-closed |
|
|
125
123
|
| Slippage | fixed % | live guard recomputed per leg, hard 100 bps cap |
|
|
126
|
-
| Proof | model says "done" | hash + verified successful on-chain receipt
|
|
124
|
+
| Proof | model says "done" | hash + verified successful on-chain receipt, with `balanceDeltaVerified` true only when snapshots prove the expected delta |
|
|
127
125
|
| Surface | swap only | swaps, bridges, perps, vaults, yield, NFTs, intents |
|
|
128
126
|
|
|
129
127
|
## Architecture
|
|
@@ -151,14 +149,14 @@ Three planes, and the boundary between them is mechanically enforced:
|
|
|
151
149
|
- **Policy plane** (public) — destination allowlists, slippage guards, route and
|
|
152
150
|
vault attestations, grant schema. Holds no keys; constrains what a signer may
|
|
153
151
|
be asked to do.
|
|
154
|
-
- **Exec plane** (self-hosted, optional) —
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
152
|
+
- **Exec plane** (self-hosted, optional) — signing and broadcast live only in an
|
|
153
|
+
explicitly initialized loopback local signer using the user's keys, or in
|
|
154
|
+
separately operated owner infrastructure. Hosted/default Oracle has no active
|
|
155
|
+
signer. The local-signer module ships inert and grants no holder privilege.
|
|
158
156
|
|
|
159
|
-
`test/custody-boundary.test.mjs` walks the
|
|
160
|
-
|
|
161
|
-
|
|
157
|
+
`test/custody-boundary.test.mjs` walks the import graph and fails if any public
|
|
158
|
+
module reaches wallet key material or a house signer. The split is a test, not a
|
|
159
|
+
promise.
|
|
162
160
|
|
|
163
161
|
## Coverage
|
|
164
162
|
|
|
@@ -304,14 +302,15 @@ npm test
|
|
|
304
302
|
owner-local source lane.** The short version:
|
|
305
303
|
|
|
306
304
|
- Reads and quotes need **no keys**.
|
|
307
|
-
- Hosted
|
|
308
|
-
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
-
|
|
313
|
-
|
|
314
|
-
|
|
305
|
+
- Hosted/default Oracle exposes no active signer, key vault, or broadcast path.
|
|
306
|
+
- User wallets authorize prepared actions outside the public data plane.
|
|
307
|
+
- The npm package includes an optional self-hosted loopback signer for the user's
|
|
308
|
+
own keys. It stays inert until local initialization and sealed policy setup.
|
|
309
|
+
Private Administrator modules remain separate and are not published on npm.
|
|
310
|
+
- The documented `oracle signer` path permits built-in bounded native EVM
|
|
311
|
+
transfers, recognized approvals, decoded EVM swaps and bridges, EVM NFT mint
|
|
312
|
+
envelopes, Bitcoin PSBTs, and Solana messages under the user's encrypted local
|
|
313
|
+
vault and sealed policy. `hl` and `poly` are not public local-signer families.
|
|
315
314
|
|
|
316
315
|
### Action vocabulary and execution planes
|
|
317
316
|
|
|
@@ -320,17 +319,16 @@ Oracle keeps capability and authorization separate:
|
|
|
320
319
|
- Public Oracle reads, quotes, simulates, and prepares unsigned artifacts.
|
|
321
320
|
- **Path A:** owner/main, browser, smart-account, hardware, or protocol-native
|
|
322
321
|
wallets sign the prepared artifact. This is the default self-custody path.
|
|
323
|
-
- **Path B:**
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
-
|
|
333
|
-
initialized and unlocked their own local signer. No Oracle-hosted key exists.
|
|
322
|
+
- **Path B:** the optional public local signer may sign on the same host after
|
|
323
|
+
explicit init, sealed policy, and loopback start. Private Administrator
|
|
324
|
+
modules remain unpublished and are not a holder install.
|
|
325
|
+
- The optional local signer decodes and binds bounded native EVM transfers,
|
|
326
|
+
recognized approvals, strict EVM swap/bridge calldata, EVM NFT mint envelopes,
|
|
327
|
+
Bitcoin PSBTs, and Solana messages. It refuses while required allowlists,
|
|
328
|
+
local keys, RPC URLs, simulation, signed-byte verification, receipt binding,
|
|
329
|
+
or ledger accounting are missing.
|
|
330
|
+
- Ordinary EVM preparation remains user-wallet signed unless a trusted
|
|
331
|
+
owner-controlled direct-exec process is explicitly installed and armed.
|
|
334
332
|
- `ORACLE_AUTONOMOUS_TRADING=1` is direct execution for trusted owner-controlled
|
|
335
333
|
local code only. It is never model/agent authority and should not be framed as
|
|
336
334
|
equivalent to the `oracle-signer` agent-process path.
|
|
@@ -518,6 +516,10 @@ overall winner so a quote-only mid is never presented as actionable.
|
|
|
518
516
|
|
|
519
517
|
## Examples
|
|
520
518
|
|
|
519
|
+
These run from a **repo clone**, not from the installed npm package: they import
|
|
520
|
+
`../src/` directly, and the published tarball ships the bundled `dist/` instead of
|
|
521
|
+
`src/`. Clone the repo, `npm install`, then:
|
|
522
|
+
|
|
521
523
|
```bash
|
|
522
524
|
node examples/add-a-chain.mjs # register an unseen chain, no code
|
|
523
525
|
node examples/research-a-token.mjs # honest token research on live data
|
|
@@ -535,9 +537,11 @@ oracle-data-mcp
|
|
|
535
537
|
|
|
536
538
|
## Security
|
|
537
539
|
|
|
538
|
-
- Oracle never receives private keys.
|
|
540
|
+
- Hosted/default Oracle never receives private keys. An explicit self-host
|
|
541
|
+
import writes only to the local encrypted vault.
|
|
539
542
|
- The router can propose, simulate, explain, and draft. It cannot authorize.
|
|
540
|
-
- Public modules may not import signer or executor code
|
|
543
|
+
- Public default modules may not import house-signer or executor code
|
|
544
|
+
(enforced by test). The optional `./local-signer` export is the self-host path.
|
|
541
545
|
- Destination allowlists are per-chain and fail-closed: an empty allowlist
|
|
542
546
|
refuses everything rather than allowing everything.
|
|
543
547
|
- Report vulnerabilities per [SECURITY.md](SECURITY.md). Please do not open a
|
package/SECURITY.md
CHANGED
|
@@ -102,7 +102,7 @@ still apply after the public boundary hardening:
|
|
|
102
102
|
caller-supplied public facts; `recordAudit()` is a process-local, best-effort
|
|
103
103
|
file helper. Neither authorizes execution or proves settlement. Report
|
|
104
104
|
success only after independently verifying the successful chain receipt,
|
|
105
|
-
expected destination/events, and
|
|
105
|
+
expected destination/events, and `balanceDeltaVerified` when balance snapshots are available.
|
|
106
106
|
7. **Repository-host controls are not the custody boundary.** Dependabot alerts
|
|
107
107
|
may be enabled independently, while branch protection, CodeQL, and hosted
|
|
108
108
|
secret scanning depend on repository visibility and account tier. Verify the
|
package/SETUP.md
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
# Oracle setup
|
|
2
2
|
|
|
3
|
-
Oracle's public CLI
|
|
4
|
-
|
|
5
|
-
vault
|
|
6
|
-
|
|
7
|
-
prepare-only. The private `@oracle-agent/agent` admin package is not imported.
|
|
3
|
+
Oracle's public CLI reads, prepares, arms, signs, and broadcasts under owner
|
|
4
|
+
policy. Signing is the user wallet or `oracle signer` after an encrypted local
|
|
5
|
+
vault and sealed policy exist. Hosted web stays keyless. The private
|
|
6
|
+
`@oracle-agent/agent` package is not imported.
|
|
8
7
|
|
|
9
8
|
## Requirements
|
|
10
9
|
|
|
@@ -255,9 +254,11 @@ const prepared = await data.call("hl-perps", "prepareOrder", {
|
|
|
255
254
|
```
|
|
256
255
|
|
|
257
256
|
Review the chain, destination, calldata or typed data, amount, minimum output,
|
|
258
|
-
expiry, approvals, and fees
|
|
259
|
-
|
|
260
|
-
|
|
257
|
+
expiry, approvals, and fees. Hosted/default Oracle stops before signing and
|
|
258
|
+
hands the artifact to a user-controlled wallet. A self-hoster who initialized
|
|
259
|
+
`oracle signer` may sign that same reviewed artifact locally. Report success
|
|
260
|
+
only after a real transaction hash, successful receipt, and expected balance or
|
|
261
|
+
state change.
|
|
261
262
|
|
|
262
263
|
## Locals Only fee waiver
|
|
263
264
|
|
|
@@ -292,8 +293,9 @@ A clean standalone install can legitimately show warnings for:
|
|
|
292
293
|
- `agent_runtime` when optional Hermes is not installed;
|
|
293
294
|
- `hermes_lanes` before optional `oracle init --apply`.
|
|
294
295
|
|
|
295
|
-
A Node-version failure is blocking. Signing warnings
|
|
296
|
-
|
|
296
|
+
A Node-version failure is blocking. Signing warnings from `oracle doctor`
|
|
297
|
+
refer to signer setup, not hosted web. Hosted web never signs.
|
|
298
|
+
`oracle sign doctor` and `oracle signer` are the local sign path.
|
|
297
299
|
|
|
298
300
|
## Upgrade
|
|
299
301
|
|
|
@@ -357,9 +359,10 @@ the API is live based on the static site or source code alone.
|
|
|
357
359
|
|
|
358
360
|
### A prepared action cannot be signed
|
|
359
361
|
|
|
360
|
-
|
|
361
|
-
user-controlled wallet. Do not install
|
|
362
|
-
as a workaround.
|
|
362
|
+
Hosted/default Oracle is prepare-only: hand the reviewed artifact to a
|
|
363
|
+
user-controlled wallet. Do not install private Administrator infrastructure
|
|
364
|
+
as a workaround. A self-hoster who already initialized `oracle sign` /
|
|
365
|
+
`oracle signer` signs locally under that policy.
|
|
363
366
|
|
|
364
367
|
## References
|
|
365
368
|
|
|
@@ -22,8 +22,8 @@ Keep these. They are the desk's invariants, not suggestions:
|
|
|
22
22
|
1. **You do not sign.** Transactions are prepared for the user's wallet.
|
|
23
23
|
2. **A grant is authorization; your reasoning is not.** Outside the grant's chain,
|
|
24
24
|
venue, destination, spend cap, or TTL → refuse, and say which bound broke.
|
|
25
|
-
3. **Receipts or it didn't happen.** No hash
|
|
26
|
-
|
|
25
|
+
3. **Receipts or it didn't happen.** No hash or receipt → it did not succeed.
|
|
26
|
+
Report balance delta only when verified.
|
|
27
27
|
4. **Never invent chain facts.** Not from a live read → `unknown`.
|
|
28
28
|
|
|
29
29
|
Then add rules specific to your venue.
|
|
@@ -58,14 +58,12 @@ the data plane). If it stays ambiguous, ask. Do not guess a chain.
|
|
|
58
58
|
margin call for different decisions. If `rankedOn` is `gross`, gas was NOT
|
|
59
59
|
accounted for — say so. See the `oracle-best-execution` skill.
|
|
60
60
|
|
|
61
|
-
1. **
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
An explicit `arm` requests one exact, bounded action for wallet or external-executor
|
|
68
|
-
confirmation. It does not arm anything inside this package.
|
|
61
|
+
1. **Sign only through a confirmed path.** Reads and prepares are always
|
|
62
|
+
available. Signing and broadcast use the user wallet or `oracle signer`
|
|
63
|
+
after vault init, sealed policy, and one-use confirmation. Verify signer
|
|
64
|
+
status before claiming it is live. Never paste a key. `watch`, `watch this`,
|
|
65
|
+
and `ping me` always mean `actionMode: alert_only`. An explicit `arm`
|
|
66
|
+
requests one exact bounded action for confirmation. Lanes start DISARMED.
|
|
69
67
|
|
|
70
68
|
**Autonomous trading is the one opt-in.** A trigger that fires a trade with
|
|
71
69
|
nobody watching requires `ORACLE_AUTONOMOUS_TRADING=1`. Until then such an
|
|
@@ -80,11 +78,11 @@ the data plane). If it stays ambiguous, ask. Do not guess a chain.
|
|
|
80
78
|
not. Resolve exact token/chain, sell-sim when possible, quote net of gas,
|
|
81
79
|
cap spend/fees, and prepare a user-signed ticket.
|
|
82
80
|
5. **Terminal and messaging are transports, not different authority models.**
|
|
83
|
-
Bare `oracle` launches this same prepare-only profile. Terminal,
|
|
84
|
-
installed MCP targets can read, simulate, and prepare
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
Bare `oracle` launches this same default prepare-only profile. Terminal,
|
|
82
|
+
messaging, and installed MCP targets can read, simulate, and prepare.
|
|
83
|
+
Signing is a separate explicit `oracle signer` path, not something this
|
|
84
|
+
profile can discover or invoke on its own. Changing `/model` never changes
|
|
85
|
+
those walls.
|
|
88
86
|
6. **A grant is authorization; your reasoning is not.** If an action falls
|
|
89
87
|
outside the active grant — chain, venue, destination, spend cap, TTL — refuse
|
|
90
88
|
and say which bound it broke.
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
},
|
|
78
78
|
"signing": {
|
|
79
79
|
"enum": ["none", "user-wallet"],
|
|
80
|
-
"description": "
|
|
80
|
+
"description": "Lane default is none or user-wallet. Local signing is oracle signer, not a lane house key."
|
|
81
81
|
},
|
|
82
82
|
"rationale": {
|
|
83
83
|
"type": "string",
|
|
@@ -103,11 +103,11 @@ marketplace sell are different paths with different approvals.
|
|
|
103
103
|
2. **Never size against stale or virtual reserves.**
|
|
104
104
|
3. **A fuzzy ticker match is not confirmation.** Surface the CA.
|
|
105
105
|
4. **The public lane does not sign.** Ordinary swaps are prepared for the user's
|
|
106
|
-
wallet. The
|
|
107
|
-
|
|
108
|
-
separately installed, owner-gated EVM executor may
|
|
109
|
-
Robinhood Chain action after explicit `arm`. Verify that
|
|
110
|
-
it is available.
|
|
106
|
+
wallet. The optional self-hosted local signer accepts bounded native EVM
|
|
107
|
+
transfers and recognized approvals, but rejects swap and bridge calldata until
|
|
108
|
+
its economics are decoded. A separately installed, owner-gated EVM executor may
|
|
109
|
+
handle one exact bounded Robinhood Chain action after explicit `arm`. Verify that
|
|
110
|
+
executor before claiming it is available.
|
|
111
111
|
5. **Watch is alert-only.** `watch`, `watch this`, and `ping me` persist as
|
|
112
112
|
`active: true, actionMode: alert_only`. Only explicit `arm` can produce
|
|
113
113
|
`actionMode: execute`; never infer execution from a watch or legacy `status: armed`.
|
|
@@ -8,11 +8,11 @@ description: Use when building prepare-only cross-venue rank surfaces.
|
|
|
8
8
|
|
|
9
9
|
# Multi-venue prepare-only ranking
|
|
10
10
|
|
|
11
|
-
Class of product: compare quotes across venues, rank honestly, prepare unsigned artifacts only.
|
|
11
|
+
Class of product: compare quotes across venues, rank honestly, prepare unsigned artifacts only. Reference implementation passed 298 offline tests as of 2026-08-04.
|
|
12
12
|
|
|
13
13
|
## Product law
|
|
14
14
|
|
|
15
|
-
-
|
|
15
|
+
- This ranking workflow prepares only. Sign and broadcast with the user wallet or `oracle signer`.
|
|
16
16
|
- Rank on **net received after fees/gas/impact** when costs are known; otherwise `rankedOn: "gross"` and say so.
|
|
17
17
|
- **Unknown is not zero.** Missing gas/impact/funding => field `null` and `costAccounted: false`.
|
|
18
18
|
- **Adapters report truth. Liveness filters.** Never "repair" crossed books or drop dormant venues inside an adapter.
|
|
@@ -7,10 +7,10 @@ description: Use for watch, ping, prepare, arm, sign, send, or execution-capabil
|
|
|
7
7
|
|
|
8
8
|
Keep these planes distinct:
|
|
9
9
|
|
|
10
|
-
1. **Public prepare plane**: reads, quotes, simulates, and prepares unsigned artifacts.
|
|
11
|
-
2. **Generic Oracle signer**: the unattended daemon exposes
|
|
12
|
-
3. **User-wallet
|
|
13
|
-
4. **Optional
|
|
10
|
+
1. **Public prepare plane**: reads, quotes, simulates, and prepares unsigned artifacts. Signing and broadcast happen through the wallet, `oracle signer`, or a verified execution lane.
|
|
11
|
+
2. **Generic Oracle signer**: the documented unattended daemon exposes built-in public surfaces: `evm`, `evm-swap`, `evm-bridge`, `evm-nft`, `btc`, and `sol`. Bounded is not generic chain authority: each surface decodes and validates its envelope shape and refuses while allowlists, local keys, RPC URLs, simulation, signed-byte verification, receipt binding, or ledger accounting are missing. Enablement is never authority; every signature still needs one exact owner-confirmed grant.
|
|
12
|
+
3. **User-wallet execution**: ordinary preparations can still be signed by the user's wallet instead of the local signer.
|
|
13
|
+
4. **Optional extra execution**: a deployment may expose a separate same-host, owner-gated executor such as MAD. Verify its status and policy before saying it is available. Never infer extra `hl`/`poly` authority from the public package or the generic signer.
|
|
14
14
|
|
|
15
15
|
Do not turn a deployment fact into a universal claim. If no bounded EVM executor is installed or healthy, say the current deployment cannot execute EVM. Do not say Oracle can never execute EVM.
|
|
16
16
|
|
|
@@ -35,6 +35,6 @@ Report each state separately:
|
|
|
35
35
|
- `signingReady`
|
|
36
36
|
- `broadcastReady`
|
|
37
37
|
|
|
38
|
-
A quote is not a preparation. A preparation is not a signature. A signature is not a broadcast. A broadcast is not mined execution. Claim success only after a transaction hash, successful receipt
|
|
38
|
+
A quote is not a preparation. A preparation is not a signature. A signature is not a broadcast. A broadcast is not mined execution. Claim success only after a transaction hash, successful receipt. Report balance delta only when `balanceDeltaVerified` is true.
|
|
39
39
|
|
|
40
40
|
ERC-20 approval is a separate transaction. Use an exact bounded amount unless the user explicitly authorizes another cap. Never silently create an unlimited approval.
|
|
@@ -26,25 +26,25 @@ You are **oracle** — one lowercase persona. Models can change underneath via `
|
|
|
26
26
|
- `ORACLE_ACTIVE_AGENT`
|
|
27
27
|
2. If they name a chain ("build on hyperliquid"), run or instruct:
|
|
28
28
|
`oracle chain use hyperliquid`
|
|
29
|
-
3. Never claim signing or broadcast happened
|
|
30
|
-
|
|
29
|
+
3. Never claim signing or broadcast happened unless the owner used the explicit
|
|
30
|
+
self-host `oracle signer` path and you have a receipt.
|
|
31
|
+
4. Default chat, MCP, and hosted transports stay read/prepare-only. Do not
|
|
32
|
+
invoke `oracle signer` from this profile.
|
|
31
33
|
5. Keep replies lowercase-friendly and terse. No glaze.
|
|
32
34
|
|
|
33
35
|
## terminal and telegram are the same oracle
|
|
34
36
|
|
|
35
|
-
`oracle` in a TTY
|
|
36
|
-
same profile. The interface changes; the profile, tools, memory, model routing,
|
|
37
|
-
wallet/data MCPs, and custody policy do not.
|
|
37
|
+
`oracle` in a TTY starts the native standalone Oracle runtime by default. Hermes is an explicit backend choice, not the automatic TTY path. Telegram can be wired to the same Oracle profile, but the terminal interface may use native model auth, local config, and the standalone loop unless `ORACLE_CHAT_BACKEND=hermes` is set.
|
|
38
38
|
|
|
39
39
|
- Terminal and messaging can both read, simulate, and prepare unsigned actions.
|
|
40
40
|
- For an explicit trade instruction, enforce the active-chain policy, prepare
|
|
41
41
|
the exact unsigned artifact, and present it for wallet review.
|
|
42
|
-
-
|
|
42
|
+
- Default chat does not discover or invoke a signer, vault, control MCP, or broadcaster.
|
|
43
43
|
- `arm` means prepare the exact bounded action for external wallet review. It
|
|
44
|
-
does not enable execution inside this
|
|
44
|
+
does not enable execution inside this default profile.
|
|
45
45
|
- A tool refusal is a real policy wall. Report the exact refusal instead of
|
|
46
46
|
bypassing it.
|
|
47
|
-
- Never claim a trade executed from this
|
|
47
|
+
- Never claim a trade executed from this default profile.
|
|
48
48
|
|
|
49
49
|
## shell helpers
|
|
50
50
|
```bash
|
|
@@ -97,7 +97,7 @@ does not prove npm users receive it. A locally hosted model/data/policy loop doe
|
|
|
97
97
|
a bundled signer. A merged feature is not public until the npm artifact containing it is
|
|
98
98
|
published and inspected.
|
|
99
99
|
|
|
100
|
-
**Candidate release in this source tree:** public package `@oracle-agent/oracle@0.24.
|
|
100
|
+
**Candidate release in this source tree:** public package `@oracle-agent/oracle@0.24.9`
|
|
101
101
|
ships the optional encrypted local vault + short-lived loopback signer. Hosted/default
|
|
102
102
|
Oracle stays prepare-only. Self-host after `oracle sign init|import` is **auto-armed**
|
|
103
103
|
for user-initiated actions. Public still charges the disclosed fee card; Administrator
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oracle-receipts
|
|
3
|
-
description: Use whenever reporting the outcome of any on-chain action. Enforces that a claim of success carries a hash
|
|
3
|
+
description: Use whenever reporting the outcome of any on-chain action. Enforces that a claim of success carries a hash and a receipt, and reports balance delta only when verified.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Receipts or it didn't happen
|
|
@@ -16,7 +16,7 @@ A money-moving action is **complete** only when you can show:
|
|
|
16
16
|
1. **transaction hash** — the real one, from the broadcast response
|
|
17
17
|
2. **receipt status** — `1`. A receipt with status `0` is a *failed* transaction
|
|
18
18
|
that still consumed gas; that is not success
|
|
19
|
-
3. **balance delta** — the output token balance actually changed, read back after
|
|
19
|
+
3. **balance delta when verified** — the output token balance actually changed, read back after
|
|
20
20
|
the receipt
|
|
21
21
|
4. **the log** proving the intended event fired (`Swap`, `Transfer` to the right
|
|
22
22
|
recipient, `OrderFilled`)
|