toposync-core 0.3.4__tar.gz

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 (578) hide show
  1. toposync_core-0.3.4/.dockerignore +29 -0
  2. toposync_core-0.3.4/.env.example +5 -0
  3. toposync_core-0.3.4/.github/workflows/distribution-smoke.yml +39 -0
  4. toposync_core-0.3.4/.gitignore +39 -0
  5. toposync_core-0.3.4/.python-version +1 -0
  6. toposync_core-0.3.4/.yarnrc.yml +1 -0
  7. toposync_core-0.3.4/AGENTS.md +11 -0
  8. toposync_core-0.3.4/Dockerfile +25 -0
  9. toposync_core-0.3.4/LICENSE +21 -0
  10. toposync_core-0.3.4/PKG-INFO +42 -0
  11. toposync_core-0.3.4/docker-compose.yml +9 -0
  12. toposync_core-0.3.4/docs/ARCHITECTURE.md +19 -0
  13. toposync_core-0.3.4/docs/BUILD.md +103 -0
  14. toposync_core-0.3.4/docs/DATA.md +15 -0
  15. toposync_core-0.3.4/docs/DEVELOPMENT.md +119 -0
  16. toposync_core-0.3.4/docs/EXTENSIONS_FIRST_PARTY.md +31 -0
  17. toposync_core-0.3.4/docs/EXTENSIONS_RUNTIME.md +72 -0
  18. toposync_core-0.3.4/docs/EXTENSION_AUTHORING.md +116 -0
  19. toposync_core-0.3.4/docs/PIPELINES.md +549 -0
  20. toposync_core-0.3.4/docs/PLUGIN_API.md +127 -0
  21. toposync_core-0.3.4/docs/PROCESSING_SERVER_DEVELOPMENT.md +179 -0
  22. toposync_core-0.3.4/docs/README.md +14 -0
  23. toposync_core-0.3.4/docs/SELF_HOSTING.md +182 -0
  24. toposync_core-0.3.4/docs/TROUBLESHOOTING.md +4 -0
  25. toposync_core-0.3.4/docs/VISION_MODEL_PROVISIONING.md +207 -0
  26. toposync_core-0.3.4/docs/deep_research_streaming.md +257 -0
  27. toposync_core-0.3.4/docs/dossie_app_mobile.md +1046 -0
  28. toposync_core-0.3.4/docs/dossie_implementacao_vision_toposync.md +1768 -0
  29. toposync_core-0.3.4/docs/dossie_operadores_movimento.md +959 -0
  30. toposync_core-0.3.4/docs/dossie_transmissoes_streaming.md +1600 -0
  31. toposync_core-0.3.4/docs/plan_rtmdet_local_provisioning_yellow.md +615 -0
  32. toposync_core-0.3.4/e2e/distribution.spec.js +64 -0
  33. toposync_core-0.3.4/e2e/routing.spec.js +26 -0
  34. toposync_core-0.3.4/e2e/settings.spec.js +234 -0
  35. toposync_core-0.3.4/extensions/cameras/LICENSE +21 -0
  36. toposync_core-0.3.4/extensions/cameras/README.md +59 -0
  37. toposync_core-0.3.4/extensions/cameras/pyproject.toml +19 -0
  38. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/__init__.py +1 -0
  39. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/extension.json +12 -0
  40. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/onvif/__init__.py +28 -0
  41. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/onvif/client.py +845 -0
  42. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/onvif/discovery.py +181 -0
  43. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/pipelines/__init__.py +61 -0
  44. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/pipelines/operators.py +2990 -0
  45. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/pipelines/postprocess.py +5095 -0
  46. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/plugin.py +1733 -0
  47. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/__init__.py +2 -0
  48. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/camera_hub.py +174 -0
  49. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/frame_grabber.py +838 -0
  50. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/mapping.py +543 -0
  51. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/motion.py +179 -0
  52. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/motion_bgsub.py +457 -0
  53. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/motion_sample_bg.py +532 -0
  54. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/yolo.py +475 -0
  55. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/settings.py +250 -0
  56. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/326.js +2 -0
  57. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/326.js.LICENSE.txt +9 -0
  58. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/4.js +2 -0
  59. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/4.js.LICENSE.txt +19 -0
  60. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/623.js +2 -0
  61. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/623.js.LICENSE.txt +19 -0
  62. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/703.js +2 -0
  63. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/703.js.LICENSE.txt +9 -0
  64. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/753.js +2 -0
  65. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/753.js.LICENSE.txt +5 -0
  66. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/main.js +2 -0
  67. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/main.js.LICENSE.txt +9 -0
  68. toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/remoteEntry.js +1 -0
  69. toposync_core-0.3.4/extensions/cameras/ui/package.json +22 -0
  70. toposync_core-0.3.4/extensions/cameras/ui/src/activate.tsx +13 -0
  71. toposync_core-0.3.4/extensions/cameras/ui/src/api/camerasApi.ts +255 -0
  72. toposync_core-0.3.4/extensions/cameras/ui/src/assets.d.ts +5 -0
  73. toposync_core-0.3.4/extensions/cameras/ui/src/constants.ts +15 -0
  74. toposync_core-0.3.4/extensions/cameras/ui/src/elements/CameraElementType.tsx +1859 -0
  75. toposync_core-0.3.4/extensions/cameras/ui/src/entry.ts +3 -0
  76. toposync_core-0.3.4/extensions/cameras/ui/src/parsing.ts +304 -0
  77. toposync_core-0.3.4/extensions/cameras/ui/src/settings/CamerasSettingsPanel.tsx +874 -0
  78. toposync_core-0.3.4/extensions/cameras/ui/src/tools/addCameraTool.ts +24 -0
  79. toposync_core-0.3.4/extensions/cameras/ui/src/translations.ts +248 -0
  80. toposync_core-0.3.4/extensions/cameras/ui/src/types.ts +181 -0
  81. toposync_core-0.3.4/extensions/cameras/ui/src/ui/SubModal.tsx +50 -0
  82. toposync_core-0.3.4/extensions/cameras/ui/src/wizard/CameraPipelineWizardModal.tsx +443 -0
  83. toposync_core-0.3.4/extensions/cameras/ui/src/yolo.ts +111 -0
  84. toposync_core-0.3.4/extensions/cameras/ui/tsconfig.json +13 -0
  85. toposync_core-0.3.4/extensions/cameras/ui/webpack.config.js +46 -0
  86. toposync_core-0.3.4/extensions/home_assistant/LICENSE +21 -0
  87. toposync_core-0.3.4/extensions/home_assistant/README.md +11 -0
  88. toposync_core-0.3.4/extensions/home_assistant/pyproject.toml +19 -0
  89. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/__init__.py +4 -0
  90. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/extension.json +12 -0
  91. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/pipelines.py +258 -0
  92. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/plugin.py +1058 -0
  93. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/326.js +2 -0
  94. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/326.js.LICENSE.txt +9 -0
  95. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/4.js +2 -0
  96. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/4.js.LICENSE.txt +19 -0
  97. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/623.js +2 -0
  98. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/623.js.LICENSE.txt +19 -0
  99. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/703.js +2 -0
  100. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/703.js.LICENSE.txt +18 -0
  101. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/753.js +2 -0
  102. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/753.js.LICENSE.txt +5 -0
  103. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/980.js +1 -0
  104. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/main.js +2 -0
  105. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/main.js.LICENSE.txt +9 -0
  106. toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/remoteEntry.js +1 -0
  107. toposync_core-0.3.4/extensions/home_assistant/ui/package.json +23 -0
  108. toposync_core-0.3.4/extensions/home_assistant/ui/src/activate.tsx +13 -0
  109. toposync_core-0.3.4/extensions/home_assistant/ui/src/airflow.ts +387 -0
  110. toposync_core-0.3.4/extensions/home_assistant/ui/src/api/homeAssistantApi.ts +49 -0
  111. toposync_core-0.3.4/extensions/home_assistant/ui/src/assets.d.ts +5 -0
  112. toposync_core-0.3.4/extensions/home_assistant/ui/src/constants.ts +29 -0
  113. toposync_core-0.3.4/extensions/home_assistant/ui/src/domain.ts +94 -0
  114. toposync_core-0.3.4/extensions/home_assistant/ui/src/elements/HomeAssistantElementType.tsx +1129 -0
  115. toposync_core-0.3.4/extensions/home_assistant/ui/src/entry.ts +4 -0
  116. toposync_core-0.3.4/extensions/home_assistant/ui/src/fontawesome.ts +96 -0
  117. toposync_core-0.3.4/extensions/home_assistant/ui/src/liveStates.ts +253 -0
  118. toposync_core-0.3.4/extensions/home_assistant/ui/src/parsing.ts +135 -0
  119. toposync_core-0.3.4/extensions/home_assistant/ui/src/settings/HomeAssistantSettingsPanel.tsx +585 -0
  120. toposync_core-0.3.4/extensions/home_assistant/ui/src/tools/addHomeAssistantTool.ts +36 -0
  121. toposync_core-0.3.4/extensions/home_assistant/ui/src/translations.ts +202 -0
  122. toposync_core-0.3.4/extensions/home_assistant/ui/src/types.ts +85 -0
  123. toposync_core-0.3.4/extensions/home_assistant/ui/src/ui/HomeAssistantAction.tsx +203 -0
  124. toposync_core-0.3.4/extensions/home_assistant/ui/src/ui/HomeAssistantEditor.tsx +1002 -0
  125. toposync_core-0.3.4/extensions/home_assistant/ui/tsconfig.json +14 -0
  126. toposync_core-0.3.4/extensions/home_assistant/ui/webpack.config.js +46 -0
  127. toposync_core-0.3.4/extensions/images/LICENSE +21 -0
  128. toposync_core-0.3.4/extensions/images/README.md +9 -0
  129. toposync_core-0.3.4/extensions/images/pyproject.toml +19 -0
  130. toposync_core-0.3.4/extensions/images/src/toposync_ext_images/__init__.py +2 -0
  131. toposync_core-0.3.4/extensions/images/src/toposync_ext_images/extension.json +13 -0
  132. toposync_core-0.3.4/extensions/images/src/toposync_ext_images/plugin.py +16 -0
  133. toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/326.js +2 -0
  134. toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/326.js.LICENSE.txt +9 -0
  135. toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/703.js +2 -0
  136. toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/703.js.LICENSE.txt +9 -0
  137. toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/main.js +2 -0
  138. toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/main.js.LICENSE.txt +9 -0
  139. toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/remoteEntry.js +1 -0
  140. toposync_core-0.3.4/extensions/images/ui/package.json +22 -0
  141. toposync_core-0.3.4/extensions/images/ui/src/activate.tsx +14 -0
  142. toposync_core-0.3.4/extensions/images/ui/src/api/filesApi.ts +23 -0
  143. toposync_core-0.3.4/extensions/images/ui/src/constants.ts +13 -0
  144. toposync_core-0.3.4/extensions/images/ui/src/debug.ts +14 -0
  145. toposync_core-0.3.4/extensions/images/ui/src/dropHandlers/imageDropHandler.ts +65 -0
  146. toposync_core-0.3.4/extensions/images/ui/src/elements/ImageEditorModal.tsx +242 -0
  147. toposync_core-0.3.4/extensions/images/ui/src/elements/ImageElementType.tsx +240 -0
  148. toposync_core-0.3.4/extensions/images/ui/src/elements/ImageScaleReference.tsx +387 -0
  149. toposync_core-0.3.4/extensions/images/ui/src/entry.ts +4 -0
  150. toposync_core-0.3.4/extensions/images/ui/src/imageUtils.ts +36 -0
  151. toposync_core-0.3.4/extensions/images/ui/src/parsing.ts +35 -0
  152. toposync_core-0.3.4/extensions/images/ui/src/tools/addImageTool.ts +225 -0
  153. toposync_core-0.3.4/extensions/images/ui/src/translations.ts +90 -0
  154. toposync_core-0.3.4/extensions/images/ui/src/types.ts +9 -0
  155. toposync_core-0.3.4/extensions/images/ui/tsconfig.json +14 -0
  156. toposync_core-0.3.4/extensions/images/ui/webpack.config.js +42 -0
  157. toposync_core-0.3.4/extensions/models/LICENSE +21 -0
  158. toposync_core-0.3.4/extensions/models/README.md +6 -0
  159. toposync_core-0.3.4/extensions/models/pyproject.toml +19 -0
  160. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/__init__.py +4 -0
  161. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/extension.json +13 -0
  162. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/plugin.py +16 -0
  163. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/326.js +2 -0
  164. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/326.js.LICENSE.txt +9 -0
  165. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/703.js +2 -0
  166. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/703.js.LICENSE.txt +9 -0
  167. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/753.js +2 -0
  168. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/753.js.LICENSE.txt +5 -0
  169. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/main.js +2 -0
  170. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/main.js.LICENSE.txt +9 -0
  171. toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/remoteEntry.js +1 -0
  172. toposync_core-0.3.4/extensions/models/ui/package.json +22 -0
  173. toposync_core-0.3.4/extensions/models/ui/src/activate.tsx +11 -0
  174. toposync_core-0.3.4/extensions/models/ui/src/api/filesApi.ts +23 -0
  175. toposync_core-0.3.4/extensions/models/ui/src/constants.ts +8 -0
  176. toposync_core-0.3.4/extensions/models/ui/src/debug.ts +14 -0
  177. toposync_core-0.3.4/extensions/models/ui/src/elements/ModelElementType.tsx +244 -0
  178. toposync_core-0.3.4/extensions/models/ui/src/entry.ts +4 -0
  179. toposync_core-0.3.4/extensions/models/ui/src/parsing.ts +29 -0
  180. toposync_core-0.3.4/extensions/models/ui/src/preview/modelPreview.ts +155 -0
  181. toposync_core-0.3.4/extensions/models/ui/src/runtime/gltfModel.ts +195 -0
  182. toposync_core-0.3.4/extensions/models/ui/src/tools/importModelTool.ts +230 -0
  183. toposync_core-0.3.4/extensions/models/ui/src/translations.ts +39 -0
  184. toposync_core-0.3.4/extensions/models/ui/src/types.ts +20 -0
  185. toposync_core-0.3.4/extensions/models/ui/tsconfig.json +14 -0
  186. toposync_core-0.3.4/extensions/models/ui/webpack.config.js +42 -0
  187. toposync_core-0.3.4/extensions/streaming/LICENSE +21 -0
  188. toposync_core-0.3.4/extensions/streaming/LICENSE.ffmpeg +16 -0
  189. toposync_core-0.3.4/extensions/streaming/LICENSE.mediamtx +21 -0
  190. toposync_core-0.3.4/extensions/streaming/README.md +720 -0
  191. toposync_core-0.3.4/extensions/streaming/pyproject.toml +19 -0
  192. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/__init__.py +2 -0
  193. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/api/__init__.py +2 -0
  194. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/api/models.py +715 -0
  195. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/api/routes.py +1426 -0
  196. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/bin/ffmpeg/LICENSE +5 -0
  197. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/bin/mediamtx/LICENSE +21 -0
  198. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/extension.json +14 -0
  199. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/pipelines/__init__.py +11 -0
  200. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/pipelines/operators.py +182 -0
  201. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/plugin.py +234 -0
  202. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/326.js +2 -0
  203. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/326.js.LICENSE.txt +9 -0
  204. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/4.js +2 -0
  205. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/4.js.LICENSE.txt +19 -0
  206. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/623.js +2 -0
  207. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/623.js.LICENSE.txt +19 -0
  208. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/703.js +2 -0
  209. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/703.js.LICENSE.txt +9 -0
  210. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/main.js +2 -0
  211. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/main.js.LICENSE.txt +9 -0
  212. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/remoteEntry.js +1 -0
  213. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/__init__.py +4 -0
  214. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/arbitration.py +149 -0
  215. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/camera_ingest.py +192 -0
  216. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/distributed_sync.py +172 -0
  217. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/engine_manager.py +891 -0
  218. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/ffmpeg_binary.py +152 -0
  219. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/mediamtx_api_client.py +109 -0
  220. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/mediamtx_binary.py +271 -0
  221. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/mediamtx_config.py +240 -0
  222. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/mediamtx_processes.py +115 -0
  223. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/placeholder.py +39 -0
  224. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/platform.py +50 -0
  225. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/publisher_manager.py +730 -0
  226. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/resize.py +52 -0
  227. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/runtime_state.py +485 -0
  228. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/writer_bridge.py +1095 -0
  229. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/wizard/__init__.py +10 -0
  230. toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/wizard/pipeline_builder.py +259 -0
  231. toposync_core-0.3.4/extensions/streaming/ui/package.json +22 -0
  232. toposync_core-0.3.4/extensions/streaming/ui/src/activate.tsx +9 -0
  233. toposync_core-0.3.4/extensions/streaming/ui/src/api/streamingApi.ts +162 -0
  234. toposync_core-0.3.4/extensions/streaming/ui/src/constants.ts +1 -0
  235. toposync_core-0.3.4/extensions/streaming/ui/src/entry.ts +3 -0
  236. toposync_core-0.3.4/extensions/streaming/ui/src/settings/StreamingSettingsPanel.tsx +2026 -0
  237. toposync_core-0.3.4/extensions/streaming/ui/src/settings/SubModal.tsx +50 -0
  238. toposync_core-0.3.4/extensions/streaming/ui/src/settings/WizardCreatePipelineFromTransmission.tsx +568 -0
  239. toposync_core-0.3.4/extensions/streaming/ui/src/translations.ts +438 -0
  240. toposync_core-0.3.4/extensions/streaming/ui/src/types.ts +201 -0
  241. toposync_core-0.3.4/extensions/streaming/ui/tsconfig.json +13 -0
  242. toposync_core-0.3.4/extensions/streaming/ui/webpack.config.js +42 -0
  243. toposync_core-0.3.4/extensions/structural/LICENSE +21 -0
  244. toposync_core-0.3.4/extensions/structural/README.md +10 -0
  245. toposync_core-0.3.4/extensions/structural/pyproject.toml +19 -0
  246. toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/__init__.py +1 -0
  247. toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/extension.json +13 -0
  248. toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/plugin.py +9 -0
  249. toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/12.js +2 -0
  250. toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/12.js.LICENSE.txt +9 -0
  251. toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/326.js +2 -0
  252. toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/326.js.LICENSE.txt +9 -0
  253. toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/main.js +1 -0
  254. toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/remoteEntry.js +1 -0
  255. toposync_core-0.3.4/extensions/structural/ui/package.json +20 -0
  256. toposync_core-0.3.4/extensions/structural/ui/src/activate.tsx +15 -0
  257. toposync_core-0.3.4/extensions/structural/ui/src/colors.ts +16 -0
  258. toposync_core-0.3.4/extensions/structural/ui/src/constants.ts +25 -0
  259. toposync_core-0.3.4/extensions/structural/ui/src/elements/AreaElementType.tsx +504 -0
  260. toposync_core-0.3.4/extensions/structural/ui/src/elements/PoolElementType.tsx +485 -0
  261. toposync_core-0.3.4/extensions/structural/ui/src/elements/WallElementType.tsx +838 -0
  262. toposync_core-0.3.4/extensions/structural/ui/src/entry.ts +2 -0
  263. toposync_core-0.3.4/extensions/structural/ui/src/geometry.ts +73 -0
  264. toposync_core-0.3.4/extensions/structural/ui/src/parsing.ts +47 -0
  265. toposync_core-0.3.4/extensions/structural/ui/src/textures.ts +288 -0
  266. toposync_core-0.3.4/extensions/structural/ui/src/tools/structuralTools.ts +871 -0
  267. toposync_core-0.3.4/extensions/structural/ui/src/translations.ts +104 -0
  268. toposync_core-0.3.4/extensions/structural/ui/src/wallOpenings.ts +210 -0
  269. toposync_core-0.3.4/extensions/structural/ui/tsconfig.json +14 -0
  270. toposync_core-0.3.4/extensions/structural/ui/webpack.config.js +42 -0
  271. toposync_core-0.3.4/extensions/vision/LICENSE +21 -0
  272. toposync_core-0.3.4/extensions/vision/README.md +98 -0
  273. toposync_core-0.3.4/extensions/vision/hatch_build.py +21 -0
  274. toposync_core-0.3.4/extensions/vision/manifests/rfdetr_det_medium.json +63 -0
  275. toposync_core-0.3.4/extensions/vision/manifests/rfdetr_det_nano.json +63 -0
  276. toposync_core-0.3.4/extensions/vision/manifests/rfdetr_det_small.json +63 -0
  277. toposync_core-0.3.4/extensions/vision/manifests/rtmdet_det_medium.json +64 -0
  278. toposync_core-0.3.4/extensions/vision/manifests/rtmdet_det_small.json +64 -0
  279. toposync_core-0.3.4/extensions/vision/manifests/rtmdet_det_tiny.json +64 -0
  280. toposync_core-0.3.4/extensions/vision/manifests/rtmdet_ins_medium.json +60 -0
  281. toposync_core-0.3.4/extensions/vision/manifests/rtmdet_ins_small.json +60 -0
  282. toposync_core-0.3.4/extensions/vision/manifests/rtmdet_ins_tiny.json +60 -0
  283. toposync_core-0.3.4/extensions/vision/pyproject.toml +35 -0
  284. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/__init__.py +3 -0
  285. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/extension.json +6 -0
  286. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/pipelines/__init__.py +99 -0
  287. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/pipelines/operators.py +247 -0
  288. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/pipelines/schemas.py +201 -0
  289. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/plugin.py +88 -0
  290. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/__init__.py +52 -0
  291. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/artifact_helpers.py +413 -0
  292. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/contracts.py +325 -0
  293. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/diagnostics.py +237 -0
  294. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/__init__.py +21 -0
  295. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/generic_onnx_boxes_parser.py +141 -0
  296. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/generic_segmentation_masks_parser.py +156 -0
  297. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/image_classification_logits_parser.py +102 -0
  298. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/rfdetr_parser.py +97 -0
  299. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/rtmdet_ins_parser.py +194 -0
  300. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/rtmdet_parser.py +112 -0
  301. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/runtime_backends/__init__.py +27 -0
  302. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/runtime_backends/onnxruntime_backend.py +457 -0
  303. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/runtime_upgrades.py +211 -0
  304. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/__init__.py +13 -0
  305. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/classification.py +170 -0
  306. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/detection.py +267 -0
  307. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/pose.py +308 -0
  308. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/segmentation.py +506 -0
  309. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/tracking.py +759 -0
  310. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/trackers/__init__.py +59 -0
  311. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/trackers/norfair_tracker.py +195 -0
  312. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/trackers/simple_iou_kalman.py +349 -0
  313. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/__init__.py +97 -0
  314. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/artifact_upload.py +104 -0
  315. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/builtin_data.py +125 -0
  316. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/custom_onnx.py +756 -0
  317. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/huggingface.py +580 -0
  318. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/huggingface_recipes.py +454 -0
  319. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/installer.py +789 -0
  320. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/local_build.py +922 -0
  321. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/manifests.py +459 -0
  322. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/model_store.py +183 -0
  323. toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/recommendations.py +540 -0
  324. toposync_core-0.3.4/frontend/dist/2463b90d9a316e4e5294.woff2 +0 -0
  325. toposync_core-0.3.4/frontend/dist/2582b0e4bcf85eceead0.ttf +0 -0
  326. toposync_core-0.3.4/frontend/dist/325.js +3 -0
  327. toposync_core-0.3.4/frontend/dist/325.js.LICENSE.txt +19 -0
  328. toposync_core-0.3.4/frontend/dist/325.js.map +1 -0
  329. toposync_core-0.3.4/frontend/dist/451.js +3 -0
  330. toposync_core-0.3.4/frontend/dist/451.js.LICENSE.txt +5 -0
  331. toposync_core-0.3.4/frontend/dist/451.js.map +1 -0
  332. toposync_core-0.3.4/frontend/dist/530.js +2 -0
  333. toposync_core-0.3.4/frontend/dist/530.js.map +1 -0
  334. toposync_core-0.3.4/frontend/dist/676.js +3 -0
  335. toposync_core-0.3.4/frontend/dist/676.js.LICENSE.txt +18 -0
  336. toposync_core-0.3.4/frontend/dist/676.js.map +1 -0
  337. toposync_core-0.3.4/frontend/dist/696.js +3 -0
  338. toposync_core-0.3.4/frontend/dist/696.js.LICENSE.txt +9 -0
  339. toposync_core-0.3.4/frontend/dist/696.js.map +1 -0
  340. toposync_core-0.3.4/frontend/dist/771.js +2 -0
  341. toposync_core-0.3.4/frontend/dist/771.js.map +1 -0
  342. toposync_core-0.3.4/frontend/dist/index.html +1 -0
  343. toposync_core-0.3.4/frontend/dist/main.js +2 -0
  344. toposync_core-0.3.4/frontend/dist/main.js.map +1 -0
  345. toposync_core-0.3.4/frontend/moduleFederationShared.js +33 -0
  346. toposync_core-0.3.4/frontend/package.json +34 -0
  347. toposync_core-0.3.4/frontend/packages/plugin-api/LICENSE +21 -0
  348. toposync_core-0.3.4/frontend/packages/plugin-api/README.md +48 -0
  349. toposync_core-0.3.4/frontend/packages/plugin-api/index.d.ts +273 -0
  350. toposync_core-0.3.4/frontend/packages/plugin-api/index.js +3 -0
  351. toposync_core-0.3.4/frontend/packages/plugin-api/package.json +39 -0
  352. toposync_core-0.3.4/frontend/packages/plugin-api/tsconfig.json +12 -0
  353. toposync_core-0.3.4/frontend/src/bootstrap.tsx +44 -0
  354. toposync_core-0.3.4/frontend/src/index.html +11 -0
  355. toposync_core-0.3.4/frontend/src/index.tsx +10 -0
  356. toposync_core-0.3.4/frontend/src/ui/App.tsx +1178 -0
  357. toposync_core-0.3.4/frontend/src/ui/CompositionSelectorModal.tsx +289 -0
  358. toposync_core-0.3.4/frontend/src/ui/CustomOnnxWizardModal.tsx +668 -0
  359. toposync_core-0.3.4/frontend/src/ui/HuggingFaceImportModal.tsx +806 -0
  360. toposync_core-0.3.4/frontend/src/ui/Icon.tsx +12 -0
  361. toposync_core-0.3.4/frontend/src/ui/LocalBuildConsentModal.tsx +127 -0
  362. toposync_core-0.3.4/frontend/src/ui/Modal.tsx +72 -0
  363. toposync_core-0.3.4/frontend/src/ui/ProcessingServerModal.tsx +302 -0
  364. toposync_core-0.3.4/frontend/src/ui/Viewport2D.tsx +2531 -0
  365. toposync_core-0.3.4/frontend/src/ui/Viewport3D.tsx +1036 -0
  366. toposync_core-0.3.4/frontend/src/ui/auth/AuthGate.tsx +256 -0
  367. toposync_core-0.3.4/frontend/src/ui/editor/measurementLineElementType.ts +149 -0
  368. toposync_core-0.3.4/frontend/src/ui/main2d/MainViewport2D.tsx +836 -0
  369. toposync_core-0.3.4/frontend/src/ui/main2d/render2dCache.ts +798 -0
  370. toposync_core-0.3.4/frontend/src/ui/notifications/pipelinesNotifications.tsx +432 -0
  371. toposync_core-0.3.4/frontend/src/ui/router.ts +57 -0
  372. toposync_core-0.3.4/frontend/src/ui/screens/AccessScreen.tsx +775 -0
  373. toposync_core-0.3.4/frontend/src/ui/screens/CompositionEditorScreen.tsx +1352 -0
  374. toposync_core-0.3.4/frontend/src/ui/screens/MainScreen.tsx +956 -0
  375. toposync_core-0.3.4/frontend/src/ui/screens/PipelinesScreen.tsx +934 -0
  376. toposync_core-0.3.4/frontend/src/ui/screens/ProcessingServersScreen.tsx +1156 -0
  377. toposync_core-0.3.4/frontend/src/ui/screens/SettingsScreen.tsx +774 -0
  378. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/InteractivePipelineEditor.tsx +262 -0
  379. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/PipelineDuplicateModal.tsx +110 -0
  380. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/PipelineTelemetryFieldModal.tsx +251 -0
  381. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/PipelineTelemetryOverviewCard.tsx +1168 -0
  382. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/PipelineTemplateApplyModal.tsx +193 -0
  383. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/constants.ts +297 -0
  384. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/InteractiveStepCard.tsx +365 -0
  385. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/InteractiveStepsList.tsx +58 -0
  386. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/InteractiveStepsToolbar.tsx +36 -0
  387. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/PipelinesNumberInput.tsx +66 -0
  388. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/CameraPanels.tsx +2983 -0
  389. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/CorePanels.tsx +1697 -0
  390. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/FilterExpressionEditor.tsx +562 -0
  391. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/ImageDrawModals.tsx +1856 -0
  392. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/OperatorConfigPanel.tsx +304 -0
  393. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/VisionPanels.tsx +2433 -0
  394. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/filterExpressionContext.ts +250 -0
  395. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/pipelineStepSnapshots.ts +133 -0
  396. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/useCameraContexts.ts +83 -0
  397. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/types.ts +45 -0
  398. toposync_core-0.3.4/frontend/src/ui/screens/pipelines/utils.ts +544 -0
  399. toposync_core-0.3.4/frontend/src/ui/streams/StreamsDashboard.tsx +1074 -0
  400. toposync_core-0.3.4/frontend/src/ui/streams/StreamsPtzOverlay.tsx +673 -0
  401. toposync_core-0.3.4/frontend/src/ui/styles/tokens.base.css +128 -0
  402. toposync_core-0.3.4/frontend/src/ui/styles/tokens.theme.topo-day.css +36 -0
  403. toposync_core-0.3.4/frontend/src/ui/styles/tokens.theme.topo-night.css +36 -0
  404. toposync_core-0.3.4/frontend/src/ui/styles/tokens.user-preferences.css +79 -0
  405. toposync_core-0.3.4/frontend/src/ui/styles.css +4901 -0
  406. toposync_core-0.3.4/frontend/src/util/api.ts +1614 -0
  407. toposync_core-0.3.4/frontend/src/util/i18n.ts +3476 -0
  408. toposync_core-0.3.4/frontend/src/util/moduleFederation.ts +51 -0
  409. toposync_core-0.3.4/frontend/src/util/theme.ts +134 -0
  410. toposync_core-0.3.4/frontend/tsconfig.json +13 -0
  411. toposync_core-0.3.4/frontend/webpack.config.js +74 -0
  412. toposync_core-0.3.4/hatch_build.py +40 -0
  413. toposync_core-0.3.4/package-lock.json +5708 -0
  414. toposync_core-0.3.4/package.json +24 -0
  415. toposync_core-0.3.4/packages/toposync/LICENSE +21 -0
  416. toposync_core-0.3.4/packages/toposync/README.md +25 -0
  417. toposync_core-0.3.4/packages/toposync/pyproject.toml +34 -0
  418. toposync_core-0.3.4/packages/toposync-streaming/LICENSE +21 -0
  419. toposync_core-0.3.4/packages/toposync-streaming/README.md +9 -0
  420. toposync_core-0.3.4/packages/toposync-streaming/pyproject.toml +23 -0
  421. toposync_core-0.3.4/packages/toposync-vision-cuda/LICENSE +21 -0
  422. toposync_core-0.3.4/packages/toposync-vision-cuda/README.md +5 -0
  423. toposync_core-0.3.4/packages/toposync-vision-cuda/pyproject.toml +34 -0
  424. toposync_core-0.3.4/packages/toposync-vision-directml/LICENSE +21 -0
  425. toposync_core-0.3.4/packages/toposync-vision-directml/README.md +5 -0
  426. toposync_core-0.3.4/packages/toposync-vision-directml/pyproject.toml +34 -0
  427. toposync_core-0.3.4/playwright.config.js +29 -0
  428. toposync_core-0.3.4/playwright.distribution.config.js +19 -0
  429. toposync_core-0.3.4/pyproject.toml +73 -0
  430. toposync_core-0.3.4/readme.md +28 -0
  431. toposync_core-0.3.4/release-dist/.gitignore +1 -0
  432. toposync_core-0.3.4/scripts/check_extension_wheels.py +135 -0
  433. toposync_core-0.3.4/scripts/dev.js +135 -0
  434. toposync_core-0.3.4/scripts/pipelines_runtime_demo.py +332 -0
  435. toposync_core-0.3.4/scripts/pipelines_stage15_capture_backends_demo.py +143 -0
  436. toposync_core-0.3.4/scripts/pipelines_stage4_camera_demo.py +263 -0
  437. toposync_core-0.3.4/scripts/pipelines_stage5_fanout_demo.py +361 -0
  438. toposync_core-0.3.4/scripts/pipelines_stage6_postprocess_demo.py +341 -0
  439. toposync_core-0.3.4/scripts/pipelines_stage7_origin_sinks_demo.py +261 -0
  440. toposync_core-0.3.4/scripts/pipelines_stage8_distributed_demo.py +273 -0
  441. toposync_core-0.3.4/scripts/test_distribution_install.py +363 -0
  442. toposync_core-0.3.4/src/toposync/__init__.py +10 -0
  443. toposync_core-0.3.4/src/toposync/__main__.py +7 -0
  444. toposync_core-0.3.4/src/toposync/app.py +3419 -0
  445. toposync_core-0.3.4/src/toposync/cli.py +80 -0
  446. toposync_core-0.3.4/src/toposync/extensions/__init__.py +15 -0
  447. toposync_core-0.3.4/src/toposync/extensions/base.py +75 -0
  448. toposync_core-0.3.4/src/toposync/extensions/manager.py +308 -0
  449. toposync_core-0.3.4/src/toposync/extensions/manifest.py +23 -0
  450. toposync_core-0.3.4/src/toposync/processing_server.py +8 -0
  451. toposync_core-0.3.4/src/toposync/runtime/__init__.py +6 -0
  452. toposync_core-0.3.4/src/toposync/runtime/auth.py +1470 -0
  453. toposync_core-0.3.4/src/toposync/runtime/config_store.py +742 -0
  454. toposync_core-0.3.4/src/toposync/runtime/device_store.py +26 -0
  455. toposync_core-0.3.4/src/toposync/runtime/event_bus.py +111 -0
  456. toposync_core-0.3.4/src/toposync/runtime/notifications/__init__.py +4 -0
  457. toposync_core-0.3.4/src/toposync/runtime/notifications/events.py +33 -0
  458. toposync_core-0.3.4/src/toposync/runtime/notifications/runtime.py +115 -0
  459. toposync_core-0.3.4/src/toposync/runtime/notifications/store.py +253 -0
  460. toposync_core-0.3.4/src/toposync/runtime/pipelines/__init__.py +97 -0
  461. toposync_core-0.3.4/src/toposync/runtime/pipelines/builtins.py +25 -0
  462. toposync_core-0.3.4/src/toposync/runtime/pipelines/compiler.py +317 -0
  463. toposync_core-0.3.4/src/toposync/runtime/pipelines/distributed/__init__.py +20 -0
  464. toposync_core-0.3.4/src/toposync/runtime/pipelines/distributed/orchestrator.py +431 -0
  465. toposync_core-0.3.4/src/toposync/runtime/pipelines/distributed/plan.py +202 -0
  466. toposync_core-0.3.4/src/toposync/runtime/pipelines/distributed/processing_server.py +787 -0
  467. toposync_core-0.3.4/src/toposync/runtime/pipelines/distributed/transport.py +397 -0
  468. toposync_core-0.3.4/src/toposync/runtime/pipelines/execution.py +555 -0
  469. toposync_core-0.3.4/src/toposync/runtime/pipelines/execution_scheduler.py +146 -0
  470. toposync_core-0.3.4/src/toposync/runtime/pipelines/images.py +182 -0
  471. toposync_core-0.3.4/src/toposync/runtime/pipelines/migration_legacy_cameras.py +298 -0
  472. toposync_core-0.3.4/src/toposync/runtime/pipelines/operator_registry.py +398 -0
  473. toposync_core-0.3.4/src/toposync/runtime/pipelines/operators_core.py +1098 -0
  474. toposync_core-0.3.4/src/toposync/runtime/pipelines/operators_distributed.py +381 -0
  475. toposync_core-0.3.4/src/toposync/runtime/pipelines/operators_gates.py +454 -0
  476. toposync_core-0.3.4/src/toposync/runtime/pipelines/operators_sinks.py +1062 -0
  477. toposync_core-0.3.4/src/toposync/runtime/pipelines/packet_contract.py +271 -0
  478. toposync_core-0.3.4/src/toposync/runtime/pipelines/preview.py +260 -0
  479. toposync_core-0.3.4/src/toposync/runtime/pipelines/python_dsl.py +548 -0
  480. toposync_core-0.3.4/src/toposync/runtime/pipelines/recommendations.py +589 -0
  481. toposync_core-0.3.4/src/toposync/runtime/pipelines/runtime.py +1083 -0
  482. toposync_core-0.3.4/src/toposync/runtime/pipelines/safe_expression.py +291 -0
  483. toposync_core-0.3.4/src/toposync/runtime/pipelines/shared_runtime.py +235 -0
  484. toposync_core-0.3.4/src/toposync/runtime/pipelines/stats.py +169 -0
  485. toposync_core-0.3.4/src/toposync/runtime/pipelines/step_snapshots.py +192 -0
  486. toposync_core-0.3.4/src/toposync/runtime/pipelines/telemetry.py +1531 -0
  487. toposync_core-0.3.4/src/toposync/runtime/pipelines/templates.py +109 -0
  488. toposync_core-0.3.4/src/toposync/runtime/processing_diagnostics.py +236 -0
  489. toposync_core-0.3.4/src/toposync/runtime/services.py +28 -0
  490. toposync_core-0.3.4/tests/test_artifact_memory_budget.py +101 -0
  491. toposync_core-0.3.4/tests/test_auth_local.py +372 -0
  492. toposync_core-0.3.4/tests/test_camera_artifact_privacy_operator.py +88 -0
  493. toposync_core-0.3.4/tests/test_camera_capture_backends.py +351 -0
  494. toposync_core-0.3.4/tests/test_camera_hub_start_timeout.py +46 -0
  495. toposync_core-0.3.4/tests/test_camera_image_adjust_operator.py +55 -0
  496. toposync_core-0.3.4/tests/test_camera_image_crop_operator.py +77 -0
  497. toposync_core-0.3.4/tests/test_camera_image_perspective_crop_operator.py +136 -0
  498. toposync_core-0.3.4/tests/test_camera_image_privacy_operator.py +105 -0
  499. toposync_core-0.3.4/tests/test_camera_motion_detector.py +39 -0
  500. toposync_core-0.3.4/tests/test_camera_onvif_client.py +124 -0
  501. toposync_core-0.3.4/tests/test_camera_onvif_discovery.py +35 -0
  502. toposync_core-0.3.4/tests/test_camera_onvif_ptz.py +124 -0
  503. toposync_core-0.3.4/tests/test_camera_preprocess_operators.py +319 -0
  504. toposync_core-0.3.4/tests/test_camera_source_onvif_fallback.py +95 -0
  505. toposync_core-0.3.4/tests/test_camera_source_start_recovery.py +97 -0
  506. toposync_core-0.3.4/tests/test_camera_yolo_annotate_mode.py +170 -0
  507. toposync_core-0.3.4/tests/test_camera_yolo_track_id_parsing.py +14 -0
  508. toposync_core-0.3.4/tests/test_cameras_mapping_api.py +218 -0
  509. toposync_core-0.3.4/tests/test_composition_meta.py +36 -0
  510. toposync_core-0.3.4/tests/test_config_store_external_edits.py +59 -0
  511. toposync_core-0.3.4/tests/test_core_filter_operator.py +202 -0
  512. toposync_core-0.3.4/tests/test_core_frontend_bundle.py +45 -0
  513. toposync_core-0.3.4/tests/test_extension_manager_compatibility.py +176 -0
  514. toposync_core-0.3.4/tests/test_extension_shutdown_callbacks.py +47 -0
  515. toposync_core-0.3.4/tests/test_home_assistant_notification_routes.py +284 -0
  516. toposync_core-0.3.4/tests/test_home_assistant_notify_operator_runtime.py +158 -0
  517. toposync_core-0.3.4/tests/test_legacy_camera_migration.py +74 -0
  518. toposync_core-0.3.4/tests/test_notifications_recovery.py +71 -0
  519. toposync_core-0.3.4/tests/test_onnxruntime_backend.py +356 -0
  520. toposync_core-0.3.4/tests/test_pipeline_best_frame_recommendations.py +65 -0
  521. toposync_core-0.3.4/tests/test_pipeline_debug_operator.py +65 -0
  522. toposync_core-0.3.4/tests/test_pipeline_distributed_runtime.py +107 -0
  523. toposync_core-0.3.4/tests/test_pipeline_execution_concurrency.py +99 -0
  524. toposync_core-0.3.4/tests/test_pipeline_extension_registration.py +133 -0
  525. toposync_core-0.3.4/tests/test_pipeline_frame_runtime.py +764 -0
  526. toposync_core-0.3.4/tests/test_pipeline_gates.py +254 -0
  527. toposync_core-0.3.4/tests/test_pipeline_operator_contracts.py +138 -0
  528. toposync_core-0.3.4/tests/test_pipeline_operator_sdk.py +224 -0
  529. toposync_core-0.3.4/tests/test_pipeline_orchestrator_bundle.py +297 -0
  530. toposync_core-0.3.4/tests/test_pipeline_origin_sinks.py +714 -0
  531. toposync_core-0.3.4/tests/test_pipeline_postprocess_artifacts.py +1232 -0
  532. toposync_core-0.3.4/tests/test_pipeline_python_dsl.py +120 -0
  533. toposync_core-0.3.4/tests/test_pipeline_runtime_core.py +290 -0
  534. toposync_core-0.3.4/tests/test_pipeline_stats.py +133 -0
  535. toposync_core-0.3.4/tests/test_pipeline_stream_state_snapshot_operator.py +72 -0
  536. toposync_core-0.3.4/tests/test_pipeline_telemetry.py +382 -0
  537. toposync_core-0.3.4/tests/test_pipeline_templates_multicamera.py +126 -0
  538. toposync_core-0.3.4/tests/test_pipeline_yolo_fanout.py +687 -0
  539. toposync_core-0.3.4/tests/test_pipelines_api.py +657 -0
  540. toposync_core-0.3.4/tests/test_processing_diagnostics.py +140 -0
  541. toposync_core-0.3.4/tests/test_rfdetr_parser.py +79 -0
  542. toposync_core-0.3.4/tests/test_rtmdet_ins_parser.py +70 -0
  543. toposync_core-0.3.4/tests/test_rtmdet_ins_runtime.py +245 -0
  544. toposync_core-0.3.4/tests/test_rtmdet_parser.py +68 -0
  545. toposync_core-0.3.4/tests/test_rtmdet_runtime.py +240 -0
  546. toposync_core-0.3.4/tests/test_streaming_arbitration.py +197 -0
  547. toposync_core-0.3.4/tests/test_streaming_camera_ingest.py +77 -0
  548. toposync_core-0.3.4/tests/test_streaming_distributed_routes.py +145 -0
  549. toposync_core-0.3.4/tests/test_streaming_distributed_service_auth.py +116 -0
  550. toposync_core-0.3.4/tests/test_streaming_engine_recovery.py +116 -0
  551. toposync_core-0.3.4/tests/test_streaming_ffmpeg_binary.py +91 -0
  552. toposync_core-0.3.4/tests/test_streaming_hardening_stage10.py +214 -0
  553. toposync_core-0.3.4/tests/test_streaming_last_frame_freeze.py +67 -0
  554. toposync_core-0.3.4/tests/test_streaming_mediamtx_binary.py +138 -0
  555. toposync_core-0.3.4/tests/test_streaming_models.py +139 -0
  556. toposync_core-0.3.4/tests/test_streaming_multiwriter_sticky_integration.py +75 -0
  557. toposync_core-0.3.4/tests/test_streaming_on_demand_writer_bridge.py +310 -0
  558. toposync_core-0.3.4/tests/test_streaming_placeholder.py +29 -0
  559. toposync_core-0.3.4/tests/test_streaming_resize.py +29 -0
  560. toposync_core-0.3.4/tests/test_streaming_transmission_camera_controls.py +132 -0
  561. toposync_core-0.3.4/tests/test_streaming_webrtc.py +129 -0
  562. toposync_core-0.3.4/tests/test_streaming_wizard_graph_builder.py +166 -0
  563. toposync_core-0.3.4/tests/test_streaming_writer_bridge_integration.py +146 -0
  564. toposync_core-0.3.4/tests/test_vision_classification_runtime.py +115 -0
  565. toposync_core-0.3.4/tests/test_vision_contracts.py +345 -0
  566. toposync_core-0.3.4/tests/test_vision_custom_onnx_api.py +314 -0
  567. toposync_core-0.3.4/tests/test_vision_detect_runtime.py +190 -0
  568. toposync_core-0.3.4/tests/test_vision_huggingface_api.py +350 -0
  569. toposync_core-0.3.4/tests/test_vision_local_build_rfdetr.py +48 -0
  570. toposync_core-0.3.4/tests/test_vision_manifest_import_api.py +247 -0
  571. toposync_core-0.3.4/tests/test_vision_model_install_api.py +594 -0
  572. toposync_core-0.3.4/tests/test_vision_model_recommendations.py +167 -0
  573. toposync_core-0.3.4/tests/test_vision_packaged_manifests.py +91 -0
  574. toposync_core-0.3.4/tests/test_vision_pose_runtime.py +112 -0
  575. toposync_core-0.3.4/tests/test_vision_runtime_upgrades.py +70 -0
  576. toposync_core-0.3.4/tests/test_vision_track_integrations.py +513 -0
  577. toposync_core-0.3.4/tests/test_vision_tracker_backends.py +133 -0
  578. toposync_core-0.3.4/uv.lock +1683 -0
