@muhaven/mcp 0.3.0 → 0.4.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/CHANGELOG.md +69 -0
- package/dist/broker.cjs +433 -40
- package/dist/broker.d.cts +31 -1
- package/dist/broker.d.ts +31 -1
- package/dist/broker.js +433 -41
- package/dist/index.cjs +4 -3
- package/dist/index.js +4 -3
- package/manifest.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,75 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.1] — 2026-05-24
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Default broker chain RPC + `--broker-rpc-url` override (OPEN-D
|
|
15
|
+
follow-up).** The broker daemon needs a chain RPC URL for the Path D
|
|
16
|
+
`currentNonce()` pre-check. Previously, with neither
|
|
17
|
+
`MUHAVEN_BROKER_RPC_URL` nor `MUHAVEN_BUNDLER_URL` set, `chainRpcUrl`
|
|
18
|
+
was undefined → the `current_nonce` IPC returned `chain_rpc_failed` and
|
|
19
|
+
Path D fell back to the deep-link. Now:
|
|
20
|
+
- `loadBrokerConfig` **defaults `chainRpcUrl` to the public Arb Sepolia
|
|
21
|
+
RPC** (`https://sepolia-rollup.arbitrum.io/rpc`) when no RPC env is
|
|
22
|
+
set, so Path D works out-of-the-box. Resolution order is unchanged
|
|
23
|
+
where set: `MUHAVEN_BROKER_RPC_URL` → `MUHAVEN_BUNDLER_URL` →
|
|
24
|
+
default. (The broker's only use is a read-only `eth_call`, which the
|
|
25
|
+
public RPC serves.)
|
|
26
|
+
- `muhaven-broker start` / `update` / `setup` gained a
|
|
27
|
+
**`--broker-rpc-url <URL>`** flag to point the spawned daemon at a
|
|
28
|
+
private/faster RPC without exporting an env var. Validated by the same
|
|
29
|
+
https-or-loopback rule as the other URL flags; forwarded into the
|
|
30
|
+
spawned daemon's child env. When omitted, the daemon inherits a
|
|
31
|
+
shell-set value or falls back to the default above.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- `BrokerRuntimeConfig.chainRpcUrl` is now always populated (default
|
|
36
|
+
applied) rather than possibly `undefined`. The type stays optional for
|
|
37
|
+
test-injected configs; the `current_nonce` handler's
|
|
38
|
+
`chain_rpc_failed`-when-unset path remains as a backstop.
|
|
39
|
+
|
|
40
|
+
## [0.4.0] — 2026-05-24
|
|
41
|
+
|
|
42
|
+
### Added
|
|
43
|
+
|
|
44
|
+
- **Wave 5 Option D OPEN-D — `muhaven-broker start` / `update` session-key
|
|
45
|
+
CLI.** Automates the manual last mile after a dashboard mint / revoke so
|
|
46
|
+
the operator no longer hand-edits `MUHAVEN_BROKER_SESSION_KEY` + restarts
|
|
47
|
+
the daemon:
|
|
48
|
+
- `muhaven-broker start --session <key|->` — bring the daemon UP on a
|
|
49
|
+
provided key (when it is NOT running). Refuses if a daemon is already
|
|
50
|
+
bound to the endpoint (points the operator at `update`).
|
|
51
|
+
- `muhaven-broker update --session <key|->` — ROTATE the key on a
|
|
52
|
+
(possibly) running daemon: stop → swap → restart, **reusing the
|
|
53
|
+
existing device-flow JWT** (a key rotation does not force a fresh
|
|
54
|
+
device-code login). Fully stops the old daemon before the new one binds
|
|
55
|
+
the endpoint.
|
|
56
|
+
- Both accept `--session -` to read the key from stdin (keeps it out of
|
|
57
|
+
`ps` / shell history), and when run WITHOUT `--session` ask
|
|
58
|
+
interactively ("Do you have a session key from the dashboard? [Y/n]" →
|
|
59
|
+
masked paste). Non-TTY (CI / piped) never hangs — it requires
|
|
60
|
+
`--session` instead.
|
|
61
|
+
- `setup` gained the same interactive prompt: with no
|
|
62
|
+
`MUHAVEN_BROKER_SESSION_KEY` set, it asks whether you have a
|
|
63
|
+
dashboard-minted key (paste it) or mints a fresh one (the
|
|
64
|
+
fresh-install default). Scripted runs (env var set, or non-TTY) keep
|
|
65
|
+
the prior self-mint behavior.
|
|
66
|
+
- **Key-persistence model: Option B (operator decision 2026-05-24).** The
|
|
67
|
+
resolved key is injected ONLY into the spawned daemon's child env — it
|
|
68
|
+
never touches disk. The daemon (`loadBrokerConfig`) and the keystore are
|
|
69
|
+
unchanged; the broker wire protocol is unchanged (no protocol bump). The
|
|
70
|
+
session key is validated (`0x` + 64 hex) and NEVER logged / echoed /
|
|
71
|
+
embedded in an error message.
|
|
72
|
+
|
|
73
|
+
### Changed
|
|
74
|
+
|
|
75
|
+
- `runStop` (`broker/stop.ts`) gained an optional `clearJwtOnStop` flag
|
|
76
|
+
(default `true`, preserving the `stop` subcommand's behavior). `update`
|
|
77
|
+
passes `false` so the JWT survives the key rotation.
|
|
78
|
+
|
|
10
79
|
## [0.3.0] — 2026-05-23
|
|
11
80
|
|
|
12
81
|
### Added
|