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.
- toposync_core-0.3.4/.dockerignore +29 -0
- toposync_core-0.3.4/.env.example +5 -0
- toposync_core-0.3.4/.github/workflows/distribution-smoke.yml +39 -0
- toposync_core-0.3.4/.gitignore +39 -0
- toposync_core-0.3.4/.python-version +1 -0
- toposync_core-0.3.4/.yarnrc.yml +1 -0
- toposync_core-0.3.4/AGENTS.md +11 -0
- toposync_core-0.3.4/Dockerfile +25 -0
- toposync_core-0.3.4/LICENSE +21 -0
- toposync_core-0.3.4/PKG-INFO +42 -0
- toposync_core-0.3.4/docker-compose.yml +9 -0
- toposync_core-0.3.4/docs/ARCHITECTURE.md +19 -0
- toposync_core-0.3.4/docs/BUILD.md +103 -0
- toposync_core-0.3.4/docs/DATA.md +15 -0
- toposync_core-0.3.4/docs/DEVELOPMENT.md +119 -0
- toposync_core-0.3.4/docs/EXTENSIONS_FIRST_PARTY.md +31 -0
- toposync_core-0.3.4/docs/EXTENSIONS_RUNTIME.md +72 -0
- toposync_core-0.3.4/docs/EXTENSION_AUTHORING.md +116 -0
- toposync_core-0.3.4/docs/PIPELINES.md +549 -0
- toposync_core-0.3.4/docs/PLUGIN_API.md +127 -0
- toposync_core-0.3.4/docs/PROCESSING_SERVER_DEVELOPMENT.md +179 -0
- toposync_core-0.3.4/docs/README.md +14 -0
- toposync_core-0.3.4/docs/SELF_HOSTING.md +182 -0
- toposync_core-0.3.4/docs/TROUBLESHOOTING.md +4 -0
- toposync_core-0.3.4/docs/VISION_MODEL_PROVISIONING.md +207 -0
- toposync_core-0.3.4/docs/deep_research_streaming.md +257 -0
- toposync_core-0.3.4/docs/dossie_app_mobile.md +1046 -0
- toposync_core-0.3.4/docs/dossie_implementacao_vision_toposync.md +1768 -0
- toposync_core-0.3.4/docs/dossie_operadores_movimento.md +959 -0
- toposync_core-0.3.4/docs/dossie_transmissoes_streaming.md +1600 -0
- toposync_core-0.3.4/docs/plan_rtmdet_local_provisioning_yellow.md +615 -0
- toposync_core-0.3.4/e2e/distribution.spec.js +64 -0
- toposync_core-0.3.4/e2e/routing.spec.js +26 -0
- toposync_core-0.3.4/e2e/settings.spec.js +234 -0
- toposync_core-0.3.4/extensions/cameras/LICENSE +21 -0
- toposync_core-0.3.4/extensions/cameras/README.md +59 -0
- toposync_core-0.3.4/extensions/cameras/pyproject.toml +19 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/__init__.py +1 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/extension.json +12 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/onvif/__init__.py +28 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/onvif/client.py +845 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/onvif/discovery.py +181 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/pipelines/__init__.py +61 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/pipelines/operators.py +2990 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/pipelines/postprocess.py +5095 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/plugin.py +1733 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/__init__.py +2 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/camera_hub.py +174 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/frame_grabber.py +838 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/mapping.py +543 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/motion.py +179 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/motion_bgsub.py +457 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/motion_sample_bg.py +532 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/processing/yolo.py +475 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/settings.py +250 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/326.js +2 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/326.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/4.js +2 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/4.js.LICENSE.txt +19 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/623.js +2 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/623.js.LICENSE.txt +19 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/703.js +2 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/703.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/753.js +2 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/753.js.LICENSE.txt +5 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/main.js +2 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/main.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/cameras/src/toposync_ext_cameras/static/remoteEntry.js +1 -0
- toposync_core-0.3.4/extensions/cameras/ui/package.json +22 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/activate.tsx +13 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/api/camerasApi.ts +255 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/assets.d.ts +5 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/constants.ts +15 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/elements/CameraElementType.tsx +1859 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/entry.ts +3 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/parsing.ts +304 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/settings/CamerasSettingsPanel.tsx +874 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/tools/addCameraTool.ts +24 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/translations.ts +248 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/types.ts +181 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/ui/SubModal.tsx +50 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/wizard/CameraPipelineWizardModal.tsx +443 -0
- toposync_core-0.3.4/extensions/cameras/ui/src/yolo.ts +111 -0
- toposync_core-0.3.4/extensions/cameras/ui/tsconfig.json +13 -0
- toposync_core-0.3.4/extensions/cameras/ui/webpack.config.js +46 -0
- toposync_core-0.3.4/extensions/home_assistant/LICENSE +21 -0
- toposync_core-0.3.4/extensions/home_assistant/README.md +11 -0
- toposync_core-0.3.4/extensions/home_assistant/pyproject.toml +19 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/__init__.py +4 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/extension.json +12 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/pipelines.py +258 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/plugin.py +1058 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/326.js +2 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/326.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/4.js +2 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/4.js.LICENSE.txt +19 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/623.js +2 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/623.js.LICENSE.txt +19 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/703.js +2 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/703.js.LICENSE.txt +18 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/753.js +2 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/753.js.LICENSE.txt +5 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/980.js +1 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/main.js +2 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/main.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/home_assistant/src/toposync_ext_home_assistant/static/remoteEntry.js +1 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/package.json +23 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/activate.tsx +13 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/airflow.ts +387 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/api/homeAssistantApi.ts +49 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/assets.d.ts +5 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/constants.ts +29 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/domain.ts +94 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/elements/HomeAssistantElementType.tsx +1129 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/entry.ts +4 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/fontawesome.ts +96 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/liveStates.ts +253 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/parsing.ts +135 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/settings/HomeAssistantSettingsPanel.tsx +585 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/tools/addHomeAssistantTool.ts +36 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/translations.ts +202 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/types.ts +85 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/ui/HomeAssistantAction.tsx +203 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/src/ui/HomeAssistantEditor.tsx +1002 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/tsconfig.json +14 -0
- toposync_core-0.3.4/extensions/home_assistant/ui/webpack.config.js +46 -0
- toposync_core-0.3.4/extensions/images/LICENSE +21 -0
- toposync_core-0.3.4/extensions/images/README.md +9 -0
- toposync_core-0.3.4/extensions/images/pyproject.toml +19 -0
- toposync_core-0.3.4/extensions/images/src/toposync_ext_images/__init__.py +2 -0
- toposync_core-0.3.4/extensions/images/src/toposync_ext_images/extension.json +13 -0
- toposync_core-0.3.4/extensions/images/src/toposync_ext_images/plugin.py +16 -0
- toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/326.js +2 -0
- toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/326.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/703.js +2 -0
- toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/703.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/main.js +2 -0
- toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/main.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/images/src/toposync_ext_images/static/remoteEntry.js +1 -0
- toposync_core-0.3.4/extensions/images/ui/package.json +22 -0
- toposync_core-0.3.4/extensions/images/ui/src/activate.tsx +14 -0
- toposync_core-0.3.4/extensions/images/ui/src/api/filesApi.ts +23 -0
- toposync_core-0.3.4/extensions/images/ui/src/constants.ts +13 -0
- toposync_core-0.3.4/extensions/images/ui/src/debug.ts +14 -0
- toposync_core-0.3.4/extensions/images/ui/src/dropHandlers/imageDropHandler.ts +65 -0
- toposync_core-0.3.4/extensions/images/ui/src/elements/ImageEditorModal.tsx +242 -0
- toposync_core-0.3.4/extensions/images/ui/src/elements/ImageElementType.tsx +240 -0
- toposync_core-0.3.4/extensions/images/ui/src/elements/ImageScaleReference.tsx +387 -0
- toposync_core-0.3.4/extensions/images/ui/src/entry.ts +4 -0
- toposync_core-0.3.4/extensions/images/ui/src/imageUtils.ts +36 -0
- toposync_core-0.3.4/extensions/images/ui/src/parsing.ts +35 -0
- toposync_core-0.3.4/extensions/images/ui/src/tools/addImageTool.ts +225 -0
- toposync_core-0.3.4/extensions/images/ui/src/translations.ts +90 -0
- toposync_core-0.3.4/extensions/images/ui/src/types.ts +9 -0
- toposync_core-0.3.4/extensions/images/ui/tsconfig.json +14 -0
- toposync_core-0.3.4/extensions/images/ui/webpack.config.js +42 -0
- toposync_core-0.3.4/extensions/models/LICENSE +21 -0
- toposync_core-0.3.4/extensions/models/README.md +6 -0
- toposync_core-0.3.4/extensions/models/pyproject.toml +19 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/__init__.py +4 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/extension.json +13 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/plugin.py +16 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/326.js +2 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/326.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/703.js +2 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/703.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/753.js +2 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/753.js.LICENSE.txt +5 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/main.js +2 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/main.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/models/src/toposync_ext_models/static/remoteEntry.js +1 -0
- toposync_core-0.3.4/extensions/models/ui/package.json +22 -0
- toposync_core-0.3.4/extensions/models/ui/src/activate.tsx +11 -0
- toposync_core-0.3.4/extensions/models/ui/src/api/filesApi.ts +23 -0
- toposync_core-0.3.4/extensions/models/ui/src/constants.ts +8 -0
- toposync_core-0.3.4/extensions/models/ui/src/debug.ts +14 -0
- toposync_core-0.3.4/extensions/models/ui/src/elements/ModelElementType.tsx +244 -0
- toposync_core-0.3.4/extensions/models/ui/src/entry.ts +4 -0
- toposync_core-0.3.4/extensions/models/ui/src/parsing.ts +29 -0
- toposync_core-0.3.4/extensions/models/ui/src/preview/modelPreview.ts +155 -0
- toposync_core-0.3.4/extensions/models/ui/src/runtime/gltfModel.ts +195 -0
- toposync_core-0.3.4/extensions/models/ui/src/tools/importModelTool.ts +230 -0
- toposync_core-0.3.4/extensions/models/ui/src/translations.ts +39 -0
- toposync_core-0.3.4/extensions/models/ui/src/types.ts +20 -0
- toposync_core-0.3.4/extensions/models/ui/tsconfig.json +14 -0
- toposync_core-0.3.4/extensions/models/ui/webpack.config.js +42 -0
- toposync_core-0.3.4/extensions/streaming/LICENSE +21 -0
- toposync_core-0.3.4/extensions/streaming/LICENSE.ffmpeg +16 -0
- toposync_core-0.3.4/extensions/streaming/LICENSE.mediamtx +21 -0
- toposync_core-0.3.4/extensions/streaming/README.md +720 -0
- toposync_core-0.3.4/extensions/streaming/pyproject.toml +19 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/__init__.py +2 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/api/__init__.py +2 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/api/models.py +715 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/api/routes.py +1426 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/bin/ffmpeg/LICENSE +5 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/bin/mediamtx/LICENSE +21 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/extension.json +14 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/pipelines/__init__.py +11 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/pipelines/operators.py +182 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/plugin.py +234 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/326.js +2 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/326.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/4.js +2 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/4.js.LICENSE.txt +19 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/623.js +2 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/623.js.LICENSE.txt +19 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/703.js +2 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/703.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/main.js +2 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/main.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/static/remoteEntry.js +1 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/__init__.py +4 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/arbitration.py +149 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/camera_ingest.py +192 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/distributed_sync.py +172 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/engine_manager.py +891 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/ffmpeg_binary.py +152 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/mediamtx_api_client.py +109 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/mediamtx_binary.py +271 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/mediamtx_config.py +240 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/mediamtx_processes.py +115 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/placeholder.py +39 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/platform.py +50 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/publisher_manager.py +730 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/resize.py +52 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/runtime_state.py +485 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/streaming/writer_bridge.py +1095 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/wizard/__init__.py +10 -0
- toposync_core-0.3.4/extensions/streaming/src/toposync_ext_streaming/wizard/pipeline_builder.py +259 -0
- toposync_core-0.3.4/extensions/streaming/ui/package.json +22 -0
- toposync_core-0.3.4/extensions/streaming/ui/src/activate.tsx +9 -0
- toposync_core-0.3.4/extensions/streaming/ui/src/api/streamingApi.ts +162 -0
- toposync_core-0.3.4/extensions/streaming/ui/src/constants.ts +1 -0
- toposync_core-0.3.4/extensions/streaming/ui/src/entry.ts +3 -0
- toposync_core-0.3.4/extensions/streaming/ui/src/settings/StreamingSettingsPanel.tsx +2026 -0
- toposync_core-0.3.4/extensions/streaming/ui/src/settings/SubModal.tsx +50 -0
- toposync_core-0.3.4/extensions/streaming/ui/src/settings/WizardCreatePipelineFromTransmission.tsx +568 -0
- toposync_core-0.3.4/extensions/streaming/ui/src/translations.ts +438 -0
- toposync_core-0.3.4/extensions/streaming/ui/src/types.ts +201 -0
- toposync_core-0.3.4/extensions/streaming/ui/tsconfig.json +13 -0
- toposync_core-0.3.4/extensions/streaming/ui/webpack.config.js +42 -0
- toposync_core-0.3.4/extensions/structural/LICENSE +21 -0
- toposync_core-0.3.4/extensions/structural/README.md +10 -0
- toposync_core-0.3.4/extensions/structural/pyproject.toml +19 -0
- toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/__init__.py +1 -0
- toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/extension.json +13 -0
- toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/plugin.py +9 -0
- toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/12.js +2 -0
- toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/12.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/326.js +2 -0
- toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/326.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/main.js +1 -0
- toposync_core-0.3.4/extensions/structural/src/toposync_ext_structural/static/remoteEntry.js +1 -0
- toposync_core-0.3.4/extensions/structural/ui/package.json +20 -0
- toposync_core-0.3.4/extensions/structural/ui/src/activate.tsx +15 -0
- toposync_core-0.3.4/extensions/structural/ui/src/colors.ts +16 -0
- toposync_core-0.3.4/extensions/structural/ui/src/constants.ts +25 -0
- toposync_core-0.3.4/extensions/structural/ui/src/elements/AreaElementType.tsx +504 -0
- toposync_core-0.3.4/extensions/structural/ui/src/elements/PoolElementType.tsx +485 -0
- toposync_core-0.3.4/extensions/structural/ui/src/elements/WallElementType.tsx +838 -0
- toposync_core-0.3.4/extensions/structural/ui/src/entry.ts +2 -0
- toposync_core-0.3.4/extensions/structural/ui/src/geometry.ts +73 -0
- toposync_core-0.3.4/extensions/structural/ui/src/parsing.ts +47 -0
- toposync_core-0.3.4/extensions/structural/ui/src/textures.ts +288 -0
- toposync_core-0.3.4/extensions/structural/ui/src/tools/structuralTools.ts +871 -0
- toposync_core-0.3.4/extensions/structural/ui/src/translations.ts +104 -0
- toposync_core-0.3.4/extensions/structural/ui/src/wallOpenings.ts +210 -0
- toposync_core-0.3.4/extensions/structural/ui/tsconfig.json +14 -0
- toposync_core-0.3.4/extensions/structural/ui/webpack.config.js +42 -0
- toposync_core-0.3.4/extensions/vision/LICENSE +21 -0
- toposync_core-0.3.4/extensions/vision/README.md +98 -0
- toposync_core-0.3.4/extensions/vision/hatch_build.py +21 -0
- toposync_core-0.3.4/extensions/vision/manifests/rfdetr_det_medium.json +63 -0
- toposync_core-0.3.4/extensions/vision/manifests/rfdetr_det_nano.json +63 -0
- toposync_core-0.3.4/extensions/vision/manifests/rfdetr_det_small.json +63 -0
- toposync_core-0.3.4/extensions/vision/manifests/rtmdet_det_medium.json +64 -0
- toposync_core-0.3.4/extensions/vision/manifests/rtmdet_det_small.json +64 -0
- toposync_core-0.3.4/extensions/vision/manifests/rtmdet_det_tiny.json +64 -0
- toposync_core-0.3.4/extensions/vision/manifests/rtmdet_ins_medium.json +60 -0
- toposync_core-0.3.4/extensions/vision/manifests/rtmdet_ins_small.json +60 -0
- toposync_core-0.3.4/extensions/vision/manifests/rtmdet_ins_tiny.json +60 -0
- toposync_core-0.3.4/extensions/vision/pyproject.toml +35 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/__init__.py +3 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/extension.json +6 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/pipelines/__init__.py +99 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/pipelines/operators.py +247 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/pipelines/schemas.py +201 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/plugin.py +88 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/__init__.py +52 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/artifact_helpers.py +413 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/contracts.py +325 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/diagnostics.py +237 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/__init__.py +21 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/generic_onnx_boxes_parser.py +141 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/generic_segmentation_masks_parser.py +156 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/image_classification_logits_parser.py +102 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/rfdetr_parser.py +97 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/rtmdet_ins_parser.py +194 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/parsers/rtmdet_parser.py +112 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/runtime_backends/__init__.py +27 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/runtime_backends/onnxruntime_backend.py +457 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/runtime_upgrades.py +211 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/__init__.py +13 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/classification.py +170 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/detection.py +267 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/pose.py +308 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/segmentation.py +506 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/tasks/tracking.py +759 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/trackers/__init__.py +59 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/trackers/norfair_tracker.py +195 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/processing/trackers/simple_iou_kalman.py +349 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/__init__.py +97 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/artifact_upload.py +104 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/builtin_data.py +125 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/custom_onnx.py +756 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/huggingface.py +580 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/huggingface_recipes.py +454 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/installer.py +789 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/local_build.py +922 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/manifests.py +459 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/model_store.py +183 -0
- toposync_core-0.3.4/extensions/vision/src/toposync_ext_vision/registry/recommendations.py +540 -0
- toposync_core-0.3.4/frontend/dist/2463b90d9a316e4e5294.woff2 +0 -0
- toposync_core-0.3.4/frontend/dist/2582b0e4bcf85eceead0.ttf +0 -0
- toposync_core-0.3.4/frontend/dist/325.js +3 -0
- toposync_core-0.3.4/frontend/dist/325.js.LICENSE.txt +19 -0
- toposync_core-0.3.4/frontend/dist/325.js.map +1 -0
- toposync_core-0.3.4/frontend/dist/451.js +3 -0
- toposync_core-0.3.4/frontend/dist/451.js.LICENSE.txt +5 -0
- toposync_core-0.3.4/frontend/dist/451.js.map +1 -0
- toposync_core-0.3.4/frontend/dist/530.js +2 -0
- toposync_core-0.3.4/frontend/dist/530.js.map +1 -0
- toposync_core-0.3.4/frontend/dist/676.js +3 -0
- toposync_core-0.3.4/frontend/dist/676.js.LICENSE.txt +18 -0
- toposync_core-0.3.4/frontend/dist/676.js.map +1 -0
- toposync_core-0.3.4/frontend/dist/696.js +3 -0
- toposync_core-0.3.4/frontend/dist/696.js.LICENSE.txt +9 -0
- toposync_core-0.3.4/frontend/dist/696.js.map +1 -0
- toposync_core-0.3.4/frontend/dist/771.js +2 -0
- toposync_core-0.3.4/frontend/dist/771.js.map +1 -0
- toposync_core-0.3.4/frontend/dist/index.html +1 -0
- toposync_core-0.3.4/frontend/dist/main.js +2 -0
- toposync_core-0.3.4/frontend/dist/main.js.map +1 -0
- toposync_core-0.3.4/frontend/moduleFederationShared.js +33 -0
- toposync_core-0.3.4/frontend/package.json +34 -0
- toposync_core-0.3.4/frontend/packages/plugin-api/LICENSE +21 -0
- toposync_core-0.3.4/frontend/packages/plugin-api/README.md +48 -0
- toposync_core-0.3.4/frontend/packages/plugin-api/index.d.ts +273 -0
- toposync_core-0.3.4/frontend/packages/plugin-api/index.js +3 -0
- toposync_core-0.3.4/frontend/packages/plugin-api/package.json +39 -0
- toposync_core-0.3.4/frontend/packages/plugin-api/tsconfig.json +12 -0
- toposync_core-0.3.4/frontend/src/bootstrap.tsx +44 -0
- toposync_core-0.3.4/frontend/src/index.html +11 -0
- toposync_core-0.3.4/frontend/src/index.tsx +10 -0
- toposync_core-0.3.4/frontend/src/ui/App.tsx +1178 -0
- toposync_core-0.3.4/frontend/src/ui/CompositionSelectorModal.tsx +289 -0
- toposync_core-0.3.4/frontend/src/ui/CustomOnnxWizardModal.tsx +668 -0
- toposync_core-0.3.4/frontend/src/ui/HuggingFaceImportModal.tsx +806 -0
- toposync_core-0.3.4/frontend/src/ui/Icon.tsx +12 -0
- toposync_core-0.3.4/frontend/src/ui/LocalBuildConsentModal.tsx +127 -0
- toposync_core-0.3.4/frontend/src/ui/Modal.tsx +72 -0
- toposync_core-0.3.4/frontend/src/ui/ProcessingServerModal.tsx +302 -0
- toposync_core-0.3.4/frontend/src/ui/Viewport2D.tsx +2531 -0
- toposync_core-0.3.4/frontend/src/ui/Viewport3D.tsx +1036 -0
- toposync_core-0.3.4/frontend/src/ui/auth/AuthGate.tsx +256 -0
- toposync_core-0.3.4/frontend/src/ui/editor/measurementLineElementType.ts +149 -0
- toposync_core-0.3.4/frontend/src/ui/main2d/MainViewport2D.tsx +836 -0
- toposync_core-0.3.4/frontend/src/ui/main2d/render2dCache.ts +798 -0
- toposync_core-0.3.4/frontend/src/ui/notifications/pipelinesNotifications.tsx +432 -0
- toposync_core-0.3.4/frontend/src/ui/router.ts +57 -0
- toposync_core-0.3.4/frontend/src/ui/screens/AccessScreen.tsx +775 -0
- toposync_core-0.3.4/frontend/src/ui/screens/CompositionEditorScreen.tsx +1352 -0
- toposync_core-0.3.4/frontend/src/ui/screens/MainScreen.tsx +956 -0
- toposync_core-0.3.4/frontend/src/ui/screens/PipelinesScreen.tsx +934 -0
- toposync_core-0.3.4/frontend/src/ui/screens/ProcessingServersScreen.tsx +1156 -0
- toposync_core-0.3.4/frontend/src/ui/screens/SettingsScreen.tsx +774 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/InteractivePipelineEditor.tsx +262 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/PipelineDuplicateModal.tsx +110 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/PipelineTelemetryFieldModal.tsx +251 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/PipelineTelemetryOverviewCard.tsx +1168 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/PipelineTemplateApplyModal.tsx +193 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/constants.ts +297 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/InteractiveStepCard.tsx +365 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/InteractiveStepsList.tsx +58 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/InteractiveStepsToolbar.tsx +36 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/PipelinesNumberInput.tsx +66 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/CameraPanels.tsx +2983 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/CorePanels.tsx +1697 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/FilterExpressionEditor.tsx +562 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/ImageDrawModals.tsx +1856 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/OperatorConfigPanel.tsx +304 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/VisionPanels.tsx +2433 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/filterExpressionContext.ts +250 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/panels/pipelineStepSnapshots.ts +133 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/editor/useCameraContexts.ts +83 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/types.ts +45 -0
- toposync_core-0.3.4/frontend/src/ui/screens/pipelines/utils.ts +544 -0
- toposync_core-0.3.4/frontend/src/ui/streams/StreamsDashboard.tsx +1074 -0
- toposync_core-0.3.4/frontend/src/ui/streams/StreamsPtzOverlay.tsx +673 -0
- toposync_core-0.3.4/frontend/src/ui/styles/tokens.base.css +128 -0
- toposync_core-0.3.4/frontend/src/ui/styles/tokens.theme.topo-day.css +36 -0
- toposync_core-0.3.4/frontend/src/ui/styles/tokens.theme.topo-night.css +36 -0
- toposync_core-0.3.4/frontend/src/ui/styles/tokens.user-preferences.css +79 -0
- toposync_core-0.3.4/frontend/src/ui/styles.css +4901 -0
- toposync_core-0.3.4/frontend/src/util/api.ts +1614 -0
- toposync_core-0.3.4/frontend/src/util/i18n.ts +3476 -0
- toposync_core-0.3.4/frontend/src/util/moduleFederation.ts +51 -0
- toposync_core-0.3.4/frontend/src/util/theme.ts +134 -0
- toposync_core-0.3.4/frontend/tsconfig.json +13 -0
- toposync_core-0.3.4/frontend/webpack.config.js +74 -0
- toposync_core-0.3.4/hatch_build.py +40 -0
- toposync_core-0.3.4/package-lock.json +5708 -0
- toposync_core-0.3.4/package.json +24 -0
- toposync_core-0.3.4/packages/toposync/LICENSE +21 -0
- toposync_core-0.3.4/packages/toposync/README.md +25 -0
- toposync_core-0.3.4/packages/toposync/pyproject.toml +34 -0
- toposync_core-0.3.4/packages/toposync-streaming/LICENSE +21 -0
- toposync_core-0.3.4/packages/toposync-streaming/README.md +9 -0
- toposync_core-0.3.4/packages/toposync-streaming/pyproject.toml +23 -0
- toposync_core-0.3.4/packages/toposync-vision-cuda/LICENSE +21 -0
- toposync_core-0.3.4/packages/toposync-vision-cuda/README.md +5 -0
- toposync_core-0.3.4/packages/toposync-vision-cuda/pyproject.toml +34 -0
- toposync_core-0.3.4/packages/toposync-vision-directml/LICENSE +21 -0
- toposync_core-0.3.4/packages/toposync-vision-directml/README.md +5 -0
- toposync_core-0.3.4/packages/toposync-vision-directml/pyproject.toml +34 -0
- toposync_core-0.3.4/playwright.config.js +29 -0
- toposync_core-0.3.4/playwright.distribution.config.js +19 -0
- toposync_core-0.3.4/pyproject.toml +73 -0
- toposync_core-0.3.4/readme.md +28 -0
- toposync_core-0.3.4/release-dist/.gitignore +1 -0
- toposync_core-0.3.4/scripts/check_extension_wheels.py +135 -0
- toposync_core-0.3.4/scripts/dev.js +135 -0
- toposync_core-0.3.4/scripts/pipelines_runtime_demo.py +332 -0
- toposync_core-0.3.4/scripts/pipelines_stage15_capture_backends_demo.py +143 -0
- toposync_core-0.3.4/scripts/pipelines_stage4_camera_demo.py +263 -0
- toposync_core-0.3.4/scripts/pipelines_stage5_fanout_demo.py +361 -0
- toposync_core-0.3.4/scripts/pipelines_stage6_postprocess_demo.py +341 -0
- toposync_core-0.3.4/scripts/pipelines_stage7_origin_sinks_demo.py +261 -0
- toposync_core-0.3.4/scripts/pipelines_stage8_distributed_demo.py +273 -0
- toposync_core-0.3.4/scripts/test_distribution_install.py +363 -0
- toposync_core-0.3.4/src/toposync/__init__.py +10 -0
- toposync_core-0.3.4/src/toposync/__main__.py +7 -0
- toposync_core-0.3.4/src/toposync/app.py +3419 -0
- toposync_core-0.3.4/src/toposync/cli.py +80 -0
- toposync_core-0.3.4/src/toposync/extensions/__init__.py +15 -0
- toposync_core-0.3.4/src/toposync/extensions/base.py +75 -0
- toposync_core-0.3.4/src/toposync/extensions/manager.py +308 -0
- toposync_core-0.3.4/src/toposync/extensions/manifest.py +23 -0
- toposync_core-0.3.4/src/toposync/processing_server.py +8 -0
- toposync_core-0.3.4/src/toposync/runtime/__init__.py +6 -0
- toposync_core-0.3.4/src/toposync/runtime/auth.py +1470 -0
- toposync_core-0.3.4/src/toposync/runtime/config_store.py +742 -0
- toposync_core-0.3.4/src/toposync/runtime/device_store.py +26 -0
- toposync_core-0.3.4/src/toposync/runtime/event_bus.py +111 -0
- toposync_core-0.3.4/src/toposync/runtime/notifications/__init__.py +4 -0
- toposync_core-0.3.4/src/toposync/runtime/notifications/events.py +33 -0
- toposync_core-0.3.4/src/toposync/runtime/notifications/runtime.py +115 -0
- toposync_core-0.3.4/src/toposync/runtime/notifications/store.py +253 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/__init__.py +97 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/builtins.py +25 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/compiler.py +317 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/distributed/__init__.py +20 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/distributed/orchestrator.py +431 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/distributed/plan.py +202 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/distributed/processing_server.py +787 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/distributed/transport.py +397 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/execution.py +555 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/execution_scheduler.py +146 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/images.py +182 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/migration_legacy_cameras.py +298 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/operator_registry.py +398 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/operators_core.py +1098 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/operators_distributed.py +381 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/operators_gates.py +454 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/operators_sinks.py +1062 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/packet_contract.py +271 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/preview.py +260 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/python_dsl.py +548 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/recommendations.py +589 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/runtime.py +1083 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/safe_expression.py +291 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/shared_runtime.py +235 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/stats.py +169 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/step_snapshots.py +192 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/telemetry.py +1531 -0
- toposync_core-0.3.4/src/toposync/runtime/pipelines/templates.py +109 -0
- toposync_core-0.3.4/src/toposync/runtime/processing_diagnostics.py +236 -0
- toposync_core-0.3.4/src/toposync/runtime/services.py +28 -0
- toposync_core-0.3.4/tests/test_artifact_memory_budget.py +101 -0
- toposync_core-0.3.4/tests/test_auth_local.py +372 -0
- toposync_core-0.3.4/tests/test_camera_artifact_privacy_operator.py +88 -0
- toposync_core-0.3.4/tests/test_camera_capture_backends.py +351 -0
- toposync_core-0.3.4/tests/test_camera_hub_start_timeout.py +46 -0
- toposync_core-0.3.4/tests/test_camera_image_adjust_operator.py +55 -0
- toposync_core-0.3.4/tests/test_camera_image_crop_operator.py +77 -0
- toposync_core-0.3.4/tests/test_camera_image_perspective_crop_operator.py +136 -0
- toposync_core-0.3.4/tests/test_camera_image_privacy_operator.py +105 -0
- toposync_core-0.3.4/tests/test_camera_motion_detector.py +39 -0
- toposync_core-0.3.4/tests/test_camera_onvif_client.py +124 -0
- toposync_core-0.3.4/tests/test_camera_onvif_discovery.py +35 -0
- toposync_core-0.3.4/tests/test_camera_onvif_ptz.py +124 -0
- toposync_core-0.3.4/tests/test_camera_preprocess_operators.py +319 -0
- toposync_core-0.3.4/tests/test_camera_source_onvif_fallback.py +95 -0
- toposync_core-0.3.4/tests/test_camera_source_start_recovery.py +97 -0
- toposync_core-0.3.4/tests/test_camera_yolo_annotate_mode.py +170 -0
- toposync_core-0.3.4/tests/test_camera_yolo_track_id_parsing.py +14 -0
- toposync_core-0.3.4/tests/test_cameras_mapping_api.py +218 -0
- toposync_core-0.3.4/tests/test_composition_meta.py +36 -0
- toposync_core-0.3.4/tests/test_config_store_external_edits.py +59 -0
- toposync_core-0.3.4/tests/test_core_filter_operator.py +202 -0
- toposync_core-0.3.4/tests/test_core_frontend_bundle.py +45 -0
- toposync_core-0.3.4/tests/test_extension_manager_compatibility.py +176 -0
- toposync_core-0.3.4/tests/test_extension_shutdown_callbacks.py +47 -0
- toposync_core-0.3.4/tests/test_home_assistant_notification_routes.py +284 -0
- toposync_core-0.3.4/tests/test_home_assistant_notify_operator_runtime.py +158 -0
- toposync_core-0.3.4/tests/test_legacy_camera_migration.py +74 -0
- toposync_core-0.3.4/tests/test_notifications_recovery.py +71 -0
- toposync_core-0.3.4/tests/test_onnxruntime_backend.py +356 -0
- toposync_core-0.3.4/tests/test_pipeline_best_frame_recommendations.py +65 -0
- toposync_core-0.3.4/tests/test_pipeline_debug_operator.py +65 -0
- toposync_core-0.3.4/tests/test_pipeline_distributed_runtime.py +107 -0
- toposync_core-0.3.4/tests/test_pipeline_execution_concurrency.py +99 -0
- toposync_core-0.3.4/tests/test_pipeline_extension_registration.py +133 -0
- toposync_core-0.3.4/tests/test_pipeline_frame_runtime.py +764 -0
- toposync_core-0.3.4/tests/test_pipeline_gates.py +254 -0
- toposync_core-0.3.4/tests/test_pipeline_operator_contracts.py +138 -0
- toposync_core-0.3.4/tests/test_pipeline_operator_sdk.py +224 -0
- toposync_core-0.3.4/tests/test_pipeline_orchestrator_bundle.py +297 -0
- toposync_core-0.3.4/tests/test_pipeline_origin_sinks.py +714 -0
- toposync_core-0.3.4/tests/test_pipeline_postprocess_artifacts.py +1232 -0
- toposync_core-0.3.4/tests/test_pipeline_python_dsl.py +120 -0
- toposync_core-0.3.4/tests/test_pipeline_runtime_core.py +290 -0
- toposync_core-0.3.4/tests/test_pipeline_stats.py +133 -0
- toposync_core-0.3.4/tests/test_pipeline_stream_state_snapshot_operator.py +72 -0
- toposync_core-0.3.4/tests/test_pipeline_telemetry.py +382 -0
- toposync_core-0.3.4/tests/test_pipeline_templates_multicamera.py +126 -0
- toposync_core-0.3.4/tests/test_pipeline_yolo_fanout.py +687 -0
- toposync_core-0.3.4/tests/test_pipelines_api.py +657 -0
- toposync_core-0.3.4/tests/test_processing_diagnostics.py +140 -0
- toposync_core-0.3.4/tests/test_rfdetr_parser.py +79 -0
- toposync_core-0.3.4/tests/test_rtmdet_ins_parser.py +70 -0
- toposync_core-0.3.4/tests/test_rtmdet_ins_runtime.py +245 -0
- toposync_core-0.3.4/tests/test_rtmdet_parser.py +68 -0
- toposync_core-0.3.4/tests/test_rtmdet_runtime.py +240 -0
- toposync_core-0.3.4/tests/test_streaming_arbitration.py +197 -0
- toposync_core-0.3.4/tests/test_streaming_camera_ingest.py +77 -0
- toposync_core-0.3.4/tests/test_streaming_distributed_routes.py +145 -0
- toposync_core-0.3.4/tests/test_streaming_distributed_service_auth.py +116 -0
- toposync_core-0.3.4/tests/test_streaming_engine_recovery.py +116 -0
- toposync_core-0.3.4/tests/test_streaming_ffmpeg_binary.py +91 -0
- toposync_core-0.3.4/tests/test_streaming_hardening_stage10.py +214 -0
- toposync_core-0.3.4/tests/test_streaming_last_frame_freeze.py +67 -0
- toposync_core-0.3.4/tests/test_streaming_mediamtx_binary.py +138 -0
- toposync_core-0.3.4/tests/test_streaming_models.py +139 -0
- toposync_core-0.3.4/tests/test_streaming_multiwriter_sticky_integration.py +75 -0
- toposync_core-0.3.4/tests/test_streaming_on_demand_writer_bridge.py +310 -0
- toposync_core-0.3.4/tests/test_streaming_placeholder.py +29 -0
- toposync_core-0.3.4/tests/test_streaming_resize.py +29 -0
- toposync_core-0.3.4/tests/test_streaming_transmission_camera_controls.py +132 -0
- toposync_core-0.3.4/tests/test_streaming_webrtc.py +129 -0
- toposync_core-0.3.4/tests/test_streaming_wizard_graph_builder.py +166 -0
- toposync_core-0.3.4/tests/test_streaming_writer_bridge_integration.py +146 -0
- toposync_core-0.3.4/tests/test_vision_classification_runtime.py +115 -0
- toposync_core-0.3.4/tests/test_vision_contracts.py +345 -0
- toposync_core-0.3.4/tests/test_vision_custom_onnx_api.py +314 -0
- toposync_core-0.3.4/tests/test_vision_detect_runtime.py +190 -0
- toposync_core-0.3.4/tests/test_vision_huggingface_api.py +350 -0
- toposync_core-0.3.4/tests/test_vision_local_build_rfdetr.py +48 -0
- toposync_core-0.3.4/tests/test_vision_manifest_import_api.py +247 -0
- toposync_core-0.3.4/tests/test_vision_model_install_api.py +594 -0
- toposync_core-0.3.4/tests/test_vision_model_recommendations.py +167 -0
- toposync_core-0.3.4/tests/test_vision_packaged_manifests.py +91 -0
- toposync_core-0.3.4/tests/test_vision_pose_runtime.py +112 -0
- toposync_core-0.3.4/tests/test_vision_runtime_upgrades.py +70 -0
- toposync_core-0.3.4/tests/test_vision_track_integrations.py +513 -0
- toposync_core-0.3.4/tests/test_vision_tracker_backends.py +133 -0
- 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,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,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`.
|