devagent-ignition 0.1.0__py3-none-any.whl

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 (133) hide show
  1. devagent_hmi.py +471 -0
  2. devagent_ignition-0.1.0.dist-info/METADATA +204 -0
  3. devagent_ignition-0.1.0.dist-info/RECORD +133 -0
  4. devagent_ignition-0.1.0.dist-info/WHEEL +4 -0
  5. devagent_ignition-0.1.0.dist-info/entry_points.txt +2 -0
  6. devagent_spatial/__init__.py +1 -0
  7. devagent_spatial/_resources/README.md +187 -0
  8. devagent_spatial/_resources/RELEASE_MANIFEST.json +312 -0
  9. devagent_spatial/_resources/SHA256SUMS.txt +270 -0
  10. devagent_spatial/_resources/SOURCE_PROVENANCE.json +186 -0
  11. devagent_spatial/_resources/assets/agent.js +102 -0
  12. devagent_spatial/_resources/assets/creator.css +247 -0
  13. devagent_spatial/_resources/assets/creator_2d.mjs +16 -0
  14. devagent_spatial/_resources/assets/creator_original_r9.mjs +58 -0
  15. devagent_spatial/_resources/assets/creator_original_v8.mjs +120 -0
  16. devagent_spatial/_resources/assets/creator_r9_diagnostics.mjs +53 -0
  17. devagent_spatial/_resources/assets/creator_scene.mjs +128 -0
  18. devagent_spatial/_resources/assets/creator_ui.mjs +60 -0
  19. devagent_spatial/_resources/assets/customer_documents.js +110 -0
  20. devagent_spatial/_resources/assets/equipment_controls.mjs +27 -0
  21. devagent_spatial/_resources/assets/facility2d.css +24 -0
  22. devagent_spatial/_resources/assets/facility2d_app.mjs +45 -0
  23. devagent_spatial/_resources/assets/facility2d_core.mjs +114 -0
  24. devagent_spatial/_resources/assets/facility2d_simulation.mjs +167 -0
  25. devagent_spatial/_resources/assets/facility2d_viewer.html +7 -0
  26. devagent_spatial/_resources/assets/fallback_scene.js +17 -0
  27. devagent_spatial/_resources/assets/flow_geometry.mjs +218 -0
  28. devagent_spatial/_resources/assets/harness.js +78 -0
  29. devagent_spatial/_resources/assets/live_design_review.js +129 -0
  30. devagent_spatial/_resources/assets/operations_ui.js +305 -0
  31. devagent_spatial/_resources/assets/operator_viewer.html +64 -0
  32. devagent_spatial/_resources/assets/project_package.js +52 -0
  33. devagent_spatial/_resources/assets/r9_transport.mjs +70 -0
  34. devagent_spatial/_resources/assets/runtime_feed.js +30 -0
  35. devagent_spatial/_resources/assets/studio.html +139 -0
  36. devagent_spatial/_resources/assets/style.css +191 -0
  37. devagent_spatial/_resources/assets/test_workspace.html +195 -0
  38. devagent_spatial/_resources/assets/three_scene.js +442 -0
  39. devagent_spatial/_resources/assets/unified_engineer.js +101 -0
  40. devagent_spatial/_resources/assets/v076_fat_ui.js +40 -0
  41. devagent_spatial/_resources/assets/v078_command_ui.js +44 -0
  42. devagent_spatial/_resources/assets/viewer.html +45 -0
  43. devagent_spatial/_resources/assets/viewer.js +112 -0
  44. devagent_spatial/_resources/design-system.json +130 -0
  45. devagent_spatial/_resources/examples/CV101-command-contract-PENDING.json +30 -0
  46. devagent_spatial/_resources/examples/cv101_guided.json +272 -0
  47. devagent_spatial/_resources/examples/make_examples.py +36 -0
  48. devagent_spatial/_resources/examples/single_floor.json +444 -0
  49. devagent_spatial/_resources/examples/v0771_training_wizard.json +11 -0
  50. devagent_spatial/_resources/examples/warehouse-3floor-standard-2d.json +708 -0
  51. devagent_spatial/_resources/examples/warehouse-operations-synthetic.json +1186 -0
  52. devagent_spatial/_resources/examples/warehouse-v07-lab-bindings-PENDING.json +372 -0
  53. devagent_spatial/_resources/examples/warehouse.json +708 -0
  54. devagent_spatial/_resources/examples/water.json +288 -0
  55. devagent_spatial/_resources/reference/r9-golden/REFERENCE_SHA256.json +13 -0
  56. devagent_spatial/_resources/reference/r9-golden/web/app.mjs +745 -0
  57. devagent_spatial/_resources/reference/r9-golden/web/index.html +213 -0
  58. devagent_spatial/_resources/reference/r9-golden/web/lab_panel.mjs +53 -0
  59. devagent_spatial/_resources/reference/r9-golden/web/model.mjs +367 -0
  60. devagent_spatial/_resources/reference/r9-golden/web/state_adapter.mjs +78 -0
  61. devagent_spatial/_resources/reference/r9-golden/web/styles.css +76 -0
  62. devagent_spatial/_resources/reference/r9-original/README_R9.md +27 -0
  63. devagent_spatial/_resources/reference/r9-original/SHA256SUMS.txt +63 -0
  64. devagent_spatial/_resources/reference/r9-original/SNAPSHOT_SHA256SUMS.txt +16 -0
  65. devagent_spatial/_resources/reference/r9-original/flow_routes.json +527 -0
  66. devagent_spatial/_resources/reference/r9-original/flow_sim.py +117 -0
  67. devagent_spatial/_resources/reference/r9-original/lab_control.py +73 -0
  68. devagent_spatial/_resources/reference/r9-original/web/app.mjs +745 -0
  69. devagent_spatial/_resources/reference/r9-original/web/index.html +213 -0
  70. devagent_spatial/_resources/reference/r9-original/web/lab_panel.mjs +53 -0
  71. devagent_spatial/_resources/reference/r9-original/web/model.mjs +367 -0
  72. devagent_spatial/_resources/reference/r9-original/web/state_adapter.mjs +78 -0
  73. devagent_spatial/_resources/reference/r9-original/web/styles.css +76 -0
  74. devagent_spatial/_resources/reference/r9-original/web/vendor/LICENSE-three.txt +21 -0
  75. devagent_spatial/_resources/reference/r9-original/web/vendor/SHA256SUMS.txt +4 -0
  76. devagent_spatial/_resources/reference/r9-original/web/vendor/addons/controls/OrbitControls.js +1860 -0
  77. devagent_spatial/_resources/reference/r9-original/web/vendor/three.core.js +58773 -0
  78. devagent_spatial/_resources/reference/r9-original/web/vendor/three.module.js +18251 -0
  79. devagent_spatial/_resources/reference/v8-original/README.md +36 -0
  80. devagent_spatial/_resources/reference/v8-original/SHA256SUMS.txt +12 -0
  81. devagent_spatial/_resources/reference/v8-original/model.py +124 -0
  82. devagent_spatial/_resources/reference/v8-original/run_demo.sh +4 -0
  83. devagent_spatial/_resources/reference/v8-original/server.py +100 -0
  84. devagent_spatial/_resources/reference/v8-original/tests/browser_smoke.py +50 -0
  85. devagent_spatial/_resources/reference/v8-original/tests/test_v8.py +144 -0
  86. devagent_spatial/_resources/reference/v8-original/topology.json +24 -0
  87. devagent_spatial/_resources/reference/v8-original/web/app.js +114 -0
  88. devagent_spatial/_resources/reference/v8-original/web/index.html +22 -0
  89. devagent_spatial/_resources/reference/v8-original/web/simulator.html +1 -0
  90. devagent_spatial/_resources/reference/v8-original/web/simulator.js +6 -0
  91. devagent_spatial/_resources/reference/v8-original/web/style.css +16 -0
  92. devagent_spatial/_resources/sample_customer_inputs/Plant_Equipment_Register.csv +4 -0
  93. devagent_spatial/_resources/sample_customer_inputs/Plant_Flow_Requirements.txt +5 -0
  94. devagent_spatial/_resources/sample_customer_inputs/Raw_PLC_Tag_Export.csv +4 -0
  95. devagent_spatial/_resources/templates/warehouse_connections.csv +12 -0
  96. devagent_spatial/_resources/templates/warehouse_equipment.csv +21 -0
  97. devagent_spatial/_resources/templates/warehouse_signals.csv +34 -0
  98. devagent_spatial/_resources/templates/water_connections.csv +7 -0
  99. devagent_spatial/_resources/templates/water_equipment.csv +10 -0
  100. devagent_spatial/_resources/templates/water_signals.csv +12 -0
  101. devagent_spatial/agent_harness.py +299 -0
  102. devagent_spatial/agent_runtime.py +314 -0
  103. devagent_spatial/contract_opc_fat.py +216 -0
  104. devagent_spatial/contract_opc_source.py +265 -0
  105. devagent_spatial/control_intents.py +38 -0
  106. devagent_spatial/customer_intake.py +235 -0
  107. devagent_spatial/engineering_expertise.py +114 -0
  108. devagent_spatial/generator.py +201 -0
  109. devagent_spatial/ignition_native.py +234 -0
  110. devagent_spatial/ignition_project.py +144 -0
  111. devagent_spatial/live_lab_binding.py +128 -0
  112. devagent_spatial/model.py +297 -0
  113. devagent_spatial/native_reference.py +69 -0
  114. devagent_spatial/opc_snapshot.py +87 -0
  115. devagent_spatial/operations.py +284 -0
  116. devagent_spatial/operations_capture.py +47 -0
  117. devagent_spatial/operations_lab.py +64 -0
  118. devagent_spatial/original_r9.py +169 -0
  119. devagent_spatial/original_v8.py +81 -0
  120. devagent_spatial/preflight.py +140 -0
  121. devagent_spatial/preview_simulation.py +189 -0
  122. devagent_spatial/project_package.py +101 -0
  123. devagent_spatial/qualification.py +152 -0
  124. devagent_spatial/strict_json.py +29 -0
  125. devagent_spatial/studio.py +894 -0
  126. devagent_spatial/studio_workflow.py +277 -0
  127. devagent_spatial/test_reporting.py +87 -0
  128. devagent_spatial/v076_opc_fat.py +180 -0
  129. devagent_spatial/v078_commands.py +277 -0
  130. devagent_spatial/v078_native_commands.py +161 -0
  131. devagent_spatial/v07_fat.py +110 -0
  132. devagent_spatial/v07_native.py +318 -0
  133. devagent_spatial/v083_native.py +349 -0
