Skip to content

fix: installation failure — empty config rejected by schema (#33)#34

Open
contextablemark wants to merge 4 commits intomainfrom
fix/33-installation-failure
Open

fix: installation failure — empty config rejected by schema (#33)#34
contextablemark wants to merge 4 commits intomainfrom
fix/33-installation-failure

Conversation

@contextablemark
Copy link
Member

Summary

  • Config schema now accepts empty config: {} at install time by defaulting all SpiceDB fields (token defaults to "")
  • register() checks for empty token at startup and throws a clear error: "spicedb.token is not configured. Set it in plugins.entries.openclaw-memory-graphiti.config.spicedb.token in ~/.openclaw/openclaw.json"
  • Added temporary process.on('unhandledRejection') guard for grpc-js load balancer rejections that crash the gateway process during SpiceDB connection setup
  • Fixed Docker Compose FALKORDB_URI from host.docker.internal to falkordb service name

Fixes #33

Test plan

  • plugins install @contextableai/openclaw-memory-graphiti succeeds with empty config
  • Starting gateway without configuring token shows clear error message
  • Starting gateway with valid token connects to SpiceDB without crash
  • Docker Compose stack: graphiti-mcp connects to falkordb correctly

🤖 Generated with Claude Code

contextablemark and others added 4 commits February 11, 2026 17:06
…artup (#33)

Config schema now defaults all SpiceDB fields so `plugins install` can
write an empty config entry without validation failure. On startup,
register() checks for an empty token and throws a clear error directing
the user to configure it.

Also adds a temporary unhandledRejection guard for grpc-js load balancer
rejections that crash the process, and fixes the Docker Compose
FALKORDB_URI to use the correct service name.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The installer validates against openclaw.plugin.json's configSchema (ajv)
before the TypeScript parse() runs. The "required": ["spicedb"] and
"required": ["token"] entries caused install to fail with empty config.

Added 7 tests that load the actual openclaw.plugin.json and verify no
sub-schema has required fields, plus tests confirming TypeScript parse()
accepts the empty config: {} that the installer writes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The JSON Schema `required` fields cannot work with the current OpenClaw
installer — it validates `entry?.config ?? {}` against the schema, and
ajv has no `useDefaults`. The `required` enforcement lives in register()
at runtime instead, with an error message that shows the exact JSON
snippet to add.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The installer writes entries with no config key, so pluginConfig is
undefined at startup. parse() now treats undefined/null as {} (all
defaults with empty token) instead of throwing a generic "config
required" error. This lets the flow reach register() which shows
the exact JSON snippet to add to ~/.openclaw/openclaw.json.

Bumps to 0.2.6.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Installation failure

1 participant