synapse-sdk 1.0.0a23__py3-none-any.whl → 2025.12.3__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.
Files changed (228) hide show
  1. synapse_sdk/__init__.py +24 -0
  2. synapse_sdk/cli/__init__.py +310 -5
  3. synapse_sdk/cli/alias/__init__.py +22 -0
  4. synapse_sdk/cli/alias/create.py +36 -0
  5. synapse_sdk/cli/alias/dataclass.py +31 -0
  6. synapse_sdk/cli/alias/default.py +16 -0
  7. synapse_sdk/cli/alias/delete.py +15 -0
  8. synapse_sdk/cli/alias/list.py +19 -0
  9. synapse_sdk/cli/alias/read.py +15 -0
  10. synapse_sdk/cli/alias/update.py +17 -0
  11. synapse_sdk/cli/alias/utils.py +61 -0
  12. synapse_sdk/cli/code_server.py +687 -0
  13. synapse_sdk/cli/config.py +440 -0
  14. synapse_sdk/cli/devtools.py +90 -0
  15. synapse_sdk/cli/plugin/__init__.py +33 -0
  16. synapse_sdk/cli/{create_plugin.py → plugin/create.py} +2 -2
  17. synapse_sdk/{plugins/cli → cli/plugin}/publish.py +23 -15
  18. synapse_sdk/clients/agent/__init__.py +9 -3
  19. synapse_sdk/clients/agent/container.py +143 -0
  20. synapse_sdk/clients/agent/core.py +19 -0
  21. synapse_sdk/clients/agent/ray.py +298 -9
  22. synapse_sdk/clients/backend/__init__.py +30 -12
  23. synapse_sdk/clients/backend/annotation.py +13 -5
  24. synapse_sdk/clients/backend/core.py +31 -4
  25. synapse_sdk/clients/backend/data_collection.py +186 -0
  26. synapse_sdk/clients/backend/hitl.py +17 -0
  27. synapse_sdk/clients/backend/integration.py +16 -1
  28. synapse_sdk/clients/backend/ml.py +5 -1
  29. synapse_sdk/clients/backend/models.py +78 -0
  30. synapse_sdk/clients/base.py +384 -41
  31. synapse_sdk/clients/ray/serve.py +2 -0
  32. synapse_sdk/clients/validators/collections.py +31 -0
  33. synapse_sdk/devtools/config.py +94 -0
  34. synapse_sdk/devtools/server.py +41 -0
  35. synapse_sdk/devtools/streamlit_app/__init__.py +5 -0
  36. synapse_sdk/devtools/streamlit_app/app.py +128 -0
  37. synapse_sdk/devtools/streamlit_app/services/__init__.py +11 -0
  38. synapse_sdk/devtools/streamlit_app/services/job_service.py +233 -0
  39. synapse_sdk/devtools/streamlit_app/services/plugin_service.py +236 -0
  40. synapse_sdk/devtools/streamlit_app/services/serve_service.py +95 -0
  41. synapse_sdk/devtools/streamlit_app/ui/__init__.py +15 -0
  42. synapse_sdk/devtools/streamlit_app/ui/config_tab.py +76 -0
  43. synapse_sdk/devtools/streamlit_app/ui/deployment_tab.py +66 -0
  44. synapse_sdk/devtools/streamlit_app/ui/http_tab.py +125 -0
  45. synapse_sdk/devtools/streamlit_app/ui/jobs_tab.py +573 -0
  46. synapse_sdk/devtools/streamlit_app/ui/serve_tab.py +346 -0
  47. synapse_sdk/devtools/streamlit_app/ui/status_bar.py +118 -0
  48. synapse_sdk/devtools/streamlit_app/utils/__init__.py +40 -0
  49. synapse_sdk/devtools/streamlit_app/utils/json_viewer.py +197 -0
  50. synapse_sdk/devtools/streamlit_app/utils/log_formatter.py +38 -0
  51. synapse_sdk/devtools/streamlit_app/utils/styles.py +241 -0
  52. synapse_sdk/devtools/streamlit_app/utils/ui_components.py +289 -0
  53. synapse_sdk/devtools/streamlit_app.py +10 -0
  54. synapse_sdk/loggers.py +120 -9
  55. synapse_sdk/plugins/README.md +1340 -0
  56. synapse_sdk/plugins/__init__.py +0 -13
  57. synapse_sdk/plugins/categories/base.py +117 -11
  58. synapse_sdk/plugins/categories/data_validation/actions/validation.py +72 -0
  59. synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +33 -5
  60. synapse_sdk/plugins/categories/export/actions/__init__.py +3 -0
  61. synapse_sdk/plugins/categories/export/actions/export/__init__.py +28 -0
  62. synapse_sdk/plugins/categories/export/actions/export/action.py +165 -0
  63. synapse_sdk/plugins/categories/export/actions/export/enums.py +113 -0
  64. synapse_sdk/plugins/categories/export/actions/export/exceptions.py +53 -0
  65. synapse_sdk/plugins/categories/export/actions/export/models.py +74 -0
  66. synapse_sdk/plugins/categories/export/actions/export/run.py +195 -0
  67. synapse_sdk/plugins/categories/export/actions/export/utils.py +187 -0
  68. synapse_sdk/plugins/categories/export/templates/config.yaml +21 -0
  69. synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +390 -0
  70. synapse_sdk/plugins/categories/export/templates/plugin/export.py +160 -0
  71. synapse_sdk/plugins/categories/neural_net/actions/deployment.py +13 -12
  72. synapse_sdk/plugins/categories/neural_net/actions/train.py +1134 -31
  73. synapse_sdk/plugins/categories/neural_net/actions/tune.py +534 -0
  74. synapse_sdk/plugins/categories/neural_net/base/inference.py +1 -1
  75. synapse_sdk/plugins/categories/neural_net/templates/config.yaml +32 -4
  76. synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +26 -10
  77. synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +4 -0
  78. synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation/__init__.py +3 -0
  79. synapse_sdk/plugins/categories/{export/actions/export.py → pre_annotation/actions/pre_annotation/action.py} +4 -4
  80. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/__init__.py +28 -0
  81. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/action.py +148 -0
  82. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/enums.py +269 -0
  83. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/exceptions.py +14 -0
  84. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/factory.py +76 -0
  85. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/models.py +100 -0
  86. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/orchestrator.py +248 -0
  87. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/run.py +64 -0
  88. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/__init__.py +17 -0
  89. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/annotation.py +265 -0
  90. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/base.py +170 -0
  91. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/extraction.py +83 -0
  92. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/metrics.py +92 -0
  93. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/preprocessor.py +243 -0
  94. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/validation.py +143 -0
  95. synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +19 -0
  96. synapse_sdk/plugins/categories/pre_annotation/templates/plugin/to_task.py +40 -0
  97. synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +2 -0
  98. synapse_sdk/plugins/categories/upload/__init__.py +0 -0
  99. synapse_sdk/plugins/categories/upload/actions/__init__.py +0 -0
  100. synapse_sdk/plugins/categories/upload/actions/upload/__init__.py +19 -0
  101. synapse_sdk/plugins/categories/upload/actions/upload/action.py +236 -0
  102. synapse_sdk/plugins/categories/upload/actions/upload/context.py +185 -0
  103. synapse_sdk/plugins/categories/upload/actions/upload/enums.py +493 -0
  104. synapse_sdk/plugins/categories/upload/actions/upload/exceptions.py +36 -0
  105. synapse_sdk/plugins/categories/upload/actions/upload/factory.py +138 -0
  106. synapse_sdk/plugins/categories/upload/actions/upload/models.py +214 -0
  107. synapse_sdk/plugins/categories/upload/actions/upload/orchestrator.py +183 -0
  108. synapse_sdk/plugins/categories/upload/actions/upload/registry.py +113 -0
  109. synapse_sdk/plugins/categories/upload/actions/upload/run.py +179 -0
  110. synapse_sdk/plugins/categories/upload/actions/upload/steps/__init__.py +1 -0
  111. synapse_sdk/plugins/categories/upload/actions/upload/steps/base.py +107 -0
  112. synapse_sdk/plugins/categories/upload/actions/upload/steps/cleanup.py +62 -0
  113. synapse_sdk/plugins/categories/upload/actions/upload/steps/collection.py +63 -0
  114. synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py +91 -0
  115. synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py +82 -0
  116. synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py +235 -0
  117. synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py +201 -0
  118. synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py +104 -0
  119. synapse_sdk/plugins/categories/upload/actions/upload/steps/validate.py +71 -0
  120. synapse_sdk/plugins/categories/upload/actions/upload/strategies/__init__.py +1 -0
  121. synapse_sdk/plugins/categories/upload/actions/upload/strategies/base.py +82 -0
  122. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/__init__.py +1 -0
  123. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/batch.py +39 -0
  124. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/single.py +29 -0
  125. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/__init__.py +1 -0
  126. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py +300 -0
  127. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py +287 -0
  128. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/__init__.py +1 -0
  129. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/excel.py +174 -0
  130. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/none.py +16 -0
  131. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/__init__.py +1 -0
  132. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/sync.py +84 -0
  133. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/__init__.py +1 -0
  134. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py +60 -0
  135. synapse_sdk/plugins/categories/upload/actions/upload/utils.py +250 -0
  136. synapse_sdk/plugins/categories/upload/templates/README.md +470 -0
  137. synapse_sdk/plugins/categories/upload/templates/config.yaml +33 -0
  138. synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +310 -0
  139. synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +102 -0
  140. synapse_sdk/plugins/enums.py +3 -1
  141. synapse_sdk/plugins/models.py +148 -11
  142. synapse_sdk/plugins/templates/plugin-config-schema.json +406 -0
  143. synapse_sdk/plugins/templates/schema.json +491 -0
  144. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +1 -0
  145. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +1 -1
  146. synapse_sdk/plugins/utils/__init__.py +46 -0
  147. synapse_sdk/plugins/utils/actions.py +119 -0
  148. synapse_sdk/plugins/utils/config.py +203 -0
  149. synapse_sdk/plugins/{utils.py → utils/legacy.py} +26 -46
  150. synapse_sdk/plugins/utils/ray_gcs.py +66 -0
  151. synapse_sdk/plugins/utils/registry.py +58 -0
  152. synapse_sdk/shared/__init__.py +25 -0
  153. synapse_sdk/shared/enums.py +93 -0
  154. synapse_sdk/types.py +19 -0
  155. synapse_sdk/utils/converters/__init__.py +240 -0
  156. synapse_sdk/utils/converters/coco/__init__.py +0 -0
  157. synapse_sdk/utils/converters/coco/from_dm.py +322 -0
  158. synapse_sdk/utils/converters/coco/to_dm.py +215 -0
  159. synapse_sdk/utils/converters/dm/__init__.py +57 -0
  160. synapse_sdk/utils/converters/dm/base.py +137 -0
  161. synapse_sdk/utils/converters/dm/from_v1.py +273 -0
  162. synapse_sdk/utils/converters/dm/to_v1.py +321 -0
  163. synapse_sdk/utils/converters/dm/tools/__init__.py +214 -0
  164. synapse_sdk/utils/converters/dm/tools/answer.py +95 -0
  165. synapse_sdk/utils/converters/dm/tools/bounding_box.py +132 -0
  166. synapse_sdk/utils/converters/dm/tools/bounding_box_3d.py +121 -0
  167. synapse_sdk/utils/converters/dm/tools/classification.py +75 -0
  168. synapse_sdk/utils/converters/dm/tools/keypoint.py +117 -0
  169. synapse_sdk/utils/converters/dm/tools/named_entity.py +111 -0
  170. synapse_sdk/utils/converters/dm/tools/polygon.py +122 -0
  171. synapse_sdk/utils/converters/dm/tools/polyline.py +124 -0
  172. synapse_sdk/utils/converters/dm/tools/prompt.py +94 -0
  173. synapse_sdk/utils/converters/dm/tools/relation.py +86 -0
  174. synapse_sdk/utils/converters/dm/tools/segmentation.py +141 -0
  175. synapse_sdk/utils/converters/dm/tools/segmentation_3d.py +83 -0
  176. synapse_sdk/utils/converters/dm/types.py +168 -0
  177. synapse_sdk/utils/converters/dm/utils.py +162 -0
  178. synapse_sdk/utils/converters/dm_legacy/__init__.py +56 -0
  179. synapse_sdk/utils/converters/dm_legacy/from_v1.py +627 -0
  180. synapse_sdk/utils/converters/dm_legacy/to_v1.py +367 -0
  181. synapse_sdk/utils/converters/pascal/__init__.py +0 -0
  182. synapse_sdk/utils/converters/pascal/from_dm.py +244 -0
  183. synapse_sdk/utils/converters/pascal/to_dm.py +214 -0
  184. synapse_sdk/utils/converters/yolo/__init__.py +0 -0
  185. synapse_sdk/utils/converters/yolo/from_dm.py +384 -0
  186. synapse_sdk/utils/converters/yolo/to_dm.py +267 -0
  187. synapse_sdk/utils/dataset.py +46 -0
  188. synapse_sdk/utils/encryption.py +158 -0
  189. synapse_sdk/utils/file/__init__.py +58 -0
  190. synapse_sdk/utils/file/archive.py +32 -0
  191. synapse_sdk/utils/file/checksum.py +56 -0
  192. synapse_sdk/utils/file/chunking.py +31 -0
  193. synapse_sdk/utils/file/download.py +385 -0
  194. synapse_sdk/utils/file/encoding.py +40 -0
  195. synapse_sdk/utils/file/io.py +22 -0
  196. synapse_sdk/utils/file/upload.py +165 -0
  197. synapse_sdk/utils/file/video/__init__.py +29 -0
  198. synapse_sdk/utils/file/video/transcode.py +307 -0
  199. synapse_sdk/utils/file.py.backup +301 -0
  200. synapse_sdk/utils/http.py +138 -0
  201. synapse_sdk/utils/network.py +309 -0
  202. synapse_sdk/utils/storage/__init__.py +72 -0
  203. synapse_sdk/utils/storage/providers/__init__.py +183 -0
  204. synapse_sdk/utils/storage/providers/file_system.py +134 -0
  205. synapse_sdk/utils/storage/providers/gcp.py +13 -0
  206. synapse_sdk/utils/storage/providers/http.py +190 -0
  207. synapse_sdk/utils/storage/providers/s3.py +91 -0
  208. synapse_sdk/utils/storage/providers/sftp.py +47 -0
  209. synapse_sdk/utils/storage/registry.py +17 -0
  210. synapse_sdk-2025.12.3.dist-info/METADATA +123 -0
  211. synapse_sdk-2025.12.3.dist-info/RECORD +279 -0
  212. {synapse_sdk-1.0.0a23.dist-info → synapse_sdk-2025.12.3.dist-info}/WHEEL +1 -1
  213. synapse_sdk/clients/backend/dataset.py +0 -51
  214. synapse_sdk/plugins/categories/import/actions/import.py +0 -10
  215. synapse_sdk/plugins/cli/__init__.py +0 -21
  216. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env +0 -24
  217. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env.dist +0 -24
  218. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/main.py +0 -4
  219. synapse_sdk/utils/file.py +0 -168
  220. synapse_sdk/utils/storage.py +0 -91
  221. synapse_sdk-1.0.0a23.dist-info/METADATA +0 -44
  222. synapse_sdk-1.0.0a23.dist-info/RECORD +0 -114
  223. /synapse_sdk/{plugins/cli → cli/plugin}/run.py +0 -0
  224. /synapse_sdk/{plugins/categories/import → clients/validators}/__init__.py +0 -0
  225. /synapse_sdk/{plugins/categories/import/actions → devtools}/__init__.py +0 -0
  226. {synapse_sdk-1.0.0a23.dist-info → synapse_sdk-2025.12.3.dist-info}/entry_points.txt +0 -0
  227. {synapse_sdk-1.0.0a23.dist-info → synapse_sdk-2025.12.3.dist-info/licenses}/LICENSE +0 -0
  228. {synapse_sdk-1.0.0a23.dist-info → synapse_sdk-2025.12.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,406 @@
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
+ "package_manager_options": {
55
+ "type": "array",
56
+ "description": "User-provided options for package manager install command. Currently only supported for uv in Ray 2.44.1 (defaults to ['--no-cache']). pip_install_options requires newer Ray versions.",
57
+ "items": {
58
+ "type": "string"
59
+ }
60
+ },
61
+ "data_type": {
62
+ "type": "string",
63
+ "description": "Primary data type the plugin works with",
64
+ "enum": ["image", "text", "video", "pcd", "audio"]
65
+ },
66
+ "task": {
67
+ "type": "string",
68
+ "description": "Primary task type (legacy field, use tasks array instead)"
69
+ },
70
+ "tasks": {
71
+ "type": "array",
72
+ "description": "Array of tasks the plugin supports",
73
+ "items": {
74
+ "type": "string",
75
+ "pattern": "^(image|text|video|pcd|audio)\\.(object_detection|classification|segmentation|regression|generation|translation|analysis)$"
76
+ },
77
+ "uniqueItems": true
78
+ },
79
+ "annotation_category": {
80
+ "type": "string",
81
+ "description": "Annotation category for smart tools",
82
+ "enum": ["image", "text", "video", "pcd", "audio"]
83
+ },
84
+ "annotation_type": {
85
+ "type": "string",
86
+ "description": "Type of annotation for smart tools",
87
+ "enum": ["polygon", "bbox", "point", "line", "mask", "keypoint", "text"]
88
+ },
89
+ "smart_tool": {
90
+ "type": "string",
91
+ "description": "Type of smart tool",
92
+ "enum": ["interactive_segmentation", "auto_labeling", "assisted_annotation"]
93
+ },
94
+ "actions": {
95
+ "type": "object",
96
+ "description": "Configuration for plugin actions",
97
+ "minProperties": 1,
98
+ "additionalProperties": {
99
+ "type": "object",
100
+ "required": ["entrypoint"],
101
+ "additionalProperties": false,
102
+ "properties": {
103
+ "entrypoint": {
104
+ "type": "string",
105
+ "description": "Python module path to the action implementation",
106
+ "pattern": "^[a-zA-Z_][a-zA-Z0-9_.]*\\.[a-zA-Z_][a-zA-Z0-9_]*$"
107
+ },
108
+ "method": {
109
+ "type": "string",
110
+ "description": "Execution method for the action",
111
+ "enum": ["job", "task", "restapi"],
112
+ "default": "job"
113
+ },
114
+ "dataset": {
115
+ "type": "string",
116
+ "description": "Dataset parameter name for training actions",
117
+ "default": "dataset"
118
+ },
119
+ "directory": {
120
+ "type": "string",
121
+ "description": "Directory path for gradio or other UI-based actions"
122
+ },
123
+ "model": {
124
+ "type": "object",
125
+ "description": "Model configuration for smart tools",
126
+ "additionalProperties": true,
127
+ "properties": {
128
+ "neural_net__plugin__code": {
129
+ "type": "string",
130
+ "description": "Neural network plugin code to use"
131
+ }
132
+ }
133
+ },
134
+ "endpoints": {
135
+ "type": "array",
136
+ "description": "REST API endpoints configuration",
137
+ "items": {
138
+ "type": "object",
139
+ "required": ["method"],
140
+ "additionalProperties": false,
141
+ "properties": {
142
+ "method": {
143
+ "type": "string",
144
+ "enum": ["get", "post", "put", "patch", "delete"],
145
+ "description": "HTTP method"
146
+ },
147
+ "path": {
148
+ "type": "string",
149
+ "description": "Endpoint path"
150
+ }
151
+ }
152
+ }
153
+ },
154
+ "hyperparameters": {
155
+ "type": "object",
156
+ "description": "Hyperparameter configuration for training",
157
+ "additionalProperties": false,
158
+ "properties": {
159
+ "ui_schema": {
160
+ "type": "string",
161
+ "description": "FormKit schema for hyperparameter UI (YAML string)"
162
+ },
163
+ "ui_schemas": {
164
+ "type": "array",
165
+ "description": "Array of FormKit schema objects for hyperparameters",
166
+ "items": {
167
+ "type": "object",
168
+ "additionalProperties": true
169
+ }
170
+ }
171
+ }
172
+ },
173
+ "metrics": {
174
+ "type": "object",
175
+ "description": "Metrics configuration for training monitoring",
176
+ "additionalProperties": {
177
+ "type": "object",
178
+ "additionalProperties": {
179
+ "oneOf": [
180
+ {
181
+ "type": "array",
182
+ "items": {
183
+ "type": "string"
184
+ }
185
+ },
186
+ {
187
+ "type": "object",
188
+ "additionalProperties": {
189
+ "type": "object",
190
+ "properties": {
191
+ "name": {
192
+ "type": "string",
193
+ "description": "Display name for the metric"
194
+ }
195
+ }
196
+ }
197
+ }
198
+ ]
199
+ }
200
+ }
201
+ },
202
+ "visualizations": {
203
+ "type": "object",
204
+ "description": "Visualization configuration for training monitoring",
205
+ "additionalProperties": {
206
+ "type": "object",
207
+ "required": ["type"],
208
+ "properties": {
209
+ "name": {
210
+ "type": "string",
211
+ "description": "Display name for the visualization"
212
+ },
213
+ "type": {
214
+ "type": "string",
215
+ "enum": ["image_grid_group", "line_chart", "scatter_plot"],
216
+ "description": "Type of visualization"
217
+ },
218
+ "options": {
219
+ "type": "object",
220
+ "description": "Visualization-specific options",
221
+ "properties": {
222
+ "group_name": {
223
+ "type": "string",
224
+ "description": "Name for grouping visualizations"
225
+ },
226
+ "thumbnail_size": {
227
+ "type": "array",
228
+ "items": {
229
+ "type": "integer",
230
+ "minimum": 1
231
+ },
232
+ "minItems": 2,
233
+ "maxItems": 2,
234
+ "description": "Thumbnail dimensions [width, height]"
235
+ }
236
+ },
237
+ "additionalProperties": true
238
+ }
239
+ }
240
+ }
241
+ },
242
+ "options": {
243
+ "type": "object",
244
+ "description": "Action-specific options",
245
+ "additionalProperties": true,
246
+ "properties": {
247
+ "visualize": {
248
+ "type": "boolean",
249
+ "description": "Whether to enable visualization for training",
250
+ "default": false
251
+ }
252
+ }
253
+ },
254
+ "supported_data_type": {
255
+ "type": "string",
256
+ "description": "Primary data type supported by upload plugins",
257
+ "enum": ["image", "text", "video", "pcd", "audio"]
258
+ },
259
+ "ui_schema": {
260
+ "type": "string",
261
+ "description": "FormKit schema for action-specific UI options (YAML string)"
262
+ }
263
+ }
264
+ }
265
+ }
266
+ },
267
+ "allOf": [
268
+ {
269
+ "if": {
270
+ "properties": {
271
+ "category": {
272
+ "const": "neural_net"
273
+ }
274
+ }
275
+ },
276
+ "then": {
277
+ "properties": {
278
+ "data_type": {
279
+ "type": "string"
280
+ },
281
+ "tasks": {
282
+ "type": "array",
283
+ "minItems": 1
284
+ }
285
+ }
286
+ }
287
+ },
288
+ {
289
+ "if": {
290
+ "properties": {
291
+ "category": {
292
+ "const": "smart_tool"
293
+ }
294
+ }
295
+ },
296
+ "then": {
297
+ "properties": {
298
+ "annotation_category": {
299
+ "type": "string"
300
+ },
301
+ "annotation_type": {
302
+ "type": "string"
303
+ },
304
+ "smart_tool": {
305
+ "type": "string"
306
+ }
307
+ }
308
+ }
309
+ },
310
+ {
311
+ "if": {
312
+ "properties": {
313
+ "category": {
314
+ "const": "upload"
315
+ }
316
+ }
317
+ },
318
+ "then": {
319
+ "properties": {
320
+ "actions": {
321
+ "type": "object",
322
+ "properties": {
323
+ "upload": {
324
+ "type": "object",
325
+ "properties": {
326
+ "supported_data_type": {
327
+ "type": "string"
328
+ }
329
+ }
330
+ }
331
+ }
332
+ }
333
+ }
334
+ }
335
+ }
336
+ ],
337
+ "examples": [
338
+ {
339
+ "name": "YOLO Object Detection",
340
+ "code": "yolo11",
341
+ "version": "0.1.0",
342
+ "description": "YOLO v11 object detection plugin",
343
+ "category": "neural_net",
344
+ "package_manager": "uv",
345
+ "data_type": "image",
346
+ "tasks": ["image.object_detection"],
347
+ "actions": {
348
+ "train": {
349
+ "entrypoint": "plugin.train.train",
350
+ "dataset": "dataset",
351
+ "hyperparameters": {
352
+ "ui_schema": "# FormKit schema YAML"
353
+ },
354
+ "metrics": {
355
+ "epoch": ["loss", "miou"]
356
+ },
357
+ "options": {
358
+ "visualize": false
359
+ }
360
+ },
361
+ "inference": {
362
+ "method": "restapi",
363
+ "endpoints": [
364
+ {
365
+ "method": "get"
366
+ }
367
+ ]
368
+ },
369
+ "deployment": {
370
+ "entrypoint": "plugin.inference.MockNetInference"
371
+ }
372
+ }
373
+ },
374
+ {
375
+ "name": "Smart Segmentation Tool",
376
+ "code": "sam2-tool",
377
+ "version": "1.0.0",
378
+ "description": "Interactive segmentation smart tool",
379
+ "category": "smart_tool",
380
+ "annotation_category": "image",
381
+ "annotation_type": "polygon",
382
+ "smart_tool": "interactive_segmentation",
383
+ "actions": {
384
+ "auto_label": {
385
+ "entrypoint": "plugin.auto_label.MyAutoLabel",
386
+ "model": {
387
+ "neural_net__plugin__code": "sam2"
388
+ },
389
+ "ui_schema": "# FormKit schema for auto_label"
390
+ }
391
+ }
392
+ },
393
+ {
394
+ "name": "Data Export Plugin",
395
+ "code": "coco-export",
396
+ "version": "1.0.0",
397
+ "description": "Export annotations in COCO format",
398
+ "category": "export",
399
+ "actions": {
400
+ "export": {
401
+ "entrypoint": "plugin.export.export"
402
+ }
403
+ }
404
+ }
405
+ ]
406
+ }