← Back to PRs

#12596: fix(status): show third-party memory plugins as active instead of unavailable

by nhadaututtheky open 2026-02-09 10:49 View on GitHub →
commands stale
## Summary Fixes #7273 — `openclaw status` shows "unavailable" for working third-party memory plugins. **Root cause:** `status.scan.ts` line 157-158 has a hardcoded early return: ```typescript if (memoryPlugin.slot !== "memory-core") { return null; // null → renderer shows "unavailable" } ``` This PR replaces the early `return null` with a proper probe: 1. **If gateway is reachable**: Try `memory.status` RPC call to get entry count from the plugin 2. **If gateway is unreachable**: Return a minimal status object marking the plugin as active but unprobed ## Changes - **`src/commands/status.scan.ts`**: For non-core plugins, attempt gateway RPC `memory.status` probe. If that fails, return a minimal status object instead of `null`. - **`src/commands/status.command.ts`**: Detect plugin memory via `memoryPlugin.slot` (not `memory.files === 0`). Render "N entries" when probed or "active" when unprobed. ## Before ``` Memory │ enabled (plugin memory-lancedb) · unavailable ``` ## After ``` Memory │ active · plugin memory-lancedb ``` Or when the plugin implements `memory.status` gateway method: ``` Memory │ 345 entries · plugin memory-lancedb ``` ## Test plan - [x] `tsc --noEmit` — zero type errors - [x] `vitest run src/commands/status.test.ts` — 5/5 tests pass (existing tests cover core memory path) - [x] Manual: configure `plugins.slots.memory = "memory-lancedb"`, run `openclaw status` → should show "active" instead of "unavailable" - [ ] Manual: with core memory → output unchanged ## Notes - **Minimal scope**: 2 files, ~50 lines changed — intentionally scoped to ONLY the status rendering fix - **No new dependencies, no breaking changes** - **Aware of #7289**: That PR bundles 32 files including unrelated features. This PR is the minimal fix that solves the user-facing bug. <!-- greptile_comment --> <h2>Greptile Overview</h2> <h3>Greptile Summary</h3> This PR changes the status scan/rendering path for memory so that non-core (`plugins.slots.memory != "memory-core"`) plugins no longer show as “unavailable”. - In `src/commands/status.scan.ts`, the scanner now returns a minimal `MemoryProviderStatus` snapshot for third‑party plugins instead of `null`, optionally probing the gateway via `memory.status` to get an entry count. - In `src/commands/status.command.ts`, rendering is updated to treat non-core slots as plugin memory and display either `N entries` (when probed) or `active` (when unprobed), followed by `plugin <slot>`. Overall this keeps the existing core-memory status output intact while improving the UX for third-party memory plugins. <h3>Confidence Score: 3/5</h3> - This PR is likely safe to merge but has a couple of correctness risks in how plugin status is probed and rendered. - The changes are localized and don’t alter core-memory probing, but the new plugin probe path depends on `callGateway` defaults and a loosely-typed RPC response, which can lead to false “active”/entry counts or contradictory UI in misconfiguration scenarios. - src/commands/status.scan.ts, src/commands/status.command.ts <!-- greptile_other_comments_section --> <sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub> <!-- /greptile_comment -->

Most Similar PRs