openclaw - ✅(Solved) Fix [UX]: error response is not actionable when is missing — wrong root cause diagnosis and no resolution path [2 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#59457Fetched 2026-04-08 02:24:54
View on GitHub
Comments
0
Participants
1
Timeline
8
Reactions
0
Author
Participants
Timeline (top)
cross-referenced ×5referenced ×3

When memory_search fails due to a missing node:sqlite module, it returns a raw low-level error object. The error message is not actionable, and the action field gives generic advice that does not help users resolve the issue.

Error Message

When memory_search fails due to a missing node:sqlite module, it returns a raw low-level error object. The error message is not actionable, and the action field gives generic advice that does not help users resolve the issue.

Actual Error Response (verbatim)

"error": "SQLite support is unavailable in this Node runtime (missing node:sqlite). No such built-in module: node:sqlite", "warning": "Memory search is unavailable due to an embedding/provider error.", 2. No Node version information: The error does not tell users what Node version is required or whether the current version supports node:sqlite. 3. Conflates two different problems: "embedding/provider error" implies an API key or network issue. Missing node:sqlite is a Node build/runtime issue — completely different root cause. Return a more actionable error: "error": "node:sqlite module is not available in this Node.js runtime.",

Root Cause

  1. action is wrong: "Check embedding provider configuration" is misleading. The actual issue is Node runtime compatibility, not embedding provider config.
  2. No Node version information: The error does not tell users what Node version is required or whether the current version supports node:sqlite.
  3. Conflates two different problems: "embedding/provider error" implies an API key or network issue. Missing node:sqlite is a Node build/runtime issue — completely different root cause.

Fix Action

Fixed

PR fix notes

PR #59479: fix: actionable error message for missing node:sqlite (#59457)

Description (problem / solution / changelog)

Summary

  • Detects node:sqlite-related errors in buildMemorySearchUnavailableResult and returns a targeted warning/action directing users to upgrade to Node.js 22.5.0+
  • Refactors the existing quota/generic ternary into a clearer if/else chain with a shared lowerReason variable
  • Adds test covering the new SQLite unavailable path

Fixes #59457

🤖 AI-assisted (Claude Code). Fully tested. I understand what the code does.

Changes

FileChange
extensions/memory-core/src/tools.shared.tsAdd isSqliteError detection branch with actionable warning/action
extensions/memory-core/src/tools.test.tsAdd test for node:sqlite unavailable error path

Test plan

  • New test returns actionable metadata for missing node:sqlite added
  • Existing quota and generic error tests still pass
  • Manual: trigger a node:sqlite import failure and verify user-facing message

Changed files

  • extensions/memory-core/src/tools.shared.ts (modified, +17/-7)
  • extensions/memory-core/src/tools.test.ts (modified, +19/-0)

PR #59488: fix(cli): improve memory_search error message with actionable guidance

Description (problem / solution / changelog)

Summary

When memory_search fails (e.g. due to missing node:sqlite), the error response contains a non-actionable message that misdiagnoses the root cause.

This PR improves the error message to surface the actual underlying error and suggest a concrete remediation path.

Fixes #59457

Changed files

  • extensions/memory-core/src/tools.shared.ts (modified, +8/-2)
  • extensions/memory-core/src/tools.test.ts (modified, +19/-0)

Code Example

{
  "results": [],
  "disabled": true,
  "unavailable": true,
  "error": "SQLite support is unavailable in this Node runtime (missing node:sqlite). No such built-in module: node:sqlite",
  "warning": "Memory search is unavailable due to an embedding/provider error.",
  "action": "Check embedding provider configuration and retry memory_search."
}

---

{
  "results": [],
  "disabled": true,
  "unavailable": true,
  "error": "node:sqlite module is not available in this Node.js runtime.",
  "context": {
    "nodeVersion": "v22.12.0",
    "requirement": "Node 22.5+ compiled with SQLite support",
    "docLink": "https://docs.openclaw.ai/memory/setup"
  },
  "action": "Ensure your Node.js binary is compiled with SQLite support, or use a pre-built OpenClaw distribution. See: https://docs.openclaw.ai/memory/setup"
}
RAW_BUFFERClick to expand / collapse

Summary

When memory_search fails due to a missing node:sqlite module, it returns a raw low-level error object. The error message is not actionable, and the action field gives generic advice that does not help users resolve the issue.

Actual Error Response (verbatim)

{
  "results": [],
  "disabled": true,
  "unavailable": true,
  "error": "SQLite support is unavailable in this Node runtime (missing node:sqlite). No such built-in module: node:sqlite",
  "warning": "Memory search is unavailable due to an embedding/provider error.",
  "action": "Check embedding provider configuration and retry memory_search."
}

Problems With Current Response

  1. action is wrong: "Check embedding provider configuration" is misleading. The actual issue is Node runtime compatibility, not embedding provider config.
  2. No Node version information: The error does not tell users what Node version is required or whether the current version supports node:sqlite.
  3. Conflates two different problems: "embedding/provider error" implies an API key or network issue. Missing node:sqlite is a Node build/runtime issue — completely different root cause.

Data

Observed on: Node v22.12.0 in a Linux sandbox environment. According to Node.js docs, node:sqlite was stabilized in Node 22.5.0 but requires the Node binary to be compiled with SQLite support — which is not guaranteed in all environments (e.g. minimal Docker images, some cloud sandboxes).

Proposed Improvement

Return a more actionable error:

{
  "results": [],
  "disabled": true,
  "unavailable": true,
  "error": "node:sqlite module is not available in this Node.js runtime.",
  "context": {
    "nodeVersion": "v22.12.0",
    "requirement": "Node 22.5+ compiled with SQLite support",
    "docLink": "https://docs.openclaw.ai/memory/setup"
  },
  "action": "Ensure your Node.js binary is compiled with SQLite support, or use a pre-built OpenClaw distribution. See: https://docs.openclaw.ai/memory/setup"
}

Additionally, consider emitting a one-time startup warning when node:sqlite is unavailable, so users know upfront that memory search is disabled before they rely on it.

extent analysis

TL;DR

To fix the memory_search failure due to a missing node:sqlite module, ensure your Node.js binary is compiled with SQLite support or use a pre-built OpenClaw distribution.

Guidance

  • Verify your Node.js version is 22.5 or higher, as node:sqlite was stabilized in this version.
  • Check if your Node.js binary was compiled with SQLite support, which is required for node:sqlite to work.
  • Consider using a pre-built OpenClaw distribution that includes SQLite support to avoid compilation issues.
  • Emit a one-time startup warning when node:sqlite is unavailable to inform users that memory search is disabled.

Example

A more actionable error response, as proposed, could look like this:

{
  "results": [],
  "disabled": true,
  "unavailable": true,
  "error": "node:sqlite module is not available in this Node.js runtime.",
  "context": {
    "nodeVersion": "v22.12.0",
    "requirement": "Node 22.5+ compiled with SQLite support",
    "docLink": "https://docs.openclaw.ai/memory/setup"
  },
  "action": "Ensure your Node.js binary is compiled with SQLite support, or use a pre-built OpenClaw distribution. See: https://docs.openclaw.ai/memory/setup"
}

Notes

The availability of node:sqlite depends on the Node.js version and whether the binary was compiled with SQLite support. This solution may not apply to environments where the Node.js binary cannot be modified or updated.

Recommendation

Apply the workaround by using a pre-built OpenClaw distribution that includes SQLite support, as this is a more reliable solution than relying on the availability of node:sqlite in the Node.js runtime.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING