@bsb/registry 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +133 -0
  2. package/bsb-plugin.json +47 -0
  3. package/lib/.bsb/clients/service-bsb-registry.d.ts +1118 -0
  4. package/lib/.bsb/clients/service-bsb-registry.d.ts.map +1 -0
  5. package/lib/.bsb/clients/service-bsb-registry.js +393 -0
  6. package/lib/.bsb/clients/service-bsb-registry.js.map +1 -0
  7. package/lib/plugins/service-bsb-registry/auth.d.ts +87 -0
  8. package/lib/plugins/service-bsb-registry/auth.d.ts.map +1 -0
  9. package/lib/plugins/service-bsb-registry/auth.js +197 -0
  10. package/lib/plugins/service-bsb-registry/auth.js.map +1 -0
  11. package/lib/plugins/service-bsb-registry/db/file.d.ts +73 -0
  12. package/lib/plugins/service-bsb-registry/db/file.d.ts.map +1 -0
  13. package/lib/plugins/service-bsb-registry/db/file.js +588 -0
  14. package/lib/plugins/service-bsb-registry/db/file.js.map +1 -0
  15. package/lib/plugins/service-bsb-registry/db/index.d.ts +75 -0
  16. package/lib/plugins/service-bsb-registry/db/index.d.ts.map +1 -0
  17. package/lib/plugins/service-bsb-registry/db/index.js +24 -0
  18. package/lib/plugins/service-bsb-registry/db/index.js.map +1 -0
  19. package/lib/plugins/service-bsb-registry/index.d.ts +1228 -0
  20. package/lib/plugins/service-bsb-registry/index.d.ts.map +1 -0
  21. package/lib/plugins/service-bsb-registry/index.js +661 -0
  22. package/lib/plugins/service-bsb-registry/index.js.map +1 -0
  23. package/lib/plugins/service-bsb-registry/types.d.ts +559 -0
  24. package/lib/plugins/service-bsb-registry/types.d.ts.map +1 -0
  25. package/lib/plugins/service-bsb-registry/types.js +235 -0
  26. package/lib/plugins/service-bsb-registry/types.js.map +1 -0
  27. package/lib/plugins/service-bsb-registry-ui/http-server.d.ts +138 -0
  28. package/lib/plugins/service-bsb-registry-ui/http-server.d.ts.map +1 -0
  29. package/lib/plugins/service-bsb-registry-ui/http-server.js +1660 -0
  30. package/lib/plugins/service-bsb-registry-ui/http-server.js.map +1 -0
  31. package/lib/plugins/service-bsb-registry-ui/index.d.ts +62 -0
  32. package/lib/plugins/service-bsb-registry-ui/index.d.ts.map +1 -0
  33. package/lib/plugins/service-bsb-registry-ui/index.js +101 -0
  34. package/lib/plugins/service-bsb-registry-ui/index.js.map +1 -0
  35. package/lib/plugins/service-bsb-registry-ui/static/assets/images/apple-touch-icon.png +0 -0
  36. package/lib/plugins/service-bsb-registry-ui/static/assets/images/favicon-16x16.png +0 -0
  37. package/lib/plugins/service-bsb-registry-ui/static/assets/images/favicon-32x32.png +0 -0
  38. package/lib/plugins/service-bsb-registry-ui/static/assets/images/favicon.ico +0 -0
  39. package/lib/plugins/service-bsb-registry-ui/static/css/style.css +1849 -0
  40. package/lib/plugins/service-bsb-registry-ui/static/js/app.js +336 -0
  41. package/lib/plugins/service-bsb-registry-ui/templates/layouts/main.hbs +39 -0
  42. package/lib/plugins/service-bsb-registry-ui/templates/pages/error.hbs +13 -0
  43. package/lib/plugins/service-bsb-registry-ui/templates/pages/home.hbs +62 -0
  44. package/lib/plugins/service-bsb-registry-ui/templates/pages/not-found.hbs +13 -0
  45. package/lib/plugins/service-bsb-registry-ui/templates/pages/plugin-detail.hbs +537 -0
  46. package/lib/plugins/service-bsb-registry-ui/templates/pages/plugins.hbs +40 -0
  47. package/lib/plugins/service-bsb-registry-ui/templates/partials/pagination.hbs +41 -0
  48. package/lib/plugins/service-bsb-registry-ui/templates/partials/plugin-card.hbs +40 -0
  49. package/lib/plugins/service-bsb-registry-ui/templates/partials/search-form.hbs +31 -0
  50. package/lib/schemas/service-bsb-registry-ui.json +57 -0
  51. package/lib/schemas/service-bsb-registry-ui.plugin.json +73 -0
  52. package/lib/schemas/service-bsb-registry.json +1883 -0
  53. package/lib/schemas/service-bsb-registry.plugin.json +68 -0
  54. package/package.json +60 -0
