@agentchatme/openclaw 0.6.3 → 0.6.5

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
@@ -5,6 +5,120 @@ All notable changes to `@agentchatme/openclaw` are documented here.
5
5
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/);
6
6
  this package adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## 0.6.5 — 2026-04-27
9
+
10
+ ### Fix: silence `without channelConfigs metadata` warning at install time
11
+
12
+ OpenClaw 2026.4.24+ emits a manifest-registry warning for community
13
+ channel-plugins that declare `channels` without a per-channel
14
+ `channelConfigs[channelId]` block:
15
+
16
+ ```
17
+ Config warnings:
18
+ - plugins.entries.agentchat: plugin agentchat: channel plugin manifest
19
+ declares agentchat without channelConfigs metadata; add
20
+ openclaw.plugin.json#channelConfigs so config schema and setup surfaces
21
+ work before runtime loads
22
+ ```
23
+
24
+ The warning was non-blocking on 0.6.4 — the install completed and
25
+ registered the plugin — but it surfaced on every install and indicated
26
+ that OpenClaw could not render the config form before loading our JS
27
+ runtime, defeating the "introspect schema before runtime loads" guarantee
28
+ that pre-runtime UI flows depend on. First-party in-tree plugins
29
+ (matrix/telegram/discord) sidestep this via the `collectBundledChannelConfigs`
30
+ auto-hydration path that runs only for `origin: "bundled"`; community
31
+ plugins loaded with `origin: "global"` need to hand-author the field.
32
+
33
+ **Changed:**
34
+
35
+ - `scripts/emit-manifest-schema.mjs` — now emits
36
+ `openclaw.plugin.json#channelConfigs.agentchat` with `schema` and
37
+ `uiHints` populated from the same runtime Zod export that drives
38
+ `configSchema`. Both surfaces are derived from the single source of
39
+ truth, so structural drift between them is impossible. Top-level
40
+ `configSchema` and `uiHints` stay populated for backward compatibility
41
+ with older OpenClaw versions that haven't been taught to prefer
42
+ `channelConfigs` yet.
43
+ - `tests/plugin.test.ts#manifest sync` — added a regression test
44
+ asserting `manifest.channelConfigs.agentchat.schema` matches
45
+ `manifest.configSchema` and that the per-field `uiHints` come along
46
+ with their labels intact.
47
+
48
+ **Why no change to the runtime:**
49
+
50
+ `channelConfigs` is a manifest-registry concern, not a runtime concern.
51
+ The runtime continues to consume the Zod schema directly via
52
+ `buildChannelConfigSchema(agentchatChannelConfigSchema, { uiHints })`.
53
+ No code paths under `src/` are touched.
54
+
55
+ ## 0.6.4 — 2026-04-27
56
+
57
+ ### Fix: `openclaw plugins install` failed at the persist step with `must have required property 'apiKey'`
58
+
59
+ After 0.6.3 unblocked the `npm install` phase, the next step in OpenClaw's
60
+ install pipeline — `persistPluginInstall`, which writes the plugin entry
61
+ into `~/.openclaw/openclaw.json` — failed with:
62
+
63
+ ```
64
+ [plugins] agentchat invalid config: apiKey: must have required property 'apiKey',
65
+ reconnect: must have required property 'reconnect', ping: ..., outbound: ...,
66
+ observability: must have required property 'observability'
67
+ ```
68
+
69
+ OpenClaw's manifest validator runs JSON Schema validation on the persisted
70
+ config block at install time, **before** the setup wizard runs. The
71
+ emitted `openclaw.plugin.json#configSchema` had `required: ['apiBase',
72
+ 'apiKey', 'reconnect', 'ping', 'outbound', 'observability']`, so the empty
73
+ config that ships with a fresh install was rejected outright. The plugin's
74
+ files landed on disk, but the entry was never registered, leaving the
75
+ install in a half-completed state.
76
+
77
+ The schema described the **fully-configured** shape, which is correct for
78
+ runtime ("apiKey is required to actually authenticate"), but is wrong for
79
+ install-time ("nothing is required yet — the wizard is about to run").
80
+ Two layers were doing the same job at the wrong time. The configured-state
81
+ predicate (`hasAgentChatConfiguredState`) already exists and gates the
82
+ runtime correctly: it returns `false` until both `apiKey` (≥ 20 chars) and
83
+ `agentHandle` are populated. OpenClaw uses that gate to decide whether to
84
+ start the channel runtime. The schema just needed to step out of the
85
+ install-time validation path.
86
+
87
+ **Changed:**
88
+
89
+ - `scripts/emit-manifest-schema.mjs` — post-process now drops the top-
90
+ level `required` array from `openclaw.plugin.json#configSchema` after
91
+ the runtime schema is emitted. Every individual property still keeps
92
+ its type, format, regex, and bounds — so a value supplied at the wrong
93
+ type still fails validation. Only the **presence** check at the top
94
+ level is removed. The Zod schema in `src/config-schema.ts` stays
95
+ strict (apiKey + nested groups required) because the runtime parser
96
+ is only called after `resolveAgentchatAccount` has confirmed the
97
+ config is non-empty; the empty install-time case bypasses Zod
98
+ entirely. We deliberately do NOT push `default: {}` onto the nested-
99
+ object subschemas because JSON Schema validators differ on whether
100
+ they descend into a defaulted object and revalidate its inner
101
+ `required` array — a permissive validator that auto-fills
102
+ `reconnect: {}` and then fails on the inner `required` would
103
+ reintroduce the install-time blocker.
104
+ - `tests/plugin.test.ts#manifest sync` — updated to mirror the new
105
+ transform (drop `required` from the expected manifest derivation) and
106
+ added a positive regression test that asserts
107
+ `manifest.configSchema.required` is `undefined`. A future commit that
108
+ reintroduces a top-level required array fails this test before
109
+ publish.
110
+
111
+ **Why no Zod change:**
112
+
113
+ The runtime parser (`parseChannelConfig`) is gated in
114
+ `resolveAgentchatAccount` — it's only called when the persisted config
115
+ section has at least one key. An empty install-time config block never
116
+ reaches Zod, so the runtime schema can stay strict without blocking
117
+ install. Once the setup wizard fills in `apiKey` (and optionally
118
+ `agentHandle`), the now-non-empty config block passes through Zod with
119
+ all the type, format, and bounds checks intact, the configured-state
120
+ predicate flips to `true`, and the runtime starts.
121
+
8
122
  ## 0.6.3 — 2026-04-27
9
123
 
10
124
  ### Fix: `openclaw plugins install` failed with `EUNSUPPORTEDPROTOCOL` on ClawHub source-linked builds
package/dist/index.cjs CHANGED
@@ -1804,7 +1804,7 @@ var CircuitBreaker = class {
1804
1804
  };
1805
1805
 
1806
1806
  // src/version.ts
1807
- var PACKAGE_VERSION = "0.6.3";
1807
+ var PACKAGE_VERSION = "0.6.5";
1808
1808
 
1809
1809
  // src/outbound.ts
1810
1810
  var DEFAULT_RETRY_POLICY = {