@oracle-agent/oracle 0.23.1 → 0.24.1

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 CHANGED
@@ -45,10 +45,13 @@ 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
- This package is **prepare-only**: it never takes a private key and never
49
- broadcasts. The owner-operated signer/executor is private infrastructure, is
50
- not published on npm, and is not part of public onboarding. Never paste a seed,
51
- private key, vault passphrase, or signer token into Oracle chat.
48
+ Oracle is **prepare-only by default and on hosted surfaces**. A self-hoster may
49
+ explicitly initialize the optional encrypted local vault and run a short-lived,
50
+ loopback-only signer. Every normal action requires exact one-use human
51
+ confirmation and policy checks; autonomous trading additionally requires
52
+ `ORACLE_AUTONOMOUS_TRADING=1`. Never paste a seed, key, passphrase, or signer
53
+ token into Oracle chat or argv. The private `@oracle-agent/agent` admin package
54
+ remains separate and is not included here.
52
55
 
53
56
  ---
54
57
 
@@ -203,7 +206,7 @@ known answer. This matters: the canonical QuoterV2 address also has bytecode on
203
206
  Base, but does not price that chain's pairs. A codesize check would have
204
207
  allowlisted the wrong contract.
205
208
 
206
- **72 provider modules** in the read/quote catalog, covering **219 unique
209
+ **75 provider modules** in the read/quote catalog, covering **219 unique
207
210
  protocols/venues** across EVM, Solana, and Bitcoin (115 EVM + cross-chain, 98
208
211
  Solana venues backed by 101 verified Jupiter program IDs, 6 Bitcoin surfaces).
209
212
  One module can cover many protocols: the Jupiter module alone routes 98 Solana
@@ -389,20 +392,20 @@ oracle chain use hyperliquid
389
392
  oracle setup # telegram / discord / slack messaging
