@bsb/registry 1.0.4 → 1.1.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 (38) hide show
  1. package/README.md +1 -1
  2. package/lib/.bsb/clients/service-bsb-registry.d.ts +348 -982
  3. package/lib/.bsb/clients/service-bsb-registry.d.ts.map +1 -1
  4. package/lib/.bsb/clients/service-bsb-registry.js +287 -291
  5. package/lib/.bsb/clients/service-bsb-registry.js.map +1 -1
  6. package/lib/plugins/service-bsb-registry/auth.d.ts +2 -2
  7. package/lib/plugins/service-bsb-registry/auth.d.ts.map +1 -1
  8. package/lib/plugins/service-bsb-registry/auth.js +5 -9
  9. package/lib/plugins/service-bsb-registry/auth.js.map +1 -1
  10. package/lib/plugins/service-bsb-registry/db/file.d.ts +2 -2
  11. package/lib/plugins/service-bsb-registry/db/file.d.ts.map +1 -1
  12. package/lib/plugins/service-bsb-registry/db/file.js +3 -40
  13. package/lib/plugins/service-bsb-registry/db/file.js.map +1 -1
  14. package/lib/plugins/service-bsb-registry/db/index.d.ts +1 -1
  15. package/lib/plugins/service-bsb-registry/db/index.d.ts.map +1 -1
  16. package/lib/plugins/service-bsb-registry/db/index.js +3 -6
  17. package/lib/plugins/service-bsb-registry/db/index.js.map +1 -1
  18. package/lib/plugins/service-bsb-registry/index.d.ts +377 -1020
  19. package/lib/plugins/service-bsb-registry/index.d.ts.map +1 -1
  20. package/lib/plugins/service-bsb-registry/index.js +58 -95
  21. package/lib/plugins/service-bsb-registry/index.js.map +1 -1
  22. package/lib/plugins/service-bsb-registry/types.d.ts +197 -517
  23. package/lib/plugins/service-bsb-registry/types.d.ts.map +1 -1
  24. package/lib/plugins/service-bsb-registry/types.js +164 -167
  25. package/lib/plugins/service-bsb-registry/types.js.map +1 -1
  26. package/lib/plugins/service-bsb-registry-ui/http-server.d.ts +2 -2
  27. package/lib/plugins/service-bsb-registry-ui/http-server.d.ts.map +1 -1
  28. package/lib/plugins/service-bsb-registry-ui/http-server.js +229 -181
  29. package/lib/plugins/service-bsb-registry-ui/http-server.js.map +1 -1
  30. package/lib/plugins/service-bsb-registry-ui/index.d.ts +27 -27
  31. package/lib/plugins/service-bsb-registry-ui/index.d.ts.map +1 -1
  32. package/lib/plugins/service-bsb-registry-ui/index.js +22 -26
  33. package/lib/plugins/service-bsb-registry-ui/index.js.map +1 -1
  34. package/lib/schemas/service-bsb-registry-ui.json +1 -46
  35. package/lib/schemas/service-bsb-registry-ui.plugin.json +2 -47
  36. package/lib/schemas/service-bsb-registry.json +1903 -1693
  37. package/lib/schemas/service-bsb-registry.plugin.json +1 -47
  38. package/package.json +5 -8
@@ -7,300 +7,367 @@
7
7
  "category": "onReturnableEvents",
8
8
  "description": "Publish a new plugin or version",
