@sigma-file-manager/api 1.6.0 → 1.7.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.
@@ -1,586 +1,694 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://raw.githubusercontent.com/aleksey-hoffman/sigma-file-manager/main/packages/api/manifest.schema.json",
4
- "title": "Sigma File Manager Extension Manifest",
5
- "description": "Schema for Sigma File Manager extension package.json files",
6
- "type": "object",
7
- "required": [
8
- "id",
9
- "name",
10
- "version",
11
- "repository",
12
- "license",
13
- "extensionType",
14
- "main",
15
- "permissions",
16
- "engines"
17
- ],
18
- "properties": {
19
- "id": {
20
- "type": "string",
21
- "description": "Unique extension identifier in format 'publisher.extension-name'",
22
- "pattern": "^[a-z0-9-]+\\.[a-z0-9-]+$"
23
- },
24
- "name": {
25
- "type": "string",
26
- "description": "Display name of the extension"
27
- },
28
- "previousName": {
29
- "type": "string",
30
- "description": "Previous name of the extension (shown in extension details and used for search)"
31
- },
32
- "version": {
33
- "type": "string",
34
- "description": "Semantic version of the extension",
35
- "pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.]+)?$"
36
- },
37
- "publisher": {
38
- "type": "object",
39
- "description": "Extension publisher information",
40
- "required": [
41
- "name"
42
- ],
43
- "properties": {
44
- "name": {
45
- "type": "string",
46
- "description": "Publisher name"
47
- },
48
- "url": {
49
- "type": "string",
50
- "format": "uri",
51
- "description": "Publisher website URL"
52
- }
53
- }
54
- },
55
- "repository": {
56
- "type": "string",
57
- "format": "uri",
58
- "description": "GitHub repository URL"
59
- },
60
- "license": {
61
- "type": "string",
62
- "description": "SPDX license identifier"
63
- },
64
- "icon": {
65
- "type": "string",
66
- "description": "Relative path to extension icon"
67
- },
68
- "banner": {
69
- "type": "string",
70
- "description": "Relative path to banner image"
71
- },
72
- "media": {
73
- "type": "array",
74
- "description": "Preview images or videos for the extension detail overview (paths relative to the extension root, or absolute http(s) URLs)",
75
- "items": {
76
- "type": "object",
77
- "required": [
78
- "title",
79
- "src",
80
- "type"
81
- ],
82
- "properties": {
83
- "title": {
84
- "type": "string",
85
- "description": "Label shown under the preview"
86
- },
87
- "src": {
88
- "type": "string",
89
- "description": "Relative path to a file in the extension package, or an absolute http(s) URL"
90
- },
91
- "type": {
92
- "type": "string",
93
- "enum": [
94
- "image",
95
- "video"
96
- ],
97
- "description": "How the preview is rendered"
98
- }
99
- },
100
- "additionalProperties": false
101
- }
102
- },
103
- "categories": {
104
- "type": "array",
105
- "description": "Categories for extension classification",
106
- "items": {
107
- "type": "string",
108
- "enum": [
109
- "File Management",
110
- "Media",
111
- "Security",
112
- "Backup & Sync",
113
- "Productivity",
114
- "Search & Filter",
115
- "Appearance",
116
- "Integration",
117
- "Developer Tools",
118
- "Example",
119
- "Other"
120
- ]
121
- },
122
- "minItems": 1
123
- },
124
- "tags": {
125
- "type": "array",
126
- "description": "Keywords for discovery",
127
- "items": {
128
- "type": "string"
129
- }
130
- },
131
- "extensionType": {
132
- "type": "string",
133
- "description": "Extension execution type",
134
- "enum": [
135
- "api",
136
- "iframe",
137
- "webview"
138
- ],
139
- "enumDescriptions": [
140
- "API-only extension that runs JavaScript with access to the extension API",
141
- "Sandboxed iframe extension with postMessage communication",
142
- "Separate Tauri webview window for full page content"
143
- ]
144
- },
145
- "main": {
146
- "type": "string",
147
- "description": "Entry point file"
148
- },
149
- "permissions": {
150
- "type": "array",
151
- "description": "Permissions required by the extension",
152
- "items": {
153
- "type": "string",
154
- "enum": [
155
- "contextMenu",
156
- "sidebar",
157
- "toolbar",
158
- "commands",
159
- "fs.read",
160
- "fs.write",
161
- "notifications",
162
- "dialogs",
163
- "shell",
164
- "clipboard",
165
- "openUrl"
166
- ]
167
- }
168
- },
169
- "activationEvents": {
170
- "type": "array",
171
- "description": "Events that activate the extension",
172
- "items": {
173
- "type": "string",
174
- "anyOf": [
175
- {
176
- "enum": [
177
- "onStartup",
178
- "onInstall",
179
- "onUninstall",
180
- "onEnable",
181
- "onDisable",
182
- "onUpdate",
183
- "onLocaleChange"
184
- ]
185
- },
186
- {
187
- "pattern": "^onCommand:.+$"
188
- }
189
- ]
190
- }
191
- },
192
- "contributes": {
193
- "type": "object",
194
- "description": "Static contributions declared by the extension",
195
- "properties": {
196
- "commands": {
197
- "type": "array",
198
- "items": {
199
- "type": "object",
200
- "required": [
201
- "id",
202
- "title"
203
- ],
204
- "properties": {
205
- "id": {
206
- "type": "string"
207
- },
208
- "title": {
209
- "type": "string"
210
- },
211
- "description": {
212
- "type": "string"
213
- },
214
- "icon": {
215
- "type": "string"
216
- },
217
- "shortcut": {
218
- "type": "string"
219
- }
220
- }
221
- }
222
- },
223
- "contextMenu": {
224
- "type": "array",
225
- "items": {
226
- "type": "object",
227
- "required": [
228
- "id",
229
- "title"
230
- ],
231
- "properties": {
232
- "id": {
233
- "type": "string"
234
- },
235
- "title": {
236
- "type": "string"
237
- },
238
- "icon": {
239
- "type": "string"
240
- },
241
- "group": {
242
- "type": "string"
243
- },
244
- "order": {
245
- "type": "number"
246
- },
247
- "when": {
248
- "type": "object",
249
- "properties": {
250
- "selectionType": {
251
- "type": "string",
252
- "enum": [
253
- "single",
254
- "multiple",
255
- "any"
256
- ]
257
- },
258
- "entryType": {
259
- "type": "string",
260
- "enum": [
261
- "file",
262
- "directory",
263
- "any"
264
- ]
265
- },
266
- "fileExtensions": {
267
- "type": "array",
268
- "items": {
269
- "type": "string"
270
- }
271
- }
272
- }
273
- }
274
- }
275
- }
276
- },
277
- "sidebar": {
278
- "type": "array",
279
- "items": {
280
- "type": "object",
281
- "required": [
282
- "id",
283
- "title",
284
- "icon"
285
- ],
286
- "properties": {
287
- "id": {
288
- "type": "string"
289
- },
290
- "title": {
291
- "type": "string"
292
- },
293
- "icon": {
294
- "type": "string"
295
- },
296
- "order": {
297
- "type": "number"
298
- },
299
- "url": {
300
- "type": "string",
301
- "format": "uri"
302
- }
303
- }
304
- }
305
- },
306
- "toolbar": {
307
- "type": "array",
308
- "items": {
309
- "type": "object",
310
- "required": [
311
- "id",
312
- "title",
313
- "items"
314
- ],
315
- "properties": {
316
- "id": {
317
- "type": "string"
318
- },
319
- "title": {
320
- "type": "string"
321
- },
322
- "icon": {
323
- "type": "string"
324
- },
325
- "items": {
326
- "type": "array",
327
- "items": {
328
- "type": "object",
329
- "required": [
330
- "id",
331
- "title"
332
- ],
333
- "properties": {
334
- "id": {
335
- "type": "string"
336
- },
337
- "title": {
338
- "type": "string"
339
- },
340
- "icon": {
341
- "type": "string"
342
- },
343
- "commandId": {
344
- "type": "string"
345
- },
346
- "separator": {
347
- "type": "boolean"
348
- }
349
- }
350
- }
351
- }
352
- }
353
- }
354
- },
355
- "configuration": {
356
- "type": "object",
357
- "properties": {
358
- "title": {
359
- "type": "string"
360
- },
361
- "properties": {
362
- "type": "object",
363
- "additionalProperties": {
364
- "type": "object",
365
- "required": [
366
- "type"
367
- ],
368
- "properties": {
369
- "type": {
370
- "type": "string",
371
- "enum": [
372
- "string",
373
- "number",
374
- "boolean",
375
- "array"
376
- ]
377
- },
378
- "default": {},
379
- "description": {
380
- "type": "string"
381
- },
382
- "enum": {
383
- "type": "array",
384
- "items": {
385
- "type": [
386
- "string",
387
- "number"
388
- ]
389
- }
390
- },
391
- "enumDescriptions": {
392
- "type": "array",
393
- "items": {
394
- "type": "string"
395
- }
396
- },
397
- "minimum": {
398
- "type": "number"
399
- },
400
- "maximum": {
401
- "type": "number"
402
- },
403
- "minLength": {
404
- "type": "number"
405
- },
406
- "maxLength": {
407
- "type": "number"
408
- },
409
- "items": {
410
- "type": "object",
411
- "required": [
412
- "type"
413
- ],
414
- "properties": {
415
- "type": {
416
- "type": "string",
417
- "enum": [
418
- "string",
419
- "number"
420
- ]
421
- }
422
- }
423
- }
424
- }
425
- }
426
- }
427
- }
428
- },
429
- "keybindings": {
430
- "type": "array",
431
- "items": {
432
- "type": "object",
433
- "required": [
434
- "command",
435
- "key"
436
- ],
437
- "properties": {
438
- "command": {
439
- "type": "string"
440
- },
441
- "key": {
442
- "type": "string"
443
- },
444
- "when": {
445
- "type": "string",
446
- "enum": [
447
- "always",
448
- "fileSelected",
449
- "directorySelected",
450
- "singleSelected",
451
- "multipleSelected",
452
- "navigatorFocused"
453
- ]
454
- }
455
- }
456
- }
457
- }
458
- }
459
- },
460
- "platforms": {
461
- "type": "array",
462
- "description": "Supported operating systems",
463
- "items": {
464
- "type": "string",
465
- "enum": [
466
- "windows",
467
- "macos",
468
- "linux"
469
- ]
470
- },
471
- "minItems": 1,
472
- "uniqueItems": true
473
- },
474
- "binaries": {
475
- "type": "array",
476
- "description": "Binary definitions installed and managed by the host application",
477
- "items": {
478
- "type": "object",
479
- "required": [
480
- "id",
481
- "name",
482
- "version",
483
- "assets"
484
- ],
485
- "properties": {
486
- "id": {
487
- "type": "string",
488
- "description": "Unique binary identifier shared across extensions"
489
- },
490
- "name": {
491
- "type": "string",
492
- "description": "Display name of the binary"
493
- },
494
- "version": {
495
- "type": "string",
496
- "description": "Pinned binary version used for shared lookup and install",
497
- "minLength": 1
498
- },
499
- "executable": {
500
- "type": "string",
501
- "description": "Relative path to the executable inside the extracted directory"
502
- },
503
- "repository": {
504
- "type": "string",
505
- "format": "uri",
506
- "description": "Upstream repository URL for reference"
507
- },
508
- "platforms": {
509
- "type": "array",
510
- "items": {
511
- "type": "string",
512
- "enum": [
513
- "windows",
514
- "macos",
515
- "linux"
516
- ]
517
- },
518
- "minItems": 1,
519
- "uniqueItems": true
520
- },
521
- "assets": {
522
- "type": "array",
523
- "minItems": 1,
524
- "items": {
525
- "type": "object",
526
- "required": [
527
- "platform",
528
- "downloadUrl",
529
- "integrity"
530
- ],
531
- "properties": {
532
- "platform": {
533
- "type": "string",
534
- "enum": [
535
- "windows",
536
- "macos",
537
- "linux"
538
- ]
539
- },
540
- "arch": {
541
- "type": "array",
542
- "items": {
543
- "type": "string",
544
- "enum": [
545
- "x64",
546
- "arm64"
547
- ]
548
- },
549
- "minItems": 1,
550
- "uniqueItems": true
551
- },
552
- "downloadUrl": {
553
- "type": "string",
554
- "format": "uri"
555
- },
556
- "integrity": {
557
- "type": "string",
558
- "pattern": "^sha256:[a-fA-F0-9]{64}$"
559
- },
560
- "archive": {
561
- "type": "boolean"
562
- },
563
- "executable": {
564
- "type": "string"
565
- }
566
- }
567
- }
568
- }
569
- }
570
- }
571
- },
572
- "engines": {
573
- "type": "object",
574
- "description": "Version constraints",
575
- "required": [
576
- "sigmaFileManager"
577
- ],
578
- "properties": {
579
- "sigmaFileManager": {
580
- "type": "string",
581
- "description": "Required Sigma File Manager version range"
582
- }
583
- }
584
- }
585
- }
586
- }
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/aleksey-hoffman/sigma-file-manager/main/packages/api/manifest.schema.json",
4
+ "title": "Sigma File Manager Extension Manifest",
5
+ "description": "Schema for Sigma File Manager extension package.json files",
6
+ "type": "object",
7
+ "required": [
8
+ "id",
9
+ "name",
10
+ "version",
11
+ "repository",
12
+ "license",
13
+ "extensionType",
14
+ "permissions",
15
+ "engines"
16
+ ],
17
+ "allOf": [
18
+ {
19
+ "if": {
20
+ "properties": {
21
+ "extensionType": {
22
+ "enum": [
23
+ "iframe",
24
+ "webview"
25
+ ]
26
+ }
27
+ },
28
+ "required": [
29
+ "extensionType"
30
+ ]
31
+ },
32
+ "then": {
33
+ "required": [
34
+ "main"
35
+ ]
36
+ }
37
+ },
38
+ {
39
+ "if": {
40
+ "properties": {
41
+ "extensionType": {
42
+ "enum": [
43
+ "api"
44
+ ]
45
+ }
46
+ },
47
+ "required": [
48
+ "extensionType"
49
+ ]
50
+ },
51
+ "then": {
52
+ "anyOf": [
53
+ {
54
+ "required": [
55
+ "main"
56
+ ]
57
+ },
58
+ {
59
+ "required": [
60
+ "contributes"
61
+ ],
62
+ "properties": {
63
+ "contributes": {
64
+ "required": [
65
+ "themes"
66
+ ],
67
+ "additionalProperties": false,
68
+ "properties": {
69
+ "themes": {
70
+ "type": "array",
71
+ "minItems": 1
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ ]
78
+ }
79
+ }
80
+ ],
81
+ "properties": {
82
+ "id": {
83
+ "type": "string",
84
+ "description": "Unique extension identifier in format 'publisher.extension-name'",
85
+ "pattern": "^[a-z0-9-]+\\.[a-z0-9-]+$"
86
+ },
87
+ "name": {
88
+ "type": "string",
89
+ "description": "Display name of the extension"
90
+ },
91
+ "previousName": {
92
+ "type": "string",
93
+ "description": "Previous name of the extension (shown in extension details and used for search)"
94
+ },
95
+ "version": {
96
+ "type": "string",
97
+ "description": "Semantic version of the extension",
98
+ "pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.]+)?$"
99
+ },
100
+ "publisher": {
101
+ "type": "object",
102
+ "description": "Extension publisher information",
103
+ "required": [
104
+ "name"
105
+ ],
106
+ "properties": {
107
+ "name": {
108
+ "type": "string",
109
+ "description": "Publisher name"
110
+ },
111
+ "url": {
112
+ "type": "string",
113
+ "format": "uri",
114
+ "description": "Publisher website URL"
115
+ }
116
+ }
117
+ },
118
+ "repository": {
119
+ "type": "string",
120
+ "format": "uri",
121
+ "description": "GitHub repository URL"
122
+ },
123
+ "license": {
124
+ "type": "string",
125
+ "description": "SPDX license identifier"
126
+ },
127
+ "icon": {
128
+ "type": "string",
129
+ "description": "Relative path to extension icon"
130
+ },
131
+ "banner": {
132
+ "type": "string",
133
+ "description": "Relative path to banner image"
134
+ },
135
+ "media": {
136
+ "type": "array",
137
+ "description": "Preview images or videos for the extension detail overview (paths relative to the extension root, or absolute http(s) URLs)",
138
+ "items": {
139
+ "type": "object",
140
+ "required": [
141
+ "title",
142
+ "src",
143
+ "type"
144
+ ],
145
+ "properties": {
146
+ "title": {
147
+ "type": "string",
148
+ "description": "Label shown under the preview"
149
+ },
150
+ "src": {
151
+ "type": "string",
152
+ "description": "Relative path to a file in the extension package, or an absolute http(s) URL"
153
+ },
154
+ "type": {
155
+ "type": "string",
156
+ "enum": [
157
+ "image",
158
+ "video"
159
+ ],
160
+ "description": "How the preview is rendered"
161
+ }
162
+ },
163
+ "additionalProperties": false
164
+ }
165
+ },
166
+ "categories": {
167
+ "type": "array",
168
+ "description": "Categories for extension classification",
169
+ "items": {
170
+ "type": "string",
171
+ "enum": [
172
+ "File Management",
173
+ "Media",
174
+ "Security",
175
+ "Backup & Sync",
176
+ "Productivity",
177
+ "Search & Filter",
178
+ "Appearance",
179
+ "Integration",
180
+ "Developer Tools",
181
+ "Example",
182
+ "Other"
183
+ ]
184
+ },
185
+ "minItems": 1
186
+ },
187
+ "tags": {
188
+ "type": "array",
189
+ "description": "Keywords for discovery",
190
+ "items": {
191
+ "type": "string"
192
+ }
193
+ },
194
+ "extensionType": {
195
+ "type": "string",
196
+ "description": "Extension execution type",
197
+ "enum": [
198
+ "api",
199
+ "iframe",
200
+ "webview"
201
+ ],
202
+ "enumDescriptions": [
203
+ "API-only extension that runs JavaScript with access to the extension API",
204
+ "Sandboxed iframe extension with postMessage communication",
205
+ "Separate Tauri webview window for full page content"
206
+ ]
207
+ },
208
+ "main": {
209
+ "type": "string",
210
+ "description": "Entry point file. Required for iframe/webview extensions and API extensions that run code."
211
+ },
212
+ "permissions": {
213
+ "type": "array",
214
+ "description": "Permissions required by the extension",
215
+ "items": {
216
+ "type": "string",
217
+ "enum": [
218
+ "contextMenu",
219
+ "sidebar",
220
+ "toolbar",
221
+ "commands",
222
+ "fs.read",
223
+ "fs.write",
224
+ "notifications",
225
+ "dialogs",
226
+ "shell",
227
+ "clipboard",
228
+ "openUrl"
229
+ ]
230
+ }
231
+ },
232
+ "activationEvents": {
233
+ "type": "array",
234
+ "description": "Events that activate the extension",
235
+ "items": {
236
+ "type": "string",
237
+ "anyOf": [
238
+ {
239
+ "enum": [
240
+ "onStartup",
241
+ "onInstall",
242
+ "onUninstall",
243
+ "onEnable",
244
+ "onDisable",
245
+ "onUpdate",
246
+ "onLocaleChange"
247
+ ]
248
+ },
249
+ {
250
+ "pattern": "^onCommand:.+$"
251
+ }
252
+ ]
253
+ }
254
+ },
255
+ "contributes": {
256
+ "type": "object",
257
+ "description": "Static contributions declared by the extension",
258
+ "properties": {
259
+ "commands": {
260
+ "type": "array",
261
+ "items": {
262
+ "type": "object",
263
+ "required": [
264
+ "id",
265
+ "title"
266
+ ],
267
+ "properties": {
268
+ "id": {
269
+ "type": "string"
270
+ },
271
+ "title": {
272
+ "type": "string"
273
+ },
274
+ "description": {
275
+ "type": "string"
276
+ },
277
+ "icon": {
278
+ "type": "string"
279
+ },
280
+ "shortcut": {
281
+ "type": "string"
282
+ }
283
+ }
284
+ }
285
+ },
286
+ "contextMenu": {
287
+ "type": "array",
288
+ "items": {
289
+ "type": "object",
290
+ "required": [
291
+ "id",
292
+ "title"
293
+ ],
294
+ "properties": {
295
+ "id": {
296
+ "type": "string"
297
+ },
298
+ "title": {
299
+ "type": "string"
300
+ },
301
+ "icon": {
302
+ "type": "string"
303
+ },
304
+ "group": {
305
+ "type": "string"
306
+ },
307
+ "order": {
308
+ "type": "number"
309
+ },
310
+ "when": {
311
+ "type": "object",
312
+ "properties": {
313
+ "selectionType": {
314
+ "type": "string",
315
+ "enum": [
316
+ "single",
317
+ "multiple",
318
+ "any"
319
+ ]
320
+ },
321
+ "entryType": {
322
+ "type": "string",
323
+ "enum": [
324
+ "file",
325
+ "directory",
326
+ "any"
327
+ ]
328
+ },
329
+ "fileExtensions": {
330
+ "type": "array",
331
+ "items": {
332
+ "type": "string"
333
+ }
334
+ }
335
+ }
336
+ }
337
+ }
338
+ }
339
+ },
340
+ "sidebar": {
341
+ "type": "array",
342
+ "items": {
343
+ "type": "object",
344
+ "required": [
345
+ "id",
346
+ "title",
347
+ "icon"
348
+ ],
349
+ "properties": {
350
+ "id": {
351
+ "type": "string"
352
+ },
353
+ "title": {
354
+ "type": "string"
355
+ },
356
+ "icon": {
357
+ "type": "string"
358
+ },
359
+ "order": {
360
+ "type": "number"
361
+ },
362
+ "url": {
363
+ "type": "string"
364
+ },
365
+ "shortcutCommandId": {
366
+ "type": "string"
367
+ }
368
+ }
369
+ }
370
+ },
371
+ "toolbar": {
372
+ "type": "array",
373
+ "items": {
374
+ "type": "object",
375
+ "required": [
376
+ "id",
377
+ "title",
378
+ "items"
379
+ ],
380
+ "properties": {
381
+ "id": {
382
+ "type": "string"
383
+ },
384
+ "title": {
385
+ "type": "string"
386
+ },
387
+ "icon": {
388
+ "type": "string"
389
+ },
390
+ "items": {
391
+ "type": "array",
392
+ "items": {
393
+ "type": "object",
394
+ "required": [
395
+ "id",
396
+ "title"
397
+ ],
398
+ "properties": {
399
+ "id": {
400
+ "type": "string"
401
+ },
402
+ "title": {
403
+ "type": "string"
404
+ },
405
+ "icon": {
406
+ "type": "string"
407
+ },
408
+ "commandId": {
409
+ "type": "string"
410
+ },
411
+ "separator": {
412
+ "type": "boolean"
413
+ }
414
+ }
415
+ }
416
+ }
417
+ }
418
+ }
419
+ },
420
+ "themes": {
421
+ "type": "array",
422
+ "items": {
423
+ "type": "object",
424
+ "required": [
425
+ "id",
426
+ "title",
427
+ "baseTheme",
428
+ "variables"
429
+ ],
430
+ "properties": {
431
+ "id": {
432
+ "type": "string",
433
+ "pattern": "^[a-z0-9-]+$"
434
+ },
435
+ "title": {
436
+ "type": "string"
437
+ },
438
+ "description": {
439
+ "type": "string"
440
+ },
441
+ "baseTheme": {
442
+ "type": "string",
443
+ "enum": [
444
+ "light",
445
+ "dark"
446
+ ]
447
+ },
448
+ "variables": {
449
+ "type": "object",
450
+ "minProperties": 1,
451
+ "propertyNames": {
452
+ "type": "string",
453
+ "pattern": "^--[a-zA-Z0-9-]+$"
454
+ },
455
+ "additionalProperties": {
456
+ "type": "string",
457
+ "minLength": 1
458
+ }
459
+ }
460
+ }
461
+ }
462
+ },
463
+ "configuration": {
464
+ "type": "object",
465
+ "properties": {
466
+ "title": {
467
+ "type": "string"
468
+ },
469
+ "properties": {
470
+ "type": "object",
471
+ "additionalProperties": {
472
+ "type": "object",
473
+ "required": [
474
+ "type"
475
+ ],
476
+ "properties": {
477
+ "type": {
478
+ "type": "string",
479
+ "enum": [
480
+ "string",
481
+ "number",
482
+ "boolean",
483
+ "array"
484
+ ]
485
+ },
486
+ "default": {},
487
+ "description": {
488
+ "type": "string"
489
+ },
490
+ "enum": {
491
+ "type": "array",
492
+ "items": {
493
+ "type": [
494
+ "string",
495
+ "number"
496
+ ]
497
+ }
498
+ },
499
+ "enumDescriptions": {
500
+ "type": "array",
501
+ "items": {
502
+ "type": "string"
503
+ }
504
+ },
505
+ "minimum": {
506
+ "type": "number"
507
+ },
508
+ "maximum": {
509
+ "type": "number"
510
+ },
511
+ "minLength": {
512
+ "type": "number"
513
+ },
514
+ "maxLength": {
515
+ "type": "number"
516
+ },
517
+ "items": {
518
+ "type": "object",
519
+ "required": [
520
+ "type"
521
+ ],
522
+ "properties": {
523
+ "type": {
524
+ "type": "string",
525
+ "enum": [
526
+ "string",
527
+ "number"
528
+ ]
529
+ }
530
+ }
531
+ }
532
+ }
533
+ }
534
+ }
535
+ }
536
+ },
537
+ "keybindings": {
538
+ "type": "array",
539
+ "items": {
540
+ "type": "object",
541
+ "required": [
542
+ "command",
543
+ "key"
544
+ ],
545
+ "properties": {
546
+ "command": {
547
+ "type": "string"
548
+ },
549
+ "key": {
550
+ "type": "string"
551
+ },
552
+ "when": {
553
+ "type": "string",
554
+ "enum": [
555
+ "always",
556
+ "fileSelected",
557
+ "directorySelected",
558
+ "singleSelected",
559
+ "multipleSelected",
560
+ "navigatorFocused"
561
+ ]
562
+ }
563
+ }
564
+ }
565
+ }
566
+ }
567
+ },
568
+ "platforms": {
569
+ "type": "array",
570
+ "description": "Supported operating systems",
571
+ "items": {
572
+ "type": "string",
573
+ "enum": [
574
+ "windows",
575
+ "macos",
576
+ "linux"
577
+ ]
578
+ },
579
+ "minItems": 1,
580
+ "uniqueItems": true
581
+ },
582
+ "binaries": {
583
+ "type": "array",
584
+ "description": "Binary definitions installed and managed by the host application",
585
+ "items": {
586
+ "type": "object",
587
+ "required": [
588
+ "id",
589
+ "name",
590
+ "version",
591
+ "assets"
592
+ ],
593
+ "properties": {
594
+ "id": {
595
+ "type": "string",
596
+ "description": "Unique binary identifier shared across extensions"
597
+ },
598
+ "name": {
599
+ "type": "string",
600
+ "description": "Display name of the binary"
601
+ },
602
+ "version": {
603
+ "type": "string",
604
+ "description": "Pinned binary version used for shared lookup and install",
605
+ "minLength": 1
606
+ },
607
+ "executable": {
608
+ "type": "string",
609
+ "description": "Relative path to the executable inside the extracted directory"
610
+ },
611
+ "repository": {
612
+ "type": "string",
613
+ "format": "uri",
614
+ "description": "Upstream repository URL for reference"
615
+ },
616
+ "platforms": {
617
+ "type": "array",
618
+ "items": {
619
+ "type": "string",
620
+ "enum": [
621
+ "windows",
622
+ "macos",
623
+ "linux"
624
+ ]
625
+ },
626
+ "minItems": 1,
627
+ "uniqueItems": true
628
+ },
629
+ "assets": {
630
+ "type": "array",
631
+ "minItems": 1,
632
+ "items": {
633
+ "type": "object",
634
+ "required": [
635
+ "platform",
636
+ "downloadUrl",
637
+ "integrity"
638
+ ],
639
+ "properties": {
640
+ "platform": {
641
+ "type": "string",
642
+ "enum": [
643
+ "windows",
644
+ "macos",
645
+ "linux"
646
+ ]
647
+ },
648
+ "arch": {
649
+ "type": "array",
650
+ "items": {
651
+ "type": "string",
652
+ "enum": [
653
+ "x64",
654
+ "arm64"
655
+ ]
656
+ },
657
+ "minItems": 1,
658
+ "uniqueItems": true
659
+ },
660
+ "downloadUrl": {
661
+ "type": "string",
662
+ "format": "uri"
663
+ },
664
+ "integrity": {
665
+ "type": "string",
666
+ "pattern": "^sha256:[a-fA-F0-9]{64}$"
667
+ },
668
+ "archive": {
669
+ "type": "boolean"
670
+ },
671
+ "executable": {
672
+ "type": "string"
673
+ }
674
+ }
675
+ }
676
+ }
677
+ }
678
+ }
679
+ },
680
+ "engines": {
681
+ "type": "object",
682
+ "description": "Version constraints",
683
+ "required": [
684
+ "sigmaFileManager"
685
+ ],
686
+ "properties": {
687
+ "sigmaFileManager": {
688
+ "type": "string",
689
+ "description": "Required Sigma File Manager version range"
690
+ }
691
+ }
692
+ }
693
+ }
694
+ }