mcp-arr-suite 1.0.0

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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +198 -0
  3. package/dist/clients/arr-client.d.ts +681 -0
  4. package/dist/clients/arr-client.d.ts.map +1 -0
  5. package/dist/clients/arr-client.js +367 -0
  6. package/dist/clients/arr-client.js.map +1 -0
  7. package/dist/index.d.ts +14 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +93 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/registry.d.ts +16 -0
  12. package/dist/registry.d.ts.map +1 -0
  13. package/dist/registry.js +32 -0
  14. package/dist/registry.js.map +1 -0
  15. package/dist/services/cross-service.d.ts +8 -0
  16. package/dist/services/cross-service.d.ts.map +1 -0
  17. package/dist/services/cross-service.js +113 -0
  18. package/dist/services/cross-service.js.map +1 -0
  19. package/dist/services/lidarr.d.ts +6 -0
  20. package/dist/services/lidarr.d.ts.map +1 -0
  21. package/dist/services/lidarr.js +263 -0
  22. package/dist/services/lidarr.js.map +1 -0
  23. package/dist/services/prowlarr.d.ts +10 -0
  24. package/dist/services/prowlarr.d.ts.map +1 -0
  25. package/dist/services/prowlarr.js +140 -0
  26. package/dist/services/prowlarr.js.map +1 -0
  27. package/dist/services/radarr.d.ts +9 -0
  28. package/dist/services/radarr.d.ts.map +1 -0
  29. package/dist/services/radarr.js +574 -0
  30. package/dist/services/radarr.js.map +1 -0
  31. package/dist/services/sonarr.d.ts +9 -0
  32. package/dist/services/sonarr.d.ts.map +1 -0
  33. package/dist/services/sonarr.js +696 -0
  34. package/dist/services/sonarr.js.map +1 -0
  35. package/dist/shared/config-tools.d.ts +15 -0
  36. package/dist/shared/config-tools.d.ts.map +1 -0
  37. package/dist/shared/config-tools.js +225 -0
  38. package/dist/shared/config-tools.js.map +1 -0
  39. package/dist/shared/formatting.d.ts +37 -0
  40. package/dist/shared/formatting.d.ts.map +1 -0
  41. package/dist/shared/formatting.js +57 -0
  42. package/dist/shared/formatting.js.map +1 -0
  43. package/dist/trash/client.d.ts +127 -0
  44. package/dist/trash/client.d.ts.map +1 -0
  45. package/dist/trash/client.js +289 -0
  46. package/dist/trash/client.js.map +1 -0
  47. package/dist/trash/tools.d.ts +13 -0
  48. package/dist/trash/tools.d.ts.map +1 -0
  49. package/dist/trash/tools.js +377 -0
  50. package/dist/trash/tools.js.map +1 -0
  51. package/dist/types.d.ts +33 -0
  52. package/dist/types.d.ts.map +1 -0
  53. package/dist/types.js +15 -0
  54. package/dist/types.js.map +1 -0
  55. package/package.json +53 -0
