From 719079581a4299a856289ab416158e438a887707 Mon Sep 17 00:00:00 2001 From: Alex Newman Date: Sat, 7 Feb 2026 18:49:47 -0500 Subject: [PATCH] MAESTRO: Add smoke test script for OpenClaw plugin registration validation Co-Authored-By: Claude Opus 4.6 --- openclaw/test-sse-consumer.js | 79 +++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 openclaw/test-sse-consumer.js diff --git a/openclaw/test-sse-consumer.js b/openclaw/test-sse-consumer.js new file mode 100644 index 00000000..b69a978d --- /dev/null +++ b/openclaw/test-sse-consumer.js @@ -0,0 +1,79 @@ +/** + * Smoke test for OpenClaw claude-mem plugin registration. + * Validates the plugin structure works independently of the full OpenClaw runtime. + * + * Run: node test-sse-consumer.js + */ + +import claudeMemPlugin from "./dist/index.js"; + +let registeredService = null; +let registeredCommand = null; +const logs = []; + +const mockApi = { + getConfig: () => ({}), + log: (message) => { + logs.push(message); + }, + registerService: (service) => { + registeredService = service; + }, + registerCommand: (command) => { + registeredCommand = command; + }, + runtime: { + channel: { + telegram: { sendMessageTelegram: async () => {} }, + discord: { sendMessageDiscord: async () => {} }, + signal: { sendMessageSignal: async () => {} }, + slack: { sendMessageSlack: async () => {} }, + whatsapp: { sendMessageWhatsApp: async () => {} }, + line: { sendMessageLine: async () => {} }, + }, + }, +}; + +// Call the default export with mock API +claudeMemPlugin(mockApi); + +// Verify service registration +let failures = 0; + +if (!registeredService) { + console.error("FAIL: No service was registered"); + failures++; +} else if (registeredService.id !== "claude-mem-observation-feed") { + console.error( + `FAIL: Service ID is "${registeredService.id}", expected "claude-mem-observation-feed"` + ); + failures++; +} else { + console.log("OK: Service registered with id 'claude-mem-observation-feed'"); +} + +if (!registeredCommand) { + console.error("FAIL: No command was registered"); + failures++; +} else if (registeredCommand.name !== "claude-mem-feed") { + console.error( + `FAIL: Command name is "${registeredCommand.name}", expected "claude-mem-feed"` + ); + failures++; +} else { + console.log("OK: Command registered with name 'claude-mem-feed'"); +} + +if (!logs.some((l) => l.includes("plugin loaded"))) { + console.error("FAIL: Plugin did not log a load message"); + failures++; +} else { + console.log("OK: Plugin logged load message"); +} + +if (failures > 0) { + console.error(`\nFAIL: ${failures} check(s) failed`); + process.exit(1); +} else { + console.log("\nPASS: Plugin registers service and command correctly"); +}