@heretek-ai/openclaw 2026.3.28 → 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/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-B59r-JDD.mjs").then(({ runCli }) => runCli(argv)).catch((error) => {
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-B59r-JDD.mjs")]);
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
@@ -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.28",
3
+ "version": "2026.3.29",
4
4
  "description": "Liberated multi-channel AI agent gateway — Tabula Myriad triad fork",
5
5
  "keywords": [
6
6
  "agent",
@@ -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",