rewind-mcp-server 0.10.0 → 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 (89) hide show
  1. package/dist/__tests__/helpers/build-client.d.ts +2 -0
  2. package/dist/__tests__/helpers/build-client.js +24 -0
  3. package/dist/__tests__/helpers/build-client.js.map +1 -0
  4. package/dist/__tests__/helpers.test.js +11 -0
  5. package/dist/__tests__/helpers.test.js.map +1 -1
  6. package/dist/__tests__/image-block.live.js +1 -1
  7. package/dist/__tests__/image-block.live.js.map +1 -1
  8. package/dist/__tests__/manifest-snapshot.test.js +1 -0
  9. package/dist/__tests__/manifest-snapshot.test.js.map +1 -1
  10. package/dist/__tests__/output-schema-attending.test.d.ts +1 -0
  11. package/dist/__tests__/output-schema-attending.test.js +353 -0
  12. package/dist/__tests__/output-schema-attending.test.js.map +1 -0
  13. package/dist/__tests__/output-schema-collecting.test.d.ts +1 -0
  14. package/dist/__tests__/output-schema-collecting.test.js +155 -0
  15. package/dist/__tests__/output-schema-collecting.test.js.map +1 -0
  16. package/dist/__tests__/output-schema-cross-domain.test.d.ts +1 -0
  17. package/dist/__tests__/output-schema-cross-domain.test.js +142 -0
  18. package/dist/__tests__/output-schema-cross-domain.test.js.map +1 -0
  19. package/dist/__tests__/output-schema-listening.test.d.ts +1 -0
  20. package/dist/__tests__/output-schema-listening.test.js +235 -0
  21. package/dist/__tests__/output-schema-listening.test.js.map +1 -0
  22. package/dist/__tests__/output-schema-reading.test.d.ts +1 -0
  23. package/dist/__tests__/output-schema-reading.test.js +181 -0
  24. package/dist/__tests__/output-schema-reading.test.js.map +1 -0
  25. package/dist/__tests__/output-schema-running.test.d.ts +1 -0
  26. package/dist/__tests__/output-schema-running.test.js +185 -0
  27. package/dist/__tests__/output-schema-running.test.js.map +1 -0
  28. package/dist/__tests__/output-schema-watching.test.d.ts +1 -0
  29. package/dist/__tests__/output-schema-watching.test.js +190 -0
  30. package/dist/__tests__/output-schema-watching.test.js.map +1 -0
  31. package/dist/__tests__/output-schema.live.d.ts +1 -0
  32. package/dist/__tests__/output-schema.live.js +180 -0
  33. package/dist/__tests__/output-schema.live.js.map +1 -0
  34. package/dist/__tests__/output-schema.test.d.ts +1 -0
  35. package/dist/__tests__/output-schema.test.js +38 -0
  36. package/dist/__tests__/output-schema.test.js.map +1 -0
  37. package/dist/__tests__/server.test.js +1 -1
  38. package/dist/server.js +10 -12
  39. package/dist/server.js.map +1 -1
  40. package/dist/tools/attending.js +9 -0
  41. package/dist/tools/attending.js.map +1 -1
  42. package/dist/tools/collecting.js +5 -0
  43. package/dist/tools/collecting.js.map +1 -1
  44. package/dist/tools/cross-domain.js +12 -1
  45. package/dist/tools/cross-domain.js.map +1 -1
  46. package/dist/tools/helpers.js +14 -9
  47. package/dist/tools/helpers.js.map +1 -1
  48. package/dist/tools/listening.js +12 -1
  49. package/dist/tools/listening.js.map +1 -1
  50. package/dist/tools/reading.js +8 -1
  51. package/dist/tools/reading.js.map +1 -1
  52. package/dist/tools/running.js +8 -0
  53. package/dist/tools/running.js.map +1 -1
  54. package/dist/tools/schemas/attending.d.ts +8225 -0
  55. package/dist/tools/schemas/attending.js +404 -0
  56. package/dist/tools/schemas/attending.js.map +1 -0
  57. package/dist/tools/schemas/collecting.d.ts +1011 -0
  58. package/dist/tools/schemas/collecting.js +108 -0
  59. package/dist/tools/schemas/collecting.js.map +1 -0
  60. package/dist/tools/schemas/cross-domain.d.ts +1001 -0
  61. package/dist/tools/schemas/cross-domain.js +107 -0
  62. package/dist/tools/schemas/cross-domain.js.map +1 -0
  63. package/dist/tools/schemas/listening.d.ts +4298 -0
  64. package/dist/tools/schemas/listening.js +255 -0
  65. package/dist/tools/schemas/listening.js.map +1 -0
  66. package/dist/tools/schemas/reading.d.ts +1421 -0
  67. package/dist/tools/schemas/reading.js +151 -0
  68. package/dist/tools/schemas/reading.js.map +1 -0
  69. package/dist/tools/schemas/running.d.ts +680 -0
  70. package/dist/tools/schemas/running.js +154 -0
  71. package/dist/tools/schemas/running.js.map +1 -0
  72. package/dist/tools/schemas/shared.d.ts +98 -0
  73. package/dist/tools/schemas/shared.js +74 -0
  74. package/dist/tools/schemas/shared.js.map +1 -0
  75. package/dist/tools/schemas/system.d.ts +57 -0
  76. package/dist/tools/schemas/system.js +22 -0
  77. package/dist/tools/schemas/system.js.map +1 -0
  78. package/dist/tools/schemas/watching.d.ts +1821 -0
  79. package/dist/tools/schemas/watching.js +167 -0
  80. package/dist/tools/schemas/watching.js.map +1 -0
  81. package/dist/tools/watching.js +8 -0
  82. package/dist/tools/watching.js.map +1 -1
  83. package/dist/ui-bundles.d.ts +10 -11
  84. package/dist/ui-bundles.js +20 -22
  85. package/dist/ui-bundles.js.map +1 -1
  86. package/package.json +5 -4
  87. package/dist/tools/debug.d.ts +0 -6
  88. package/dist/tools/debug.js +0 -26
  89. package/dist/tools/debug.js.map +0 -1
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Output schemas for the collecting-domain tools (issue #105).
3
+ *
4
+ * These schemas are the source of truth for the collecting tools' return
5
+ * shapes: `collecting.ts` derives its `VinylItem` / `MediaItem` /
6
+ * `CollectingStats` types from them via `z.infer`, so the declared schema
7
+ * and the TypeScript type cannot drift.
8
+ *
9
+ * Every object schema uses `.passthrough()` so the JSON Schema advertised
10
+ * to clients stays `additionalProperties`-open -- a field the Rewind API
11
+ * adds later does not break client-side validation. See schemas/shared.ts.
12
+ */
13
+ import { z } from 'zod';
14
+ import { imageSchema, paginationSchema } from './shared.js';
15
+ // --- Element schemas ------------------------------------------------------
16
+ /** A single vinyl/CD/cassette record, as listed by get_vinyl_collection. */
17
+ export const vinylItemSchema = z
18
+ .object({
19
+ id: z.number(),
20
+ discogs_id: z.number(),
21
+ title: z.string(),
22
+ artists: z.array(z.string()),
23
+ year: z.number().nullable(),
24
+ format: z.string(),
25
+ format_detail: z.string(),
26
+ label: z.string(),
27
+ genres: z.array(z.string()),
28
+ styles: z.array(z.string()),
29
+ image: imageSchema(),
30
+ date_added: z.string().nullable(),
31
+ rating: z.number().nullable(),
32
+ discogs_url: z.string().nullable(),
33
+ })
34
+ .passthrough();
35
+ /** A single physical-media item, as listed by get_physical_media. */
36
+ export const mediaItemSchema = z
37
+ .object({
38
+ id: z.number(),
39
+ title: z.string(),
40
+ year: z.number().nullable(),
41
+ tmdb_id: z.number().nullable(),
42
+ imdb_id: z.string().nullable(),
43
+ image: imageSchema(),
44
+ runtime: z.number().nullable(),
45
+ tmdb_rating: z.number().nullable(),
46
+ media_type: z.string(),
47
+ resolution: z.string().nullable(),
48
+ hdr: z.string().nullable(),
49
+ audio: z.string().nullable(),
50
+ audio_channels: z.string().nullable(),
51
+ collected_at: z.string().nullable(),
52
+ })
53
+ .passthrough();
54
+ // --- Tool output schemas --------------------------------------------------
55
+ /**
56
+ * outputSchema for get_vinyl_collection. The empty-state branch returns
57
+ * `{ items: [], pagination }`, which satisfies the same schema -- no union
58
+ * needed.
59
+ */
60
+ export const vinylCollectionOutputSchema = z
61
+ .object({
62
+ items: z.array(vinylItemSchema),
63
+ pagination: paginationSchema(),
64
+ })
65
+ .passthrough();
66
+ /**
67
+ * outputSchema for get_collecting_stats (flat stats object passed through
68
+ * verbatim from the API). `most_collected_artist` is an open-shaped field
69
+ * the API may fill with an artist object or leave null -- typed as
70
+ * unknown/nullable so it never blocks validation.
71
+ */
72
+ export const collectingStatsOutputSchema = z
73
+ .object({
74
+ total_items: z.number(),
75
+ by_format: z.record(z.number()),
76
+ wantlist_count: z.number().nullable(),
77
+ unique_artists: z.number().nullable(),
78
+ estimated_value: z.number().nullable(),
79
+ top_genre: z.string().nullable(),
80
+ oldest_release_year: z.number().nullable(),
81
+ newest_release_year: z.number().nullable(),
82
+ most_collected_artist: z.unknown(),
83
+ added_this_year: z.number().nullable(),
84
+ })
85
+ .passthrough();
86
+ /**
87
+ * outputSchema for get_physical_media. The empty-state branch returns
88
+ * `{ items: [], pagination }`, which satisfies the same schema -- no union
89
+ * needed.
90
+ */
91
+ export const physicalMediaOutputSchema = z
92
+ .object({
93
+ items: z.array(mediaItemSchema),
94
+ pagination: paginationSchema(),
95
+ })
96
+ .passthrough();
97
+ /**
98
+ * outputSchema for get_physical_media_stats. The tool builds a transformed
99
+ * payload -- `total` is computed from the per-format counts, `formats` is
100
+ * the raw API list.
101
+ */
102
+ export const physicalMediaStatsOutputSchema = z
103
+ .object({
104
+ total: z.number(),
105
+ formats: z.array(z.object({ name: z.string(), count: z.number() }).passthrough()),
106
+ })
107
+ .passthrough();
108
+ //# sourceMappingURL=collecting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collecting.js","sourceRoot":"","sources":["../../../src/tools/schemas/collecting.ts"],"names":[],"mappings":"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"}