@openclaw/gateway-protocol 2026.8.1 → 2026.8.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/README.md CHANGED
@@ -23,10 +23,18 @@ protocol-version decision and coordinated client follow-through. See
23
23
 
24
24
  ## Install
25
25
 
26
+ Use the verified stable release with an exact pin:
27
+
26
28
  ```bash
27
- npm install @openclaw/gateway-protocol
29
+ npm install --save-exact @openclaw/gateway-protocol@2026.8.1
28
30
  ```
29
31
 
32
+ This release declares Node.js `>=22.19.0`. See the canonical
33
+ [installation guide](https://docs.openclaw.ai/gateway/clients#install-the-packages)
34
+ for the matching client package, package/wire-version rules, and recovery from
35
+ reserved `0.0.0` artifacts. Test it with the Gateway version you deploy; the root
36
+ `openclaw` CLI has its own package versions and dist-tags.
37
+
30
38
  ## Entry points
31
39
 
32
40
  - `@openclaw/gateway-protocol` exports runtime validators, selected schemas, error
@@ -144,9 +152,12 @@ boundary before reading nested values.
144
152
 
145
153
  ### Machine-readable schema
146
154
 
147
- `protocol.schema.json` ships in the npm tarball as the generated machine-readable
155
+ [`protocol.schema.json`](https://unpkg.com/@openclaw/gateway-protocol@2026.8.1/protocol.schema.json)
156
+ ships in the npm tarball as the generated machine-readable
148
157
  contract. It contains the frame union, named schema definitions, and core method
149
158
  metadata. It is generated during `prepack` and is not committed to the repository.
159
+ Download it as a file; `@openclaw/gateway-protocol/protocol.schema.json` is not an
160
+ exported package import subpath.
150
161
 
151
162
  ### Method discovery
152
163
 
@@ -35,7 +35,8 @@ const LEGACY_MISSING_SCOPE_PATTERN = /\bmissing scope:\s*([a-z0-9._-]+)/i;
35
35
  const SHA256_PATTERN = /^[a-fA-F0-9]{64}$/;
36
36
  /** Reads a typed cron lookup miss without parsing operator-facing prose. */
37
37
  function readCronJobNotFoundError(error) {
38
- const details = asNullableRecord(asNullableRecord(error)?.details);
38
+ const record = asNullableRecord(error);
39
+ const details = asNullableRecord(record?.details);
39
40
  if (details?.code !== GatewayErrorDetailCodes.CRON_JOB_NOT_FOUND) return null;
40
41
  const jobId = typeof details.jobId === "string" ? details.jobId.trim() : "";
41
42
  return jobId ? {
@@ -53,7 +54,8 @@ function buildSkillProposalRevisionChangedErrorDetails(params) {
53
54
  }
54
55
  /** Reads a stale Skill Workshop decision without parsing operator-facing prose. */
55
56
  function readSkillProposalRevisionChangedError(error) {
56
- const details = asNullableRecord(asNullableRecord(error)?.details);
57
+ const record = asNullableRecord(error);
58
+ const details = asNullableRecord(record?.details);
57
59
  if (details?.code !== GatewayErrorDetailCodes.SKILL_PROPOSAL_REVISION_CHANGED) return null;
58
60
  const expectedRevisionHash = typeof details.expectedRevisionHash === "string" ? details.expectedRevisionHash : "";
59
61
  const currentRevisionHash = typeof details.currentRevisionHash === "string" ? details.currentRevisionHash : "";
@@ -77,7 +79,8 @@ function readMissingScopeErrorDetails(details) {
77
79
  };
78
80
  }
79
81
  function isMcpAppViewExpiredError(error) {
80
- return asNullableRecord(asNullableRecord(error)?.details)?.code === GatewayErrorDetailCodes.MCP_APP_VIEW_EXPIRED;
82
+ const record = asNullableRecord(error);
83
+ return asNullableRecord(record?.details)?.code === GatewayErrorDetailCodes.MCP_APP_VIEW_EXPIRED;
81
84
  }
82
85
  /**
83
86
  * Reads a method-level missing-scope failure, preferring structured details.