devagent-physical-engine 0.10.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.
Files changed (120) hide show
  1. devagent_physical_engine-0.10.0/NOTICE +2 -0
  2. devagent_physical_engine-0.10.0/PKG-INFO +315 -0
  3. devagent_physical_engine-0.10.0/README.md +280 -0
  4. devagent_physical_engine-0.10.0/pyproject.toml +47 -0
  5. devagent_physical_engine-0.10.0/setup.cfg +4 -0
  6. devagent_physical_engine-0.10.0/src/devagent_physical_engine/__init__.py +44 -0
  7. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/__init__.py +40 -0
  8. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/compiler.py +285 -0
  9. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/contracts.py +129 -0
  10. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/coordinator.py +108 -0
  11. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/critic.py +72 -0
  12. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/evidence.py +34 -0
  13. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/interpreter.py +179 -0
  14. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/planner.py +105 -0
  15. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/recovery.py +54 -0
  16. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/routing.py +76 -0
  17. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/runtime.py +270 -0
  18. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/semantic.py +304 -0
  19. devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/structured.py +423 -0
  20. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ai_cli.py +226 -0
  21. devagent_physical_engine-0.10.0/src/devagent_physical_engine/cli.py +392 -0
  22. devagent_physical_engine-0.10.0/src/devagent_physical_engine/doctor.py +20 -0
  23. devagent_physical_engine-0.10.0/src/devagent_physical_engine/engineering_agent.py +243 -0
  24. devagent_physical_engine-0.10.0/src/devagent_physical_engine/engineering_request.py +630 -0
  25. devagent_physical_engine-0.10.0/src/devagent_physical_engine/execution.py +90 -0
  26. devagent_physical_engine-0.10.0/src/devagent_physical_engine/models.py +143 -0
  27. devagent_physical_engine-0.10.0/src/devagent_physical_engine/operating_envelope.py +120 -0
  28. devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/__init__.py +50 -0
  29. devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/benchmark.py +122 -0
  30. devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/candidates.py +198 -0
  31. devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/contracts.py +235 -0
  32. devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/evaluator.py +107 -0
  33. devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/evidence.py +53 -0
  34. devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/experience.py +105 -0
  35. devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/measured.py +125 -0
  36. devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/optimizer.py +215 -0
  37. devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/orchestrator.py +155 -0
  38. devagent_physical_engine-0.10.0/src/devagent_physical_engine/physical_campaign.py +413 -0
  39. devagent_physical_engine-0.10.0/src/devagent_physical_engine/physical_evidence.py +214 -0
  40. devagent_physical_engine-0.10.0/src/devagent_physical_engine/physical_motion.py +196 -0
  41. devagent_physical_engine-0.10.0/src/devagent_physical_engine/planning.py +80 -0
  42. devagent_physical_engine-0.10.0/src/devagent_physical_engine/preexecution_contract.py +65 -0
  43. devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/__init__.py +22 -0
  44. devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/anthropic.py +112 -0
  45. devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/common.py +187 -0
  46. devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/factory.py +20 -0
  47. devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/gemini.py +126 -0
  48. devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/openai.py +95 -0
  49. devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_qualification.py +268 -0
  50. devagent_physical_engine-0.10.0/src/devagent_physical_engine/providers.py +94 -0
  51. devagent_physical_engine-0.10.0/src/devagent_physical_engine/qualification.py +44 -0
  52. devagent_physical_engine-0.10.0/src/devagent_physical_engine/qualification_cli.py +195 -0
  53. devagent_physical_engine-0.10.0/src/devagent_physical_engine/qualification_harness.py +917 -0
  54. devagent_physical_engine-0.10.0/src/devagent_physical_engine/robot_platform.py +411 -0
  55. devagent_physical_engine-0.10.0/src/devagent_physical_engine/robots.py +76 -0
  56. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/__init__.py +35 -0
  57. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/acceptance.py +324 -0
  58. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/commands.py +175 -0
  59. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/doctor.py +116 -0
  60. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/fk_probe.py +83 -0
  61. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/frame_alignment.py +61 -0
  62. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/gazebo_world.py +125 -0
  63. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/joint_state_recorder.py +64 -0
  64. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/measured_motion.py +233 -0
  65. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/moveit_scene.py +121 -0
  66. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/preexecution.py +113 -0
  67. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/qualification.py +81 -0
  68. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/qualification_v10.py +252 -0
  69. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/scene_probe.py +219 -0
  70. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/state_validity_probe.py +125 -0
  71. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/tf_probe.py +51 -0
  72. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/trajectory.py +188 -0
  73. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/ur5e.py +59 -0
  74. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/ur5e_adapter.py +349 -0
  75. devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +292 -0
  76. devagent_physical_engine-0.10.0/src/devagent_physical_engine/setup_profile.py +356 -0
  77. devagent_physical_engine-0.10.0/src/devagent_physical_engine/simulation.py +32 -0
  78. devagent_physical_engine-0.10.0/src/devagent_physical_engine/simulation_platform.py +269 -0
  79. devagent_physical_engine-0.10.0/src/devagent_physical_engine/trajectory_qualification.py +201 -0
  80. devagent_physical_engine-0.10.0/src/devagent_physical_engine/twin.py +939 -0
  81. devagent_physical_engine-0.10.0/src/devagent_physical_engine/twin_builder.py +309 -0
  82. devagent_physical_engine-0.10.0/src/devagent_physical_engine/twin_materialization.py +404 -0
  83. devagent_physical_engine-0.10.0/src/devagent_physical_engine/verification.py +46 -0
  84. devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/PKG-INFO +315 -0
  85. devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/SOURCES.txt +118 -0
  86. devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/dependency_links.txt +1 -0
  87. devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/entry_points.txt +3 -0
  88. devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/requires.txt +15 -0
  89. devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/top_level.txt +1 -0
  90. devagent_physical_engine-0.10.0/tests/test_agent_core.py +599 -0
  91. devagent_physical_engine-0.10.0/tests/test_agent_semantic_hardening.py +199 -0
  92. devagent_physical_engine-0.10.0/tests/test_ai_cli.py +54 -0
  93. devagent_physical_engine-0.10.0/tests/test_ai_cli_v07.py +129 -0
  94. devagent_physical_engine-0.10.0/tests/test_core.py +94 -0
  95. devagent_physical_engine-0.10.0/tests/test_engineering_request_v07.py +194 -0
  96. devagent_physical_engine-0.10.0/tests/test_interpreter_profiles_v08.py +107 -0
  97. devagent_physical_engine-0.10.0/tests/test_live_provider_qualification.py +150 -0
  98. devagent_physical_engine-0.10.0/tests/test_measured_motion_v10.py +52 -0
  99. devagent_physical_engine-0.10.0/tests/test_natural_language_agent_v07.py +201 -0
  100. devagent_physical_engine-0.10.0/tests/test_optimization_v05.py +254 -0
  101. devagent_physical_engine-0.10.0/tests/test_physical_campaign_v09.py +341 -0
  102. devagent_physical_engine-0.10.0/tests/test_physical_evidence_v09.py +115 -0
  103. devagent_physical_engine-0.10.0/tests/test_physical_motion_v09.py +123 -0
  104. devagent_physical_engine-0.10.0/tests/test_preexecution_contract_v10.py +47 -0
  105. devagent_physical_engine-0.10.0/tests/test_provider_and_qualification.py +52 -0
  106. devagent_physical_engine-0.10.0/tests/test_qualification_cli_lifecycle_v06.py +91 -0
  107. devagent_physical_engine-0.10.0/tests/test_qualification_harness_v06.py +273 -0
  108. devagent_physical_engine-0.10.0/tests/test_real_provider_adapters.py +260 -0
  109. devagent_physical_engine-0.10.0/tests/test_robot_platform_v08.py +174 -0
  110. devagent_physical_engine-0.10.0/tests/test_ros2_simulation.py +358 -0
  111. devagent_physical_engine-0.10.0/tests/test_ros_trajectory_v09.py +59 -0
  112. devagent_physical_engine-0.10.0/tests/test_setup_profile.py +232 -0
  113. devagent_physical_engine-0.10.0/tests/test_simulation_platform_v08.py +186 -0
  114. devagent_physical_engine-0.10.0/tests/test_trajectory_qualification_v09.py +136 -0
  115. devagent_physical_engine-0.10.0/tests/test_twin_materialization_v10.py +132 -0
  116. devagent_physical_engine-0.10.0/tests/test_twin_v08.py +345 -0
  117. devagent_physical_engine-0.10.0/tests/test_ur5e_adapter_scopes_v09.py +33 -0
  118. devagent_physical_engine-0.10.0/tests/test_ur5e_v10_adapter_scopes.py +29 -0
  119. devagent_physical_engine-0.10.0/tests/test_v052_stabilization.py +145 -0
  120. devagent_physical_engine-0.10.0/tests/test_v08_catalog_mapping_regression.py +18 -0
