diff --git a/plugins/openclaw/openclaw.plugin.json b/plugins/openclaw/openclaw.plugin.json index 1bd950cd..c4a7928b 100644 --- a/plugins/openclaw/openclaw.plugin.json +++ b/plugins/openclaw/openclaw.plugin.json @@ -211,7 +211,7 @@ "type": "array", "items": { "type": "string", - "enum": ["profile", "semantic", "procedural", "working", "tool_result"] + "enum": ["profile", "semantic", "episodic", "procedural", "working", "tool_result"] } }, "observeTailMessages": { diff --git a/plugins/openclaw/openclaw/__tests__/config.test.ts b/plugins/openclaw/openclaw/__tests__/config.test.ts index 6415f239..dc0c5913 100644 --- a/plugins/openclaw/openclaw/__tests__/config.test.ts +++ b/plugins/openclaw/openclaw/__tests__/config.test.ts @@ -2,6 +2,7 @@ * Group 1: Config & Onboarding * "Can a user configure the plugin correctly?" */ +import { readFileSync } from "node:fs"; import { describe, it, expect, beforeEach, afterEach } from "vitest"; import { parseMemoriaPluginConfig, @@ -170,4 +171,22 @@ describe("Group 1: Config & Onboarding", () => { memoriaRoot: "/opt/memoria", })).not.toThrow(); }); + + it("1.19 accepts episodic memories in retrieval filters", () => { + const config = parseMemoriaPluginConfig({ + retrieveMemoryTypes: ["episodic"], + }); + + expect(config.retrieveMemoryTypes).toEqual(["episodic"]); + }); + + it("1.20 advertises episodic retrieval filters in the plugin manifest", () => { + const manifest = JSON.parse( + readFileSync(new URL("../../openclaw.plugin.json", import.meta.url), "utf8"), + ); + + expect( + manifest.configSchema.properties.retrieveMemoryTypes.items.enum, + ).toContain("episodic"); + }); }); diff --git a/plugins/openclaw/openclaw/config.ts b/plugins/openclaw/openclaw/config.ts index cb5b28e6..596edb6f 100644 --- a/plugins/openclaw/openclaw/config.ts +++ b/plugins/openclaw/openclaw/config.ts @@ -3,6 +3,7 @@ import type { OpenClawPluginConfigSchema } from "openclaw/plugin-sdk"; export const MEMORIA_MEMORY_TYPES = [ "profile", "semantic", + "episodic", "procedural", "working", "tool_result",