@heretek-ai/openclaw 2026.3.27 → 2026.3.29
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/dist/.buildstamp +1 -1
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/chunks/command-registry-B9Orjysx.mjs +214 -0
- package/dist/chunks/command-registry-BtWKyYyZ.mjs +14 -0
- package/dist/chunks/completion-cli-B8M--XTS.mjs +448 -0
- package/dist/chunks/completion-cli-o3_a4BuE.mjs +17 -0
- package/dist/chunks/doctor-completion-CyOOf-GM.mjs +92 -0
- package/dist/chunks/gateway-cli-ZLRmdr6x.mjs +43508 -0
- package/dist/chunks/onboard-DqlCib9K.mjs +601 -0
- package/dist/chunks/program-Bg5zshJo.mjs +163 -0
- package/dist/chunks/prompt-select-styled-CxHtgKpu.mjs +5035 -0
- package/dist/chunks/register.maintenance-BdaRRBo0.mjs +685 -0
- package/dist/chunks/register.onboard-D128_sx4.mjs +168 -0
- package/dist/chunks/register.setup-BqV-_yA8.mjs +188 -0
- package/dist/chunks/register.subclis-BTo9umpR.mjs +13 -0
- package/dist/chunks/register.subclis-CVkk-8A3.mjs +319 -0
- package/dist/chunks/run-main-Rx8sfWSp.mjs +437 -0
- package/dist/chunks/setup-BY2mioiw.mjs +399 -0
- package/dist/chunks/setup.finalize-DvAFcLhU.mjs +544 -0
- package/dist/chunks/update-cli-B1-vpFz1.mjs +1632 -0
- package/dist/entry.mjs +1 -1
- package/dist/extensions/memory-core/index.mjs +40 -0
- package/dist/index.mjs +1 -1
- package/docs/DEPLOYMENT-BUGS.md +152 -0
- package/package.json +5 -5
package/dist/entry.mjs
CHANGED
|
@@ -204,7 +204,7 @@ function tryHandleRootHelpFastPath(argv, deps = {}) {
|
|
|
204
204
|
}
|
|
205
205
|
function runMainOrRootHelp(argv) {
|
|
206
206
|
if (tryHandleRootHelpFastPath(argv)) return;
|
|
207
|
-
import("./chunks/run-main-
|
|
207
|
+
import("./chunks/run-main-Rx8sfWSp.mjs").then(({ runCli }) => runCli(argv)).catch((error) => {
|
|
208
208
|
console.error("[openclaw] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
|
|
209
209
|
process$1.exitCode = 1;
|
|
210
210
|
});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { definePluginEntry } from "@heretek-ai/openclaw/plugin-sdk/plugin-entry";
|
|
2
|
+
|
|
3
|
+
//#region extensions/memory-core/index.ts
|
|
4
|
+
const buildPromptSection = ({ availableTools, citationsMode }) => {
|
|
5
|
+
const hasMemorySearch = availableTools.has("memory_search");
|
|
6
|
+
const hasMemoryGet = availableTools.has("memory_get");
|
|
7
|
+
if (!hasMemorySearch && !hasMemoryGet) return [];
|
|
8
|
+
let toolGuidance;
|
|
9
|
+
if (hasMemorySearch && hasMemoryGet) toolGuidance = "Before answering anything about prior work, decisions, dates, people, preferences, or todos: run memory_search on MEMORY.md + memory/*.md; then use memory_get to pull only the needed lines. If low confidence after search, say you checked.";
|
|
10
|
+
else if (hasMemorySearch) toolGuidance = "Before answering anything about prior work, decisions, dates, people, preferences, or todos: run memory_search on MEMORY.md + memory/*.md and answer from the matching results. If low confidence after search, say you checked.";
|
|
11
|
+
else toolGuidance = "Before answering anything about prior work, decisions, dates, people, preferences, or todos that already point to a specific memory file or note: run memory_get to pull only the needed lines. If low confidence after reading them, say you checked.";
|
|
12
|
+
const lines = ["## Memory Recall", toolGuidance];
|
|
13
|
+
if (citationsMode === "off") lines.push("Citations are disabled: do not mention file paths or line numbers in replies unless the user explicitly asks.");
|
|
14
|
+
else lines.push("Citations: include Source: <path#line> when it helps the user verify memory snippets.");
|
|
15
|
+
lines.push("");
|
|
16
|
+
return lines;
|
|
17
|
+
};
|
|
18
|
+
var memory_core_default = definePluginEntry({
|
|
19
|
+
id: "memory-core",
|
|
20
|
+
name: "Memory (Core)",
|
|
21
|
+
description: "File-backed memory search tools and CLI",
|
|
22
|
+
kind: "memory",
|
|
23
|
+
register(api) {
|
|
24
|
+
api.registerMemoryPromptSection(buildPromptSection);
|
|
25
|
+
api.registerTool((ctx) => api.runtime.tools.createMemorySearchTool({
|
|
26
|
+
config: ctx.config,
|
|
27
|
+
agentSessionKey: ctx.sessionKey
|
|
28
|
+
}), { names: ["memory_search"] });
|
|
29
|
+
api.registerTool((ctx) => api.runtime.tools.createMemoryGetTool({
|
|
30
|
+
config: ctx.config,
|
|
31
|
+
agentSessionKey: ctx.sessionKey
|
|
32
|
+
}), { names: ["memory_get"] });
|
|
33
|
+
api.registerCli(({ program }) => {
|
|
34
|
+
api.runtime.tools.registerMemoryCli(program);
|
|
35
|
+
}, { commands: ["memory"] });
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
export { buildPromptSection, memory_core_default as default };
|
package/dist/index.mjs
CHANGED
|
@@ -30,7 +30,7 @@ let saveSessionStore;
|
|
|
30
30
|
let toWhatsappJid;
|
|
31
31
|
let waitForever;
|
|
32
32
|
async function loadLegacyCliDeps() {
|
|
33
|
-
const [{ installGaxiosFetchCompat }, { runCli }] = await Promise.all([import("./chunks/gaxios-fetch-compat-CdH6FoIa.mjs"), import("./chunks/run-main-
|
|
33
|
+
const [{ installGaxiosFetchCompat }, { runCli }] = await Promise.all([import("./chunks/gaxios-fetch-compat-CdH6FoIa.mjs"), import("./chunks/run-main-Rx8sfWSp.mjs")]);
|
|
34
34
|
return {
|
|
35
35
|
installGaxiosFetchCompat,
|
|
36
36
|
runCli
|
package/docs/DEPLOYMENT-BUGS.md
CHANGED
|
@@ -328,3 +328,155 @@ node dist/entry.mjs gateway
|
|
|
328
328
|
**Affected:** TM-4 (fresh install)
|
|
329
329
|
|
|
330
330
|
The build's post-build staging script (`stage-bundled-plugin-runtime-deps.mjs`) uses `npm` directly, but the workspace `package.json` has `"packageManager": "pnpm@10.23.0"` which makes `npm` refuse to run in the project directory. Workaround: remove the `packageManager` field temporarily, run the build, then restore it. TM-1 has npm in root's PATH and doesn't hit this issue.
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## BUG-2026-03-24-C: memory-core Build Produces Mismatched Chunk Hashes
|
|
335
|
+
|
|
336
|
+
**Severity:** Critical (broke memory-core on all nodes)
|
|
337
|
+
**Found:** 2026-03-24 11:00 EDT
|
|
338
|
+
**Found during:** Post-reboot deployment verification after fixing sandbox exec
|
|
339
|
+
|
|
340
|
+
### Symptom
|
|
341
|
+
|
|
342
|
+
```
|
|
343
|
+
Error: Cannot find module '../plugin-entry-BNczxv7M.js'
|
|
344
|
+
plugin tool failed (memory-core): Error: Unable to resolve plugin runtime module
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Root Cause
|
|
348
|
+
|
|
349
|
+
Two separate issues:
|
|
350
|
+
|
|
351
|
+
1. **Workspace build doesn't compile `extensions/memory-core/index.ts`** — the `rolldown-build.mjs` script includes specific extension entry points but does NOT include `extensions/memory-core/index.ts` in its entry points. After `pnpm build`, the file `dist/extensions/memory-core/index.js` is missing.
|
|
352
|
+
|
|
353
|
+
2. **Hash regeneration on rebuild** — The `rolldown-build.mjs` generates hashed chunk filenames (e.g. `plugin-entry-BNczxv7M.js`) that change on every build. When we "fixed" issue #1 by copying `index.js` from the npm package (which was compiled from a previous build), the copied `index.js` referenced a hash that no longer exists in the current dist.
|
|
354
|
+
|
|
355
|
+
**Why 2026.3.26 worked but 2026.3.27/2026.3.28 broke:** The workspace at 2026.3.26 had matching chunk hashes between `dist/extensions/memory-core/index.js` and the dist chunks. When we bumped the version to 2026.3.27 and rebuilt, the hashes changed but the copied `index.js` still pointed to the old hash.
|
|
356
|
+
|
|
357
|
+
### Fix Applied (commit ea85fd4929)
|
|
358
|
+
|
|
359
|
+
1. Created `scripts/copy-memory-core-index.ts` — a post-build script that copies the `index.js` from the already-compiled npm package (which has matching hashes) into the workspace dist after each build.
|
|
360
|
+
|
|
361
|
+
2. **The 2026.3.28 npm package itself was BROKEN** — the `npm pack` produced a package with mismatched hashes. We reverted all nodes to 2026.3.26.
|
|
362
|
+
|
|
363
|
+
### Why 2026.3.26 is the Stable Version
|
|
364
|
+
|
|
365
|
+
The workspace at commit `8c105a767e` (version 2026.3.26) has:
|
|
366
|
+
|
|
367
|
+
- Matching chunk hashes between all dist files
|
|
368
|
+
- `scripts/copy-memory-core-index.ts` in place
|
|
369
|
+
- Working memory-core plugin
|
|
370
|
+
|
|
371
|
+
### Required Recovery Steps on Any Node
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
# If on broken version 2026.3.27 or 2026.3.28:
|
|
375
|
+
npm install -g @heretek-ai/openclaw@2026.3.26
|
|
376
|
+
|
|
377
|
+
# If gateway won't start (index.mjs vs index.js mismatch):
|
|
378
|
+
# Check /etc/systemd/system/openclaw-gateway.service or ~/.config/systemd/user/openclaw-gateway.service
|
|
379
|
+
# Change index.mjs → index.js if needed
|
|
380
|
+
systemctl --user daemon-reload
|
|
381
|
+
systemctl --user restart openclaw-gateway
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## BUG-2026-03-24-D: Exec Host Mismatch After Reboot
|
|
387
|
+
|
|
388
|
+
**Severity:** High (blocked all agent exec operations)
|
|
389
|
+
**Found:** 2026-03-24 10:15 EDT
|
|
390
|
+
**Found during:** Post-reboot verification
|
|
391
|
+
|
|
392
|
+
### Symptom
|
|
393
|
+
|
|
394
|
+
`exec` tool returned: `exec host not allowed (requested gateway; configure tools.exec.host=sandbox to allow.)`
|
|
395
|
+
|
|
396
|
+
### Root Cause
|
|
397
|
+
|
|
398
|
+
After a reboot, the `openclaw.json` had `tools.exec.host` set to `"gateway"` but this was not a valid value. The valid values are `"sandbox"`, `"gateway"`, or `"node"`. Actually the valid options for the location of exec are `sandbox` (default, containerized) vs `gateway` (runs on host). After the reboot, the sandbox runtime was re-established but exec was configured to try to run on the gateway host which required a config change.
|
|
399
|
+
|
|
400
|
+
### Fix Applied
|
|
401
|
+
|
|
402
|
+
Added to `agents.list[0].tools.exec.host` in `~/.openclaw/openclaw.json`:
|
|
403
|
+
|
|
404
|
+
```json
|
|
405
|
+
"exec": {
|
|
406
|
+
"host": "gateway"
|
|
407
|
+
}
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
This allows the exec tool to run on the gateway host (silica-animus) bypassing the container sandbox.
|
|
411
|
+
|
|
412
|
+
### Security Note
|
|
413
|
+
|
|
414
|
+
`tools.exec.security` is set to `"full"` which allows unrestricted exec. For production, should be `"allowlist"` with specific command restrictions.
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## BUG-2026-03-24-E: Discord Plugin Not Enabled by Default
|
|
419
|
+
|
|
420
|
+
**Severity:** Medium
|
|
421
|
+
**Found:** 2026-03-24 12:05 EDT
|
|
422
|
+
**Found during:** Triad Discord verification
|
|
423
|
+
|
|
424
|
+
### Symptom
|
|
425
|
+
|
|
426
|
+
`openclaw channels list` showed no Discord channel, but `openclaw logs` showed Discord `messageChannel=discord` in use (meaning the gateway WAS receiving Discord messages but not treating it as an active channel).
|
|
427
|
+
|
|
428
|
+
### Root Cause
|
|
429
|
+
|
|
430
|
+
The Discord plugin was installed but `enabled: false` in the config. The `openclaw channels list` command only shows channels that are both enabled in config AND the plugin is registered. TM-2/3 had Discord configured through a different mechanism (they had `channels.discord` entries with `enabled: true`).
|
|
431
|
+
|
|
432
|
+
### Fix Applied
|
|
433
|
+
|
|
434
|
+
```bash
|
|
435
|
+
openclaw plugins enable discord
|
|
436
|
+
# Then restart gateway
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
And added Discord config to TM-1's `openclaw.json` with the correct bot token.
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## BUG-2026-03-24-F: Gateway Service Uses index.mjs But Package Has index.js
|
|
444
|
+
|
|
445
|
+
**Severity:** High (prevents gateway from starting)
|
|
446
|
+
**Found:** 2026-03-24 12:01 EDT
|
|
447
|
+
**Found during:** TM-3 gateway restart after version change
|
|
448
|
+
|
|
449
|
+
### Symptom
|
|
450
|
+
|
|
451
|
+
```
|
|
452
|
+
Error: Cannot find module '/usr/lib/node_modules/@heretek-ai/openclaw/dist/index.mjs'
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
### Root Cause
|
|
456
|
+
|
|
457
|
+
The `~/.config/systemd/user/openclaw-gateway.service` on TM-3 pointed to `dist/index.mjs` but `@heretek-ai/openclaw@2026.3.26` only ships `dist/index.js` (the `.mjs` extension is used only in the workspace build, not in the published npm package).
|
|
458
|
+
|
|
459
|
+
### Fix Applied
|
|
460
|
+
|
|
461
|
+
```bash
|
|
462
|
+
sed -i 's|index.mjs|index.js|g' ~/.config/systemd/user/openclaw-gateway.service
|
|
463
|
+
systemctl --user daemon-reload
|
|
464
|
+
systemctl --user restart openclaw-gateway
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
## Triad Deployment Summary (2026-03-24)
|
|
470
|
+
|
|
471
|
+
| Node | Host | IP | Version | Discord | memory-core | Notes |
|
|
472
|
+
| ---- | --------------- | -------------- | --------- | --------- | ------------ | --------------------------------- |
|
|
473
|
+
| TM-1 | silica-animus | 192.168.31.99 | 2026.3.26 | ✅ active | ✅ 44 chunks | Sandbox exec: host=gateway |
|
|
474
|
+
| TM-2 | testbench | 192.168.31.209 | 2026.3.26 | — | ✅ dirty | First-run memory init pending |
|
|
475
|
+
| TM-3 | tabula-myriad-3 | 192.168.31.85 | 2026.3.26 | — | ✅ dirty | Service fixed: index.mjs→index.js |
|
|
476
|
+
| TM-4 | tabula-myriad-4 | 192.168.31.205 | 2026.3.26 | — | ✅ dirty | First-run memory init pending |
|
|
477
|
+
|
|
478
|
+
### Deployment Artifacts
|
|
479
|
+
|
|
480
|
+
- **Last stable version:** `2026.3.26` (commit `8c105a767e`)
|
|
481
|
+
- **Build fix committed:** `ea85fd4929` (copy-memory-core-index.ts + version bump to 2026.3.28 — but 2026.3.28 npm package is broken, use 2026.3.26)
|
|
482
|
+
- **NPM package status:** 2026.3.27 and 2026.3.28 are BROKEN due to chunk hash mismatch. Do NOT deploy them.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@heretek-ai/openclaw",
|
|
3
|
-
"version": "2026.3.
|
|
3
|
+
"version": "2026.3.29",
|
|
4
4
|
"description": "Liberated multi-channel AI agent gateway — Tabula Myriad triad fork",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent",
|
|
@@ -605,8 +605,8 @@
|
|
|
605
605
|
"android:test": "cd apps/android && ./gradlew :app:testPlayDebugUnitTest",
|
|
606
606
|
"android:test:integration": "OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_ANDROID_NODE=1 vitest run --config vitest.live.config.ts src/gateway/android-node.capabilities.live.test.ts",
|
|
607
607
|
"android:test:third-party": "cd apps/android && ./gradlew :app:testThirdPartyDebugUnitTest",
|
|
608
|
-
"build": "pnpm canvas:a2ui:bundle && node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-startup-metadata.ts && node --import tsx scripts/write-cli-compat.ts",
|
|
609
|
-
"build:docker": "node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-startup-metadata.ts && node --import tsx scripts/write-cli-compat.ts",
|
|
608
|
+
"build": "pnpm canvas:a2ui:bundle && node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-startup-metadata.ts && node --import tsx scripts/write-cli-compat.ts && node --import tsx scripts/copy-memory-core-index.ts",
|
|
609
|
+
"build:docker": "node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-startup-metadata.ts && node --import tsx scripts/write-cli-compat.ts && node --import tsx scripts/copy-memory-core-index.ts",
|
|
610
610
|
"build:plugin-sdk:dts": "tsc -p tsconfig.plugin-sdk.dts.json",
|
|
611
611
|
"build:strict-smoke": "pnpm canvas:a2ui:bundle && node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && pnpm build:plugin-sdk:dts",
|
|
612
612
|
"canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh",
|
|
@@ -787,6 +787,7 @@
|
|
|
787
787
|
"cli-highlight": "^2.1.11",
|
|
788
788
|
"commander": "^14.0.3",
|
|
789
789
|
"croner": "^10.0.1",
|
|
790
|
+
"discord-api-types": "^0.38.42",
|
|
790
791
|
"dotenv": "^17.3.1",
|
|
791
792
|
"express": "^5.2.1",
|
|
792
793
|
"file-type": "21.3.4",
|
|
@@ -812,8 +813,7 @@
|
|
|
812
813
|
"uuid": "^13.0.0",
|
|
813
814
|
"ws": "^8.20.0",
|
|
814
815
|
"yaml": "^2.8.3",
|
|
815
|
-
"zod": "^4.3.6"
|
|
816
|
-
"discord-api-types": "^0.38.42"
|
|
816
|
+
"zod": "^4.3.6"
|
|
817
817
|
},
|
|
818
818
|
"devDependencies": {
|
|
819
819
|
"@grammyjs/types": "^3.25.0",
|