@discord-player/plugin-host 8.0.0-dev.0 → 8.0.0-dev.2

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.
Files changed (60) hide show
  1. package/README.md +199 -29
  2. package/dist/compat/base-extractor.d.ts +6 -0
  3. package/dist/compat/base-extractor.js.map +1 -1
  4. package/dist/compat/extractor-execution-context.js.map +1 -1
  5. package/dist/compat/extractor-plugin.js +109 -68
  6. package/dist/compat/extractor-plugin.js.map +1 -1
  7. package/dist/compat/utils.js.map +1 -1
  8. package/dist/errors.d.ts +0 -2
  9. package/dist/errors.js +0 -2
  10. package/dist/errors.js.map +1 -1
  11. package/dist/host.d.ts +24 -3
  12. package/dist/host.js +198 -50
  13. package/dist/host.js.map +1 -1
  14. package/dist/index.d.ts +5 -0
  15. package/dist/index.js +2 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/legacy-player.d.ts +1 -1
  18. package/dist/lyrics.d.ts +56 -0
  19. package/dist/lyrics.js +110 -0
  20. package/dist/lyrics.js.map +1 -0
  21. package/dist/media.d.ts +15 -0
  22. package/dist/media.js +193 -0
  23. package/dist/media.js.map +1 -0
  24. package/dist/plugins/execution-options.d.ts +2 -0
  25. package/dist/plugins/operation-dispatch.js +30 -11
  26. package/dist/plugins/operation-dispatch.js.map +1 -1
  27. package/dist/plugins/plugin-error.js.map +1 -1
  28. package/dist/plugins/registry-internals.d.ts +2 -2
  29. package/dist/plugins/registry.d.ts +48 -6
  30. package/dist/plugins/registry.js +180 -18
  31. package/dist/plugins/registry.js.map +1 -1
  32. package/dist/plugins/stream-resolver.js +24 -4
  33. package/dist/plugins/stream-resolver.js.map +1 -1
  34. package/dist/plugins/types.d.ts +28 -23
  35. package/dist/plugins/types.js.map +1 -1
  36. package/dist/protocol.d.ts +43 -3
  37. package/dist/protocol.js +11 -1
  38. package/dist/protocol.js.map +1 -1
  39. package/dist/providers/lrclib.d.ts +120 -0
  40. package/dist/providers/lrclib.js +183 -0
  41. package/dist/providers/lrclib.js.map +1 -0
  42. package/dist/remote.d.ts +29 -0
  43. package/dist/remote.js +142 -0
  44. package/dist/remote.js.map +1 -0
  45. package/dist/runtime.d.ts +2 -8
  46. package/dist/runtime.js +42 -44
  47. package/dist/runtime.js.map +1 -1
  48. package/dist/structures/search-result.js.map +1 -1
  49. package/dist/structures/track-types.d.ts +7 -3
  50. package/dist/structures/track.d.ts +6 -11
  51. package/dist/structures/track.js +10 -10
  52. package/dist/structures/track.js.map +1 -1
  53. package/dist/types.d.ts +4 -4
  54. package/dist/utils/legacy-serialization-schemas.d.ts +12 -0
  55. package/dist/utils/serialization-schemas.d.ts +18 -0
  56. package/dist/utils/serialization-schemas.js +6 -1
  57. package/dist/utils/serialization-schemas.js.map +1 -1
  58. package/dist/utils/serialization.js.map +1 -1
  59. package/docs/remedia-contract.md +55 -0
  60. package/package.json +5 -4
package/dist/runtime.js CHANGED
@@ -21,30 +21,14 @@ export class SourcePluginRuntime extends SafeEventEmitter {
21
21
  super();
22
22
  this.player = options.player ?? this;
23
23
  this.options = options.player?.options ?? options;
24
- this.plugins = new PluginRegistry(this.player, () => this.options.blockExtractors ?? []);
24
+ this.plugins = new PluginRegistry(this.player, () => this.options.blockExtractors ?? [], options.hostId);
25
25
  this.extractors = new ExtractorExecutionContext(this.player);
26
26
  }