@@ -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,133 @@
1
+ devagent_hmi.py,sha256=ufpKCVZl-4iTM1OoOYmg7c77QWBRkhUN7zVwcKtWtms,29945
2
+ devagent_spatial/__init__.py,sha256=IMjkMO3twhQzluVTo8Z6rE7Eg-9U79_LGKMcsWLKBkY,22
3
+ devagent_spatial/agent_harness.py,sha256=prGiqX4uwx4t5_TFdrlIL2bTqn-zVrBvBHW80iHdgRY,15379
4
+ devagent_spatial/agent_runtime.py,sha256=pUwiu2Tl_2uNcgvESnPYUTiPP1Wty6D18XCYNJiV8qQ,18945
5
+ devagent_spatial/contract_opc_fat.py,sha256=9X5Y9ZarU5W1qWkhWMykOGbeMuyfjQe97DY6NmEOPSs,10663
6
+ devagent_spatial/contract_opc_source.py,sha256=7U7Kw_ZvESW2r1hxSreG4w4UnWEQ68JcxG_CQelN45s,12878
7
+ devagent_spatial/control_intents.py,sha256=WidHq5Qq0KsLd9q-9pf8EMkRf4DW87oTTuKosX94_tk,1587
8
+ devagent_spatial/customer_intake.py,sha256=l2LtiZWmhNoWd0r3uIQOL2NZrpEo1ucxba6JkHv25h8,13180
9
+ devagent_spatial/engineering_expertise.py,sha256=kilx4k0HK_0hg25G5LQh3VfDoT4cTYwEbsd07GxmWII,5491
10
+ devagent_spatial/generator.py,sha256=aSkEC3ALKSsfDstjQPni3UN4w_m__QLjS9krBqdBV1Q,12523
11
+ devagent_spatial/ignition_native.py,sha256=qvn2cczJUMX9ygyZOAp6YZGw-bMbMcekizvGgmhHgIw,13307
12
+ devagent_spatial/ignition_project.py,sha256=nUC_73AoruK-rgJCDTauKIs4OAyvDXYbmQxn0eTDdoM,7654
13
+ devagent_spatial/live_lab_binding.py,sha256=rZTy03Q3_8lCO3j6qZ1Bi8JpaigENRrchI4OrKo_wcM,6806
14
+ devagent_spatial/model.py,sha256=ew7hkP7kGEYSNAC1iMqYhqnirCpidgtmnDNFTLEflFY,17289
15
+ devagent_spatial/native_reference.py,sha256=CPJaY2rCblEBrBpvvVLY1KwgvjnU7HV1iyT-OgcLxR8,3250
16
+ devagent_spatial/opc_snapshot.py,sha256=jqcpHKhkLT5TP1S1P8lak2JcaaqEc8VKm9AECxvVATI,4237
17
+ devagent_spatial/operations.py,sha256=69gwR5B1pB3Jqtm2k3sSiutX7sma5fg6UyP8kQ2s9IU,15342
18
+ devagent_spatial/operations_capture.py,sha256=yucsozZEx3Ffr0naAhsiH_CpxJSAO6KJPMD7ZqbBlGI,2774
19
+ devagent_spatial/operations_lab.py,sha256=UYdkpEC9xVL3CeyPQ4jpfn2g-ujbwxFdyj7NhDwsvYM,3884
20
+ devagent_spatial/original_r9.py,sha256=B5RXFQxFpqaHHp4PBzrHcs3UjrRmnKNjUgK9yUWDgM4,7402
21
+ devagent_spatial/original_v8.py,sha256=u08uDJoFm5uhdu659bMPoRzMojI5owZAtwwSW-101OI,3041
22
+ devagent_spatial/preflight.py,sha256=P4VgRVwRwxlsMGwmrR1cwfB1Tr_JGCrSVsv__tMXhzE,8058
23
+ devagent_spatial/preview_simulation.py,sha256=kkK5KMVKHe8ETIU3vMfCIBiSo4G1D2GsPrKl0CIr4w4,11018
24
+ devagent_spatial/project_package.py,sha256=tjwjKpIYpsfcNQ-FEK8My5169htv-8RIkYrgpL6u8H0,6049
25
+ devagent_spatial/qualification.py,sha256=dMv7F5wzMEhR2t5DaH1v9wddcjBeaW2rfV3hJrDsJT4,9945
26
+ devagent_spatial/strict_json.py,sha256=Bbk-DxPy5ZJRvtBml1lEo6IfCEpkR-pWB8hiDA5Imu8,906
27
+ devagent_spatial/studio.py,sha256=zPSQ0oOsE7jwOs1Q_Ozv6JFDAeZPTM0k1dt3LBSkb2w,60344
28
+ devagent_spatial/studio_workflow.py,sha256=f1hBDLoP0g--ub51sK_a0rtEPrNh61EKn9eNJQFF4h4,14977
29
+ devagent_spatial/test_reporting.py,sha256=6AWK8dvgnYd3ABRLQUUUQMD-5GAv_89li0l7NO_psws,5430
30
+ devagent_spatial/v076_opc_fat.py,sha256=i_DW1rohPgYjwRFeX6Kaan6uDlEKSSGmNyf0R7ld-vY,9597
31
+ devagent_spatial/v078_commands.py,sha256=rkju68wOHfKpO8pB1jRMF8ZrGe-LSS9q9B183VVLhj8,15866
32
+ devagent_spatial/v078_native_commands.py,sha256=uisRR9GHEmbGFQ4imjX8QTKrSShg0vrkDMyKMfFCTbY,9112
33
+ devagent_spatial/v07_fat.py,sha256=QmnotB8GmCuZrG8NbXoqAn47skRW9XUsH2-4-Hn3KuI,6474
34
+ devagent_spatial/v07_native.py,sha256=5Kwdi-A7SfdqufL6HSYWlgSba_kZ4czaVp7-gLhsgec,18369
35
+ devagent_spatial/v083_native.py,sha256=yd5EyeCbi-USHB1Pz1xZK1du6PX8FXLX9lmZrZqarlQ,19947
36
+ devagent_spatial/_resources/README.md,sha256=bMNeqVWfAUcImAS9t3nImjxMgqPsZnIcvjAptWYNy7s,9374
37
+ devagent_spatial/_resources/RELEASE_MANIFEST.json,sha256=rEgb-z-UJ2JtwkI3AxnU6I54ceXsIlGNPDvZkzPChvI,19880
38
+ devagent_spatial/_resources/SHA256SUMS.txt,sha256=Eko3tQ2zURLZS5a2C1KBHQ1CRQIOC7s--NhpYGStldw,26712
39
+ devagent_spatial/_resources/SOURCE_PROVENANCE.json,sha256=TJ5Uph5h8-s-BxY-Vd7VOcVO34ZHHyqFO3zTxsi3yYw,9989
40
+ devagent_spatial/_resources/assets/agent.js,sha256=J0RC48LhRDjRcZ72NjqyL8TIpQ0X9KF7WcGgp8MQpKU,7236
41
+ devagent_spatial/_resources/assets/creator.css,sha256=bXtaj-jEdQ105NwaHgwlkwOTaOjFMxPkkJxGlQ-DIpw,46148
42
+ devagent_spatial/_resources/assets/creator_2d.mjs,sha256=6eCbUo6kr7CpDxf-Q-qdZV0TN3gMqOKlWDvjSSIbb5M,1529
43
+ devagent_spatial/_resources/assets/creator_original_r9.mjs,sha256=MWjAB69iuLJMWTyGyI7kEG87vlIP30NXrueETt_tMEc,3456
44
+ devagent_spatial/_resources/assets/creator_original_v8.mjs,sha256=M6yMW68dr2zJ2kQKeb8dj9XCNo7iyKMVh7tPx1ncFtE,7744
45
+ devagent_spatial/_resources/assets/creator_r9_diagnostics.mjs,sha256=4yUWNJSAfam-Bo7ED_21LbmezfLCwntni4DfRGK92qY,2408
46
+ devagent_spatial/_resources/assets/creator_scene.mjs,sha256=5cPlWyGXE88VkHfGQnsozUXbAB6onEmOxFkenx4BYKY,14056
47
+ devagent_spatial/_resources/assets/creator_ui.mjs,sha256=le8gWK9e3sFN5o2YxILwF44TsbV1_hsFVVdkE99FPvk,4854
48
+ devagent_spatial/_resources/assets/customer_documents.js,sha256=D414_Q02wOLJaaD-qFZ5AiRks-7JPLRMOOdVcRDt2mI,7439
49
+ devagent_spatial/_resources/assets/equipment_controls.mjs,sha256=jjAARnKZg596dT-fClmgjJqJ67aLu8AWYYAglzpvexI,1743
50
+ devagent_spatial/_resources/assets/facility2d.css,sha256=_j09yuMVF0FPaEhN-_x6_RCK4mZCrBb1OLHSL53H13s,7001
51
+ devagent_spatial/_resources/assets/facility2d_app.mjs,sha256=q0DL7AcfIYLp4cx_vVRrlDYV1QiuIp3h3JkW3WOdFm4,5923
52
+ devagent_spatial/_resources/assets/facility2d_core.mjs,sha256=YXjR_Uq3KSnI4h48Fijr0n10M1FtsV1G6JoIQsy8oao,8735
53
+ devagent_spatial/_resources/assets/facility2d_simulation.mjs,sha256=UqRJ8pcZWpmx51DTD7jOVZTIWrazcn8uGtU1a6aq5Ro,8596
54
+ devagent_spatial/_resources/assets/facility2d_viewer.html,sha256=JLeH0IQGTEqgiu7jH2lKm3Gj1taNph570KIRaoKoSko,5621
55
+ devagent_spatial/_resources/assets/fallback_scene.js,sha256=6hHZ_ox3Aqc6vyKm1oHbML2i24DUgXMt-grIJOh6HOM,4018
56
+ devagent_spatial/_resources/assets/flow_geometry.mjs,sha256=olCjJ3rsU0fq-7SYIiA45wY_jVb-Cw55dCZ3f5p32S0,11549
57
+ devagent_spatial/_resources/assets/harness.js,sha256=Kb1rTodGDxNJHwwYMLZW2JQTZBHpAY4RG4xiMLlTAmQ,5536
58
+ devagent_spatial/_resources/assets/live_design_review.js,sha256=nFyy9wGG5bRQy4wGNdQOgszdQ3MnmxkVaxbkX4KABRs,10097
59
+ devagent_spatial/_resources/assets/operations_ui.js,sha256=cUv5vyJnlqmhVMD9im6uojqECw9jYSS0ugDi4zql4cE,20838
60
+ devagent_spatial/_resources/assets/operator_viewer.html,sha256=zTaaLShLUBd-6UetrFSkewNeKIvL2lxHSG4s9nIOQsU,7958
61
+ devagent_spatial/_resources/assets/project_package.js,sha256=ZRq6ZclViDWBJo56qeB7Jf46d6KlFAM4piSqMv6roh0,3408
62
+ devagent_spatial/_resources/assets/r9_transport.mjs,sha256=jl2FBaw8hN-CL_kMnQQIPObezk5RRIqE5y363dpHusA,3783
63
+ devagent_spatial/_resources/assets/runtime_feed.js,sha256=xrR5QaL_5y0pfTKYmbJS-JiQSg83wVkmie64HggVFHw,1754
64
+ devagent_spatial/_resources/assets/studio.html,sha256=bw3MnyGEVbcIVS2qBTayr7LWi0CVoaaVbyFHwymm_y8,37810
65
+ devagent_spatial/_resources/assets/style.css,sha256=yfh2JDhrvoSrfXH5NwjwD5Gmng2Wk3OM_uUZE-WDH98,23053
66
+ devagent_spatial/_resources/assets/test_workspace.html,sha256=_Q0H3eyHLeJcTkhVc9WqWwx6LDE3qT5lxkBrY3-tetc,27608
67
+ devagent_spatial/_resources/assets/three_scene.js,sha256=17hvfPbSLgjy_gDFk9udIN355GvblFeB2K_qevP_Jog,31125
68
+ devagent_spatial/_resources/assets/unified_engineer.js,sha256=ryP4bvUeGN_JQ1Xnf-n7UlcNsURm0F1tre3t8XRY_iU,9273
69
+ devagent_spatial/_resources/assets/v076_fat_ui.js,sha256=T9_-bp-yr3V0W46EE7fq9BbmGVLIyCvv3otYT7Z5n5A,2327
70
+ devagent_spatial/_resources/assets/v078_command_ui.js,sha256=0An3mnntEniRHIGBi5en285yRktZm7APYRa4Hhsfm1w,2819
71
+ devagent_spatial/_resources/assets/viewer.html,sha256=nZWUF1W3P8Fqqg74rwVQ7mTxXWDW83kusA2ChEpIp1s,9730
72
+ devagent_spatial/_resources/assets/viewer.js,sha256=YA0jZJZZ_ZtDXmuCilsZG5XK5yF4Sy7tTXWUt4O1ZoE,8932
73
+ devagent_spatial/_resources/design-system.json,sha256=VO53yjVYmwa9CTIEyeWyjqu2moshWO8b5YlzhtNnbD8,3735
74
+ devagent_spatial/_resources/examples/CV101-command-contract-PENDING.json,sha256=Fs8za7dIf6a9yf9N6UOiETsyf6qZE7NlW_0AptPX_5M,1190
75
+ devagent_spatial/_resources/examples/cv101_guided.json,sha256=sCK2t0jnH9rM4jxkPFNMfitKkXTXO5l25NLKMFp2d4g,6679
76
+ devagent_spatial/_resources/examples/make_examples.py,sha256=CxLXsZW9DlvminCDxUbi1IqgB9AE2TyJ5ybALJWwOEY,5129
77
+ devagent_spatial/_resources/examples/single_floor.json,sha256=3Og0IV9B_ZLi8hzurY-5Gi5NBgIdxL9ow4NMhss8BaM,10453
78
+ devagent_spatial/_resources/examples/v0771_training_wizard.json,sha256=htr2YT9kaf7nOpebbMXG_R7_4UKxNRAdObGzdyC8bwY,8394
79
+ devagent_spatial/_resources/examples/warehouse-3floor-standard-2d.json,sha256=wgHAQBizphPv118tDn43SDonFy3HTFjL1pWFbouq52M,16128
80
+ devagent_spatial/_resources/examples/warehouse-operations-synthetic.json,sha256=RQX11EsFtEwliPJYo8TYm86QdYqZqc8jRxAR01ihH-w,34052
81
+ devagent_spatial/_resources/examples/warehouse-v07-lab-bindings-PENDING.json,sha256=SNT5kFDtOpCYTV_SKlKXQJeN2PTJrVPltE-ilaUYpbk,10653
82
+ devagent_spatial/_resources/examples/warehouse.json,sha256=4PKUleQu0-XTueKBnPxG8qlicF0eUulsbJ94Cdv_O1I,16115
83
+ devagent_spatial/_resources/examples/water.json,sha256=0v8aaZN-h7-nefVduzw2IDrXiO7LgcJG-lqingfAZsE,6436
84
+ devagent_spatial/_resources/reference/r9-golden/REFERENCE_SHA256.json,sha256=Np8KOngL4FtraNYTiYfwW3HB4_AnE-cjOje4goydibU,777
85
+ devagent_spatial/_resources/reference/r9-golden/web/app.mjs,sha256=N0IJFGmNSmoia7libD8QJviglEtaiKpUou1SL-FDK7k,53852
86
+ devagent_spatial/_resources/reference/r9-golden/web/index.html,sha256=ISzemao0hFGT5tOb6dPv2ahycLSl7mkSK_6xpOB4JYU,17727
87
+ devagent_spatial/_resources/reference/r9-golden/web/lab_panel.mjs,sha256=qX1aw7jFC5HQXWlzOdWXXM064ww6uiKXECpbXpnPjW8,3701
88
+ devagent_spatial/_resources/reference/r9-golden/web/model.mjs,sha256=Ke6QrgvqI3j4XQnN081HOSGjw0BnQxlGdO9XpAgQrnk,20936
89
+ devagent_spatial/_resources/reference/r9-golden/web/state_adapter.mjs,sha256=RLsKuAer5g4KwgyhZpIQAWk3BJRB9815plMK_KtUx2w,4511
90
+ devagent_spatial/_resources/reference/r9-golden/web/styles.css,sha256=DwEyJBzLYdYpCFNVv424fE5X_CO3S9xF_A8esQ7oYog,18156
91
+ devagent_spatial/_resources/reference/r9-original/README_R9.md,sha256=mH_xQoYtqUB-2ALcgY2TJkHY1Rg3J_8Qob2b9zmRYXs,2276
92
+ devagent_spatial/_resources/reference/r9-original/SHA256SUMS.txt,sha256=Ef4yoFVgYbQTZazNVS95yaPa0ZVVAwj49A1V5bdBWsA,5882
93
+ devagent_spatial/_resources/reference/r9-original/SNAPSHOT_SHA256SUMS.txt,sha256=wXEnEqteNfkTsn-QbiPeyiy6upuHN9cFl1pkiktJWSw,1375
94
+ devagent_spatial/_resources/reference/r9-original/flow_routes.json,sha256=lS_OY7EyMWzrd2XoxvMSlHRjHxb0m7FZ_8xoP9HXZy0,9730
95
+ devagent_spatial/_resources/reference/r9-original/flow_sim.py,sha256=8SDkCIbr1Gv8VwfxWto7lEl6jxVzEr2Tou_-2SsZUNg,7281
96
+ devagent_spatial/_resources/reference/r9-original/lab_control.py,sha256=GP4TQavGF_lNSjSbgUcdZhKs_dojLq-g_E1E_Q3X00s,3622
97
+ devagent_spatial/_resources/reference/r9-original/web/app.mjs,sha256=N0IJFGmNSmoia7libD8QJviglEtaiKpUou1SL-FDK7k,53852
98
+ devagent_spatial/_resources/reference/r9-original/web/index.html,sha256=ISzemao0hFGT5tOb6dPv2ahycLSl7mkSK_6xpOB4JYU,17727
99
+ devagent_spatial/_resources/reference/r9-original/web/lab_panel.mjs,sha256=qX1aw7jFC5HQXWlzOdWXXM064ww6uiKXECpbXpnPjW8,3701
100
+ devagent_spatial/_resources/reference/r9-original/web/model.mjs,sha256=Ke6QrgvqI3j4XQnN081HOSGjw0BnQxlGdO9XpAgQrnk,20936
101
+ devagent_spatial/_resources/reference/r9-original/web/state_adapter.mjs,sha256=RLsKuAer5g4KwgyhZpIQAWk3BJRB9815plMK_KtUx2w,4511
102
+ devagent_spatial/_resources/reference/r9-original/web/styles.css,sha256=DwEyJBzLYdYpCFNVv424fE5X_CO3S9xF_A8esQ7oYog,18156
103
+ devagent_spatial/_resources/reference/r9-original/web/vendor/LICENSE-three.txt,sha256=v-EZ6k_UE_X3yj_NY62wxKBz7Tnaov59Pmt2niEnJgE,1081
104
+ devagent_spatial/_resources/reference/r9-original/web/vendor/SHA256SUMS.txt,sha256=4KqZPHr7SpEERhWAEvfk6gd3Y0iZhtbEeCSAK8JCaHE,345
105
+ devagent_spatial/_resources/reference/r9-original/web/vendor/three.core.js,sha256=6wd9JBf2HT5tkmTDF8q8TqNXae1rCrUzBnKSpVB4TCA,1403455
106
+ devagent_spatial/_resources/reference/r9-original/web/vendor/three.module.js,sha256=yCEcaTRdLplJ3HqKyWk4BJeqBgClqKxqRZyM0C3Zy4o,603113
107
+ devagent_spatial/_resources/reference/r9-original/web/vendor/addons/controls/OrbitControls.js,sha256=uXh5x0gXC6res_uEzqH_30Z04oPcBgQvNOKsuVp2BCw,38703
108
+ devagent_spatial/_resources/reference/v8-original/README.md,sha256=3UAyNg4QwVl9g5puhPPFKM1LZOErZ_JxdEzVMsuMo3M,3454
109
+ devagent_spatial/_resources/reference/v8-original/SHA256SUMS.txt,sha256=4zwJjVlMqtELjwMA-VXr09OVi9xDD5k0-sbtF4-lYlg,963
110
+ devagent_spatial/_resources/reference/v8-original/model.py,sha256=fOU9vqF24_m581ZpX_6oVenW4z-7ffv3tlndSEsFpR0,7657
111
+ devagent_spatial/_resources/reference/v8-original/run_demo.sh,sha256=Nzo08ek2IdbacdSqV9CSOkzMUnTbn1C_0LsDFw6-3Jo,105
112
+ devagent_spatial/_resources/reference/v8-original/server.py,sha256=QTkqi5Zl6TuqZn6U5_3F2Cx8SF2GVREum3NpX0fQRoU,4052
113
+ devagent_spatial/_resources/reference/v8-original/topology.json,sha256=ETfM5rg8WU_xvj6q7dwhCni29bf-Lb6vcVHyKJZO278,2968
114
+ devagent_spatial/_resources/reference/v8-original/tests/browser_smoke.py,sha256=4cg0LXFCQzqVOw4U7g6bJId8trFvJt0lG0ABsiPpzJQ,2940
115
+ devagent_spatial/_resources/reference/v8-original/tests/test_v8.py,sha256=dfE2efrLk5V39OIrzfKr-D90F39wOuwFalFgd47YqXY,9408
116
+ devagent_spatial/_resources/reference/v8-original/web/app.js,sha256=uC_gCVnEPzn8ZYroyJ-wP8K2FknUq8MEcdN-vLsaFRw,16535
117
+ devagent_spatial/_resources/reference/v8-original/web/index.html,sha256=hw8tPPWRPTXvb0bH6FPDpyg-ZYiHeNQOZM9q5koJn5I,7245
118
+ devagent_spatial/_resources/reference/v8-original/web/simulator.html,sha256=qy2Yo6aUSRPh1c41q58W3BLWAH-aDKRyiz9j_MKtCWY,2283
119
+ devagent_spatial/_resources/reference/v8-original/web/simulator.js,sha256=J1h1LXRrdors07ihwqmeyJhQc3lRNoPxiEfw2CUiKZ4,1391
120
+ devagent_spatial/_resources/reference/v8-original/web/style.css,sha256=4UtzdjgQK9lUksuUhRvEDqZQL1dPw_LAyL5tulCG-qM,18427
121
+ devagent_spatial/_resources/sample_customer_inputs/Plant_Equipment_Register.csv,sha256=ikv4xW4bOhVz03I5WTuKa2Aw--3DgaoSvCRs1TIQptQ,184
122
+ devagent_spatial/_resources/sample_customer_inputs/Plant_Flow_Requirements.txt,sha256=1pyr1t52mSym4KuqLBbK_nC3XHGiWZg1vlnXVIMEq98,258
123
+ devagent_spatial/_resources/sample_customer_inputs/Raw_PLC_Tag_Export.csv,sha256=8s8g72IYpnU9FUX-g4p6SIZbeQflL0TmBJu0JUhPTxw,159
124
+ devagent_spatial/_resources/templates/warehouse_connections.csv,sha256=J8rzayQF6dxvdUC7N19M--CC3RjqGEFr-wmb2GCRDfk,173
125
+ devagent_spatial/_resources/templates/warehouse_equipment.csv,sha256=BqZtUlnQZCTRbLr5rnhOHgp37GcZS2aqS7bQ34B3U8k,1056
126
+ devagent_spatial/_resources/templates/warehouse_signals.csv,sha256=vJRV1Ttmo5BYj6oamXmTQydkNbvVlPlYHe5Ymvzxbfs,3915
127
+ devagent_spatial/_resources/templates/water_connections.csv,sha256=iIfhjIabKr9j-W-9ZFSW5_8jpGIhfYQ7vZBNwO9EG8g,106
128
+ devagent_spatial/_resources/templates/water_equipment.csv,sha256=16LyfrVDeEDGUNiZs9kf4_uu5_xiWAWYxWYxXVzRwwg,540
129
+ devagent_spatial/_resources/templates/water_signals.csv,sha256=HYYqfWkUHQAwsKlmDytsB47gFaMvu1xwY0a0NkZ5YIY,1391
130
+ devagent_ignition-0.1.0.dist-info/METADATA,sha256=S0Gv361ul4LmalorF2E2XpESdHcIhW98_aVUCUKAxGE,10141
131
+ devagent_ignition-0.1.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
132
+ devagent_ignition-0.1.0.dist-info/entry_points.txt,sha256=37tZx1Q0GOPhnYPOFow9609d3tMqrNMZqqXKtPPszdU,47
133
+ devagent_ignition-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.4
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ devagent = devagent_hmi:main
@@ -0,0 +1 @@
1
+ __version__ = '0.1.0'
@@ -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.