@totalreclaw/totalreclaw 3.3.7-rc.2 → 3.3.7-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 +15 -0
- package/SKILL.md +1 -1
- package/openclaw.plugin.json +21 -0
- package/package.json +1 -1
- package/skill.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,21 @@ 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.7-rc.3] — 2026-05-04
|
|
8
|
+
|
|
9
|
+
Root cause of tool-binding gap on OpenClaw 2026.5.2: the plugin manifest (`openclaw.plugin.json`) was missing the `contracts.tools` declaration that OpenClaw 2026.5.2 now requires before any non-bundled plugin may register agent tools. Without it, every `api.registerTool()` call is silently rejected — `openclaw plugins doctor` shows 17× "plugin must declare contracts.tools before registering agent tools". The gateway loads the plugin module (ESM import succeeds, `plugins.allow` check passes) but no tools bind to any session, so `totalreclaw_pair` / `totalreclaw_remember` / etc. are invisible to the agent and auto-QA step 1 fails.
|
|
10
|
+
|
|
11
|
+
The `plugins.allow` warning ("plugins.allow is empty; discovered non-bundled plugins may auto-load: totalreclaw") is a separate UX issue logged by the discoveryLoader when `plugins.allow` is absent — it is informational and does NOT prevent loading; the actual block is `contracts.tools`. Setting `plugins.allow=["totalreclaw"]` via `openclaw config set` is still recommended to suppress the noisy warning for users who follow the install guide, but it is not the root fix. See NOTE below.
|
|
12
|
+
|
|
13
|
+
### Fixed — add `contracts.tools` to plugin manifest (issue #87 / FR #72097 tool-binding race)
|
|
14
|
+
|
|
15
|
+
**Root cause:** OpenClaw 2026.5.2 (image `openclaw-qa:2026.5.2`) enforced a new security gate: non-bundled plugins must declare `contracts.tools` — an explicit allowlist of tool names — in their `openclaw.plugin.json` before registering any agent tool. Plugins that omit the field have every `registerTool` call silently dropped. The gate did not exist in ≤2026.4.24 (the version the plugin was built against), so the gap only surfaced when the QA container was upgraded.
|
|
16
|
+
|
|
17
|
+
**Fix:** added `contracts.tools` to `skill/plugin/openclaw.plugin.json` listing all 17 tool names the plugin registers:
|
|
18
|
+
`totalreclaw_remember`, `totalreclaw_recall`, `totalreclaw_forget`, `totalreclaw_export`, `totalreclaw_status`, `totalreclaw_preload_embedder`, `totalreclaw_consolidate`, `totalreclaw_pin`, `totalreclaw_unpin`, `totalreclaw_retype`, `totalreclaw_set_scope`, `totalreclaw_import_from`, `totalreclaw_import_batch`, `totalreclaw_upgrade`, `totalreclaw_migrate`, `totalreclaw_pair`, `totalreclaw_report_qa_bug`.
|
|
19
|
+
|
|
20
|
+
**NOTE — `plugins.allow` side-effect:** OpenClaw 2026.5.2 also emits `plugins.allow is empty; discovered non-bundled plugins may auto-load: totalreclaw` as an INFO log whenever a session starts and `plugins.allow` is unset. The plugin install step (`openclaw plugins install @totalreclaw/totalreclaw@<ver>`) does NOT automatically add the plugin to `plugins.allow`. As a consequence, users who follow the public install guide hit this noisy warning every session. The `contracts.tools` fix resolves tool binding; the `plugins.allow` warning requires either (a) an upstream OpenClaw change to auto-populate `plugins.allow` on `plugins install`, or (b) adding `openclaw config set plugins.allow '["totalreclaw"]'` to the install guide as a one-time post-install step. Tracked as FR upstream; the setup guide has been updated to include the config set step.
|
|
21
|
+
|
|
7
22
|
## [3.3.7-rc.2] — 2026-05-04
|
|
8
23
|
|
|
9
24
|
Follow-up to 3.3.7-rc.1, caught in Pedro's manual integration testing on the OpenClaw side 2026-05-03. The 5-tier auth fix shipped DEAD-CODE in rc.1: gateway logs surfaced `[gateway] [plugins] command registration failed: Command name "restart" is reserved by a built-in command (plugin=totalreclaw, source=/home/pdiogo/.openclaw/extensions/totalreclaw/dist/index.js)`. The plugin's `/restart` registration was rejected because OpenClaw's plugin registry hard-rejects `restart` (and the rest of `RESERVED_COMMANDS` — see `node_modules/openclaw/dist/registry-*.js` — `help`, `commands`, `status`, `whoami`, `context`, `stop`, `restart`, `reset`, `new`, `compact`, `config`, `debug`, `allowlist`, `activation`, `skill`, `subagents`, `kill`, `steer`, `tell`, `model`, `models`, `queue`, `send`, `bash`, `exec`, `think`, `verbose`, `reasoning`, `elevated`, `usage`). Built-in `/restart` retains its allow-from-only semantics, which is what gave Pedro the original "You are not authorized" — and our 5-tier fallback never ran because plugin registration never succeeded.
|
package/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: totalreclaw
|
|
3
3
|
description: "Install + set up TotalReclaw encrypted memory for OpenClaw, then use totalreclaw_remember / totalreclaw_recall. Trigger on 'install TotalReclaw', 'set up TotalReclaw', 'restore my recovery phrase', or any remember / recall request."
|
|
4
|
-
version: 3.3.7-rc.
|
|
4
|
+
version: 3.3.7-rc.3
|
|
5
5
|
author: TotalReclaw Team
|
|
6
6
|
license: MIT
|
|
7
7
|
homepage: https://totalreclaw.xyz
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,6 +2,27 @@
|
|
|
2
2
|
"id": "totalreclaw",
|
|
3
3
|
"name": "TotalReclaw",
|
|
4
4
|
"description": "End-to-end encrypted memory vault for AI agents",
|
|
5
|
+
"contracts": {
|
|
6
|
+
"tools": [
|
|
7
|
+
"totalreclaw_remember",
|
|
8
|
+
"totalreclaw_recall",
|
|
9
|
+
"totalreclaw_forget",
|
|
10
|
+
"totalreclaw_export",
|
|
11
|
+
"totalreclaw_status",
|
|
12
|
+
"totalreclaw_preload_embedder",
|
|
13
|
+
"totalreclaw_consolidate",
|
|
14
|
+
"totalreclaw_pin",
|
|
15
|
+
"totalreclaw_unpin",
|
|
16
|
+
"totalreclaw_retype",
|
|
17
|
+
"totalreclaw_set_scope",
|
|
18
|
+
"totalreclaw_import_from",
|
|
19
|
+
"totalreclaw_import_batch",
|
|
20
|
+
"totalreclaw_upgrade",
|
|
21
|
+
"totalreclaw_migrate",
|
|
22
|
+
"totalreclaw_pair",
|
|
23
|
+
"totalreclaw_report_qa_bug"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
5
26
|
"configSchema": {
|
|
6
27
|
"type": "object",
|
|
7
28
|
"additionalProperties": false,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@totalreclaw/totalreclaw",
|
|
3
|
-
"version": "3.3.7-rc.
|
|
3
|
+
"version": "3.3.7-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": [
|
package/skill.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "totalreclaw",
|
|
3
|
-
"version": "3.3.7-rc.
|
|
3
|
+
"version": "3.3.7-rc.3",
|
|
4
4
|
"description": "End-to-end encrypted memory for AI agents — portable, yours forever. XChaCha20-Poly1305 E2EE: server never sees plaintext.",
|
|
5
5
|
"author": "TotalReclaw Team",
|
|
6
6
|
"license": "MIT",
|