@aryacode/dsh-engineering 0.3.0 → 0.4.0

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.0] - 2026-10-25
4
+
5
+ ### Changed
6
+
7
+ - **One package, one client bundle.** The L5X ladder viewer and the FactoryTalk View ME display preview now ship inside `@aryacode/dsh-engineering` itself: `lib/client.js` registers once, under the bundle's own package name, and runs both faces inside that one factory. `@aryacode/dsh-engineering-l5x-viewer` and `@aryacode/dsh-engineering-ftview-viewer` are no longer dependencies, so the bundle declares no `@aryacode/*` dependency at all.
8
+ - The `l5x-viewer` and `ftview-viewer` rows collapse into one `viewers` row that mounts the bundle package itself. A client bundle is only discovered through a mounted row, and a package registers exactly one bundle, so both previews mount together; the tool rows stay independent of it.
9
+ - The bundle package gains a host half (`lib/index.js`): an entry that registers nothing of its own, present because the Shell scans the client face of packages that a row mounts.
10
+
11
+ ### Added
12
+
13
+ - `scripts/build-client.mjs` builds `lib/client.js` from the two committed face bundles. The face bodies are copied verbatim, each in its own closure, and the merged plugin exports the union of both faces' services. `pnpm build:client` regenerates the artifact; `pnpm pack` runs it first.
14
+ - `test/client-face.spec.mjs` holds the three properties that would otherwise fail silently in the app: the registration id equals the package name, the factory materializes with both faces and merges their services, and `apply` mounts both previews. It also fails when `lib/client.js` is stale against its faces.
15
+
3
16
  ## [0.3.0] - 2026-10-23
4
17
 
5
18
  ### Added
package/README.md CHANGED
@@ -5,7 +5,7 @@ MotionWorks IEC and FactoryTalk Optix sit behind a single install, one row per c
5
5
  switch per product — so the switch removes tool schemas from the request instead of leaving them
6
6
  visible after the guidance is off.
7
7
 
8
- `@aryacode/dsh-engineering` · 79 tools · 17 rows · 4 products · MIT
8
+ `@aryacode/dsh-engineering` · 79 tools · 16 rows · 4 products · MIT
9
9
 
10
10
  ---
11
11
 
@@ -24,8 +24,9 @@ the skill that governs it. Turning a product off removes **both** its guidance a
24
24
  | `rockwell-l5x` skill **off** | neither |
25
25
 
26
26
  The heavy surfaces are separate rows on purpose. A read-only profile pays for the read tools and
27
- nothing else, and the viewers are independent of the tools — switching L5X tools off does not remove
28
- the ladder viewer.
27
+ nothing else, and the previews are independent of the tools — switching L5X tools off does not remove
28
+ the ladder viewer. Both previews mount from **one** row (`viewers`), because a package registers
29
+ exactly one browser bundle.
29
30
 
30
31
  ## What it supports
31
32
 
@@ -100,14 +101,15 @@ Where each surface actually stands, based on what has been exercised.
100
101
 
101
102
  | Version | What landed |
102
103
  |---|---|
104
+ | **0.4.0** | Both previews fold into the bundle's own client face — one package, one browser bundle, 16 rows |
103
105
  | **0.3.0** | FactoryTalk Optix becomes a bundle component; 79 tools total |
104
106
  | **0.2.0** | MotionWorks IEC ports into the bundle — 24 tools over the COM bridge and saved-model engine, verified live; edit off by default |
105
107
  | **0.1.2** | Harness filesystem contract fixed across L5X and FactoryTalk View; every L5X tool linked to its capability by name; generated tool reference, examples and architecture docs |
106
108
 
107
109
  ## Install
108
110
 
109
- The bundle is a meta-package: it mounts its components by row id and carries the tool-exposure policy.
110
- Installing a component on its own gives you tools **without** the policy.
111
+ The bundle carries its components (`vendor/`), its own browser face (both previews) and the
112
+ tool-exposure policy. Installing a component on its own gives you tools **without** the policy.
111
113
 
