roon-mcp 0.1.0 → 0.2.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 +35 -0
- package/README.md +61 -11
- package/dist/PlaybackService.d.ts +16 -0
- package/dist/PlaybackService.js +59 -2
- package/dist/PlaybackService.js.map +1 -1
- package/dist/PlaybackService.test.js +63 -0
- package/dist/PlaybackService.test.js.map +1 -1
- package/dist/RoonClient.d.ts +21 -0
- package/dist/RoonClient.js +35 -0
- package/dist/RoonClient.js.map +1 -1
- package/dist/RoonMcpServer.d.ts +3 -1
- package/dist/RoonMcpServer.js +215 -39
- package/dist/RoonMcpServer.js.map +1 -1
- package/dist/SearchService.d.ts +12 -0
- package/dist/SearchService.js +63 -1
- package/dist/SearchService.js.map +1 -1
- package/dist/SearchService.test.js +79 -4
- package/dist/SearchService.test.js.map +1 -1
- package/dist/TransportService.d.ts +73 -0
- package/dist/TransportService.js +248 -0
- package/dist/TransportService.js.map +1 -0
- package/dist/TransportService.test.d.ts +1 -0
- package/dist/TransportService.test.js +331 -0
- package/dist/TransportService.test.js.map +1 -0
- package/dist/ZoneService.d.ts +1 -0
- package/dist/ZoneService.js +9 -0
- package/dist/ZoneService.js.map +1 -1
- package/dist/ZoneService.test.js +1 -0
- package/dist/ZoneService.test.js.map +1 -1
- package/dist/ZoneSubscription.d.ts +67 -0
- package/dist/ZoneSubscription.js +187 -0
- package/dist/ZoneSubscription.js.map +1 -0
- package/dist/ZoneSubscription.test.d.ts +1 -0
- package/dist/ZoneSubscription.test.js +185 -0
- package/dist/ZoneSubscription.test.js.map +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +39 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,41 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The version history source of truth is git tags in the format `vMAJOR.MINOR.PATCH`.
|
|
6
6
|
|
|
7
|
+
## [0.2.1]
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- `nowPlaying` returned by `play_now` / `enqueue_and_play` no longer reports
|
|
12
|
+
the track that was playing *before* the action (issue #1). The server now
|
|
13
|
+
subscribes to Roon's zone-state stream at startup and waits for the next
|
|
14
|
+
`Changed` event after a playback action before reading the snapshot, so
|
|
15
|
+
the response reflects the new track. Falls back to the cached snapshot
|
|
16
|
+
after a 2 s timeout so a slow Core never delays an MCP call.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- README: added a natural-language example prompt to illustrate conversational
|
|
21
|
+
Roon control via an AI agent.
|
|
22
|
+
|
|
23
|
+
## [0.2.0] - 2026-06-21
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- `now_playing`, `control_playback`, `set_volume`, and `mute` tools to expose
|
|
28
|
+
Roon's transport controls and current-track state. Previously the server
|
|
29
|
+
could only start playback, not steer it.
|
|
30
|
+
- `search_music({ type: "artist", includeStreaming: true })` now appends a
|
|
31
|
+
streaming track mix by the requested artist (via a track search filtered
|
|
32
|
+
to that artist's subtitle), so requests like "queue multiple *Artist*
|
|
33
|
+
songs" work even when the artist is missing from the local library or
|
|
34
|
+
has zero library albums. The streaming path mirrors the existing
|
|
35
|
+
genre `includeStreaming` flow: library candidates first, then
|
|
36
|
+
ready-to-play streaming tracks appended with `sourceGroup: "Streaming"`.
|
|
37
|
+
- `search_music({ type: "artist" })` now reports an artist with no library
|
|
38
|
+
content (e.g. `subtitle: "0 Albums"`) via the result's `message` field,
|
|
39
|
+
so the agent can opt in to the streaming fallback up front instead of
|
|
40
|
+
discovering the dead end at `get_tracks_for` time.
|
|
41
|
+
|
|
7
42
|
## [0.1.0] - 2026-06-21
|
|
8
43
|
|
|
9
44
|
### Added
|
package/README.md
CHANGED
|
@@ -5,6 +5,14 @@ player, so an AI agent can find music and start playback. Built on the official
|
|
|
5
5
|
Roon Extension API (`node-roon-api` + `node-roon-api-transport` /
|
|
6
6
|
`node-roon-api-browse`).
|
|
7
7
|
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
> **"Play a female vocal trance mix on Roon (Zone: This Computer) — 2000s Dutch trance vibes, the kind of set you'd hear at Amnesia in its prime. Start with something like 4 Strings' Take Me Away."**
|
|
11
|
+
>
|
|
12
|
+
> *Claude searches across your library and streaming, hand-picks the tracks, and queues them — all from a single natural-language prompt.*
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
8
16
|
## Requirements
|
|
9
17
|
|
|
10
18
|
- Node.js 20+
|
|
@@ -60,12 +68,16 @@ npm install -g roon-mcp
|
|
|
60
68
|
| Tool | Purpose |
|
|
61
69
|
| --- | --- |
|
|
62
70
|
| `list_zones()` | List playable zones/outputs (id, name, state, output ids). |
|
|
63
|
-
| `search_music({ query, type?, limit?, includeStreaming? })` | Resolve a text query into ranked browse candidates (opaque, session-scoped item keys). `type` (`artist`/`album`/`track`/`genre`/`playlist`/`radio`) restricts the category; for non-genre types an empty typed search broadens to all categories. See [
|
|
71
|
+
| `search_music({ query, type?, limit?, includeStreaming? })` | Resolve a text query into ranked browse candidates (opaque, session-scoped item keys). `type` (`artist`/`album`/`track`/`genre`/`playlist`/`radio`) restricts the category; for non-genre types an empty typed search broadens to all categories. See [Streaming search](#streaming-search-genre-and-artist) for `type:"genre"`/`type:"artist"` and `includeStreaming`. |
|
|
64
72
|
| `get_tracks_for({ itemKey, limit? })` | Expand an artist/album/genre/playlist candidate into concrete playable tracks. |
|
|
65
73
|
| `play_now({ zoneId?, itemKey, shuffle? })` | Immediately play one search candidate; `zoneId` optional (defaults as above). |
|
|
66
74
|
| `enqueue_and_play({ zoneId?, itemKeys, shuffle? })` | Build an ad-hoc queue from curated item keys and start it (**replaces** the zone's queue); reports queued/skipped. |
|
|
75
|
+
| `now_playing({ zoneId? })` | Snapshot of the zone's current track — state, title, artist, album, seek position. `title`/`artist`/`album` are undefined when nothing is playing. |
|
|
76
|
+
| `control_playback({ zoneId?, action })` | Run a transport verb: `pause` / `resume` / `next` / `previous` / `stop`. |
|
|
77
|
+
| `set_volume({ zoneId?, level })` | Set the zone's volume to `level` percent (0–100). Rescales to each output's native range; incremental outputs are reported as skipped. |
|
|
78
|
+
| `mute({ zoneId?, muted })` | Mute (`muted: true`) or unmute (`muted: false`) every output in the zone. |
|
|
67
79
|
|
|
68
|
-
###
|
|
80
|
+
### Streaming search (genre and artist)
|
|
69
81
|
|
|
70
82
|
Genres don't appear in Roon's flat search hierarchy, so `search_music({ type: "genre" })`
|
|
71
83
|
is handled specially: the server walks Roon's dedicated **Genres** tree (cached per
|
|
@@ -75,15 +87,53 @@ never silently broadens to artists/albums. These candidates are **library-scoped
|
|
|
75
87
|
(genres present in your collection, including TIDAL albums you've added). Expand one
|
|
76
88
|
with `get_tracks_for` to get a cross-album mix of that genre.
|
|
77
89
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
90
|
+
Artist search is library-scoped too: `search_music({ type: "artist" })` returns artists
|
|
91
|
+
present in your collection. When the top-ranked artist has no library content — e.g. a
|
|
92
|
+
node with `subtitle: "0 Albums"` because all albums were removed, or an artist not in
|
|
93
|
+
your library at all but available on TIDAL — the result's `message` field carries a
|
|
94
|
+
hint so the agent can opt in to the streaming path (see below) without having to
|
|
95
|
+
discover the dead end at `get_tracks_for` time.
|
|
96
|
+
|
|
97
|
+
Pass **`includeStreaming: true`** (meaningful for both `type:"genre"` and
|
|
98
|
+
`type:"artist"`) to also pull a track mix from streaming services for discovery beyond
|
|
99
|
+
your library:
|
|
100
|
+
|
|
101
|
+
- For `type:"genre"`, the server takes the genre-relevant **albums** the flat search
|
|
102
|
+
surfaces and samples tracks across them. Library genre nodes come first, then
|
|
103
|
+
ready-to-play streaming tracks (each a `track` candidate, source group `Streaming`)
|
|
104
|
+
appended after.
|
|
105
|
+
- For `type:"artist"`, the server runs a track search and filters to entries by that
|
|
106
|
+
artist (matching the track's subtitle, which Roon uses for the artist on track rows).
|
|
107
|
+
Library artist candidates come first, then streaming tracks by the same artist
|
|
108
|
+
appended after. This is the path that unblocks "play/queue multiple *Artist* songs"
|
|
109
|
+
for an artist with no library content: the streaming tracks are queue-playable
|
|
110
|
+
directly via `enqueue_and_play`. Results are best-effort — a small fraction may be
|
|
111
|
+
features or compilations; the agent's per-artist cap / dedupe handles that.
|
|
112
|
+
|
|
113
|
+
Default is `false` (library only).
|
|
114
|
+
|
|
115
|
+
> Cost: with `includeStreaming` on, each sampled album/track re-navigates the flat
|
|
116
|
+
> search, so an opt-in streaming search does a handful of extra browse round-trips.
|
|
117
|
+
|
|
118
|
+
### Now playing & transport
|
|
119
|
+
|
|
120
|
+
`now_playing({ zoneId? })` returns a structured snapshot (state, title, artist,
|
|
121
|
+
album, seek position) so the agent can confirm what's on and where before
|
|
122
|
+
running a transport verb. The server subscribes to Roon's zone-state stream
|
|
123
|
+
once per paired Core and waits for the next `Changed` event after `play_now`
|
|
124
|
+
/`enqueue_and_play`/`control_playback` — so `nowPlaying` in the response
|
|
125
|
+
reflects the new track rather than the one that was playing before the
|
|
126
|
+
action. The wait times out fast on a slow Core (2 s) and falls back to the
|
|
127
|
+
cached snapshot, so a hung subscription can never delay an MCP call.
|
|
128
|
+
`control_playback` takes one verb at a time
|
|
129
|
+
(`pause`, `resume`, `next`, `previous`, `stop`) — there is no compound
|
|
130
|
+
"pause and skip." For "louder" / "softer" without a number, `set_volume` is
|
|
131
|
+
absolute, so the agent should ask for a target percent or apply a default
|
|
132
|
+
delta; volume isn't reported in `now_playing`. Volume and mute fan out to
|
|
133
|
+
every output in the resolved zone and rescale per output, so a single
|
|
134
|
+
`set_volume({ level: 50 })` works correctly across a grouped zone with mixed
|
|
135
|
+
dB / numeric devices; incremental outputs (IR blasters and the like) are
|
|
136
|
+
reported as `skipped` in the result.
|
|
87
137
|
|
|
88
138
|
## Assumptions
|
|
89
139
|
|
|
@@ -40,4 +40,20 @@ export declare class PlaybackService {
|
|
|
40
40
|
private findAction;
|
|
41
41
|
/** Best-effort shuffle via Transport; returns false if unsupported/failed. */
|
|
42
42
|
private trySetShuffle;
|
|
43
|
+
/**
|
|
44
|
+
* Snapshot a zone's `(state, title, artist, album)` fingerprint before a
|
|
45
|
+
* playback action runs, so we can wait for the post-action change. Reads
|
|
46
|
+
* via the active subscription (or `get_zones` cold-start fallback). Returns
|
|
47
|
+
* `undefined` when no subscription is active and the zone isn't yet known
|
|
48
|
+
* — the caller falls back to the legacy immediate read.
|
|
49
|
+
*/
|
|
50
|
+
private captureFingerprint;
|
|
51
|
+
/** One-shot `get_zones` RPC for the cold-start case (no subscription yet). */
|
|
52
|
+
private coldStartGetZones;
|
|
53
|
+
/**
|
|
54
|
+
* Read the `now_playing` line for a zone after a playback action, waiting
|
|
55
|
+
* for the subscription to push a snapshot that reflects the change.
|
|
56
|
+
* Returns `undefined` when the zone isn't reported (e.g. Core unpaired).
|
|
57
|
+
*/
|
|
58
|
+
private readNowPlayingLine;
|
|
43
59
|
}
|
package/dist/PlaybackService.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { silentLogger } from "./logger.js";
|
|
2
2
|
import { hierarchyForLocator } from "./locator.js";
|
|
3
3
|
import { SearchNavigator, requireLocator } from "./SearchNavigator.js";
|
|
4
|
+
import { fingerprintFor, } from "./ZoneSubscription.js";
|
|
4
5
|
import { RoonMcpError, } from "./types.js";
|
|
5
6
|
// Item keys handed to playback are locators; we drive the playback drill in the
|
|
6
7
|
// hierarchy that produced them (flat "search" for most items, "genres" for a
|
|
@@ -100,6 +101,11 @@ export class PlaybackService {
|
|
|
100
101
|
const usedShuffleAction = normalize(action.title).includes("shuffle");
|
|
101
102
|
// 3. Invoke the action against the target zone. Starting new content must
|
|
102
103
|
// go through a Browse action carrying zone_or_output_id (not Transport).
|
|
104
|
+
// Capture the pre-action fingerprint so we can wait for Roon to push the
|
|
105
|
+
// post-action snapshot. Reading `now_playing` immediately after the
|
|
106
|
+
// browse action would still return the pre-action track (issue #1).
|
|
107
|
+
const sub = this.roon.getActiveSubscription();
|
|
108
|
+
const before = await this.captureFingerprint(sub, zoneId);
|
|
103
109
|
const result = await this.browse.browse({
|
|
104
110
|
hierarchy,
|
|
105
111
|
item_key: action.item_key,
|
|
@@ -118,7 +124,7 @@ export class PlaybackService {
|
|
|
118
124
|
" Shuffle was requested but could not be applied (no shuffle action and Transport setting unavailable).";
|
|
119
125
|
}
|
|
120
126
|
}
|
|
121
|
-
const nowPlaying = await this.
|
|
127
|
+
const nowPlaying = await this.readNowPlayingLine(sub, zoneId, before);
|
|
122
128
|
return {
|
|
123
129
|
ok: true,
|
|
124
130
|
zoneId,
|
|
@@ -151,6 +157,11 @@ export class PlaybackService {
|
|
|
151
157
|
const skipped = [];
|
|
152
158
|
let queued = 0;
|
|
153
159
|
let index = 0;
|
|
160
|
+
// Capture the pre-action fingerprint so we can wait for Roon to push
|
|
161
|
+
// the post-action snapshot. Reading `now_playing` immediately after
|
|
162
|
+
// the browse action would still return the pre-action track (issue #1).
|
|
163
|
+
const sub = this.roon.getActiveSubscription();
|
|
164
|
+
const before = await this.captureFingerprint(sub, targetId);
|
|
154
165
|
// 1. Start the queue with the first item that can Play Now. If the first
|
|
155
166
|
// can't play, fall through to the next as the queue starter.
|
|
156
167
|
let started = false;
|
|
@@ -193,7 +204,7 @@ export class PlaybackService {
|
|
|
193
204
|
shuffleNote = ` Shuffle ${input.shuffle ? "on" : "off"} could not be applied (Transport setting unavailable).`;
|
|
194
205
|
}
|
|
195
206
|
}
|
|
196
|
-
const nowPlaying = await this.
|
|
207
|
+
const nowPlaying = await this.readNowPlayingLine(sub, targetId, before);
|
|
197
208
|
const message = `Queued ${queued} of ${requested} item(s)` +
|
|
198
209
|
(skipped.length > 0 ? `, skipped ${skipped.length}.` : ".") +
|
|
199
210
|
(shuffleNote ?? "");
|
|
@@ -287,5 +298,51 @@ export class PlaybackService {
|
|
|
287
298
|
});
|
|
288
299
|
}), (applied) => ({ applied }));
|
|
289
300
|
}
|
|
301
|
+
/**
|
|
302
|
+
* Snapshot a zone's `(state, title, artist, album)` fingerprint before a
|
|
303
|
+
* playback action runs, so we can wait for the post-action change. Reads
|
|
304
|
+
* via the active subscription (or `get_zones` cold-start fallback). Returns
|
|
305
|
+
* `undefined` when no subscription is active and the zone isn't yet known
|
|
306
|
+
* — the caller falls back to the legacy immediate read.
|
|
307
|
+
*/
|
|
308
|
+
async captureFingerprint(sub, zoneId) {
|
|
309
|
+
if (!sub)
|
|
310
|
+
return undefined;
|
|
311
|
+
const body = await sub.getSnapshot(() => this.coldStartGetZones());
|
|
312
|
+
return fingerprintFor(body, zoneId);
|
|
313
|
+
}
|
|
314
|
+
/** One-shot `get_zones` RPC for the cold-start case (no subscription yet). */
|
|
315
|
+
coldStartGetZones() {
|
|
316
|
+
const transport = this.roon.getTransport();
|
|
317
|
+
return new Promise((resolve, reject) => {
|
|
318
|
+
transport.get_zones((err, result) => {
|
|
319
|
+
if (err) {
|
|
320
|
+
reject(new RoonMcpError("BROWSE_FAILED", `get_zones failed: ${err}`));
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
resolve(result);
|
|
324
|
+
});
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Read the `now_playing` line for a zone after a playback action, waiting
|
|
329
|
+
* for the subscription to push a snapshot that reflects the change.
|
|
330
|
+
* Returns `undefined` when the zone isn't reported (e.g. Core unpaired).
|
|
331
|
+
*/
|
|
332
|
+
async readNowPlayingLine(sub, zoneId, before) {
|
|
333
|
+
try {
|
|
334
|
+
if (!sub || !before) {
|
|
335
|
+
return await this.zones.nowPlayingFor(zoneId);
|
|
336
|
+
}
|
|
337
|
+
const after = await sub.waitForZoneChange(zoneId, before);
|
|
338
|
+
const z = (after.zones ?? []).find((x) => x.zone_id === zoneId ||
|
|
339
|
+
(x.outputs ?? []).some((o) => o.output_id === zoneId));
|
|
340
|
+
const np = z?.now_playing;
|
|
341
|
+
return np?.two_line?.line1 ?? np?.one_line?.line1 ?? np?.three_line?.line1;
|
|
342
|
+
}
|
|
343
|
+
catch {
|
|
344
|
+
return undefined;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
290
347
|
}
|
|
291
348
|
//# sourceMappingURL=PlaybackService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaybackService.js","sourceRoot":"","sources":["../src/PlaybackService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlaybackService.js","sourceRoot":"","sources":["../src/PlaybackService.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { PlaybackService } from "./PlaybackService.js";
|
|
|
6
6
|
import { TrackExpansionService } from "./TrackExpansionService.js";
|
|
7
7
|
import { RoonMcpError } from "./types.js";
|
|
8
8
|
import { ZoneService } from "./ZoneService.js";
|
|
9
|
+
import { ZoneSubscription } from "./ZoneSubscription.js";
|
|
9
10
|
/** Locator for a single-group/single-item search keyed by `query`. */
|
|
10
11
|
const loc = (query) => encodeLocator({ q: query, g: 0, i: 0 });
|
|
11
12
|
// Synthetic keys for the canned search tree the navigator walks:
|
|
@@ -117,6 +118,7 @@ function build(items, actionKeys, opts = {}) {
|
|
|
117
118
|
waitForCore: async () => undefined,
|
|
118
119
|
getBrowse: () => browse,
|
|
119
120
|
getTransport: () => transport,
|
|
121
|
+
getActiveSubscription: () => undefined,
|
|
120
122
|
};
|
|
121
123
|
const mgr = new BrowseSessionManager(stub);
|
|
122
124
|
const zones = new ZoneService(stub);
|
|
@@ -278,4 +280,65 @@ test("enqueue rejects an unknown zone id with ZONE_NOT_FOUND", async () => {
|
|
|
278
280
|
const { svc } = build({ t1: [action("Play Now", "p1")] }, ["p1"]);
|
|
279
281
|
await assert.rejects(svc.enqueueAndPlay({ zoneId: "nope", itemKeys: [loc("t1")] }), (e) => e instanceof RoonMcpError && e.code === "ZONE_NOT_FOUND");
|
|
280
282
|
});
|
|
283
|
+
/**
|
|
284
|
+
* Subscription-backed playback stub. The pre-loaded snapshot reports the
|
|
285
|
+
* previous track; the test fires a `Changed` event after the action so the
|
|
286
|
+
* service reads the new track (not the pre-action one) — issue #1.
|
|
287
|
+
*/
|
|
288
|
+
function buildWithSubscription() {
|
|
289
|
+
const browse = new FakeBrowse({ album: [action("Play Now", "act:play")] }, new Set(["act:play"]));
|
|
290
|
+
const transport = new FakeTransport([ZONE]);
|
|
291
|
+
let cb;
|
|
292
|
+
const transportWithSub = {
|
|
293
|
+
...transport,
|
|
294
|
+
subscribe_zones: (callback) => {
|
|
295
|
+
cb = callback;
|
|
296
|
+
},
|
|
297
|
+
};
|
|
298
|
+
const sub = new ZoneSubscription(transportWithSub, "core-1");
|
|
299
|
+
sub.start();
|
|
300
|
+
// Pre-load the cache so the pre-fingerprint read comes from the
|
|
301
|
+
// subscription, not a cold-start RPC.
|
|
302
|
+
cb?.("Subscribed", { zones: [ZONE] });
|
|
303
|
+
const stub = {
|
|
304
|
+
waitForCore: async () => undefined,
|
|
305
|
+
getBrowse: () => browse,
|
|
306
|
+
getTransport: () => transport,
|
|
307
|
+
getActiveSubscription: () => sub,
|
|
308
|
+
};
|
|
309
|
+
const mgr = new BrowseSessionManager(stub);
|
|
310
|
+
const zones = new ZoneService(stub);
|
|
311
|
+
const tracks = new TrackExpansionService(mgr);
|
|
312
|
+
const svc = new PlaybackService(mgr, zones, stub, tracks);
|
|
313
|
+
return { svc, push: (r, b) => cb?.(r, b) };
|
|
314
|
+
}
|
|
315
|
+
test("play_now returns the new track in nowPlaying (issue #1)", async () => {
|
|
316
|
+
// Reproduces the bug: the previous test pre-loaded "Some Track" into
|
|
317
|
+
// ZONE. The subscription will push a Changed event with "Brand New Track"
|
|
318
|
+
// before the service reads the post-action snapshot. With the wait-for-
|
|
319
|
+
// change fix, nowPlaying should reflect the new track.
|
|
320
|
+
const { svc, push } = buildWithSubscription();
|
|
321
|
+
const newZone = {
|
|
322
|
+
...ZONE,
|
|
323
|
+
state: "playing",
|
|
324
|
+
now_playing: { two_line: { line1: "Brand New Track", line2: "Brand New Artist" } },
|
|
325
|
+
};
|
|
326
|
+
const out = await Promise.all([
|
|
327
|
+
svc.playNow({ zoneId: "z1", itemKey: loc("album") }),
|
|
328
|
+
new Promise((r) => setTimeout(() => {
|
|
329
|
+
push("Changed", { zones_changed: [newZone] });
|
|
330
|
+
r();
|
|
331
|
+
}, 5)),
|
|
332
|
+
]).then(([res]) => res);
|
|
333
|
+
assert.equal(out.nowPlaying, "Brand New Track");
|
|
334
|
+
});
|
|
335
|
+
test("play_now still reports the previous track when no Changed event arrives", async () => {
|
|
336
|
+
// On a slow Core where the subscription never pushes the new state,
|
|
337
|
+
// the service should time out and return whatever is in the cache —
|
|
338
|
+
// matching the legacy "may be stale" behavior. This pins the timeout
|
|
339
|
+
// fallback so a misbehaving subscription can't hang the call.
|
|
340
|
+
const { svc } = buildWithSubscription();
|
|
341
|
+
const out = await svc.playNow({ zoneId: "z1", itemKey: loc("album") });
|
|
342
|
+
assert.equal(out.nowPlaying, "Some Track");
|
|
343
|
+
});
|
|
281
344
|
//# sourceMappingURL=PlaybackService.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaybackService.test.js","sourceRoot":"","sources":["../src/PlaybackService.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlaybackService.test.js","sourceRoot":"","sources":["../src/PlaybackService.test.ts"],"names":[],"mappings":"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"}
|
package/dist/RoonClient.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type RoonCore } from "node-roon-api";
|
|
2
2
|
import { type RoonApiBrowse as RoonBrowseService } from "node-roon-api-browse";
|
|
3
3
|
import { type RoonApiTransport as RoonTransportService } from "node-roon-api-transport";
|
|
4
|
+
import { ZoneSubscription, ZoneSubscriptionRegistry } from "./ZoneSubscription.js";
|
|
4
5
|
export interface RoonClientOptions {
|
|
5
6
|
extensionId?: string;
|
|
6
7
|
displayName?: string;
|
|
@@ -19,6 +20,13 @@ export declare class RoonClient {
|
|
|
19
20
|
private readonly roon;
|
|
20
21
|
private readonly status;
|
|
21
22
|
private readonly log;
|
|
23
|
+
/**
|
|
24
|
+
* Tracks `subscribe_zones` callbacks per paired Core. Read services pull
|
|
25
|
+
* zone state from this registry's cache (when fresh) and wait on it after
|
|
26
|
+
* a playback action so `now_playing` reflects the new track rather than
|
|
27
|
+
* the pre-action one. See issue #1.
|
|
28
|
+
*/
|
|
29
|
+
private readonly zones;
|
|
22
30
|
private core;
|
|
23
31
|
private readonly coreWaiters;
|
|
24
32
|
constructor(options?: RoonClientOptions);
|
|
@@ -32,6 +40,19 @@ export declare class RoonClient {
|
|
|
32
40
|
getTransport(): RoonTransportService;
|
|
33
41
|
/** Browse service of the currently paired Core. Throws if unpaired. */
|
|
34
42
|
getBrowse(): RoonBrowseService;
|
|
43
|
+
/**
|
|
44
|
+
* The `subscribe_zones` registry, keyed by `core_id`. Read services use
|
|
45
|
+
* this to read the cached zone snapshot and to wait for the next change
|
|
46
|
+
* after a playback action. Returns `undefined` when no Core is paired.
|
|
47
|
+
*/
|
|
48
|
+
zoneSubscriptions(): ZoneSubscriptionRegistry;
|
|
49
|
+
/**
|
|
50
|
+
* The zone subscription for the currently paired Core, or `undefined` when
|
|
51
|
+
* no Core is paired or the `Subscribed` event has not yet landed. The
|
|
52
|
+
* subscription is the right place to read the latest zone snapshot and to
|
|
53
|
+
* wait for the next change after a playback action — see issue #1.
|
|
54
|
+
*/
|
|
55
|
+
getActiveSubscription(): ZoneSubscription | undefined;
|
|
35
56
|
private onCorePaired;
|
|
36
57
|
private onCoreUnpaired;
|
|
37
58
|
}
|
package/dist/RoonClient.js
CHANGED
|
@@ -3,6 +3,7 @@ import RoonApiBrowse from "node-roon-api-browse";
|
|
|
3
3
|
import RoonApiStatus from "node-roon-api-status";
|
|
4
4
|
import RoonApiTransport from "node-roon-api-transport";
|
|
5
5
|
import { RoonMcpError } from "./types.js";
|
|
6
|
+
import { ZoneSubscriptionRegistry } from "./ZoneSubscription.js";
|
|
6
7
|
const DEFAULTS = {
|
|
7
8
|
extensionId: "com.christophhalang.roon-mcp",
|
|
8
9
|
displayName: "Roon MCP",
|
|
@@ -19,6 +20,13 @@ export class RoonClient {
|
|
|
19
20
|
roon;
|
|
20
21
|
status;
|
|
21
22
|
log;
|
|
23
|
+
/**
|
|
24
|
+
* Tracks `subscribe_zones` callbacks per paired Core. Read services pull
|
|
25
|
+
* zone state from this registry's cache (when fresh) and wait on it after
|
|
26
|
+
* a playback action so `now_playing` reflects the new track rather than
|
|
27
|
+
* the pre-action one. See issue #1.
|
|
28
|
+
*/
|
|
29
|
+
zones = new ZoneSubscriptionRegistry();
|
|
22
30
|
core;
|
|
23
31
|
coreWaiters = [];
|
|
24
32
|
constructor(options = {}) {
|
|
@@ -48,6 +56,8 @@ export class RoonClient {
|
|
|
48
56
|
}
|
|
49
57
|
stop() {
|
|
50
58
|
// node-roon-api has no clean teardown; drop references and reject waiters.
|
|
59
|
+
if (this.core)
|
|
60
|
+
this.zones.stopFor(this.core.core_id);
|
|
51
61
|
this.core = undefined;
|
|
52
62
|
this.coreWaiters.length = 0;
|
|
53
63
|
}
|
|
@@ -87,16 +97,41 @@ export class RoonClient {
|
|
|
87
97
|
}
|
|
88
98
|
return this.core.services.RoonApiBrowse;
|
|
89
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* The `subscribe_zones` registry, keyed by `core_id`. Read services use
|
|
102
|
+
* this to read the cached zone snapshot and to wait for the next change
|
|
103
|
+
* after a playback action. Returns `undefined` when no Core is paired.
|
|
104
|
+
*/
|
|
105
|
+
zoneSubscriptions() {
|
|
106
|
+
return this.zones;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* The zone subscription for the currently paired Core, or `undefined` when
|
|
110
|
+
* no Core is paired or the `Subscribed` event has not yet landed. The
|
|
111
|
+
* subscription is the right place to read the latest zone snapshot and to
|
|
112
|
+
* wait for the next change after a playback action — see issue #1.
|
|
113
|
+
*/
|
|
114
|
+
getActiveSubscription() {
|
|
115
|
+
if (!this.core)
|
|
116
|
+
return undefined;
|
|
117
|
+
return this.zones.forCore(this.core.core_id);
|
|
118
|
+
}
|
|
90
119
|
onCorePaired(core) {
|
|
91
120
|
this.core = core;
|
|
92
121
|
this.log(`paired with Core "${core.display_name}" (${core.core_id})`);
|
|
93
122
|
this.status.set_status(`Paired with ${core.display_name}`, false);
|
|
123
|
+
// Start a `subscribe_zones` subscription for this Core so the cached
|
|
124
|
+
// snapshot is current before any service reads it. Re-pairs (same core
|
|
125
|
+
// reappears) drop the prior subscription via the registry.
|
|
126
|
+
const transport = core.services.RoonApiTransport;
|
|
127
|
+
this.zones.startFor(core.core_id, transport);
|
|
94
128
|
const waiters = this.coreWaiters.splice(0, this.coreWaiters.length);
|
|
95
129
|
for (const waiter of waiters)
|
|
96
130
|
waiter(core);
|
|
97
131
|
}
|
|
98
132
|
onCoreUnpaired(core) {
|
|
99
133
|
this.log(`unpaired from Core "${core.display_name}" (${core.core_id})`);
|
|
134
|
+
this.zones.stopFor(core.core_id);
|
|
100
135
|
if (this.core?.core_id === core.core_id)
|
|
101
136
|
this.core = undefined;
|
|
102
137
|
this.status.set_status("Waiting for Roon Core…", false);
|
package/dist/RoonClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoonClient.js","sourceRoot":"","sources":["../src/RoonClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAA0B,MAAM,eAAe,CAAC;AACvD,OAAO,aAEN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,gBAEN,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"RoonClient.js","sourceRoot":"","sources":["../src/RoonClient.ts"],"names":[],"mappings":"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"}
|
package/dist/RoonMcpServer.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { PlaybackService } from "./PlaybackService.js";
|
|
|
2
2
|
import { RoonClient } from "./RoonClient.js";
|
|
3
3
|
import { SearchService } from "./SearchService.js";
|
|
4
4
|
import { TrackExpansionService } from "./TrackExpansionService.js";
|
|
5
|
+
import { TransportService } from "./TransportService.js";
|
|
5
6
|
import { ZoneService } from "./ZoneService.js";
|
|
6
7
|
/**
|
|
7
8
|
* Owns MCP startup and tool registration, and maps tool calls to services.
|
|
@@ -13,8 +14,9 @@ export declare class RoonMcpServer {
|
|
|
13
14
|
private readonly search;
|
|
14
15
|
private readonly tracks;
|
|
15
16
|
private readonly playback;
|
|
17
|
+
private readonly transport;
|
|
16
18
|
private readonly server;
|
|
17
|
-
constructor(roon: RoonClient, zones: ZoneService, search: SearchService, tracks: TrackExpansionService, playback: PlaybackService);
|
|
19
|
+
constructor(roon: RoonClient, zones: ZoneService, search: SearchService, tracks: TrackExpansionService, playback: PlaybackService, transport: TransportService);
|
|
18
20
|
registerTools(): void;
|
|
19
21
|
start(): Promise<void>;
|
|
20
22
|
stop(): Promise<void>;
|