390
393
  ```
391
394
 
392
- Terminal and configured messaging channels are transports into the same Hermes
393
- `oracle` profile. Both interfaces are read/prepare-only in this package. They
394
- can return the same unsigned artifact for review, but neither can discover or
395
- invoke a signer, vault, control MCP, or broadcaster. Signing stays in the user
396
- wallet or separately installed private owner infrastructure.
395
+ Terminal and configured messaging channels are untrusted proposers into the
396
+ same Hermes `oracle` profile. They cannot self-confirm or directly invoke the
397
+ optional signer. Signing stays in the user wallet or in the explicitly enabled,
398
+ loopback-only public local signer after independent local confirmation and
399
+ sealed-policy checks. Private Administrator execution remains separate.
397
400
 
398
401
  Lanes: `oracle` (router), `polymarket-agent`, `hyperliquid-agent`,
399
402
  `robinhood-agent`, `solana-agent`, `bitcoin-agent`, `stable-agent`,
400
403
  `protocol-builder`, plus `_template` for your own. Details in
401
404
  [`docs/profiles.md`](docs/profiles.md).
402
405
 
403
- Every lane installs **DISARMED**. No lane requests a broadcast or signing action —
404
- only read, simulate, and prepare — and a test enforces that so widening custody
405
- can't pass review quietly. An existing `SOUL.md` is never overwritten without
406
+ Every model lane remains unable to authorize signing. It may only read,
407
+ simulate, and prepare; local key initialization arms user-initiated actions,
408
+ while Disarm is globally dominant. An existing `SOUL.md` is never overwritten without
406
409
  `--force`, and `--force` writes a timestamped backup first.
407
410
 
408
411
  Oracle does not issue its own model credential. Standalone chat uses the OAuth
package/SECURITY.md CHANGED
@@ -44,9 +44,9 @@ model is treated as an untrusted proposer.
44
44
 
45
45
  Consequences of that assumption, which are the invariants worth attacking:
46
46
 
47
- 1. **The public package never holds a key.** Signing happens in the user's
48
- wallet. Source-only operator modules are excluded from public entrypoints and
49
- the npm artifact.
47
+ 1. **Hosted/default operation never holds a key.** An explicit self-host setup
48
+ may hold one only in the encrypted local vault. Private Administrator modules
49
+ are excluded from public entrypoints and the npm artifact.
50
50
  2. **Model output is not authorization.** A grant is authorization, and a grant
51
51
  is signed by the owner, scoped, and expiring.
52
52
  3. **Destinations are allowlisted per chain and fail closed.** An empty allowlist
@@ -77,11 +77,12 @@ A security claim that isn't enforced by a test is just a comment.
77
77
  These are not public-package custody holes. They are operator constraints that
78
78
  still apply after the public boundary hardening:
79
79
 
80
- 1. **Owner-local signer modules live in private operator infrastructure.** The
81
- operator package is not published on npm and is not part of public or holder
82
- onboarding. Those modules and credentials must not be restored into this
83
- prepare-only package or its npm artifact. CI fails if a pack of *this* repo
84
- includes signer or vault paths.
80
+ 1. **Public self-host custody is local and explicit.** The optional signer uses
81
+ an scrypt/AES-GCM encrypted local vault and short-lived loopback daemon.
82
+ Hosted/default operation remains prepare-only. This cannot protect against
83
+ malware in an unlocked signer process; use hardware custody for that threat.
84
+ The private `@oracle-agent/agent` admin package remains separate and must not
85
+ appear in this package or its publish artifact.
85
86
  2. **Prepare helpers that validate executable routes require an attestation
86
87
  secret** (`requireSigned`) so they cannot be used as a softer pre-broadcast
87
88
  gate than `enforceTxPolicy`.
package/SETUP.md CHANGED
@@ -1,18 +1,45 @@
1
1
  # Oracle setup
2
2
 
3
- Oracle's public CLI is a standalone, prepare-only multichain agent. It can read,
4
- research, quote, simulate, and build unsigned artifacts. It does not need Hermes,
5
- it does not accept wallet private keys, and it does not broadcast transactions.
6
-
7
- The owner-operated signer/executor is private infrastructure. It is not published
8
- on npm and is not part of public onboarding.
3
+ Oracle's public CLI is prepare-only unless a user deliberately enables its
4
+ self-hosted signer. The optional signer uses an AES-256-GCM/scrypt encrypted
5
+ vault on the user's machine, listens only on loopback, and signs only exact
6
+ confirmed artifacts within configured policy. Hosted Oracle remains
7
+ prepare-only. The private `@oracle-agent/agent` admin package is not imported.
9
8
 
10
9
  ## Requirements
11
10
 
12
11
  - Node.js `20.19.0` or newer
13
12
  - npm
14
13
  - A supported model login or API key for chat
15
- - A user-controlled wallet only when reviewing and signing a prepared artifact
14
+ - A user-controlled wallet, external or in the optional encrypted local vault
15
+
16
+ ## Local self-hosted signer
17
+
18
+ Never paste a key or passphrase into Oracle, chat, or argv. Use a hidden TTY or
19
+ owner-only (`0600`) files:
20
+
21
+ ```bash
22
+ oracle sign init
23
+ oracle sign import --key-file /protected/key --passphrase-file /protected/passphrase
24
+ oracle sign policy --policy-file /protected/policy.json
25
+ oracle sign doctor
26
+ oracle signer --credential-service oracle-local-signer --session-seconds 120
27
+ # protected-file fallback, and the required Windows behavior:
28
+ oracle signer --passphrase-file /protected/passphrase --session-seconds 120
29
+ oracle sign lock
30
+ ```
31
+
32
+ Configure and HMAC-seal `~/.config/oracle/signer/signer-policy.json` with non-empty surface, action, chain,
33
+ destination, selector, spender, and owner allowlists plus explicit value,
34
+ approval, gas/fee, slippage, expiry, and RPC bounds. Empty allowlists fail
35
+ closed. Exact one-use confirmation binds the final gas-populated artifact, which
36
+ is checked again immediately before broadcast. Lock/disarm always wins.
37
+
38
+ Service templates ship under `public/service/` for Linux systemd, macOS
39
+ launchd, and Windows Task Scheduler/PowerShell. Linux/macOS can retrieve the
40
+ passphrase from the logged-in user's keyring; Windows currently requires an
41
+ ACL-protected file. Installation is deliberately not automatic. Never put a
42
+ passphrase in service argv or an inherited environment.
16
43
 
17
44
  Linux, Windows, and macOS apps are in beta.
18
45
 
@@ -113,8 +140,8 @@ and a submitted transaction is not a confirmed receipt.
113
140
  | Chat, research, market data | yes | none |
114
141
  | Quotes and simulations | yes | none |
115
142
  | Unsigned transaction / typed-data preparation | yes | user's wallet reviews and signs |
116
- | Signing, submission, broadcast | no | private owner-operated boundary only |
117
- | Automatic trading | no | not a public capability |
143
+ | Signing, submission, broadcast | optional self-host only | encrypted local vault, sealed policy, exact local confirmation |
144
+ | Automatic trading | explicit self-host only | exact env `1`, autonomous policy mode, and verified trigger attestation |
118
145
 
119
146
  Never paste a seed phrase, private key, hardware-wallet recovery phrase, vault
120
147
  passphrase, signer token, bot token, or provider credential into chat.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: oracle-hlp-vault-tracker
3
+ description: Track Hyperliquid vaults and HLP with public read-only data.
4
+ ---
5
+
6
+ # Oracle HLP vault tracker
7
+
8
+ Use `hlp_vault_tracker` when the user asks about HLP, Hyperliquid vaults, a
9
+ specific vault, or their vault equity.
10
+
11
+ - `hlp` is the default and reads the canonical protocol-owned HLP vault directly.
12
+ - `summaries` lists public vaults and ranks known TVL without filling missing values.
13
+ - `details` requires `vaultAddress` and optionally accepts `user`.
14
+ - `mine` requires the user's public EVM address.
15
+ - Treat unavailable fields as unknown, never zero.
16
+ - This tool is read-only. It never deposits, withdraws, signs, or submits.
@@ -14,6 +14,9 @@ supported chain.
14
14
  Oracle may scan every configured venue/chain for meme-token launch signals:
15
15
 
16
16
  - EVM factory/pair/pool creation logs across configured chains.
17
+ - Use `evm_token_sniper_scan` for EVM token checks and guarded preparation. It runs
18
+ the same scanner contract on every supported EVM chain. Chain 4663, Robinhood
19
+ Chain, is the default priority, not a separate or weaker path.
17
20
  - Liquidity additions, first swaps, tax/owner-risk changes, holder distribution.
18
21
  - Solana SPL/token-launch feeds and Jupiter-route availability when configured.
19
22
  - Chain-specific launchpads/bonding curves only after the venue is verified.