devagent-ignition 0.1.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_ignition-0.1.0/.gitignore +33 -0
- devagent_ignition-0.1.0/PKG-INFO +204 -0
- devagent_ignition-0.1.0/README.md +187 -0
- devagent_ignition-0.1.0/RELEASE_MANIFEST.json +312 -0
- devagent_ignition-0.1.0/SHA256SUMS.txt +270 -0
- devagent_ignition-0.1.0/SOURCE_PROVENANCE.json +186 -0
- devagent_ignition-0.1.0/assets/agent.js +102 -0
- devagent_ignition-0.1.0/assets/creator.css +247 -0
- devagent_ignition-0.1.0/assets/creator_2d.mjs +16 -0
- devagent_ignition-0.1.0/assets/creator_original_r9.mjs +58 -0
- devagent_ignition-0.1.0/assets/creator_original_v8.mjs +120 -0
- devagent_ignition-0.1.0/assets/creator_r9_diagnostics.mjs +53 -0
- devagent_ignition-0.1.0/assets/creator_scene.mjs +128 -0
- devagent_ignition-0.1.0/assets/creator_ui.mjs +60 -0
- devagent_ignition-0.1.0/assets/customer_documents.js +110 -0
- devagent_ignition-0.1.0/assets/equipment_controls.mjs +27 -0
- devagent_ignition-0.1.0/assets/facility2d.css +24 -0
- devagent_ignition-0.1.0/assets/facility2d_app.mjs +45 -0
- devagent_ignition-0.1.0/assets/facility2d_core.mjs +114 -0
- devagent_ignition-0.1.0/assets/facility2d_simulation.mjs +167 -0
- devagent_ignition-0.1.0/assets/facility2d_viewer.html +7 -0
- devagent_ignition-0.1.0/assets/fallback_scene.js +17 -0
- devagent_ignition-0.1.0/assets/flow_geometry.mjs +218 -0
- devagent_ignition-0.1.0/assets/harness.js +78 -0
- devagent_ignition-0.1.0/assets/live_design_review.js +129 -0
- devagent_ignition-0.1.0/assets/operations_ui.js +305 -0
- devagent_ignition-0.1.0/assets/operator_viewer.html +64 -0
- devagent_ignition-0.1.0/assets/project_package.js +52 -0
- devagent_ignition-0.1.0/assets/r9_transport.mjs +70 -0
- devagent_ignition-0.1.0/assets/runtime_feed.js +30 -0
- devagent_ignition-0.1.0/assets/studio.html +139 -0
- devagent_ignition-0.1.0/assets/style.css +191 -0
- devagent_ignition-0.1.0/assets/test_workspace.html +195 -0
- devagent_ignition-0.1.0/assets/three_scene.js +442 -0
- devagent_ignition-0.1.0/assets/unified_engineer.js +101 -0
- devagent_ignition-0.1.0/assets/v076_fat_ui.js +40 -0
- devagent_ignition-0.1.0/assets/v078_command_ui.js +44 -0
- devagent_ignition-0.1.0/assets/viewer.html +45 -0
- devagent_ignition-0.1.0/assets/viewer.js +112 -0
- devagent_ignition-0.1.0/design-system.json +130 -0
- devagent_ignition-0.1.0/devagent_hmi.py +471 -0
- devagent_ignition-0.1.0/devagent_spatial/__init__.py +1 -0
- devagent_ignition-0.1.0/devagent_spatial/agent_harness.py +299 -0
- devagent_ignition-0.1.0/devagent_spatial/agent_runtime.py +314 -0
- devagent_ignition-0.1.0/devagent_spatial/contract_opc_fat.py +216 -0
- devagent_ignition-0.1.0/devagent_spatial/contract_opc_source.py +265 -0
- devagent_ignition-0.1.0/devagent_spatial/control_intents.py +38 -0
- devagent_ignition-0.1.0/devagent_spatial/customer_intake.py +235 -0
- devagent_ignition-0.1.0/devagent_spatial/engineering_expertise.py +114 -0
- devagent_ignition-0.1.0/devagent_spatial/generator.py +201 -0
- devagent_ignition-0.1.0/devagent_spatial/ignition_native.py +234 -0
- devagent_ignition-0.1.0/devagent_spatial/ignition_project.py +144 -0
- devagent_ignition-0.1.0/devagent_spatial/live_lab_binding.py +128 -0
- devagent_ignition-0.1.0/devagent_spatial/model.py +297 -0
- devagent_ignition-0.1.0/devagent_spatial/native_reference.py +69 -0
- devagent_ignition-0.1.0/devagent_spatial/opc_snapshot.py +87 -0
- devagent_ignition-0.1.0/devagent_spatial/operations.py +284 -0
- devagent_ignition-0.1.0/devagent_spatial/operations_capture.py +47 -0
- devagent_ignition-0.1.0/devagent_spatial/operations_lab.py +64 -0
- devagent_ignition-0.1.0/devagent_spatial/original_r9.py +169 -0
- devagent_ignition-0.1.0/devagent_spatial/original_v8.py +81 -0
- devagent_ignition-0.1.0/devagent_spatial/preflight.py +140 -0
- devagent_ignition-0.1.0/devagent_spatial/preview_simulation.py +189 -0
- devagent_ignition-0.1.0/devagent_spatial/project_package.py +101 -0
- devagent_ignition-0.1.0/devagent_spatial/qualification.py +152 -0
- devagent_ignition-0.1.0/devagent_spatial/strict_json.py +29 -0
- devagent_ignition-0.1.0/devagent_spatial/studio.py +894 -0
- devagent_ignition-0.1.0/devagent_spatial/studio_workflow.py +277 -0
- devagent_ignition-0.1.0/devagent_spatial/test_reporting.py +87 -0
- devagent_ignition-0.1.0/devagent_spatial/v076_opc_fat.py +180 -0
- devagent_ignition-0.1.0/devagent_spatial/v078_commands.py +277 -0
- devagent_ignition-0.1.0/devagent_spatial/v078_native_commands.py +161 -0
- devagent_ignition-0.1.0/devagent_spatial/v07_fat.py +110 -0
- devagent_ignition-0.1.0/devagent_spatial/v07_native.py +318 -0
- devagent_ignition-0.1.0/devagent_spatial/v083_native.py +349 -0
- devagent_ignition-0.1.0/examples/CV101-command-contract-PENDING.json +30 -0
- devagent_ignition-0.1.0/examples/cv101_guided.json +272 -0
- devagent_ignition-0.1.0/examples/make_examples.py +36 -0
- devagent_ignition-0.1.0/examples/single_floor.json +444 -0
- devagent_ignition-0.1.0/examples/v0771_training_wizard.json +11 -0
- devagent_ignition-0.1.0/examples/warehouse-3floor-standard-2d.json +708 -0
- devagent_ignition-0.1.0/examples/warehouse-operations-synthetic.json +1186 -0
- devagent_ignition-0.1.0/examples/warehouse-v07-lab-bindings-PENDING.json +372 -0
- devagent_ignition-0.1.0/examples/warehouse.json +708 -0
- devagent_ignition-0.1.0/examples/water.json +288 -0
- devagent_ignition-0.1.0/pyproject.toml +52 -0
- devagent_ignition-0.1.0/reference/r9-golden/REFERENCE_SHA256.json +13 -0
- devagent_ignition-0.1.0/reference/r9-golden/web/app.mjs +745 -0
- devagent_ignition-0.1.0/reference/r9-golden/web/index.html +213 -0
- devagent_ignition-0.1.0/reference/r9-golden/web/lab_panel.mjs +53 -0
- devagent_ignition-0.1.0/reference/r9-golden/web/model.mjs +367 -0
- devagent_ignition-0.1.0/reference/r9-golden/web/state_adapter.mjs +78 -0
- devagent_ignition-0.1.0/reference/r9-golden/web/styles.css +76 -0
- devagent_ignition-0.1.0/reference/r9-original/README_R9.md +27 -0
- devagent_ignition-0.1.0/reference/r9-original/SHA256SUMS.txt +63 -0
- devagent_ignition-0.1.0/reference/r9-original/SNAPSHOT_SHA256SUMS.txt +16 -0
- devagent_ignition-0.1.0/reference/r9-original/flow_routes.json +527 -0
- devagent_ignition-0.1.0/reference/r9-original/flow_sim.py +117 -0
- devagent_ignition-0.1.0/reference/r9-original/lab_control.py +73 -0
- devagent_ignition-0.1.0/reference/r9-original/web/app.mjs +745 -0
- devagent_ignition-0.1.0/reference/r9-original/web/index.html +213 -0
- devagent_ignition-0.1.0/reference/r9-original/web/lab_panel.mjs +53 -0
- devagent_ignition-0.1.0/reference/r9-original/web/model.mjs +367 -0
- devagent_ignition-0.1.0/reference/r9-original/web/state_adapter.mjs +78 -0
- devagent_ignition-0.1.0/reference/r9-original/web/styles.css +76 -0
- devagent_ignition-0.1.0/reference/r9-original/web/vendor/LICENSE-three.txt +21 -0
- devagent_ignition-0.1.0/reference/r9-original/web/vendor/SHA256SUMS.txt +4 -0
- devagent_ignition-0.1.0/reference/r9-original/web/vendor/addons/controls/OrbitControls.js +1860 -0
- devagent_ignition-0.1.0/reference/r9-original/web/vendor/three.core.js +58773 -0
- devagent_ignition-0.1.0/reference/r9-original/web/vendor/three.module.js +18251 -0
- devagent_ignition-0.1.0/reference/v8-original/README.md +36 -0
- devagent_ignition-0.1.0/reference/v8-original/SHA256SUMS.txt +12 -0
- devagent_ignition-0.1.0/reference/v8-original/model.py +124 -0
- devagent_ignition-0.1.0/reference/v8-original/run_demo.sh +4 -0
- devagent_ignition-0.1.0/reference/v8-original/server.py +100 -0
- devagent_ignition-0.1.0/reference/v8-original/tests/browser_smoke.py +50 -0
- devagent_ignition-0.1.0/reference/v8-original/tests/test_v8.py +144 -0
- devagent_ignition-0.1.0/reference/v8-original/topology.json +24 -0
- devagent_ignition-0.1.0/reference/v8-original/web/app.js +114 -0
- devagent_ignition-0.1.0/reference/v8-original/web/index.html +22 -0
- devagent_ignition-0.1.0/reference/v8-original/web/simulator.html +1 -0
- devagent_ignition-0.1.0/reference/v8-original/web/simulator.js +6 -0
- devagent_ignition-0.1.0/reference/v8-original/web/style.css +16 -0
- devagent_ignition-0.1.0/sample_customer_inputs/Plant_Equipment_Register.csv +4 -0
- devagent_ignition-0.1.0/sample_customer_inputs/Plant_Flow_Requirements.txt +5 -0
- devagent_ignition-0.1.0/sample_customer_inputs/Raw_PLC_Tag_Export.csv +4 -0
- devagent_ignition-0.1.0/templates/warehouse_connections.csv +12 -0
- devagent_ignition-0.1.0/templates/warehouse_equipment.csv +21 -0
- devagent_ignition-0.1.0/templates/warehouse_signals.csv +34 -0
- devagent_ignition-0.1.0/templates/water_connections.csv +7 -0
- devagent_ignition-0.1.0/templates/water_equipment.csv +10 -0
- devagent_ignition-0.1.0/templates/water_signals.csv +12 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Local configuration / secrets
|
|
2
|
+
.env
|
|
3
|
+
.env.*
|
|
4
|
+
!.env.example
|
|
5
|
+
*.pem
|
|
6
|
+
*.key
|
|
7
|
+
*secrets*.json
|
|
8
|
+
credentials.json
|
|
9
|
+
# Python and JS build artifacts
|
|
10
|
+
__pycache__/
|
|
11
|
+
*.py[cod]
|
|
12
|
+
.pytest_cache/
|
|
13
|
+
.coverage
|
|
14
|
+
.venv/
|
|
15
|
+
venv/
|
|
16
|
+
node_modules/
|
|
17
|
+
coverage/
|
|
18
|
+
dist/
|
|
19
|
+
build/
|
|
20
|
+
# Temporary simulation and customer project data
|
|
21
|
+
.devagent-acceptance/
|
|
22
|
+
.devagent-backups/
|
|
23
|
+
.local/
|
|
24
|
+
.cache/
|
|
25
|
+
generated/
|
|
26
|
+
projects/
|
|
27
|
+
reports/
|
|
28
|
+
*.gwbk
|
|
29
|
+
*.log
|
|
30
|
+
# OS and editors
|
|
31
|
+
.DS_Store
|
|
32
|
+
.idea/
|
|
33
|
+
.vscode/
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: devagent-ignition
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Offline industrial HMI engineering and Ignition Perspective candidate tools (production deployment not qualified)
|
|
5
|
+
Project-URL: Repository, https://github.com/tomha85/devagent-ignition
|
|
6
|
+
Project-URL: Documentation, https://github.com/tomha85/devagent-ignition#readme
|
|
7
|
+
Author: DevAgent contributors
|
|
8
|
+
Keywords: hmi,ignition,industrial-automation,perspective,scada
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Topic :: Scientific/Engineering
|
|
15
|
+
Requires-Python: <3.14,>=3.13
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# DevAgent
|
|
19
|
+
|
|
20
|
+
**AI-assisted industrial HMI engineering for Ignition Perspective**
|
|
21
|
+
|
|
22
|
+
DevAgent turns customer plant information into reviewable 2D/3D HMI concepts, validated industrial engineering models, and reproducible **native Ignition Perspective candidates**.
|
|
23
|
+
|
|
24
|
+
[Quick start](#quick-start) · [Architecture](#architecture) · [Creator workflow](#creator-workflow) · [Ignition handoff](#native-ignition-handoff) · [Verification](#verification)
|
|
25
|
+
|
|
26
|
+
> **Current scope:** engineering and isolated-lab candidates. Authenticated Gateway import, native Perspective runtime FAT, real OPC UA/PLC mapping validation, and production release have **not** been qualified. Production is **HOLD**.
|
|
27
|
+
|
|
28
|
+
## Capabilities
|
|
29
|
+
|
|
30
|
+
| Area | What it provides |
|
|
31
|
+
| --- | --- |
|
|
32
|
+
| **AI-first Creator** | Connect your own supported cloud or local model (BYOM); review proposals before applying them. |
|
|
33
|
+
| **Engineering validation** | Check equipment identities, signal roles, topology, provenance, and requirements using deterministic rules. |
|
|
34
|
+
| **2D + 3D design** | Explore Original V8 2D Flow and Original R9 Four Spirals demos, or generate a customer-specific preview. |
|
|
35
|
+
| **Equipment diagnostics** | Inspect declared motor, VFD, photoeye, fault, quality, and timestamp fields. Missing mappings remain explicit. |
|
|
36
|
+
| **Ignition handoff** | Generate a guarded, read-only native Perspective project candidate from a genuine authorized reference export. |
|
|
37
|
+
| **Simulation + FAT** | Run isolated synthetic OPC UA tests and generate traceable engineering evidence. |
|
|
38
|
+
|
|
39
|
+
## Architecture
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
CUSTOMER INPUTS
|
|
43
|
+
Requirements | Equipment | Connections | PLC / tag exports
|
|
44
|
+
|
|
|
45
|
+
v
|
|
46
|
+
BYOM AI AGENT
|
|
47
|
+
Proposal + review
|
|
48
|
+
|
|
|
49
|
+
v
|
|
50
|
+
ENGINEERING VALIDATION
|
|
51
|
+
Equipment | Signals | Topology | Safety
|
|
52
|
+
|
|
|
53
|
+
+--------------+---------------+
|
|
54
|
+
| | |
|
|
55
|
+
v v v
|
|
56
|
+
2D HMI 3D HMI Native Ignition
|
|
57
|
+
preview preview project candidate
|
|
58
|
+
| | |
|
|
59
|
+
+--------------+---------------+
|
|
60
|
+
|
|
|
61
|
+
v
|
|
62
|
+
ISOLATED LAB + OFFLINE FAT
|
|
63
|
+
|
|
|
64
|
+
Gateway import
|
|
65
|
+
and runtime tests
|
|
66
|
+
[NOT YET QUALIFIED]
|
|
67
|
+
|
|
|
68
|
+
v
|
|
69
|
+
Real OPC UA source validation
|
|
70
|
+
Independent FAT / site approval
|
|
71
|
+
|
|
|
72
|
+
v
|
|
73
|
+
APPROVED PRODUCTION RELEASE
|
|
74
|
+
[HOLD]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Engineering rule:** AI proposes; deterministic checks validate; simulation and a real test Gateway supply separate evidence; an authorized engineer approves. A synthetic PASS cannot establish physical PLC correctness.
|
|
78
|
+
|
|
79
|
+
## Quick start
|
|
80
|
+
|
|
81
|
+
**Requirements:** Linux/Ubuntu, Git, and Python 3.13 (used by the CI workflow). Optional browser and OPC UA tests have additional dependencies.
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
git clone https://github.com/tomha85/devagent-ignition.git
|
|
85
|
+
cd devagent-ignition
|
|
86
|
+
|
|
87
|
+
sha256sum -c SHA256SUMS.txt
|
|
88
|
+
python3 -m unittest discover -s tests -q
|
|
89
|
+
python3 devagent_hmi.py preflight
|
|
90
|
+
|
|
91
|
+
# Start the local HMI Creator on port 8895.
|
|
92
|
+
./start.sh
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Open **http://127.0.0.1:8895/** on the same computer.
|
|
96
|
+
|
|
97
|
+
Choose another local port if 8895 is occupied:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
DEVAGENT_SPATIAL_PORT=8962 ./start.sh
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The local Creator does not automatically connect to an Ignition Gateway or modify PLCs. Use `python3 devagent_hmi.py --help` to explore CLI commands.
|
|
104
|
+
|
|
105
|
+
## Creator workflow
|
|
106
|
+
|
|
107
|
+
1. **Connect AI (optional).** Choose your own supported provider/model and test the connection. Review all generated drafts; AI responses are not verified engineering facts.
|
|
108
|
+
2. **Describe the site.** Enter plant requirements and provide available equipment, tag, and connection files. See [sample customer inputs](sample_customer_inputs/).
|
|
109
|
+
3. **Choose a starting point.** Select **2D Flow**, **3D Flow**, or **New Project**. The Original V8/R9 options are source-backed demos, not a representation of your plant.
|
|
110
|
+
4. **Analyze and validate.** Resolve contract errors and review any inferred or missing equipment and signal relationships.
|
|
111
|
+
5. **Generate a preview.** Navigate floors, select equipment, and inspect only available diagnostics.
|
|
112
|
+
6. **Review evidence.** Keep synthetic testing separate from real PLC data and qualify the application in an isolated Gateway before production consideration.
|
|
113
|
+
|
|
114
|
+
Validate a model without launching the UI:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
python3 devagent_hmi.py validate --model examples/warehouse.json
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Other included samples: [single floor](examples/single_floor.json), [warehouse](examples/warehouse.json), and [water treatment](examples/water.json).
|
|
121
|
+
|
|
122
|
+
### BYOM and data handling
|
|
123
|
+
|
|
124
|
+
DevAgent supports multiple cloud and local provider adapters, including compatible Ollama/vLLM endpoints. A successful model connection test establishes connectivity, **not engineering correctness**. Follow your organization's rules before sending plant documents, tag exports, or operational data to an external provider.
|
|
125
|
+
|
|
126
|
+
See [AI provider setup](AGENT_V05.md) for connection details and security limitations.
|
|
127
|
+
|
|
128
|
+
## Native Ignition handoff
|
|
129
|
+
|
|
130
|
+
DevAgent includes a Native Ignition Perspective compiler for guarded, read-only offline project candidates. Automated authenticated Gateway deployment: Not implemented; real Gateway runtime FAT and production release remain HOLD.
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
DevAgent can compile an **offline, read-only Perspective candidate**. It does not yet provide a qualified one-click customer deployment or automatically create real OPC UA connections and Gateway tag providers.
|
|
134
|
+
|
|
135
|
+
The engineering handoff is:
|
|
136
|
+
|
|
137
|
+
1. Obtain an authorized, genuine Ignition Perspective project export for the template envelope.
|
|
138
|
+
2. Validate the customer model and prepare an engineer-reviewed, lab-scoped binding manifest.
|
|
139
|
+
3. Compile and verify the native candidate against the reference ZIP and source hashes.
|
|
140
|
+
4. Import only into an approved, backed-up **isolated test Gateway**.
|
|
141
|
+
5. Verify actual Perspective rendering, floor/equipment interactions, tag quality, and OPC-to-HMI FAT.
|
|
142
|
+
6. Validate real source identity and site behavior independently before requesting production approval.
|
|
143
|
+
|
|
144
|
+
Create a pending binding manifest (tag paths are intentionally empty):
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
python3 devagent_hmi.py v07-binding-skeleton \
|
|
148
|
+
--model examples/warehouse.json \
|
|
149
|
+
--out /tmp/devagent-pending-lab-bindings.json
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
The manifest is not preapproved. An engineer must review its model identity, decisions, and any lab paths before compilation. Discover the exact compiler flags with:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
python3 devagent_hmi.py v083-native-compile --help
|
|
156
|
+
python3 devagent_hmi.py v083-native-verify --help
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Never infer** OPC UA NodeIds, motor/VFD associations, PE IN/OUT semantics, speeds, fault states, or operating quality from a demo.
|
|
160
|
+
|
|
161
|
+
Read the [native operator/deployment notes](V083_NATIVE_RUNTIME_AND_DEPLOYMENT.md) and [native binding/FAT guide](V07_NATIVE_IGNITION_AND_FAT.md).
|
|
162
|
+
|
|
163
|
+
## Verification
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
sha256sum -c SHA256SUMS.txt
|
|
167
|
+
python3 -m compileall -q devagent_spatial devagent_hmi.py tests
|
|
168
|
+
python3 -m unittest discover -s tests -q
|
|
169
|
+
python3 devagent_hmi.py preflight
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
GitHub Actions: [.github/workflows/offline-ci.yml](.github/workflows/offline-ci.yml). Its CI jobs cover offline tests, static checks, a browser workflow, and isolated synthetic OPC UA tests. **CI PASS is not a live Gateway FAT or site-acceptance result.**
|
|
173
|
+
|
|
174
|
+
### Current qualification boundaries
|
|
175
|
+
|
|
176
|
+
| Gate | State |
|
|
177
|
+
| --- | --- |
|
|
178
|
+
| Creator 2D/3D reference previews | Implemented; local/browser validation |
|
|
179
|
+
| Native Perspective candidate and offline vendor parsing | Offline PASS |
|
|
180
|
+
| Isolated synthetic OPC UA protocol checks | Lab-only evidence |
|
|
181
|
+
| Authenticated Gateway project import and native rendering | **HOLD** |
|
|
182
|
+
| Gateway-connected OPC -> tag -> HMI FAT | **HOLD** |
|
|
183
|
+
| Real customer PLC mappings and SAT | **HOLD** |
|
|
184
|
+
| Production release | **HOLD** |
|
|
185
|
+
|
|
186
|
+
Unavailable values must show **NOT MAPPED**, **UNKNOWN**, or a clear BAD/STALE quality indication, not fabricated operating states. START/STOP/RESET actions remain disabled in the unqualified native operator candidate.
|
|
187
|
+
|
|
188
|
+
## Repository guide
|
|
189
|
+
|
|
190
|
+
| Path | Purpose |
|
|
191
|
+
| --- | --- |
|
|
192
|
+
| `devagent_hmi.py`, `start.sh` | CLI and local Creator entry points |
|
|
193
|
+
| `devagent_spatial/` | Models, validators, native compiler, simulator, FAT infrastructure |
|
|
194
|
+
| `assets/` | Creator UI and HMI visualization |
|
|
195
|
+
| `reference/` | Preserved Original V8 and R9 reference sources |
|
|
196
|
+
| `examples/`, `templates/`, `sample_customer_inputs/` | Starter plant inputs |
|
|
197
|
+
| `tests/`, `scripts/` | Regression and engineering verification |
|
|
198
|
+
| `.github/workflows/` | Offline CI automation |
|
|
199
|
+
|
|
200
|
+
For engineering detail, see the [qualification record](V083_QUALIFICATION.json), [native import milestone](V083_NATIVE_IMPORT_MILESTONE.md), and [production acceptance gates](PRODUCTION_ACCEPTANCE.md). Historical milestones remain in separate documentation; this README is the starting point.
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
**DevAgent's purpose:** faster, more repeatable industrial HMI engineering with explicit signal provenance, deterministic verification, and evidence-based commissioning.
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# DevAgent
|
|
2
|
+
|
|
3
|
+
**AI-assisted industrial HMI engineering for Ignition Perspective**
|
|
4
|
+
|
|
5
|
+
DevAgent turns customer plant information into reviewable 2D/3D HMI concepts, validated industrial engineering models, and reproducible **native Ignition Perspective candidates**.
|
|
6
|
+
|
|
7
|
+
[Quick start](#quick-start) · [Architecture](#architecture) · [Creator workflow](#creator-workflow) · [Ignition handoff](#native-ignition-handoff) · [Verification](#verification)
|
|
8
|
+
|
|
9
|
+
> **Current scope:** engineering and isolated-lab candidates. Authenticated Gateway import, native Perspective runtime FAT, real OPC UA/PLC mapping validation, and production release have **not** been qualified. Production is **HOLD**.
|
|
10
|
+
|
|
11
|
+
## Capabilities
|
|
12
|
+
|
|
13
|
+
| Area | What it provides |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| **AI-first Creator** | Connect your own supported cloud or local model (BYOM); review proposals before applying them. |
|
|
16
|
+
| **Engineering validation** | Check equipment identities, signal roles, topology, provenance, and requirements using deterministic rules. |
|
|
17
|
+
| **2D + 3D design** | Explore Original V8 2D Flow and Original R9 Four Spirals demos, or generate a customer-specific preview. |
|
|
18
|
+
| **Equipment diagnostics** | Inspect declared motor, VFD, photoeye, fault, quality, and timestamp fields. Missing mappings remain explicit. |
|
|
19
|
+
| **Ignition handoff** | Generate a guarded, read-only native Perspective project candidate from a genuine authorized reference export. |
|
|
20
|
+
| **Simulation + FAT** | Run isolated synthetic OPC UA tests and generate traceable engineering evidence. |
|
|
21
|
+
|
|
22
|
+
## Architecture
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
CUSTOMER INPUTS
|
|
26
|
+
Requirements | Equipment | Connections | PLC / tag exports
|
|
27
|
+
|
|
|
28
|
+
v
|
|
29
|
+
BYOM AI AGENT
|
|
30
|
+
Proposal + review
|
|
31
|
+
|
|
|
32
|
+
v
|
|
33
|
+
ENGINEERING VALIDATION
|
|
34
|
+
Equipment | Signals | Topology | Safety
|
|
35
|
+
|
|
|
36
|
+
+--------------+---------------+
|
|
37
|
+
| | |
|
|
38
|
+
v v v
|
|
39
|
+
2D HMI 3D HMI Native Ignition
|
|
40
|
+
preview preview project candidate
|
|
41
|
+
| | |
|
|
42
|
+
+--------------+---------------+
|
|
43
|
+
|
|
|
44
|
+
v
|
|
45
|
+
ISOLATED LAB + OFFLINE FAT
|
|
46
|
+
|
|
|
47
|
+
Gateway import
|
|
48
|
+
and runtime tests
|
|
49
|
+
[NOT YET QUALIFIED]
|
|
50
|
+
|
|
|
51
|
+
v
|
|
52
|
+
Real OPC UA source validation
|
|
53
|
+
Independent FAT / site approval
|
|
54
|
+
|
|
|
55
|
+
v
|
|
56
|
+
APPROVED PRODUCTION RELEASE
|
|
57
|
+
[HOLD]
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Engineering rule:** AI proposes; deterministic checks validate; simulation and a real test Gateway supply separate evidence; an authorized engineer approves. A synthetic PASS cannot establish physical PLC correctness.
|
|
61
|
+
|
|
62
|
+
## Quick start
|
|
63
|
+
|
|
64
|
+
**Requirements:** Linux/Ubuntu, Git, and Python 3.13 (used by the CI workflow). Optional browser and OPC UA tests have additional dependencies.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
git clone https://github.com/tomha85/devagent-ignition.git
|
|
68
|
+
cd devagent-ignition
|
|
69
|
+
|
|
70
|
+
sha256sum -c SHA256SUMS.txt
|
|
71
|
+
python3 -m unittest discover -s tests -q
|
|
72
|
+
python3 devagent_hmi.py preflight
|
|
73
|
+
|
|
74
|
+
# Start the local HMI Creator on port 8895.
|
|
75
|
+
./start.sh
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Open **http://127.0.0.1:8895/** on the same computer.
|
|
79
|
+
|
|
80
|
+
Choose another local port if 8895 is occupied:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
DEVAGENT_SPATIAL_PORT=8962 ./start.sh
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The local Creator does not automatically connect to an Ignition Gateway or modify PLCs. Use `python3 devagent_hmi.py --help` to explore CLI commands.
|
|
87
|
+
|
|
88
|
+
## Creator workflow
|
|
89
|
+
|
|
90
|
+
1. **Connect AI (optional).** Choose your own supported provider/model and test the connection. Review all generated drafts; AI responses are not verified engineering facts.
|
|
91
|
+
2. **Describe the site.** Enter plant requirements and provide available equipment, tag, and connection files. See [sample customer inputs](sample_customer_inputs/).
|
|
92
|
+
3. **Choose a starting point.** Select **2D Flow**, **3D Flow**, or **New Project**. The Original V8/R9 options are source-backed demos, not a representation of your plant.
|
|
93
|
+
4. **Analyze and validate.** Resolve contract errors and review any inferred or missing equipment and signal relationships.
|
|
94
|
+
5. **Generate a preview.** Navigate floors, select equipment, and inspect only available diagnostics.
|
|
95
|
+
6. **Review evidence.** Keep synthetic testing separate from real PLC data and qualify the application in an isolated Gateway before production consideration.
|
|
96
|
+
|
|
97
|
+
Validate a model without launching the UI:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
python3 devagent_hmi.py validate --model examples/warehouse.json
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Other included samples: [single floor](examples/single_floor.json), [warehouse](examples/warehouse.json), and [water treatment](examples/water.json).
|
|
104
|
+
|
|
105
|
+
### BYOM and data handling
|
|
106
|
+
|
|
107
|
+
DevAgent supports multiple cloud and local provider adapters, including compatible Ollama/vLLM endpoints. A successful model connection test establishes connectivity, **not engineering correctness**. Follow your organization's rules before sending plant documents, tag exports, or operational data to an external provider.
|
|
108
|
+
|
|
109
|
+
See [AI provider setup](AGENT_V05.md) for connection details and security limitations.
|
|
110
|
+
|
|
111
|
+
## Native Ignition handoff
|
|
112
|
+
|
|
113
|
+
DevAgent includes a Native Ignition Perspective compiler for guarded, read-only offline project candidates. Automated authenticated Gateway deployment: Not implemented; real Gateway runtime FAT and production release remain HOLD.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
DevAgent can compile an **offline, read-only Perspective candidate**. It does not yet provide a qualified one-click customer deployment or automatically create real OPC UA connections and Gateway tag providers.
|
|
117
|
+
|
|
118
|
+
The engineering handoff is:
|
|
119
|
+
|
|
120
|
+
1. Obtain an authorized, genuine Ignition Perspective project export for the template envelope.
|
|
121
|
+
2. Validate the customer model and prepare an engineer-reviewed, lab-scoped binding manifest.
|
|
122
|
+
3. Compile and verify the native candidate against the reference ZIP and source hashes.
|
|
123
|
+
4. Import only into an approved, backed-up **isolated test Gateway**.
|
|
124
|
+
5. Verify actual Perspective rendering, floor/equipment interactions, tag quality, and OPC-to-HMI FAT.
|
|
125
|
+
6. Validate real source identity and site behavior independently before requesting production approval.
|
|
126
|
+
|
|
127
|
+
Create a pending binding manifest (tag paths are intentionally empty):
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
python3 devagent_hmi.py v07-binding-skeleton \
|
|
131
|
+
--model examples/warehouse.json \
|
|
132
|
+
--out /tmp/devagent-pending-lab-bindings.json
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
The manifest is not preapproved. An engineer must review its model identity, decisions, and any lab paths before compilation. Discover the exact compiler flags with:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
python3 devagent_hmi.py v083-native-compile --help
|
|
139
|
+
python3 devagent_hmi.py v083-native-verify --help
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Never infer** OPC UA NodeIds, motor/VFD associations, PE IN/OUT semantics, speeds, fault states, or operating quality from a demo.
|
|
143
|
+
|
|
144
|
+
Read the [native operator/deployment notes](V083_NATIVE_RUNTIME_AND_DEPLOYMENT.md) and [native binding/FAT guide](V07_NATIVE_IGNITION_AND_FAT.md).
|
|
145
|
+
|
|
146
|
+
## Verification
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
sha256sum -c SHA256SUMS.txt
|
|
150
|
+
python3 -m compileall -q devagent_spatial devagent_hmi.py tests
|
|
151
|
+
python3 -m unittest discover -s tests -q
|
|
152
|
+
python3 devagent_hmi.py preflight
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
GitHub Actions: [.github/workflows/offline-ci.yml](.github/workflows/offline-ci.yml). Its CI jobs cover offline tests, static checks, a browser workflow, and isolated synthetic OPC UA tests. **CI PASS is not a live Gateway FAT or site-acceptance result.**
|
|
156
|
+
|
|
157
|
+
### Current qualification boundaries
|
|
158
|
+
|
|
159
|
+
| Gate | State |
|
|
160
|
+
| --- | --- |
|
|
161
|
+
| Creator 2D/3D reference previews | Implemented; local/browser validation |
|
|
162
|
+
| Native Perspective candidate and offline vendor parsing | Offline PASS |
|
|
163
|
+
| Isolated synthetic OPC UA protocol checks | Lab-only evidence |
|
|
164
|
+
| Authenticated Gateway project import and native rendering | **HOLD** |
|
|
165
|
+
| Gateway-connected OPC -> tag -> HMI FAT | **HOLD** |
|
|
166
|
+
| Real customer PLC mappings and SAT | **HOLD** |
|
|
167
|
+
| Production release | **HOLD** |
|
|
168
|
+
|
|
169
|
+
Unavailable values must show **NOT MAPPED**, **UNKNOWN**, or a clear BAD/STALE quality indication, not fabricated operating states. START/STOP/RESET actions remain disabled in the unqualified native operator candidate.
|
|
170
|
+
|
|
171
|
+
## Repository guide
|
|
172
|
+
|
|
173
|
+
| Path | Purpose |
|
|
174
|
+
| --- | --- |
|
|
175
|
+
| `devagent_hmi.py`, `start.sh` | CLI and local Creator entry points |
|
|
176
|
+
| `devagent_spatial/` | Models, validators, native compiler, simulator, FAT infrastructure |
|
|
177
|
+
| `assets/` | Creator UI and HMI visualization |
|
|
178
|
+
| `reference/` | Preserved Original V8 and R9 reference sources |
|
|
179
|
+
| `examples/`, `templates/`, `sample_customer_inputs/` | Starter plant inputs |
|
|
180
|
+
| `tests/`, `scripts/` | Regression and engineering verification |
|
|
181
|
+
| `.github/workflows/` | Offline CI automation |
|
|
182
|
+
|
|
183
|
+
For engineering detail, see the [qualification record](V083_QUALIFICATION.json), [native import milestone](V083_NATIVE_IMPORT_MILESTONE.md), and [production acceptance gates](PRODUCTION_ACCEPTANCE.md). Historical milestones remain in separate documentation; this README is the starting point.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
**DevAgent's purpose:** faster, more repeatable industrial HMI engineering with explicit signal provenance, deterministic verification, and evidence-based commissioning.
|