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.
Files changed (132) hide show
  1. devagent_ignition-0.1.0/.gitignore +33 -0
  2. devagent_ignition-0.1.0/PKG-INFO +204 -0
  3. devagent_ignition-0.1.0/README.md +187 -0
  4. devagent_ignition-0.1.0/RELEASE_MANIFEST.json +312 -0
  5. devagent_ignition-0.1.0/SHA256SUMS.txt +270 -0
  6. devagent_ignition-0.1.0/SOURCE_PROVENANCE.json +186 -0
  7. devagent_ignition-0.1.0/assets/agent.js +102 -0
  8. devagent_ignition-0.1.0/assets/creator.css +247 -0
  9. devagent_ignition-0.1.0/assets/creator_2d.mjs +16 -0
  10. devagent_ignition-0.1.0/assets/creator_original_r9.mjs +58 -0
  11. devagent_ignition-0.1.0/assets/creator_original_v8.mjs +120 -0
  12. devagent_ignition-0.1.0/assets/creator_r9_diagnostics.mjs +53 -0
  13. devagent_ignition-0.1.0/assets/creator_scene.mjs +128 -0
  14. devagent_ignition-0.1.0/assets/creator_ui.mjs +60 -0
  15. devagent_ignition-0.1.0/assets/customer_documents.js +110 -0
  16. devagent_ignition-0.1.0/assets/equipment_controls.mjs +27 -0
  17. devagent_ignition-0.1.0/assets/facility2d.css +24 -0
  18. devagent_ignition-0.1.0/assets/facility2d_app.mjs +45 -0
  19. devagent_ignition-0.1.0/assets/facility2d_core.mjs +114 -0
  20. devagent_ignition-0.1.0/assets/facility2d_simulation.mjs +167 -0
  21. devagent_ignition-0.1.0/assets/facility2d_viewer.html +7 -0
  22. devagent_ignition-0.1.0/assets/fallback_scene.js +17 -0
  23. devagent_ignition-0.1.0/assets/flow_geometry.mjs +218 -0
  24. devagent_ignition-0.1.0/assets/harness.js +78 -0
  25. devagent_ignition-0.1.0/assets/live_design_review.js +129 -0
  26. devagent_ignition-0.1.0/assets/operations_ui.js +305 -0
  27. devagent_ignition-0.1.0/assets/operator_viewer.html +64 -0
  28. devagent_ignition-0.1.0/assets/project_package.js +52 -0
  29. devagent_ignition-0.1.0/assets/r9_transport.mjs +70 -0
  30. devagent_ignition-0.1.0/assets/runtime_feed.js +30 -0
  31. devagent_ignition-0.1.0/assets/studio.html +139 -0
  32. devagent_ignition-0.1.0/assets/style.css +191 -0
  33. devagent_ignition-0.1.0/assets/test_workspace.html +195 -0
  34. devagent_ignition-0.1.0/assets/three_scene.js +442 -0
  35. devagent_ignition-0.1.0/assets/unified_engineer.js +101 -0
  36. devagent_ignition-0.1.0/assets/v076_fat_ui.js +40 -0
  37. devagent_ignition-0.1.0/assets/v078_command_ui.js +44 -0
  38. devagent_ignition-0.1.0/assets/viewer.html +45 -0
  39. devagent_ignition-0.1.0/assets/viewer.js +112 -0
  40. devagent_ignition-0.1.0/design-system.json +130 -0
  41. devagent_ignition-0.1.0/devagent_hmi.py +471 -0
  42. devagent_ignition-0.1.0/devagent_spatial/__init__.py +1 -0
  43. devagent_ignition-0.1.0/devagent_spatial/agent_harness.py +299 -0
  44. devagent_ignition-0.1.0/devagent_spatial/agent_runtime.py +314 -0
  45. devagent_ignition-0.1.0/devagent_spatial/contract_opc_fat.py +216 -0
  46. devagent_ignition-0.1.0/devagent_spatial/contract_opc_source.py +265 -0
  47. devagent_ignition-0.1.0/devagent_spatial/control_intents.py +38 -0
  48. devagent_ignition-0.1.0/devagent_spatial/customer_intake.py +235 -0
  49. devagent_ignition-0.1.0/devagent_spatial/engineering_expertise.py +114 -0
  50. devagent_ignition-0.1.0/devagent_spatial/generator.py +201 -0
  51. devagent_ignition-0.1.0/devagent_spatial/ignition_native.py +234 -0
  52. devagent_ignition-0.1.0/devagent_spatial/ignition_project.py +144 -0
  53. devagent_ignition-0.1.0/devagent_spatial/live_lab_binding.py +128 -0
  54. devagent_ignition-0.1.0/devagent_spatial/model.py +297 -0
  55. devagent_ignition-0.1.0/devagent_spatial/native_reference.py +69 -0
  56. devagent_ignition-0.1.0/devagent_spatial/opc_snapshot.py +87 -0
  57. devagent_ignition-0.1.0/devagent_spatial/operations.py +284 -0
  58. devagent_ignition-0.1.0/devagent_spatial/operations_capture.py +47 -0
  59. devagent_ignition-0.1.0/devagent_spatial/operations_lab.py +64 -0
  60. devagent_ignition-0.1.0/devagent_spatial/original_r9.py +169 -0
  61. devagent_ignition-0.1.0/devagent_spatial/original_v8.py +81 -0
  62. devagent_ignition-0.1.0/devagent_spatial/preflight.py +140 -0
  63. devagent_ignition-0.1.0/devagent_spatial/preview_simulation.py +189 -0
  64. devagent_ignition-0.1.0/devagent_spatial/project_package.py +101 -0
  65. devagent_ignition-0.1.0/devagent_spatial/qualification.py +152 -0
  66. devagent_ignition-0.1.0/devagent_spatial/strict_json.py +29 -0
  67. devagent_ignition-0.1.0/devagent_spatial/studio.py +894 -0
  68. devagent_ignition-0.1.0/devagent_spatial/studio_workflow.py +277 -0
  69. devagent_ignition-0.1.0/devagent_spatial/test_reporting.py +87 -0
  70. devagent_ignition-0.1.0/devagent_spatial/v076_opc_fat.py +180 -0
  71. devagent_ignition-0.1.0/devagent_spatial/v078_commands.py +277 -0
  72. devagent_ignition-0.1.0/devagent_spatial/v078_native_commands.py +161 -0
  73. devagent_ignition-0.1.0/devagent_spatial/v07_fat.py +110 -0
  74. devagent_ignition-0.1.0/devagent_spatial/v07_native.py +318 -0
  75. devagent_ignition-0.1.0/devagent_spatial/v083_native.py +349 -0
  76. devagent_ignition-0.1.0/examples/CV101-command-contract-PENDING.json +30 -0
  77. devagent_ignition-0.1.0/examples/cv101_guided.json +272 -0
  78. devagent_ignition-0.1.0/examples/make_examples.py +36 -0
  79. devagent_ignition-0.1.0/examples/single_floor.json +444 -0
  80. devagent_ignition-0.1.0/examples/v0771_training_wizard.json +11 -0
  81. devagent_ignition-0.1.0/examples/warehouse-3floor-standard-2d.json +708 -0
  82. devagent_ignition-0.1.0/examples/warehouse-operations-synthetic.json +1186 -0
  83. devagent_ignition-0.1.0/examples/warehouse-v07-lab-bindings-PENDING.json +372 -0
  84. devagent_ignition-0.1.0/examples/warehouse.json +708 -0
  85. devagent_ignition-0.1.0/examples/water.json +288 -0
  86. devagent_ignition-0.1.0/pyproject.toml +52 -0
  87. devagent_ignition-0.1.0/reference/r9-golden/REFERENCE_SHA256.json +13 -0
  88. devagent_ignition-0.1.0/reference/r9-golden/web/app.mjs +745 -0
  89. devagent_ignition-0.1.0/reference/r9-golden/web/index.html +213 -0
  90. devagent_ignition-0.1.0/reference/r9-golden/web/lab_panel.mjs +53 -0
  91. devagent_ignition-0.1.0/reference/r9-golden/web/model.mjs +367 -0
  92. devagent_ignition-0.1.0/reference/r9-golden/web/state_adapter.mjs +78 -0
  93. devagent_ignition-0.1.0/reference/r9-golden/web/styles.css +76 -0
  94. devagent_ignition-0.1.0/reference/r9-original/README_R9.md +27 -0
  95. devagent_ignition-0.1.0/reference/r9-original/SHA256SUMS.txt +63 -0
  96. devagent_ignition-0.1.0/reference/r9-original/SNAPSHOT_SHA256SUMS.txt +16 -0
  97. devagent_ignition-0.1.0/reference/r9-original/flow_routes.json +527 -0
  98. devagent_ignition-0.1.0/reference/r9-original/flow_sim.py +117 -0
  99. devagent_ignition-0.1.0/reference/r9-original/lab_control.py +73 -0
  100. devagent_ignition-0.1.0/reference/r9-original/web/app.mjs +745 -0
  101. devagent_ignition-0.1.0/reference/r9-original/web/index.html +213 -0
  102. devagent_ignition-0.1.0/reference/r9-original/web/lab_panel.mjs +53 -0
  103. devagent_ignition-0.1.0/reference/r9-original/web/model.mjs +367 -0
  104. devagent_ignition-0.1.0/reference/r9-original/web/state_adapter.mjs +78 -0
  105. devagent_ignition-0.1.0/reference/r9-original/web/styles.css +76 -0
  106. devagent_ignition-0.1.0/reference/r9-original/web/vendor/LICENSE-three.txt +21 -0
  107. devagent_ignition-0.1.0/reference/r9-original/web/vendor/SHA256SUMS.txt +4 -0
  108. devagent_ignition-0.1.0/reference/r9-original/web/vendor/addons/controls/OrbitControls.js +1860 -0
  109. devagent_ignition-0.1.0/reference/r9-original/web/vendor/three.core.js +58773 -0
  110. devagent_ignition-0.1.0/reference/r9-original/web/vendor/three.module.js +18251 -0
  111. devagent_ignition-0.1.0/reference/v8-original/README.md +36 -0
  112. devagent_ignition-0.1.0/reference/v8-original/SHA256SUMS.txt +12 -0
  113. devagent_ignition-0.1.0/reference/v8-original/model.py +124 -0
  114. devagent_ignition-0.1.0/reference/v8-original/run_demo.sh +4 -0
  115. devagent_ignition-0.1.0/reference/v8-original/server.py +100 -0
  116. devagent_ignition-0.1.0/reference/v8-original/tests/browser_smoke.py +50 -0
  117. devagent_ignition-0.1.0/reference/v8-original/tests/test_v8.py +144 -0
  118. devagent_ignition-0.1.0/reference/v8-original/topology.json +24 -0
  119. devagent_ignition-0.1.0/reference/v8-original/web/app.js +114 -0
  120. devagent_ignition-0.1.0/reference/v8-original/web/index.html +22 -0
  121. devagent_ignition-0.1.0/reference/v8-original/web/simulator.html +1 -0
  122. devagent_ignition-0.1.0/reference/v8-original/web/simulator.js +6 -0
  123. devagent_ignition-0.1.0/reference/v8-original/web/style.css +16 -0
  124. devagent_ignition-0.1.0/sample_customer_inputs/Plant_Equipment_Register.csv +4 -0
  125. devagent_ignition-0.1.0/sample_customer_inputs/Plant_Flow_Requirements.txt +5 -0
  126. devagent_ignition-0.1.0/sample_customer_inputs/Raw_PLC_Tag_Export.csv +4 -0
  127. devagent_ignition-0.1.0/templates/warehouse_connections.csv +12 -0
  128. devagent_ignition-0.1.0/templates/warehouse_equipment.csv +21 -0
  129. devagent_ignition-0.1.0/templates/warehouse_signals.csv +34 -0
  130. devagent_ignition-0.1.0/templates/water_connections.csv +7 -0
  131. devagent_ignition-0.1.0/templates/water_equipment.csv +10 -0
  132. 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.