112
114
  ```sh
113
115
  # in the AryaCode profile
@@ -139,8 +141,8 @@ flowchart TB
139
141
  Bundle -->|insert| L5XEdit["l5x-editing (off)"]
140
142
  Bundle -->|insert| L5XStudio["l5x-studio (off)"]
141
143
  Bundle -->|insert| L5XLive["l5x-live (off)"]
142
- Bundle -->|insert| L5XViewer["l5x-viewer (on)"]
143
- Bundle -->|insert| FTV["ftview-read / edit / studio / viewer (on)"]
144
+ Bundle -->|insert| Viewers["viewers (on) — ladder + ME display previews"]
145
+ Bundle -->|insert| FTV["ftview-read / edit / studio (on)"]
144
146
  Bundle -->|insert| MWI["mwi-session / read / verify (on), edit (off)"]
145
147
  Bundle -->|insert| Optix["optix (on)"]
146
148
  Policy -->|"rockwell-l5x governs 35 tools"| L5XRead
@@ -158,12 +160,11 @@ even when the implementation behind a row is replaced.
158
160
  | `l5x-editing` | `dsh-engineering-l5x/editing` | off |
159
161
  | `l5x-studio` | `dsh-engineering-l5x/studio` | off |
160
162
  | `l5x-live` | `dsh-engineering-l5x/live` | off |
161
- | `l5x-viewer` | `dsh-engineering-l5x-viewer` | on |
163
+ | `viewers` | `@aryacode/dsh-engineering` (its own client face: ladder + ME display previews) | on |
162
164
  | `ftview-read` | `dsh-engineering-ftview` | on |
163
165
  | `ftview-read-skill` | `dsh-engineering-ftview/skill` | on |
164
166
  | `ftview-edit` | `dsh-engineering-ftview/edit` | on |
165
167
  | `ftview-studio` | `dsh-engineering-ftview/studio` | on |
166
- | `ftview-viewer` | `dsh-engineering-ftview-viewer` | on |
167
168
  | `mwi-session` | `dsh-engineering-mwi` | on |
168
169
  | `mwi-read` | `dsh-engineering-mwi/read` | on |
169
170
  | `mwi-read-skill` | `dsh-engineering-mwi/skill` | on |
@@ -216,7 +217,8 @@ even when the implementation behind a row is replaced.
216
217
 
217
218
  ```sh
218
219
  pnpm install
219
- pnpm test # patch, docs, tool-reference and manifest checks
220
+ pnpm build:client # regenerate lib/client.js from the committed face bundles
221
+ pnpm test # patch, docs, tool-reference, manifest and client-face checks
220
222
  pnpm docs:tools # regenerate the tool reference from the registered definitions
221
223
  pnpm docs:check # fail if the committed reference has drifted
222
224
  ```
package/cordis.patch.yml CHANGED
@@ -90,9 +90,12 @@
90
90
  - id: l5x-live
91
91
  name: '@aryacode/dsh-engineering/l5x/live'
92
92
  disabled: true
93
- # The ladder viewer is the bundle's own client face, independent of the tools.
94
- - id: l5x-viewer
95
- name: '@aryacode/dsh-engineering/l5x-viewer'
93
+ # Both previews (the L5X ladder viewer and the FactoryTalk View ME display
94
+ # preview) are this bundle's own client face. A package registers exactly one
95
+ # browser bundle, so one row mounts both; switching the L5X or FTView *tools*
96
+ # off leaves this row alone, because a client face adds no model context.
97
+ - id: viewers
98
+ name: '@aryacode/dsh-engineering'
96
99
  # FactoryTalk View ME: read, edit and Studio entries plus the display
97
100
  # preview. The old plugin is retired, so these mount by default.
98
101
  - id: ftview-read
@@ -103,8 +106,6 @@
103
106
  name: '@aryacode/dsh-engineering/ftview/edit'
104
107
  - id: ftview-studio
105
108
  name: '@aryacode/dsh-engineering/ftview/studio'
106
- - id: ftview-viewer
107
- name: '@aryacode/dsh-engineering/ftview-viewer'
108
109
  # MotionWorks IEC: the redesigned rows. Editing is off by default, like L5X.
109
110
  - id: mwi-session
110
111
  name: '@aryacode/dsh-engineering/mwi'