@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 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