@aryacode/dsh-engineering 0.4.1 → 0.4.2

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,26 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.2] - 2026-10-25
4
+
5
+ ### Fixed
6
+
7
+ - **The bundle now installs and mounts in AryaCode.** 0.4.1 fixed the pnpm error, but the install still
8
+ failed one step later, when the profile tried to apply the bundle: the patch's first entry targeted
9
+ the `tool-capability-policy` row, and no such row exists in an AryaCode profile, so composition threw
10
+ `dsh: [@aryacode/dsh-engineering] patch: entry "tool-capability-policy" not found` and the plugin
11
+ manager rolled the install back — which is what the market card reported as *Cannot install*.
12
+
13
+ ### Removed
14
+
15
+ - **The per-skill tool filter.** `policyOnly` / `toolPolicy` / `capabilities` are an AryaAI harness
16
+ feature: AryaAI's fork of `@deepseek-ai/dsh-tool-skill` implements them, and the AryaCode line's copy
17
+ of the same package does not. In this product the layer never filtered anything — an older harness
18
+ skipped the missing row with a warning, the current one treats it as fatal. Rows are the switch:
19
+ disabling `l5x-editing`, `l5x-studio`, `l5x-live` or `mwi-edit` unmounts that plugin and removes its
20
+ tool schemas from the request, which is the same context saving by a mechanism this harness has.
21
+ - The patch is now **inserts only**, and `test/patch.spec.mjs` fails if any entry targets a row another
22
+ bundle owns. `test/docs.spec.mjs` fails if the README still promises a capability policy.
23
+
3
24
  ## [0.4.1] - 2026-10-25
4
25
 
5
26
  ### Fixed
package/README.md CHANGED
@@ -1,9 +1,8 @@
1
1
  # AryaCode Engineering
2
2
 
3
3
  **One bundle for automation-engineering work in AryaCode.** Studio 5000 L5X, FactoryTalk View ME,
4
- MotionWorks IEC and FactoryTalk Optix sit behind a single install, one row per capability, and one
5
- switch per product — so the switch removes tool schemas from the request instead of leaving them
6
- visible after the guidance is off.
4
+ MotionWorks IEC and FactoryTalk Optix sit behind a single install, one row per surface. A row is the
5
+ switch: disable it and that plugin unloads, so its tool schemas leave the request.
7
6
 
8
7
  `@aryacode/dsh-engineering` · 79 tools · 16 rows · 4 products · MIT
9
8
 
@@ -15,18 +14,19 @@ A general assistant pays for every tool schema on every request. An automation e
15
14
  surfaces — reading a 3 MB L5X, comparing two projects, staging ladder edits, talking to a controller —
16
15
  but only one or two of them at a time.
17
16
 
18
- This bundle splits those surfaces into independently switchable rows and links each product's tools to
19
- the skill that governs it. Turning a product off removes **both** its guidance and its schemas:
17
+ This bundle splits those surfaces into independently switchable rows. The expensive ones are off by
18
+ default, so a read-only profile pays for the read tools and nothing else:
20
19
 
21
- | State | What the model receives |
22
- |---|---|
23
- | `rockwell-l5x` skill **on** | L5X guidance + 35 tool schemas |
24
- | `rockwell-l5x` skill **off** | neither |
20
+ | Row | Default | What a disabled row removes |
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
+ | `mwi-edit` | off | the seven MotionWorks edit schemas |
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 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.
27
+ The previews are independent of the tools — switching L5X tools off does not remove the ladder viewer.
28
+ Both previews mount from **one** row (`viewers`), because a package registers exactly one browser
29
+ bundle.
30
30
 
31
31
  ## What it supports
32
32
 
@@ -45,25 +45,32 @@ Tool groups, by product:
45
45
  - **MotionWorks IEC** — 7 session, 7 saved-project reads, 3 verify, 7 staged edits
46
46
  - **Optix** — 6 tools, unlinked to a skill until one exists
47
47
 
48
- ## What the policy changes
48
+ ## Switches
49
49
 
50
- Each skill governs a product's tools. The capability policy is per-tool, not per-prefix, because the
51
- rebuilt tools use descriptive names.
50
+ A row is a plugin. Disabling it in the profile (or on the Plugins page) unmounts that plugin and its
51
+ tool schemas stop being sent; the guidance skill keeps its own row so reading guidance and reading
52
+ tools switch separately.
52
53
 
