nexu-e2e-test

Installation
SKILL.md

Nexu E2E Testing — OpenClaw Gateway

Run end-to-end verification of the Nexu → OpenClaw gateway stack locally.

Known Constraints

The OpenClaw gateway has architectural constraints that block naive E2E approaches. Read this before attempting any gateway testing.

Approach Blocker Status
HTTP POST /v1/chat/completions Endpoint exists (openai-http.ts) but uses agentCommand() — same embedded agent path as CLI, bypasses session store Works for smoke tests (same as CLI)
HTTP POST /v1/responses Endpoint exists (openresponses-http.ts) but also uses agentCommand() Works for smoke tests (same as CLI)
WebSocket chat.send Requires device pairing for operator.write scope — clearUnboundScopes() in message-handler.ts:483-488 clears all self-declared scopes without device identity Dead end without device keys
openclaw agent --session-id Uses embedded agent path (sessionKey=unknown), bypasses session store cache Works for smoke tests, NOT for session-store bugs
Direct module import from dist Rollup bundles with hashed filenames, can't import individual modules Dead end
tsx from /tmp Module resolution fails for imports outside project root Dead end
Vitest in-project .test.ts Full module resolution, mocking, TypeScript support Primary method

Key insight: All HTTP and CLI approaches use the embedded agent path via agentCommand() (imported from commands/agent.js). Only messages arriving through connected channels (Slack/Discord) go through dispatchInboundMessage() → auto-reply pipeline → ensureSkillSnapshot(), which is the code path that uses the session store.

Installs
2
Repository
nexu-io/nexu
GitHub Stars
3.2K
First Seen
Jun 5, 2026
nexu-e2e-test — nexu-io/nexu