@@ -0,0 +1,29 @@
1
+ .git
2
+ .gitignore
3
+ .DS_Store
4
+
5
+ .venv
6
+ .toposync-data
7
+ toposync-data
8
+
9
+ node_modules
10
+ **/node_modules
11
+ .yarn
12
+ .pnp.cjs
13
+ .pnp.loader.mjs
14
+ yarn.lock
15
+
16
+ dist
17
+ **/dist
18
+ build
19
+ **/build
20
+
21
+ .ruff_cache
22
+ __pycache__
23
+ *.pyc
24
+ .pytest_cache
25
+
26
+ test-results
27
+ playwright-report
28
+
29
+ *.log
@@ -0,0 +1,5 @@
1
+ # Local dev ports for a second Toposync instance
2
+ TOPOSYNC_BACKEND_PORT=8100
3
+ TOPOSYNC_FRONTEND_PORT=5174
4
+ TOPOSYNC_PROCESSING_PORT=9101
5
+ TOPOSYNC_DATA_DIR=.toposync-data
@@ -0,0 +1,39 @@
1
+ name: Distribution Smoke
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - main
8
+
9
+ jobs:
10
+ distribution-smoke:
11
+ runs-on: ubuntu-latest
12
+ timeout-minutes: 60
13
+
14
+ steps:
15
+ - name: Check out repository
16
+ uses: actions/checkout@v4
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.11"
22
+
23
+ - name: Set up uv
24
+ uses: astral-sh/setup-uv@v4
25
+
26
+ - name: Set up Node.js
27
+ uses: actions/setup-node@v4
28
+ with:
29
+ node-version: "22"
30
+ cache: "npm"
31
+
32
+ - name: Install Node dependencies
33
+ run: npm ci
34
+
35
+ - name: Install Playwright browser
36
+ run: npx playwright install --with-deps chromium
37
+
38
+ - name: Run distribution smoke test
39
+ run: python scripts/test_distribution_install.py
@@ -0,0 +1,39 @@
1
+ .DS_Store
2
+ .env
3
+ .venv
4
+ __pycache__/
5
+ *.pyc
6
+ .pytest_cache/
7
+ .ruff_cache/
8
+
9
+ node_modules/
10
+ yarn.lock
11
+ .pnp.cjs
12
+ .pnp.loader.mjs
13
+ .yarn/
14
+ dist/
15
+ build/
16
+ .parcel-cache/
17
+
18
+ .toposync-data/
19
+ .toposync-processor-data
20
+ toposync-data/
21
+
22
+ *.log
23
+
24
+ *.ignore.md
25
+ ignore/
26
+
27
+ # Playwright
28
+ test-results/
29
+ playwright-report/
30
+ yolo*.pt
31
+
32
+ # Streaming extension engines are downloaded at runtime.
33
+ extensions/streaming/src/toposync_ext_streaming/bin/mediamtx/**/mediamtx*
34
+ extensions/streaming/src/toposync_ext_streaming/bin/ffmpeg/**/ffmpeg*
35
+
36
+ # Vision model artifacts are provisioned locally and must not be committed.
37
+ extensions/vision/models/
38
+
39
+ *.temporary.*
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1 @@
1
+ nodeLinker: node-modules
@@ -0,0 +1,11 @@
1
+ # Agent notes for this repo
2
+
3
+ - Commit message style (based on existing history):
4
+ - Prefer `feat: ...`, `fix: ...`, `docs: ...`, `test: ...`, `refactor: ...`, `i18n: ...`.
5
+ - Use an optional scope when it helps (`feat(pipelines): ...`).
6
+ - Keep the summary short, imperative, and without a trailing period.
7
+ - Whenever you add a UI entry/option for the user, it must have clear value and make sense (don’t expose internal identifiers; generate them automatically).
8
+ - Don’t delete code you don’t understand just for “cleanup”; if you think it might be parallel work (by the user or another agent), leave it in the working tree and simply don’t include it in the commit (e.g., `git add -p`).
9
+ - If `toposync` is running, manual edits to `.toposync-data/config.json` are supported: the runtime reloads the file when it changes (mtime/size), and pipelines may be reconciled on the next orchestrator poll.
10
+ - Still prefer editing via the wizard/API (validation/normalization, less chance of conflicts). If editing manually, keep JSON + schema valid (notably `pipeline.graph.schema_version`); invalid files are renamed to `config.corrupt-*` and replaced with defaults. Avoid concurrent edits with the running UI/service (last-write-wins).
11
+ - TopoSync deve fornecer estruturas genéricas e empoderar extensões com recursos de base. Elas devem lidar com questões específicas de domínio, e não o TopoSync. Jamais aceite fazer "gambiarras" dentro do código do TopoSync para acomodar casos específicos de uma extensão.
@@ -0,0 +1,25 @@
1
+ FROM node:20-bookworm-slim AS node-build
2
+
3
+ WORKDIR /app
4
+ COPY . .
5
+
6
+ RUN npm ci
7
+ RUN npm run build:extensions
8
+ RUN npm run build:frontend
9
+
10
+
11
+ FROM ghcr.io/astral-sh/uv:python3.11-bookworm-slim AS runtime
12
+
13
+ WORKDIR /app
14
+ ENV PYTHONUNBUFFERED=1
15
+ ENV VIRTUAL_ENV=/app/.venv
16
+ ENV PATH="/app/.venv/bin:$PATH"
17
+
18
+ COPY --from=node-build /app /app
19
+
20
+ RUN uv sync --frozen --no-dev --no-editable
21
+
22
+ EXPOSE 8000
23
+ VOLUME ["/data"]
24
+
25
+ CMD ["toposync", "serve", "--host", "0.0.0.0", "--port", "8000", "--data-dir", "/data", "--frontend-dir", "/app/frontend/dist"]
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mateus Calza
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,42 @@
1
+ Metadata-Version: 2.4
2
+ Name: toposync-core
3
+ Version: 0.3.4
4
+ Summary: Toposync core runtime (Python backend + extension host).
5
+ License-Expression: MIT
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.11
8
+ Requires-Dist: fastapi>=0.115
9
+ Requires-Dist: packaging>=24.0
10
+ Requires-Dist: pydantic>=2.8
11
+ Requires-Dist: python-multipart>=0.0.9
12
+ Requires-Dist: uvicorn>=0.30
13
+ Description-Content-Type: text/markdown
14
+
15
+ # Toposync
16
+
17
+ A local-first platform (Python + React + ThreeJS) for a home automation “digital twin” — built on an **extensions runtime**.
18
+
19
+ This repo’s main goal is to solve the “biggest knot”: **extensions with a Python backend + TypeScript frontend installable via wheel** (without requiring a build toolchain on the user’s machine).
20
+
21
+ ## Documentation
22
+
23
+ - Index: `docs/README.md`
24
+ - Self-hosting (production): `docs/SELF_HOSTING.md`
25
+ - Running in dev: `docs/DEVELOPMENT.md`
26
+ - Pipelines (DAG): `docs/PIPELINES.md`
27
+ - Extensions (runtime): `docs/EXTENSIONS_RUNTIME.md`
28
+ - TS contract / plugin API: `docs/PLUGIN_API.md`
29
+ - Creating an extension: `docs/EXTENSION_AUTHORING.md`
30
+
31
+ ## Quickstart (dev)
32
+
33
+ Prerequisites: `uv`, Python 3.11+, and Node 20+.
34
+
35
+ ```bash
36
+ uv sync
37
+ npm install
38
+ npm run build:extensions
39
+ npm run dev
40
+ ```
41
+
42
+ Open `http://localhost:5173`.
@@ -0,0 +1,9 @@
1
+ services:
2
+ toposync:
3
+ image: toposync:local
4
+ build: .
5
+ ports:
6
+ - "8000:8000"
7
+ volumes:
8
+ - ./toposync-data:/data
9
+ restart: unless-stopped
@@ -0,0 +1,19 @@
1
+ # Arquitetura
2
+
3
+ ## Base
4
+
5
+ - **Backend (Python)**: host de extensões (entry points), event bus async (com prevenção/substituição), service registry e servidor de assets estáticos das extensões.
6
+ - **Frontend (React/ThreeJS)**: host que consulta `/api/extensions` e carrega `remoteEntry.js` de cada extensão em runtime (Module Federation).
7
+ - **Extensão = pacote Python**: `extension.json` + entry point + `static/remoteEntry.js` embutido no wheel.
8
+ - **Contrato TS (host)**: extensões registram `element types` (objeto 3D + modais de ação/edição), `notification renderers`, `settings panels` e **temas** (ver `frontend/packages/plugin-api/index.d.ts`).
9
+
10
+ ## Estrutura do repo
11
+
12
+ - `src/toposync`: backend core (FastAPI) + runtime de extensões
13
+ - `frontend`: app host (React/Three + webpack)
14
+ - `extensions/structural`: extensão “first‑party” (paredes/áreas: ferramentas 2D + render 3D)
15
+ - `extensions/models`: extensão “first‑party” (importar GLB/GLTF + prévia 2D + render 3D)
16
+ - `extensions/home_assistant`: extensão “first‑party” (scaffold: configurar servidores Home Assistant)
17
+ - `extensions/cameras`: extensão “first‑party” (RTSP snapshots + processamento local/remoto + detecções)
18
+ - `extensions/images`: extensão “first‑party” (importar imagens como sobreposição ou decalque)
19
+
@@ -0,0 +1,103 @@
1
+ # Build (produção / distribuição)
2
+
3
+ ## Backend (core)
4
+
5
+ Gera wheel/sdist do core:
6
+
7
+ ```bash
8
+ uv build
9
+ ```
10
+
11
+ Isso gera o pacote `toposync-core`.
12
+
13
+ Durante o build, o hook do core garante que o frontend host entre no artefato. Se `frontend/dist` ainda não existir, ele tenta gerar esse bundle com:
14
+
15
+ ```bash
16
+ npm run build:frontend
17
+ ```
18
+
19
+ O wheel/sdist final já sai com a UI host embutida dentro do pacote Python.
20
+
21
+ ## Produto (bundle padrão)
22
+
23
+ Gera o wheel do pacote instalável por usuário final:
24
+
25
+ ```bash
26
+ uv build packages/toposync
27
+ ```
28
+
29
+ Isso gera o pacote `toposync`, que depende de `toposync-core` + extensões padrão.
30
+
31
+ Para gerar o bundle opcional de streaming:
32
+
33
+ ```bash
34
+ uv build packages/toposync-streaming
35
+ ```
36
+
37
+ Isso gera o pacote `toposync-streaming`, que depende do bundle padrão `toposync` + `toposync-ext-streaming`.
38
+
39
+ ## Bundles alternativos de aceleração
40
+
41
+ Para gerar os bundles first-party de aceleração opcional:
42
+
43
+ ```bash
44
+ uv build packages/toposync-vision-cuda
45
+ uv build packages/toposync-vision-directml
46
+ ```
47
+
48
+ Eles geram respectivamente `toposync-vision-cuda` e `toposync-vision-directml`.
49
+
50
+ ## Frontend host (override opcional)
51
+
52
+ Se você quiser rebuildar manualmente o bundle do host antes do `uv build`:
53
+
54
+ ```bash
55
+ npm run build:frontend
56
+ ```
57
+
58
+ ## Extensões (wheel com assets)
59
+
60
+ 1) Build do bundle JS da extensão (gera `static/` dentro do pacote Python):
61
+
62
+ ```bash
63
+ npm run build:extensions
64
+ ```
65
+
66
+ 2) Build do wheel da extensão:
67
+
68
+ ```bash
69
+ uv build extensions/structural
70
+ uv build extensions/models
71
+ uv build extensions/home_assistant
72
+ uv build extensions/cameras
73
+ uv build extensions/images
74
+ uv build extensions/streaming
75
+ ```
76
+
77
+ Isso gera `extensions/<ext>/dist/*.whl`. Usuário final instala só o wheel (sem Node) e o app carrega o frontend prebuilt.
78
+
79
+ Para validar que cada wheel leva seus assets de runtime (`extension.json`, `static/`, manifests, dados e licenças) e que a `vision` não embute pesos ONNX publicáveis, rode:
80
+
81
+ ```bash
82
+ python scripts/check_extension_wheels.py
83
+ ```
84
+
85
+ ## Smoke test de distribuição
86
+
87
+ Para validar o fluxo de release fora do monorepo, rode:
88
+
89
+ ```bash
90
+ python scripts/test_distribution_install.py
91
+ ```
92
+
93
+ Esse smoke test:
94
+
95
+ - rebuilda o frontend host e as UIs das extensões padrão
96
+ - gera um wheelhouse local com `toposync-core`, `toposync` e as extensões padrão
97
+ - cria um venv limpo fora do checkout
98
+ - instala `toposync` com `pip` a partir dos wheels gerados
99
+ - sobe `toposync serve` usando apenas o ambiente instalado
100
+ - valida `/api/extensions`
101
+ - roda Playwright contra a UI host embutida para confirmar carregamento dos remotes
102
+
103
+ A CI executa esse mesmo fluxo no workflow [`.github/workflows/distribution-smoke.yml`](/Users/c/Projects/toposync-2/.github/workflows/distribution-smoke.yml).
@@ -0,0 +1,15 @@
1
+ # Persistência (local‑first)
2
+
3
+ - O backend salva a configuração em um único arquivo: `<data_dir>/config.json`
4
+ - Arquivos auxiliares do usuário ficam em: `<data_dir>/files/`
5
+ - Para definir o diretório explicitamente use `TOPOSYNC_DATA_DIR=/caminho/para/dados` (ou `toposync serve --data-dir ...`)
6
+ - Dica (dev): `uv run toposync serve --data-dir .toposync-data` (pasta ignorada pelo git)
7
+ - Default por SO:
8
+ - Linux: `$XDG_DATA_HOME/toposync` ou `~/.local/share/toposync`
9
+ - macOS: `~/Library/Application Support/Toposync`
10
+ - Windows: `%APPDATA%/Toposync`
11
+
12
+ Se bater dúvida sobre *qual* diretório está em uso, chame `GET /api/system/paths`.
13
+
14
+ O frontend lê/salva a composição via `GET/PUT /api/composition`. Versões antigas usavam `localStorage` (`toposync.composition.v1`) e o app tenta migrar automaticamente quando o backend está vazio.
15
+
@@ -0,0 +1,119 @@
1
+ # Rodar em dev
2
+
3
+ Pré‑requisitos: `uv`, Python 3.11+ e Node 20+.
4
+
5
+ ## 1) Python (deps + extensões do repo em editable)
6
+
7
+ ```bash
8
+ uv sync
9
+ ```
10
+
11
+ ## 2) Node (workspaces)
12
+
13
+ ```bash
14
+ npm install
15
+ ```
16
+
17
+ ## 3) Build das UIs das extensões (gera `static/remoteEntry.js` nos pacotes Python)
18
+
19
+ Atalho:
20
+
21
+ ```bash
22
+ npm run build:extensions
23
+ ```
24
+
25
+ Ou individual:
26
+
27
+ ```bash
28
+ npm --workspace @toposync/extension-structural-ui run build
29
+ npm --workspace @toposync/extension-models-ui run build
30
+ npm --workspace @toposync/extension-home-assistant-ui run build
31
+ npm --workspace @toposync/extension-cameras-ui run build
32
+ npm --workspace @toposync/extension-images-ui run build
33
+ ```
34
+
35
+ ## 4) Rodar backend + frontend
36
+
37
+ Separado:
38
+
39
+ ```bash
40
+ uv run python -m toposync serve --data-dir .toposync-data
41
+ npm --workspace @toposync/frontend run dev
42
+ ```
43
+
44
+ Atalho (um comando):
45
+
46
+ ```bash
47
+ npm run dev
48
+ ```
49
+
50
+ Abra `http://localhost:5173`.
51
+
52
+ ## Rodar 2 instâncias em paralelo (sem conflito)
53
+
54
+ As portas padrão continuam:
55
+
56
+ - backend: `8000`
57
+ - frontend: `5173`
58
+ - processing server (quando usado): `9001`
59
+
60
+ Você pode sobrescrever por ambiente:
61
+
62
+ - `TOPOSYNC_BACKEND_PORT`
63
+ - `TOPOSYNC_FRONTEND_PORT`
64
+ - `TOPOSYNC_PROCESSING_PORT`
65
+ - `TOPOSYNC_DATA_DIR` (recomendado quando rodar duas instâncias)
66
+ - `TOPOSYNC_AUTH_MODE` (`enforced` padrão, `bypass` para dev/curl/e2e)
67
+ - `TOPOSYNC_AUTH_COOKIE_SECURE` (`auto` padrão; force `true` quando rodar atrás de HTTPS/reverse proxy)
68
+
69
+ `npm run dev` lê automaticamente variáveis de `.env` (ou de `TOPOSYNC_ENV_FILE`, se definido).
70
+
71
+ Exemplo usando o template:
72
+
73
+ ```bash
74
+ cp .env.example .env
75
+ npm run dev
76
+ ```
77
+
78
+ Para rodar sem autenticação local em dev:
79
+
80
+ ```bash
81
+ TOPOSYNC_AUTH_MODE=bypass npm run dev
82
+ ```
83
+
84
+ Exemplo de segunda instância local:
85
+
86
+ ```bash
87
+ TOPOSYNC_BACKEND_PORT=8100 \
88
+ TOPOSYNC_FRONTEND_PORT=5174 \
89
+ TOPOSYNC_DATA_DIR=.toposync-data-2 \
90
+ npm run dev
91
+ ```
92
+
93
+ Nesse caso, abra `http://localhost:5174`.
94
+
95
+ ## Quando rodar o quê (atalho mental)
96
+
97
+ - Alterou código Python do core ou da extensão → reinicie `uv run python -m toposync serve` (use o mesmo `--data-dir`, se estiver usando)
98
+ - Alterou UI do host → o `webpack-dev-server` recarrega (HMR)
99
+ - Alterou UI de uma extensão → rode `npm --workspace <ext-ui> run build` (ou use `--watch`) e dê refresh
100
+
101
+ ## Testes E2E (Playwright)
102
+
103
+ 1) Instalar deps Node:
104
+
105
+ ```bash
106
+ npm install
107
+ ```
108
+
109
+ 2) Instalar o browser do Playwright (1x):
110
+
111
+ ```bash
112
+ npx playwright install chromium
113
+ ```
114
+
115
+ 3) Rodar:
116
+
117
+ ```bash
118
+ npm run test:e2e
119
+ ```
@@ -0,0 +1,31 @@
1
+ # Extensões inclusas no repo
2
+
3
+ ## `extensions/structural`
4
+
5
+ - Paredes/áreas: ferramentas 2D + render 3D.
6
+
7
+ ## `extensions/models`
8
+
9
+ - Importar GLB/GLTF + prévia 2D + render 3D.
10
+ - Faz upload para o backend via `POST /api/files/upload` (salva em `<data_dir>/files/<dir>/...`).
11
+ - Gera uma prévia PNG top‑down no browser (WebGL) e também salva em `/files`.
12
+ - Cria um elemento `com.toposync.models.gltf` com metadados de escala (para 2D ↔ 3D baterem).
13
+
14
+ ## `extensions/home_assistant`
15
+
16
+ - Scaffold: configurar servidores Home Assistant.
17
+ - Elemento “Home Assistant item” com visualizações especiais (luminária, vento climatizado e **modelo 3D**).
18
+
19
+ ## `extensions/cameras`
20
+
21
+ - RTSP snapshots, ingestão e operadores de pré/pós-processamento para pipelines de câmera.
22
+
23
+ ## `extensions/images`
24
+
25
+ - Importar imagens como sobreposição ou decalque.
26
+
27
+ ## `extensions/vision`
28
+
29
+ - Detecção, rastreamento, segmentação de instâncias e pose por tarefa pública.
30
+ - Runtime oficial first-party baseado em ONNX Runtime.
31
+ - Caminho padrão do produto: ONNX Runtime CPU; aceleração é opcional e explícita.
@@ -0,0 +1,72 @@
1
+ # Extensões (runtime)
2
+
3
+ ## 1) Descoberta no backend (entry points)
4
+
5
+ Cada extensão declara um entry point em `toposync.extensions`. O core descobre tudo via `importlib.metadata.entry_points()` e instancia o plugin.
6
+
7
+ Exemplo (`extensions/structural/pyproject.toml`):
8
+
9
+ ```toml
10
+ [project.entry-points."toposync.extensions"]
11
+ structural = "toposync_ext_structural.plugin:StructuralExtension"
12
+ ```
13
+
14
+ ## 2) Manifesto (`extension.json`)
15
+
16
+ O core lê `extension.json` via `importlib.resources` dentro do pacote da extensão. Esse manifesto é o contrato mínimo e é versionado por `schema_version`.
17
+
18
+ Exemplo:
19
+
20
+ ```json
21
+ {
22
+ "schema_version": 1,
23
+ "id": "com.suaorg.minha_ext",
24
+ "name": "Minha Extensão",
25
+ "version": "0.1.0",
26
+ "requires_core_version": ">=0.3,<0.4",
27
+ "requires_extensions": ["com.toposync.cameras>=0.1.0"],
28
+ "frontend": {
29
+ "kind": "module-federation",
30
+ "remote_entry": "remoteEntry.js",
31
+ "scope": "minha_ext",
32
+ "module": "./activate"
33
+ }
34
+ }
35
+ ```
36
+
37
+ Campos de compatibilidade:
38
+
39
+ - `requires_core_version`: specifier PEP 440 avaliado contra a versão atual do `toposync-core`
40
+ - `requires_extensions`: lista de ids de extensão obrigatórios, opcionalmente com specifier de versão no formato `com.suaorg.outra_ext>=1.2`
41
+
42
+ O loader valida esses requisitos antes do `setup()`. Extensões incompatíveis são ignoradas e registradas em log.
43
+
44
+ ## 3) Servir assets estáticos
45
+
46
+ Como o bundle do frontend está dentro do wheel, o backend expõe:
47
+
48
+ - `/extensions/<extension_id>/<path>`
49
+
50
+ E o endpoint `/api/extensions` retorna, para cada extensão, um `frontend.remote_entry_url` já pronto (relativo, para funcionar atrás de proxy).
51
+
52
+ ## 4) Carregamento no frontend (runtime)
53
+
54
+ O host faz:
55
+
56
+ 1) `GET /api/extensions`
57
+ 2) para cada extensão com `frontend.kind = "module-federation"`:
58
+ - injeta o script `remoteEntry.js`
59
+ - inicializa o share scope (`__webpack_init_sharing__`)
60
+ - chama `container.get("./activate")`
61
+ - executa `activate(host)`
62
+
63
+ Ou seja: instalar o wheel = instalar backend + UI prebuilt, e o host “puxa” isso automaticamente.
64
+
65
+ ## Backend: hooks e serviços (base)
66
+
67
+ O core expõe (para evoluir):
68
+
69
+ - `EventBus`: pipeline async com prioridade e `EventOutcome` (stop propagation, prevent default, override payload/result)
70
+ - `ServiceRegistry`: registry simples para desacoplar extensões por ID
71
+
72
+ Ponto de partida de evento (exemplo atual): `device.action_requested`.