devagent-physical-engine 0.11.4__tar.gz → 0.11.6__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.
- devagent_physical_engine-0.11.6/PKG-INFO +375 -0
- devagent_physical_engine-0.11.6/README.md +334 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/pyproject.toml +3 -3
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/__init__.py +1 -1
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ai_cli.py +157 -0
- devagent_physical_engine-0.11.6/src/devagent_physical_engine.egg-info/PKG-INFO +375 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine.egg-info/SOURCES.txt +1 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_ai_cli.py +110 -0
- devagent_physical_engine-0.11.6/tests/test_readme_pypi.py +35 -0
- devagent_physical_engine-0.11.4/PKG-INFO +0 -358
- devagent_physical_engine-0.11.4/README.md +0 -317
- devagent_physical_engine-0.11.4/src/devagent_physical_engine.egg-info/PKG-INFO +0 -358
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/NOTICE +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/setup.cfg +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/__init__.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/compiler.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/contracts.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/coordinator.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/critic.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/evidence.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/interpreter.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/planner.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/recovery.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/routing.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/runtime.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/semantic.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/agent/structured.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/cli.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/continuous_clearance.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/doctor.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/engineering_agent.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/engineering_request.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/execution.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/models.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/operating_envelope.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/optimization/__init__.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/optimization/candidates.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/optimization/contracts.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/optimization/evidence.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/optimization/experience.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/optimization/measured.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/physical_campaign.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/physical_evidence.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/physical_motion.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/planning.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/preexecution_contract.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/provider_qualification.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/providers.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/qualification.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/qualification_cli.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/qualification_harness.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/robot_platform.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/robots.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/__init__.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/commands.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/doctor.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/qualification.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/setup_profile.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/simulation.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/simulation_platform.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/tool_collision.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/twin.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/twin_builder.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/twin_materialization.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/verification.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine.egg-info/entry_points.txt +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_agent_core.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_agent_semantic_hardening.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_ai_cli_v07.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_continuous_clearance_v011.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_core.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_engineering_request_v07.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_interpreter_profiles_v08.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_live_provider_qualification.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_measured_motion_v10.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_natural_language_agent_v07.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_openai_strict_schema_v0113.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_optimization_v05.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_physical_campaign_v09.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_physical_evidence_v09.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_physical_motion_v09.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_preexecution_contract_v10.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_provider_and_qualification.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_qualification_harness_v06.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_real_provider_adapters.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_robot_platform_v08.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_ros2_production_receipts_v011.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_ros2_simulation.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_ros_trajectory_v09.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_setup_profile.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_sim_real_qualification_v011.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_simulation_platform_v08.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_tool_collision_v011.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_trajectory_qualification_v09.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_twin_materialization_v10.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_twin_v08.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_v052_stabilization.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_v08_catalog_mapping_regression.py +0 -0
- {devagent_physical_engine-0.11.4 → devagent_physical_engine-0.11.6}/tests/test_workpiece_lifecycle_v011.py +0 -0
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: devagent-physical-engine
|
|
3
|
+
Version: 0.11.6
|
|
4
|
+
Summary: Verification-first agentic engineering, simulation, and evidence runtime for robotics and industrial automation.
|
|
5
|
+
Author: Tom Ha
|
|
6
|
+
License: All Rights Reserved
|
|
7
|
+
Project-URL: Homepage, https://github.com/tomha85/devagent-physical-engine
|
|
8
|
+
Project-URL: Repository, https://github.com/tomha85/devagent-physical-engine
|
|
9
|
+
Project-URL: Issues, https://github.com/tomha85/devagent-physical-engine/issues
|
|
10
|
+
Keywords: robotics,industrial-automation,agentic-ai,ros2,verification
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: NOTICE
|
|
23
|
+
Requires-Dist: PyYAML<7,>=6.0
|
|
24
|
+
Provides-Extra: openai
|
|
25
|
+
Requires-Dist: openai<4,>=3.0; extra == "openai"
|
|
26
|
+
Provides-Extra: anthropic
|
|
27
|
+
Requires-Dist: anthropic<2,>=1.0; extra == "anthropic"
|
|
28
|
+
Provides-Extra: gemini
|
|
29
|
+
Requires-Dist: google-genai<3,>=2.0; extra == "gemini"
|
|
30
|
+
Provides-Extra: ai
|
|
31
|
+
Requires-Dist: openai<4,>=3.0; extra == "ai"
|
|
32
|
+
Requires-Dist: anthropic<2,>=1.0; extra == "ai"
|
|
33
|
+
Requires-Dist: google-genai<3,>=2.0; extra == "ai"
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: build==1.6.0; extra == "dev"
|
|
36
|
+
Requires-Dist: twine==7.0.0; extra == "dev"
|
|
37
|
+
Requires-Dist: coverage[toml]<8,>=7.6; extra == "dev"
|
|
38
|
+
Requires-Dist: ruff<1,>=0.12; extra == "dev"
|
|
39
|
+
Requires-Dist: pip-audit<3,>=2.9; extra == "dev"
|
|
40
|
+
Dynamic: license-file
|
|
41
|
+
|
|
42
|
+
# DevAgent Smart Physical Engine
|
|
43
|
+
|
|
44
|
+
[](https://pypi.org/project/devagent-physical-engine/)
|
|
45
|
+
[](https://pypi.org/project/devagent-physical-engine/)
|
|
46
|
+
[](#project-status)
|
|
47
|
+
|
|
48
|
+
**Verification-first agentic engineering, planning, simulation, optimization, and evidence for robotic and industrial automation.**
|
|
49
|
+
|
|
50
|
+
> **AI proposes. Deterministic engines validate, compile, verify, simulate, measure, and gate promotion. Existing certified controllers remain authoritative.**
|
|
51
|
+
|
|
52
|
+
DevAgent Smart Physical Engine turns an engineering request into a bounded, evidence-backed automation plan without giving an LLM direct robot-control authority. It is designed for engineers who want to reason about robot tasks, generate and critique plans, build a canonical physical Twin, simulate through ROS 2 / Gazebo / MoveIt, measure results, and preserve verification evidence before anything reaches real equipment.
|
|
53
|
+
|
|
54
|
+
The runtime is provider-neutral. OpenAI, Anthropic, and Gemini can be used for interpretation, planning, critique, and recovery while deterministic code remains responsible for safety boundaries, compilation, verification, physical evidence, qualification, and execution policy.
|
|
55
|
+
|
|
56
|
+
## Why DevAgent Physical Engine?
|
|
57
|
+
|
|
58
|
+
Many AI robotics demos stop after producing a plan or showing a robot moving. DevAgent Physical Engine is built around a stricter question:
|
|
59
|
+
|
|
60
|
+
**Can this robotic engineering claim be supported by deterministic checks and measured evidence for the exact plan and physical model being evaluated?**
|
|
61
|
+
|
|
62
|
+
Core principles:
|
|
63
|
+
|
|
64
|
+
- **Evidence before promotion** — missing physical evidence blocks stronger claims instead of being silently assumed.
|
|
65
|
+
- **Provider-neutral AI** — model output proposes engineering intent; it does not own collision truth, qualification, or real-hardware authorization.
|
|
66
|
+
- **Deterministic verification** — task graphs, motion contracts, collision constraints, scene state, and promotion gates are checked outside the model.
|
|
67
|
+
- **Exact Twin binding** — physical motion is bound to a canonical Twin and immutable fingerprints rather than free-form model text.
|
|
68
|
+
- **Measured simulation** — supported ROS 2 / Gazebo / MoveIt paths collect runtime evidence instead of treating a generated plan as proof.
|
|
69
|
+
- **Fail-closed visualization** — DevAgent never substitutes a canned motion and labels it as the requested task.
|
|
70
|
+
- **Real execution remains locked** — simulation success is not site qualification, functional-safety certification, or permission to run production hardware.
|
|
71
|
+
|
|
72
|
+
## Install
|
|
73
|
+
|
|
74
|
+
Python 3.11+ is required.
|
|
75
|
+
|
|
76
|
+
From PyPI:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
python -m pip install devagent-physical-engine
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Install one AI provider:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
python -m pip install "devagent-physical-engine[openai]"
|
|
86
|
+
python -m pip install "devagent-physical-engine[anthropic]"
|
|
87
|
+
python -m pip install "devagent-physical-engine[gemini]"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Or install all supported provider SDKs:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
python -m pip install "devagent-physical-engine[ai]"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
For development from source:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
git clone https://github.com/tomha85/devagent-physical-engine.git
|
|
100
|
+
cd devagent-physical-engine
|
|
101
|
+
python -m venv .venv
|
|
102
|
+
source .venv/bin/activate
|
|
103
|
+
python -m pip install --upgrade pip
|
|
104
|
+
python -m pip install -e ".[dev,ai]"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`pip install` does not install ROS, Gazebo, MoveIt, robot drivers, or privileged operating-system dependencies.
|
|
108
|
+
|
|
109
|
+
## Quick start
|
|
110
|
+
|
|
111
|
+
Configure the credential for the provider you want to use:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
export OPENAI_API_KEY='...'
|
|
115
|
+
# or ANTHROPIC_API_KEY / GEMINI_API_KEY
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Check the provider locally:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
devagent-physical-ai doctor --provider openai
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Run an engineering request:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
devagent-physical-ai engineer \
|
|
128
|
+
"Use a UR5e to load BOX_101 from conveyor_a to cnc_04. Simulate and verify the plan." \
|
|
129
|
+
--provider openai \
|
|
130
|
+
--model <model-id>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
While the command runs, stage-by-stage progress is printed to `stderr` and the final machine-readable result remains on `stdout`:
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
[DevAgent + 0.00s] START provider=openai model=<model-id>
|
|
137
|
+
[DevAgent + 0.00s] INTERPRETER understanding engineering request
|
|
138
|
+
[DevAgent + 6.84s] INTERPRETER validated request_id=REQ-...
|
|
139
|
+
[DevAgent + 6.84s] PLANNER revision=0 generating high-level task graph
|
|
140
|
+
[DevAgent + 12.21s] CRITIC revision=0 reviewing verified plan
|
|
141
|
+
[DevAgent + 15.77s] SIMULATION running deterministic model execution
|
|
142
|
+
[DevAgent + 15.78s] COMPLETE ready_for_twin_simulation=true
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Use `--quiet` when a script or CI job needs JSON without terminal progress.
|
|
146
|
+
|
|
147
|
+
## Visual simulation
|
|
148
|
+
|
|
149
|
+
There are two deliberately different visualization modes.
|
|
150
|
+
|
|
151
|
+
To prove that the workstation can launch Gazebo / MoveIt and visibly move a UR5e, use the explicit visual demo:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
devagent-physical-ai engineer \
|
|
155
|
+
"Use a UR5e to load BOX_101 from conveyor_a to cnc_04. Simulate and verify the plan." \
|
|
156
|
+
--provider openai \
|
|
157
|
+
--model <model-id> \
|
|
158
|
+
--visual-demo
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`--visual-demo` runs the packaged UR5e motion smoke through the ROS simulation stack. It is intentionally reported as `task_specific=false`; it proves the visualization/motion stack is working, not that the exact BOX task has been physically planned.
|
|
162
|
+
|
|
163
|
+
To request visualization of the **exact engineering task**, use:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
devagent-physical-ai engineer \
|
|
167
|
+
"Use a UR5e to load BOX_101 from conveyor_a to cnc_04. Simulate and verify the plan." \
|
|
168
|
+
--provider openai \
|
|
169
|
+
--model <model-id> \
|
|
170
|
+
--visualize
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Task-specific visualization fails closed until the runtime has enough physical evidence to construct the exact scene and compile an exact `PhysicalMotionPlan`. Required evidence includes robot/source/destination poses, collision geometry, workpiece geometry, tool/TCP information, and the compiled physical motion. DevAgent will not display an unrelated canned movement and call it the requested task.
|
|
174
|
+
|
|
175
|
+
## How it works
|
|
176
|
+
|
|
177
|
+
A normal engineering flow is intentionally layered:
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
NATURAL-LANGUAGE ENGINEERING REQUEST
|
|
181
|
+
|
|
|
182
|
+
v
|
|
183
|
+
PROVIDER-NEUTRAL INTERPRETER
|
|
184
|
+
|
|
|
185
|
+
v
|
|
186
|
+
PLANNER -> DETERMINISTIC COMPILE / VERIFY <- CRITIC
|
|
187
|
+
|
|
|
188
|
+
v
|
|
189
|
+
VERIFIED HIGH-LEVEL TASK GRAPH
|
|
190
|
+
|
|
|
191
|
+
v
|
|
192
|
+
CANONICAL PHYSICAL TWIN + IMMUTABLE HASH
|
|
193
|
+
|
|
|
194
|
+
v
|
|
195
|
+
EXACT PHYSICAL MOTION CONTRACT
|
|
196
|
+
|
|
|
197
|
+
v
|
|
198
|
+
GAZEBO / MOVEIT MATERIALIZATION + READ-BACK
|
|
199
|
+
|
|
|
200
|
+
v
|
|
201
|
+
COLLISION / CLEARANCE / TOOL / WORKPIECE VERIFICATION
|
|
202
|
+
|
|
|
203
|
+
v
|
|
204
|
+
ROS 2 SIMULATION + MEASURED RUNTIME EVIDENCE
|
|
205
|
+
|
|
|
206
|
+
v
|
|
207
|
+
REPLAYABLE EVIDENCE + PROMOTION GATES
|
|
208
|
+
|
|
|
209
|
+
v
|
|
210
|
+
REAL HARDWARE AUTHORIZATION REMAINS SEPARATELY LOCKED
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
The high-level AI task graph and the physical motion plan are not the same artifact. A `pick -> move -> place` graph is engineering intent. Gazebo execution requires a physically grounded Twin and compiled trajectory. This separation prevents an AI-generated task description from becoming an implicit motor command.
|
|
214
|
+
|
|
215
|
+
## General architecture
|
|
216
|
+
|
|
217
|
+
The architecture has three authority layers:
|
|
218
|
+
|
|
219
|
+
```text
|
|
220
|
+
+--------------------------------------------------------------+
|
|
221
|
+
| ENGINEER / CUSTOMER |
|
|
222
|
+
| requirement, robot, object, source, destination |
|
|
223
|
+
+-------------------------------+------------------------------+
|
|
224
|
+
|
|
|
225
|
+
v
|
|
226
|
+
+--------------------------------------------------------------+
|
|
227
|
+
| AI ENGINEERING LAYER |
|
|
228
|
+
| Interpreter | Planner | Critic | Recovery |
|
|
229
|
+
| OpenAI / Anthropic / Gemini |
|
|
230
|
+
| Proposes intent and candidates; owns no physical authority. |
|
|
231
|
+
+-------------------------------+------------------------------+
|
|
232
|
+
|
|
|
233
|
+
v
|
|
234
|
+
+--------------------------------------------------------------+
|
|
235
|
+
| DEVAGENT DETERMINISTIC CORE |
|
|
236
|
+
| Request validation | Compiler | Semantic policy |
|
|
237
|
+
| TwinSpec | Motion contract | Collision / clearance |
|
|
238
|
+
| Tool/workpiece state | Simulation measurement | Evidence |
|
|
239
|
+
| Qualification and promotion gates |
|
|
240
|
+
+-------------------------------+------------------------------+
|
|
241
|
+
|
|
|
242
|
+
v
|
|
243
|
+
+--------------------------------------------------------------+
|
|
244
|
+
| PHYSICAL SIMULATION ADAPTERS |
|
|
245
|
+
| ROS 2 | Gazebo | MoveIt | robot-specific adapters |
|
|
246
|
+
| Scene materialization, trajectory execution, measured state |
|
|
247
|
+
+-------------------------------+------------------------------+
|
|
248
|
+
|
|
|
249
|
+
v
|
|
250
|
+
+--------------------------------------------------------------+
|
|
251
|
+
| OEM CONTROLLER / PLC / SAFETY |
|
|
252
|
+
| Remains authoritative for real equipment and safe execution. |
|
|
253
|
+
| DevAgent real execution is locked by default. |
|
|
254
|
+
+--------------------------------------------------------------+
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
This plain-text diagram is intentionally used instead of Mermaid so the same README renders correctly on GitHub and PyPI.
|
|
258
|
+
|
|
259
|
+
## Physical Twin and verification
|
|
260
|
+
|
|
261
|
+
The canonical Twin records robot identity, frames, source/destination entities, workpiece, tool, geometry, physics evidence, controller metadata, uncertainty, and provenance. Unknown physical information remains unknown rather than being filled with AI guesses.
|
|
262
|
+
|
|
263
|
+
For production-candidate UR5e simulation, the stronger verifier can use MoveIt PlanningScene read-back, runtime-owned tool collision binding, runtime-owned workpiece attach/detach transitions, measured collision distance, conservative continuous-path clearance proof, measured joint states, and MoveIt FK evidence.
|
|
264
|
+
|
|
265
|
+
A stronger pre-execution receipt requires evidence such as:
|
|
266
|
+
|
|
267
|
+
```text
|
|
268
|
+
verified=true
|
|
269
|
+
continuous_collision_check=true
|
|
270
|
+
clearance_measured=true
|
|
271
|
+
minimum_clearance_m > 0
|
|
272
|
+
materialization_hash=<exact Twin materialization>
|
|
273
|
+
failure_codes=[]
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
The conservative collision-distance bound must be qualified for the exact robot/tool/collision model. DevAgent does not invent that bound.
|
|
277
|
+
|
|
278
|
+
## Supported robot abstraction
|
|
279
|
+
|
|
280
|
+
The deterministic robot-profile layer includes abstractions for:
|
|
281
|
+
|
|
282
|
+
- Universal Robots UR5e
|
|
283
|
+
- FANUC CRX family
|
|
284
|
+
- KUKA KR family
|
|
285
|
+
- ABB IRB family
|
|
286
|
+
|
|
287
|
+
Physical simulation and qualification are adapter- and vendor-specific. Current production-candidate physical-runtime work is centered on the UR5e ROS 2 / Gazebo / MoveIt path; a profile existing in the registry does not imply equivalent physical qualification for every vendor.
|
|
288
|
+
|
|
289
|
+
## ROS 2 / Gazebo reference target
|
|
290
|
+
|
|
291
|
+
Reference workstation stack:
|
|
292
|
+
|
|
293
|
+
```text
|
|
294
|
+
Ubuntu 24.04
|
|
295
|
+
ROS 2 Jazzy
|
|
296
|
+
Gazebo Harmonic
|
|
297
|
+
gz_ros2_control
|
|
298
|
+
Universal Robots ROS 2 driver
|
|
299
|
+
ur_simulation_gz
|
|
300
|
+
MoveIt 2
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Setup and diagnostics:
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
devagent-physical setup --profile ur5e-sim --dry-run
|
|
307
|
+
devagent-physical setup --profile ur5e-sim
|
|
308
|
+
devagent-physical ros doctor
|
|
309
|
+
devagent-physical ros demo
|
|
310
|
+
devagent-physical ros qualify-trajectory-runtime
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
For the stronger production-candidate target campaign:
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
python -m devagent_physical_engine.ros2.qualification_v11 \
|
|
317
|
+
--moveit-params-file /path/to/ur5e_moveit_params.yaml \
|
|
318
|
+
--distance-lipschitz <qualified-m-per-radian-bound> \
|
|
319
|
+
--safety-margin 0.005 \
|
|
320
|
+
--log-dir ~/.devagent/v11-production-candidate-qualification
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
A successful source/workstation campaign can qualify specific simulation evidence. It still does not automatically imply physical commissioning, site qualification, functional-safety certification, or permission to execute on a real robot.
|
|
324
|
+
|
|
325
|
+
## AI providers
|
|
326
|
+
|
|
327
|
+
The CLI currently supports OpenAI, Anthropic, and Gemini through one provider-neutral agent contract.
|
|
328
|
+
|
|
329
|
+
Examples:
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
devagent-physical-ai qualify --provider openai --model <model-id>
|
|
333
|
+
devagent-physical-ai qualify --provider anthropic --model <model-id>
|
|
334
|
+
devagent-physical-ai qualify --provider gemini --model <model-id>
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Provider qualification uses API credits and verifies the bounded Interpreter / Planner / Critic / Recovery path. Provider success never unlocks real robot execution.
|
|
338
|
+
|
|
339
|
+
## Software verification and releases
|
|
340
|
+
|
|
341
|
+
Repository CI verifies Python 3.11, 3.12, and 3.13, Ruff correctness, branch coverage, package build, clean wheel installation, and runtime dependency vulnerability audit.
|
|
342
|
+
|
|
343
|
+
A green `main` release is tied to the exact CI-tested commit. Release artifacts are rebuilt and verified from the exact tag, checked with Twine, installed into a clean environment, accompanied by SHA256 checksums and an SBOM, attached to the GitHub Release, and published to PyPI through Trusted Publishing.
|
|
344
|
+
|
|
345
|
+
## Documentation
|
|
346
|
+
|
|
347
|
+
Detailed engineering documentation lives in the repository:
|
|
348
|
+
|
|
349
|
+
- [Production readiness](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/PRODUCTION_READINESS.md)
|
|
350
|
+
- [Architecture](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ARCHITECTURE.md)
|
|
351
|
+
- [Agent Core](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/AGENT_CORE.md)
|
|
352
|
+
- [AI providers](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/AI_PROVIDERS.md)
|
|
353
|
+
- [Natural-language engineering](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/NATURAL_LANGUAGE_ENGINEERING.md)
|
|
354
|
+
- [Robot platform and Twin](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ROBOT_PLATFORM_AND_TWIN.md)
|
|
355
|
+
- [Measured physical runtime](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/MEASURED_PHYSICAL_RUNTIME.md)
|
|
356
|
+
- [Canonical Twin runtime](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/CANONICAL_TWIN_RUNTIME.md)
|
|
357
|
+
- [Qualification](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/QUALIFICATION.md)
|
|
358
|
+
- [Optimization](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/OPTIMIZATION.md)
|
|
359
|
+
- [Workstation setup](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/SETUP.md)
|
|
360
|
+
- [Laptop acceptance](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/LAPTOP_ACCEPTANCE.md)
|
|
361
|
+
- [PyPI release process](https://github.com/tomha85/devagent-physical-engine/blob/main/docs/PYPI_RELEASE.md)
|
|
362
|
+
|
|
363
|
+
## Project status
|
|
364
|
+
|
|
365
|
+
**v0.11.6 — Beta software / evidence-gated physical runtime.**
|
|
366
|
+
|
|
367
|
+
The software and release pipeline are production-oriented, but physical readiness is scope-specific and evidence-driven. The UR5e physical simulation path remains experimental until its exact target-stack qualification campaign passes. Real robot execution remains locked. Functional-safety certification and site qualification are not claimed.
|
|
368
|
+
|
|
369
|
+
## Ownership
|
|
370
|
+
|
|
371
|
+
DevAgent Smart Physical Engine
|
|
372
|
+
Copyright © 2026 Tom Ha
|
|
373
|
+
Original creator: Tom Ha
|
|
374
|
+
Original project: https://github.com/tomha85/devagent-physical-engine
|
|
375
|
+
All rights reserved.
|