@veil-runtime/ui 0.4.2 → 0.5.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,10 +1,31 @@
1
- # 0.4.2 — renderer stability patch candidate
1
+ # 0.5.0 — unpublished release candidate
2
+
3
+ - Release qualification promotes package metadata from `0.5.0-dev.0` to `0.5.0`; no publication is performed. See [release notes and migration](docs/RELEASE-0.5.0.md).
4
+ - Add optional Status `phase` literals/bindings for loading, ready, empty and error with strict bounded public messages and safe defaults; expose manifest v5.
5
+ - Preserve eligible focus and recover removed/hidden/disabled focus to the first visible phased Status. Reuse host-controlled Buttons for retry and existing revision guards for transitions; add no asynchronous execution engine.
6
+ - Complete the planned v0.5.0 feature scope for release qualification; candidate remains unpublished.
7
+
8
+ - Add bounded field descriptions, conditional disabled fields and read-only text/number inputs and textareas; expose manifest v4.
9
+ - Associate help/errors with controls, focus the first invalid field on validating button activation, and guard field edits against current visibility and field flags.
10
+ - Preserve eager validation, compatible state/focus retention and host-controlled action delivery; disabled fields retain state and skip validation.
11
+
12
+ - Add opt-in Table `rowKey`, `rowActions`, neutral badge cells, explicit host allowlisting, revision-checked `dispatchRow` and `rowId` events.
13
+ - Reconcile keyed rows/actions with focus retention and stale pointer/key/click protection; expose manifest v3.
14
+ - Preserve legacy Table/List/Button definitions and host record authorization responsibilities.
15
+
16
+ - Add bounded responsive `Grid` with mobile-first column counts at 600px and 1024px, allowlisted gaps, and stable DOM order across public types, validator, manifest, renderer, and producer guidance.
17
+
18
+ - Describe effective interface tree depth and aggregate traversal separately; keep the existing accepted definition set bounded.
19
+ - Publish machine-readable binding, condition, validation, action, and update behavior for producer tooling.
20
+ - This is an unpublished development candidate; v0.4.2 artifacts remain unchanged.
21
+
22
+ # 0.4.2 — published renderer stability patch
2
23
 
3
24
  - Preserve existing text nodes for Text, Heading, Status and Button updates; skip unchanged text and update changed text in place.
4
25
  - Fix WebKit mouse activation lost when an input blur commits state during a button press.
5
26
  - Keep public APIs, revision semantics, action handlers, keyed reconciliation and transaction boundaries unchanged.
6
27
  - Add cross-browser regressions for repeated and changed text, HTML escaping, nested keyed identity, rejected updates and ordinary mouse activation after blur.