9
9
  "inputSchema": {
10
- "description": "Request body for publishing a plugin",
11
- "type": "object",
12
- "properties": {
13
- "org": {
14
- "description": "Organization name",
15
- "type": "string",
16
- "minLength": 1,
17
- "maxLength": 100
18
- },
19
- "name": {
20
- "description": "Plugin name",
21
- "type": "string",
22
- "minLength": 1,
23
- "maxLength": 100
24
- },
25
- "version": {
26
- "description": "Semantic version",
27
- "type": "string",
28
- "minLength": 1,
29
- "maxLength": 50
30
- },
31
- "language": {
32
- "description": "Programming language",
33
- "type": "string",
34
- "enum": [
35
- "nodejs",
36
- "csharp",
37
- "go",
38
- "java",
39
- "python"
40
- ]
41
- },
42
- "metadata": {
43
- "description": "Plugin metadata",
44
- "type": "object",
45
- "properties": {
46
- "displayName": {
47
- "description": "Human-readable name",
48
- "type": "string",
49
- "minLength": 1,
50
- "maxLength": 200
51
- },
52
- "description": {
53
- "description": "Short description",
54
- "type": "string",
55
- "minLength": 1,
56
- "maxLength": 1000
57
- },
58
- "category": {
59
- "description": "Plugin category",
60
- "type": "string",
61
- "enum": [
62
- "service",
63
- "observable",
64
- "events",
65
- "config"
66
- ]
67
- },
68
- "tags": {
69
- "description": "Searchable keywords",
70
- "type": "array",
71
- "items": {
72
- "type": "string",
73
- "maxLength": 50
74
- }
75
- },
76
- "author": {
77
- "description": "Author - either a string or { name, email?, url? }",
78
- "oneOf": [
79
- {
80
- "description": "Author name as a string",
81
- "type": "string",
82
- "maxLength": 200
83
- },
84
- {
85
- "description": "Author as an object (npm-style)",
86
- "type": "object",
87
- "properties": {
88
- "name": {
89
- "description": "Author name",
90
- "type": "string",
91
- "maxLength": 200
92
- },
93
- "email": {
94
- "description": "Author email",
95
- "type": "string",
10
+ "anyvaliVersion": "1.0",
11
+ "schemaVersion": "1",
12
+ "root": {
13
+ "kind": "object",
14
+ "properties": {
15
+ "org": {
16
+ "kind": "string",
17
+ "minLength": 1,
18
+ "maxLength": 100
19
+ },
20
+ "name": {
21
+ "kind": "string",
22
+ "minLength": 1,
23
+ "maxLength": 100
24
+ },
25
+ "version": {
26
+ "kind": "string",
27
+ "minLength": 1,
28
+ "maxLength": 50
29
+ },
30
+ "language": {
31
+ "kind": "enum",
32
+ "values": [
33
+ "nodejs",
34
+ "csharp",
35
+ "go",
36
+ "java",
37
+ "python"
38
+ ]
39
+ },
40
+ "metadata": {
41
+ "kind": "object",
42
+ "properties": {
43
+ "displayName": {
44
+ "kind": "string",
45
+ "minLength": 1,
46
+ "maxLength": 200
47
+ },
48
+ "description": {
49
+ "kind": "string",
50
+ "minLength": 1,
51
+ "maxLength": 1000
52
+ },
53
+ "category": {
54
+ "kind": "enum",
55
+ "values": [
56
+ "service",
57
+ "observable",
58
+ "events",
59
+ "config"
60
+ ]
61
+ },
62
+ "tags": {
63
+ "kind": "array",
64
+ "items": {
65
+ "kind": "string",
66
+ "maxLength": 50
67
+ }
68
+ },
69
+ "author": {
70
+ "kind": "optional",
71
+ "inner": {
72
+ "kind": "union",
73
+ "variants": [
74
+ {
75
+ "kind": "string",
96
76
  "maxLength": 200
97
77
  },
98
- "url": {
99
- "description": "Author homepage",
100
- "type": "string",
101
- "format": "uri"
78
+ {
79
+ "kind": "object",
80
+ "properties": {
81
+ "name": {
82
+ "kind": "string",
83
+ "maxLength": 200
84
+ },
85
+ "email": {
86
+ "kind": "optional",
87
+ "inner": {
88
+ "kind": "string",
89
+ "maxLength": 200
90
+ }
91
+ },
92
+ "url": {
93
+ "kind": "optional",
94
+ "inner": {
95
+ "kind": "string",
96
+ "format": "url"
97
+ }
98
+ }
99
+ },
100
+ "required": [
101
+ "name"
102
+ ],
103
+ "unknownKeys": "strip"
102
104
  }
103
- },
104
- "required": [
105
- "name"
106
105
  ]
107
106
  }
108
- ]
109
- },
110
- "license": {
111
- "type": "string",
112
- "maxLength": 50
113
- },
114
- "homepage": {
115
- "type": "string",
116
- "format": "uri"
107
+ },
108
+ "license": {
109
+ "kind": "optional",
110
+ "inner": {
111
+ "kind": "string",
112
+ "maxLength": 50
113
+ }
114
+ },
115
+ "homepage": {
116
+ "kind": "optional",
117
+ "inner": {
118
+ "kind": "string",
119
+ "format": "url"
120
+ }
121
+ },
122
+ "repository": {
123
+ "kind": "optional",
124
+ "inner": {
125
+ "kind": "string",
126
+ "format": "url"
127
+ }
128
+ }
117
129
  },
118
- "repository": {
119
- "type": "string",
120
- "format": "uri"
130
+ "required": [
131
+ "displayName",
132
+ "description",
133
+ "category",
134
+ "tags"
135
+ ],
136
+ "unknownKeys": "strip"
137
+ },
138
+ "eventSchema": {
139
+ "kind": "unknown"
140
+ },
141
+ "capabilities": {
142
+ "kind": "optional",
143
+ "inner": {
144
+ "kind": "unknown"
121
145
  }
122
146
  },
123
- "required": [
124
- "displayName",
125
- "description",
126
- "category",
127
- "tags"
128
- ]
129
- },
130
- "eventSchema": {
131
- "description": "EventSchemaExport object (parsed at HTTP boundary, transported as object)",
132
- "oneOf": []
133
- },
134
- "capabilities": {
135
- "description": "Plugin capabilities object (parsed at HTTP boundary, optional top-level override)",
136
- "oneOf": []
137
- },
138
- "configSchema": {
139
- "description": "Configuration JSON Schema object (parsed at HTTP boundary)",
140
- "oneOf": []
141
- },
142
- "typeDefinitions": {
143
- "description": "Language-specific type definitions",
144
- "type": "object",
145
- "properties": {
146
- "nodejs": {
147
- "description": "TypeScript .d.ts definitions",
148
- "type": "string"
149
- },
150
- "csharp": {
151
- "description": "C# interface definitions",
152
- "type": "string"
153
- },
154
- "go": {
155
- "description": "Go type definitions",
156
- "type": "string"
157
- },
158
- "java": {
159
- "description": "Java interface definitions",
160
- "type": "string"
147
+ "configSchema": {
148
+ "kind": "optional",
149
+ "inner": {
150
+ "kind": "unknown"
161
151
  }
162
152
  },
163
- "required": []
164
- },
165
- "documentation": {
166
- "description": "Array of markdown documentation files (at least 1 required)",
167
- "type": "array",
168
- "items": {
169
- "description": "Markdown file content (title extracted from first # heading)",
170
- "type": "string"
171
- },
172
- "minItems": 1
173
- },
174
- "dependencies": {
175
- "description": "Plugin dependencies",
176
- "type": "array",
177
- "items": {
178
- "description": "Plugin dependency declaration",
179
- "type": "object",
180
- "properties": {
181
- "id": {
182
- "description": "Plugin ID (org/name or just name for _ org)",
183
- "type": "string",
184
- "minLength": 1,
185
- "maxLength": 200
153
+ "typeDefinitions": {
154
+ "kind": "optional",
155
+ "inner": {
156
+ "kind": "object",
157
+ "properties": {
158
+ "nodejs": {
159
+ "kind": "optional",
160
+ "inner": {
161
+ "kind": "string"
162
+ }
163
+ },
164
+ "csharp": {
165
+ "kind": "optional",
166
+ "inner": {
167
+ "kind": "string"
168
+ }
169
+ },
170
+ "go": {
171
+ "kind": "optional",
172
+ "inner": {
173
+ "kind": "string"
174
+ }
175
+ },
176
+ "java": {
177
+ "kind": "optional",
178
+ "inner": {
179
+ "kind": "string"
180
+ }
181
+ }
186
182
  },
187
- "version": {
188
- "description": "Semver range constraint (e.g. ^1.0.0, ~2.1, >=3.0.0)",
189
- "type": "string",
190
- "minLength": 1,
191
- "maxLength": 50
192
- }
193
- },
194
- "required": [
195
- "id",
196
- "version"
197
- ]
198
- }
199
- },
200
- "package": {
201
- "description": "Language-specific package information",
202
- "type": "object",
203
- "properties": {
204
- "nodejs": {
205
- "description": "NPM package name",
206
- "type": "string"
207
- },
208
- "csharp": {
209
- "description": "NuGet package name",
210
- "type": "string"
211
- },
212
- "go": {
213
- "description": "Go module path",
214
- "type": "string"
215
- },
216
- "java": {
217
- "description": "Maven coordinates",
218
- "type": "string"
219
- },
220
- "python": {
221
- "description": "PyPI package name",
222
- "type": "string"
183
+ "required": [],
184
+ "unknownKeys": "strip"
223
185
  }
224
186
  },
225
- "required": []
226
- },
227
- "runtime": {
228
- "description": "Runtime version requirements",
229
- "type": "object",
230
- "properties": {
231
- "nodejs": {
232
- "description": "Node.js version requirement",
233
- "type": "string"
187
+ "documentation": {
188
+ "kind": "array",
189
+ "items": {
190
+ "kind": "string"
234
191
  },
235
- "dotnet": {
236
- "description": ".NET version requirement",
237
- "type": "string"
238
- },
239
- "go": {
240
- "description": "Go version requirement",
241
- "type": "string"
242
- },
243
- "java": {
244
- "description": "Java version requirement",
245
- "type": "string"
246
- },
247
- "python": {
248
- "description": "Python version requirement",
249
- "type": "string"
192
+ "minItems": 1
193
+ },
194
+ "dependencies": {
195
+ "kind": "optional",
196
+ "inner": {
197
+ "kind": "array",
198
+ "items": {
199
+ "kind": "object",
200
+ "properties": {
201
+ "id": {
202
+ "kind": "string",
203
+ "minLength": 1,
204
+ "maxLength": 200
205
+ },
206
+ "version": {
207
+ "kind": "string",
208
+ "minLength": 1,
209
+ "maxLength": 50
210
+ }
211
+ },
212
+ "required": [
213
+ "id",
214
+ "version"
215
+ ],
216
+ "unknownKeys": "strip"
217
+ }
250
218
  }
251
219
  },
252
- "required": []
253
- },
254
- "visibility": {
255
- "description": "Visibility level (default: public)",
256
- "type": "string",
257
- "enum": [
258
- "public",
259
- "private"
260
- ]
220
+ "package": {
221
+ "kind": "optional",
222
+ "inner": {
223
+ "kind": "object",
224
+ "properties": {
225
+ "nodejs": {
226
+ "kind": "optional",
227
+ "inner": {
228
+ "kind": "string"
229
+ }
230
+ },
231
+ "csharp": {
232
+ "kind": "optional",
233
+ "inner": {
234
+ "kind": "string"
235
+ }
236
+ },
237
+ "go": {
238
+ "kind": "optional",
239
+ "inner": {
240
+ "kind": "string"
241
+ }
242
+ },
243
+ "java": {
244
+ "kind": "optional",
245
+ "inner": {
246
+ "kind": "string"
247
+ }
248
+ },
249
+ "python": {
250
+ "kind": "optional",
251
+ "inner": {
252
+ "kind": "string"
253
+ }
254
+ }
255
+ },
256
+ "required": [],
257
+ "unknownKeys": "strip"
258
+ }
259
+ },
260
+ "runtime": {
261
+ "kind": "optional",
262
+ "inner": {
263
+ "kind": "object",
264
+ "properties": {
265
+ "nodejs": {
266
+ "kind": "optional",
267
+ "inner": {
268
+ "kind": "string"
269
+ }
270
+ },
271
+ "dotnet": {
272
+ "kind": "optional",
273
+ "inner": {
274
+ "kind": "string"
275
+ }
276
+ },
277
+ "go": {
278
+ "kind": "optional",
279
+ "inner": {
280
+ "kind": "string"
281
+ }
282
+ },
283
+ "java": {
284
+ "kind": "optional",
285
+ "inner": {
286
+ "kind": "string"
287
+ }
288
+ },
289
+ "python": {
290
+ "kind": "optional",
291
+ "inner": {
292
+ "kind": "string"
293
+ }
294
+ }
295
+ },
296
+ "required": [],
297
+ "unknownKeys": "strip"
298
+ }
299
+ },
300
+ "visibility": {
301
+ "kind": "optional",
302
+ "inner": {
303
+ "kind": "enum",
304
+ "values": [
305
+ "public",
306
+ "private"
307
+ ]
308
+ }
309
+ },
310
+ "publishedBy": {
311
+ "kind": "optional",
312
+ "inner": {
313
+ "kind": "string",
314
+ "maxLength": 200
315
+ }
316
+ }
261
317
  },
262
- "publishedBy": {
263
- "description": "User ID of the publisher (set by HTTP layer)",
264
- "type": "string",
265
- "maxLength": 200
266
- }
318
+ "required": [
319
+ "org",
320
+ "name",
321
+ "version",
322
+ "language",
323
+ "metadata",
324
+ "eventSchema",
325
+ "documentation"
326
+ ],
327
+ "unknownKeys": "strip"
267
328
  },
268
- "required": [
269
- "org",
270
- "name",
271
- "version",
272
- "language",
273
- "metadata",
274
- "eventSchema",
275
- "documentation"
276
- ]
329
+ "definitions": {},
330
+ "extensions": {
331
+ "bsb": {
332
+ "description": "Request body for publishing a plugin"
333
+ }
334
+ }
277
335
  },
278
336
  "outputSchema": {
279
- "description": "Response for publish operation",
280
- "type": "object",
281
- "properties": {
282
- "success": {
283
- "description": "Operation success status",
284
- "type": "boolean"
285
- },
286
- "pluginId": {
287
- "description": "Full plugin ID (org/name)",
288
- "type": "string"
289
- },
290
- "version": {
291
- "description": "Published version",
292
- "type": "string"
337
+ "anyvaliVersion": "1.0",
338
+ "schemaVersion": "1",
339
+ "root": {
340
+ "kind": "object",
341
+ "properties": {
342
+ "success": {
343
+ "kind": "bool"
344
+ },
345
+ "pluginId": {
346
+ "kind": "string"
347
+ },
348
+ "version": {
349
+ "kind": "string"
350
+ },
351
+ "message": {
352
+ "kind": "optional",
353
+ "inner": {
354
+ "kind": "string"
355
+ }
356
+ }
293
357
  },
294
- "message": {
295
- "description": "Success or error message",
296
- "type": "string"
297
- }
358
+ "required": [
359
+ "success",
360
+ "pluginId",
361
+ "version"
362
+ ],
363
+ "unknownKeys": "strip"
298
364
  },
299
- "required": [
300
- "success",
301
- "pluginId",
302
- "version"
303
- ]
365
+ "definitions": {},
366
+ "extensions": {
367
+ "bsb": {
368
+ "description": "Response for publish operation"
369
+ }
370
+ }
304
371
  }
305
372
  },
306
373
  "registry.plugin.get": {
@@ -308,389 +375,429 @@
308
375
  "category": "onReturnableEvents",
309
376
  "description": "Get plugin details by org/name",
310
377
  "inputSchema": {
311
- "type": "object",
312
- "properties": {
313
- "org": {
314
- "description": "Organization name",
315
- "type": "string"
316
- },
317
- "name": {
318
- "description": "Plugin name",
319
- "type": "string"
378
+ "anyvaliVersion": "1.0",
379
+ "schemaVersion": "1",
380
+ "root": {
381
+ "kind": "object",
382
+ "properties": {
383
+ "org": {
384
+ "kind": "string"
385
+ },
386
+ "name": {
387
+ "kind": "string"
388
+ },
389
+ "version": {
390
+ "kind": "optional",
391
+ "inner": {
392
+ "kind": "string"
393
+ }
394
+ }
320
395
  },
321
- "version": {
322
- "description": "Version (defaults to latest)",
323
- "type": "string"
324
- }
396
+ "required": [
397
+ "org",
398
+ "name"
399
+ ],
400
+ "unknownKeys": "strip"
325
401
  },
326
- "required": [
327
- "org",
328
- "name"
329
- ]
402
+ "definitions": {},
403
+ "extensions": {}
330
404
  },
331
405
  "outputSchema": {
332
- "description": "Registry entry for a plugin",
333
- "type": "object",
334
- "properties": {
335
- "id": {
336
- "description": "Full ID: org/plugin-name",
337
- "type": "string",
338
- "minLength": 1,
339
- "maxLength": 200
340
- },
341
- "org": {
342
- "description": "Organization or user name",
343
- "type": "string",
344
- "minLength": 1,
345
- "maxLength": 100
346
- },
347
- "name": {
348
- "description": "Plugin name",
349
- "type": "string",
350
- "minLength": 1,
351
- "maxLength": 100
352
- },
353
- "displayName": {
354
- "description": "Human-readable name",
355
- "type": "string",
356
- "minLength": 1,
357
- "maxLength": 200
358
- },
359
- "description": {
360
- "description": "Short description",
361
- "type": "string",
362
- "minLength": 1,
363
- "maxLength": 1000
364
- },
365
- "version": {
366
- "description": "Semantic version (1.0.0)",
367
- "type": "string",
368
- "minLength": 1,
369
- "maxLength": 50
370
- },
371
- "majorMinor": {
372
- "description": "Major.minor only (1.0)",
373
- "type": "string",
374
- "minLength": 1,
375
- "maxLength": 20
376
- },
377
- "language": {
378
- "description": "Programming language",
379
- "type": "string",
380
- "enum": [
381
- "nodejs",
382
- "csharp",
383
- "go",
384
- "java",
385
- "python"
386
- ]
387
- },
388
- "package": {
389
- "description": "Language-specific package information",
390
- "type": "object",
391
- "properties": {
392
- "nodejs": {
393
- "description": "NPM package name",
394
- "type": "string"
395
- },
396
- "csharp": {
397
- "description": "NuGet package name",
398
- "type": "string"
399
- },
400
- "go": {
401
- "description": "Go module path",
402
- "type": "string"
403
- },
404
- "java": {
405
- "description": "Maven coordinates",
406
- "type": "string"
407
- },
408
- "python": {
409
- "description": "PyPI package name",
410
- "type": "string"
411
- }
406
+ "anyvaliVersion": "1.0",
407
+ "schemaVersion": "1",
408
+ "root": {
409
+ "kind": "object",
410
+ "properties": {
411
+ "id": {
412
+ "kind": "string",
413
+ "minLength": 1,
414
+ "maxLength": 200
412
415
  },
413
- "required": []
414
- },
415
- "category": {
416
- "description": "Plugin category",
417
- "type": "string",
418
- "enum": [
419
- "service",
420
- "observable",
421
- "events",
422
- "config"
423
- ]
424
- },
425
- "tags": {
426
- "description": "Searchable keywords",
427
- "type": "array",
428
- "items": {
429
- "type": "string",
416
+ "org": {
417
+ "kind": "string",
418
+ "minLength": 1,
419
+ "maxLength": 100
420
+ },
421
+ "name": {
422
+ "kind": "string",
423
+ "minLength": 1,
424
+ "maxLength": 100
425
+ },
426
+ "displayName": {
427
+ "kind": "string",
428
+ "minLength": 1,
429
+ "maxLength": 200
430
+ },
431
+ "description": {
432
+ "kind": "string",
433
+ "minLength": 1,
434
+ "maxLength": 1000
435
+ },
436
+ "version": {
437
+ "kind": "string",
438
+ "minLength": 1,
430
439
  "maxLength": 50
431
- }
432
- },
433
- "author": {
434
- "description": "Author - either a string or { name, email?, url? }",
435
- "oneOf": [
436
- {
437
- "description": "Author name as a string",
438
- "type": "string",
439
- "maxLength": 200
440
- },
441
- {
442
- "description": "Author as an object (npm-style)",
443
- "type": "object",
440
+ },
441
+ "majorMinor": {
442
+ "kind": "string",
443
+ "minLength": 1,
444
+ "maxLength": 20
445
+ },
446
+ "language": {
447
+ "kind": "enum",
448
+ "values": [
449
+ "nodejs",
450
+ "csharp",
451
+ "go",
452
+ "java",
453
+ "python"
454
+ ]
455
+ },
456
+ "package": {
457
+ "kind": "optional",
458
+ "inner": {
459
+ "kind": "object",
444
460
  "properties": {
445
- "name": {
446
- "description": "Author name",
447
- "type": "string",
448
- "maxLength": 200
461
+ "nodejs": {
462
+ "kind": "optional",
463
+ "inner": {
464
+ "kind": "string"
465
+ }
449
466
  },
450
- "email": {
451
- "description": "Author email",
452
- "type": "string",
453
- "maxLength": 200
467
+ "csharp": {
468
+ "kind": "optional",
469
+ "inner": {
470
+ "kind": "string"
471
+ }
472
+ },
473
+ "go": {
474
+ "kind": "optional",
475
+ "inner": {
476
+ "kind": "string"
477
+ }
478
+ },
479
+ "java": {
480
+ "kind": "optional",
481
+ "inner": {
482
+ "kind": "string"
483
+ }
454
484
  },
455
- "url": {
456
- "description": "Author homepage",
457
- "type": "string",
458
- "format": "uri"
485
+ "python": {
486
+ "kind": "optional",
487
+ "inner": {
488
+ "kind": "string"
489
+ }
459
490
  }
460
491
  },
461
- "required": [
462
- "name"
492
+ "required": [],
493
+ "unknownKeys": "strip"
494
+ }
495
+ },
496
+ "category": {
497
+ "kind": "enum",
498
+ "values": [
499
+ "service",
500
+ "observable",
501
+ "events",
502
+ "config"
503
+ ]
504
+ },
505
+ "tags": {
506
+ "kind": "array",
507
+ "items": {
508
+ "kind": "string",
509
+ "maxLength": 50
510
+ }
511
+ },
512
+ "author": {
513
+ "kind": "optional",
514
+ "inner": {
515
+ "kind": "union",
516
+ "variants": [
517
+ {
518
+ "kind": "string",
519
+ "maxLength": 200
520
+ },
521
+ {
522
+ "kind": "object",
523
+ "properties": {
524
+ "name": {
525
+ "kind": "string",
526
+ "maxLength": 200
527
+ },
528
+ "email": {
529
+ "kind": "optional",
530
+ "inner": {
531
+ "kind": "string",
532
+ "maxLength": 200
533
+ }
534
+ },
535
+ "url": {
536
+ "kind": "optional",
537
+ "inner": {
538
+ "kind": "string",
539
+ "format": "url"
540
+ }
541
+ }
542
+ },
543
+ "required": [
544
+ "name"
545
+ ],
546
+ "unknownKeys": "strip"
547
+ }
463
548
  ]
464
549
  }
465
- ]
466
- },
467
- "license": {
468
- "description": "License identifier",
469
- "type": "string",
470
- "maxLength": 50
471
- },
472
- "homepage": {
473
- "description": "Documentation URL",
474
- "type": "string",
475
- "format": "uri"
476
- },
477
- "repository": {
478
- "description": "Source repository URL",
479
- "type": "string",
480
- "format": "uri"
481
- },
482
- "visibility": {
483
- "description": "Visibility level",
484
- "type": "string",
485
- "enum": [
486
- "public",
487
- "private"
488
- ]
489
- },
490
- "eventSchema": {
491
- "description": "Events map (Record<eventName, EventExportEntry>)",
492
- "oneOf": []
493
- },
494
- "capabilities": {
495
- "description": "Plugin capabilities object",
496
- "oneOf": []
497
- },
498
- "configSchema": {
499
- "description": "Configuration JSON Schema object",
500
- "oneOf": []
501
- },
502
- "typeDefinitions": {
503
- "description": "Language-specific type definitions",
504
- "type": "object",
505
- "properties": {
506
- "nodejs": {
507
- "description": "TypeScript .d.ts definitions",
508
- "type": "string"
509
- },
510
- "csharp": {
511
- "description": "C# interface definitions",
512
- "type": "string"
513
- },
514
- "go": {
515
- "description": "Go type definitions",
516
- "type": "string"
517
- },
518
- "java": {
519
- "description": "Java interface definitions",
520
- "type": "string"
550
+ },
551
+ "license": {
552
+ "kind": "optional",
553
+ "inner": {
554
+ "kind": "string",
555
+ "maxLength": 50
521
556
  }
522
557
  },
523
- "required": []
524
- },
525
- "documentation": {
526
- "description": "Array of markdown documentation files (at least 1 required)",
527
- "type": "array",
528
- "items": {
529
- "description": "Markdown file content (title extracted from first # heading)",
530
- "type": "string"
531
- },
532
- "minItems": 1
533
- },
534
- "dependencies": {
535
- "description": "Plugins this plugin depends on",
536
- "type": "array",
537
- "items": {
538
- "description": "Plugin dependency declaration",
539
- "type": "object",
540
- "properties": {
541
- "id": {
542
- "description": "Plugin ID (org/name or just name for _ org)",
543
- "type": "string",
544
- "minLength": 1,
545
- "maxLength": 200
546
- },
547
- "version": {
548
- "description": "Semver range constraint (e.g. ^1.0.0, ~2.1, >=3.0.0)",
549
- "type": "string",
550
- "minLength": 1,
551
- "maxLength": 50
552
- }
553
- },
554
- "required": [
555
- "id",
556
- "version"
558
+ "homepage": {
559
+ "kind": "optional",
560
+ "inner": {
561
+ "kind": "string",
562
+ "format": "url"
563
+ }
564
+ },
565
+ "repository": {
566
+ "kind": "optional",
567
+ "inner": {
568
+ "kind": "string",
569
+ "format": "url"
570
+ }
571
+ },
572
+ "visibility": {
573
+ "kind": "enum",
574
+ "values": [
575
+ "public",
576
+ "private"
557
577
  ]
558
- }
559
- },
560
- "permissions": {
561
- "description": "Per-package user permissions",
562
- "type": "array",
563
- "items": {
564
- "description": "Per-package permission entry (overrides org-level)",
565
- "type": "object",
566
- "properties": {
567
- "userId": {
568
- "description": "User ID",
569
- "type": "string",
570
- "format": "uuid"
578
+ },
579
+ "eventSchema": {
580
+ "kind": "unknown"
581
+ },
582
+ "capabilities": {
583
+ "kind": "optional",
584
+ "inner": {
585
+ "kind": "unknown"
586
+ }
587
+ },
588
+ "configSchema": {
589
+ "kind": "optional",
590
+ "inner": {
591
+ "kind": "unknown"
592
+ }
593
+ },
594
+ "typeDefinitions": {
595
+ "kind": "optional",
596
+ "inner": {
597
+ "kind": "object",
598
+ "properties": {
599
+ "nodejs": {
600
+ "kind": "optional",
601
+ "inner": {
602
+ "kind": "string"
603
+ }
604
+ },
605
+ "csharp": {
606
+ "kind": "optional",
607
+ "inner": {
608
+ "kind": "string"
609
+ }
610
+ },
611
+ "go": {
612
+ "kind": "optional",
613
+ "inner": {
614
+ "kind": "string"
615
+ }
616
+ },
617
+ "java": {
618
+ "kind": "optional",
619
+ "inner": {
620
+ "kind": "string"
621
+ }
622
+ }
571
623
  },
572
- "permission": {
573
- "description": "Resource-level permission",
574
- "type": "string",
575
- "enum": [
576
- "read",
577
- "write"
578
- ]
624
+ "required": [],
625
+ "unknownKeys": "strip"
626
+ }
627
+ },
628
+ "documentation": {
629
+ "kind": "optional",
630
+ "inner": {
631
+ "kind": "array",
632
+ "items": {
633
+ "kind": "string"
634
+ },
635
+ "minItems": 1
636
+ }
637
+ },
638
+ "dependencies": {
639
+ "kind": "optional",
640
+ "inner": {
641
+ "kind": "array",
642
+ "items": {
643
+ "kind": "object",
644
+ "properties": {
645
+ "id": {
646
+ "kind": "string",
647
+ "minLength": 1,
648
+ "maxLength": 200
649
+ },
650
+ "version": {
651
+ "kind": "string",
652
+ "minLength": 1,
653
+ "maxLength": 50
654
+ }
655
+ },
656
+ "required": [
657
+ "id",
658
+ "version"
659
+ ],
660
+ "unknownKeys": "strip"
579
661
  }
580
- },
581
- "required": [
582
- "userId",
583
- "permission"
584
- ]
585
- }
586
- },
587
- "eventCount": {
588
- "description": "Total event count",
589
- "type": "integer",
590
- "format": "int32",
591
- "minimum": 0,
592
- "maximum": 2147483647
593
- },
594
- "emitEventCount": {
595
- "description": "Fire-and-forget emit events",
596
- "type": "integer",
597
- "format": "int32",
598
- "minimum": 0,
599
- "maximum": 2147483647
600
- },
601
- "onEventCount": {
602
- "description": "Fire-and-forget on events",
603
- "type": "integer",
604
- "format": "int32",
605
- "minimum": 0,
606
- "maximum": 2147483647
607
- },
608
- "returnableEventCount": {
609
- "description": "Returnable events",
610
- "type": "integer",
611
- "format": "int32",
612
- "minimum": 0,
613
- "maximum": 2147483647
614
- },
615
- "broadcastEventCount": {
616
- "description": "Broadcast events",
617
- "type": "integer",
618
- "format": "int32",
619
- "minimum": 0,
620
- "maximum": 2147483647
621
- },
622
- "publishedBy": {
623
- "description": "User ID who published",
624
- "type": "string",
625
- "maxLength": 200
626
- },
627
- "publishedAt": {
628
- "description": "First publish timestamp",
629
- "type": "string",
630
- "format": "datetime"
631
- },
632
- "updatedAt": {
633
- "description": "Last update timestamp",
634
- "type": "string",
635
- "format": "datetime"
636
- },
637
- "downloads": {
638
- "description": "Download count",
639
- "type": "integer",
640
- "format": "int32",
641
- "minimum": 0,
642
- "maximum": 2147483647
643
- },
644
- "runtime": {
645
- "description": "Runtime version requirements",
646
- "type": "object",
647
- "properties": {
648
- "nodejs": {
649
- "description": "Node.js version requirement",
650
- "type": "string"
651
- },
652
- "dotnet": {
653
- "description": ".NET version requirement",
654
- "type": "string"
655
- },
656
- "go": {
657
- "description": "Go version requirement",
658
- "type": "string"
659
- },
660
- "java": {
661
- "description": "Java version requirement",
662
- "type": "string"
663
- },
664
- "python": {
665
- "description": "Python version requirement",
666
- "type": "string"
667
662
  }
668
663
  },
669
- "required": []
670
- }
664
+ "permissions": {
665
+ "kind": "optional",
666
+ "inner": {
667
+ "kind": "array",
668
+ "items": {
669
+ "kind": "object",
670
+ "properties": {
671
+ "userId": {
672
+ "kind": "string",
673
+ "format": "uuid"
674
+ },
675
+ "permission": {
676
+ "kind": "enum",
677
+ "values": [
678
+ "read",
679
+ "write"
680
+ ]
681
+ }
682
+ },
683
+ "required": [
684
+ "userId",
685
+ "permission"
686
+ ],
687
+ "unknownKeys": "strip"
688
+ }
689
+ }
690
+ },
691
+ "eventCount": {
692
+ "kind": "int32",
693
+ "min": 0
694
+ },
695
+ "emitEventCount": {
696
+ "kind": "int32",
697
+ "min": 0
698
+ },
699
+ "onEventCount": {
700
+ "kind": "int32",
701
+ "min": 0
702
+ },
703
+ "returnableEventCount": {
704
+ "kind": "int32",
705
+ "min": 0
706
+ },
707
+ "broadcastEventCount": {
708
+ "kind": "int32",
709
+ "min": 0
710
+ },
711
+ "publishedBy": {
712
+ "kind": "string",
713
+ "maxLength": 200
714
+ },
715
+ "publishedAt": {
716
+ "kind": "string",
717
+ "format": "date-time"
718
+ },
719
+ "updatedAt": {
720
+ "kind": "string",
721
+ "format": "date-time"
722
+ },
723
+ "downloads": {
724
+ "kind": "optional",
725
+ "inner": {
726
+ "kind": "int32",
727
+ "min": 0
728
+ }
729
+ },
730
+ "runtime": {
731
+ "kind": "optional",
732
+ "inner": {
733
+ "kind": "object",
734
+ "properties": {
735
+ "nodejs": {
736
+ "kind": "optional",
737
+ "inner": {
738
+ "kind": "string"
739
+ }
740
+ },
741
+ "dotnet": {
742
+ "kind": "optional",
743
+ "inner": {
744
+ "kind": "string"
745
+ }
746
+ },
747
+ "go": {
748
+ "kind": "optional",
749
+ "inner": {
750
+ "kind": "string"
751
+ }
752
+ },
753
+ "java": {
754
+ "kind": "optional",
755
+ "inner": {
756
+ "kind": "string"
757
+ }
758
+ },
759
+ "python": {
760
+ "kind": "optional",
761
+ "inner": {
762
+ "kind": "string"
763
+ }
764
+ }
765
+ },
766
+ "required": [],
767
+ "unknownKeys": "strip"
768
+ }
769
+ }
770
+ },
771
+ "required": [
772
+ "id",
773
+ "org",
774
+ "name",
775
+ "displayName",
776
+ "description",
777
+ "version",
778
+ "majorMinor",
779
+ "language",
780
+ "category",
781
+ "tags",
782
+ "visibility",
783
+ "eventSchema",
784
+ "eventCount",
785
+ "emitEventCount",
786
+ "onEventCount",
787
+ "returnableEventCount",
788
+ "broadcastEventCount",
789
+ "publishedBy",
790
+ "publishedAt",
791
+ "updatedAt"
792
+ ],
793
+ "unknownKeys": "strip"
671
794
  },
672
- "required": [
673
- "id",
674
- "org",
675
- "name",
676
- "displayName",
677
- "description",
678
- "version",
679
- "majorMinor",
680
- "language",
681
- "category",
682
- "tags",
683
- "visibility",
684
- "eventSchema",
685
- "eventCount",
686
- "emitEventCount",
687
- "onEventCount",
688
- "returnableEventCount",
689
- "broadcastEventCount",
690
- "publishedBy",
691
- "publishedAt",
692
- "updatedAt"
693
- ]
795
+ "definitions": {},
796
+ "extensions": {
797
+ "bsb": {
798
+ "description": "Registry entry for a plugin"
799
+ }
800
+ }
694
801
  }
695
802
  },
696
803
  "registry.plugin.list": {
@@ -698,444 +805,487 @@
698
805
  "category": "onReturnableEvents",
699
806
  "description": "List plugins with filtering",
700
807
  "inputSchema": {
701
- "description": "Query parameters for listing plugins",
702
- "type": "object",
703
- "properties": {
704
- "org": {
705
- "description": "Filter by organization",
706
- "type": "string",
707
- "maxLength": 100
708
- },
709
- "language": {
710
- "description": "Filter by language",
711
- "type": "string",
712
- "enum": [
713
- "nodejs",
714
- "csharp",
715
- "go",
716
- "java",
717
- "python"
718
- ]
719
- },
720
- "category": {
721
- "description": "Filter by category",
722
- "type": "string",
723
- "enum": [
724
- "service",
725
- "observable",
726
- "events",
727
- "config"
728
- ]
729
- },
730
- "limit": {
731
- "description": "Results per page (default: 50)",
732
- "type": "integer",
733
- "format": "int32",
734
- "minimum": 1,
735
- "maximum": 100
808
+ "anyvaliVersion": "1.0",
809
+ "schemaVersion": "1",
810
+ "root": {
811
+ "kind": "object",
812
+ "properties": {
813
+ "org": {
814
+ "kind": "optional",
815
+ "inner": {
816
+ "kind": "string",
817
+ "maxLength": 100
818
+ }
819
+ },
820
+ "language": {
821
+ "kind": "optional",
822
+ "inner": {
823
+ "kind": "enum",
824
+ "values": [
825
+ "nodejs",
826
+ "csharp",
827
+ "go",
828
+ "java",
829
+ "python"
830
+ ]
831
+ }
832
+ },
833
+ "category": {
834
+ "kind": "optional",
835
+ "inner": {
836
+ "kind": "enum",
837
+ "values": [
838
+ "service",
839
+ "observable",
840
+ "events",
841
+ "config"
842
+ ]
843
+ }
844
+ },
845
+ "limit": {
846
+ "kind": "optional",
847
+ "inner": {
848
+ "kind": "int32",
849
+ "min": 1,
850
+ "max": 100
851
+ }
852
+ },
853
+ "offset": {
854
+ "kind": "optional",
855
+ "inner": {
856
+ "kind": "int32",
857
+ "min": 0
858
+ }
859
+ }
736
860
  },
737
- "offset": {
738
- "description": "Pagination offset (default: 0)",
739
- "type": "integer",
740
- "format": "int32",
741
- "minimum": 0,
742
- "maximum": 2147483647
743
- }
861
+ "required": [],
862
+ "unknownKeys": "strip"
744
863
  },
745
- "required": []
864
+ "definitions": {},
865
+ "extensions": {
866
+ "bsb": {
867
+ "description": "Query parameters for listing plugins"
868
+ }
869
+ }
746
870
  },
747
871
  "outputSchema": {
748
- "description": "List results response",
749
- "type": "object",
750
- "properties": {
751
- "results": {
752
- "description": "Plugin list",
753
- "type": "array",
754
- "items": {
755
- "description": "Registry entry for a plugin",
756
- "type": "object",
757
- "properties": {
758
- "id": {
759
- "description": "Full ID: org/plugin-name",
760
- "type": "string",
761
- "minLength": 1,
762
- "maxLength": 200
763
- },
764
- "org": {
765
- "description": "Organization or user name",
766
- "type": "string",
767
- "minLength": 1,
768
- "maxLength": 100
769
- },
770
- "name": {
771
- "description": "Plugin name",
772
- "type": "string",
773
- "minLength": 1,
774
- "maxLength": 100
775
- },
776
- "displayName": {
777
- "description": "Human-readable name",
778
- "type": "string",
779
- "minLength": 1,
780
- "maxLength": 200
781
- },
782
- "description": {
783
- "description": "Short description",
784
- "type": "string",
785
- "minLength": 1,
786
- "maxLength": 1000
787
- },
788
- "version": {
789
- "description": "Semantic version (1.0.0)",
790
- "type": "string",
791
- "minLength": 1,
792
- "maxLength": 50
793
- },
794
- "majorMinor": {
795
- "description": "Major.minor only (1.0)",
796
- "type": "string",
797
- "minLength": 1,
798
- "maxLength": 20
799
- },
800
- "language": {
801
- "description": "Programming language",
802
- "type": "string",
803
- "enum": [
804
- "nodejs",
805
- "csharp",
806
- "go",
807
- "java",
808
- "python"
809
- ]
810
- },
811
- "package": {
812
- "description": "Language-specific package information",
813
- "type": "object",
814
- "properties": {
815
- "nodejs": {
816
- "description": "NPM package name",
817
- "type": "string"
818
- },
819
- "csharp": {
820
- "description": "NuGet package name",
821
- "type": "string"
822
- },
823
- "go": {
824
- "description": "Go module path",
825
- "type": "string"
826
- },
827
- "java": {
828
- "description": "Maven coordinates",
829
- "type": "string"
830
- },
831
- "python": {
832
- "description": "PyPI package name",
833
- "type": "string"
834
- }
872
+ "anyvaliVersion": "1.0",
873
+ "schemaVersion": "1",
874
+ "root": {
875
+ "kind": "object",
876
+ "properties": {
877
+ "results": {
878
+ "kind": "array",
879
+ "items": {
880
+ "kind": "object",
881
+ "properties": {
882
+ "id": {
883
+ "kind": "string",
884
+ "minLength": 1,
885
+ "maxLength": 200
835
886
  },
836
- "required": []
837
- },
838
- "category": {
839
- "description": "Plugin category",
840
- "type": "string",
841
- "enum": [
842
- "service",
843
- "observable",
844
- "events",
845
- "config"
846
- ]
847
- },
848
- "tags": {
849
- "description": "Searchable keywords",
850
- "type": "array",
851
- "items": {
852
- "type": "string",
887
+ "org": {
888
+ "kind": "string",
889
+ "minLength": 1,
890
+ "maxLength": 100
891
+ },
892
+ "name": {
893
+ "kind": "string",
894
+ "minLength": 1,
895
+ "maxLength": 100
896
+ },
897
+ "displayName": {
898
+ "kind": "string",
899
+ "minLength": 1,
900
+ "maxLength": 200
901
+ },
902
+ "description": {
903
+ "kind": "string",
904
+ "minLength": 1,
905
+ "maxLength": 1000
906
+ },
907
+ "version": {
908
+ "kind": "string",
909
+ "minLength": 1,
853
910
  "maxLength": 50
854
- }
855
- },
856
- "author": {
857
- "description": "Author - either a string or { name, email?, url? }",
858
- "oneOf": [
859
- {
860
- "description": "Author name as a string",
861
- "type": "string",
862
- "maxLength": 200
863
- },
864
- {
865
- "description": "Author as an object (npm-style)",
866
- "type": "object",
911
+ },
912
+ "majorMinor": {
913
+ "kind": "string",
914
+ "minLength": 1,
915
+ "maxLength": 20
916
+ },
917
+ "language": {
918
+ "kind": "enum",
919
+ "values": [
920
+ "nodejs",
921
+ "csharp",
922
+ "go",
923
+ "java",
924
+ "python"
925
+ ]
926
+ },
927
+ "package": {
928
+ "kind": "optional",
929
+ "inner": {
930
+ "kind": "object",
867
931
  "properties": {
868
- "name": {
869
- "description": "Author name",
870
- "type": "string",
871
- "maxLength": 200
932
+ "nodejs": {
933
+ "kind": "optional",
934
+ "inner": {
935
+ "kind": "string"
936
+ }
872
937
  },
873
- "email": {
874
- "description": "Author email",
875
- "type": "string",
876
- "maxLength": 200
938
+ "csharp": {
939
+ "kind": "optional",
940
+ "inner": {
941
+ "kind": "string"
942
+ }
943
+ },
944
+ "go": {
945
+ "kind": "optional",
946
+ "inner": {
947
+ "kind": "string"
948
+ }
949
+ },
950
+ "java": {
951
+ "kind": "optional",
952
+ "inner": {
953
+ "kind": "string"
954
+ }
877
955
  },
878
- "url": {
879
- "description": "Author homepage",
880
- "type": "string",
881
- "format": "uri"
956
+ "python": {
957
+ "kind": "optional",
958
+ "inner": {
959
+ "kind": "string"
960
+ }
882
961
  }
883
962
  },
884
- "required": [
885
- "name"
963
+ "required": [],
964
+ "unknownKeys": "strip"
965
+ }
966
+ },
967
+ "category": {
968
+ "kind": "enum",
969
+ "values": [
970
+ "service",
971
+ "observable",
972
+ "events",
973
+ "config"
974
+ ]
975
+ },
976
+ "tags": {
977
+ "kind": "array",
978
+ "items": {
979
+ "kind": "string",
980
+ "maxLength": 50
981
+ }
982
+ },
983
+ "author": {
984
+ "kind": "optional",
985
+ "inner": {
986
+ "kind": "union",
987
+ "variants": [
988
+ {
989
+ "kind": "string",
990
+ "maxLength": 200
991
+ },
992
+ {
993
+ "kind": "object",
994
+ "properties": {
995
+ "name": {
996
+ "kind": "string",
997
+ "maxLength": 200
998
+ },
999
+ "email": {
1000
+ "kind": "optional",
1001
+ "inner": {
1002
+ "kind": "string",
1003
+ "maxLength": 200
1004
+ }
1005
+ },
1006
+ "url": {
1007
+ "kind": "optional",
1008
+ "inner": {
1009
+ "kind": "string",
1010
+ "format": "url"
1011
+ }
1012
+ }
1013
+ },
1014
+ "required": [
1015
+ "name"
1016
+ ],
1017
+ "unknownKeys": "strip"
1018
+ }
886
1019
  ]
887
1020
  }
888
- ]
889
- },
890
- "license": {
891
- "description": "License identifier",
892
- "type": "string",
893
- "maxLength": 50
894
- },
895
- "homepage": {
896
- "description": "Documentation URL",
897
- "type": "string",
898
- "format": "uri"
899
- },
900
- "repository": {
901
- "description": "Source repository URL",
902
- "type": "string",
903
- "format": "uri"
904
- },
905
- "visibility": {
906
- "description": "Visibility level",
907
- "type": "string",
908
- "enum": [
909
- "public",
910
- "private"
911
- ]
912
- },
913
- "eventSchema": {
914
- "description": "Events map (Record<eventName, EventExportEntry>)",
915
- "oneOf": []
916
- },
917
- "capabilities": {
918
- "description": "Plugin capabilities object",
919
- "oneOf": []
920
- },
921
- "configSchema": {
922
- "description": "Configuration JSON Schema object",
923
- "oneOf": []
924
- },
925
- "typeDefinitions": {
926
- "description": "Language-specific type definitions",
927
- "type": "object",
928
- "properties": {
929
- "nodejs": {
930
- "description": "TypeScript .d.ts definitions",
931
- "type": "string"
932
- },
933
- "csharp": {
934
- "description": "C# interface definitions",
935
- "type": "string"
936
- },
937
- "go": {
938
- "description": "Go type definitions",
939
- "type": "string"
940
- },
941
- "java": {
942
- "description": "Java interface definitions",
943
- "type": "string"
1021
+ },
1022
+ "license": {
1023
+ "kind": "optional",
1024
+ "inner": {
1025
+ "kind": "string",
1026
+ "maxLength": 50
944
1027
  }
945
1028
  },
946
- "required": []
947
- },
948
- "documentation": {
949
- "description": "Array of markdown documentation files (at least 1 required)",
950
- "type": "array",
951
- "items": {
952
- "description": "Markdown file content (title extracted from first # heading)",
953
- "type": "string"
1029
+ "homepage": {
1030
+ "kind": "optional",
1031
+ "inner": {
1032
+ "kind": "string",
1033
+ "format": "url"
1034
+ }
954
1035
  },
955
- "minItems": 1
956
- },
957
- "dependencies": {
958
- "description": "Plugins this plugin depends on",
959
- "type": "array",
960
- "items": {
961
- "description": "Plugin dependency declaration",
962
- "type": "object",
963
- "properties": {
964
- "id": {
965
- "description": "Plugin ID (org/name or just name for _ org)",
966
- "type": "string",
967
- "minLength": 1,
968
- "maxLength": 200
969
- },
970
- "version": {
971
- "description": "Semver range constraint (e.g. ^1.0.0, ~2.1, >=3.0.0)",
972
- "type": "string",
973
- "minLength": 1,
974
- "maxLength": 50
975
- }
976
- },
977
- "required": [
978
- "id",
979
- "version"
1036
+ "repository": {
1037
+ "kind": "optional",
1038
+ "inner": {
1039
+ "kind": "string",
1040
+ "format": "url"
1041
+ }
1042
+ },
1043
+ "visibility": {
1044
+ "kind": "enum",
1045
+ "values": [
1046
+ "public",
1047
+ "private"
980
1048
  ]
981
- }
982
- },
983
- "permissions": {
984
- "description": "Per-package user permissions",
985
- "type": "array",
986
- "items": {
987
- "description": "Per-package permission entry (overrides org-level)",
988
- "type": "object",
989
- "properties": {
990
- "userId": {
991
- "description": "User ID",
992
- "type": "string",
993
- "format": "uuid"
1049
+ },
1050
+ "eventSchema": {
1051
+ "kind": "unknown"
1052
+ },
1053
+ "capabilities": {
1054
+ "kind": "optional",
1055
+ "inner": {
1056
+ "kind": "unknown"
1057
+ }
1058
+ },
1059
+ "configSchema": {
1060
+ "kind": "optional",
1061
+ "inner": {
1062
+ "kind": "unknown"
1063
+ }
1064
+ },
1065
+ "typeDefinitions": {
1066
+ "kind": "optional",
1067
+ "inner": {
1068
+ "kind": "object",
1069
+ "properties": {
1070
+ "nodejs": {
1071
+ "kind": "optional",
1072
+ "inner": {
1073
+ "kind": "string"
1074
+ }
1075
+ },
1076
+ "csharp": {
1077
+ "kind": "optional",
1078
+ "inner": {
1079
+ "kind": "string"
1080
+ }
1081
+ },
1082
+ "go": {
1083
+ "kind": "optional",
1084
+ "inner": {
1085
+ "kind": "string"
1086
+ }
1087
+ },
1088
+ "java": {
1089
+ "kind": "optional",
1090
+ "inner": {
1091
+ "kind": "string"
1092
+ }
1093
+ }
994
1094
  },
995
- "permission": {
996
- "description": "Resource-level permission",
997
- "type": "string",
998
- "enum": [
999
- "read",
1000
- "write"
1001
- ]
1095
+ "required": [],
1096
+ "unknownKeys": "strip"
1097
+ }
1098
+ },
1099
+ "documentation": {
1100
+ "kind": "optional",
1101
+ "inner": {
1102
+ "kind": "array",
1103
+ "items": {
1104
+ "kind": "string"
1105
+ },
1106
+ "minItems": 1
1107
+ }
1108
+ },
1109
+ "dependencies": {
1110
+ "kind": "optional",
1111
+ "inner": {
1112
+ "kind": "array",
1113
+ "items": {
1114
+ "kind": "object",
1115
+ "properties": {
1116
+ "id": {
1117
+ "kind": "string",
1118
+ "minLength": 1,
1119
+ "maxLength": 200
1120
+ },
1121
+ "version": {
1122
+ "kind": "string",
1123
+ "minLength": 1,
1124
+ "maxLength": 50
1125
+ }
1126
+ },
1127
+ "required": [
1128
+ "id",
1129
+ "version"
1130
+ ],
1131
+ "unknownKeys": "strip"
1002
1132
  }
1003
- },
1004
- "required": [
1005
- "userId",
1006
- "permission"
1007
- ]
1008
- }
1009
- },
1010
- "eventCount": {
1011
- "description": "Total event count",
1012
- "type": "integer",
1013
- "format": "int32",
1014
- "minimum": 0,
1015
- "maximum": 2147483647
1016
- },
1017
- "emitEventCount": {
1018
- "description": "Fire-and-forget emit events",
1019
- "type": "integer",
1020
- "format": "int32",
1021
- "minimum": 0,
1022
- "maximum": 2147483647
1023
- },
1024
- "onEventCount": {
1025
- "description": "Fire-and-forget on events",
1026
- "type": "integer",
1027
- "format": "int32",
1028
- "minimum": 0,
1029
- "maximum": 2147483647
1030
- },
1031
- "returnableEventCount": {
1032
- "description": "Returnable events",
1033
- "type": "integer",
1034
- "format": "int32",
1035
- "minimum": 0,
1036
- "maximum": 2147483647
1037
- },
1038
- "broadcastEventCount": {
1039
- "description": "Broadcast events",
1040
- "type": "integer",
1041
- "format": "int32",
1042
- "minimum": 0,
1043
- "maximum": 2147483647
1044
- },
1045
- "publishedBy": {
1046
- "description": "User ID who published",
1047
- "type": "string",
1048
- "maxLength": 200
1049
- },
1050
- "publishedAt": {
1051
- "description": "First publish timestamp",
1052
- "type": "string",
1053
- "format": "datetime"
1054
- },
1055
- "updatedAt": {
1056
- "description": "Last update timestamp",
1057
- "type": "string",
1058
- "format": "datetime"
1059
- },
1060
- "downloads": {
1061
- "description": "Download count",
1062
- "type": "integer",
1063
- "format": "int32",
1064
- "minimum": 0,
1065
- "maximum": 2147483647
1066
- },
1067
- "runtime": {
1068
- "description": "Runtime version requirements",
1069
- "type": "object",
1070
- "properties": {
1071
- "nodejs": {
1072
- "description": "Node.js version requirement",
1073
- "type": "string"
1074
- },
1075
- "dotnet": {
1076
- "description": ".NET version requirement",
1077
- "type": "string"
1078
- },
1079
- "go": {
1080
- "description": "Go version requirement",
1081
- "type": "string"
1082
- },
1083
- "java": {
1084
- "description": "Java version requirement",
1085
- "type": "string"
1086
- },
1087
- "python": {
1088
- "description": "Python version requirement",
1089
- "type": "string"
1090
1133
  }
1091
1134
  },
1092
- "required": []
1093
- }
1094
- },
1095
- "required": [
1096
- "id",
1097
- "org",
1098
- "name",
1099
- "displayName",
1100
- "description",
1101
- "version",
1102
- "majorMinor",
1103
- "language",
1104
- "category",
1105
- "tags",
1106
- "visibility",
1107
- "eventSchema",
1108
- "eventCount",
1109
- "emitEventCount",
1110
- "onEventCount",
1111
- "returnableEventCount",
1112
- "broadcastEventCount",
1113
- "publishedBy",
1114
- "publishedAt",
1115
- "updatedAt"
1116
- ]
1135
+ "permissions": {
1136
+ "kind": "optional",
1137
+ "inner": {
1138
+ "kind": "array",
1139
+ "items": {
1140
+ "kind": "object",
1141
+ "properties": {
1142
+ "userId": {
1143
+ "kind": "string",
1144
+ "format": "uuid"
1145
+ },
1146
+ "permission": {
1147
+ "kind": "enum",
1148
+ "values": [
1149
+ "read",
1150
+ "write"
1151
+ ]
1152
+ }
1153
+ },
1154
+ "required": [
1155
+ "userId",
1156
+ "permission"
1157
+ ],
1158
+ "unknownKeys": "strip"
1159
+ }
1160
+ }
1161
+ },
1162
+ "eventCount": {
1163
+ "kind": "int32",
1164
+ "min": 0
1165
+ },
1166
+ "emitEventCount": {
1167
+ "kind": "int32",
1168
+ "min": 0
1169
+ },
1170
+ "onEventCount": {
1171
+ "kind": "int32",
1172
+ "min": 0
1173
+ },
1174
+ "returnableEventCount": {
1175
+ "kind": "int32",
1176
+ "min": 0
1177
+ },
1178
+ "broadcastEventCount": {
1179
+ "kind": "int32",
1180
+ "min": 0
1181
+ },
1182
+ "publishedBy": {
1183
+ "kind": "string",
1184
+ "maxLength": 200
1185
+ },
1186
+ "publishedAt": {
1187
+ "kind": "string",
1188
+ "format": "date-time"
1189
+ },
1190
+ "updatedAt": {
1191
+ "kind": "string",
1192
+ "format": "date-time"
1193
+ },
1194
+ "downloads": {
1195
+ "kind": "optional",
1196
+ "inner": {
1197
+ "kind": "int32",
1198
+ "min": 0
1199
+ }
1200
+ },
1201
+ "runtime": {
1202
+ "kind": "optional",
1203
+ "inner": {
1204
+ "kind": "object",
1205
+ "properties": {
1206
+ "nodejs": {
1207
+ "kind": "optional",
1208
+ "inner": {
1209
+ "kind": "string"
1210
+ }
1211
+ },
1212
+ "dotnet": {
1213
+ "kind": "optional",
1214
+ "inner": {
1215
+ "kind": "string"
1216
+ }
1217
+ },
1218
+ "go": {
1219
+ "kind": "optional",
1220
+ "inner": {
1221
+ "kind": "string"
1222
+ }
1223
+ },
1224
+ "java": {
1225
+ "kind": "optional",
1226
+ "inner": {
1227
+ "kind": "string"
1228
+ }
1229
+ },
1230
+ "python": {
1231
+ "kind": "optional",
1232
+ "inner": {
1233
+ "kind": "string"
1234
+ }
1235
+ }
1236
+ },
1237
+ "required": [],
1238
+ "unknownKeys": "strip"
1239
+ }
1240
+ }
1241
+ },
1242
+ "required": [
1243
+ "id",
1244
+ "org",
1245
+ "name",
1246
+ "displayName",
1247
+ "description",
1248
+ "version",
1249
+ "majorMinor",
1250
+ "language",
1251
+ "category",
1252
+ "tags",
1253
+ "visibility",
1254
+ "eventSchema",
1255
+ "eventCount",
1256
+ "emitEventCount",
1257
+ "onEventCount",
1258
+ "returnableEventCount",
1259
+ "broadcastEventCount",
1260
+ "publishedBy",
1261
+ "publishedAt",
1262
+ "updatedAt"
1263
+ ],
1264
+ "unknownKeys": "strip"
1265
+ }
1266
+ },
1267
+ "total": {
1268
+ "kind": "int32",
1269
+ "min": 0
1270
+ },
1271
+ "page": {
1272
+ "kind": "int32",
1273
+ "min": 1
1117
1274
  }
1118
1275
  },
1119
- "total": {
1120
- "description": "Total count",
1121
- "type": "integer",
1122
- "format": "int32",
1123
- "minimum": 0,
1124
- "maximum": 2147483647
1125
- },
1126
- "page": {
1127
- "description": "Current page number",
1128
- "type": "integer",
1129
- "format": "int32",
1130
- "minimum": 1,
1131
- "maximum": 2147483647
1132
- }
1276
+ "required": [
1277
+ "results",
1278
+ "total",
1279
+ "page"
1280
+ ],
1281
+ "unknownKeys": "strip"
1133
1282
  },
1134
- "required": [
1135
- "results",
1136
- "total",
1137
- "page"
1138
- ]
1283
+ "definitions": {},
1284
+ "extensions": {
1285
+ "bsb": {
1286
+ "description": "List results response"
1287
+ }
1288
+ }
1139
1289
  }
1140
1290
  },
1141
1291
  "registry.plugin.search": {
@@ -1143,444 +1293,486 @@
1143
1293
  "category": "onReturnableEvents",
1144
1294
  "description": "Search plugins by query",
1145
1295
  "inputSchema": {
1146
- "description": "Query parameters for searching plugins",
1147
- "type": "object",
1148
- "properties": {
1149
- "query": {
1150
- "description": "Search query string",
1151
- "type": "string",
1152
- "minLength": 1,
1153
- "maxLength": 200
1154
- },
1155
- "language": {
1156
- "description": "Filter by language",
1157
- "type": "string",
1158
- "enum": [
1159
- "nodejs",
1160
- "csharp",
1161
- "go",
1162
- "java",
1163
- "python"
1164
- ]
1165
- },
1166
- "category": {
1167
- "description": "Filter by category",
1168
- "type": "string",
1169
- "enum": [
1170
- "service",
1171
- "observable",
1172
- "events",
1173
- "config"
1174
- ]
1175
- },
1176
- "limit": {
1177
- "description": "Results per page (default: 20)",
1178
- "type": "integer",
1179
- "format": "int32",
1180
- "minimum": 1,
1181
- "maximum": 100
1296
+ "anyvaliVersion": "1.0",
1297
+ "schemaVersion": "1",
1298
+ "root": {
1299
+ "kind": "object",
1300
+ "properties": {
1301
+ "query": {
1302
+ "kind": "string",
1303
+ "minLength": 1,
1304
+ "maxLength": 200
1305
+ },
1306
+ "language": {
1307
+ "kind": "optional",
1308
+ "inner": {
1309
+ "kind": "enum",
1310
+ "values": [
1311
+ "nodejs",
1312
+ "csharp",
1313
+ "go",
1314
+ "java",
1315
+ "python"
1316
+ ]
1317
+ }
1318
+ },
1319
+ "category": {
1320
+ "kind": "optional",
1321
+ "inner": {
1322
+ "kind": "enum",
1323
+ "values": [
1324
+ "service",
1325
+ "observable",
1326
+ "events",
1327
+ "config"
1328
+ ]
1329
+ }
1330
+ },
1331
+ "limit": {
1332
+ "kind": "optional",
1333
+ "inner": {
1334
+ "kind": "int32",
1335
+ "min": 1,
1336
+ "max": 100
1337
+ }
1338
+ },
1339
+ "offset": {
1340
+ "kind": "optional",
1341
+ "inner": {
1342
+ "kind": "int32",
1343
+ "min": 0
1344
+ }
1345
+ }
1182
1346
  },
1183
- "offset": {
1184
- "description": "Pagination offset (default: 0)",
1185
- "type": "integer",
1186
- "format": "int32",
1187
- "minimum": 0,
1188
- "maximum": 2147483647
1189
- }
1347
+ "required": [
1348
+ "query"
1349
+ ],
1350
+ "unknownKeys": "strip"
1190
1351
  },
1191
- "required": [
1192
- "query"
1193
- ]
1352
+ "definitions": {},
1353
+ "extensions": {
1354
+ "bsb": {
1355
+ "description": "Query parameters for searching plugins"
1356
+ }
1357
+ }
1194
1358
  },
1195
1359
  "outputSchema": {
1196
- "description": "Search results response",
1197
- "type": "object",
1198
- "properties": {
1199
- "results": {
1200
- "description": "Matching plugins",
1201
- "type": "array",
1202
- "items": {
1203
- "description": "Registry entry for a plugin",
1204
- "type": "object",
1205
- "properties": {
1206
- "id": {
1207
- "description": "Full ID: org/plugin-name",
1208
- "type": "string",
1209
- "minLength": 1,
1210
- "maxLength": 200
1211
- },
1212
- "org": {
1213
- "description": "Organization or user name",
1214
- "type": "string",
1215
- "minLength": 1,
1216
- "maxLength": 100
1217
- },
1218
- "name": {
1219
- "description": "Plugin name",
1220
- "type": "string",
1221
- "minLength": 1,
1222
- "maxLength": 100
1223
- },
1224
- "displayName": {
1225
- "description": "Human-readable name",
1226
- "type": "string",
1227
- "minLength": 1,
1228
- "maxLength": 200
1229
- },
1230
- "description": {
1231
- "description": "Short description",
1232
- "type": "string",
1233
- "minLength": 1,
1234
- "maxLength": 1000
1235
- },
1236
- "version": {
1237
- "description": "Semantic version (1.0.0)",
1238
- "type": "string",
1239
- "minLength": 1,
1240
- "maxLength": 50
1241
- },
1242
- "majorMinor": {
1243
- "description": "Major.minor only (1.0)",
1244
- "type": "string",
1245
- "minLength": 1,
1246
- "maxLength": 20
1247
- },
1248
- "language": {
1249
- "description": "Programming language",
1250
- "type": "string",
1251
- "enum": [
1252
- "nodejs",
1253
- "csharp",
1254
- "go",
1255
- "java",
1256
- "python"
1257
- ]
1258
- },
1259
- "package": {
1260
- "description": "Language-specific package information",
1261
- "type": "object",
1262
- "properties": {
1263
- "nodejs": {
1264
- "description": "NPM package name",
1265
- "type": "string"
1266
- },
1267
- "csharp": {
1268
- "description": "NuGet package name",
1269
- "type": "string"
1270
- },
1271
- "go": {
1272
- "description": "Go module path",
1273
- "type": "string"
1274
- },
1275
- "java": {
1276
- "description": "Maven coordinates",
1277
- "type": "string"
1278
- },
1279
- "python": {
1280
- "description": "PyPI package name",
1281
- "type": "string"
1282
- }
1360
+ "anyvaliVersion": "1.0",
1361
+ "schemaVersion": "1",
1362
+ "root": {
1363
+ "kind": "object",
1364
+ "properties": {
1365
+ "results": {
1366
+ "kind": "array",
1367
+ "items": {
1368
+ "kind": "object",
1369
+ "properties": {
1370
+ "id": {
1371
+ "kind": "string",
1372
+ "minLength": 1,
1373
+ "maxLength": 200
1283
1374
  },
1284
- "required": []
1285
- },
1286
- "category": {
1287
- "description": "Plugin category",
1288
- "type": "string",
1289
- "enum": [
1290
- "service",
1291
- "observable",
1292
- "events",
1293
- "config"
1294
- ]
1295
- },
1296
- "tags": {
1297
- "description": "Searchable keywords",
1298
- "type": "array",
1299
- "items": {
1300
- "type": "string",
1375
+ "org": {
1376
+ "kind": "string",
1377
+ "minLength": 1,
1378
+ "maxLength": 100
1379
+ },
1380
+ "name": {
1381
+ "kind": "string",
1382
+ "minLength": 1,
1383
+ "maxLength": 100
1384
+ },
1385
+ "displayName": {
1386
+ "kind": "string",
1387
+ "minLength": 1,
1388
+ "maxLength": 200
1389
+ },
1390
+ "description": {
1391
+ "kind": "string",
1392
+ "minLength": 1,
1393
+ "maxLength": 1000
1394
+ },
1395
+ "version": {
1396
+ "kind": "string",
1397
+ "minLength": 1,
1301
1398
  "maxLength": 50
1302
- }
1303
- },
1304
- "author": {
1305
- "description": "Author - either a string or { name, email?, url? }",
1306
- "oneOf": [
1307
- {
1308
- "description": "Author name as a string",
1309
- "type": "string",
1310
- "maxLength": 200
1311
- },
1312
- {
1313
- "description": "Author as an object (npm-style)",
1314
- "type": "object",
1399
+ },
1400
+ "majorMinor": {
1401
+ "kind": "string",
1402
+ "minLength": 1,
1403
+ "maxLength": 20
1404
+ },
1405
+ "language": {
1406
+ "kind": "enum",
1407
+ "values": [
1408
+ "nodejs",
1409
+ "csharp",
1410
+ "go",
1411
+ "java",
1412
+ "python"
1413
+ ]
1414
+ },
1415
+ "package": {
1416
+ "kind": "optional",
1417
+ "inner": {
1418
+ "kind": "object",
1315
1419
  "properties": {
1316
- "name": {
1317
- "description": "Author name",
1318
- "type": "string",
1319
- "maxLength": 200
1420
+ "nodejs": {
1421
+ "kind": "optional",
1422
+ "inner": {
1423
+ "kind": "string"
1424
+ }
1320
1425
  },
1321
- "email": {
1322
- "description": "Author email",
1323
- "type": "string",
1324
- "maxLength": 200
1426
+ "csharp": {
1427
+ "kind": "optional",
1428
+ "inner": {
1429
+ "kind": "string"
1430
+ }
1431
+ },
1432
+ "go": {
1433
+ "kind": "optional",
1434
+ "inner": {
1435
+ "kind": "string"
1436
+ }
1437
+ },
1438
+ "java": {
1439
+ "kind": "optional",
1440
+ "inner": {
1441
+ "kind": "string"
1442
+ }
1325
1443
  },
1326
- "url": {
1327
- "description": "Author homepage",
1328
- "type": "string",
1329
- "format": "uri"
1444
+ "python": {
1445
+ "kind": "optional",
1446
+ "inner": {
1447
+ "kind": "string"
1448
+ }
1330
1449
  }
1331
1450
  },
1332
- "required": [
1333
- "name"
1451
+ "required": [],
1452
+ "unknownKeys": "strip"
1453
+ }
1454
+ },
1455
+ "category": {
1456
+ "kind": "enum",
1457
+ "values": [
1458
+ "service",
1459
+ "observable",
1460
+ "events",
1461
+ "config"
1462
+ ]
1463
+ },
1464
+ "tags": {
1465
+ "kind": "array",
1466
+ "items": {
1467
+ "kind": "string",
1468
+ "maxLength": 50
1469
+ }
1470
+ },
1471
+ "author": {
1472
+ "kind": "optional",
1473
+ "inner": {
1474
+ "kind": "union",
1475
+ "variants": [
1476
+ {
1477
+ "kind": "string",
1478
+ "maxLength": 200
1479
+ },
1480
+ {
1481
+ "kind": "object",
1482
+ "properties": {
1483
+ "name": {
1484
+ "kind": "string",
1485
+ "maxLength": 200
1486
+ },
1487
+ "email": {
1488
+ "kind": "optional",
1489
+ "inner": {
1490
+ "kind": "string",
1491
+ "maxLength": 200
1492
+ }
1493
+ },
1494
+ "url": {
1495
+ "kind": "optional",
1496
+ "inner": {
1497
+ "kind": "string",
1498
+ "format": "url"
1499
+ }
1500
+ }
1501
+ },
1502
+ "required": [
1503
+ "name"
1504
+ ],
1505
+ "unknownKeys": "strip"
1506
+ }
1334
1507
  ]
1335
1508
  }
1336
- ]
1337
- },
1338
- "license": {
1339
- "description": "License identifier",
1340
- "type": "string",
1341
- "maxLength": 50
1342
- },
1343
- "homepage": {
1344
- "description": "Documentation URL",
1345
- "type": "string",
1346
- "format": "uri"
1347
- },
1348
- "repository": {
1349
- "description": "Source repository URL",
1350
- "type": "string",
1351
- "format": "uri"
1352
- },
1353
- "visibility": {
1354
- "description": "Visibility level",
1355
- "type": "string",
1356
- "enum": [
1357
- "public",
1358
- "private"
1359
- ]
1360
- },
1361
- "eventSchema": {
1362
- "description": "Events map (Record<eventName, EventExportEntry>)",
1363
- "oneOf": []
1364
- },
1365
- "capabilities": {
1366
- "description": "Plugin capabilities object",
1367
- "oneOf": []
1368
- },
1369
- "configSchema": {
1370
- "description": "Configuration JSON Schema object",
1371
- "oneOf": []
1372
- },
1373
- "typeDefinitions": {
1374
- "description": "Language-specific type definitions",
1375
- "type": "object",
1376
- "properties": {
1377
- "nodejs": {
1378
- "description": "TypeScript .d.ts definitions",
1379
- "type": "string"
1380
- },
1381
- "csharp": {
1382
- "description": "C# interface definitions",
1383
- "type": "string"
1384
- },
1385
- "go": {
1386
- "description": "Go type definitions",
1387
- "type": "string"
1388
- },
1389
- "java": {
1390
- "description": "Java interface definitions",
1391
- "type": "string"
1509
+ },
1510
+ "license": {
1511
+ "kind": "optional",
1512
+ "inner": {
1513
+ "kind": "string",
1514
+ "maxLength": 50
1392
1515
  }
1393
1516
  },
1394
- "required": []
1395
- },
1396
- "documentation": {
1397
- "description": "Array of markdown documentation files (at least 1 required)",
1398
- "type": "array",
1399
- "items": {
1400
- "description": "Markdown file content (title extracted from first # heading)",
1401
- "type": "string"
1517
+ "homepage": {
1518
+ "kind": "optional",
1519
+ "inner": {
1520
+ "kind": "string",
1521
+ "format": "url"
1522
+ }
1402
1523
  },
1403
- "minItems": 1
1404
- },
1405
- "dependencies": {
1406
- "description": "Plugins this plugin depends on",
1407
- "type": "array",
1408
- "items": {
1409
- "description": "Plugin dependency declaration",
1410
- "type": "object",
1411
- "properties": {
1412
- "id": {
1413
- "description": "Plugin ID (org/name or just name for _ org)",
1414
- "type": "string",
1415
- "minLength": 1,
1416
- "maxLength": 200
1417
- },
1418
- "version": {
1419
- "description": "Semver range constraint (e.g. ^1.0.0, ~2.1, >=3.0.0)",
1420
- "type": "string",
1421
- "minLength": 1,
1422
- "maxLength": 50
1423
- }
1424
- },
1425
- "required": [
1426
- "id",
1427
- "version"
1524
+ "repository": {
1525
+ "kind": "optional",
1526
+ "inner": {
1527
+ "kind": "string",
1528
+ "format": "url"
1529
+ }
1530
+ },
1531
+ "visibility": {
1532
+ "kind": "enum",
1533
+ "values": [
1534
+ "public",
1535
+ "private"
1428
1536
  ]
1429
- }
1430
- },
1431
- "permissions": {
1432
- "description": "Per-package user permissions",
1433
- "type": "array",
1434
- "items": {
1435
- "description": "Per-package permission entry (overrides org-level)",
1436
- "type": "object",
1437
- "properties": {
1438
- "userId": {
1439
- "description": "User ID",
1440
- "type": "string",
1441
- "format": "uuid"
1537
+ },
1538
+ "eventSchema": {
1539
+ "kind": "unknown"
1540
+ },
1541
+ "capabilities": {
1542
+ "kind": "optional",
1543
+ "inner": {
1544
+ "kind": "unknown"
1545
+ }
1546
+ },
1547
+ "configSchema": {
1548
+ "kind": "optional",
1549
+ "inner": {
1550
+ "kind": "unknown"
1551
+ }
1552
+ },
1553
+ "typeDefinitions": {
1554
+ "kind": "optional",
1555
+ "inner": {
1556
+ "kind": "object",
1557
+ "properties": {
1558
+ "nodejs": {
1559
+ "kind": "optional",
1560
+ "inner": {
1561
+ "kind": "string"
1562
+ }
1563
+ },
1564
+ "csharp": {
1565
+ "kind": "optional",
1566
+ "inner": {
1567
+ "kind": "string"
1568
+ }
1569
+ },
1570
+ "go": {
1571
+ "kind": "optional",
1572
+ "inner": {
1573
+ "kind": "string"
1574
+ }
1575
+ },
1576
+ "java": {
1577
+ "kind": "optional",
1578
+ "inner": {
1579
+ "kind": "string"
1580
+ }
1581
+ }
1582
+ },
1583
+ "required": [],
1584
+ "unknownKeys": "strip"
1585
+ }
1586
+ },
1587
+ "documentation": {
1588
+ "kind": "optional",
1589
+ "inner": {
1590
+ "kind": "array",
1591
+ "items": {
1592
+ "kind": "string"
1442
1593
  },
1443
- "permission": {
1444
- "description": "Resource-level permission",
1445
- "type": "string",
1446
- "enum": [
1447
- "read",
1448
- "write"
1449
- ]
1594
+ "minItems": 1
1595
+ }
1596
+ },
1597
+ "dependencies": {
1598
+ "kind": "optional",
1599
+ "inner": {
1600
+ "kind": "array",
1601
+ "items": {
1602
+ "kind": "object",
1603
+ "properties": {
1604
+ "id": {
1605
+ "kind": "string",
1606
+ "minLength": 1,
1607
+ "maxLength": 200
1608
+ },
1609
+ "version": {
1610
+ "kind": "string",
1611
+ "minLength": 1,
1612
+ "maxLength": 50
1613
+ }
1614
+ },
1615
+ "required": [
1616
+ "id",
1617
+ "version"
1618
+ ],
1619
+ "unknownKeys": "strip"
1450
1620
  }
1451
- },
1452
- "required": [
1453
- "userId",
1454
- "permission"
1455
- ]
1456
- }
1457
- },
1458
- "eventCount": {
1459
- "description": "Total event count",
1460
- "type": "integer",
1461
- "format": "int32",
1462
- "minimum": 0,
1463
- "maximum": 2147483647
1464
- },
1465
- "emitEventCount": {
1466
- "description": "Fire-and-forget emit events",
1467
- "type": "integer",
1468
- "format": "int32",
1469
- "minimum": 0,
1470
- "maximum": 2147483647
1471
- },
1472
- "onEventCount": {
1473
- "description": "Fire-and-forget on events",
1474
- "type": "integer",
1475
- "format": "int32",
1476
- "minimum": 0,
1477
- "maximum": 2147483647
1478
- },
1479
- "returnableEventCount": {
1480
- "description": "Returnable events",
1481
- "type": "integer",
1482
- "format": "int32",
1483
- "minimum": 0,
1484
- "maximum": 2147483647
1485
- },
1486
- "broadcastEventCount": {
1487
- "description": "Broadcast events",
1488
- "type": "integer",
1489
- "format": "int32",
1490
- "minimum": 0,
1491
- "maximum": 2147483647
1492
- },
1493
- "publishedBy": {
1494
- "description": "User ID who published",
1495
- "type": "string",
1496
- "maxLength": 200
1497
- },
1498
- "publishedAt": {
1499
- "description": "First publish timestamp",
1500
- "type": "string",
1501
- "format": "datetime"
1502
- },
1503
- "updatedAt": {
1504
- "description": "Last update timestamp",
1505
- "type": "string",
1506
- "format": "datetime"
1507
- },
1508
- "downloads": {
1509
- "description": "Download count",
1510
- "type": "integer",
1511
- "format": "int32",
1512
- "minimum": 0,
1513
- "maximum": 2147483647
1514
- },
1515
- "runtime": {
1516
- "description": "Runtime version requirements",
1517
- "type": "object",
1518
- "properties": {
1519
- "nodejs": {
1520
- "description": "Node.js version requirement",
1521
- "type": "string"
1522
- },
1523
- "dotnet": {
1524
- "description": ".NET version requirement",
1525
- "type": "string"
1526
- },
1527
- "go": {
1528
- "description": "Go version requirement",
1529
- "type": "string"
1530
- },
1531
- "java": {
1532
- "description": "Java version requirement",
1533
- "type": "string"
1534
- },
1535
- "python": {
1536
- "description": "Python version requirement",
1537
- "type": "string"
1538
1621
  }
1539
1622
  },
1540
- "required": []
1541
- }
1542
- },
1543
- "required": [
1544
- "id",
1545
- "org",
1546
- "name",
1547
- "displayName",
1548
- "description",
1549
- "version",
1550
- "majorMinor",
1551
- "language",
1552
- "category",
1553
- "tags",
1554
- "visibility",
1555
- "eventSchema",
1556
- "eventCount",
1557
- "emitEventCount",
1558
- "onEventCount",
1559
- "returnableEventCount",
1560
- "broadcastEventCount",
1561
- "publishedBy",
1562
- "publishedAt",
1563
- "updatedAt"
1564
- ]
1623
+ "permissions": {
1624
+ "kind": "optional",
1625
+ "inner": {
1626
+ "kind": "array",
1627
+ "items": {
1628
+ "kind": "object",
1629
+ "properties": {
1630
+ "userId": {
1631
+ "kind": "string",
1632
+ "format": "uuid"
1633
+ },
1634
+ "permission": {
1635
+ "kind": "enum",
1636
+ "values": [
1637
+ "read",
1638
+ "write"
1639
+ ]
1640
+ }
1641
+ },
1642
+ "required": [
1643
+ "userId",
1644
+ "permission"
1645
+ ],
1646
+ "unknownKeys": "strip"
1647
+ }
1648
+ }
1649
+ },
1650
+ "eventCount": {
1651
+ "kind": "int32",
1652
+ "min": 0
1653
+ },
1654
+ "emitEventCount": {
1655
+ "kind": "int32",
1656
+ "min": 0
1657
+ },
1658
+ "onEventCount": {
1659
+ "kind": "int32",
1660
+ "min": 0
1661
+ },
1662
+ "returnableEventCount": {
1663
+ "kind": "int32",
1664
+ "min": 0
1665
+ },
1666
+ "broadcastEventCount": {
1667
+ "kind": "int32",
1668
+ "min": 0
1669
+ },
1670
+ "publishedBy": {
1671
+ "kind": "string",
1672
+ "maxLength": 200
1673
+ },
1674
+ "publishedAt": {
1675
+ "kind": "string",
1676
+ "format": "date-time"
1677
+ },
1678
+ "updatedAt": {
1679
+ "kind": "string",
1680
+ "format": "date-time"
1681
+ },
1682
+ "downloads": {
1683
+ "kind": "optional",
1684
+ "inner": {
1685
+ "kind": "int32",
1686
+ "min": 0
1687
+ }
1688
+ },
1689
+ "runtime": {
1690
+ "kind": "optional",
1691
+ "inner": {
1692
+ "kind": "object",
1693
+ "properties": {
1694
+ "nodejs": {
1695
+ "kind": "optional",
1696
+ "inner": {
1697
+ "kind": "string"
1698
+ }
1699
+ },
1700
+ "dotnet": {
1701
+ "kind": "optional",
1702
+ "inner": {
1703
+ "kind": "string"
1704
+ }
1705
+ },
1706
+ "go": {
1707
+ "kind": "optional",
1708
+ "inner": {
1709
+ "kind": "string"
1710
+ }
1711
+ },
1712
+ "java": {
1713
+ "kind": "optional",
1714
+ "inner": {
1715
+ "kind": "string"
1716
+ }
1717
+ },
1718
+ "python": {
1719
+ "kind": "optional",
1720
+ "inner": {
1721
+ "kind": "string"
1722
+ }
1723
+ }
1724
+ },
1725
+ "required": [],
1726
+ "unknownKeys": "strip"
1727
+ }
1728
+ }
1729
+ },
1730
+ "required": [
1731
+ "id",
1732
+ "org",
1733
+ "name",
1734
+ "displayName",
1735
+ "description",
1736
+ "version",
1737
+ "majorMinor",
1738
+ "language",
1739
+ "category",
1740
+ "tags",
1741
+ "visibility",
1742
+ "eventSchema",
1743
+ "eventCount",
1744
+ "emitEventCount",
1745
+ "onEventCount",
1746
+ "returnableEventCount",
1747
+ "broadcastEventCount",
1748
+ "publishedBy",
1749
+ "publishedAt",
1750
+ "updatedAt"
1751
+ ],
1752
+ "unknownKeys": "strip"
1753
+ }
1754
+ },
1755
+ "total": {
1756
+ "kind": "int32",
1757
+ "min": 0
1758
+ },
1759
+ "query": {
1760
+ "kind": "string"
1565
1761
  }
1566
1762
  },
1567
- "total": {
1568
- "description": "Total result count",
1569
- "type": "integer",
1570
- "format": "int32",
1571
- "minimum": 0,
1572
- "maximum": 2147483647
1573
- },
1574
- "query": {
1575
- "description": "Search query used",
1576
- "type": "string"
1577
- }
1763
+ "required": [
1764
+ "results",
1765
+ "total",
1766
+ "query"
1767
+ ],
1768
+ "unknownKeys": "strip"
1578
1769
  },
1579
- "required": [
1580
- "results",
1581
- "total",
1582
- "query"
1583
- ]
1770
+ "definitions": {},
1771
+ "extensions": {
1772
+ "bsb": {
1773
+ "description": "Search results response"
1774
+ }
1775
+ }
1584
1776
  }
1585
1777
  },
1586
1778
  "registry.plugin.delete": {
@@ -1588,45 +1780,55 @@
1588
1780
  "category": "onReturnableEvents",
1589
1781
  "description": "Delete a plugin or specific version",
1590
1782
  "inputSchema": {
1591
- "type": "object",
1592
- "properties": {
1593
- "org": {
1594
- "description": "Organization name",
1595
- "type": "string"
1596
- },
1597
- "name": {
1598
- "description": "Plugin name",
1599
- "type": "string"
1783
+ "anyvaliVersion": "1.0",
1784
+ "schemaVersion": "1",
1785
+ "root": {
1786
+ "kind": "object",
1787
+ "properties": {
1788
+ "org": {
1789
+ "kind": "string"
1790
+ },
1791
+ "name": {
1792
+ "kind": "string"
1793
+ },
1794
+ "version": {
1795
+ "kind": "optional",
1796
+ "inner": {
1797
+ "kind": "string"
1798
+ }
1799
+ }
1600
1800
  },
1601
- "version": {
1602
- "description": "Version (or all if not provided)",
1603
- "type": "string"
1604
- }
1801
+ "required": [
1802
+ "org",
1803
+ "name"
1804
+ ],
1805
+ "unknownKeys": "strip"
1605
1806
  },
1606
- "required": [
1607
- "org",
1608
- "name"
1609
- ]
1807
+ "definitions": {},
1808
+ "extensions": {}
1610
1809
  },
1611
1810
  "outputSchema": {
1612
- "type": "object",
1613
- "properties": {
1614
- "success": {
1615
- "description": "Success status",
1616
- "type": "boolean"
1811
+ "anyvaliVersion": "1.0",
1812
+ "schemaVersion": "1",
1813
+ "root": {
1814
+ "kind": "object",
1815
+ "properties": {
1816
+ "success": {
1817
+ "kind": "bool"
1818
+ },
1819
+ "deleted": {
1820
+ "kind": "int32",
1821
+ "min": 0
1822
+ }
1617
1823
  },
1618
- "deleted": {
1619
- "description": "Number of versions deleted",
1620
- "type": "integer",
1621
- "format": "int32",
1622
- "minimum": 0,
1623
- "maximum": 2147483647
1624
- }
1824
+ "required": [
1825
+ "success",
1826
+ "deleted"
1827
+ ],
1828
+ "unknownKeys": "strip"
1625
1829
  },
1626
- "required": [
1627
- "success",
1628
- "deleted"
1629
- ]
1830
+ "definitions": {},
1831
+ "extensions": {}
1630
1832
  }
1631
1833
  },
1632
1834
  "registry.plugin.versions": {
@@ -1634,72 +1836,83 @@
1634
1836
  "category": "onReturnableEvents",
1635
1837
  "description": "Get all versions of a plugin",
1636
1838
  "inputSchema": {
1637
- "type": "object",
1638
- "properties": {
1639
- "org": {
1640
- "description": "Organization name",
1641
- "type": "string"
1642
- },
1643
- "name": {
1644
- "description": "Plugin name",
1645
- "type": "string"
1839
+ "anyvaliVersion": "1.0",
1840
+ "schemaVersion": "1",
1841
+ "root": {
1842
+ "kind": "object",
1843
+ "properties": {
1844
+ "org": {
1845
+ "kind": "string"
1846
+ },
1847
+ "name": {
1848
+ "kind": "string"
1849
+ },
1850
+ "majorMinor": {
1851
+ "kind": "optional",
1852
+ "inner": {
1853
+ "kind": "string"
1854
+ }
1855
+ }
1646
1856
  },
1647
- "majorMinor": {
1648
- "description": "Filter by major.minor",
1649
- "type": "string"
1650
- }
1857
+ "required": [
1858
+ "org",
1859
+ "name"
1860
+ ],
1861
+ "unknownKeys": "strip"
1651
1862
  },
1652
- "required": [
1653
- "org",
1654
- "name"
1655
- ]
1863
+ "definitions": {},
1864
+ "extensions": {}
1656
1865
  },
1657
1866
  "outputSchema": {
1658
- "description": "Version list response",
1659
- "type": "object",
1660
- "properties": {
1661
- "versions": {
1662
- "description": "All available versions",
1663
- "type": "array",
1664
- "items": {
1665
- "description": "Version information",
1666
- "type": "object",
1667
- "properties": {
1668
- "version": {
1669
- "description": "Full semantic version",
1670
- "type": "string"
1671
- },
1672
- "majorMinor": {
1673
- "description": "Major.minor version",
1674
- "type": "string"
1867
+ "anyvaliVersion": "1.0",
1868
+ "schemaVersion": "1",
1869
+ "root": {
1870
+ "kind": "object",
1871
+ "properties": {
1872
+ "versions": {
1873
+ "kind": "array",
1874
+ "items": {
1875
+ "kind": "object",
1876
+ "properties": {
1877
+ "version": {
1878
+ "kind": "string"
1879
+ },
1880
+ "majorMinor": {
1881
+ "kind": "string"
1882
+ },
1883
+ "publishedAt": {
1884
+ "kind": "string",
1885
+ "format": "date-time"
1886
+ }
1675
1887
  },
1676
- "publishedAt": {
1677
- "description": "Publication timestamp",
1678
- "type": "string",
1679
- "format": "datetime"
1680
- }
1681
- },
1682
- "required": [
1683
- "version",
1684
- "majorMinor",
1685
- "publishedAt"
1686
- ]
1888
+ "required": [
1889
+ "version",
1890
+ "majorMinor",
1891
+ "publishedAt"
1892
+ ],
1893
+ "unknownKeys": "strip"
1894
+ }
1895
+ },
1896
+ "latest": {
1897
+ "kind": "string"
1898
+ },
1899
+ "latestForMajorMinor": {
1900
+ "kind": "string"
1687
1901
  }
1688
1902
  },
1689
- "latest": {
1690
- "description": "Latest version",
1691
- "type": "string"
1692
- },
1693
- "latestForMajorMinor": {
1694
- "description": "JSON map of major.minor to latest patch",
1695
- "type": "string"
1696
- }
1903
+ "required": [
1904
+ "versions",
1905
+ "latest",
1906
+ "latestForMajorMinor"
1907
+ ],
1908
+ "unknownKeys": "strip"
1697
1909
  },
1698
- "required": [
1699
- "versions",
1700
- "latest",
1701
- "latestForMajorMinor"
1702
- ]
1910
+ "definitions": {},
1911
+ "extensions": {
1912
+ "bsb": {
1913
+ "description": "Version list response"
1914
+ }
1915
+ }
1703
1916
  }
1704
1917
  },
1705
1918
  "registry.stats.get": {
@@ -1707,43 +1920,52 @@
1707
1920
  "category": "onReturnableEvents",
1708
1921
  "description": "Get registry statistics",
1709
1922
  "inputSchema": {
1710
- "type": "object",
1711
- "properties": {},
1712
- "required": []
1923
+ "anyvaliVersion": "1.0",
1924
+ "schemaVersion": "1",
1925
+ "root": {
1926
+ "kind": "object",
1927
+ "properties": {},
1928
+ "required": [],
1929
+ "unknownKeys": "strip"
1930
+ },
1931
+ "definitions": {},
1932
+ "extensions": {}
1713
1933
  },
1714
1934
  "outputSchema": {
1715
- "description": "Registry statistics",
1716
- "type": "object",
1717
- "properties": {
1718
- "totalPlugins": {
1719
- "description": "Total plugin count",
1720
- "type": "integer",
1721
- "format": "int32",
1722
- "minimum": 0,
1723
- "maximum": 2147483647
1724
- },
1725
- "byLanguage": {
1726
- "description": "JSON map of language to count",
1727
- "type": "string"
1728
- },
1729
- "byCategory": {
1730
- "description": "JSON map of category to count",
1731
- "type": "string"
1935
+ "anyvaliVersion": "1.0",
1936
+ "schemaVersion": "1",
1937
+ "root": {
1938
+ "kind": "object",
1939
+ "properties": {
1940
+ "totalPlugins": {
1941
+ "kind": "int32",
1942
+ "min": 0
1943
+ },
1944
+ "byLanguage": {
1945
+ "kind": "string"
1946
+ },
1947
+ "byCategory": {
1948
+ "kind": "string"
1949
+ },
1950
+ "totalDownloads": {
1951
+ "kind": "int32",
1952
+ "min": 0
1953
+ }
1732
1954
  },
1733
- "totalDownloads": {
1734
- "description": "Total downloads across all plugins",
1735
- "type": "integer",
1736
- "format": "int32",
1737
- "minimum": 0,
1738
- "maximum": 2147483647
1739
- }
1955
+ "required": [
1956
+ "totalPlugins",
1957
+ "byLanguage",
1958
+ "byCategory",
1959
+ "totalDownloads"
1960
+ ],
1961
+ "unknownKeys": "strip"
1740
1962
  },
1741
- "required": [
1742
- "totalPlugins",
1743
- "byLanguage",
1744
- "byCategory",
1745
- "totalDownloads"
1746
- ]
1963
+ "definitions": {},
1964
+ "extensions": {
1965
+ "bsb": {
1966
+ "description": "Registry statistics"
1967
+ }
1968
+ }
1747
1969
  }
1748
1970
  },
1749
1971
  "registry.auth.login": {
@@ -1751,46 +1973,63 @@
1751
1973
  "category": "onReturnableEvents",
1752
1974
  "description": "Authenticate user and get token",
1753
1975
  "inputSchema": {
1754
- "type": "object",
1755
- "properties": {
1756
- "username": {
1757
- "description": "Username",
1758
- "type": "string"
1976
+ "anyvaliVersion": "1.0",
1977
+ "schemaVersion": "1",
1978
+ "root": {
1979
+ "kind": "object",
1980
+ "properties": {
1981
+ "username": {
1982
+ "kind": "string"
1983
+ },
1984
+ "password": {
1985
+ "kind": "string"
1986
+ }
1759
1987
  },
1760
- "password": {
1761
- "description": "Encrypted password",
1762
- "type": "string"
1763
- }
1988
+ "required": [
1989
+ "username",
1990
+ "password"
1991
+ ],
1992
+ "unknownKeys": "strip"
1764
1993
  },
1765
- "required": [
1766
- "username",
1767
- "password"
1768
- ]
1994
+ "definitions": {},
1995
+ "extensions": {}
1769
1996
  },
1770
1997
  "outputSchema": {
1771
- "type": "object",
1772
- "properties": {
1773
- "success": {
1774
- "description": "Login success",
1775
- "type": "boolean"
1776
- },
1777
- "token": {
1778
- "description": "Auth token",
1779
- "type": "string"
1780
- },
1781
- "expiresAt": {
1782
- "description": "Expiration",
1783
- "type": "string",
1784
- "format": "datetime"
1998
+ "anyvaliVersion": "1.0",
1999
+ "schemaVersion": "1",
2000
+ "root": {
2001
+ "kind": "object",
2002
+ "properties": {
2003
+ "success": {
2004
+ "kind": "bool"
2005
+ },
2006
+ "token": {
2007
+ "kind": "optional",
2008
+ "inner": {
2009
+ "kind": "string"
2010
+ }
2011
+ },
2012
+ "expiresAt": {
2013
+ "kind": "optional",
2014
+ "inner": {
2015
+ "kind": "string",
2016
+ "format": "date-time"
2017
+ }
2018
+ },
2019
+ "message": {
2020
+ "kind": "optional",
2021
+ "inner": {
2022
+ "kind": "string"
2023
+ }
2024
+ }
1785
2025
  },
1786
- "message": {
1787
- "description": "Error message",
1788
- "type": "string"
1789
- }
2026
+ "required": [
2027
+ "success"
2028
+ ],
2029
+ "unknownKeys": "strip"
1790
2030
  },
1791
- "required": [
1792
- "success"
1793
- ]
2031
+ "definitions": {},
2032
+ "extensions": {}
1794
2033
  }
1795
2034
  },
1796
2035
  "registry.auth.verify": {
@@ -1798,86 +2037,57 @@
1798
2037
  "category": "onReturnableEvents",
1799
2038
  "description": "Verify authentication token",
1800
2039
  "inputSchema": {
1801
- "type": "object",
1802
- "properties": {
1803
- "token": {
1804
- "description": "Token to verify",
1805
- "type": "string"
1806
- }
2040
+ "anyvaliVersion": "1.0",
2041
+ "schemaVersion": "1",
2042
+ "root": {
2043
+ "kind": "object",
2044
+ "properties": {
2045
+ "token": {
2046
+ "kind": "string"
2047
+ }
2048
+ },
2049
+ "required": [
2050
+ "token"
2051
+ ],
2052
+ "unknownKeys": "strip"
1807
2053
  },
1808
- "required": [
1809
- "token"
1810
- ]
2054
+ "definitions": {},
2055
+ "extensions": {}
1811
2056
  },
1812
2057
  "outputSchema": {
1813
- "type": "object",
1814
- "properties": {
1815
- "valid": {
1816
- "description": "Token validity",
1817
- "type": "boolean"
1818
- },
1819
- "userId": {
1820
- "description": "User ID",
1821
- "type": "string"
1822
- },
1823
- "permissions": {
1824
- "type": "array",
1825
- "items": {
1826
- "type": "string"
2058
+ "anyvaliVersion": "1.0",
2059
+ "schemaVersion": "1",
2060
+ "root": {
2061
+ "kind": "object",
2062
+ "properties": {
2063
+ "valid": {
2064
+ "kind": "bool"
2065
+ },
2066
+ "userId": {
2067
+ "kind": "optional",
2068
+ "inner": {
2069
+ "kind": "string"
2070
+ }
2071
+ },
2072
+ "permissions": {
2073
+ "kind": "optional",
2074
+ "inner": {
2075
+ "kind": "array",
2076
+ "items": {
2077
+ "kind": "string"
2078
+ }
2079
+ }
1827
2080
  }
1828
- }
1829
- },
1830
- "required": [
1831
- "valid"
1832
- ]
1833
- }
1834
- }
1835
- },
1836
- "configSchema": {
1837
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1838
- "type": "object",
1839
- "properties": {
1840
- "database": {
1841
- "type": "object",
1842
- "properties": {
1843
- "type": {
1844
- "default": "file",
1845
- "type": "string",
1846
- "enum": [
1847
- "file",
1848
- "postgres"
1849
- ]
1850
2081
  },
1851
- "path": {
1852
- "default": "./.temp/data",
1853
- "type": "string"
1854
- }
1855
- },
1856
- "required": [
1857
- "type",
1858
- "path"
1859
- ],
1860
- "additionalProperties": false
1861
- },
1862
- "auth": {
1863
- "type": "object",
1864
- "properties": {
1865
- "requireAuth": {
1866
- "default": true,
1867
- "type": "boolean"
1868
- }
2082
+ "required": [
2083
+ "valid"
2084
+ ],
2085
+ "unknownKeys": "strip"
1869
2086
  },
1870
- "required": [
1871
- "requireAuth"
1872
- ],
1873
- "additionalProperties": false
2087
+ "definitions": {},
2088
+ "extensions": {}
1874
2089
  }
1875
- },
1876
- "required": [
1877
- "database",
1878
- "auth"
1879
- ],
1880
- "additionalProperties": false
2090
+ }
1881
2091
  },
1882
2092
  "pluginType": "service"
1883
2093
  }