navidrome-mcp 1.0.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.
Files changed (195) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +397 -0
  3. package/dist/capabilities.d.ts +20 -0
  4. package/dist/capabilities.d.ts.map +1 -0
  5. package/dist/capabilities.js +25 -0
  6. package/dist/capabilities.js.map +1 -0
  7. package/dist/client/auth-manager.d.ts +27 -0
  8. package/dist/client/auth-manager.d.ts.map +1 -0
  9. package/dist/client/auth-manager.js +54 -0
  10. package/dist/client/auth-manager.js.map +1 -0
  11. package/dist/client/navidrome-client.d.ts +28 -0
  12. package/dist/client/navidrome-client.d.ts.map +1 -0
  13. package/dist/client/navidrome-client.js +84 -0
  14. package/dist/client/navidrome-client.js.map +1 -0
  15. package/dist/config.d.ts +41 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +132 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/constants/defaults.d.ts +29 -0
  20. package/dist/constants/defaults.d.ts.map +1 -0
  21. package/dist/constants/defaults.js +37 -0
  22. package/dist/constants/defaults.js.map +1 -0
  23. package/dist/constants/timeouts.d.ts +66 -0
  24. package/dist/constants/timeouts.d.ts.map +1 -0
  25. package/dist/constants/timeouts.js +66 -0
  26. package/dist/constants/timeouts.js.map +1 -0
  27. package/dist/index.d.ts +20 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +70 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/resources/index.d.ts +21 -0
  32. package/dist/resources/index.d.ts.map +1 -0
  33. package/dist/resources/index.js +83 -0
  34. package/dist/resources/index.js.map +1 -0
  35. package/dist/schemas/common.d.ts +68 -0
  36. package/dist/schemas/common.d.ts.map +1 -0
  37. package/dist/schemas/common.js +69 -0
  38. package/dist/schemas/common.js.map +1 -0
  39. package/dist/schemas/index.d.ts +21 -0
  40. package/dist/schemas/index.d.ts.map +1 -0
  41. package/dist/schemas/index.js +24 -0
  42. package/dist/schemas/index.js.map +1 -0
  43. package/dist/schemas/pagination.d.ts +153 -0
  44. package/dist/schemas/pagination.d.ts.map +1 -0
  45. package/dist/schemas/pagination.js +93 -0
  46. package/dist/schemas/pagination.js.map +1 -0
  47. package/dist/schemas/validation.d.ts +147 -0
  48. package/dist/schemas/validation.d.ts.map +1 -0
  49. package/dist/schemas/validation.js +143 -0
  50. package/dist/schemas/validation.js.map +1 -0
  51. package/dist/tools/handlers/lastfm-handlers.d.ts +5 -0
  52. package/dist/tools/handlers/lastfm-handlers.d.ts.map +1 -0
  53. package/dist/tools/handlers/lastfm-handlers.js +143 -0
  54. package/dist/tools/handlers/lastfm-handlers.js.map +1 -0
  55. package/dist/tools/handlers/lyrics-handlers.d.ts +5 -0
  56. package/dist/tools/handlers/lyrics-handlers.d.ts.map +1 -0
  57. package/dist/tools/handlers/lyrics-handlers.js +51 -0
  58. package/dist/tools/handlers/lyrics-handlers.js.map +1 -0
  59. package/dist/tools/handlers/playlist-handlers.d.ts +5 -0
  60. package/dist/tools/handlers/playlist-handlers.d.ts.map +1 -0
  61. package/dist/tools/handlers/playlist-handlers.js +316 -0
  62. package/dist/tools/handlers/playlist-handlers.js.map +1 -0
  63. package/dist/tools/handlers/queue-handlers.d.ts +5 -0
  64. package/dist/tools/handlers/queue-handlers.d.ts.map +1 -0
  65. package/dist/tools/handlers/queue-handlers.js +135 -0
  66. package/dist/tools/handlers/queue-handlers.js.map +1 -0
  67. package/dist/tools/handlers/radio-handlers.d.ts +5 -0
  68. package/dist/tools/handlers/radio-handlers.d.ts.map +1 -0
  69. package/dist/tools/handlers/radio-handlers.js +323 -0
  70. package/dist/tools/handlers/radio-handlers.js.map +1 -0
  71. package/dist/tools/handlers/registry.d.ts +26 -0
  72. package/dist/tools/handlers/registry.d.ts.map +1 -0
  73. package/dist/tools/handlers/registry.js +77 -0
  74. package/dist/tools/handlers/registry.js.map +1 -0
  75. package/dist/tools/handlers/search-handlers.d.ts +5 -0
  76. package/dist/tools/handlers/search-handlers.d.ts.map +1 -0
  77. package/dist/tools/handlers/search-handlers.js +125 -0
  78. package/dist/tools/handlers/search-handlers.js.map +1 -0
  79. package/dist/tools/handlers/tag-handlers.d.ts +5 -0
  80. package/dist/tools/handlers/tag-handlers.d.ts.map +1 -0
  81. package/dist/tools/handlers/tag-handlers.js +155 -0
  82. package/dist/tools/handlers/tag-handlers.js.map +1 -0
  83. package/dist/tools/handlers/user-preferences-handlers.d.ts +5 -0
  84. package/dist/tools/handlers/user-preferences-handlers.d.ts.map +1 -0
  85. package/dist/tools/handlers/user-preferences-handlers.js +155 -0
  86. package/dist/tools/handlers/user-preferences-handlers.js.map +1 -0
  87. package/dist/tools/index.d.ts +19 -0
  88. package/dist/tools/index.d.ts.map +1 -0
  89. package/dist/tools/index.js +20 -0
  90. package/dist/tools/index.js.map +1 -0
  91. package/dist/tools/lastfm-discovery.d.ts +107 -0
  92. package/dist/tools/lastfm-discovery.d.ts.map +1 -0
  93. package/dist/tools/lastfm-discovery.js +238 -0
  94. package/dist/tools/lastfm-discovery.js.map +1 -0
  95. package/dist/tools/library.d.ts +31 -0
  96. package/dist/tools/library.d.ts.map +1 -0
  97. package/dist/tools/library.js +272 -0
  98. package/dist/tools/library.js.map +1 -0
  99. package/dist/tools/listening-history.d.ts +51 -0
  100. package/dist/tools/listening-history.d.ts.map +1 -0
  101. package/dist/tools/listening-history.js +126 -0
  102. package/dist/tools/listening-history.js.map +1 -0
  103. package/dist/tools/lyrics.d.ts +35 -0
  104. package/dist/tools/lyrics.d.ts.map +1 -0
  105. package/dist/tools/lyrics.js +222 -0
  106. package/dist/tools/lyrics.js.map +1 -0
  107. package/dist/tools/media-library.d.ts +46 -0
  108. package/dist/tools/media-library.d.ts.map +1 -0
  109. package/dist/tools/media-library.js +179 -0
  110. package/dist/tools/media-library.js.map +1 -0
  111. package/dist/tools/playlist-management.d.ts +80 -0
  112. package/dist/tools/playlist-management.d.ts.map +1 -0
  113. package/dist/tools/playlist-management.js +384 -0
  114. package/dist/tools/playlist-management.js.map +1 -0
  115. package/dist/tools/queue-management.d.ts +48 -0
  116. package/dist/tools/queue-management.d.ts.map +1 -0
  117. package/dist/tools/queue-management.js +83 -0
  118. package/dist/tools/queue-management.js.map +1 -0
  119. package/dist/tools/radio-discovery.d.ts +95 -0
  120. package/dist/tools/radio-discovery.d.ts.map +1 -0
  121. package/dist/tools/radio-discovery.js +352 -0
  122. package/dist/tools/radio-discovery.js.map +1 -0
  123. package/dist/tools/radio-validation.d.ts +49 -0
  124. package/dist/tools/radio-validation.d.ts.map +1 -0
  125. package/dist/tools/radio-validation.js +463 -0
  126. package/dist/tools/radio-validation.js.map +1 -0
  127. package/dist/tools/radio.d.ts +38 -0
  128. package/dist/tools/radio.d.ts.map +1 -0
  129. package/dist/tools/radio.js +315 -0
  130. package/dist/tools/radio.js.map +1 -0
  131. package/dist/tools/search.d.ts +54 -0
  132. package/dist/tools/search.d.ts.map +1 -0
  133. package/dist/tools/search.js +165 -0
  134. package/dist/tools/search.js.map +1 -0
  135. package/dist/tools/tags.d.ts +63 -0
  136. package/dist/tools/tags.d.ts.map +1 -0
  137. package/dist/tools/tags.js +260 -0
  138. package/dist/tools/tags.js.map +1 -0
  139. package/dist/tools/test.d.ts +50 -0
  140. package/dist/tools/test.d.ts.map +1 -0
  141. package/dist/tools/test.js +121 -0
  142. package/dist/tools/test.js.map +1 -0
  143. package/dist/tools/user-preferences.d.ts +73 -0
  144. package/dist/tools/user-preferences.d.ts.map +1 -0
  145. package/dist/tools/user-preferences.js +231 -0
  146. package/dist/tools/user-preferences.js.map +1 -0
  147. package/dist/transformers/song-transformer.d.ts +122 -0
  148. package/dist/transformers/song-transformer.d.ts.map +1 -0
  149. package/dist/transformers/song-transformer.js +232 -0
  150. package/dist/transformers/song-transformer.js.map +1 -0
  151. package/dist/types/core.d.ts +147 -0
  152. package/dist/types/core.d.ts.map +1 -0
  153. package/dist/types/core.js +19 -0
  154. package/dist/types/core.js.map +1 -0
  155. package/dist/types/index.d.ts +23 -0
  156. package/dist/types/index.d.ts.map +1 -0
  157. package/dist/types/index.js +19 -0
  158. package/dist/types/index.js.map +1 -0
  159. package/dist/types/lyrics.d.ts +58 -0
  160. package/dist/types/lyrics.d.ts.map +1 -0
  161. package/dist/types/lyrics.js +19 -0
  162. package/dist/types/lyrics.js.map +1 -0
  163. package/dist/types/playlists.d.ts +150 -0
  164. package/dist/types/playlists.d.ts.map +1 -0
  165. package/dist/types/playlists.js +19 -0
  166. package/dist/types/playlists.js.map +1 -0
  167. package/dist/types/radio.d.ts +192 -0
  168. package/dist/types/radio.d.ts.map +1 -0
  169. package/dist/types/radio.js +19 -0
  170. package/dist/types/radio.js.map +1 -0
  171. package/dist/types/tags.d.ts +72 -0
  172. package/dist/types/tags.d.ts.map +1 -0
  173. package/dist/types/tags.js +19 -0
  174. package/dist/types/tags.js.map +1 -0
  175. package/dist/utils/cache.d.ts +32 -0
  176. package/dist/utils/cache.d.ts.map +1 -0
  177. package/dist/utils/cache.js +84 -0
  178. package/dist/utils/cache.js.map +1 -0
  179. package/dist/utils/error-formatter.d.ts +108 -0
  180. package/dist/utils/error-formatter.d.ts.map +1 -0
  181. package/dist/utils/error-formatter.js +161 -0
  182. package/dist/utils/error-formatter.js.map +1 -0
  183. package/dist/utils/logger.d.ts +33 -0
  184. package/dist/utils/logger.d.ts.map +1 -0
  185. package/dist/utils/logger.js +52 -0
  186. package/dist/utils/logger.js.map +1 -0
  187. package/dist/utils/message-manager.d.ts +74 -0
  188. package/dist/utils/message-manager.d.ts.map +1 -0
  189. package/dist/utils/message-manager.js +134 -0
  190. package/dist/utils/message-manager.js.map +1 -0
  191. package/dist/utils/version.d.ts +5 -0
  192. package/dist/utils/version.d.ts.map +1 -0
  193. package/dist/utils/version.js +19 -0
  194. package/dist/utils/version.js.map +1 -0
  195. package/package.json +78 -0
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Navidrome MCP Server - Core Library Data Transfer Objects
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ /**
19
+ * Clean DTO for songs, optimized for LLM consumption
20
+ */
21
+ export interface SongDTO {
22
+ /** Unique song ID */
23
+ id: string;
24
+ /** Song title */
25
+ title: string;
26
+ /** Artist name */
27
+ artist: string;
28
+ /** Artist ID for lookups */
29
+ artistId: string;
30
+ /** Album name */
31
+ album: string;
32
+ /** Album ID for lookups */
33
+ albumId: string;
34
+ /** Primary genre */
35
+ genre?: string;
36
+ /** All genres associated with the song */
37
+ genres?: string[];
38
+ /** Release year */
39
+ year?: number;
40
+ /** Duration in human-readable format (MM:SS) */
41
+ durationFormatted: string;
42
+ /** ISO 8601 timestamp when added to library */
43
+ addedDate: string;
44
+ /** Full file path relative to library root */
45
+ path?: string;
46
+ /** Track number on album */
47
+ trackNumber?: number;
48
+ /** Number of times played */
49
+ playCount?: number;
50
+ /** User rating (1-5) */
51
+ rating?: number;
52
+ /** Whether the song is starred/favorited */
53
+ starred?: boolean;
54
+ }
55
+ /**
56
+ * Clean DTO for albums, optimized for LLM consumption
57
+ */
58
+ export interface AlbumDTO {
59
+ /** Unique album ID */
60
+ id: string;
61
+ /** Album name */
62
+ name: string;
63
+ /** Artist name */
64
+ artist: string;
65
+ /** Artist ID for lookups */
66
+ artistId: string;
67
+ /** Album artist (may differ from track artists) */
68
+ albumArtist?: string;
69
+ /** Album artist ID */
70
+ albumArtistId?: string;
71
+ /** Release year */
72
+ releaseYear?: number;
73
+ /** Primary genre */
74
+ genre?: string;
75
+ /** All genres */
76
+ genres?: string[];
77
+ /** Number of songs in album */
78
+ songCount: number;
79
+ /** Total duration in human-readable format */
80
+ durationFormatted: string;
81
+ /** Whether this is a compilation */
82
+ compilation?: boolean;
83
+ /** Number of times played */
84
+ playCount?: number;
85
+ /** User rating (1-5) */
86
+ rating?: number;
87
+ /** Whether starred */
88
+ starred?: boolean;
89
+ }
90
+ /**
91
+ * Clean DTO for artists, optimized for LLM consumption
92
+ */
93
+ export interface ArtistDTO {
94
+ /** Unique artist ID */
95
+ id: string;
96
+ /** Artist name */
97
+ name: string;
98
+ /** Number of albums */
99
+ albumCount: number;
100
+ /** Number of songs */
101
+ songCount: number;
102
+ /** All genres associated with artist */
103
+ genres?: string[];
104
+ /** Artist biography */
105
+ biography?: string;
106
+ /** Number of times played */
107
+ playCount?: number;
108
+ /** User rating (1-5) */
109
+ rating?: number;
110
+ /** Whether starred */
111
+ starred?: boolean;
112
+ }
113
+ /**
114
+ * Clean DTO for genres
115
+ */
116
+ export interface GenreDTO {
117
+ /** Unique genre ID */
118
+ id: string;
119
+ /** Genre name */
120
+ name: string;
121
+ /** Number of songs in this genre */
122
+ songCount: number;
123
+ /** Number of albums in this genre */
124
+ albumCount: number;
125
+ }
126
+ /**
127
+ * Response format for recently added songs resource
128
+ */
129
+ export interface RecentlyAddedSongsResponse {
130
+ /** Resource identifier */
131
+ resource: string;
132
+ /** Human-readable description */
133
+ description: string;
134
+ /** ISO 8601 timestamp of response */
135
+ timestamp: string;
136
+ /** Count of songs returned */
137
+ count: number;
138
+ /** Total songs available */
139
+ total?: number;
140
+ /** Offset for pagination */
141
+ offset?: number;
142
+ /** Limit used for this response */
143
+ limit?: number;
144
+ /** Array of recently added songs */
145
+ songs: SongDTO[];
146
+ }
147
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Navidrome MCP Server - Core Library Data Transfer Objects
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Navidrome MCP Server - Data Transfer Objects
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ export type { SongDTO, AlbumDTO, ArtistDTO, GenreDTO, RecentlyAddedSongsResponse } from './core.js';
19
+ export type { PlaylistDTO, PlaylistTrackDTO, CreatePlaylistRequest, UpdatePlaylistRequest, AddTracksToPlaylistRequest, AddTracksToPlaylistResponse, RemoveTracksFromPlaylistResponse, ReorderPlaylistTrackRequest, ReorderPlaylistTrackResponse } from './playlists.js';
20
+ export type { RadioStationDTO, CreateRadioStationRequest, CreateRadioStationResponse, DeleteRadioStationResponse, ListRadioStationsResponse, RadioPlaybackInfo, ExternalRadioStationDTO, DiscoverRadioStationsResponse, RadioFiltersResponse, ClickRadioStationResponse, VoteRadioStationResponse } from './radio.js';
21
+ export type { TagDTO, ListTagsResponse, TagDistribution, TagDistributionResponse } from './tags.js';
22
+ export type { LyricsLine, LyricsDTO } from './lyrics.js';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,YAAY,EACV,OAAO,EACP,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,0BAA0B,EAC3B,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,gCAAgC,EAChC,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,eAAe,EACf,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACxB,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,UAAU,EACV,SAAS,EACV,MAAM,aAAa,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Navidrome MCP Server - Data Transfer Objects
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Navidrome MCP Server - Lyrics Data Transfer Objects
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ /**
19
+ * Synced lyrics line with timestamp
20
+ */
21
+ export interface LyricsLine {
22
+ /** Time in milliseconds */
23
+ timeMs: number;
24
+ /** Lyrics text for this line */
25
+ text: string;
26
+ }
27
+ /**
28
+ * Lyrics response DTO
29
+ */
30
+ export interface LyricsDTO {
31
+ /** Track information */
32
+ track: {
33
+ /** Track title */
34
+ title: string;
35
+ /** Artist name */
36
+ artist: string;
37
+ /** Album name */
38
+ album?: string;
39
+ /** Duration in milliseconds */
40
+ durationMs?: number;
41
+ };
42
+ /** Synced lyrics (LRC format) */
43
+ synced?: LyricsLine[];
44
+ /** Plain unsynced lyrics */
45
+ unsynced?: string;
46
+ /** Whether track is instrumental */
47
+ isInstrumental: boolean;
48
+ /** Lyrics provider */
49
+ provider: 'lrclib';
50
+ /** Attribution information */
51
+ attribution: {
52
+ /** Provider URL */
53
+ url: string;
54
+ /** License information */
55
+ license?: string;
56
+ };
57
+ }
58
+ //# sourceMappingURL=lyrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lyrics.d.ts","sourceRoot":"","sources":["../../src/types/lyrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,wBAAwB;IACxB,KAAK,EAAE;QACL,kBAAkB;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,iBAAiB;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,+BAA+B;QAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,iCAAiC;IACjC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,8BAA8B;IAC9B,WAAW,EAAE;QACX,mBAAmB;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,0BAA0B;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Navidrome MCP Server - Lyrics Data Transfer Objects
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=lyrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lyrics.js","sourceRoot":"","sources":["../../src/types/lyrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Navidrome MCP Server - Playlist Data Transfer Objects
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ /**
19
+ * Clean DTO for playlists
20
+ */
21
+ export interface PlaylistDTO {
22
+ /** Unique playlist ID */
23
+ id: string;
24
+ /** Playlist name */
25
+ name: string;
26
+ /** Playlist description */
27
+ comment?: string;
28
+ /** Whether playlist is public */
29
+ public: boolean;
30
+ /** Number of songs */
31
+ songCount: number;
32
+ /** Total duration in human-readable format */
33
+ durationFormatted: string;
34
+ /** Owner username */
35
+ owner: string;
36
+ /** Owner user ID */
37
+ ownerId?: string;
38
+ /** ISO 8601 timestamp when created */
39
+ createdAt?: string;
40
+ /** ISO 8601 timestamp when last updated */
41
+ updatedAt?: string;
42
+ }
43
+ /**
44
+ * DTO for individual tracks within a playlist
45
+ */
46
+ export interface PlaylistTrackDTO {
47
+ /** Track position ID in playlist */
48
+ id: number;
49
+ /** Song ID */
50
+ mediaFileId: string;
51
+ /** Playlist ID */
52
+ playlistId: string;
53
+ /** Song title */
54
+ title: string;
55
+ /** Album name */
56
+ album: string;
57
+ /** Artist name */
58
+ artist: string;
59
+ /** Album artist */
60
+ albumArtist?: string;
61
+ /** Duration in seconds */
62
+ duration: number;
63
+ /** Duration in human-readable format */
64
+ durationFormatted: string;
65
+ /** Bit rate */
66
+ bitRate?: number;
67
+ /** File path */
68
+ path?: string;
69
+ /** Track number on original album */
70
+ trackNumber?: number;
71
+ /** Release year */
72
+ year?: number;
73
+ /** Primary genre */
74
+ genre?: string;
75
+ }
76
+ /**
77
+ * Request DTO for creating a new playlist
78
+ */
79
+ export interface CreatePlaylistRequest {
80
+ /** Playlist name (required) */
81
+ name: string;
82
+ /** Playlist description */
83
+ comment?: string;
84
+ /** Whether playlist should be public */
85
+ public?: boolean;
86
+ }
87
+ /**
88
+ * Request DTO for updating a playlist
89
+ */
90
+ export interface UpdatePlaylistRequest {
91
+ /** New playlist name */
92
+ name?: string;
93
+ /** New playlist description */
94
+ comment?: string;
95
+ /** New public visibility setting */
96
+ public?: boolean;
97
+ }
98
+ /**
99
+ * Request DTO for adding tracks to a playlist
100
+ */
101
+ export interface AddTracksToPlaylistRequest {
102
+ /** Song IDs to add */
103
+ ids?: string[];
104
+ /** Album IDs to add (all tracks) */
105
+ albumIds?: string[];
106
+ /** Artist IDs to add (all tracks) */
107
+ artistIds?: string[];
108
+ /** Specific discs to add */
109
+ discs?: Array<{
110
+ albumId: string;
111
+ discNumber: number;
112
+ }>;
113
+ }
114
+ /**
115
+ * Response DTO for adding tracks to a playlist
116
+ */
117
+ export interface AddTracksToPlaylistResponse {
118
+ /** Number of tracks added */
119
+ added: number;
120
+ /** Human-readable message */
121
+ message: string;
122
+ /** Whether the operation was successful */
123
+ success: boolean;
124
+ }
125
+ /**
126
+ * Response DTO for removing tracks from a playlist
127
+ */
128
+ export interface RemoveTracksFromPlaylistResponse {
129
+ /** IDs of removed tracks */
130
+ ids: string[];
131
+ /** Human-readable message */
132
+ message: string;
133
+ /** Whether the operation was successful */
134
+ success: boolean;
135
+ }
136
+ /**
137
+ * Request DTO for reordering a track in a playlist
138
+ */
139
+ export interface ReorderPlaylistTrackRequest {
140
+ /** New position (0-based index) as string */
141
+ insert_before: string;
142
+ }
143
+ /**
144
+ * Response DTO for reordering a track
145
+ */
146
+ export interface ReorderPlaylistTrackResponse {
147
+ /** Track position ID */
148
+ id: number;
149
+ }
150
+ //# sourceMappingURL=playlists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playlists.d.ts","sourceRoot":"","sources":["../../src/types/playlists.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,sBAAsB;IACtB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,4BAA4B;IAC5B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,6CAA6C;IAC7C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;CACZ"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Navidrome MCP Server - Playlist Data Transfer Objects
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=playlists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playlists.js","sourceRoot":"","sources":["../../src/types/playlists.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}