@@ -0,0 +1,289 @@
1
+ /**
2
+ * TRaSH Guides Client
3
+ *
4
+ * Fetches and caches quality profiles, custom formats, and naming conventions
5
+ * from the TRaSH Guides GitHub repository.
6
+ *
7
+ * Data source: https://github.com/TRaSH-Guides/Guides
8
+ */
9
+ const TRASH_BASE_URL = 'https://raw.githubusercontent.com/TRaSH-Guides/Guides/master/docs/json';
10
+ const GITHUB_API_URL = 'https://api.github.com/repos/TRaSH-Guides/Guides/contents/docs/json';
11
+ const CACHE_TTL = 60 * 60 * 1000; // 1 hour
12
+ class TrashCache {
13
+ profiles = new Map();
14
+ profileLists = new Map();
15
+ customFormats = new Map();
16
+ cfLists = new Map();
17
+ cfGroups = new Map();
18
+ qualitySizes = new Map();
19
+ naming = new Map();
20
+ isValid(entry) {
21
+ return entry !== undefined && (Date.now() - entry.timestamp) < CACHE_TTL;
22
+ }
23
+ setProfile(key, data) {
24
+ this.profiles.set(key, { data, timestamp: Date.now() });
25
+ }
26
+ getProfile(key) {
27
+ const entry = this.profiles.get(key);
28
+ return this.isValid(entry) ? entry.data : null;
29
+ }
30
+ setProfileList(service, data) {
31
+ this.profileLists.set(service, { data, timestamp: Date.now() });
32
+ }
33
+ getProfileList(service) {
34
+ const entry = this.profileLists.get(service);
35
+ return this.isValid(entry) ? entry.data : null;
36
+ }
37
+ setCustomFormat(key, data) {
38
+ this.customFormats.set(key, { data, timestamp: Date.now() });
39
+ }
40
+ getCustomFormat(key) {
41
+ const entry = this.customFormats.get(key);
42
+ return this.isValid(entry) ? entry.data : null;
43
+ }
44
+ setCFList(service, data) {
45
+ this.cfLists.set(service, { data, timestamp: Date.now() });
46
+ }
47
+ getCFList(service) {
48
+ const entry = this.cfLists.get(service);
49
+ return this.isValid(entry) ? entry.data : null;
50
+ }
51
+ setCFGroup(key, data) {
52
+ this.cfGroups.set(key, { data, timestamp: Date.now() });
53
+ }
54
+ getCFGroup(key) {
55
+ const entry = this.cfGroups.get(key);
56
+ return this.isValid(entry) ? entry.data : null;
57
+ }
58
+ setQualitySize(key, data) {
59
+ this.qualitySizes.set(key, { data, timestamp: Date.now() });
60
+ }
61
+ getQualitySize(key) {
62
+ const entry = this.qualitySizes.get(key);
63
+ return this.isValid(entry) ? entry.data : null;
64
+ }
65
+ setNaming(key, data) {
66
+ this.naming.set(key, { data, timestamp: Date.now() });
67
+ }
68
+ getNaming(key) {
69
+ const entry = this.naming.get(key);
70
+ return this.isValid(entry) ? entry.data : null;
71
+ }
72
+ clear() {
73
+ this.profiles.clear();
74
+ this.profileLists.clear();
75
+ this.customFormats.clear();
76
+ this.cfLists.clear();
77
+ this.cfGroups.clear();
78
+ this.qualitySizes.clear();
79
+ this.naming.clear();
80
+ }
81
+ }
82
+ const cache = new TrashCache();
83
+ // Custom format categories
84
+ const CF_CATEGORIES = {
85
+ hdr: [/hdr/i, /dv/i, /dolby.*vision/i, /hdr10/i],
86
+ audio: [/atmos/i, /dts/i, /truehd/i, /audio/i, /surround/i, /sound/i, /stereo/i, /mono/i, /aac/i, /flac/i],
87
+ resolution: [/1080p/i, /2160p/i, /720p/i, /4k/i, /480p/i],
88
+ source: [/bluray/i, /web/i, /remux/i, /hdtv/i, /dvd/i, /cam/i, /telesync/i],
89
+ streaming: [/amzn/i, /nf\b/i, /netflix/i, /dsnp/i, /disney/i, /atvp/i, /apple/i, /hmax/i, /hbo/i, /hulu/i, /pcok/i, /peacock/i],
90
+ anime: [/anime/i],
91
+ unwanted: [/lq/i, /x265.*hdtv/i, /extras/i, /3d/i, /upscale/i, /bad.*dual/i],
92
+ release: [/repack/i, /proper/i, /scene/i, /p2p/i],
93
+ language: [/french/i, /german/i, /dutch/i, /multi/i, /language/i],
94
+ };
95
+ function categorizeCustomFormat(name) {
96
+ const categories = [];
97
+ for (const [category, patterns] of Object.entries(CF_CATEGORIES)) {
98
+ if (patterns.some(p => p.test(name))) {
99
+ categories.push(category);
100
+ }
101
+ }
102
+ return categories.length > 0 ? categories : ['other'];
103
+ }
104
+ // API functions
105
+ async function fetchJSON(url) {
106
+ const response = await fetch(url);
107
+ if (!response.ok) {
108
+ throw new Error(`Failed to fetch ${url}: ${response.status} ${response.statusText}`);
109
+ }
110
+ return response.json();
111
+ }
112
+ async function listGitHubDir(path) {
113
+ const files = await fetchJSON(`${GITHUB_API_URL}/${path}`);
114
+ return files
115
+ .filter(f => f.type === 'file' && f.name.endsWith('.json'))
116
+ .map(f => f.name.replace('.json', ''));
117
+ }
118
+ // Public API
119
+ export class TrashClient {
120
+ /**
121
+ * List available quality profiles
122
+ */
123
+ async listProfiles(service) {
124
+ // Check cache
125
+ const cached = cache.getProfileList(service);
126
+ if (cached) {
127
+ // Fetch details for each
128
+ const profiles = await Promise.all(cached.map(slug => this.getProfile(service, slug).then(p => p ? { slug, profile: p } : null)));
129
+ return profiles.filter((p) => p !== null).map(({ slug, profile }) => ({
130
+ slug,
131
+ name: profile.name,
132
+ description: profile.trash_description,
133
+ }));
134
+ }
135
+ // Fetch list from GitHub
136
+ const profileNames = await listGitHubDir(`${service}/quality-profiles`);
137
+ cache.setProfileList(service, profileNames);
138
+ // Fetch details
139
+ const profiles = await Promise.all(profileNames.map(slug => this.getProfile(service, slug).then(p => p ? { slug, profile: p } : null)));
140
+ return profiles.filter((p) => p !== null).map(({ slug, profile }) => ({
141
+ slug,
142
+ name: profile.name,
143
+ description: profile.trash_description,
144
+ }));
145
+ }
146
+ /**
147
+ * Get a specific quality profile
148
+ */
149
+ async getProfile(service, profileName) {
150
+ const key = `${service}/${profileName}`;
151
+ const cached = cache.getProfile(key);
152
+ if (cached)
153
+ return cached;
154
+ try {
155
+ const profile = await fetchJSON(`${TRASH_BASE_URL}/${service}/quality-profiles/${profileName}.json`);
156
+ cache.setProfile(key, profile);
157
+ return profile;
158
+ }
159
+ catch {
160
+ return null;
161
+ }
162
+ }
163
+ /**
164
+ * List available custom formats
165
+ */
166
+ async listCustomFormats(service, category) {
167
+ // Check cache
168
+ let cfNames = cache.getCFList(service);
169
+ if (!cfNames) {
170
+ cfNames = await listGitHubDir(`${service}/cf`);
171
+ cache.setCFList(service, cfNames);
172
+ }
173
+ // Fetch details for categorization
174
+ const formats = [];
175
+ // Batch fetch - limit to prevent rate limiting
176
+ const batchSize = 20;
177
+ for (let i = 0; i < cfNames.length; i += batchSize) {
178
+ const batch = cfNames.slice(i, i + batchSize);
179
+ const results = await Promise.all(batch.map(async (name) => {
180
+ const cf = await this.getCustomFormat(service, name);
181
+ if (!cf)
182
+ return null;
183
+ const cats = categorizeCustomFormat(cf.name);
184
+ return {
185
+ name: cf.name,
186
+ categories: cats,
187
+ defaultScore: cf.trash_scores?.default,
188
+ };
189
+ }));
190
+ formats.push(...results.filter((f) => f !== null));
191
+ }
192
+ // Filter by category if specified
193
+ if (category) {
194
+ return formats.filter(f => f.categories.includes(category.toLowerCase()));
195
+ }
196
+ return formats;
197
+ }
198
+ /**
199
+ * Get a specific custom format
200
+ */
201
+ async getCustomFormat(service, cfName) {
202
+ const key = `${service}/${cfName}`;
203
+ const cached = cache.getCustomFormat(key);
204
+ if (cached)
205
+ return cached;
206
+ try {
207
+ const cf = await fetchJSON(`${TRASH_BASE_URL}/${service}/cf/${cfName}.json`);
208
+ cache.setCustomFormat(key, cf);
209
+ return cf;
210
+ }
211
+ catch {
212
+ return null;
213
+ }
214
+ }
215
+ /**
216
+ * Get naming conventions
217
+ */
218
+ async getNaming(service) {
219
+ const cached = cache.getNaming(service);
220
+ if (cached)
221
+ return cached;
222
+ try {
223
+ const naming = await fetchJSON(`${TRASH_BASE_URL}/${service}/naming/${service}-naming.json`);
224
+ cache.setNaming(service, naming);
225
+ return naming;
226
+ }
227
+ catch {
228
+ return null;
229
+ }
230
+ }
231
+ /**
232
+ * Get quality size recommendations
233
+ */
234
+ async getQualitySizes(service, type) {
235
+ const sizeTypes = service === 'radarr'
236
+ ? ['movie', 'anime']
237
+ : ['series', 'anime'];
238
+ const sizes = [];
239
+ for (const sizeType of sizeTypes) {
240
+ const key = `${service}/${sizeType}`;
241
+ let size = cache.getQualitySize(key);
242
+ if (!size) {
243
+ try {
244
+ size = await fetchJSON(`${TRASH_BASE_URL}/${service}/quality-size/${sizeType}.json`);
245
+ cache.setQualitySize(key, size);
246
+ }
247
+ catch {
248
+ continue;
249
+ }
250
+ }
251
+ if (!type || size.type === type) {
252
+ sizes.push(size);
253
+ }
254
+ }
255
+ return sizes;
256
+ }
257
+ /**
258
+ * Get custom format groups
259
+ */
260
+ async listCFGroups(service) {
261
+ return listGitHubDir(`${service}/cf-groups`);
262
+ }
263
+ /**
264
+ * Get a specific CF group
265
+ */
266
+ async getCFGroup(service, groupName) {
267
+ const key = `${service}/${groupName}`;
268
+ const cached = cache.getCFGroup(key);
269
+ if (cached)
270
+ return cached;
271
+ try {
272
+ const group = await fetchJSON(`${TRASH_BASE_URL}/${service}/cf-groups/${groupName}.json`);
273
+ cache.setCFGroup(key, group);
274
+ return group;
275
+ }
276
+ catch {
277
+ return null;
278
+ }
279
+ }
280
+ /**
281
+ * Clear the cache (force refresh)
282
+ */
283
+ clearCache() {
284
+ cache.clear();
285
+ }
286
+ }
287
+ // Singleton instance
288
+ export const trashClient = new TrashClient();
289
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/trash/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * TRaSH Guides ToolModule
3
+ *
4
+ * Tools for fetching and comparing quality profiles, custom formats,
5
+ * and naming conventions from https://trash-guides.info
6
+ *
7
+ * These tools are always available — no *arr service configuration required,
8
+ * except for trash_compare_profile and trash_compare_naming which need the
9
+ * corresponding service to be configured.
10
+ */
11
+ import type { ToolModule } from '../types.js';
12
+ export declare const trashModule: ToolModule;
13
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/trash/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,eAAO,MAAM,WAAW,EAAE,UA+YzB,CAAC"}