Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion dimos/perception/demo_object_scene_registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@

from dimos.agents.agent import llm_agent
from dimos.agents.cli.human import human_input
from dimos.agents.spec import Provider
from dimos.core.blueprints import autoconnect
from dimos.hardware.sensors.camera.realsense import realsense_camera
from dimos.hardware.sensors.camera.zed import zed_camera
Expand Down
2 changes: 1 addition & 1 deletion dimos/perception/spatial_perception.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
from dimos.agents_deprecated.memory.spatial_vector_db import SpatialVectorDB
from dimos.agents_deprecated.memory.visual_memory import VisualMemory
from dimos.constants import DIMOS_PROJECT_ROOT
from dimos.core import DimosCluster, In, Module, rpc
from dimos.core import DimosCluster, In, rpc
from dimos.core.skill_module import SkillModule
from dimos.msgs.sensor_msgs import Image
from dimos.types.robot_location import RobotLocation
Expand Down
8 changes: 3 additions & 5 deletions dimos/robot/all_blueprints.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,10 @@
# Demo blueprints
"demo-camera": "dimos.hardware.sensors.camera.module:demo_camera",
"demo-osm": "dimos.mapping.osm.demo_osm:demo_osm",
"demo-skill": "dimos.agents2.skills.demo_skill:demo_skill",
"demo-gps-nav": "dimos.agents2.skills.demo_gps_nav:demo_gps_nav_skill",
"demo-google-maps-skill": "dimos.agents2.skills.demo_google_maps_skill:demo_google_maps_skill",
"demo-skill": "dimos.agents.skills.demo_skill:demo_skill",
"demo-gps-nav": "dimos.agents.skills.demo_gps_nav:demo_gps_nav_skill",
"demo-google-maps-skill": "dimos.agents.skills.demo_google_maps_skill:demo_google_maps_skill",
"demo-object-scene-registration": "dimos.perception.demo_object_scene_registration:demo_object_scene_registration",
"demo-remapping": "dimos.robot.unitree_webrtc.demo_remapping:remapping",
"demo-remapping-transport": "dimos.robot.unitree_webrtc.demo_remapping:remapping_and_transport",
"demo-error-on-name-conflicts": "dimos.robot.unitree_webrtc.demo_error_on_name_conflicts:blueprint",
}

Expand Down
43 changes: 43 additions & 0 deletions dimos/robot/test_all_blueprints.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Copyright 2025-2026 Dimensional Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import pytest

from dimos.core.blueprints import ModuleBlueprintSet
from dimos.robot.all_blueprints import all_blueprints, get_blueprint_by_name

# Optional dependencies that are allowed to be missing
OPTIONAL_DEPENDENCIES = {"pyrealsense2", "geometry_msgs", "turbojpeg"}
OPTIONAL_ERROR_SUBSTRINGS = {
"Unable to locate turbojpeg library automatically",
}


@pytest.mark.parametrize("blueprint_name", all_blueprints.keys())
def test_all_blueprints_are_valid(blueprint_name: str) -> None:
"""Test that all blueprints in all_blueprints are valid ModuleBlueprintSet instances."""
try:
blueprint = get_blueprint_by_name(blueprint_name)
except ModuleNotFoundError as e:
if e.name in OPTIONAL_DEPENDENCIES:
pytest.skip(f"Skipping due to missing optional dependency: {e.name}")
raise
except Exception as e:
message = str(e)
if any(substring in message for substring in OPTIONAL_ERROR_SUBSTRINGS):
pytest.skip(f"Skipping due to missing optional dependency: {message}")
raise
assert isinstance(blueprint, ModuleBlueprintSet), (
f"Blueprint '{blueprint_name}' is not a ModuleBlueprintSet, got {type(blueprint)}"
)
3 changes: 1 addition & 2 deletions dimos/web/websocket_vis/websocket_vis_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@
import socketio # type: ignore[import-untyped]
from starlette.applications import Starlette
from starlette.responses import FileResponse, RedirectResponse, Response
from starlette.routing import Mount, Route
from starlette.staticfiles import StaticFiles
from starlette.routing import Route
import uvicorn

from dimos.utils.data import get_data
Expand Down
Loading