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.
- devagent_physical_engine-0.10.0/NOTICE +2 -0
- devagent_physical_engine-0.10.0/PKG-INFO +315 -0
- devagent_physical_engine-0.10.0/README.md +280 -0
- devagent_physical_engine-0.10.0/pyproject.toml +47 -0
- devagent_physical_engine-0.10.0/setup.cfg +4 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/__init__.py +44 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/__init__.py +40 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/compiler.py +285 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/contracts.py +129 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/coordinator.py +108 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/critic.py +72 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/evidence.py +34 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/interpreter.py +179 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/planner.py +105 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/recovery.py +54 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/routing.py +76 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/runtime.py +270 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/semantic.py +304 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/agent/structured.py +423 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ai_cli.py +226 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/cli.py +392 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/doctor.py +20 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/engineering_agent.py +243 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/engineering_request.py +630 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/execution.py +90 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/models.py +143 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/operating_envelope.py +120 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/__init__.py +50 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/benchmark.py +122 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/candidates.py +198 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/contracts.py +235 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/evaluator.py +107 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/evidence.py +53 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/experience.py +105 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/measured.py +125 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/optimizer.py +215 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/optimization/orchestrator.py +155 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/physical_campaign.py +413 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/physical_evidence.py +214 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/physical_motion.py +196 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/planning.py +80 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/preexecution_contract.py +65 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/__init__.py +22 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/anthropic.py +112 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/common.py +187 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/factory.py +20 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/gemini.py +126 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_adapters/openai.py +95 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/provider_qualification.py +268 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/providers.py +94 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/qualification.py +44 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/qualification_cli.py +195 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/qualification_harness.py +917 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/robot_platform.py +411 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/robots.py +76 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/__init__.py +35 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/acceptance.py +324 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/commands.py +175 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/doctor.py +116 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/fk_probe.py +83 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/frame_alignment.py +61 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/gazebo_world.py +125 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/joint_state_recorder.py +64 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/measured_motion.py +233 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/moveit_scene.py +121 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/preexecution.py +113 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/qualification.py +81 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/qualification_v10.py +252 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/scene_probe.py +219 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/state_validity_probe.py +125 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/tf_probe.py +51 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/trajectory.py +188 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/ur5e.py +59 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/ur5e_adapter.py +349 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +292 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/setup_profile.py +356 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/simulation.py +32 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/simulation_platform.py +269 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/trajectory_qualification.py +201 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/twin.py +939 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/twin_builder.py +309 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/twin_materialization.py +404 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine/verification.py +46 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/PKG-INFO +315 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/SOURCES.txt +118 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/dependency_links.txt +1 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/entry_points.txt +3 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/requires.txt +15 -0
- devagent_physical_engine-0.10.0/src/devagent_physical_engine.egg-info/top_level.txt +1 -0
- devagent_physical_engine-0.10.0/tests/test_agent_core.py +599 -0
- devagent_physical_engine-0.10.0/tests/test_agent_semantic_hardening.py +199 -0
- devagent_physical_engine-0.10.0/tests/test_ai_cli.py +54 -0
- devagent_physical_engine-0.10.0/tests/test_ai_cli_v07.py +129 -0
- devagent_physical_engine-0.10.0/tests/test_core.py +94 -0
- devagent_physical_engine-0.10.0/tests/test_engineering_request_v07.py +194 -0
- devagent_physical_engine-0.10.0/tests/test_interpreter_profiles_v08.py +107 -0
- devagent_physical_engine-0.10.0/tests/test_live_provider_qualification.py +150 -0
- devagent_physical_engine-0.10.0/tests/test_measured_motion_v10.py +52 -0
- devagent_physical_engine-0.10.0/tests/test_natural_language_agent_v07.py +201 -0
- devagent_physical_engine-0.10.0/tests/test_optimization_v05.py +254 -0
- devagent_physical_engine-0.10.0/tests/test_physical_campaign_v09.py +341 -0
- devagent_physical_engine-0.10.0/tests/test_physical_evidence_v09.py +115 -0
- devagent_physical_engine-0.10.0/tests/test_physical_motion_v09.py +123 -0
- devagent_physical_engine-0.10.0/tests/test_preexecution_contract_v10.py +47 -0
- devagent_physical_engine-0.10.0/tests/test_provider_and_qualification.py +52 -0
- devagent_physical_engine-0.10.0/tests/test_qualification_cli_lifecycle_v06.py +91 -0
- devagent_physical_engine-0.10.0/tests/test_qualification_harness_v06.py +273 -0
- devagent_physical_engine-0.10.0/tests/test_real_provider_adapters.py +260 -0
- devagent_physical_engine-0.10.0/tests/test_robot_platform_v08.py +174 -0
- devagent_physical_engine-0.10.0/tests/test_ros2_simulation.py +358 -0
- devagent_physical_engine-0.10.0/tests/test_ros_trajectory_v09.py +59 -0
- devagent_physical_engine-0.10.0/tests/test_setup_profile.py +232 -0
- devagent_physical_engine-0.10.0/tests/test_simulation_platform_v08.py +186 -0
- devagent_physical_engine-0.10.0/tests/test_trajectory_qualification_v09.py +136 -0
- devagent_physical_engine-0.10.0/tests/test_twin_materialization_v10.py +132 -0
- devagent_physical_engine-0.10.0/tests/test_twin_v08.py +345 -0
- devagent_physical_engine-0.10.0/tests/test_ur5e_adapter_scopes_v09.py +33 -0
- devagent_physical_engine-0.10.0/tests/test_ur5e_v10_adapter_scopes.py +29 -0
- devagent_physical_engine-0.10.0/tests/test_v052_stabilization.py +145 -0
- devagent_physical_engine-0.10.0/tests/test_v08_catalog_mapping_regression.py +18 -0
|
@@ -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,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"
|