53
- | Skill | Governs | Tools |
54
- |---|---|---|
55
- | `rockwell-l5x` | `l5x_*` **and** the 35 L5X tools by exact name | 35 |
56
- | `factorytalk-view` | `ftview_*` | 14 |
57
- | `motionworks-iec` | `mw_*` | 24 |
58
- | — | `optix_*` | 6 (always visible: no skill yet) |
59
-
60
- `onDemand` stays `false`. Bounded on-demand discovery was measured against eager exposure and kept
61
- eager, because discovery cost more turns than the schema characters it saved. The context win comes
62
- from the per-product switches and from splitting the surfaces into rows.
54
+ | Row | Surface | Default | Why the default |
55
+ |---|---|---|---|
56
+ | `l5x-read`, `l5x-read-skill` | offline reads, checks, comparison + guidance | on | cheap and safe |
57
+ | `l5x-editing` | nine staged `draft_*` tools | **off** | a read-only profile should not pay for them |
58
+ | `l5x-studio` | Logix Designer SDK and supervised controller | **off** | needs Studio 5000 installed |
59
+ | `l5x-live` | EtherNet/IP polling and trends | **off** | needs a controller address |
60
+ | `viewers` | ladder + ME display previews | on | adds no model context |
61
+ | `ftview-read`, `ftview-read-skill`, `ftview-edit`, `ftview-studio` | FactoryTalk View ME read, edits, Studio handoff | on | small enough to default on |
62
+ | `mwi-session`, `mwi-read`, `mwi-read-skill`, `mwi-verify` | MotionWorks IEC session, reads, verify + guidance | on | — |
63
+ | `mwi-edit` | seven staged MotionWorks edits | **off** | the largest schemas in the bundle |
64
+ | `optix` | FactoryTalk Optix Studio authoring | on | separate component package |
65
+
66
+ **No capability policy.** Earlier releases also carried a per-skill tool filter (`policyOnly` /
67
+ `toolPolicy`) that gated tools by skill state. That filter is an AryaAI harness feature and is **not
68
+ part of this product line** — `@deepseek-ai/dsh-tool-skill` here has no such config. Rows are the
69
+ switch. Do not re-add a patch entry that targets another bundle's row: composition fails when the row
70
+ is absent, and that is what made 0.4.0 and 0.4.1 uninstallable.
63
71
 
64
72
  The reference in [docs/reference/tools.md](docs/reference/tools.md) is generated from the registered
65
- definitions, and `pnpm test` fails when a registered tool is not governed or the committed reference
66
- drifts.
73
+ definitions, and `pnpm test` fails when the committed reference drifts.
67
74
 
68
75
  ## Status
69
76
 
@@ -108,8 +115,8 @@ Where each surface actually stands, based on what has been exercised.
108
115
 
109
116
  ## Install
110
117
 
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.
118
+ The bundle carries its components (`vendor/`), its own browser face (both previews) and the rows.
119
+ Installing a component on its own gives you tools **without** the rows that switch them.
113
120
 
114
121
  ```sh
115
122
  # in the AryaCode profile
@@ -129,13 +136,12 @@ development home mounts the same rows.
129
136
 
130
137
  ## How it composes
131
138
 
132
- The bundle adds one loader layer after the Web app. It patches the existing `tool-capability-policy`
133
- row and inserts its own rows; it never replaces a product plugin id.
139
+ The bundle adds one loader layer after the Web app: it **inserts** its own rows and never touches a row
140
+ another bundle owns.
134
141
 
135
142
  ```mermaid
136
143
  flowchart TB
137
144
  Profile["Profile bundle list"] --> Bundle["@aryacode/dsh-engineering"]
138
- Bundle -->|"id-targeted config override"| Policy["tool-capability-policy"]
139
145
  Bundle -->|insert| L5XRead["l5x-read (on)"]
140
146
  L5XRead --> L5XSkill["l5x-read-skill (on)"]
141
147
  Bundle -->|insert| L5XEdit["l5x-editing (off)"]
@@ -145,9 +151,6 @@ flowchart TB
145
151
  Bundle -->|insert| FTV["ftview-read / edit / studio (on)"]
146
152
  Bundle -->|insert| MWI["mwi-session / read / verify (on), edit (off)"]
147
153
  Bundle -->|insert| Optix["optix (on)"]