27
- /** Queue orchestration requires an actual DiscordPlayer. */
28
- get queues() {
29
- throw new Error('SourcePluginRuntime does not provide queues; use DiscordPlayer for playback');
30
- }
31
- /** Voice nodes require an actual DiscordPlayer. */
32
- get nodes() {
33
- throw new Error('SourcePluginRuntime does not provide voice nodes; use DiscordPlayer for playback');
34
- }
35
- /** Audio clients are unavailable in standalone source execution. */
36
- get remedia() {
37
- throw new Error('SourcePluginRuntime does not initialize a Remedia audio client');
38
- }
39
27
  getRemedia(throwOnMissing = true) {
40
28
  if (throwOnMissing)
41
29
  throw new Error('SourcePluginRuntime does not initialize an audio client; use DiscordPlayer');
42
30
  return null;
43
31
  }
44
- /** Playback is outside the source compatibility API. */
45
- play() {
46
- throw new Error('SourcePluginRuntime cannot play audio; use DiscordPlayer');
47
- }
48
32
  /** Emit a source diagnostic.
49
33
  * @param message Diagnostic text.
50
34
  */
@@ -74,45 +58,59 @@ export class SourcePluginRuntime extends SafeEventEmitter {
74
58
  return new SearchResult({ tracks: query.tracks, playlist: query });
75
59
  }
76
60
  const blocked = [...(this.options.blockExtractors ?? []), ...(options.blockExtractors ?? [])];
77
- const target = options.pluginId ?? (options.searchEngine?.startsWith('ext:') ? options.searchEngine.slice(4) : undefined);
78
61
  await this.plugins.ready();
79
- const prefix = /^([\w.-]+):(?:\/\/)?(.*)$/s.exec(query);
62
+ const engine = options.searchEngine;
63
+ const legacy = engine?.startsWith('ext:') ? engine.slice(4) : undefined;
64
+ if (legacy !== undefined && !this.extractors.get(legacy))
65
+ throw new Error(`Legacy extractor ${legacy} is not registered`);
66
+ const target = legacy ?? (engine && this.plugins.has(engine) ? engine : undefined);
67
+ const prefix = options.resolveCustomProtocols !== false && !/^(?:https?|file):/i.test(query) && !/^[a-z]:/i.test(query)
68
+ ? /^([a-z][a-z0-9+.-]*):(?:\/\/)?(.*)$/is.exec(query)
69
+ : null;
80
70
  const protocol = prefix && this.plugins.supportsProtocol(prefix[1], { pluginId: target, blocked }) ? prefix[1] : undefined;
