@rocksky/cli 0.1.0 → 0.2.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.
package/README.md CHANGED
@@ -8,6 +8,37 @@
8
8
  - 📈 See your recent scrobbles
9
9
  - 📤 Manually scrobble tracks
10
10
  - 🛠️ Useful developer tools for integrating Rocksky into your workflows
11
+ - 🤖 MCP Server
12
+
13
+ ## Table of Contents
14
+ - [Installation](#installation)
15
+ - [Run in development](#run-in-development)
16
+ - [Usage](#usage)
17
+ - [Available Commands](#available-commands)
18
+ - [login](#login)
19
+ - [nowplaying](#nowplaying)
20
+ - [scrobbles](#scrobbles)
21
+ - [search](#search)
22
+ - [stats](#stats)
23
+ - [artists](#artists)
24
+ - [albums](#albums)
25
+ - [tracks](#tracks)
26
+ - [scrobble](#scrobble)
27
+ - [mcp](#mcp)
28
+ - [Rocksky MCP Server Tools](#rocksky-mcp-server-tools)
29
+
30
+
31
+ ## Installation
32
+
33
+ ```sh
34
+ npm install -g @rocksky/cli
35
+ ```
36
+
37
+ You can also use the CLI without installing it globally by running `npx`:
38
+
39
+ ```sh
40
+ npx @rocksky/cli --help
41
+ ```
11
42
 
12
43
  ## Run in development
13
44
  To run the CLI in development mode, install the dependencies:
@@ -84,3 +115,229 @@ rocksky tracks [did]
84
115
  ```bash
85
116
  rocksky scrobble "Karma Police" "Radiohead"
86
117
  ```
118
+
119
+ `whoami` - Displays the current user's information.
120
+
121
+ ```bash
122
+ rocksky whoami
123
+ ```
124
+
125
+ `mcp` - Starts the Rocksky MCP server.
126
+
127
+ ```bash
128
+ rocksky mcp
129
+ ```
130
+
131
+ ## Rocksky MCP Server Tools
132
+
133
+ Here is a list of tools provided by the Rocksky MCP server:
134
+
135
+ ### whoami
136
+
137
+ Get the current user's information.
138
+
139
+ **Example:**
140
+ ```json
141
+ {
142
+ "name": "whoami"
143
+ }
144
+ ```
145
+
146
+ **Returns:**
147
+
148
+ The current user's information, including their DID, handle, and other relevant details.
149
+
150
+ ### nowplaying
151
+
152
+ Get the currently playing track.
153
+
154
+ **Parameters:**
155
+
156
+ - `did` (optional): The DID or handle of the user to get the now playing track for. If not provided, it defaults to the current user.
157
+
158
+ **Example:**
159
+ ```json
160
+ {
161
+ "name": "nowplaying",
162
+ "args": {
163
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr"
164
+ }
165
+ }
166
+ ```
167
+
168
+ **Returns:**
169
+
170
+ The currently playing track for the specified user.
171
+
172
+ ### scrobbles
173
+
174
+ Display recently played tracks (recent scrobbles).
175
+
176
+ **Parameters:**
177
+ - `did` (optional): The DID or handle of the user to get scrobbles for. If not provided, it returns all recent scrobbles from Rocksky.
178
+
179
+ **Example:**
180
+ ```json
181
+ {
182
+ "name": "scrobbles",
183
+ "args": {
184
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr"
185
+ }
186
+ }
187
+ ```
188
+
189
+ **Returns:**
190
+
191
+ A list of recently played tracks for the specified user.
192
+
193
+ ### my-scrobbles
194
+
195
+ Display recently played tracks (recent scrobbles) for the current user.
196
+
197
+ **Example:**
198
+ ```json
199
+ {
200
+ "name": "my-scrobbles"
201
+ }
202
+ ```
203
+
204
+ **Returns:**
205
+
206
+ A list of recently played tracks for the current user.
207
+
208
+ ### search
209
+ Search for tracks, albums, artists, or Rocksky users.
210
+
211
+ **Parameters:**
212
+ - `query`: The search query string.
213
+ - `limit` (optional): The maximum number of results to return. Defaults to 10.
214
+ - `albums` (optional): If true, search for albums. Defaults to false.
215
+ - `artists` (optional): If true, search for artists. Defaults to false.
216
+ - `tracks` (optional): If true, search for tracks. Defaults to false.
217
+ - `users` (optional): If true, search for Rocksky users. Defaults to false.
218
+
219
+ **Example:**
220
+ ```json
221
+ {
222
+ "name": "search",
223
+ "args": {
224
+ "query": "Radiohead",
225
+ "limit": 5,
226
+ "albums": false,
227
+ "artists": false,
228
+ "tracks": false,
229
+ "users": false
230
+ }
231
+ }
232
+ ```
233
+
234
+ **Returns:**
235
+
236
+ A list of search results based on the specified query and filters.
237
+
238
+ ### artists
239
+ List the user's top artists or current user's top artists if no `did` is provided.
240
+
241
+ **Parameters:**
242
+ - `did` (optional): The DID or handle of the user to get top artists for. If not provided, it defaults to the current user.
243
+ - `limit` (optional): The maximum number of artists to return. Defaults to 20.
244
+
245
+ **Example:**
246
+ ```json
247
+ {
248
+ "name": "artists",
249
+ "args": {
250
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr",
251
+ "limit": 20
252
+ }
253
+ }
254
+ ```
255
+
256
+ **Returns:**
257
+
258
+ A list of the user's top artists, including their names and play counts.
259
+
260
+ ### albums
261
+ List the user's top albums or current user's top albums if no `did` is provided.
262
+
263
+ **Parameters:**
264
+ - `did` (optional): The DID or handle of the user to get top albums for. If not provided, it defaults to the current user.
265
+ - `limit` (optional): The maximum number of albums to return. Defaults to 20.
266
+
267
+ **Example:**
268
+ ```json
269
+ {
270
+ "name": "albums",
271
+ "args": {
272
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr",
273
+ "limit": 20
274
+ }
275
+ }
276
+ ```
277
+
278
+ **Returns:**
279
+
280
+ A list of the user's top albums, including their names and play counts.
281
+
282
+ ### tracks
283
+ List the user's top tracks or current user's top tracks if no `did` is provided.
284
+
285
+ **Parameters:**
286
+ - `did` (optional): The DID or handle of the user to get top tracks for. If not provided, it defaults to the current user.
287
+ - `limit` (optional): The maximum number of tracks to return. Defaults to 20.
288
+
289
+ **Example:**
290
+ ```json
291
+ {
292
+ "name": "tracks",
293
+ "args": {
294
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr",
295
+ "limit": 20
296
+ }
297
+ }
298
+ ```
299
+
300
+ **Returns:**
301
+
302
+ A list of the user's top tracks, including their names and play counts.
303
+
304
+ ### stats
305
+ Display the user's Rocksky account statistics or current user's statistics if no `did` is provided.
306
+
307
+ **Parameters:**
308
+ - `did` (optional): The DID or handle of the user to get statistics for. If not provided, it defaults to the current user.
309
+
310
+ **Example:**
311
+ ```json
312
+ {
313
+ "name": "stats",
314
+ "args": {
315
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr"
316
+ }
317
+ }
318
+ ```
319
+
320
+ ### create-apikey
321
+ Create a new API key for the current user.
322
+
323
+ **Parameters:**
324
+ - `name`: The name of the API key.
325
+ - `description` (optional): A description of the API key.
326
+
327
+ **Example:**
328
+ ```json
329
+ {
330
+ "name": "create-apikey",
331
+ "args": {
332
+ "name": "My API Key",
333
+ "description": "This is my API key."
334
+ }
335
+ }
336
+ ```
337
+
338
+ **Returns:**
339
+
340
+ A confirmation message indicating that the API key was created successfully.
341
+
342
+
343
+
package/TOOLS.md ADDED
@@ -0,0 +1,194 @@
1
+ # Rocksky MCP Tools
2
+
3
+ This document provides a comprehensive list of all tools available in the Rocksky MCP server.
4
+
5
+ ## whoami
6
+
7
+ Get the current user's information.
8
+
9
+ ## nowplaying
10
+
11
+ Get the currently playing track.
12
+
13
+ **Parameters:**
14
+
15
+ - `did` (optional): The DID or handle of the user to get the now playing track for. If not provided, it defaults to the current user.
16
+
17
+ **Example:**
18
+ ```json
19
+ {
20
+ "name": "nowplaying",
21
+ "args": {
22
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr"
23
+ }
24
+ }
25
+ ```
26
+
27
+ **Returns:**
28
+ The currently playing track for the specified user.
29
+
30
+ ## scrobbles
31
+
32
+ Display recently played tracks (recent scrobbles).
33
+
34
+ **Parameters:**
35
+ - `did` (optional): The DID or handle of the user to get scrobbles for. If not provided, it returns all recent scrobbles from Rocksky.
36
+
37
+ **Example:**
38
+ ```json
39
+ {
40
+ "name": "scrobbles",
41
+ "args": {
42
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr"
43
+ }
44
+ }
45
+ ```
46
+
47
+ **Returns:**
48
+ A list of recently played tracks for the specified user.
49
+
50
+ ## my-scrobbles
51
+
52
+ Display recently played tracks (recent scrobbles) for the current user.
53
+
54
+ **Example:**
55
+ ```json
56
+ {
57
+ "name": "my-scrobbles"
58
+ }
59
+ ```
60
+
61
+ **Returns:**
62
+ A list of recently played tracks for the current user.
63
+
64
+ ## search
65
+ Search for tracks, albums, artists, or Rocksky users.
66
+
67
+ **Parameters:**
68
+ - `query`: The search query string.
69
+ - `limit` (optional): The maximum number of results to return. Defaults to 10.
70
+ - `albums` (optional): If true, search for albums. Defaults to false.
71
+ - `artists` (optional): If true, search for artists. Defaults to false.
72
+ - `tracks` (optional): If true, search for tracks. Defaults to false.
73
+ - `users` (optional): If true, search for Rocksky users. Defaults to false.
74
+
75
+ **Example:**
76
+ ```json
77
+ {
78
+ "name": "search",
79
+ "args": {
80
+ "query": "Radiohead",
81
+ "limit": 5,
82
+ "albums": false,
83
+ "artists": false,
84
+ "tracks": false,
85
+ "users": false
86
+ }
87
+ }
88
+ ```
89
+
90
+ **Returns:**
91
+ A list of search results based on the specified query and filters.
92
+
93
+ ## artists
94
+ List the user's top artists or current user's top artists if no `did` is provided.
95
+
96
+ **Parameters:**
97
+ - `did` (optional): The DID or handle of the user to get top artists for. If not provided, it defaults to the current user.
98
+ - `limit` (optional): The maximum number of artists to return. Defaults to 20.
99
+
100
+ **Example:**
101
+ ```json
102
+ {
103
+ "name": "artists",
104
+ "args": {
105
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr",
106
+ "limit": 20
107
+ }
108
+ }
109
+ ```
110
+
111
+ **Returns:**
112
+ A list of the user's top artists, including their names and play counts.
113
+
114
+ ## albums
115
+ List the user's top albums or current user's top albums if no `did` is provided.
116
+
117
+ **Parameters:**
118
+ - `did` (optional): The DID or handle of the user to get top albums for. If not provided, it defaults to the current user.
119
+ - `limit` (optional): The maximum number of albums to return. Defaults to 20.
120
+
121
+ **Example:**
122
+ ```json
123
+ {
124
+ "name": "albums",
125
+ "args": {
126
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr",
127
+ "limit": 20
128
+ }
129
+ }
130
+ ```
131
+
132
+ **Returns:**
133
+ A list of the user's top albums, including their names and play counts.
134
+
135
+ ## tracks
136
+ List the user's top tracks or current user's top tracks if no `did` is provided.
137
+
138
+ **Parameters:**
139
+ - `did` (optional): The DID or handle of the user to get top tracks for. If not provided, it defaults to the current user.
140
+ - `limit` (optional): The maximum number of tracks to return. Defaults to 20.
141
+
142
+ **Example:**
143
+ ```json
144
+ {
145
+ "name": "tracks",
146
+ "args": {
147
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr",
148
+ "limit": 20
149
+ }
150
+ }
151
+ ```
152
+
153
+ **Returns:**
154
+ A list of the user's top tracks, including their names and play counts.
155
+
156
+ ## stats
157
+ Display the user's Rocksky account statistics or current user's statistics if no `did` is provided.
158
+
159
+ **Parameters:**
160
+ - `did` (optional): The DID or handle of the user to get statistics for. If not provided, it defaults to the current user.
161
+
162
+ **Example:**
163
+ ```json
164
+ {
165
+ "name": "stats",
166
+ "args": {
167
+ "did": "did:plc:7vdlgi2bflelz7mmuxoqjfcr"
168
+ }
169
+ }
170
+ ```
171
+
172
+ ## create-apikey
173
+ Create a new API key for the current user.
174
+
175
+ **Parameters:**
176
+ - `name`: The name of the API key.
177
+ - `description` (optional): A description of the API key.
178
+
179
+ **Example:**
180
+ ```json
181
+ {
182
+ "name": "create-apikey",
183
+ "args": {
184
+ "name": "My API Key",
185
+ "description": "This is my API key."
186
+ }
187
+ }
188
+ ```
189
+
190
+ **Returns:**
191
+ A confirmation message indicating that the API key was created successfully.
192
+
193
+
194
+
package/bun.lock CHANGED
@@ -4,6 +4,7 @@
4
4
  "": {
5
5
  "name": "rocksky",
6
6
  "dependencies": {
7
+ "@modelcontextprotocol/sdk": "^1.10.2",
7
8
  "axios": "^1.8.4",
8
9
  "chalk": "^5.4.1",
9
10
  "commander": "^13.1.0",
@@ -13,6 +14,7 @@
13
14
  "md5": "^2.3.0",
14
15
  "open": "^10.1.0",
15
16
  "table": "^6.9.0",
17
+ "zod": "^3.24.3",
16
18
  },
17
19
  "devDependencies": {
18
20
  "@types/express": "^5.0.1",
@@ -76,6 +78,8 @@
76
78
 
77
79
  "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="],
78
80
 
81
+ "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.10.2", "", { "dependencies": { "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.3", "eventsource": "^3.0.2", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.23.8", "zod-to-json-schema": "^3.24.1" } }, "sha512-rb6AMp2DR4SN+kc6L1ta2NCpApyA9WYNx3CrTSZvGxq9wH71bRur+zRqPfg0vQ9mjywR7qZdX2RGHOPq3ss+tA=="],
82
+
79
83
  "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
80
84
 
81
85
  "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
@@ -214,6 +218,8 @@
214
218
 
215
219
  "cors": ["cors@2.8.5", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="],
216
220
 
221
+ "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
222
+
217
223
  "crypt": ["crypt@0.0.2", "", {}, "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow=="],
218
224
 
219
225
  "dayjs": ["dayjs@1.11.13", "", {}, "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="],
@@ -256,8 +262,14 @@
256
262
 
257
263
  "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="],
258
264
 
265
+ "eventsource": ["eventsource@3.0.6", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA=="],
266
+
267
+ "eventsource-parser": ["eventsource-parser@3.0.1", "", {}, "sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA=="],
268
+
259
269
  "express": ["express@5.1.0", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA=="],
260
270
 
271
+ "express-rate-limit": ["express-rate-limit@7.5.0", "", { "peerDependencies": { "express": "^4.11 || 5 || ^5.0.0-beta.1" } }, "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg=="],
272
+
261
273
  "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
262
274
 
263
275
  "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
@@ -332,6 +344,8 @@
332
344
 
333
345
  "is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="],
334
346
 
347
+ "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
348
+
335
349
  "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="],
336
350
 
337
351
  "lodash.truncate": ["lodash.truncate@4.4.2", "", {}, "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw=="],
@@ -370,12 +384,16 @@
370
384
 
371
385
  "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="],
372
386
 
387
+ "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
388
+
373
389
  "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="],
374
390
 
375
391
  "path-to-regexp": ["path-to-regexp@8.2.0", "", {}, "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ=="],
376
392
 
377
393
  "picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="],
378
394
 
395
+ "pkce-challenge": ["pkce-challenge@5.0.0", "", {}, "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ=="],
396
+
379
397
  "pkgroll": ["pkgroll@2.12.1", "", { "dependencies": { "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^28.0.2", "@rollup/plugin-dynamic-import-vars": "^2.1.5", "@rollup/plugin-inject": "^5.0.5", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/pluginutils": "^5.1.4", "esbuild": "^0.25.1", "magic-string": "^0.30.17", "rollup": "^4.34.6", "rollup-pluginutils": "^2.8.2" }, "peerDependencies": { "typescript": "^4.1 || ^5.0" }, "optionalPeers": ["typescript"], "bin": { "pkgroll": "dist/cli.mjs" } }, "sha512-MpooedkVk28Sl1I5q8YO2QZmdlHdEtCzv1nReZdHNRhY0CzbZ14TewN47JopF+0rGCaQOERSPfcIOgPZDQXlZA=="],
380
398
 
381
399
  "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="],
@@ -418,6 +436,10 @@
418
436
 
419
437
  "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="],
420
438
 
439
+ "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
440
+
441
+ "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
442
+
421
443
  "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="],
422
444
 
423
445
  "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="],
@@ -454,8 +476,14 @@
454
476
 
455
477
  "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="],
456
478
 
479
+ "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
480
+
457
481
  "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
458
482
 
483
+ "zod": ["zod@3.24.3", "", {}, "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg=="],
484
+
485
+ "zod-to-json-schema": ["zod-to-json-schema@3.24.5", "", { "peerDependencies": { "zod": "^3.24.1" } }, "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g=="],
486
+
459
487
  "form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
460
488
 
461
489
  "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],