148
- Policy -->|"rockwell-l5x governs 35 tools"| L5XRead
149
- Policy -->|"factorytalk-view governs ftview_*"| FTV
150
- Policy -->|"motionworks-iec governs mw_*"| MWI
151
154
  ```
152
155
 
153
156
  Row ids are stable. Profiles and patches address these ids, so per-row enable state survives upgrades
package/cordis.patch.yml CHANGED
@@ -1,77 +1,21 @@
1
1
  # AryaCode engineering bundle.
2
2
  #
3
- # Two layers live here.
3
+ # One layer lives here: the product rows. Each row mounts one surface of the
4
+ # bundle, and the row is the switch — disabling `l5x-editing`, `l5x-studio`,
5
+ # `l5x-live` or `mwi-edit` unloads that plugin, so its tool schemas never reach
6
+ # the request. Row ids are stable, so per-entry enable state survives upgrades
7
+ # even as the package behind a row is rebuilt.
4
8
  #
5
- # 1. Tool exposure. Targets the existing `tool-capability-policy` row and links
6
- # each engineering product's tool namespace to the skill that governs it, so
7
- # the Skills page switch controls the guidance and the tools together instead
8
- # of leaving the tool schemas exposed after the skill is off.
9
+ # The patch only ever inserts. It must never target a row another bundle owns:
10
+ # a profile without that row makes composition fail ("patch: entry ... not
11
+ # found"), and in 0.4.0/0.4.1 that is exactly why the bundle could not be
12
+ # installed.
9
13
  #
10
- # `onDemand` stays false. Arya measured bounded on-demand discovery against
11
- # eager exposure and kept eager exposure because discovery cost more turns
12
- # than the schema characters it saved. The context gain comes from per-product
13
- # switches and from trimming the product schemas.
14
- #
15
- # Optix has no skill yet, so `optix_*` stays unlinked and always visible. Link
16
- # it here once a FactoryTalk Optix skill registers one.
17
- #
18
- # 2. The product rows. Mounts the rebuilt L5X and FactoryTalk View surfaces and
19
- # their guidance as components of this bundle. The row ids are stable, so per-entry enable
20
- # state survives upgrades even as the package behind them is rebuilt.
21
- - id: tool-capability-policy
22
- config:
23
- policyOnly: true
24
- toolPolicy:
25
- onDemand: false
26
- capabilities:
27
- - skill: rockwell-l5x
28
- # The rebuilt L5X tools keep descriptive names (open_project,
29
- # draft_apply, ...). This exact list is what the skill switch
30
- # governs; `l5x_` stays linked for any prefixed tool added later.
31
- tools:
32
- - open_project
33
- - project_overview
34
- - list_components
35
- - get_component
36
- - search_logic
37
- - find_references
38
- - trace_dependencies
39
- - resolve_tag
40
- - usage_map
41
- - run_checks
42
- - compare_projects
43
- - draft_rung
44
- - draft_st
45
- - draft_routine
46
- - draft_tag
47
- - draft_tag_description
48
- - draft_udt_member
49
- - draft_udt_description
50
- - draft_validate
51
- - draft_apply
52
- - studio_sdk_status
53
- - studio_capabilities
54
- - export_acd_to_l5x
55
- - verify_offline_l5x
56
- - build_acd_from_draft
57
- - studio_review_evidence
58
- - controller_approval_status
59
- - capture_controller_snapshot
60
- - go_online
61
- - read_controller_mode
62
- - read_live_tag
63
- - change_controller_mode
64
- - download_project
65
- - poll_live_tags
66
- - start_plc_trend
67
- prefixes:
68
- - l5x_
69
- - skill: factorytalk-view
70
- prefixes:
71
- - ftview_
72
- - skill: motionworks-iec
73
- prefixes:
74
- - mw_
14
+ # The per-skill tool filter (`policyOnly` / `toolPolicy` / `capabilities`) is an
15
+ # AryaAI harness feature. The AryaCode line's `@deepseek-ai/dsh-tool-skill` has
16
+ # no such config, so a capability layer here would either fail composition or be
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.
75
19
  - insert:
76
20
  - id: l5x-read
77
21
  name: '@aryacode/dsh-engineering/l5x'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aryacode/dsh-engineering",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "AryaCode engineering bundle: one install surface and one tool-exposure policy for the Studio 5000 L5X, FactoryTalk View and MotionWorks IEC plugins, with skill links for Optix and CAD.",
5
5
  "keywords": [
6
6
  "dsh",