@aryacode/dsh-engineering 0.4.2 → 0.4.4
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 +36 -1
- package/README.md +37 -48
- package/cordis.patch.yml +27 -52
- package/entries/ftview.js +37 -0
- package/entries/l5x.js +44 -0
- package/entries/mwi.js +36 -0
- package/package.json +13 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.4.4] - 2026-10-25
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- **One row per product instead of one per surface.** The Plugins page now lists five rows — `l5x`,
|
|
8
|
+
`ftview`, `mwi`, `viewers`, `optix` — instead of sixteen. Each product row mounts its whole surface,
|
|
9
|
+
so one switch turns a product off instead of four.
|
|
10
|
+
- **The optional surfaces are the row's config.** `entries/l5x.js` mounts read + guidance and takes
|
|
11
|
+
`editing`, `studio` and `live` (all off by default); `entries/ftview.js` takes `edit` and `studio`
|
|
12
|
+
(both on); `entries/mwi.js` takes `edit` (off). The defaults are unchanged — a read-only profile
|
|
13
|
+
still pays only for the read surfaces — but the toggle now lives with the product it belongs to.
|
|
14
|
+
- Row ids change from `l5x-read` / `ftview-edit` / `mwi-verify` to `l5x` / `ftview` / `mwi`, so a
|
|
15
|
+
profile's per-row enable state resets once on upgrade. The product-level defaults are identical.
|
|
16
|
+
- Legacy subpath exports are kept (`./l5x/read`, `./ftview/edit`, `./mwi/verify`, …) so a profile
|
|
17
|
+
patch that still names one of them keeps working.
|
|
18
|
+
|
|
19
|
+
### Note
|
|
20
|
+
|
|
21
|
+
The grouping is plugin-side by choice: `cordis:group` exists in the patch format, but the Plugins
|
|
22
|
+
page skips group rows (`plugin-manager/src/index.ts`: "Group rows are containers … their children
|
|
23
|
+
carry the switches"), so a group switch is a shell feature rather than a bundle one. Collapsing the
|
|
24
|
+
row list is what a bundle can do on its own, without a harness change to maintain across DSH
|
|
25
|
+
upgrades.
|
|
26
|
+
|
|
27
|
+
## [0.4.3] - 2026-10-25
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- **The vendored rows could not import their own libraries.** The trees under `vendor/` are the
|
|
32
|
+
components' own code, and that code imports `fast-xml-parser`, `fast-xml-validator` and
|
|
33
|
+
`st-ethernet-ip` — but vendoring drops the component manifests, and the bundle declared none of them.
|
|
34
|
+
At mount the loader reported `ERR_MODULE_NOT_FOUND` and every L5X and FactoryTalk View row failed to
|
|
35
|
+
import, taking its tools with them. The bundle now declares all three at the versions the components
|
|
36
|
+
pin, and `test/docs.spec.mjs` fails when a component dependency is not declared here.
|
|
37
|
+
|
|
3
38
|
## [0.4.2] - 2026-10-25
|
|
4
39
|
|
|
5
40
|
### Fixed
|
|
@@ -19,7 +54,7 @@
|
|
|
19
54
|
disabling `l5x-editing`, `l5x-studio`, `l5x-live` or `mwi-edit` unmounts that plugin and removes its
|
|
20
55
|
tool schemas from the request, which is the same context saving by a mechanism this harness has.
|
|
21
56
|
- The patch is now **inserts only**, and `test/patch.spec.mjs` fails if any entry targets a row another
|
|
22
|
-
bundle owns.
|
|
57
|
+
bundle owns.
|
|
23
58
|
|
|
24
59
|
## [0.4.1] - 2026-10-25
|
|
25
60
|
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
MotionWorks IEC and FactoryTalk Optix sit behind a single install, one row per surface. A row is the
|
|
5
5
|
switch: disable it and that plugin unloads, so its tool schemas leave the request.
|
|
6
6
|
|
|
7
|
-
`@aryacode/dsh-engineering` · 79 tools ·
|
|
7
|
+
`@aryacode/dsh-engineering` · 79 tools · 5 rows · 4 products · MIT
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -14,17 +14,18 @@ A general assistant pays for every tool schema on every request. An automation e
|
|
|
14
14
|
surfaces — reading a 3 MB L5X, comparing two projects, staging ladder edits, talking to a controller —
|
|
15
15
|
but only one or two of them at a time.
|
|
16
16
|
|
|
17
|
-
This bundle splits those surfaces into
|
|
18
|
-
default, so a read-only profile pays for the read tools and nothing else:
|
|
17
|
+
This bundle splits those surfaces into one row per product. The expensive surfaces are a switch inside
|
|
18
|
+
the row, off by default, so a read-only profile pays for the read tools and nothing else:
|
|
19
19
|
|
|
20
|
-
|
|
|
21
|
-
|
|
22
|
-
| `l5x
|
|
23
|
-
| `l5x
|
|
24
|
-
| `l5x
|
|
25
|
-
| `
|
|
20
|
+
| Product row | Config option | Default | What turning it on adds |
|
|
21
|
+
|---|---|---|---|
|
|
22
|
+
| `l5x` | `editing` | off | the nine `draft_*` schemas |
|
|
23
|
+
| `l5x` | `studio` | off | the Logix Designer SDK and supervised controller schemas |
|
|
24
|
+
| `l5x` | `live` | off | the EtherNet/IP polling and trend schemas |
|
|
25
|
+
| `ftview` | `edit`, `studio` | on | staged ME edits and the Studio handoff |
|
|
26
|
+
| `mwi` | `edit` | off | the seven MotionWorks edit schemas |
|
|
26
27
|
|
|
27
|
-
The previews are independent of the tools — switching
|
|
28
|
+
The previews are independent of the tools — switching a product off does not remove the ladder viewer.
|
|
28
29
|
Both previews mount from **one** row (`viewers`), because a package registers exactly one browser
|
|
29
30
|
bundle.
|
|
30
31
|
|
|
@@ -47,21 +48,23 @@ Tool groups, by product:
|
|
|
47
48
|
|
|
48
49
|
## Switches
|
|
49
50
|
|
|
50
|
-
A row is a plugin. Disabling it in the profile (or on the Plugins page) unmounts that
|
|
51
|
-
tool schemas stop being sent
|
|
52
|
-
|
|
51
|
+
A row is a plugin. Disabling it in the profile (or on the Plugins page) unmounts that product and its
|
|
52
|
+
tool schemas stop being sent. Each product's optional surfaces are config on the same row, so the
|
|
53
|
+
cheap decision — is this product on at all — takes one switch, and the fine decision lives one level
|
|
54
|
+
down:
|
|
53
55
|
|
|
54
|
-
| Row |
|
|
55
|
-
|
|
56
|
-
| `l5x
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `
|
|
60
|
-
| `
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
56
|
+
| Row | Mounts | Config options (default) |
|
|
57
|
+
|---|---|---|
|
|
58
|
+
| `l5x` | offline reads, checks, comparison and the `rockwell-l5x` guidance; optionally drafts, SDK, live | `editing` (off), `studio` (off), `live` (off) |
|
|
59
|
+
| `ftview` | FactoryTalk View ME read, guidance and edits; optionally the Studio handoff | `edit` (on), `studio` (on) |
|
|
60
|
+
| `mwi` | MotionWorks IEC session, reads, verify and guidance; optionally the edits | `edit` (off) |
|
|
61
|
+
| `viewers` | ladder + ME display previews | — |
|
|
62
|
+
| `optix` | FactoryTalk Optix Studio authoring | — |
|
|
63
|
+
|
|
64
|
+
**Why the row list collapsed.** The Plugins page lists a bundle's rows flat and skips `cordis:group`
|
|
65
|
+
containers (`plugin-manager/src/index.ts`: *"Group rows are containers … their children carry the
|
|
66
|
+
switches"*), so a group switch is a shell feature, not a bundle one. Five product rows with config is
|
|
67
|
+
what a bundle can do on its own — no harness change to carry across DSH upgrades.
|
|
65
68
|
|
|
66
69
|
**No capability policy.** Earlier releases also carried a per-skill tool filter (`policyOnly` /
|
|
67
70
|
`toolPolicy`) that gated tools by skill state. That filter is an AryaAI harness feature and is **not
|
|
@@ -108,6 +111,7 @@ Where each surface actually stands, based on what has been exercised.
|
|
|
108
111
|
|
|
109
112
|
| Version | What landed |
|
|
110
113
|
|---|---|
|
|
114
|
+
| **0.4.4** | One row per product: five rows, optional surfaces moved into each row's config |
|
|
111
115
|
| **0.4.0** | Both previews fold into the bundle's own client face — one package, one browser bundle, 16 rows |
|
|
112
116
|
| **0.3.0** | FactoryTalk Optix becomes a bundle component; 79 tools total |
|
|
113
117
|
| **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 |
|
|
@@ -142,38 +146,23 @@ another bundle owns.
|
|
|
142
146
|
```mermaid
|
|
143
147
|
flowchart TB
|
|
144
148
|
Profile["Profile bundle list"] --> Bundle["@aryacode/dsh-engineering"]
|
|
145
|
-
Bundle -->|insert|
|
|
146
|
-
|
|
147
|
-
Bundle -->|insert|
|
|
148
|
-
Bundle -->|insert| L5XStudio["l5x-studio (off)"]
|
|
149
|
-
Bundle -->|insert| L5XLive["l5x-live (off)"]
|
|
149
|
+
Bundle -->|insert| L5X["l5x (on) — read + guidance; editing / studio / live off"]
|
|
150
|
+
Bundle -->|insert| FTV["ftview (on) — read, edits, Studio handoff"]
|
|
151
|
+
Bundle -->|insert| MWI["mwi (on) — session, read, verify; edit off"]
|
|
150
152
|
Bundle -->|insert| Viewers["viewers (on) — ladder + ME display previews"]
|
|
151
|
-
Bundle -->|insert| FTV["ftview-read / edit / studio (on)"]
|
|
152
|
-
Bundle -->|insert| MWI["mwi-session / read / verify (on), edit (off)"]
|
|
153
153
|
Bundle -->|insert| Optix["optix (on)"]
|
|
154
154
|
```
|
|
155
155
|
|
|
156
156
|
Row ids are stable. Profiles and patches address these ids, so per-row enable state survives upgrades
|
|
157
157
|
even when the implementation behind a row is replaced.
|
|
158
158
|
|
|
159
|
-
| Row id | Package entry |
|
|
159
|
+
| Row id | Package entry | Config options |
|
|
160
160
|
|---|---|---|
|
|
161
|
-
| `l5x
|
|
162
|
-
| `
|
|
163
|
-
| `
|
|
164
|
-
| `
|
|
165
|
-
| `
|
|
166
|
-
| `viewers` | `@aryacode/dsh-engineering` (its own client face: ladder + ME display previews) | on |
|
|
167
|
-
| `ftview-read` | `dsh-engineering-ftview` | on |
|
|
168
|
-
| `ftview-read-skill` | `dsh-engineering-ftview/skill` | on |
|
|
169
|
-
| `ftview-edit` | `dsh-engineering-ftview/edit` | on |
|
|
170
|
-
| `ftview-studio` | `dsh-engineering-ftview/studio` | on |
|
|
171
|
-
| `mwi-session` | `dsh-engineering-mwi` | on |
|
|
172
|
-
| `mwi-read` | `dsh-engineering-mwi/read` | on |
|
|
173
|
-
| `mwi-read-skill` | `dsh-engineering-mwi/skill` | on |
|
|
174
|
-
| `mwi-verify` | `dsh-engineering-mwi/verify` | on |
|
|
175
|
-
| `mwi-edit` | `dsh-engineering-mwi/edit` | off |
|
|
176
|
-
| `optix` | `@aryacode/dsh-tool-ft-optix` | on |
|
|
161
|
+
| `l5x` | `dsh-engineering-l5x` | `editing` off · `studio` off · `live` off |
|
|
162
|
+
| `ftview` | `dsh-engineering-ftview` | `edit` on · `studio` on |
|
|
163
|
+
| `mwi` | `dsh-engineering-mwi` | `edit` off |
|
|
164
|
+
| `viewers` | `@aryacode/dsh-engineering` (its own client face: ladder + ME display previews) | — |
|
|
165
|
+
| `optix` | `@aryacode/dsh-tool-ft-optix` | — |
|
|
177
166
|
|
|
178
167
|
## Safety
|
|
179
168
|
|
package/cordis.patch.yml
CHANGED
|
@@ -1,67 +1,42 @@
|
|
|
1
1
|
# AryaCode engineering bundle.
|
|
2
2
|
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
3
|
+
# Five product rows, one switch each. A row mounts a product's whole surface —
|
|
4
|
+
# its read tools, its guidance and its optional parts — so the Plugins page
|
|
5
|
+
# shows a product per row instead of a surface per row.
|
|
6
|
+
#
|
|
7
|
+
# The optional parts are the row's config, not separate rows:
|
|
8
|
+
#
|
|
9
|
+
# l5x → editing, studio, live (all off by default)
|
|
10
|
+
# ftview → edit, studio (both on by default)
|
|
11
|
+
# mwi → edit (off by default)
|
|
12
|
+
#
|
|
13
|
+
# That keeps the context decision with the product it belongs to: a read-only
|
|
14
|
+
# profile pays for the read surface, and the expensive schemas are one switch
|
|
15
|
+
# inside the row instead of four more toggles in the list.
|
|
8
16
|
#
|
|
9
17
|
# The patch only ever inserts. It must never target a row another bundle owns:
|
|
10
18
|
# a profile without that row makes composition fail ("patch: entry ... not
|
|
11
|
-
# found"),
|
|
12
|
-
# installed.
|
|
19
|
+
# found"), which is why 0.4.0 and 0.4.1 could not be installed.
|
|
13
20
|
#
|
|
14
|
-
#
|
|
15
|
-
# AryaAI harness feature
|
|
16
|
-
# no such config
|
|
17
|
-
# rejected by the plugin's schema. Rows are the switch in this product; when
|
|
18
|
-
# that filter ships here, it belongs in a bundle mount of its own.
|
|
21
|
+
# There is no per-skill tool filter here (`policyOnly` / `toolPolicy`): that is
|
|
22
|
+
# an AryaAI harness feature and the AryaCode line's `@deepseek-ai/dsh-tool-skill`
|
|
23
|
+
# has no such config. The row is the switch.
|
|
19
24
|
- insert:
|
|
20
|
-
- id: l5x
|
|
25
|
+
- id: l5x
|
|
21
26
|
name: '@aryacode/dsh-engineering/l5x'
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
# The SDK entry needs Studio 5000 installed, so it stays off until asked for.
|
|
30
|
-
- id: l5x-studio
|
|
31
|
-
name: '@aryacode/dsh-engineering/l5x/studio'
|
|
32
|
-
disabled: true
|
|
33
|
-
# Live reads need a controller address; the row is the switch.
|
|
34
|
-
- id: l5x-live
|
|
35
|
-
name: '@aryacode/dsh-engineering/l5x/live'
|
|
36
|
-
disabled: true
|
|
27
|
+
# FactoryTalk View ME: read, edits and the Studio handoff. Small enough that
|
|
28
|
+
# everything is on; the row's config can drop the edits or the handoff.
|
|
29
|
+
- id: ftview
|
|
30
|
+
name: '@aryacode/dsh-engineering/ftview'
|
|
31
|
+
# MotionWorks IEC: session, reads, verify and guidance on; edits opt-in.
|
|
32
|
+
- id: mwi
|
|
33
|
+
name: '@aryacode/dsh-engineering/mwi'
|
|
37
34
|
# Both previews (the L5X ladder viewer and the FactoryTalk View ME display
|
|
38
35
|
# preview) are this bundle's own client face. A package registers exactly one
|
|
39
|
-
# browser bundle, so one row mounts both;
|
|
40
|
-
#
|
|
36
|
+
# browser bundle, so one row mounts both; a client face adds no model
|
|
37
|
+
# context, so this row is independent of every product row above.
|
|
41
38
|
- id: viewers
|
|
42
39
|
name: '@aryacode/dsh-engineering'
|
|
43
|
-
# FactoryTalk View ME: read, edit and Studio entries plus the display
|
|
44
|
-
# preview. The old plugin is retired, so these mount by default.
|
|
45
|
-
- id: ftview-read
|
|
46
|
-
name: '@aryacode/dsh-engineering/ftview'
|
|
47
|
-
- id: ftview-read-skill
|
|
48
|
-
name: '@aryacode/dsh-engineering/ftview/skill'
|
|
49
|
-
- id: ftview-edit
|
|
50
|
-
name: '@aryacode/dsh-engineering/ftview/edit'
|
|
51
|
-
- id: ftview-studio
|
|
52
|
-
name: '@aryacode/dsh-engineering/ftview/studio'
|
|
53
|
-
# MotionWorks IEC: the redesigned rows. Editing is off by default, like L5X.
|
|
54
|
-
- id: mwi-session
|
|
55
|
-
name: '@aryacode/dsh-engineering/mwi'
|
|
56
|
-
- id: mwi-read
|
|
57
|
-
name: '@aryacode/dsh-engineering/mwi/read'
|
|
58
|
-
- id: mwi-read-skill
|
|
59
|
-
name: '@aryacode/dsh-engineering/mwi/skill'
|
|
60
|
-
- id: mwi-verify
|
|
61
|
-
name: '@aryacode/dsh-engineering/mwi/verify'
|
|
62
|
-
- id: mwi-edit
|
|
63
|
-
name: '@aryacode/dsh-engineering/mwi/edit'
|
|
64
|
-
disabled: true
|
|
65
40
|
# FactoryTalk Optix stays a separate package, mounted as a component row.
|
|
66
41
|
- id: optix
|
|
67
42
|
name: '@aryacode/dsh-tool-ft-optix'
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The FactoryTalk View ME product row: one switch for read, edits, Studio
|
|
3
|
+
* handoff and the skill.
|
|
4
|
+
*
|
|
5
|
+
* All four surfaces are on by default — the whole product is small enough that
|
|
6
|
+
* a reader who opens an export wants the edits and the handoff too.
|
|
7
|
+
*/
|
|
8
|
+
import z from '@deepseek-ai/schemastery'
|
|
9
|
+
import * as read from '../vendor/ftview/lib/index.js'
|
|
10
|
+
import * as skill from '../vendor/ftview/lib/skill.js'
|
|
11
|
+
import * as edit from '../vendor/ftview/lib/edit.js'
|
|
12
|
+
import * as studio from '../vendor/ftview/lib/studio.js'
|
|
13
|
+
|
|
14
|
+
export const name = 'engineering-ftview'
|
|
15
|
+
/** Union of the parts' requirements: the read entry owns the view service. */
|
|
16
|
+
export const inject = ['tools', 'fs']
|
|
17
|
+
|
|
18
|
+
export const Config = z.object({
|
|
19
|
+
edit: z.boolean().default(true).description(
|
|
20
|
+
'Staged display and HMI-tag edits, validated then written to a new export folder.',
|
|
21
|
+
),
|
|
22
|
+
studio: z.boolean().default(true).description(
|
|
23
|
+
'FactoryTalk View Studio discovery and the manual import plan. Runs no vendor utility.',
|
|
24
|
+
),
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Mount the FactoryTalk View surface.
|
|
29
|
+
* @param ctx - plugin context.
|
|
30
|
+
* @param config - the two optional surfaces, on by default.
|
|
31
|
+
*/
|
|
32
|
+
export function apply(ctx, config = {}) {
|
|
33
|
+
ctx.plugin(read)
|
|
34
|
+
ctx.plugin(skill)
|
|
35
|
+
if (config.edit !== false) ctx.plugin(edit)
|
|
36
|
+
if (config.studio !== false) ctx.plugin(studio)
|
|
37
|
+
}
|
package/entries/l5x.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Studio 5000 L5X product row: one switch for the whole L5X surface.
|
|
3
|
+
*
|
|
4
|
+
* The parts are the vendored entries; this module mounts them, so the Plugins
|
|
5
|
+
* page shows one row per product instead of one per surface. The three
|
|
6
|
+
* expensive surfaces stay off by default and are switched from this row's
|
|
7
|
+
* config form, which is the same decision the old separate rows encoded —
|
|
8
|
+
* just reachable from the product row instead of from the list.
|
|
9
|
+
*/
|
|
10
|
+
import z from '@deepseek-ai/schemastery'
|
|
11
|
+
import * as read from '../vendor/l5x/lib/index.js'
|
|
12
|
+
import * as skill from '../vendor/l5x/lib/skill.js'
|
|
13
|
+
import * as editing from '../vendor/l5x/lib/editing.js'
|
|
14
|
+
import * as studio from '../vendor/l5x/lib/studio.js'
|
|
15
|
+
import * as live from '../vendor/l5x/lib/live.js'
|
|
16
|
+
|
|
17
|
+
export const name = 'engineering-l5x'
|
|
18
|
+
/** Union of the parts' requirements: the read entry owns the project service. */
|
|
19
|
+
export const inject = ['tools', 'fs']
|
|
20
|
+
|
|
21
|
+
export const Config = z.object({
|
|
22
|
+
editing: z.boolean().default(false).description(
|
|
23
|
+
'Nine staged draft tools (draft_rung, draft_apply, ...). Off by default: a read-only profile should not pay for these schemas.',
|
|
24
|
+
),
|
|
25
|
+
studio: z.boolean().default(false).description(
|
|
26
|
+
'Logix Designer SDK and supervised controller tools. Needs Studio 5000 with the SDK service installed.',
|
|
27
|
+
),
|
|
28
|
+
live: z.boolean().default(false).description(
|
|
29
|
+
'EtherNet/IP polling and trend tools. Needs a reachable controller address.',
|
|
30
|
+
),
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Mount the L5X surface.
|
|
35
|
+
* @param ctx - plugin context.
|
|
36
|
+
* @param config - the three optional surfaces, all off unless enabled.
|
|
37
|
+
*/
|
|
38
|
+
export function apply(ctx, config = {}) {
|
|
39
|
+
ctx.plugin(read)
|
|
40
|
+
ctx.plugin(skill)
|
|
41
|
+
if (config.editing === true) ctx.plugin(editing)
|
|
42
|
+
if (config.studio === true) ctx.plugin(studio)
|
|
43
|
+
if (config.live === true) ctx.plugin(live)
|
|
44
|
+
}
|
package/entries/mwi.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The MotionWorks IEC product row: one switch for the session, read, verify and
|
|
3
|
+
* edit surfaces plus the skill.
|
|
4
|
+
*
|
|
5
|
+
* Editing is the largest schema set in the bundle, so it stays off until the
|
|
6
|
+
* row's config form turns it on.
|
|
7
|
+
*/
|
|
8
|
+
import z from '@deepseek-ai/schemastery'
|
|
9
|
+
import * as session from '../vendor/mwi/lib/index.js'
|
|
10
|
+
import * as read from '../vendor/mwi/lib/read.js'
|
|
11
|
+
import * as skill from '../vendor/mwi/lib/skill.js'
|
|
12
|
+
import * as verify from '../vendor/mwi/lib/verify.js'
|
|
13
|
+
import * as edit from '../vendor/mwi/lib/edit.js'
|
|
14
|
+
|
|
15
|
+
export const name = 'engineering-mwi'
|
|
16
|
+
/** The whole product needs the tool registry. */
|
|
17
|
+
export const inject = ['tools']
|
|
18
|
+
|
|
19
|
+
export const Config = z.object({
|
|
20
|
+
edit: z.boolean().default(false).description(
|
|
21
|
+
'Seven staged edit tools (code, declarations, structure, blocks, POU packages). Off by default: the largest schemas in the bundle.',
|
|
22
|
+
),
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Mount the MotionWorks IEC surface.
|
|
27
|
+
* @param ctx - plugin context.
|
|
28
|
+
* @param config - the optional edit surface, off unless enabled.
|
|
29
|
+
*/
|
|
30
|
+
export function apply(ctx, config = {}) {
|
|
31
|
+
ctx.plugin(session)
|
|
32
|
+
ctx.plugin(read)
|
|
33
|
+
ctx.plugin(skill)
|
|
34
|
+
ctx.plugin(verify)
|
|
35
|
+
if (config.edit === true) ctx.plugin(edit)
|
|
36
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aryacode/dsh-engineering",
|
|
3
|
-
"version": "0.4.
|
|
4
|
-
"description": "AryaCode engineering bundle: one install surface
|
|
3
|
+
"version": "0.4.4",
|
|
4
|
+
"description": "AryaCode engineering bundle: one install surface for the Studio 5000 L5X, FactoryTalk View ME, MotionWorks IEC and FactoryTalk Optix surfaces, one row per product, with the ladder and display previews.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dsh",
|
|
7
7
|
"deepseek-harness",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
"files": [
|
|
32
32
|
"cordis.patch.yml",
|
|
33
|
+
"entries/**/*",
|
|
33
34
|
"lib/**/*",
|
|
34
35
|
"locale/*.json",
|
|
35
36
|
"vendor/**/*",
|
|
@@ -55,7 +56,10 @@
|
|
|
55
56
|
}
|
|
56
57
|
},
|
|
57
58
|
"dependencies": {
|
|
58
|
-
"@aryacode/dsh-tool-ft-optix": "0.2.1-rc.3"
|
|
59
|
+
"@aryacode/dsh-tool-ft-optix": "0.2.1-rc.3",
|
|
60
|
+
"fast-xml-parser": "5.11.1",
|
|
61
|
+
"fast-xml-validator": "1.4.2",
|
|
62
|
+
"st-ethernet-ip": "2.7.5"
|
|
59
63
|
},
|
|
60
64
|
"peerDependencies": {
|
|
61
65
|
"@deepseek-ai/cordis": "~4.0.4",
|
|
@@ -72,16 +76,19 @@
|
|
|
72
76
|
},
|
|
73
77
|
"./client": "./lib/client.js",
|
|
74
78
|
"./package.json": "./package.json",
|
|
75
|
-
"./l5x": "./
|
|
79
|
+
"./l5x": "./entries/l5x.js",
|
|
80
|
+
"./ftview": "./entries/ftview.js",
|
|
81
|
+
"./mwi": "./entries/mwi.js",
|
|
82
|
+
"./l5x/read": "./vendor/l5x/lib/index.js",
|
|
76
83
|
"./l5x/skill": "./vendor/l5x/lib/skill.js",
|
|
77
84
|
"./l5x/editing": "./vendor/l5x/lib/editing.js",
|
|
78
85
|
"./l5x/live": "./vendor/l5x/lib/live.js",
|
|
79
86
|
"./l5x/studio": "./vendor/l5x/lib/studio.js",
|
|
80
|
-
"./ftview": "./vendor/ftview/lib/index.js",
|
|
87
|
+
"./ftview/read": "./vendor/ftview/lib/index.js",
|
|
81
88
|
"./ftview/skill": "./vendor/ftview/lib/skill.js",
|
|
82
89
|
"./ftview/edit": "./vendor/ftview/lib/edit.js",
|
|
83
90
|
"./ftview/studio": "./vendor/ftview/lib/studio.js",
|
|
84
|
-
"./mwi": "./vendor/mwi/lib/index.js",
|
|
91
|
+
"./mwi/session": "./vendor/mwi/lib/index.js",
|
|
85
92
|
"./mwi/read": "./vendor/mwi/lib/read.js",
|
|
86
93
|
"./mwi/skill": "./vendor/mwi/lib/skill.js",
|
|
87
94
|
"./mwi/verify": "./vendor/mwi/lib/verify.js",
|