@@ -0,0 +1,2 @@
1
+ DevAgent Smart Physical Engine is original software by Tom Ha.
2
+ Third-party robotics middleware, robot drivers, SDKs, and AI providers remain subject to their own licenses.
@@ -0,0 +1,315 @@
1
+ Metadata-Version: 2.4
2
+ Name: devagent-physical-engine
3
+ Version: 0.10.0
4
+ Summary: Verification-first agentic planning runtime for robotic 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 :: 3 - Alpha
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
+ Dynamic: license-file
35
+
36
+ # DevAgent Smart Physical Engine
37
+
38
+ **Verification-first agentic engineering, planning, optimization, simulation, and evidence runtime for robotic and industrial automation.**
39
+
40
+ > **AI proposes. Deterministic engines validate, compile, verify, simulate, measure, and gate promotion. Existing certified controllers remain authoritative.**
41
+
42
+ DevAgent Smart Physical Engine is designed to add AI-assisted engineering to existing automation without replacing robot controllers, PLCs, safety controllers, or real-time servo loops. The core is provider-neutral and keeps engineering authority separated from model output.
43
+
44
+ ## Current version
45
+
46
+ **v0.10.0 — Alpha**
47
+
48
+ The Python software stack is regression-tested in GitHub Actions on Python 3.11, 3.12, and 3.13. The UR5e Gazebo/MoveIt canonical physical-simulation runtime is implemented but remains **EXPERIMENTAL** until executable target-workstation qualification promotes its individual scopes.
49
+
50
+ Real robot execution remains locked. Functional-safety certification is not claimed.
51
+
52
+ ## What v0.10.0 includes
53
+
54
+ | Area | Status |
55
+ | --- | --- |
56
+ | Provider-neutral Agent Core | Implemented |
57
+ | OpenAI structured provider adapter | Implemented |
58
+ | Anthropic structured provider adapter | Implemented |
59
+ | Gemini structured provider adapter | Implemented |
60
+ | Planner / Critic / Recovery | Implemented |
61
+ | Natural-language engineering request front door | Implemented |
62
+ | Deterministic request/compiler/policy gates | Implemented |
63
+ | Multi-vendor robot profile registry | Implemented |
64
+ | UR5e / FANUC CRX / KUKA KR / ABB IRB profile abstraction | Implemented |
65
+ | Evidence-aware canonical TwinSpec | Implemented |
66
+ | Deterministic Twin validation and confidence levels | Implemented |
67
+ | Bounded candidate generation and Pareto optimization | Implemented |
68
+ | Replayable qualification/evidence primitives | Implemented |
69
+ | Canonical physical motion contract | Implemented |
70
+ | Measured joint-state trajectory runtime | Implemented |
71
+ | Canonical Twin -> Gazebo + MoveIt materialization | Implemented |
72
+ | Gazebo / TF / MoveIt backend read-back verification | Implemented |
73
+ | Sampled MoveIt pre-execution state-validity checks | Implemented, **discrete only** |
74
+ | Measured motion duration / joint travel | Implemented |
75
+ | MoveIt FK TCP path length / final TCP error | Implemented |
76
+ | UR5e canonical Gazebo/MoveIt adapter | **EXPERIMENTAL** |
77
+ | Continuous collision checking qualification | **Not qualified** |
78
+ | Minimum-clearance measurement | **Not qualified** |
79
+ | Sim-real correlation | **Not qualified** |
80
+ | Site qualification | **Not qualified** |
81
+ | Real robot execution | **Locked** |
82
+ | Functional-safety certification | Not claimed |
83
+
84
+ ## Trust chain
85
+
86
+ ```mermaid
87
+ flowchart TD
88
+ USER[Engineer / customer application] --> REQUEST[Natural-language engineering request]
89
+ REQUEST --> INTERPRETER[Requirement Interpreter]
90
+
91
+ INTERPRETER --> OAI[OpenAI]
92
+ INTERPRETER --> CLAUDE[Anthropic]
93
+ INTERPRETER --> GEMINI[Gemini]
94
+
95
+ OAI --> AGENTS[Planner / Critic / Recovery]
96
+ CLAUDE --> AGENTS
97
+ GEMINI --> AGENTS
98
+
99
+ AGENTS --> COMPILE[Deterministic compile + policy]
100
+ COMPILE --> VERIFY[Verified plan artifact]
101
+ VERIFY --> TWIN[Canonical TwinSpec + SHA256]
102
+ TWIN --> MATERIALIZE[Canonical materialization]
103
+
104
+ MATERIALIZE --> GZ[Gazebo world]
105
+ MATERIALIZE --> MOVEIT[MoveIt PlanningScene]
106
+ MATERIALIZE --> TF[TF / frame model]
107
+
108
+ GZ --> READBACK[Backend read-back verification]
109
+ MOVEIT --> READBACK
110
+ TF --> READBACK
111
+
112
+ READBACK --> PRECHECK[Pre-execution verification]
113
+ PRECHECK --> MOTION[Exact PhysicalMotionPlan]
114
+ MOTION --> SIM[Gazebo / ROS 2 execution]
115
+ SIM --> MEASURE[Measured joint states + MoveIt FK]
116
+ MEASURE --> EVIDENCE[Replayable evidence]
117
+ EVIDENCE --> PROMOTION[Evidence-driven promotion gate]
118
+
119
+ PROMOTION --> LOCKED[Real execution remains locked]
120
+ ```
121
+
122
+ The v0.10 architecture is specifically designed to prevent DevAgent from validating one Twin while MoveIt plans against a different scene and Gazebo executes a different world. One canonical Twin fingerprint is carried through materialization, backend read-back, pre-execution verification, motion execution, and evidence.
123
+
124
+ ## Safety and qualification boundary
125
+
126
+ A successful software test or simulation run does **not** automatically create a commissioning or real-hardware claim.
127
+
128
+ The v0.10 canonical qualification report deliberately keeps:
129
+
130
+ ```text
131
+ physical_qualification = false
132
+ commissioning_qualification = false
133
+ continuous_collision_check = false
134
+ minimum_clearance_measured = false
135
+ real_execution_allowed = false
136
+ site_qualification = false
137
+ ```
138
+
139
+ A reference campaign can produce promotion-candidate evidence for an experimental scope, but promotion remains evidence-driven and scope-specific.
140
+
141
+ ## Installation from source
142
+
143
+ Python 3.11+ is required.
144
+
145
+ ```bash
146
+ git clone https://github.com/tomha85/devagent-physical-engine.git
147
+ cd devagent-physical-engine
148
+ python -m venv .venv
149
+ source .venv/bin/activate
150
+ python -m pip install --upgrade pip
151
+ python -m pip install -e .
152
+ ```
153
+
154
+ Optional AI provider SDKs:
155
+
156
+ ```bash
157
+ python -m pip install -e ".[openai]"
158
+ python -m pip install -e ".[anthropic]"
159
+ python -m pip install -e ".[gemini]"
160
+ python -m pip install -e ".[ai]"
161
+ ```
162
+
163
+ `pip install` does not install ROS/Gazebo system packages or perform privileged OS changes.
164
+
165
+ ## AI providers
166
+
167
+ Credentials stay outside the world model:
168
+
169
+ ```bash
170
+ export OPENAI_API_KEY='...'
171
+ export ANTHROPIC_API_KEY='...'
172
+ export GEMINI_API_KEY='...'
173
+ ```
174
+
175
+ Check a provider without making a network qualification call:
176
+
177
+ ```bash
178
+ devagent-physical-ai doctor --provider openai
179
+ ```
180
+
181
+ Run live provider qualification:
182
+
183
+ ```bash
184
+ devagent-physical-ai qualify --provider openai --model <model-id>
185
+ ```
186
+
187
+ Interpret an engineering request:
188
+
189
+ ```bash
190
+ devagent-physical-ai request \
191
+ "Use a UR5e to move a part from conveyor_a to cnc_04" \
192
+ --provider openai \
193
+ --model <model-id>
194
+ ```
195
+
196
+ Run the natural-language engineering pipeline:
197
+
198
+ ```bash
199
+ devagent-physical-ai engineer \
200
+ "Use a UR5e to move a part from conveyor_a to cnc_04" \
201
+ --provider openai \
202
+ --model <model-id>
203
+ ```
204
+
205
+ Equivalent provider commands support Anthropic and Gemini. Live AI routing is simulation-only and does not unlock real execution.
206
+
207
+ See [`docs/AI_PROVIDERS.md`](docs/AI_PROVIDERS.md) and [`docs/NATURAL_LANGUAGE_ENGINEERING.md`](docs/NATURAL_LANGUAGE_ENGINEERING.md).
208
+
209
+ ## Deterministic verification
210
+
211
+ Core checks:
212
+
213
+ ```bash
214
+ python -m compileall -q src tests
215
+ python -m unittest discover -s tests -v
216
+ devagent-physical doctor
217
+ devagent-physical qualify
218
+ devagent-physical simulate --robot fanuc_crx --inject-collision
219
+ ```
220
+
221
+ The repository CI performs editable installation, `compileall`, and the full `unittest` regression matrix on Python 3.11 / 3.12 / 3.13.
222
+
223
+ ## UR5e ROS 2 / Gazebo target stack
224
+
225
+ Current reference target:
226
+
227
+ ```text
228
+ Ubuntu 24.04
229
+ ROS 2 Jazzy
230
+ Gazebo Harmonic
231
+ gz_ros2_control
232
+ Universal Robots ROS 2 driver
233
+ ur_simulation_gz
234
+ MoveIt 2
235
+ ```
236
+
237
+ Inspect workstation changes without modifying the system:
238
+
239
+ ```bash
240
+ devagent-physical setup --profile ur5e-sim --dry-run
241
+ ```
242
+
243
+ Explicitly install/verify the supported workstation profile:
244
+
245
+ ```bash
246
+ devagent-physical setup --profile ur5e-sim
247
+ ```
248
+
249
+ Then run:
250
+
251
+ ```bash
252
+ devagent-physical ros doctor
253
+ devagent-physical ros demo
254
+ ```
255
+
256
+ The visual demo launches the official UR5e Gazebo + MoveIt/RViz stack, waits for controller readiness and `/joint_states`, performs a motion smoke, verifies measured joint-state movement, and records evidence.
257
+
258
+ Trajectory-runtime-only qualification is also available:
259
+
260
+ ```bash
261
+ devagent-physical ros qualify-trajectory-runtime
262
+ ```
263
+
264
+ That command qualifies only its defined scope and does not promote commissioning or real-hardware execution.
265
+
266
+ ## v0.10 canonical Twin qualification
267
+
268
+ The executable reference campaign is intentionally separate from ordinary GitHub CI because it requires the ROS/Gazebo/MoveIt target stack:
269
+
270
+ ```bash
271
+ python -m devagent_physical_engine.ros2.qualification_v10 \
272
+ --log-dir ~/.devagent/v10-canonical-qualification
273
+ ```
274
+
275
+ The campaign requires canonical Gazebo/MoveIt materialization, TF alignment, backend scene read-back, sampled pre-execution validity, measured joint-state motion, and MoveIt FK evidence across the reference trajectories.
276
+
277
+ Even a green reference campaign remains an experimental-scope promotion candidate until the missing commissioning gates—such as continuous collision checking and qualified minimum-clearance measurement—are implemented and evidenced.
278
+
279
+ See [`docs/CANONICAL_TWIN_RUNTIME.md`](docs/CANONICAL_TWIN_RUNTIME.md) and [`docs/MEASURED_PHYSICAL_RUNTIME.md`](docs/MEASURED_PHYSICAL_RUNTIME.md).
280
+
281
+ ## Optimization semantics
282
+
283
+ DevAgent does **not** claim a mathematical global optimum. It selects the **best evaluated verified candidate** among the candidates and motion variants that were actually generated, verified, and measured under the configured objective profile.
284
+
285
+ A candidate is ineligible when deterministic verification/simulation fails, a hard violation is reported, required metrics are unknown, or configured quality gates fail. Weighted scoring cannot make an unsafe or unverified plan acceptable.
286
+
287
+ See [`docs/OPTIMIZATION.md`](docs/OPTIMIZATION.md).
288
+
289
+ ## Documentation
290
+
291
+ - [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) — trust boundaries and runtime architecture.
292
+ - [`docs/AGENT_CORE.md`](docs/AGENT_CORE.md) — Agent Core design.
293
+ - [`docs/AI_PROVIDERS.md`](docs/AI_PROVIDERS.md) — provider installation, credentials, and qualification.
294
+ - [`docs/NATURAL_LANGUAGE_ENGINEERING.md`](docs/NATURAL_LANGUAGE_ENGINEERING.md) — natural-language engineering request flow.
295
+ - [`docs/ROBOT_PLATFORM_AND_TWIN.md`](docs/ROBOT_PLATFORM_AND_TWIN.md) — multi-vendor robot platform and evidence-aware Twin.
296
+ - [`docs/MEASURED_PHYSICAL_RUNTIME.md`](docs/MEASURED_PHYSICAL_RUNTIME.md) — physical motion and measured qualification runtime.
297
+ - [`docs/CANONICAL_TWIN_RUNTIME.md`](docs/CANONICAL_TWIN_RUNTIME.md) — canonical Gazebo/MoveIt/TF materialization and verification.
298
+ - [`docs/QUALIFICATION.md`](docs/QUALIFICATION.md) — qualification and evidence model.
299
+ - [`docs/OPTIMIZATION.md`](docs/OPTIMIZATION.md) — search, metrics, Pareto ranking, and evidence.
300
+ - [`docs/SETUP.md`](docs/SETUP.md) — explicit workstation bootstrap.
301
+ - [`docs/LAPTOP_ACCEPTANCE.md`](docs/LAPTOP_ACCEPTANCE.md) — UR5e visual workstation acceptance.
302
+
303
+ ## Release policy
304
+
305
+ `v0.10.0` is the first tagged GitHub release of this repository. It is an **alpha engineering release**, not a declaration of functional-safety certification, site qualification, or authorization for autonomous real-robot execution.
306
+
307
+ Future capability promotion must remain evidence-driven and must not silently upgrade experimental simulator results into commissioning claims.
308
+
309
+ ## Ownership
310
+
311
+ DevAgent Smart Physical Engine
312
+ Copyright © 2026 Tom Ha
313
+ Original creator: Tom Ha
314
+ Original project: https://github.com/tomha85/devagent-physical-engine
315
+ All rights reserved.
@@ -0,0 +1,280 @@
1
+ # DevAgent Smart Physical Engine
2
+
3
+ **Verification-first agentic engineering, planning, optimization, simulation, and evidence runtime for robotic and industrial automation.**
4
+
5
+ > **AI proposes. Deterministic engines validate, compile, verify, simulate, measure, and gate promotion. Existing certified controllers remain authoritative.**
6
+
7
+ DevAgent Smart Physical Engine is designed to add AI-assisted engineering to existing automation without replacing robot controllers, PLCs, safety controllers, or real-time servo loops. The core is provider-neutral and keeps engineering authority separated from model output.
8
+
9
+ ## Current version
10
+
11
+ **v0.10.0 — Alpha**
12
+
13
+ The Python software stack is regression-tested in GitHub Actions on Python 3.11, 3.12, and 3.13. The UR5e Gazebo/MoveIt canonical physical-simulation runtime is implemented but remains **EXPERIMENTAL** until executable target-workstation qualification promotes its individual scopes.
14
+
15
+ Real robot execution remains locked. Functional-safety certification is not claimed.
16
+
17
+ ## What v0.10.0 includes
18
+
19
+ | Area | Status |
20
+ | --- | --- |
21
+ | Provider-neutral Agent Core | Implemented |
22
+ | OpenAI structured provider adapter | Implemented |
23
+ | Anthropic structured provider adapter | Implemented |
24
+ | Gemini structured provider adapter | Implemented |
25
+ | Planner / Critic / Recovery | Implemented |
26
+ | Natural-language engineering request front door | Implemented |
27
+ | Deterministic request/compiler/policy gates | Implemented |
28
+ | Multi-vendor robot profile registry | Implemented |
29
+ | UR5e / FANUC CRX / KUKA KR / ABB IRB profile abstraction | Implemented |
30
+ | Evidence-aware canonical TwinSpec | Implemented |
31
+ | Deterministic Twin validation and confidence levels | Implemented |
32
+ | Bounded candidate generation and Pareto optimization | Implemented |
33
+ | Replayable qualification/evidence primitives | Implemented |
34
+ | Canonical physical motion contract | Implemented |
35
+ | Measured joint-state trajectory runtime | Implemented |
36
+ | Canonical Twin -> Gazebo + MoveIt materialization | Implemented |
37
+ | Gazebo / TF / MoveIt backend read-back verification | Implemented |
38
+ | Sampled MoveIt pre-execution state-validity checks | Implemented, **discrete only** |
39
+ | Measured motion duration / joint travel | Implemented |
40
+ | MoveIt FK TCP path length / final TCP error | Implemented |
41
+ | UR5e canonical Gazebo/MoveIt adapter | **EXPERIMENTAL** |
42
+ | Continuous collision checking qualification | **Not qualified** |
43
+ | Minimum-clearance measurement | **Not qualified** |
44
+ | Sim-real correlation | **Not qualified** |
45
+ | Site qualification | **Not qualified** |
46
+ | Real robot execution | **Locked** |
47
+ | Functional-safety certification | Not claimed |
48
+
49
+ ## Trust chain
50
+
51
+ ```mermaid
52
+ flowchart TD
53
+ USER[Engineer / customer application] --> REQUEST[Natural-language engineering request]
54
+ REQUEST --> INTERPRETER[Requirement Interpreter]
55
+
56
+ INTERPRETER --> OAI[OpenAI]
57
+ INTERPRETER --> CLAUDE[Anthropic]
58
+ INTERPRETER --> GEMINI[Gemini]
59
+
60
+ OAI --> AGENTS[Planner / Critic / Recovery]
61
+ CLAUDE --> AGENTS
62
+ GEMINI --> AGENTS
63
+
64
+ AGENTS --> COMPILE[Deterministic compile + policy]
65
+ COMPILE --> VERIFY[Verified plan artifact]
66
+ VERIFY --> TWIN[Canonical TwinSpec + SHA256]
67
+ TWIN --> MATERIALIZE[Canonical materialization]
68
+
69
+ MATERIALIZE --> GZ[Gazebo world]
70
+ MATERIALIZE --> MOVEIT[MoveIt PlanningScene]
71
+ MATERIALIZE --> TF[TF / frame model]
72
+
73
+ GZ --> READBACK[Backend read-back verification]
74
+ MOVEIT --> READBACK
75
+ TF --> READBACK
76
+
77
+ READBACK --> PRECHECK[Pre-execution verification]
78
+ PRECHECK --> MOTION[Exact PhysicalMotionPlan]
79
+ MOTION --> SIM[Gazebo / ROS 2 execution]
80
+ SIM --> MEASURE[Measured joint states + MoveIt FK]
81
+ MEASURE --> EVIDENCE[Replayable evidence]
82
+ EVIDENCE --> PROMOTION[Evidence-driven promotion gate]
83
+
84
+ PROMOTION --> LOCKED[Real execution remains locked]
85
+ ```
86
+
87
+ The v0.10 architecture is specifically designed to prevent DevAgent from validating one Twin while MoveIt plans against a different scene and Gazebo executes a different world. One canonical Twin fingerprint is carried through materialization, backend read-back, pre-execution verification, motion execution, and evidence.
88
+
89
+ ## Safety and qualification boundary
90
+
91
+ A successful software test or simulation run does **not** automatically create a commissioning or real-hardware claim.
92
+
93
+ The v0.10 canonical qualification report deliberately keeps:
94
+
95
+ ```text
96
+ physical_qualification = false
97
+ commissioning_qualification = false
98
+ continuous_collision_check = false
99
+ minimum_clearance_measured = false
100
+ real_execution_allowed = false
101
+ site_qualification = false
102
+ ```
103
+
104
+ A reference campaign can produce promotion-candidate evidence for an experimental scope, but promotion remains evidence-driven and scope-specific.
105
+
106
+ ## Installation from source
107
+
108
+ Python 3.11+ is required.
109
+
110
+ ```bash
111
+ git clone https://github.com/tomha85/devagent-physical-engine.git
112
+ cd devagent-physical-engine
113
+ python -m venv .venv
114
+ source .venv/bin/activate
115
+ python -m pip install --upgrade pip
116
+ python -m pip install -e .
117
+ ```
118
+
119
+ Optional AI provider SDKs:
120
+
121
+ ```bash
122
+ python -m pip install -e ".[openai]"
123
+ python -m pip install -e ".[anthropic]"
124
+ python -m pip install -e ".[gemini]"
125
+ python -m pip install -e ".[ai]"
126
+ ```
127
+
128
+ `pip install` does not install ROS/Gazebo system packages or perform privileged OS changes.
129
+
130
+ ## AI providers
131
+
132
+ Credentials stay outside the world model:
133
+
134
+ ```bash
135
+ export OPENAI_API_KEY='...'
136
+ export ANTHROPIC_API_KEY='...'
137
+ export GEMINI_API_KEY='...'
138
+ ```
139
+
140
+ Check a provider without making a network qualification call:
141
+
142
+ ```bash
143
+ devagent-physical-ai doctor --provider openai
144
+ ```
145
+
146
+ Run live provider qualification:
147
+
148
+ ```bash
149
+ devagent-physical-ai qualify --provider openai --model <model-id>
150
+ ```
151
+
152
+ Interpret an engineering request:
153
+
154
+ ```bash
155
+ devagent-physical-ai request \
156
+ "Use a UR5e to move a part from conveyor_a to cnc_04" \
157
+ --provider openai \
158
+ --model <model-id>
159
+ ```
160
+
161
+ Run the natural-language engineering pipeline:
162
+
163
+ ```bash
164
+ devagent-physical-ai engineer \
165
+ "Use a UR5e to move a part from conveyor_a to cnc_04" \
166
+ --provider openai \
167
+ --model <model-id>
168
+ ```
169
+
170
+ Equivalent provider commands support Anthropic and Gemini. Live AI routing is simulation-only and does not unlock real execution.
171
+
172
+ See [`docs/AI_PROVIDERS.md`](docs/AI_PROVIDERS.md) and [`docs/NATURAL_LANGUAGE_ENGINEERING.md`](docs/NATURAL_LANGUAGE_ENGINEERING.md).
173
+
174
+ ## Deterministic verification
175
+
176
+ Core checks:
177
+
178
+ ```bash
179
+ python -m compileall -q src tests
180
+ python -m unittest discover -s tests -v
181
+ devagent-physical doctor
182
+ devagent-physical qualify
183
+ devagent-physical simulate --robot fanuc_crx --inject-collision
184
+ ```
185
+
186
+ The repository CI performs editable installation, `compileall`, and the full `unittest` regression matrix on Python 3.11 / 3.12 / 3.13.
187
+
188
+ ## UR5e ROS 2 / Gazebo target stack
189
+
190
+ Current reference target:
191
+
192
+ ```text
193
+ Ubuntu 24.04
194
+ ROS 2 Jazzy
195
+ Gazebo Harmonic
196
+ gz_ros2_control
197
+ Universal Robots ROS 2 driver
198
+ ur_simulation_gz
199
+ MoveIt 2
200
+ ```
201
+
202
+ Inspect workstation changes without modifying the system:
203
+
204
+ ```bash
205
+ devagent-physical setup --profile ur5e-sim --dry-run
206
+ ```
207
+
208
+ Explicitly install/verify the supported workstation profile:
209
+
210
+ ```bash
211
+ devagent-physical setup --profile ur5e-sim
212
+ ```
213
+
214
+ Then run:
215
+
216
+ ```bash
217
+ devagent-physical ros doctor
218
+ devagent-physical ros demo
219
+ ```
220
+
221
+ The visual demo launches the official UR5e Gazebo + MoveIt/RViz stack, waits for controller readiness and `/joint_states`, performs a motion smoke, verifies measured joint-state movement, and records evidence.
222
+
223
+ Trajectory-runtime-only qualification is also available:
224
+
225
+ ```bash
226
+ devagent-physical ros qualify-trajectory-runtime
227
+ ```
228
+
229
+ That command qualifies only its defined scope and does not promote commissioning or real-hardware execution.
230
+
231
+ ## v0.10 canonical Twin qualification
232
+
233
+ The executable reference campaign is intentionally separate from ordinary GitHub CI because it requires the ROS/Gazebo/MoveIt target stack:
234
+
235
+ ```bash
236
+ python -m devagent_physical_engine.ros2.qualification_v10 \
237
+ --log-dir ~/.devagent/v10-canonical-qualification
238
+ ```
239
+
240
+ The campaign requires canonical Gazebo/MoveIt materialization, TF alignment, backend scene read-back, sampled pre-execution validity, measured joint-state motion, and MoveIt FK evidence across the reference trajectories.
241
+
242
+ Even a green reference campaign remains an experimental-scope promotion candidate until the missing commissioning gates—such as continuous collision checking and qualified minimum-clearance measurement—are implemented and evidenced.
243
+
244
+ See [`docs/CANONICAL_TWIN_RUNTIME.md`](docs/CANONICAL_TWIN_RUNTIME.md) and [`docs/MEASURED_PHYSICAL_RUNTIME.md`](docs/MEASURED_PHYSICAL_RUNTIME.md).
245
+
246
+ ## Optimization semantics
247
+
248
+ DevAgent does **not** claim a mathematical global optimum. It selects the **best evaluated verified candidate** among the candidates and motion variants that were actually generated, verified, and measured under the configured objective profile.
249
+
250
+ A candidate is ineligible when deterministic verification/simulation fails, a hard violation is reported, required metrics are unknown, or configured quality gates fail. Weighted scoring cannot make an unsafe or unverified plan acceptable.
251
+
252
+ See [`docs/OPTIMIZATION.md`](docs/OPTIMIZATION.md).
253
+
254
+ ## Documentation
255
+
256
+ - [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) — trust boundaries and runtime architecture.
257
+ - [`docs/AGENT_CORE.md`](docs/AGENT_CORE.md) — Agent Core design.
258
+ - [`docs/AI_PROVIDERS.md`](docs/AI_PROVIDERS.md) — provider installation, credentials, and qualification.
259
+ - [`docs/NATURAL_LANGUAGE_ENGINEERING.md`](docs/NATURAL_LANGUAGE_ENGINEERING.md) — natural-language engineering request flow.
260
+ - [`docs/ROBOT_PLATFORM_AND_TWIN.md`](docs/ROBOT_PLATFORM_AND_TWIN.md) — multi-vendor robot platform and evidence-aware Twin.
261
+ - [`docs/MEASURED_PHYSICAL_RUNTIME.md`](docs/MEASURED_PHYSICAL_RUNTIME.md) — physical motion and measured qualification runtime.
262
+ - [`docs/CANONICAL_TWIN_RUNTIME.md`](docs/CANONICAL_TWIN_RUNTIME.md) — canonical Gazebo/MoveIt/TF materialization and verification.
263
+ - [`docs/QUALIFICATION.md`](docs/QUALIFICATION.md) — qualification and evidence model.
264
+ - [`docs/OPTIMIZATION.md`](docs/OPTIMIZATION.md) — search, metrics, Pareto ranking, and evidence.
265
+ - [`docs/SETUP.md`](docs/SETUP.md) — explicit workstation bootstrap.
266
+ - [`docs/LAPTOP_ACCEPTANCE.md`](docs/LAPTOP_ACCEPTANCE.md) — UR5e visual workstation acceptance.
267
+
268
+ ## Release policy
269
+
270
+ `v0.10.0` is the first tagged GitHub release of this repository. It is an **alpha engineering release**, not a declaration of functional-safety certification, site qualification, or authorization for autonomous real-robot execution.
271
+
272
+ Future capability promotion must remain evidence-driven and must not silently upgrade experimental simulator results into commissioning claims.
273
+
274
+ ## Ownership
275
+
276
+ DevAgent Smart Physical Engine
277
+ Copyright © 2026 Tom Ha
278
+ Original creator: Tom Ha
279
+ Original project: https://github.com/tomha85/devagent-physical-engine
280
+ All rights reserved.
@@ -0,0 +1,47 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "devagent-physical-engine"
7
+ version = "0.10.0"
8
+ description = "Verification-first agentic planning runtime for robotic and industrial automation."
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ dependencies = ["PyYAML>=6.0,<7"]
12
+ authors = [{ name = "Tom Ha" }]
13
+ license = { text = "All Rights Reserved" }
14
+ keywords = ["robotics", "industrial-automation", "agentic-ai", "ros2", "verification"]
15
+ classifiers = [
16
+ "Development Status :: 3 - Alpha",
17
+ "Intended Audience :: Developers",
18
+ "Operating System :: OS Independent",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3.11",
21
+ "Programming Language :: Python :: 3.12",
22
+ "Programming Language :: Python :: 3.13",
23
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
24
+ "Topic :: Software Development :: Libraries :: Python Modules",
25
+ ]
26
+
27
+ [project.optional-dependencies]
28
+ openai = ["openai>=3.0,<4"]
29
+ anthropic = ["anthropic>=1.0,<2"]
30
+ gemini = ["google-genai>=2.0,<3"]
31
+ ai = [
32
+ "openai>=3.0,<4",
33
+ "anthropic>=1.0,<2",
34
+ "google-genai>=2.0,<3",
35
+ ]
36
+
37
+ [project.urls]
38
+ Homepage = "https://github.com/tomha85/devagent-physical-engine"
39
+ Repository = "https://github.com/tomha85/devagent-physical-engine"
40
+ Issues = "https://github.com/tomha85/devagent-physical-engine/issues"
41
+
42
+ [project.scripts]
43
+ devagent-physical = "devagent_physical_engine.cli:main"
44
+ devagent-physical-ai = "devagent_physical_engine.ai_cli:main"
45
+
46
+ [tool.setuptools.packages.find]
47
+ where = ["src"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,44 @@
1
+ """DevAgent Smart Physical Engine public contracts."""
2
+
3
+ from .models import (
4
+ ActionContract,
5
+ Capability,
6
+ Goal,
7
+ Resource,
8
+ TaskGraph,
9
+ TaskNode,
10
+ WorldState,
11
+ )
12
+ from .physical_motion import JointTrajectoryPoint, MotionExecutionMetrics, PhysicalMotionPlan
13
+ from .robot_platform import (
14
+ BUILTIN_ROBOT_PROFILES,
15
+ QualificationState,
16
+ RobotProfile,
17
+ RobotProfileRegistry,
18
+ SimulationTier,
19
+ )
20
+ from .twin import TwinConfidenceLevel, TwinSpec, TwinValidationReport, TwinValidator
21
+
22
+ __all__ = [
23
+ "ActionContract",
24
+ "Capability",
25
+ "Goal",
26
+ "Resource",
27
+ "TaskGraph",
28
+ "TaskNode",
29
+ "WorldState",
30
+ "JointTrajectoryPoint",
31
+ "MotionExecutionMetrics",
32
+ "PhysicalMotionPlan",
33
+ "BUILTIN_ROBOT_PROFILES",
34
+ "QualificationState",
35
+ "RobotProfile",
36
+ "RobotProfileRegistry",
37
+ "SimulationTier",
38
+ "TwinConfidenceLevel",
39
+ "TwinSpec",
40
+ "TwinValidationReport",
41
+ "TwinValidator",
42
+ ]
43
+
44
+ __version__ = "0.10.0"