synapse-sdk 1.0.0a59__py3-none-any.whl → 1.0.0a61__py3-none-any.whl
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.
Potentially problematic release.
This version of synapse-sdk might be problematic. Click here for more details.
- synapse_sdk/cli/__init__.py +246 -5
- synapse_sdk/cli/alias/utils.py +1 -1
- synapse_sdk/cli/config.py +339 -0
- synapse_sdk/cli/devtools.py +61 -0
- synapse_sdk/cli/plugin/publish.py +3 -4
- synapse_sdk/clients/agent/__init__.py +7 -2
- synapse_sdk/clients/agent/ray.py +37 -6
- synapse_sdk/clients/backend/__init__.py +5 -9
- synapse_sdk/clients/backend/annotation.py +4 -0
- synapse_sdk/clients/base.py +42 -3
- synapse_sdk/devtools/__init__.py +0 -0
- synapse_sdk/devtools/config.py +94 -0
- synapse_sdk/devtools/docs/.gitignore +20 -0
- synapse_sdk/devtools/docs/README.md +41 -0
- synapse_sdk/devtools/docs/blog/2019-05-28-first-blog-post.md +12 -0
- synapse_sdk/devtools/docs/blog/2019-05-29-long-blog-post.md +44 -0
- synapse_sdk/devtools/docs/blog/2021-08-01-mdx-blog-post.mdx +24 -0
- synapse_sdk/devtools/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
- synapse_sdk/devtools/docs/blog/2021-08-26-welcome/index.md +29 -0
- synapse_sdk/devtools/docs/blog/authors.yml +25 -0
- synapse_sdk/devtools/docs/blog/tags.yml +19 -0
- synapse_sdk/devtools/docs/docusaurus.config.ts +138 -0
- synapse_sdk/devtools/docs/package-lock.json +17455 -0
- synapse_sdk/devtools/docs/package.json +47 -0
- synapse_sdk/devtools/docs/sidebars.ts +36 -0
- synapse_sdk/devtools/docs/src/components/HomepageFeatures/index.tsx +71 -0
- synapse_sdk/devtools/docs/src/components/HomepageFeatures/styles.module.css +11 -0
- synapse_sdk/devtools/docs/src/css/custom.css +30 -0
- synapse_sdk/devtools/docs/src/pages/index.module.css +23 -0
- synapse_sdk/devtools/docs/src/pages/index.tsx +21 -0
- synapse_sdk/devtools/docs/src/pages/markdown-page.md +7 -0
- synapse_sdk/devtools/docs/static/.nojekyll +0 -0
- synapse_sdk/devtools/docs/static/img/docusaurus-social-card.jpg +0 -0
- synapse_sdk/devtools/docs/static/img/docusaurus.png +0 -0
- synapse_sdk/devtools/docs/static/img/favicon.ico +0 -0
- synapse_sdk/devtools/docs/static/img/logo.png +0 -0
- synapse_sdk/devtools/docs/static/img/undraw_docusaurus_mountain.svg +171 -0
- synapse_sdk/devtools/docs/static/img/undraw_docusaurus_react.svg +170 -0
- synapse_sdk/devtools/docs/static/img/undraw_docusaurus_tree.svg +40 -0
- synapse_sdk/devtools/docs/tsconfig.json +8 -0
- synapse_sdk/devtools/models.py +55 -0
- synapse_sdk/devtools/server.py +829 -0
- synapse_sdk/devtools/web/.gitignore +2 -0
- synapse_sdk/devtools/web/README.md +34 -0
- synapse_sdk/devtools/web/dist/index.html +17 -0
- synapse_sdk/devtools/web/index.html +16 -0
- synapse_sdk/devtools/web/jsconfig.json +15 -0
- synapse_sdk/devtools/web/package-lock.json +2609 -0
- synapse_sdk/devtools/web/package.json +27 -0
- synapse_sdk/devtools/web/pnpm-lock.yaml +1055 -0
- synapse_sdk/devtools/web/src/App.jsx +14 -0
- synapse_sdk/devtools/web/src/App.module.css +33 -0
- synapse_sdk/devtools/web/src/assets/favicon.ico +0 -0
- synapse_sdk/devtools/web/src/components/Breadcrumbs.jsx +42 -0
- synapse_sdk/devtools/web/src/components/Layout.jsx +12 -0
- synapse_sdk/devtools/web/src/components/LogViewer.jsx +266 -0
- synapse_sdk/devtools/web/src/components/MessageViewer.jsx +150 -0
- synapse_sdk/devtools/web/src/components/NavigationSidebar.jsx +137 -0
- synapse_sdk/devtools/web/src/components/ServerStatusBar.jsx +245 -0
- synapse_sdk/devtools/web/src/components/icons.jsx +325 -0
- synapse_sdk/devtools/web/src/index.css +470 -0
- synapse_sdk/devtools/web/src/index.jsx +15 -0
- synapse_sdk/devtools/web/src/logo.svg +1 -0
- synapse_sdk/devtools/web/src/router.jsx +34 -0
- synapse_sdk/devtools/web/src/utils/api.js +425 -0
- synapse_sdk/devtools/web/src/views/ApplicationDetailView.jsx +241 -0
- synapse_sdk/devtools/web/src/views/ApplicationsView.jsx +224 -0
- synapse_sdk/devtools/web/src/views/HomeView.jsx +197 -0
- synapse_sdk/devtools/web/src/views/JobDetailView.jsx +310 -0
- synapse_sdk/devtools/web/src/views/PluginView.jsx +914 -0
- synapse_sdk/devtools/web/vite.config.js +13 -0
- synapse_sdk/plugins/categories/neural_net/actions/tune.py +1 -1
- synapse_sdk/plugins/categories/neural_net/templates/config.yaml +15 -3
- synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +26 -10
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task.py +236 -64
- synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +14 -2
- synapse_sdk/plugins/templates/plugin-config-schema.json +409 -0
- synapse_sdk/plugins/templates/schema.json +484 -0
- synapse_sdk/utils/converters/__init__.py +145 -0
- synapse_sdk/utils/converters/coco/__init__.py +0 -0
- synapse_sdk/utils/converters/coco/from_dm.py +269 -0
- {synapse_sdk-1.0.0a59.dist-info → synapse_sdk-1.0.0a61.dist-info}/METADATA +9 -22
- {synapse_sdk-1.0.0a59.dist-info → synapse_sdk-1.0.0a61.dist-info}/RECORD +87 -19
- {synapse_sdk-1.0.0a59.dist-info → synapse_sdk-1.0.0a61.dist-info}/WHEEL +0 -0
- {synapse_sdk-1.0.0a59.dist-info → synapse_sdk-1.0.0a61.dist-info}/entry_points.txt +0 -0
- {synapse_sdk-1.0.0a59.dist-info → synapse_sdk-1.0.0a61.dist-info}/licenses/LICENSE +0 -0
- {synapse_sdk-1.0.0a59.dist-info → synapse_sdk-1.0.0a61.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://synapse-sdk.com/schemas/plugin-config.json",
|
|
4
|
+
"title": "Synapse SDK Plugin Configuration",
|
|
5
|
+
"description": "JSON Schema for validating Synapse SDK plugin config.yaml files",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["name", "code", "version", "category"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"name": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Human-readable name of the plugin",
|
|
13
|
+
"minLength": 1
|
|
14
|
+
},
|
|
15
|
+
"code": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "Unique identifier for the plugin",
|
|
18
|
+
"minLength": 1,
|
|
19
|
+
"pattern": "^[a-z0-9_-]+$"
|
|
20
|
+
},
|
|
21
|
+
"version": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "Version of the plugin following semantic versioning",
|
|
24
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)?$"
|
|
25
|
+
},
|
|
26
|
+
"description": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"description": "Description of what the plugin does"
|
|
29
|
+
},
|
|
30
|
+
"readme": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"description": "Path to the README file",
|
|
33
|
+
"default": "README.md"
|
|
34
|
+
},
|
|
35
|
+
"category": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"description": "Category of the plugin",
|
|
38
|
+
"enum": [
|
|
39
|
+
"neural_net",
|
|
40
|
+
"export",
|
|
41
|
+
"upload",
|
|
42
|
+
"smart_tool",
|
|
43
|
+
"post_annotation",
|
|
44
|
+
"pre_annotation",
|
|
45
|
+
"data_validation"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"package_manager": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"description": "Package manager to use for dependencies",
|
|
51
|
+
"enum": ["pip", "uv"],
|
|
52
|
+
"default": "pip"
|
|
53
|
+
},
|
|
54
|
+
"data_type": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"description": "Primary data type the plugin works with",
|
|
57
|
+
"enum": ["image", "text", "video", "pcd", "audio"]
|
|
58
|
+
},
|
|
59
|
+
"task": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"description": "Primary task type (legacy field, use tasks array instead)"
|
|
62
|
+
},
|
|
63
|
+
"tasks": {
|
|
64
|
+
"type": "array",
|
|
65
|
+
"description": "Array of tasks the plugin supports",
|
|
66
|
+
"items": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"pattern": "^(image|text|video|pcd|audio)\\.(object_detection|classification|segmentation|regression|generation|translation|analysis)$"
|
|
69
|
+
},
|
|
70
|
+
"uniqueItems": true
|
|
71
|
+
},
|
|
72
|
+
"annotation_category": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"description": "Annotation category for smart tools",
|
|
75
|
+
"enum": ["image", "text", "video", "pcd", "audio"]
|
|
76
|
+
},
|
|
77
|
+
"annotation_type": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"description": "Type of annotation for smart tools",
|
|
80
|
+
"enum": ["polygon", "bbox", "point", "line", "mask", "keypoint", "text"]
|
|
81
|
+
},
|
|
82
|
+
"smart_tool": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"description": "Type of smart tool",
|
|
85
|
+
"enum": ["interactive_segmentation", "auto_labeling", "assisted_annotation"]
|
|
86
|
+
},
|
|
87
|
+
"actions": {
|
|
88
|
+
"type": "object",
|
|
89
|
+
"description": "Configuration for plugin actions",
|
|
90
|
+
"minProperties": 1,
|
|
91
|
+
"additionalProperties": {
|
|
92
|
+
"type": "object",
|
|
93
|
+
"required": ["entrypoint"],
|
|
94
|
+
"additionalProperties": false,
|
|
95
|
+
"properties": {
|
|
96
|
+
"entrypoint": {
|
|
97
|
+
"type": "string",
|
|
98
|
+
"description": "Python module path to the action implementation",
|
|
99
|
+
"pattern": "^[a-zA-Z_][a-zA-Z0-9_.]*\\.[a-zA-Z_][a-zA-Z0-9_]*$"
|
|
100
|
+
},
|
|
101
|
+
"method": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"description": "Execution method for the action",
|
|
104
|
+
"enum": ["job", "task", "restapi"],
|
|
105
|
+
"default": "job"
|
|
106
|
+
},
|
|
107
|
+
"dataset": {
|
|
108
|
+
"type": "string",
|
|
109
|
+
"description": "Dataset parameter name for training actions",
|
|
110
|
+
"default": "dataset"
|
|
111
|
+
},
|
|
112
|
+
"directory": {
|
|
113
|
+
"type": "string",
|
|
114
|
+
"description": "Directory path for gradio or other UI-based actions"
|
|
115
|
+
},
|
|
116
|
+
"model": {
|
|
117
|
+
"type": "object",
|
|
118
|
+
"description": "Model configuration for smart tools",
|
|
119
|
+
"additionalProperties": true,
|
|
120
|
+
"properties": {
|
|
121
|
+
"neural_net__plugin__code": {
|
|
122
|
+
"type": "string",
|
|
123
|
+
"description": "Neural network plugin code to use"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"endpoints": {
|
|
128
|
+
"type": "array",
|
|
129
|
+
"description": "REST API endpoints configuration",
|
|
130
|
+
"items": {
|
|
131
|
+
"type": "object",
|
|
132
|
+
"required": ["method"],
|
|
133
|
+
"additionalProperties": false,
|
|
134
|
+
"properties": {
|
|
135
|
+
"method": {
|
|
136
|
+
"type": "string",
|
|
137
|
+
"enum": ["get", "post", "put", "patch", "delete"],
|
|
138
|
+
"description": "HTTP method"
|
|
139
|
+
},
|
|
140
|
+
"path": {
|
|
141
|
+
"type": "string",
|
|
142
|
+
"description": "Endpoint path"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
"hyperparameters": {
|
|
148
|
+
"type": "object",
|
|
149
|
+
"description": "Hyperparameter configuration for training",
|
|
150
|
+
"additionalProperties": false,
|
|
151
|
+
"properties": {
|
|
152
|
+
"ui_schema": {
|
|
153
|
+
"type": "string",
|
|
154
|
+
"description": "FormKit schema for hyperparameter UI (YAML string)"
|
|
155
|
+
},
|
|
156
|
+
"ui_schemas": {
|
|
157
|
+
"type": "array",
|
|
158
|
+
"description": "Array of FormKit schema objects for hyperparameters",
|
|
159
|
+
"items": {
|
|
160
|
+
"type": "object",
|
|
161
|
+
"additionalProperties": true
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"metrics": {
|
|
167
|
+
"type": "object",
|
|
168
|
+
"description": "Metrics configuration for training monitoring",
|
|
169
|
+
"additionalProperties": {
|
|
170
|
+
"type": "object",
|
|
171
|
+
"additionalProperties": {
|
|
172
|
+
"oneOf": [
|
|
173
|
+
{
|
|
174
|
+
"type": "array",
|
|
175
|
+
"items": {
|
|
176
|
+
"type": "string"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"type": "object",
|
|
181
|
+
"additionalProperties": {
|
|
182
|
+
"type": "object",
|
|
183
|
+
"properties": {
|
|
184
|
+
"name": {
|
|
185
|
+
"type": "string",
|
|
186
|
+
"description": "Display name for the metric"
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"visualizations": {
|
|
196
|
+
"type": "object",
|
|
197
|
+
"description": "Visualization configuration for training monitoring",
|
|
198
|
+
"additionalProperties": {
|
|
199
|
+
"type": "object",
|
|
200
|
+
"required": ["type"],
|
|
201
|
+
"properties": {
|
|
202
|
+
"name": {
|
|
203
|
+
"type": "string",
|
|
204
|
+
"description": "Display name for the visualization"
|
|
205
|
+
},
|
|
206
|
+
"type": {
|
|
207
|
+
"type": "string",
|
|
208
|
+
"enum": ["image_grid_group", "line_chart", "scatter_plot"],
|
|
209
|
+
"description": "Type of visualization"
|
|
210
|
+
},
|
|
211
|
+
"options": {
|
|
212
|
+
"type": "object",
|
|
213
|
+
"description": "Visualization-specific options",
|
|
214
|
+
"properties": {
|
|
215
|
+
"group_name": {
|
|
216
|
+
"type": "string",
|
|
217
|
+
"description": "Name for grouping visualizations"
|
|
218
|
+
},
|
|
219
|
+
"thumbnail_size": {
|
|
220
|
+
"type": "array",
|
|
221
|
+
"items": {
|
|
222
|
+
"type": "integer",
|
|
223
|
+
"minimum": 1
|
|
224
|
+
},
|
|
225
|
+
"minItems": 2,
|
|
226
|
+
"maxItems": 2,
|
|
227
|
+
"description": "Thumbnail dimensions [width, height]"
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
"additionalProperties": true
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"options": {
|
|
236
|
+
"type": "object",
|
|
237
|
+
"description": "Action-specific options",
|
|
238
|
+
"additionalProperties": true,
|
|
239
|
+
"properties": {
|
|
240
|
+
"visualize": {
|
|
241
|
+
"type": "boolean",
|
|
242
|
+
"description": "Whether to enable visualization for training",
|
|
243
|
+
"default": false
|
|
244
|
+
},
|
|
245
|
+
"allow_generate_tasks": {
|
|
246
|
+
"type": "boolean",
|
|
247
|
+
"description": "Allow the plugin to generate tasks for uploaded data",
|
|
248
|
+
"default": false
|
|
249
|
+
},
|
|
250
|
+
"allow_generate_ground_truths": {
|
|
251
|
+
"type": "boolean",
|
|
252
|
+
"description": "Allow the plugin to generate ground truths for uploaded data",
|
|
253
|
+
"default": false
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"supported_data_type": {
|
|
258
|
+
"type": "string",
|
|
259
|
+
"description": "Primary data type supported by upload plugins",
|
|
260
|
+
"enum": ["image", "text", "video", "pcd", "audio"]
|
|
261
|
+
},
|
|
262
|
+
"ui_schema": {
|
|
263
|
+
"type": "string",
|
|
264
|
+
"description": "FormKit schema for action-specific UI options (YAML string)"
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
"allOf": [
|
|
271
|
+
{
|
|
272
|
+
"if": {
|
|
273
|
+
"properties": {
|
|
274
|
+
"category": {
|
|
275
|
+
"const": "neural_net"
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
"then": {
|
|
280
|
+
"properties": {
|
|
281
|
+
"data_type": {
|
|
282
|
+
"type": "string"
|
|
283
|
+
},
|
|
284
|
+
"tasks": {
|
|
285
|
+
"type": "array",
|
|
286
|
+
"minItems": 1
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"if": {
|
|
293
|
+
"properties": {
|
|
294
|
+
"category": {
|
|
295
|
+
"const": "smart_tool"
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
"then": {
|
|
300
|
+
"properties": {
|
|
301
|
+
"annotation_category": {
|
|
302
|
+
"type": "string"
|
|
303
|
+
},
|
|
304
|
+
"annotation_type": {
|
|
305
|
+
"type": "string"
|
|
306
|
+
},
|
|
307
|
+
"smart_tool": {
|
|
308
|
+
"type": "string"
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"if": {
|
|
315
|
+
"properties": {
|
|
316
|
+
"category": {
|
|
317
|
+
"const": "upload"
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
"then": {
|
|
322
|
+
"properties": {
|
|
323
|
+
"actions": {
|
|
324
|
+
"type": "object",
|
|
325
|
+
"properties": {
|
|
326
|
+
"upload": {
|
|
327
|
+
"type": "object",
|
|
328
|
+
"properties": {
|
|
329
|
+
"supported_data_type": {
|
|
330
|
+
"type": "string"
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
],
|
|
340
|
+
"examples": [
|
|
341
|
+
{
|
|
342
|
+
"name": "YOLO Object Detection",
|
|
343
|
+
"code": "yolo11",
|
|
344
|
+
"version": "0.1.0",
|
|
345
|
+
"description": "YOLO v11 object detection plugin",
|
|
346
|
+
"category": "neural_net",
|
|
347
|
+
"package_manager": "uv",
|
|
348
|
+
"data_type": "image",
|
|
349
|
+
"tasks": ["image.object_detection"],
|
|
350
|
+
"actions": {
|
|
351
|
+
"train": {
|
|
352
|
+
"entrypoint": "plugin.train.train",
|
|
353
|
+
"dataset": "dataset",
|
|
354
|
+
"hyperparameters": {
|
|
355
|
+
"ui_schema": "# FormKit schema YAML"
|
|
356
|
+
},
|
|
357
|
+
"metrics": {
|
|
358
|
+
"epoch": ["loss", "miou"]
|
|
359
|
+
},
|
|
360
|
+
"options": {
|
|
361
|
+
"visualize": false
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
"inference": {
|
|
365
|
+
"method": "restapi",
|
|
366
|
+
"endpoints": [
|
|
367
|
+
{
|
|
368
|
+
"method": "get"
|
|
369
|
+
}
|
|
370
|
+
]
|
|
371
|
+
},
|
|
372
|
+
"deployment": {
|
|
373
|
+
"entrypoint": "plugin.inference.MockNetInference"
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"name": "Smart Segmentation Tool",
|
|
379
|
+
"code": "sam2-tool",
|
|
380
|
+
"version": "1.0.0",
|
|
381
|
+
"description": "Interactive segmentation smart tool",
|
|
382
|
+
"category": "smart_tool",
|
|
383
|
+
"annotation_category": "image",
|
|
384
|
+
"annotation_type": "polygon",
|
|
385
|
+
"smart_tool": "interactive_segmentation",
|
|
386
|
+
"actions": {
|
|
387
|
+
"auto_label": {
|
|
388
|
+
"entrypoint": "plugin.auto_label.MyAutoLabel",
|
|
389
|
+
"model": {
|
|
390
|
+
"neural_net__plugin__code": "sam2"
|
|
391
|
+
},
|
|
392
|
+
"ui_schema": "# FormKit schema for auto_label"
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"name": "Data Export Plugin",
|
|
398
|
+
"code": "coco-export",
|
|
399
|
+
"version": "1.0.0",
|
|
400
|
+
"description": "Export annotations in COCO format",
|
|
401
|
+
"category": "export",
|
|
402
|
+
"actions": {
|
|
403
|
+
"export": {
|
|
404
|
+
"entrypoint": "plugin.export.export"
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
]
|
|
409
|
+
}
|