7
- - Candidate only; publication requires maintainer approval of the exact qualified artifact.
28
+ - Published on npm under the `latest` dist-tag. The [original candidate qualification record](https://github.com/veil-runtime/veil-ui-lab/blob/main/docs/release/ui-0.4.2-renderer-stability.md) remains in the source repository.
8
29
 
9
30
  # 0.3.0-rc.2 — review remediation candidate
10
31
 
package/README.md CHANGED
@@ -1,6 +1,10 @@
1
- # Veil UI — Deterministic Composition Engine (Developer Preview)
1
+ # Veil UI — Deterministic Composition Engine
2
2
 
3
- The v0.4.1 Developer Preview's framework-neutral interface engine is documented in [UNIVERSAL-INTERFACE.md](docs/UNIVERSAL-INTERFACE.md) and [v0.4.0.md](docs/v0.4.0.md). It supports bounded JSON definitions, validated multi-input forms, conditional controls, keyed dynamic updates, local state retention, trusted component lifecycles, and host-controlled actions without Veil Core. See [RELEASE-0.4.1.md](docs/RELEASE-0.4.1.md) for release scope and limits.
3
+ The unpublished v0.5.0 Developer Preview candidate provides a framework-neutral interface engine with bounded JSON definitions, validated forms, keyed updates, trusted component lifecycles and host-controlled actions. See [UNIVERSAL-INTERFACE.md](docs/UNIVERSAL-INTERFACE.md) for the quick start and [RELEASE-0.5.0.md](docs/RELEASE-0.5.0.md) for release notes, compatibility changes and migration guidance.
4
+
5
+ The five increments are [capability metadata](docs/INTERFACE-CAPABILITIES-0.5.0.md), responsive Grid (in the same contract), [Interactive Tables](docs/INTERACTIVE-COLLECTIONS-0.5.0.md), [Richer Forms](docs/RICHER-FORMS-0.5.0.md), and [host-driven asynchronous presentation](docs/ASYNC-PRESENTATION-0.5.0.md). The final capability manifest version is **5**. Exact-version consumers and custom `InterfaceController` implementations must follow the migration notes before upgrading.
6
+
7
+ **v0.4.2 is the latest published version recorded by this repository.** See the [v0.4.0 contract guide](docs/v0.4.0.md) for its retained validation and condition behavior, the [v0.4.2 changelog](CHANGELOG.md) for the published renderer stability patch, and [RELEASE-0.4.1.md](docs/RELEASE-0.4.1.md) for the earlier release. The v0.5.0 features below require the unpublished candidate artifact.
4
8
 
5
9
  The one-screen composition API and DOM renderer are documented in [COMPOSITION.md](docs/COMPOSITION.md), with a working [stock treatment example](examples/composed). The root capability-description API remains available alongside the newer interface APIs.
6
10
 
@@ -8,35 +12,41 @@ The runnable [backend integration example](https://github.com/veil-runtime/veil-
8
12
 
9
13
  The root API derives and validates interface descriptions from governed capability contracts. It is framework-neutral: it returns graphs, fields, surfaces, and interaction descriptors. Your host renders those descriptions and executes authorized operations through Core.
10
14
 
11
- **Developer Preview: publication requires explicit maintainer approval of the exact qualified tarball and release action.**
12
-
13
- ## Install and run
15
+ ## Install the published package
14
16
 
15
17
  Requires Node.js 24 or newer for server-side use and npm. The supported TypeScript baseline is 6.0.2, ESM with NodeNext resolution. Strict Core consumer checks use `ES2022` and `DOM` libraries plus Node types because public Core/MCP declarations reference web transport types. The `/dom` entry point requires a browser DOM and should be bundled for browser use; UI has no compiled Core runtime import. Direct CommonJS `require()` is unsupported; use ESM imports or dynamic `import()` from a CommonJS host.
16
18
 
17
- From this repository:
19
+ In an application using the standalone `/interface` and `/dom` APIs:
18
20
 
19
21
  ```sh
20
- npm ci
21
- npm run qualify:ui
22
+ npm install @veil-runtime/ui@0.4.2
22
23
  ```
23
24
 
24
- Qualification prints the artifact and evidence directory. It builds and tests a source-only snapshot, installs the tarball into a new consumer with **published Core 0.4.0**, runs the standalone example, checks declarations and browser bundling, compares repeated tarballs, audits production dependencies, and inspects legal files. It never publishes.
25
+ These APIs do not require Veil Core. The package declares `@veil-runtime/core` as an **optional** peer with range `^0.4.0`; this does not claim compatibility with Core v0.6.0. For a browser application, bundle `/dom` and provide a mount element. The current [UNIVERSAL-INTERFACE.md](docs/UNIVERSAL-INTERFACE.md) and [examples/universal](examples/universal) also describe v0.5.0 additions; use the [v0.4.0 contract guide](docs/v0.4.0.md) for the published baseline.
25
26
 
26
- In a separate application, use the printed absolute tarball path:
27
+ The legacy capability-description example below uses Core types and authoritative Core execution. Install the qualified peer version when running that example:
27
28
 
28
29
  ```sh
29
- npm init -y
30
- npm install /absolute/path/veil-runtime-ui-0.4.1.tgz
30
+ npm install @veil-runtime/ui@0.4.2 @veil-runtime/core@0.4.0
31
31
  ```
32
32
 
33
- Then copy [examples/standalone/index.mjs](examples/standalone/index.mjs) into that application and run:
33
+ Copy [examples/standalone/index.mjs](examples/standalone/index.mjs) into that application and run:
34
34
 
35
35
  ```sh
36
36
  node index.mjs
37
37
  ```
38
38
 
39
- For the current interface quick start, use [UNIVERSAL-INTERFACE.md](docs/UNIVERSAL-INTERFACE.md) and [examples/universal](examples/universal). The legacy capability example below also needs `@veil-runtime/core@0.4.0`; install that peer separately when running it. The example prints derived input controls, rejects invalid input, demonstrates a policy-denied execution without calling the service, and displays an approved result. It uses a tiny host-owned terminal renderer, a local identity fixture, an existing-service-style operation, and authoritative Core authorization. No model, Emergence, React, or Sandbox is involved. The included example `package.json` intentionally omits the UI dependency: install the qualified tarball explicitly using the command above.
39
+ The example prints derived input controls, rejects invalid input, demonstrates a policy-denied execution without calling the service, and displays an approved result. It uses a tiny host-owned terminal renderer, a local identity fixture, an existing-service-style operation, and authoritative Core authorization. No model, Emergence, React, or Sandbox is involved. The included example `package.json` declares Core but omits UI; install the published UI package explicitly as shown above.
40
+
41
+ ## Install the unpublished v0.5.0 candidate
42
+
43
+ After qualification, use the new absolute tarball path printed by the qualifier:
44
+
45
+ ```sh
46
+ npm install /absolute/path/veil-runtime-ui-0.5.0.tgz
47
+ ```
48
+
49
+ Install `@veil-runtime/core@0.4.0` as well when running the legacy capability-description example. The standalone `/interface` and `/dom` APIs do not require Core. See [release notes and migration](docs/RELEASE-0.5.0.md) before upgrading.
40
50
 
41
51
  ## Minimal derivation
42
52
 
@@ -83,25 +93,33 @@ UI owns descriptive derivation and validation. The host owns authentication, dis
83
93
 
84
94
  Validate inputs on the server independently of the form. Output validation now **rejects undeclared fields recursively**, including array elements, rather than stripping fields or returning a sanitized copy. Validate before transport, storage as trusted context, or rendering; discard the whole result on failure. Explicitly select the public DTO from service records. Declaring a secret in the schema still declares it public; validation cannot decide which business data is sensitive.
85
95
 
86
- Input/output/schema validation and presentation-plan parsing reject cycles, accessors, nonplain records, reserved `__proto__`/`prototype`/`constructor` keys, and oversized data. Limits per validation boundary: depth 32, 10,000 nodes, 256 properties per object, 1,000 array items, 65,536 UTF-16 code units per string, and a conservative 1 MiB estimated UTF-8 budget. These are maximum supported preview contracts, not tunable security exceptions. Hosts must additionally bound raw request/provider response bytes **before JSON decoding**, and constrain response time and concurrent work. Supported dates are real Gregorian `YYYY-MM-DD`; instants must be valid UTC strings with seconds and optional exactly three millisecond digits. Leap seconds and offsets are unsupported.
96
+ Input/output/schema validation and presentation-plan parsing reject cycles, accessors, nonplain records, reserved `__proto__`/`prototype`/`constructor` keys, and oversized data. Limits per validation boundary: depth 32, 10,000 nodes, 256 properties per object, 1,000 array items, 65,536 UTF-16 code units per string, and a conservative 1 MiB estimated UTF-8 budget. These are maximum supported package limits, not tunable security exceptions. Hosts must additionally bound raw request/provider response bytes **before JSON decoding**, and constrain response time and concurrent work. Supported dates are real Gregorian `YYYY-MM-DD`; instants must be valid UTC strings with seconds and optional exactly three millisecond digits. Leap seconds and offsets are unsupported.
87
97
 
88
98
  Validation errors throw `Error`; their messages are diagnostic, not stable error codes or safe user-facing text. Host APIs should map them to bounded public errors. The package has no resumable execution or retry guarantee.
89
99
 
90
100
  ## Development and limitations
91
101
 
102
+ For maintainer qualification from the repository root, run `npm ci` and `npm run qualify:ui`. Qualification builds and tests a source-only snapshot, installs its tarball into an independent consumer with **published Core 0.4.0** for the legacy capability example, checks declarations and browser bundling, compares repeated tarballs, audits production dependencies, and inspects legal files. It prints artifact and evidence paths and never publishes. This workflow reviews source changes; consumer installation uses the published npm package above.
103
+
92
104
  ```sh
93
105
  npm --workspace @veil-runtime/ui run check
94
106
  npm test
95
107
  ```
96
108
 
97
- The build targets ES2022, emits ESM/declarations without dangling source maps, and fingerprints inputs and emitted files. `verify:dist` rejects missing, stale, altered, or extra files; `npm pack` rebuilds and verifies first. A failing `prepublishOnly` hook blocks publication from a source directory. Only the exact qualified tarball may be published after maintainer approval of its SHA-256 and the release action. npm tarball publication does not run directory lifecycle hooks; no script bypass is needed. Publication defaults to public access on `https://registry.npmjs.org/` under the `latest` tag. Qualification verifies source-directory refusal and an exact-tarball publication dry-run; it never publishes. Neither qualification nor CI authorizes a release.
109
+ The build targets ES2022, emits ESM/declarations without dangling source maps, and fingerprints inputs and emitted files. `verify:dist` rejects missing, stale, altered, or extra files; `npm pack` rebuilds and verifies first. A failing `prepublishOnly` hook blocks publication from a source directory. For future releases, only an exact qualified tarball is eligible for separate maintainer approval of its SHA-256 and release action. npm tarball publication does not run directory lifecycle hooks; no script bypass is needed. Publication defaults to public access on `https://registry.npmjs.org/` under the `latest` tag. Qualification verifies source-directory refusal and an exact-tarball publication dry-run; it never publishes. Neither qualification nor CI authorizes a future release.
98
110
 
99
- The laboratory React UI and Emergence remain historical experiments outside this release contract. The capability lab is at `/lab`; `/` opens the separate Emergence experiment. Known lab-only issues include mobile overflow, decimal input stepping, fixed/permissive demo identity/policy, process-local stores, constructor/singleton integration friction, and unavailable Core Emergence imports in its broad client/server build. These do not become supported package features through this preview. See the release qualification report for separate laboratory dependency findings.
111
+ The laboratory React UI and Emergence remain historical experiments outside this release contract. The capability lab is at `/lab`; `/` opens the separate Emergence experiment. Known lab-only issues include mobile overflow, decimal input stepping, fixed/permissive demo identity/policy, process-local stores, constructor/singleton integration friction, and unavailable Core Emergence imports in its broad client/server build. These are not supported features of the published UI package. See the release qualification report for separate laboratory dependency findings.
100
112
 
101
113
  ## License
102
114
 
103
115
  Apache License 2.0, approved by the maintainer for this package. [LICENSE](LICENSE) and [NOTICE](NOTICE) are included in the qualified tarball. External dependencies retain their own licenses; see [THIRD_PARTY.md](docs/THIRD_PARTY.md). Root laboratory metadata remains separate.
104
116
 
117
+ ## Release history
118
+
119
+ ### v0.4.2
120
+
121
+ This published patch preserves text nodes during compatible updates and fixes the documented WebKit mouse-activation defect. See the [qualification record in the source repository](https://github.com/veil-runtime/veil-ui-lab/blob/main/docs/release/ui-0.4.2-renderer-stability.md) for the original candidate evidence.
122
+
105
123
  ### v0.4.1
106
124
 
107
125
  This patch release adds a [source-only backend integration example](https://github.com/veil-runtime/veil-ui-lab/tree/main/packages/ui/examples/backend). See [validation, conditions, and new inputs](docs/v0.4.0.md) and the [validated request example](examples/universal/validated.mjs). Submission validation is opt-in with `validate: true` on a Button; hosts retain execution and authorization responsibility.
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "inputs": {
3
- "package.json": "2565895a0cb51b34fbdfd92695d4a2c1edf144f9e8574d1706b91d437633f858",
3
+ "package.json": "5f8dc63eb4fbfa563726986ef840d9ece572c2a2df93bca1fd3737f0045e5d09",
4
4
  "scripts/artifact.mjs": "92d2ffd8836d0e14742528da9ddc96e0834ef873ffa81097a3ebae58d825aace",
5
5
  "scripts/build.mjs": "54ca91e728925b1efefa61e5aeeb9e5bf549d25c2faa8ceb618009c214a7e03c",
6
6
  "scripts/check-boundary.mjs": "5c09c118f7340f3a111e3947c2d98579f73903728ded9d604ac13b93077a5b29",
7
7
  "scripts/publication-hold.mjs": "2c7a00f8f23ac34d888813e76c4ab8f5bb112526002fd6be15993825dff118ca",
8
8
  "scripts/verify-core-matrix.mjs": "69614723a540ddc6167d9d87a25718d1f1ce36f2a51f8fcd767a7ac0f1c6259c",
9
9
  "scripts/verify-dist.mjs": "668d5b105b7762cc2fd812091dba24f6985597da4519f72d572d5b7e63b880c0",
10
- "scripts/verify-universal-consumer.mjs": "f637b99540831089f05c71d113ac958bf5dfb2a316358b75de3e0c1f29e34bd5",
10
+ "scripts/verify-universal-consumer.mjs": "9ae49eb5289befbc3eb3d0eb6a7150b8a4ad864d8c6f5ad66e2df80a224e4913",
11
11
  "src/application.ts": "18cee45849d0ef9858d673b35aa42b77c4469b637669a0ab8a1ffc1f2c980d5d",
12
12
  "src/capability-view-derivation.ts": "07367b08e115c4022c873d2d01888d0d2c26ab58ac7518500fd95331301bbaa4",
13
13
  "src/capability-view.ts": "fda1db85ffcb26b45b60890b3a20b875ee4aff76bd3c35ce5d41018b22a64de7",
@@ -16,7 +16,7 @@
16
16
  "src/composition.ts": "4d06b8fe4ed61b2e0a4daf07770be708b2f0167a35ae41140b4047b7cd8fbd78",
17
17
  "src/derive-input-fields.ts": "cf8c7ee9f98ed0838dbf299fb4653814c3e70004fc121d8c99752aa137331efd",
18
18
  "src/derive-output-view.ts": "81d622d5430f7b9333a41c33794d8d22e3e539e861e04830ce089d83a6790a8e",
19
- "src/dom.ts": "a89250bb7d00453f34de62812f34364c66f8173ccd51000d67dd3d40d474ee7e",
19
+ "src/dom.ts": "5cc1d94ca2ec8f1a636daefbec82fdd042b7a14b773a28cfe48a5f7b6372d9ae",
20
20
  "src/execution-request.ts": "775c3beba47aae482acbc2a48461ab8f947ca7b773c71a69077af387557ae344",
21
21
  "src/experience-orchestration.ts": "f156497d99828d15da2b42f3155e4ec0b77fc72ad6e6d846bb9bbea4d6791fa4",
22
22
  "src/format-semantic-value.ts": "2192cd723c5a9d64164287ddae99c0aa105024e1d0778a597d0b71a2ea8ab9dd",
@@ -24,7 +24,7 @@
24
24
  "src/input-schema.ts": "3f40e707882efc81f5e537c8ad8a2cdc4fd279e6362d32ee6fb55a09ac298ee7",
25
25
  "src/interaction-resolution.ts": "e9a75d501ded82fe773f03d2dcb1e2fa8b396a98d9c2902888a3f6b3cbf8f55e",
26
26
  "src/interface-transaction.ts": "fe415c5318d0f0df78760dc374968dcfee42b0327e8796f3195aef07ccd19e91",
27
- "src/interface.ts": "ea35aa01aac62478cf218b1980823200063c79451bf44542b1a1e5541b0fef4f",
27
+ "src/interface.ts": "3c28ca78d9ba3615e9bf004eeebc930b53baeee2a72ceea978677377f27d7575",
28
28
  "src/output-presentation-suggestion-schema.ts": "2421d9f152cb4ce5e4d560f8ebe1d4029147dcab01a187c67008f36a3dfd6bf4",
29
29
  "src/output-schema.ts": "68f7f49fed5badafb5ca509365802dec6526a56c23d2bf2837b350852823688b",
30
30
  "src/presentation-composition.ts": "0116ae011d577396b5eff5b11a4c6c58b196b7610e71f0f3a0898e63de6457f0",
@@ -33,7 +33,7 @@
33
33
  "src/registry.ts": "de906003b8098202c905532cfd497ab0e2f9092226be2d9f469c5cf883891a8c",
34
34
  "src/relationship-interpretation.ts": "63be6a417586603d2b6e3075be9bd5bb812fa06437410fc9efa0c0411375f149",
35
35
  "src/validate-application.ts": "f76874d49955d7ade1d0f8c5f995b63a6026102173b3e50b710517ccbc1442f4",
36
- "src/validation-safety.ts": "e0bcc379269e3f51a0021dd4797c422f813b41141274125705b425d2b1b1eb2b",
36
+ "src/validation-safety.ts": "64f06f4d918454d0158375415de3487af5010b9f86f2fdb7856d33db8375df15",
37
37
  "src/workflow.ts": "6c5b31242474c0a37b1a9f85717eebf3b1d4b373c17c8d47861804e28d3302e5",
38
38
  "tsconfig.json": "d4ec334afc2daeccd982d4c3410b53f39df080f3cd1b761557f8e46dc96ab8aa"
39
39
  },
@@ -55,7 +55,7 @@
55
55
  "derive-output-view.d.ts": "9ca3c32ac65215bb85ae74b75121c55c2ac82d04d7754d38ebc0de94d3fa898a",
56
56
  "derive-output-view.js": "e54de4b2ece567a518d346cfd8d96fe2179f5a1fcf76cc6306c5222184e19b73",
57
57
  "dom.d.ts": "ae12ba88b9bf43bdc99a9c2ca8923764cf28e77d55b132a05dc5965cba34a6a5",
58
- "dom.js": "d878b9c62e1a52e3be73233b6c04721356b9a01746a4381de3e1a69511b3e194",
58
+ "dom.js": "34abeb3ddc82f43fb925fb8cc43ef5c9480fd97a12a8a56685ac21de7d676e1c",
59
59
  "execution-request.d.ts": "f8b68cf456bfbeb63a968378e5ccaef5f55a908022e323901668ca99ebe75a3a",
60
60
  "execution-request.js": "f32bd2e9de70dd9f243d08d0fce4898e847fa3d34d77d3376a1b3c5839edb611",
61
61
  "experience-orchestration.d.ts": "45fa9770a37acccaeb6e0f267e0a566c6d6cda6133d6e1077589859478effd77",
@@ -70,8 +70,8 @@
70
70
  "interaction-resolution.js": "498ea435bbb9ba0c814728664652491ba6c4be5c3407233984df4cf4f16103d7",
71
71
  "interface-transaction.d.ts": "e93b9188ebfd497a4ef180e31fb93b48052a25c5905bf94a6b018a41538f33ac",
72
72
  "interface-transaction.js": "9bf1a2bf576576ccb25d993581980e06280fa35107c96e49f962c47a72c1dbb3",
73
- "interface.d.ts": "f7e780ea478aff594de1fcbc34bed3f2239fd3f5bb8f8b6da289b86463f5cee2",
74
- "interface.js": "02885e7c3293fd2c9924472844bc5e5b88391ecf747c53ee756ce8be834bf24e",
73
+ "interface.d.ts": "5057a53586562989c93f7b08d30567c23f1e11fbd7c406f499d37c3ce86045ef",
74
+ "interface.js": "62310c7bb661799326439caee669522cc15e82d93419e6be125ebb9a834319dd",
75
75
  "output-presentation-suggestion-schema.d.ts": "88072dc37afeaab8ac05182b5d49fdf52099bbb18518ce2485feea476ea85895",
76
76
  "output-presentation-suggestion-schema.js": "708d2f821132978ba44a2e01812e41e3eec70266e5dbeb7053f55f88142ad634",
77
77
  "output-schema.d.ts": "8dbf090a79ab489e068e4a290dccd57e222c377f111d38e990308db8a3debca8",
@@ -88,8 +88,8 @@
88
88
  "relationship-interpretation.js": "36ad983eb699cc8c7f18ab0f3a1be15a246faf60fbb8ea535797997e0b82c434",
89
89
  "validate-application.d.ts": "9a3116542adeca8b0b31cb7583528964b363a105322383f7c86d96f410c675d2",
90
90
  "validate-application.js": "ddb309d298076d03ed6b9c7aa1464b0d3cad8073d559e5a434b89015e094d7cd",
91
- "validation-safety.d.ts": "b6804e34ee3d14011c8b40dd261394bda9fa533da19b6e96fd1f3b961655d2dc",
92
- "validation-safety.js": "c48df14e22c66c56741e79a7c43a9ebfc881c24b598746185dcd069d81141402",
91
+ "validation-safety.d.ts": "982baeb531088b5f6c42d479a087120f729badde20c09019d9a14091379c4823",
92
+ "validation-safety.js": "8a733af7fcfdd2cd327d9d445c813ebab8ae1f7a3c53a3865fa092667e1187ea",
93
93
  "workflow.d.ts": "de603bd1785ea75cb5f762a989c0c391498f5841aea4c279231495ba479dfc86",
94
94
  "workflow.js": "a79aad136d24613772dfff40373510b0f185a003956bd6de6c59f58d018fcf9e"
95
95
  }