71
+ const providerHint = target ? undefined : engine;
81
72
  const input = {
82
73
  query: protocol ? prefix[2] : query,
83
74
  protocol,
75
+ providerHint,
84
76
  options: {
85
- ...options,
86
- searchEngine: target
87
- ? undefined
88
- : (options.searchEngine ?? options.source ?? (/^https?:\/\//i.test(query) ? 'arbitrary' : 'auto')),
77
+ requestedBy: options.requestedBy,
78
+ requestOptions: options.requestOptions,
79
+ limit: options.limit,
80
+ blockExtractors: options.blockExtractors,
89
81
  },
90
82
  };
91
- const execution = { signal: options.signal, blocked, pluginId: target };
83
+ const execution = { signal: options.signal, blocked, pluginId: target, hostId: options.hostId };
92
84
  const matches = target
93
- ? [{ pluginId: target, score: 0 }]
94
- : await this.plugins.execute('search.query.match', input, execution);
95
- const match = matches.find((item) => item !== null && item.score >= 0);
96
- if (!match?.pluginId) {
97
- return SearchResult.empty();
98
- }
99
- const result = await this.plugins.execute('search.query.resolve', input, {
100
- ...execution,
101
- pluginId: match.pluginId,
102
- });
103
- if (!result) {
104
- return SearchResult.empty();
105
- }
106
- for (const track of result.tracks) {
107
- track.sourceReference ??= {
85
+ ? [{ pluginId: target, score: 0, hostId: options.hostId }]
86
+ : protocol
87
+ ? this.plugins.protocolMatches(protocol, execution)
88
+ : await this.plugins.execute('search.query.match', input, execution);
89
+ for (const match of matches) {
90
+ if (!match?.pluginId || match.score < 0)
91
+ continue;
92
+ const result = await this.plugins.execute('search.query.resolve', input, {
93
+ ...execution,
108
94
  pluginId: match.pluginId,
109
- data: { url: track.url },
110
- };
111
- if (options.requestedBy !== undefined) {
112
- track.requestedBy = options.requestedBy;
95
+ hostId: match.hostId ?? (target ? options.hostId : null),
96
+ });
97
+ if (!result?.tracks.length) {
98
+ if (target)
99
+ break;
100
+ continue;
101
+ }
102
+ for (const track of result.tracks) {
103
+ track.sourceReference ??= {
104
+ pluginId: match.pluginId,
105
+ ...(match.hostId ? { hostId: match.hostId } : {}),
106
+ data: { url: track.url },
107
+ };
108
+ if (options.requestedBy !== undefined)
109
+ track.requestedBy = options.requestedBy;
113
110
  }
111
+ return new SearchResult(result);
114
112
  }
115
- return new SearchResult(result);
113
+ return SearchResult.empty();
116
114
  }
117
115
  }
118
116
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-result.js","sourceRoot":"","sources":["../../src/structures/search-result.ts"],"names":[],"mappings":"AAWA,oEAAoE;AACpE,MAAM,OAAO,YAAY;IAUa,IAAI;IATxC,+CAA+C;IAC/B,MAAM,CAAU;IAChC,kEAAkE;IAClD,QAAQ,CAAkB;IAE1C;;;OAGG;IACH,YAAoC,IAAsB;oBAAtB,IAAI;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,6EAA6E;IACtE,MAAM,CAAC,KAAK;QACjB,OAAO,IAAI,YAAY,CAAC;YACtB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,8CAA8C;IACvC,OAAO;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAClC,CAAC;IAMM,KAAK,CAAC,KAAc;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"search-result.js","sourceRoot":"","sources":["../../src/structures/search-result.ts"],"names":[],"mappings":"AAYA,oEAAoE;AACpE,MAAM,OAAO,YAAY;IAWa,IAAI;IAVxC,+CAA+C;IAC/B,MAAM,CAAU;IAEhC,kEAAkE;IAClD,QAAQ,CAAkB;IAE1C;;;OAGG;IACH,YAAoC,IAAsB;oBAAtB,IAAI;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,6EAA6E;IACtE,MAAM,CAAC,KAAK;QACjB,OAAO,IAAI,YAAY,CAAC;YACtB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,8CAA8C;IACvC,OAAO;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAClC,CAAC;IAQM,KAAK,CAAC,KAAc;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import type { SearchQueryType } from '../compat/query-types.js';
2
- import type { SourceReference } from '../plugins/types.js';
2
+ import type { ProviderReference } from '../plugins/types.js';
3
3
  import type { JSONValue, SerializedEntity, SERIALIZATION_SCHEMA_VERSION } from '../utils/serialization.js';
4
4
  import type { Playlist, PlaylistData, PlaylistJSON } from './playlist.js';
5
5
  /** Name or identifier for a Track's source integration. */
@@ -13,7 +13,9 @@ export type TrackRequester = string | {
13
13
  /** Public metadata and optional portable source identity. */
14
14
  export interface TrackData<Metadata = unknown> {
15
15
  /** Portable provider payload; exclude secrets and live resources. */
16
- sourceReference?: SourceReference;
16
+ sourceReference?: ProviderReference;
17
+ /** Optional portable lyrics provider affinity. */
18
+ lyricsReference?: ProviderReference;
17
19
  /** Process-local legacy data, never persisted. */
18
20
  raw?: Record<string, any>;
19
21
  /** Legacy source location or engine object, never persisted. */
@@ -92,7 +94,9 @@ export interface TrackJSON<Metadata = unknown> extends TrackData<Metadata> {
92
94
  /** Public Track fields stored by the versioned persistence format. */
93
95
  export type SerializedTrackData = {
94
96
  /** Optional provider identity, absent in older version 1 payloads. */
95
- sourceReference?: SourceReference;
97
+ sourceReference?: ProviderReference;
98
+ /** Optional portable lyrics provider affinity. */
99
+ lyricsReference?: ProviderReference;
96
100
  /** Stable Track identifier. */
97
101
  id: string;
98
102
  /** Display title. */
@@ -1,8 +1,7 @@
1
1
  import type { TrackData, TrackJSON, TrackRequester, TrackSource, SerializedTrack } from './track-types.js';
2
2
  import type { LegacyPlayerContext } from '../legacy-player.js';
3
3
  import type { BaseExtractor, SearchQueryType } from '../compat/extractors.js';
4
- import type { SourceReference } from '../plugins/types.js';
5
- import type { MediaSource } from '@remedia/client';
4
+ import type { ProviderReference } from '../plugins/types.js';
6
5
  import { type Serializable } from '../utils/serialization.js';
7
6
  import { Playlist } from './playlist.js';
8
7
  export type * from './track-types.js';
@@ -33,7 +32,11 @@ export declare class Track<Metadata = unknown> implements Serializable<Serialize
33
32
  /** Playlist containing this track, when present. */
34
33
  playlist: Playlist | null;
35
34
  /** Portable source identity used by the plugin host. */
36
- sourceReference?: SourceReference;
35
+ sourceReference?: ProviderReference;
36
+ /** Optional portable lyrics provider affinity. */
37
+ lyricsReference?: ProviderReference;
38
+ /** Opaque, expiring host state hint. Excluded from toJSON() and serialize(); retain only in memory. */
39
+ sourceState?: string;
37
40
  /** Process-local v7 raw payload. Never serialized. */
38
41
  readonly raw: Record<string, any>;
39
42
  /** Legacy query hint. */
@@ -98,14 +101,6 @@ export declare class Track<Metadata = unknown> implements Serializable<Serialize
98
101
  * @returns The same Track reference with a different metadata type.
99
102
  */
100
103
  asMetadata<NewMetadata>(): Track<NewMetadata>;
101
- /** Deprecated compatibility stub. Playback resolves sources through player.plugins.
102
- * @param options Unused cancellation options.
103
- * @returns Always rejects; register a source plugin instead.
104
- * @deprecated Use player.plugins.resolveStream(track).
105
- */
106
- getStreamableSource(options?: {
107
- signal?: AbortSignal;
108
- }): Promise<MediaSource>;
109
104
  /** Format the Track as `title by author`, omitting the author when empty. */
110
105
  toString(): string;
111
106
  /** Format the Track title as a Markdown hyperlink to its source URL. */
@@ -1,5 +1,5 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import { SerializationError, SourceUnavailableError } from '../errors.js';
2
+ import { SerializationError } from '../errors.js';
3
3
  import { cloneJSONValue, SERIALIZATION_SCHEMA_VERSION } from '../utils/serialization.js';
4
4
  import { Playlist } from './playlist.js';
5
5
  function parseDuration(value) {
@@ -67,6 +67,10 @@ export class Track {
67
67
  playlist;
68
68
  /** Portable source identity used by the plugin host. */
69
69
  sourceReference;
70
+ /** Optional portable lyrics provider affinity. */
71
+ lyricsReference;
72
+ /** Opaque, expiring host state hint. Excluded from toJSON() and serialize(); retain only in memory. */
73
+ sourceState;
70
74
  /** Process-local v7 raw payload. Never serialized. */
71
75
  raw;
72
76
  /** Legacy query hint. */
@@ -113,6 +117,7 @@ export class Track {
113
117
  const data = legacyData ?? input;
114
118
  this.player = legacyData ? input : undefined;
115
119
  this.sourceReference = data.sourceReference;
120
+ this.lyricsReference = data.lyricsReference;
116
121
  this.raw = { ...data, ...data.raw };
117
122
  this.queryType = data.queryType;
118
123
  this.cleanTitle = data.cleanTitle ?? data.title ?? '';
@@ -170,15 +175,6 @@ export class Track {
170
175
  asMetadata() {
171
176
  return this;
172
177
  }
173
- /** Deprecated compatibility stub. Playback resolves sources through player.plugins.
174
- * @param options Unused cancellation options.
175
- * @returns Always rejects; register a source plugin instead.
176
- * @deprecated Use player.plugins.resolveStream(track).
177
- */
178
- async getStreamableSource(options) {
179
- void options;
180
- throw new SourceUnavailableError(this.title || this.id);
181
- }
182
178
  /** Format the Track as `title by author`, omitting the author when empty. */
183
179
  toString() {
184
180
  return this.author ? `${this.title} by ${this.author}` : this.title;
@@ -207,6 +203,7 @@ export class Track {
207
203
  live: this.live,
208
204
  metadata: this.player ? null : this.trackMetadata,
209
205
  sourceReference: this.sourceReference,
206
+ lyricsReference: this.lyricsReference,
210
207
  playlist: hidePlaylist ? null : (this.playlist?.toJSON(false) ?? null),
211
208
  };
212
209
  }
@@ -233,6 +230,9 @@ export class Track {
233
230
  source: this.source,
234
231
  live,
235
232
  metadata: this.player || this.trackMetadata === null ? null : cloneJSONValue(this.trackMetadata, '$.data.metadata'),
233
+ ...(this.lyricsReference
234
+ ? { lyricsReference: { ...this.lyricsReference, data: cloneJSONValue(this.lyricsReference.data) } }
235
+ : {}),
236
236
  ...(this.sourceReference
237
237
  ? {
238
238
  sourceReference: cloneJSONValue(this.sourceReference, '$.data.sourceReference'),
@@ -1 +1 @@
1
- {"version":3,"file":"track.js","sourceRoot":"","sources":["../../src/structures/track.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"track.js","sourceRoot":"","sources":["../../src/structures/track.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -6,10 +6,12 @@ import type { RequestOptions } from 'node:http';
6
6
  export type MediaResource = string | Track | Track[] | Playlist | SearchResult;
7
7
  /** Source search and compatibility options. */
8
8
  export interface SearchOptions {
9
- /** Optional explicit plugin ID. */
10
- pluginId?: string;
9
+ /** Explicit standalone deployment ID; interpreted by DiscordPlayer, never a local provider ID. */
10
+ hostId?: string;
11
11
  /** Legacy type hint or ext:identifier targeting. */
12
12
  searchEngine?: string;
13
+ /** Resolve registered custom prefixes before dispatch; defaults to true. */
14
+ resolveCustomProtocols?: boolean;
13
15
  /** Structural requester. */
14
16
  requestedBy?: TrackRequester | null;
15
17
  /** Legacy local request options. */
@@ -18,8 +20,6 @@ export interface SearchOptions {
18
20
  signal?: AbortSignal;
19
21
  /** Additional disabled provider IDs. */
20
22
  blockExtractors?: readonly string[];
21
- /** Source query type hint. */
22
- source?: string;
23
23
  /** Maximum number of results requested from a source plugin. */
24
24
  limit?: number;
25
25
  }
@@ -80,6 +80,12 @@ export declare const legacyPlaylistSchema: z.ZodPipe<z.ZodObject<{
80
80
  metadata: z.ZodJSONSchema;
81
81
  sourceReference: z.ZodOptional<z.ZodObject<{
82
82
  pluginId: z.ZodString;
83
+ hostId: z.ZodOptional<z.ZodString>;
84
+ data: z.ZodJSONSchema;
85
+ }, z.core.$strict>>;
86
+ lyricsReference: z.ZodOptional<z.ZodObject<{
87
+ pluginId: z.ZodString;
88
+ hostId: z.ZodOptional<z.ZodString>;
83
89
  data: z.ZodJSONSchema;
84
90
  }, z.core.$strict>>;
85
91
  }, z.core.$strict>;
@@ -157,6 +163,12 @@ export declare const legacyPlaylistSchema: z.ZodPipe<z.ZodObject<{
157
163
  metadata: z.JSONType;
158
164
  sourceReference?: {
159
165
  pluginId: string;
166
+ hostId?: string | undefined;
167
+ data: z.JSONType;
168
+ } | undefined;
169
+ lyricsReference?: {
170
+ pluginId: string;
171
+ hostId?: string | undefined;
160
172
  data: z.JSONType;
161
173
  } | undefined;
162
174
  };
@@ -20,6 +20,12 @@ export declare const trackSchema: z.ZodObject<{
20
20
  metadata: z.ZodJSONSchema;
21
21
  sourceReference: z.ZodOptional<z.ZodObject<{
22
22
  pluginId: z.ZodString;
23
+ hostId: z.ZodOptional<z.ZodString>;
24
+ data: z.ZodJSONSchema;
25
+ }, z.core.$strict>>;
26
+ lyricsReference: z.ZodOptional<z.ZodObject<{
27
+ pluginId: z.ZodString;
28
+ hostId: z.ZodOptional<z.ZodString>;
23
29
  data: z.ZodJSONSchema;
24
30
  }, z.core.$strict>>;
25
31
  }, z.core.$strict>;
@@ -43,6 +49,12 @@ export declare const versionedSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
43
49
  metadata: z.ZodJSONSchema;
44
50
  sourceReference: z.ZodOptional<z.ZodObject<{
45
51
  pluginId: z.ZodString;
52
+ hostId: z.ZodOptional<z.ZodString>;
53
+ data: z.ZodJSONSchema;
54
+ }, z.core.$strict>>;
55
+ lyricsReference: z.ZodOptional<z.ZodObject<{
56
+ pluginId: z.ZodString;
57
+ hostId: z.ZodOptional<z.ZodString>;
46
58
  data: z.ZodJSONSchema;
47
59
  }, z.core.$strict>>;
48
60
  }, z.core.$strict>;
@@ -82,6 +94,12 @@ export declare const versionedSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
82
94
  metadata: z.ZodJSONSchema;
83
95
  sourceReference: z.ZodOptional<z.ZodObject<{
84
96
  pluginId: z.ZodString;
97
+ hostId: z.ZodOptional<z.ZodString>;
98
+ data: z.ZodJSONSchema;
99
+ }, z.core.$strict>>;
100
+ lyricsReference: z.ZodOptional<z.ZodObject<{
101
+ pluginId: z.ZodString;
102
+ hostId: z.ZodOptional<z.ZodString>;
85
103
  data: z.ZodJSONSchema;
86
104
  }, z.core.$strict>>;
87
105
  }, z.core.$strict>;
@@ -2,7 +2,11 @@ import { z } from 'zod';
2
2
  import { SERIALIZATION_SCHEMA_VERSION } from './serialization.js';
3
3
  /** Shared finite non-negative numeric constraint. */
4
4
  export const nonNegative = z.number().nonnegative();
5
- const sourceReferenceSchema = z.strictObject({ pluginId: z.string(), data: z.json() });
5
+ const sourceReferenceSchema = z.strictObject({
6
+ pluginId: z.string(),
7
+ hostId: z.string().min(1).max(128).optional(),
8
+ data: z.json(),
9
+ });
6
10
  const authorSchema = z.strictObject({ name: z.string(), url: z.string() });
7
11
  const trackDataSchema = z.strictObject({
8
12
  id: z.string(),
@@ -18,6 +22,7 @@ const trackDataSchema = z.strictObject({
18
22
  live: z.boolean(),
19
23
  metadata: z.json(),
20
24
  sourceReference: sourceReferenceSchema.optional(),
25
+ lyricsReference: sourceReferenceSchema.optional(),
21
26
  });
22
27
  /** Strict versioned Track persistence schema. */
23
28
  export const trackSchema = z.strictObject({
@@ -1 +1 @@
1
- {"version":3,"file":"serialization-schemas.js","sourceRoot":"","sources":["../../src/utils/serialization-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAElE,qDAAqD;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;AAEpD,MAAM,qBAAqB,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAEvF,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAE3E,MAAM,eAAe,GAAG,CAAC,CAAC,YAAY,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,WAAW;IACvB,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE;IAClB,eAAe,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;IAC9G,IAAI,EAAE,eAAe;CACtB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC;IACjH,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC;QACnB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;KAC7B,CAAC;CACH,CAAC,CAAC;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"serialization-schemas.js","sourceRoot":"","sources":["../../src/utils/serialization-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAElE,qDAAqD;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;AAEpD,MAAM,qBAAqB,GAAG,CAAC,CAAC,YAAY,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC7C,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;CACf,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAE3E,MAAM,eAAe,GAAG,CAAC,CAAC,YAAY,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,WAAW;IACvB,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE;IAClB,eAAe,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IACjD,eAAe,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;IAC9G,IAAI,EAAE,eAAe;CACtB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC;IACjH,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC;QACnB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;KAC7B,CAAC;CACH,CAAC,CAAC;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../../src/utils/serialization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../../src/utils/serialization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ # Remedia source-host integration
2
+
3
+ Supported with published `@remedia/client@0.1.0-dev.7`, `@remedia/plugin-host@0.1.0-dev.7`,
4
+ and the matching Remedia server.
5
+
6
+ The standalone adapter exposes `GET /.well-known/remedia` and
7
+ `POST /remedia/v1/execute`. Its aggregate plugin ID is `discord-player.source`;
8
+ operations are `source.search`, `metadata.execute`, `source.related`, and `source.stream`.
9
+ Discovery names are display labels. Stable deployment `hostId` values belong in
10
+ operator configuration and in each Track's portable source reference.
11
+
12
+ Configure a client plugin with `definePlugin({ id, remoteHost: { hostId, url, token?, timeoutMs? } })`, then pass its factory registration in `Player({ plugins: [remotePlugin()], ... })`.
13
+ The bot performs metadata operations, reconstructing canonical Tracks with
14
+ `deserializeSourceResult()`. It sends remote playback and staged-next sources as:
15
+
16
+ ```ts
17
+ const source: OperationMediaSource = {
18
+ hostId: track.sourceReference!.hostId!,
19
+ pluginId: SOURCE_PLUGIN_ID,
20
+ operation: 'source.stream',
21
+ input: { track: serializeSourceTrack(track) },
22
+ };
23
+ ```
24
+
25
+ `OperationMediaSource` is exported by `@remedia/client`. Configure the same host ID,
26
+ endpoint, authentication and allowed operation on the server's `pluginHosts` list.
27
+ The server advertises `capabilities.pluginOperations`; session creation accepts
28
+ `pluginHosts` requirements. Both play and stage reject incompatible assignments.
29
+ No local provider fallback or automatic guild movement is performed.
30
+
31
+ Remedia executes source operations during native preparation, fetches and decodes
32
+ single-use encoded media grants once, and owns playback/stage cancellation. It never
33
+ reopens a grant: replaying a queue entry runs the operation again. Credentials are origin-bound configuration, never Track data.
34
+ `serializeSourceTrack()` carries transient state for operations; persistent
35
+ `Track.serialize()` omits it and preserves durable provider/deployment identity.
36
+ Expired state is reconstructed on the standalone host when possible.
37
+
38
+ See the [complete deployment example](https://discord-player.js.org/docs/plugins/remote-hosts).
39
+
40
+ ## Media probing, Range and reopening
41
+
42
+ Real HTTP tests in this repository generate MP3, Ogg/Opus and faststart M4A and run
43
+ FFmpeg against the published middleware. Default FFmpeg probing fails with HTTP
44
+ 416 because FFmpeg requests `Range: bytes=0-` and v1 rejects any Range request.
45
+ Explicit `-seekable 0` decodes all three formats sequentially. This is not proof of
46
+ Discord voice playback, Rust playback, seeking, reconnects or recovery. Small
47
+ MP4/M4A files with a trailing moov atom may happen to fit FFmpeg's internal buffers;
48
+ large or interleaved files can require seeking and must not be advertised as safe.
49
+
50
+ Remedia dev.7's generic operation path treats host grants as single-use encoded
51
+ inputs, redeems each with one plain GET (no Range, reopen or reconnect), supports
52
+ forward-only seeking, and owns native decoding. Replay re-executes the operation. A grant is not a
53
+ seekable durable URL. Source providers must support reconstruction/reopening for
54
+ recovery; do not advertise arbitrary random-access or tail-moov M4A support from
55
+ the sequential fixture test alone.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@discord-player/plugin-host",
3
- "version": "8.0.0-dev.0",
3
+ "version": "8.0.0-dev.2",
4
4
  "description": "Standalone Discord Player source runtime and Remedia plugin protocol adapter",
5
5
  "keywords": [
6
6
  "api",
@@ -29,7 +29,8 @@
29
29
  "url": "git+https://github.com/Androz2091/discord-player.git"
30
30
  },
31
31
  "files": [
32
- "dist"
32
+ "dist",
33
+ "docs/remedia-contract.md"
33
34
  ],
34
35
  "type": "module",
35
36
  "main": "dist/index.js",
@@ -42,8 +43,8 @@
42
43
  },
43
44
  "dependencies": {
44
45
  "@discordjs/collection": "^2.1.1",
45
- "@remedia/client": "0.1.0-dev.4",
46
- "@remedia/plugin-host": "0.1.0-dev.0",
46
+ "@remedia/client": "0.1.0-dev.7",
47
+ "@remedia/plugin-host": "0.1.0-dev.7",
47
48
  "zod": "^4.6.7"
48
49
  },
49
50
  "devDependencies": {