devagent-physical-engine 1.7.2__tar.gz → 1.8.0__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-1.7.2/src/devagent_physical_engine.egg-info → devagent_physical_engine-1.8.0}/PKG-INFO +62 -15
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/README.md +60 -13
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/pyproject.toml +5 -3
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/__init__.py +1 -1
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command_v16.py +8 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/qualification.py +28 -3
- devagent_physical_engine-1.8.0/src/devagent_physical_engine/robot_support_v18.py +97 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/robots.py +6 -0
- devagent_physical_engine-1.8.0/src/devagent_physical_engine/ros2/abb_irb1200.py +441 -0
- devagent_physical_engine-1.8.0/src/devagent_physical_engine/ros2/abb_irb1200_preview.py +203 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/doctor.py +9 -1
- devagent_physical_engine-1.8.0/src/devagent_physical_engine/user_cli_v18.py +283 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0/src/devagent_physical_engine.egg-info}/PKG-INFO +62 -15
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/SOURCES.txt +5 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/entry_points.txt +1 -1
- devagent_physical_engine-1.8.0/tests/test_abb_irb1200_visual_v18.py +180 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_golden_abb_showcase.py +6 -2
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_industrial_motion_v170.py +2 -2
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_robot_platform_v08.py +26 -1
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_transfer_place_diagnostic_v172.py +1 -1
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/NOTICE +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/setup.cfg +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/__init__.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/compiler.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/contracts.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/coordinator.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/critic.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/evidence.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/interpreter.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/planner.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/recovery.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/routing.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/runtime.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/semantic.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/structured.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ai_cli.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/cli.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_campaign.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_cli.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_importer.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_intelligence.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_readiness.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_repository.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/continuous_clearance.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/doctor.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/engineering_agent.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/engineering_request.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/evidence_replay.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/evidence_trust.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/execution.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/industrial_motion_hotfix_v170.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/industrial_motion_v170.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/models.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command_runtime.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command_v15.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/operating_envelope.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/__init__.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/candidates.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/contracts.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/evidence.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/experience.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/measured.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/physical_campaign.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/physical_evidence.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/physical_motion.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/planning.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/pose_math.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/preexecution_contract.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/production_authority.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/production_grade.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/project.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_criterion.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_qualification.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/providers.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/qualification_cli.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/qualification_harness.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/reference_workcell.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/report_test_execution.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/report_test_execution_strict.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/robot_platform.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/__init__.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/commands.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v170.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v171.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v172.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/moveit_joint_plan_v161_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/report_test_visualization.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/report_test_visualization_v170.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/support_contact_acm_probe_v170.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/support_contact_lease_v170.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/support_contact_runner_v161.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/support_contact_v161.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/selective_verification.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/selective_verification_v16.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/setup_profile.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/simulation.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/simulation_platform.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/smooth_motion_hotfix_v162.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/support_contact_hotfix_v161.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/tool_collision.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin_builder.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin_codec.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin_materialization.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/user_cli.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/user_cli_v15.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/user_cli_v16.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/verification.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_agent_core.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_agent_semantic_hardening.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ai_cli.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ai_cli_v07.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_commercial_importer_v1.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_commercial_intelligence_v15.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_commercial_readiness_v1.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_commercial_v1.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_continuous_clearance_v011.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_core.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_engineering_request_v07.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_evidence_replay_v12.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_evidence_trust_coverage_v12.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_evidence_trust_transport_v12.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_evidence_trust_v12.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_evidence_viewer_palette_v130.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_gazebo_cli_v0122.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_golden_abb_runner_v171.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_interpreter_profiles_v08.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_joint_state_probe_v0125.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_live_provider_qualification.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_measured_motion_v10.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_moveit_scene_v0123.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_natural_language_agent_v07.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_one_command_hardening_v13.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_one_command_pose_hardening_v15.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_one_command_regression_v141.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_one_command_v13.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_openai_strict_schema_v0113.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_optimization_v05.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_physical_campaign_v09.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_physical_evidence_v09.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_physical_motion_v09.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_planning_fallback_v012.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_pose_math_v0125.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_preexecution_contract_v10.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_production_authority_v11.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_production_grade_coverage_v11.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_production_grade_v11.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_project_spine_v013.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_provider_and_qualification.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_provider_criterion_v15.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_qualification_harness_v06.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_readme_pypi.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_real_provider_adapters.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_reference_workcell_v012.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_report_test_contract_coverage_v16.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_report_test_lineage_v16.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_report_test_visual_execution_v16.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ros2_production_receipts_v011.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ros2_simulation.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ros_trajectory_v09.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_selective_verification_v14.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_setup_profile.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_sim_real_qualification_v011.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_simulation_platform_v08.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_smooth_motion_hotfix_v162.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_support_contact_hotfix_v161.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_tool_collision_v011.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_tool_scene_v0124.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_trajectory_action_probe_v0125.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_trajectory_qualification_v09.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_trajectory_tracking_v0125.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_twin_materialization_v10.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_twin_v08.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_interactive_v131.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_progress_v131.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_report_visual_v16.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_selective_v14.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_v15.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_v15_hotfix_inheritance.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_v052_stabilization.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_v08_catalog_mapping_regression.py +0 -0
- {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_workpiece_lifecycle_v011.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devagent-physical-engine
|
|
3
|
-
Version: 1.
|
|
4
|
-
Summary: Production-grade verification-first robotics evidence runtime with one-command customer intake,
|
|
3
|
+
Version: 1.8.0
|
|
4
|
+
Summary: Production-grade verification-first robotics evidence runtime with one-command customer intake, truthful robot support tiers, qualified UR5e report-test Gazebo execution, experimental ABB IRB1200 Gazebo/MoveIt/RViz visualization, transfer/place diagnostics, requirement-driven test generation, selective verification, deterministic Twin lineage, measured physical verification, replay inspection, regression, and FAT evidence.
|
|
5
5
|
Author: Tom Ha
|
|
6
6
|
License: All Rights Reserved
|
|
7
7
|
Project-URL: Homepage, https://github.com/tomha85/devagent-physical-engine
|
|
@@ -76,7 +76,7 @@ regression + FAT report + Evidence Viewer
|
|
|
76
76
|
Python 3.11+ is required.
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
|
-
python -m pip install --upgrade devagent-physical-engine==1.
|
|
79
|
+
python -m pip install --upgrade devagent-physical-engine==1.8.0
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
Verify the installed package:
|
|
@@ -88,7 +88,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
|
|
|
88
88
|
Expected:
|
|
89
89
|
|
|
90
90
|
```text
|
|
91
|
-
1.
|
|
91
|
+
1.8.0
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
Run the normal customer workflow:
|
|
@@ -115,6 +115,19 @@ For machine-readable CI output:
|
|
|
115
115
|
devagent verify ./customer-project --json
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
+
Inspect truthful robot support tiers:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
devagent robots
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
For the exact ABB IRB1200 experimental visual runtime:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
devagent robot doctor abb_irb1200
|
|
128
|
+
devagent robot visualize abb_irb1200
|
|
129
|
+
```
|
|
130
|
+
|
|
118
131
|
Default locations:
|
|
119
132
|
|
|
120
133
|
```text
|
|
@@ -327,9 +340,29 @@ pilz_transfer_place_sequence_composition_failed
|
|
|
327
340
|
|
|
328
341
|
Each probe writes its own request/receipt plus a `transfer-place-diagnostic.json` summary. These probes never execute motion and never relax targets, planner types, collision policy, attached-workpiece scene state, velocity/acceleration limits, Twin lineage, or real-execution authority. Their purpose is to identify the exact target-stack defect before changing physical execution semantics.
|
|
329
342
|
|
|
343
|
+
## v1.8 truthful robot support + ABB IRB1200 visual runtime
|
|
344
|
+
|
|
345
|
+
v1.8 makes robot support explicit instead of implying that every built-in robot profile has the same simulator authority.
|
|
346
|
+
|
|
347
|
+
Support is exposed through:
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
devagent robots
|
|
351
|
+
devagent robot doctor <robot>
|
|
352
|
+
devagent robot visualize <robot>
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
The exact `abb_irb1200` profile adds an experimental visual runtime using Ubuntu 24.04, ROS 2 Jazzy, Gazebo Harmonic, `gz_ros2_control`, upstream ABB IRB1200 geometry, MoveIt, and RViz. Runtime readiness is bounded on controller state, `/joint_states`, FollowJointTrajectory, `move_group`, and RViz availability.
|
|
356
|
+
|
|
357
|
+
For the Golden ABB cell, DevAgent can load the waypoint seed, pre-plan every phase through MoveIt before sending any simulated trajectory, then execute the preview while Gazebo/RViz remain open for inspection.
|
|
358
|
+
|
|
359
|
+
This is intentionally **visual simulation availability**, not measured FAT qualification. ABB preview evidence is not promoted to a qualified physical measurement, and `real_execution_allowed` remains false. The normal One-Command ABB FAT path continues to fail closed until an exact-Twin measured ABB execution adapter is separately qualified.
|
|
360
|
+
|
|
361
|
+
Generic `abb_irb`, FANUC CRX, and KUKA KR profiles remain model-only until equivalent vendor/model visual runtimes are implemented and qualified.
|
|
362
|
+
|
|
330
363
|
## Qualified visual-execution scope
|
|
331
364
|
|
|
332
|
-
|
|
365
|
+
Measured report-test execution remains intentionally narrow:
|
|
333
366
|
|
|
334
367
|
```text
|
|
335
368
|
robot: UR5e
|
|
@@ -340,7 +373,7 @@ runtime: Ubuntu 24.04 + ROS 2 Jazzy + Gazebo Harmonic + MoveIt/Pilz
|
|
|
340
373
|
|
|
341
374
|
Unsupported customer Twins, unqualified robot profiles, boundary/fault cases outside the qualified scope, ambiguous case mappings, or incomplete lineage fail closed.
|
|
342
375
|
|
|
343
|
-
|
|
376
|
+
ABB IRB1200 is separately exposed as `SIMULATION_AVAILABLE_EXPERIMENTAL`: Gazebo/MoveIt/RViz preview is available, but it does not silently enter the UR5e measured FAT executor and cannot promote physical evidence.
|
|
344
377
|
|
|
345
378
|
## Interactive engineering session
|
|
346
379
|
|
|
@@ -448,12 +481,12 @@ Ubuntu 24.04
|
|
|
448
481
|
ROS 2 Jazzy
|
|
449
482
|
Gazebo Harmonic
|
|
450
483
|
gz_ros2_control
|
|
451
|
-
|
|
452
|
-
ur_simulation_gz
|
|
453
|
-
MoveIt 2 + Pilz Industrial Motion Planner
|
|
484
|
+
MoveIt 2
|
|
454
485
|
```
|
|
455
486
|
|
|
456
|
-
|
|
487
|
+
UR5e measured report-test execution additionally uses the Universal Robots ROS 2 driver, `ur_simulation_gz`, and Pilz Industrial Motion Planner.
|
|
488
|
+
|
|
489
|
+
Preview UR5e setup:
|
|
457
490
|
|
|
458
491
|
```bash
|
|
459
492
|
devagent-physical setup --profile ur5e-sim --dry-run
|
|
@@ -465,12 +498,24 @@ Apply explicitly:
|
|
|
465
498
|
devagent-physical setup --profile ur5e-sim --yes
|
|
466
499
|
```
|
|
467
500
|
|
|
468
|
-
Check runtime:
|
|
501
|
+
Check the UR5e runtime:
|
|
469
502
|
|
|
470
503
|
```bash
|
|
471
504
|
devagent-physical ros doctor
|
|
472
505
|
```
|
|
473
506
|
|
|
507
|
+
Check ABB IRB1200 visual runtime prerequisites:
|
|
508
|
+
|
|
509
|
+
```bash
|
|
510
|
+
devagent robot doctor abb_irb1200
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
Launch ABB IRB1200 Gazebo + MoveIt + RViz preview:
|
|
514
|
+
|
|
515
|
+
```bash
|
|
516
|
+
devagent robot visualize abb_irb1200
|
|
517
|
+
```
|
|
518
|
+
|
|
474
519
|
Hosted CI validates deterministic software contracts. It does not pretend to execute a graphical ROS/Gazebo/MoveIt target stack. Target-stack acceptance must run on the intended workstation.
|
|
475
520
|
|
|
476
521
|
## Optional AI providers
|
|
@@ -497,7 +542,7 @@ Provider-backed interpretation cannot grant physical truth, site qualification,
|
|
|
497
542
|
## Installed CLIs
|
|
498
543
|
|
|
499
544
|
```text
|
|
500
|
-
devagent one-command
|
|
545
|
+
devagent one-command verification, interactive report testing, robot support/visualization
|
|
501
546
|
devagent-commercial commercial/evidence workflow
|
|
502
547
|
devagent-physical deterministic core + ROS/qualification tools
|
|
503
548
|
devagent-physical-ai optional provider-backed engineering front end
|
|
@@ -515,9 +560,9 @@ devagent-physical-ai optional provider-backed engineering front end
|
|
|
515
560
|
|
|
516
561
|
# Project status
|
|
517
562
|
|
|
518
|
-
**v1.
|
|
563
|
+
**v1.8.0 — Production/Stable software workflow**
|
|
519
564
|
|
|
520
|
-
v1.
|
|
565
|
+
v1.8.0 retains the qualified UR5e measured report-test architecture and the v1.7.2 transfer/place diagnostics, while adding truthful robot support tiers and an exact ABB IRB1200 experimental Gazebo Harmonic + MoveIt + RViz visual runtime. ABB visualization is available for engineering preview, but measured FAT promotion remains fail-closed until the exact ABB execution adapter is separately qualified.
|
|
521
566
|
|
|
522
567
|
Production-oriented software capabilities include:
|
|
523
568
|
|
|
@@ -529,7 +574,9 @@ optional provider-backed advisory criterion proposals
|
|
|
529
574
|
requirement-driven nominal / boundary / fault case generation
|
|
530
575
|
immutable project/Twin lineage
|
|
531
576
|
exact Requirement → Mapping → Verification Plan → Case provenance
|
|
532
|
-
|
|
577
|
+
truthful robot support tiers
|
|
578
|
+
qualified UR5e report-test visual execution contract
|
|
579
|
+
experimental exact ABB IRB1200 Gazebo/MoveIt/RViz preview
|
|
533
580
|
industrial Pilz PTP / LIN planning
|
|
534
581
|
adaptive bounded blend selection
|
|
535
582
|
plan-only transfer/place segment diagnostics
|
|
@@ -35,7 +35,7 @@ regression + FAT report + Evidence Viewer
|
|
|
35
35
|
Python 3.11+ is required.
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
python -m pip install --upgrade devagent-physical-engine==1.
|
|
38
|
+
python -m pip install --upgrade devagent-physical-engine==1.8.0
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
Verify the installed package:
|
|
@@ -47,7 +47,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
|
|
|
47
47
|
Expected:
|
|
48
48
|
|
|
49
49
|
```text
|
|
50
|
-
1.
|
|
50
|
+
1.8.0
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
Run the normal customer workflow:
|
|
@@ -74,6 +74,19 @@ For machine-readable CI output:
|
|
|
74
74
|
devagent verify ./customer-project --json
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
+
Inspect truthful robot support tiers:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
devagent robots
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
For the exact ABB IRB1200 experimental visual runtime:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
devagent robot doctor abb_irb1200
|
|
87
|
+
devagent robot visualize abb_irb1200
|
|
88
|
+
```
|
|
89
|
+
|
|
77
90
|
Default locations:
|
|
78
91
|
|
|
79
92
|
```text
|
|
@@ -286,9 +299,29 @@ pilz_transfer_place_sequence_composition_failed
|
|
|
286
299
|
|
|
287
300
|
Each probe writes its own request/receipt plus a `transfer-place-diagnostic.json` summary. These probes never execute motion and never relax targets, planner types, collision policy, attached-workpiece scene state, velocity/acceleration limits, Twin lineage, or real-execution authority. Their purpose is to identify the exact target-stack defect before changing physical execution semantics.
|
|
288
301
|
|
|
302
|
+
## v1.8 truthful robot support + ABB IRB1200 visual runtime
|
|
303
|
+
|
|
304
|
+
v1.8 makes robot support explicit instead of implying that every built-in robot profile has the same simulator authority.
|
|
305
|
+
|
|
306
|
+
Support is exposed through:
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
devagent robots
|
|
310
|
+
devagent robot doctor <robot>
|
|
311
|
+
devagent robot visualize <robot>
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
The exact `abb_irb1200` profile adds an experimental visual runtime using Ubuntu 24.04, ROS 2 Jazzy, Gazebo Harmonic, `gz_ros2_control`, upstream ABB IRB1200 geometry, MoveIt, and RViz. Runtime readiness is bounded on controller state, `/joint_states`, FollowJointTrajectory, `move_group`, and RViz availability.
|
|
315
|
+
|
|
316
|
+
For the Golden ABB cell, DevAgent can load the waypoint seed, pre-plan every phase through MoveIt before sending any simulated trajectory, then execute the preview while Gazebo/RViz remain open for inspection.
|
|
317
|
+
|
|
318
|
+
This is intentionally **visual simulation availability**, not measured FAT qualification. ABB preview evidence is not promoted to a qualified physical measurement, and `real_execution_allowed` remains false. The normal One-Command ABB FAT path continues to fail closed until an exact-Twin measured ABB execution adapter is separately qualified.
|
|
319
|
+
|
|
320
|
+
Generic `abb_irb`, FANUC CRX, and KUKA KR profiles remain model-only until equivalent vendor/model visual runtimes are implemented and qualified.
|
|
321
|
+
|
|
289
322
|
## Qualified visual-execution scope
|
|
290
323
|
|
|
291
|
-
|
|
324
|
+
Measured report-test execution remains intentionally narrow:
|
|
292
325
|
|
|
293
326
|
```text
|
|
294
327
|
robot: UR5e
|
|
@@ -299,7 +332,7 @@ runtime: Ubuntu 24.04 + ROS 2 Jazzy + Gazebo Harmonic + MoveIt/Pilz
|
|
|
299
332
|
|
|
300
333
|
Unsupported customer Twins, unqualified robot profiles, boundary/fault cases outside the qualified scope, ambiguous case mappings, or incomplete lineage fail closed.
|
|
301
334
|
|
|
302
|
-
|
|
335
|
+
ABB IRB1200 is separately exposed as `SIMULATION_AVAILABLE_EXPERIMENTAL`: Gazebo/MoveIt/RViz preview is available, but it does not silently enter the UR5e measured FAT executor and cannot promote physical evidence.
|
|
303
336
|
|
|
304
337
|
## Interactive engineering session
|
|
305
338
|
|
|
@@ -407,12 +440,12 @@ Ubuntu 24.04
|
|
|
407
440
|
ROS 2 Jazzy
|
|
408
441
|
Gazebo Harmonic
|
|
409
442
|
gz_ros2_control
|
|
410
|
-
|
|
411
|
-
ur_simulation_gz
|
|
412
|
-
MoveIt 2 + Pilz Industrial Motion Planner
|
|
443
|
+
MoveIt 2
|
|
413
444
|
```
|
|
414
445
|
|
|
415
|
-
|
|
446
|
+
UR5e measured report-test execution additionally uses the Universal Robots ROS 2 driver, `ur_simulation_gz`, and Pilz Industrial Motion Planner.
|
|
447
|
+
|
|
448
|
+
Preview UR5e setup:
|
|
416
449
|
|
|
417
450
|
```bash
|
|
418
451
|
devagent-physical setup --profile ur5e-sim --dry-run
|
|
@@ -424,12 +457,24 @@ Apply explicitly:
|
|
|
424
457
|
devagent-physical setup --profile ur5e-sim --yes
|
|
425
458
|
```
|
|
426
459
|
|
|
427
|
-
Check runtime:
|
|
460
|
+
Check the UR5e runtime:
|
|
428
461
|
|
|
429
462
|
```bash
|
|
430
463
|
devagent-physical ros doctor
|
|
431
464
|
```
|
|
432
465
|
|
|
466
|
+
Check ABB IRB1200 visual runtime prerequisites:
|
|
467
|
+
|
|
468
|
+
```bash
|
|
469
|
+
devagent robot doctor abb_irb1200
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
Launch ABB IRB1200 Gazebo + MoveIt + RViz preview:
|
|
473
|
+
|
|
474
|
+
```bash
|
|
475
|
+
devagent robot visualize abb_irb1200
|
|
476
|
+
```
|
|
477
|
+
|
|
433
478
|
Hosted CI validates deterministic software contracts. It does not pretend to execute a graphical ROS/Gazebo/MoveIt target stack. Target-stack acceptance must run on the intended workstation.
|
|
434
479
|
|
|
435
480
|
## Optional AI providers
|
|
@@ -456,7 +501,7 @@ Provider-backed interpretation cannot grant physical truth, site qualification,
|
|
|
456
501
|
## Installed CLIs
|
|
457
502
|
|
|
458
503
|
```text
|
|
459
|
-
devagent one-command
|
|
504
|
+
devagent one-command verification, interactive report testing, robot support/visualization
|
|
460
505
|
devagent-commercial commercial/evidence workflow
|
|
461
506
|
devagent-physical deterministic core + ROS/qualification tools
|
|
462
507
|
devagent-physical-ai optional provider-backed engineering front end
|
|
@@ -474,9 +519,9 @@ devagent-physical-ai optional provider-backed engineering front end
|
|
|
474
519
|
|
|
475
520
|
# Project status
|
|
476
521
|
|
|
477
|
-
**v1.
|
|
522
|
+
**v1.8.0 — Production/Stable software workflow**
|
|
478
523
|
|
|
479
|
-
v1.
|
|
524
|
+
v1.8.0 retains the qualified UR5e measured report-test architecture and the v1.7.2 transfer/place diagnostics, while adding truthful robot support tiers and an exact ABB IRB1200 experimental Gazebo Harmonic + MoveIt + RViz visual runtime. ABB visualization is available for engineering preview, but measured FAT promotion remains fail-closed until the exact ABB execution adapter is separately qualified.
|
|
480
525
|
|
|
481
526
|
Production-oriented software capabilities include:
|
|
482
527
|
|
|
@@ -488,7 +533,9 @@ optional provider-backed advisory criterion proposals
|
|
|
488
533
|
requirement-driven nominal / boundary / fault case generation
|
|
489
534
|
immutable project/Twin lineage
|
|
490
535
|
exact Requirement → Mapping → Verification Plan → Case provenance
|
|
491
|
-
|
|
536
|
+
truthful robot support tiers
|
|
537
|
+
qualified UR5e report-test visual execution contract
|
|
538
|
+
experimental exact ABB IRB1200 Gazebo/MoveIt/RViz preview
|
|
492
539
|
industrial Pilz PTP / LIN planning
|
|
493
540
|
adaptive bounded blend selection
|
|
494
541
|
plan-only transfer/place segment diagnostics
|
|
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "devagent-physical-engine"
|
|
7
|
-
version = "1.
|
|
8
|
-
description = "Production-grade verification-first robotics evidence runtime with one-command customer intake,
|
|
7
|
+
version = "1.8.0"
|
|
8
|
+
description = "Production-grade verification-first robotics evidence runtime with one-command customer intake, truthful robot support tiers, qualified UR5e report-test Gazebo execution, experimental ABB IRB1200 Gazebo/MoveIt/RViz visualization, transfer/place diagnostics, requirement-driven test generation, selective verification, deterministic Twin lineage, measured physical verification, replay inspection, regression, and FAT evidence."
|
|
9
9
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
10
10
|
requires-python = ">=3.11"
|
|
11
11
|
dependencies = ["PyYAML>=6.0,<7"]
|
|
@@ -47,7 +47,7 @@ Repository = "https://github.com/tomha85/devagent-physical-engine"
|
|
|
47
47
|
Issues = "https://github.com/tomha85/devagent-physical-engine/issues"
|
|
48
48
|
|
|
49
49
|
[project.scripts]
|
|
50
|
-
devagent = "devagent_physical_engine.
|
|
50
|
+
devagent = "devagent_physical_engine.user_cli_v18:main"
|
|
51
51
|
devagent-physical = "devagent_physical_engine.cli:main"
|
|
52
52
|
devagent-physical-ai = "devagent_physical_engine.ai_cli:main"
|
|
53
53
|
devagent-commercial = "devagent_physical_engine.commercial_cli:main"
|
|
@@ -81,6 +81,8 @@ omit = [
|
|
|
81
81
|
"src/devagent_physical_engine/ros2/gazebo_pose.py",
|
|
82
82
|
"src/devagent_physical_engine/ros2/workpiece_follow.py",
|
|
83
83
|
"src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py",
|
|
84
|
+
"src/devagent_physical_engine/ros2/abb_irb1200.py",
|
|
85
|
+
"src/devagent_physical_engine/ros2/abb_irb1200_preview.py",
|
|
84
86
|
]
|
|
85
87
|
|
|
86
88
|
[tool.coverage.report]
|
|
@@ -13,6 +13,10 @@ from .commercial_repository import CommercialProjectRepository
|
|
|
13
13
|
from .one_command_v15 import OneCommandVerifier as OneCommandVerifierV15
|
|
14
14
|
from .one_command_v15 import SimpleVerifyResult
|
|
15
15
|
from .report_test_execution_strict import ReportTestFullExecutor
|
|
16
|
+
from .robot_support_v18 import ensure_v18_robot_profiles
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
ensure_v18_robot_profiles()
|
|
16
20
|
|
|
17
21
|
|
|
18
22
|
class ProfileGatedReportTestFullExecutor(ReportTestFullExecutor):
|
|
@@ -23,6 +27,10 @@ class ProfileGatedReportTestFullExecutor(ReportTestFullExecutor):
|
|
|
23
27
|
entering UR5e-specific request materialization so that One-Command can continue
|
|
24
28
|
producing bounded campaign/FAT evidence instead of surfacing an executor
|
|
25
29
|
traceback.
|
|
30
|
+
|
|
31
|
+
Exact profiles may expose an experimental visual runtime (for example ABB
|
|
32
|
+
IRB1200) while remaining blocked here until that runtime passes measured FAT
|
|
33
|
+
qualification. Availability is deliberately not treated as evidence authority.
|
|
26
34
|
"""
|
|
27
35
|
|
|
28
36
|
def execute(
|
|
@@ -9,6 +9,17 @@ from .robots import CATALOG
|
|
|
9
9
|
from .simulation import DeterministicSimulationBackend
|
|
10
10
|
|
|
11
11
|
|
|
12
|
+
# This is the original v1 cross-vendor *family* corpus. Exact model profiles added
|
|
13
|
+
# later (for example abb_irb1200) must not silently change the historical smoke
|
|
14
|
+
# baseline or turn a family-level qualification into a count of registry entries.
|
|
15
|
+
V1_ROBOT_FAMILIES = (
|
|
16
|
+
"ur5e",
|
|
17
|
+
"fanuc_crx",
|
|
18
|
+
"kuka_kr",
|
|
19
|
+
"abb_irb",
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
12
23
|
@dataclass(frozen=True, slots=True)
|
|
13
24
|
class QualificationCaseResult:
|
|
14
25
|
robot: str
|
|
@@ -35,10 +46,24 @@ def run_cross_vendor_smoke() -> QualificationSummary:
|
|
|
35
46
|
supervisor = ExecutionSupervisor()
|
|
36
47
|
goal = Goal("G1", "load", "P17", "conveyor_a", "cnc_04")
|
|
37
48
|
results: list[QualificationCaseResult] = []
|
|
38
|
-
for robot_name
|
|
49
|
+
for robot_name in V1_ROBOT_FAMILIES:
|
|
50
|
+
factory = CATALOG[robot_name]
|
|
39
51
|
resource = factory()
|
|
40
52
|
graph = planner.plan(goal, [resource])
|
|
41
53
|
world = WorldState(facts={"robot_ready", "object_available"})
|
|
42
|
-
report = supervisor.execute(
|
|
43
|
-
|
|
54
|
+
report = supervisor.execute(
|
|
55
|
+
graph,
|
|
56
|
+
[resource],
|
|
57
|
+
world,
|
|
58
|
+
DeterministicSimulationBackend(),
|
|
59
|
+
ExecutionMode.SIMULATION,
|
|
60
|
+
)
|
|
61
|
+
results.append(
|
|
62
|
+
QualificationCaseResult(
|
|
63
|
+
robot_name,
|
|
64
|
+
report.completed,
|
|
65
|
+
len(report.executed_tasks),
|
|
66
|
+
len(report.issues),
|
|
67
|
+
)
|
|
68
|
+
)
|
|
44
69
|
return QualificationSummary(tuple(results))
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from .robot_platform import (
|
|
4
|
+
ARM_CAPABILITIES,
|
|
5
|
+
BUILTIN_ROBOT_PROFILES,
|
|
6
|
+
QualificationState,
|
|
7
|
+
RobotProfile,
|
|
8
|
+
RobotQualification,
|
|
9
|
+
RosIntegration,
|
|
10
|
+
SimulationTier,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
ABB_IRB1200_PROFILE_KEY = "abb_irb1200"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _abb_irb1200_profile() -> RobotProfile:
|
|
17
|
+
"""Exact ABB IRB 1200-5/0.9 profile.
|
|
18
|
+
|
|
19
|
+
The visual/physics runtime remains EXPERIMENTAL until target-workstation
|
|
20
|
+
acceptance proves the exact Gazebo/MoveIt integration. This makes the runtime
|
|
21
|
+
available without prematurely upgrading FAT evidence authority.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
return RobotProfile(
|
|
25
|
+
key=ABB_IRB1200_PROFILE_KEY,
|
|
26
|
+
vendor="abb",
|
|
27
|
+
model="irb1200_5_90",
|
|
28
|
+
capabilities=ARM_CAPABILITIES,
|
|
29
|
+
qualification=RobotQualification(
|
|
30
|
+
{
|
|
31
|
+
SimulationTier.DETERMINISTIC: QualificationState.QUALIFIED,
|
|
32
|
+
SimulationTier.KINEMATIC: QualificationState.EXPERIMENTAL,
|
|
33
|
+
SimulationTier.PHYSICS: QualificationState.EXPERIMENTAL,
|
|
34
|
+
SimulationTier.VISUAL: QualificationState.EXPERIMENTAL,
|
|
35
|
+
}
|
|
36
|
+
),
|
|
37
|
+
ros=RosIntegration(
|
|
38
|
+
ros2_compatible=True,
|
|
39
|
+
joint_state_interface="/joint_states",
|
|
40
|
+
trajectory_interface="joint_trajectory_controller/follow_joint_trajectory",
|
|
41
|
+
robot_description="abb_irb1200_support",
|
|
42
|
+
moveit_config="abb_irb1200_5_90_moveit_config",
|
|
43
|
+
hardware_driver="abb_ros2",
|
|
44
|
+
),
|
|
45
|
+
aliases=(
|
|
46
|
+
"abb irb1200",
|
|
47
|
+
"abb irb 1200",
|
|
48
|
+
"abb irb 1200-5/0.9",
|
|
49
|
+
"abb irb1200-5/0.9",
|
|
50
|
+
"irb1200",
|
|
51
|
+
"irb1200 5 90",
|
|
52
|
+
),
|
|
53
|
+
legacy_qualification="experimental",
|
|
54
|
+
notes=(
|
|
55
|
+
"Exact ABB IRB 1200-5/0.9 ROS2 profile.",
|
|
56
|
+
"Gazebo Harmonic + gz_ros2_control + MoveIt/RViz runtime is available "
|
|
57
|
+
"as an experimental visual path until laptop acceptance is recorded.",
|
|
58
|
+
"Visual preview motion is not FAT measurement evidence and real execution "
|
|
59
|
+
"remains locked.",
|
|
60
|
+
),
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def ensure_v18_robot_profiles() -> None:
|
|
65
|
+
"""Idempotently extend the built-in registry with exact v1.8 profiles."""
|
|
66
|
+
|
|
67
|
+
try:
|
|
68
|
+
BUILTIN_ROBOT_PROFILES.get(ABB_IRB1200_PROFILE_KEY)
|
|
69
|
+
except Exception:
|
|
70
|
+
BUILTIN_ROBOT_PROFILES.register(_abb_irb1200_profile())
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def robot_support_level(profile: RobotProfile) -> str:
|
|
74
|
+
"""Return a user-facing support label that never overstates qualification."""
|
|
75
|
+
|
|
76
|
+
physics = profile.qualification.state_for(SimulationTier.PHYSICS)
|
|
77
|
+
visual = profile.qualification.state_for(SimulationTier.VISUAL)
|
|
78
|
+
kinematic = profile.qualification.state_for(SimulationTier.KINEMATIC)
|
|
79
|
+
|
|
80
|
+
if physics is QualificationState.QUALIFIED and visual is QualificationState.QUALIFIED:
|
|
81
|
+
return "SIMULATION_SUPPORTED"
|
|
82
|
+
if physics is QualificationState.EXPERIMENTAL and visual is QualificationState.EXPERIMENTAL:
|
|
83
|
+
return "SIMULATION_AVAILABLE_EXPERIMENTAL"
|
|
84
|
+
if visual is QualificationState.QUALIFIED or kinematic is QualificationState.QUALIFIED:
|
|
85
|
+
return "VISUAL_SUPPORTED"
|
|
86
|
+
if visual is QualificationState.EXPERIMENTAL or kinematic is QualificationState.EXPERIMENTAL:
|
|
87
|
+
return "VISUAL_AVAILABLE_EXPERIMENTAL"
|
|
88
|
+
return "MODEL_ONLY"
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
ensure_v18_robot_profiles()
|
|
92
|
+
|
|
93
|
+
__all__ = [
|
|
94
|
+
"ABB_IRB1200_PROFILE_KEY",
|
|
95
|
+
"ensure_v18_robot_profiles",
|
|
96
|
+
"robot_support_level",
|
|
97
|
+
]
|
|
@@ -9,8 +9,10 @@ from .robot_platform import (
|
|
|
9
9
|
RobotPlatformError,
|
|
10
10
|
RobotProfileRegistry,
|
|
11
11
|
)
|
|
12
|
+
from .robot_support_v18 import ensure_v18_robot_profiles
|
|
12
13
|
|
|
13
14
|
|
|
15
|
+
ensure_v18_robot_profiles()
|
|
14
16
|
PROFILE_REGISTRY: RobotProfileRegistry = BUILTIN_ROBOT_PROFILES
|
|
15
17
|
|
|
16
18
|
|
|
@@ -34,6 +36,10 @@ def abb_irb(resource_id: str = "robot_01") -> Resource:
|
|
|
34
36
|
return _resource("abb_irb", resource_id)
|
|
35
37
|
|
|
36
38
|
|
|
39
|
+
def abb_irb1200(resource_id: str = "robot_01") -> Resource:
|
|
40
|
+
return _resource("abb_irb1200", resource_id)
|
|
41
|
+
|
|
42
|
+
|
|
37
43
|
class _RegistryBackedCatalog(Mapping[str, Callable[..., Resource]]):
|
|
38
44
|
"""Compatibility view for older core code that expects CATALOG[key]().
|
|
39
45
|
|