@@ -0,0 +1,1883 @@
1
+ {
2
+ "pluginName": "BSB Registry Core",
3
+ "version": "1.0.0",
4
+ "events": {
5
+ "registry.plugin.publish": {
6
+ "type": "returnable",
7
+ "category": "onReturnableEvents",
8
+ "description": "Publish a new plugin or version",
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",
96
+ "maxLength": 200
97
+ },
98
+ "url": {
99
+ "description": "Author homepage",
100
+ "type": "string",
101
+ "format": "uri"
102
+ }
103
+ },
104
+ "required": [
105
+ "name"
106
+ ]
107
+ }
108
+ ]
109
+ },
110
+ "license": {
111
+ "type": "string",
112
+ "maxLength": 50
113
+ },
114
+ "homepage": {
115
+ "type": "string",
116
+ "format": "uri"
117
+ },
118
+ "repository": {
119
+ "type": "string",
120
+ "format": "uri"
121
+ }
122
+ },
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"
161
+ }
162
+ },
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
186
+ },
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"
223
+ }
224
+ },
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"
234
+ },
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"
250
+ }
251
+ },
252
+ "required": []
253
+ },
254
+ "visibility": {
255
+ "description": "Visibility level (default: public)",
256
+ "type": "string",
257
+ "enum": [
258
+ "public",
259
+ "private"
260
+ ]
261
+ },
262
+ "publishedBy": {
263
+ "description": "User ID of the publisher (set by HTTP layer)",
264
+ "type": "string",
265
+ "maxLength": 200
266
+ }
267
+ },
268
+ "required": [
269
+ "org",
270
+ "name",
271
+ "version",
272
+ "language",
273
+ "metadata",
274
+ "eventSchema",
275
+ "documentation"
276
+ ]
277
+ },
278
+ "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"
293
+ },
294
+ "message": {
295
+ "description": "Success or error message",
296
+ "type": "string"
297
+ }
298
+ },
299
+ "required": [
300
+ "success",
301
+ "pluginId",
302
+ "version"
303
+ ]
304
+ }
305
+ },
306
+ "registry.plugin.get": {
307
+ "type": "returnable",
308
+ "category": "onReturnableEvents",
309
+ "description": "Get plugin details by org/name",
310
+ "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"
320
+ },
321
+ "version": {
322
+ "description": "Version (defaults to latest)",
323
+ "type": "string"
324
+ }
325
+ },
326
+ "required": [
327
+ "org",
328
+ "name"
329
+ ]
330
+ },
331
+ "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
+ }
412
+ },
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",
430
+ "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",
444
+ "properties": {
445
+ "name": {
446
+ "description": "Author name",
447
+ "type": "string",
448
+ "maxLength": 200
449
+ },
450
+ "email": {
451
+ "description": "Author email",
452
+ "type": "string",
453
+ "maxLength": 200
454
+ },
455
+ "url": {
456
+ "description": "Author homepage",
457
+ "type": "string",
458
+ "format": "uri"
459
+ }
460
+ },
461
+ "required": [
462
+ "name"
463
+ ]
464
+ }
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"
521
+ }
522
+ },
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"
557
+ ]
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"
571
+ },
572
+ "permission": {
573
+ "description": "Resource-level permission",
574
+ "type": "string",
575
+ "enum": [
576
+ "read",
577
+ "write"
578
+ ]
579
+ }
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
+ }
668
+ },
669
+ "required": []
670
+ }
671
+ },
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
+ ]
694
+ }
695
+ },
696
+ "registry.plugin.list": {
697
+ "type": "returnable",
698
+ "category": "onReturnableEvents",
699
+ "description": "List plugins with filtering",
700
+ "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
736
+ },
737
+ "offset": {
738
+ "description": "Pagination offset (default: 0)",
739
+ "type": "integer",
740
+ "format": "int32",
741
+ "minimum": 0,
742
+ "maximum": 2147483647
743
+ }
744
+ },
745
+ "required": []
746
+ },
747
+ "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
+ }
835
+ },
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",
853
+ "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",
867
+ "properties": {
868
+ "name": {
869
+ "description": "Author name",
870
+ "type": "string",
871
+ "maxLength": 200
872
+ },
873
+ "email": {
874
+ "description": "Author email",
875
+ "type": "string",
876
+ "maxLength": 200
877
+ },
878
+ "url": {
879
+ "description": "Author homepage",
880
+ "type": "string",
881
+ "format": "uri"
882
+ }
883
+ },
884
+ "required": [
885
+ "name"
886
+ ]
887
+ }
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"
944
+ }
945
+ },
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"
954
+ },
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"
980
+ ]
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"
994
+ },
995
+ "permission": {
996
+ "description": "Resource-level permission",
997
+ "type": "string",
998
+ "enum": [
999
+ "read",
1000
+ "write"
1001
+ ]
1002
+ }
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
+ }
1091
+ },
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
+ ]
1117
+ }
1118
+ },
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
+ }
1133
+ },
1134
+ "required": [
1135
+ "results",
1136
+ "total",
1137
+ "page"
1138
+ ]
1139
+ }
1140
+ },
1141
+ "registry.plugin.search": {
1142
+ "type": "returnable",
1143
+ "category": "onReturnableEvents",
1144
+ "description": "Search plugins by query",
1145
+ "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
1182
+ },
1183
+ "offset": {
1184
+ "description": "Pagination offset (default: 0)",
1185
+ "type": "integer",
1186
+ "format": "int32",
1187
+ "minimum": 0,
1188
+ "maximum": 2147483647
1189
+ }
1190
+ },
1191
+ "required": [
1192
+ "query"
1193
+ ]
1194
+ },
1195
+ "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
+ }
1283
+ },
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",
1301
+ "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",
1315
+ "properties": {
1316
+ "name": {
1317
+ "description": "Author name",
1318
+ "type": "string",
1319
+ "maxLength": 200
1320
+ },
1321
+ "email": {
1322
+ "description": "Author email",
1323
+ "type": "string",
1324
+ "maxLength": 200
1325
+ },
1326
+ "url": {
1327
+ "description": "Author homepage",
1328
+ "type": "string",
1329
+ "format": "uri"
1330
+ }
1331
+ },
1332
+ "required": [
1333
+ "name"
1334
+ ]
1335
+ }
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"
1392
+ }
1393
+ },
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"
1402
+ },
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"
1428
+ ]
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"
1442
+ },
1443
+ "permission": {
1444
+ "description": "Resource-level permission",
1445
+ "type": "string",
1446
+ "enum": [
1447
+ "read",
1448
+ "write"
1449
+ ]
1450
+ }
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
+ }
1539
+ },
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
+ ]
1565
+ }
1566
+ },
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
+ }
1578
+ },
1579
+ "required": [
1580
+ "results",
1581
+ "total",
1582
+ "query"
1583
+ ]
1584
+ }
1585
+ },
1586
+ "registry.plugin.delete": {
1587
+ "type": "returnable",
1588
+ "category": "onReturnableEvents",
1589
+ "description": "Delete a plugin or specific version",
1590
+ "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"
1600
+ },
1601
+ "version": {
1602
+ "description": "Version (or all if not provided)",
1603
+ "type": "string"
1604
+ }
1605
+ },
1606
+ "required": [
1607
+ "org",
1608
+ "name"
1609
+ ]
1610
+ },
1611
+ "outputSchema": {
1612
+ "type": "object",
1613
+ "properties": {
1614
+ "success": {
1615
+ "description": "Success status",
1616
+ "type": "boolean"
1617
+ },
1618
+ "deleted": {
1619
+ "description": "Number of versions deleted",
1620
+ "type": "integer",
1621
+ "format": "int32",
1622
+ "minimum": 0,
1623
+ "maximum": 2147483647
1624
+ }
1625
+ },
1626
+ "required": [
1627
+ "success",
1628
+ "deleted"
1629
+ ]
1630
+ }
1631
+ },
1632
+ "registry.plugin.versions": {
1633
+ "type": "returnable",
1634
+ "category": "onReturnableEvents",
1635
+ "description": "Get all versions of a plugin",
1636
+ "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"
1646
+ },
1647
+ "majorMinor": {
1648
+ "description": "Filter by major.minor",
1649
+ "type": "string"
1650
+ }
1651
+ },
1652
+ "required": [
1653
+ "org",
1654
+ "name"
1655
+ ]
1656
+ },
1657
+ "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"
1675
+ },
1676
+ "publishedAt": {
1677
+ "description": "Publication timestamp",
1678
+ "type": "string",
1679
+ "format": "datetime"
1680
+ }
1681
+ },
1682
+ "required": [
1683
+ "version",
1684
+ "majorMinor",
1685
+ "publishedAt"
1686
+ ]
1687
+ }
1688
+ },
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
+ }
1697
+ },
1698
+ "required": [
1699
+ "versions",
1700
+ "latest",
1701
+ "latestForMajorMinor"
1702
+ ]
1703
+ }
1704
+ },
1705
+ "registry.stats.get": {
1706
+ "type": "returnable",
1707
+ "category": "onReturnableEvents",
1708
+ "description": "Get registry statistics",
1709
+ "inputSchema": {
1710
+ "type": "object",
1711
+ "properties": {},
1712
+ "required": []
1713
+ },
1714
+ "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"
1732
+ },
1733
+ "totalDownloads": {
1734
+ "description": "Total downloads across all plugins",
1735
+ "type": "integer",
1736
+ "format": "int32",
1737
+ "minimum": 0,
1738
+ "maximum": 2147483647
1739
+ }
1740
+ },
1741
+ "required": [
1742
+ "totalPlugins",
1743
+ "byLanguage",
1744
+ "byCategory",
1745
+ "totalDownloads"
1746
+ ]
1747
+ }
1748
+ },
1749
+ "registry.auth.login": {
1750
+ "type": "returnable",
1751
+ "category": "onReturnableEvents",
1752
+ "description": "Authenticate user and get token",
1753
+ "inputSchema": {
1754
+ "type": "object",
1755
+ "properties": {
1756
+ "username": {
1757
+ "description": "Username",
1758
+ "type": "string"
1759
+ },
1760
+ "password": {
1761
+ "description": "Encrypted password",
1762
+ "type": "string"
1763
+ }
1764
+ },
1765
+ "required": [
1766
+ "username",
1767
+ "password"
1768
+ ]
1769
+ },
1770
+ "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"
1785
+ },
1786
+ "message": {
1787
+ "description": "Error message",
1788
+ "type": "string"
1789
+ }
1790
+ },
1791
+ "required": [
1792
+ "success"
1793
+ ]
1794
+ }
1795
+ },
1796
+ "registry.auth.verify": {
1797
+ "type": "returnable",
1798
+ "category": "onReturnableEvents",
1799
+ "description": "Verify authentication token",
1800
+ "inputSchema": {
1801
+ "type": "object",
1802
+ "properties": {
1803
+ "token": {
1804
+ "description": "Token to verify",
1805
+ "type": "string"
1806
+ }
1807
+ },
1808
+ "required": [
1809
+ "token"
1810
+ ]
1811
+ },
1812
+ "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"
1827
+ }
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
+ },
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
+ }
1869
+ },
1870
+ "required": [
1871
+ "requireAuth"
1872
+ ],
1873
+ "additionalProperties": false
1874
+ }
1875
+ },
1876
+ "required": [
1877
+ "database",
1878
+ "auth"
1879
+ ],
1880
+ "additionalProperties": false
1881
+ },
1882
+ "pluginType": "service"
1883
+ }