@totalreclaw/totalreclaw 3.3.0-rc.2 → 3.3.0-rc.3
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 +48 -0
- package/index.ts +6 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,54 @@ All notable changes to `@totalreclaw/totalreclaw` (the OpenClaw plugin) are docu
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [3.3.0-rc.3] — 2026-04-20
|
|
8
|
+
|
|
9
|
+
Third release candidate for 3.3.0. Sole change vs rc.2: adds the mandatory
|
|
10
|
+
`auth` field to the 4 `registerHttpRoute` calls that were silently dropped by
|
|
11
|
+
the OpenClaw 2026.4.2 loader. QR-pairing was end-to-end dead in rc.2 despite
|
|
12
|
+
the scanner and all other gates passing. See internal QA report at
|
|
13
|
+
`totalreclaw-internal#21`.
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- `skill/plugin/index.ts` — added `auth: 'gateway'` to all 4
|
|
18
|
+
`api.registerHttpRoute!({...})` calls (lines 2750–2753). OpenClaw 2026.4.2
|
|
19
|
+
introduced a mandatory `auth` field; registrations without it are silently
|
|
20
|
+
dropped at load time. Affected routes: `/pair/finish`, `/pair/start`,
|
|
21
|
+
`/pair/respond`, `/pair/status`. The plugin's `logger.info('registered 4
|
|
22
|
+
QR-pairing HTTP routes')` still fired in rc.2, masking the failure — only
|
|
23
|
+
surfaced when `GET /plugin/totalreclaw/pair/finish` fell through to the SPA
|
|
24
|
+
and `POST /pair/respond` returned 404.
|
|
25
|
+
- `skill/plugin/index.ts` `PluginApi` interface — `registerHttpRoute` param
|
|
26
|
+
type updated to include `auth: 'gateway' | 'plugin'` so TypeScript enforces
|
|
27
|
+
the field going forward.
|
|
28
|
+
|
|
29
|
+
**Before:**
|
|
30
|
+
```ts
|
|
31
|
+
api.registerHttpRoute!({ path: bundle.finishPath, handler: bundle.handlers.finish });
|
|
32
|
+
api.registerHttpRoute!({ path: bundle.startPath, handler: bundle.handlers.start });
|
|
33
|
+
api.registerHttpRoute!({ path: bundle.respondPath, handler: bundle.handlers.respond });
|
|
34
|
+
api.registerHttpRoute!({ path: bundle.statusPath, handler: bundle.handlers.status });
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**After:**
|
|
38
|
+
```ts
|
|
39
|
+
api.registerHttpRoute!({ path: bundle.finishPath, handler: bundle.handlers.finish, auth: 'gateway' });
|
|
40
|
+
api.registerHttpRoute!({ path: bundle.startPath, handler: bundle.handlers.start, auth: 'gateway' });
|
|
41
|
+
api.registerHttpRoute!({ path: bundle.respondPath, handler: bundle.handlers.respond, auth: 'gateway' });
|
|
42
|
+
api.registerHttpRoute!({ path: bundle.statusPath, handler: bundle.handlers.status, auth: 'gateway' });
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- `skill/plugin/pair-http-route-registration.test.ts` — new unit test (23
|
|
48
|
+
assertions) covering: 4 calls made, `auth` field present on every call,
|
|
49
|
+
`auth === 'gateway'`, paths contain `/pair/`, handlers are functions, all 4
|
|
50
|
+
endpoint segments covered (finish/start/respond/status), and no-throw when
|
|
51
|
+
`registerHttpRoute` is absent.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
7
55
|
## [3.3.0-rc.2] — 2026-04-20
|
|
8
56
|
|
|
9
57
|
Second release candidate for 3.3.0. Bundles the scanner false-positive
|
package/index.ts
CHANGED
|
@@ -214,6 +214,8 @@ interface OpenClawPluginApi {
|
|
|
214
214
|
registerHttpRoute?(params: {
|
|
215
215
|
path: string;
|
|
216
216
|
handler: (req: import('node:http').IncomingMessage, res: import('node:http').ServerResponse) => Promise<void> | void;
|
|
217
|
+
/** OpenClaw 2026.4.2+ — required; loader silently drops the route if absent. */
|
|
218
|
+
auth: 'gateway' | 'plugin';
|
|
217
219
|
}): void;
|
|
218
220
|
}
|
|
219
221
|
|
|
@@ -2745,10 +2747,10 @@ const plugin = {
|
|
|
2745
2747
|
return { state: 'active' };
|
|
2746
2748
|
},
|
|
2747
2749
|
});
|
|
2748
|
-
api.registerHttpRoute!({ path: bundle.finishPath, handler: bundle.handlers.finish });
|
|
2749
|
-
api.registerHttpRoute!({ path: bundle.startPath, handler: bundle.handlers.start });
|
|
2750
|
-
api.registerHttpRoute!({ path: bundle.respondPath, handler: bundle.handlers.respond });
|
|
2751
|
-
api.registerHttpRoute!({ path: bundle.statusPath, handler: bundle.handlers.status });
|
|
2750
|
+
api.registerHttpRoute!({ path: bundle.finishPath, handler: bundle.handlers.finish, auth: 'gateway' });
|
|
2751
|
+
api.registerHttpRoute!({ path: bundle.startPath, handler: bundle.handlers.start, auth: 'gateway' });
|
|
2752
|
+
api.registerHttpRoute!({ path: bundle.respondPath, handler: bundle.handlers.respond, auth: 'gateway' });
|
|
2753
|
+
api.registerHttpRoute!({ path: bundle.statusPath, handler: bundle.handlers.status, auth: 'gateway' });
|
|
2752
2754
|
api.logger.info('TotalReclaw: registered 4 QR-pairing HTTP routes');
|
|
2753
2755
|
} catch (err) {
|
|
2754
2756
|
const msg = err instanceof Error ? err.message : String(err);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@totalreclaw/totalreclaw",
|
|
3
|
-
"version": "3.3.0-rc.
|
|
3
|
+
"version": "3.3.0-rc.3",
|
|
4
4
|
"description": "End-to-end encrypted, agent-portable memory for OpenClaw and any LLM-agent runtime. XChaCha20-Poly1305 with protobuf v4 + on-chain Memory Taxonomy v1 (claim / preference / directive / commitment / episode / summary).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|