diff --git a/README.md b/README.md index 59d6fbb..fec2ffb 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,12 @@ cd cortex && npm install --omit=dev | `autoRecall` | `boolean` | `true` | Retrieve relevant memories before each agent turn | | `autoCapture` | `boolean` | `true` | Extract and store memories after each agent turn | | `shadowMode` | `boolean` | `false` | Dry-run mode — runs extraction but skips storage | +| `gbrainShadowEnabled` | `boolean` | `false` | Enable observe-only GBrain shadow v1 scaffolding | +| `gbrainShadowCapture` | `boolean` | `true` | Log what GBrain shadow would process on end-of-turn capture | +| `gbrainShadowRecall` | `boolean` | `true` | Log what GBrain shadow would contribute on recall | +| `gbrainShadowLogEnabled` | `boolean` | `true` | Persist structured timestamped shadow logs under `dist/logs/` | +| `gbrainShadowProviderBaseUrl` | `string` | `https://api.minimax.io/v1` | Base URL for MiniMax full-model observe-only path | +| `gbrainShadowModel` | `string` | `MiniMax-M2.7` | Model name used in GBrain shadow log metadata | | `retrievalBudget` | `number` | `2000` | Max token budget for retrieved memories | | `maxInjectionChars` | `number` | `8000` | Max characters injected into agent context | | `retrievalMode` | `string` | `fast` | Retrieval mode: `auto`, `fast`, or `thorough` | @@ -126,6 +132,10 @@ Cortex operates two invisible loops around every agent conversation: Memories include metadata (dates, salience, categories) and are deduplicated, contradiction-checked, and relevance-scored at retrieval time. +## GBrain Shadow v1 + +This plugin now includes a narrow, safe GBrain shadow scaffold. When `gbrainShadowEnabled` is on, Cortex keeps authoritative recall/capture behavior unchanged and only writes observe-only JSONL log entries describing what a GBrain layer would have seen or contributed. Logs are timestamped, capped, and include MiniMax provider metadata so you can wire a full-model path later without taking over the hot path. + ## Benchmarks > 🚧 **Benchmarks coming soon.** We're running evaluations against [LoCoMo](https://github.com/snap-research/locomo), [AMB](https://github.com/microsoft/AMB), and [MSC](https://github.com/facebookresearch/ParlAI/tree/main/projects/msc) — the standard long-term memory benchmarks for conversational AI. diff --git a/dist/__tests__/gbrain-shadow.test.d.ts b/dist/__tests__/gbrain-shadow.test.d.ts new file mode 100644 index 0000000..b57ed88 --- /dev/null +++ b/dist/__tests__/gbrain-shadow.test.d.ts @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=gbrain-shadow.test.d.ts.map \ No newline at end of file diff --git a/dist/__tests__/gbrain-shadow.test.d.ts.map b/dist/__tests__/gbrain-shadow.test.d.ts.map new file mode 100644 index 0000000..d98efe4 --- /dev/null +++ b/dist/__tests__/gbrain-shadow.test.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"gbrain-shadow.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/gbrain-shadow.test.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/__tests__/gbrain-shadow.test.js b/dist/__tests__/gbrain-shadow.test.js new file mode 100644 index 0000000..51aec2c --- /dev/null +++ b/dist/__tests__/gbrain-shadow.test.js @@ -0,0 +1,60 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const strict_1 = __importDefault(require("node:assert/strict")); +const index_1 = require("../index"); +{ + const cfg = (0, index_1.parseEvaMemoryConfig)({ + gbrainShadowEnabled: true, + gbrainShadowProviderBaseUrl: "https://minimax.example/v1", + gbrainShadowModel: "MiniMax-M2.7-full", + gbrainShadowMaxPromptChars: 12, + }); + strict_1.default.equal(cfg.gbrainShadowEnabled, true); + strict_1.default.equal(cfg.gbrainShadowProviderBaseUrl, "https://minimax.example/v1"); + strict_1.default.equal(cfg.gbrainShadowModel, "MiniMax-M2.7-full"); +} +{ + const event = (0, index_1.createGBrainShadowEvent)({ + phase: "recall", + sessionId: "sess-1", + providerBaseUrl: "https://api.minimax.io/v1", + model: "MiniMax-M2.7", + prompt: "This prompt is intentionally longer than the clamp", + maxPromptChars: 16, + status: "simulated", + note: "observe only", + wouldInjectCount: 3, + }); + strict_1.default.equal(event.phase, "recall"); + strict_1.default.equal(event.mode, "observe"); + strict_1.default.equal(event.provider.model, "MiniMax-M2.7"); + strict_1.default.equal(event.wouldInjectCount, 3); + strict_1.default.match(event.promptPreview ?? "", /^This prompt is/); +} +{ + const event = (0, index_1.createGBrainShadowEvent)({ + phase: "capture", + sessionId: "sess-2", + providerBaseUrl: "https://api.minimax.io/v1", + model: "MiniMax-M2.7", + conversation: [ + { role: "user", content: "hello there, this is a longish message" }, + { role: "assistant", content: "reply with some additional details" }, + ], + maxPromptChars: 20, + status: "simulated", + note: "capture preview", + }); + strict_1.default.equal(event.conversationPreview?.length, 2); + strict_1.default.equal(event.conversationPreview?.[0]?.role, "user"); + strict_1.default.ok((event.conversationPreview?.[0]?.content.length ?? 0) <= 80); +} +{ + const logPath = (0, index_1.getGBrainShadowLogPath)("owner-a"); + strict_1.default.match(logPath, /gbrain-shadow-owner-a\.jsonl$/); +} +console.log("gbrain-shadow tests passed"); +//# sourceMappingURL=gbrain-shadow.test.js.map \ No newline at end of file diff --git a/dist/__tests__/gbrain-shadow.test.js.map b/dist/__tests__/gbrain-shadow.test.js.map new file mode 100644 index 0000000..24b4b99 --- /dev/null +++ b/dist/__tests__/gbrain-shadow.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"gbrain-shadow.test.js","sourceRoot":"","sources":["../../src/__tests__/gbrain-shadow.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AACxC,oCAAiG;AAEjG,CAAC;IACC,MAAM,GAAG,GAAG,IAAA,4BAAoB,EAAC;QAC/B,mBAAmB,EAAE,IAAI;QACzB,2BAA2B,EAAE,4BAA4B;QACzD,iBAAiB,EAAE,mBAAmB;QACtC,0BAA0B,EAAE,EAAE;KAC/B,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAC5C,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,EAAE,4BAA4B,CAAC,CAAC;IAC5E,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;AAC3D,CAAC;AAED,CAAC;IACC,MAAM,KAAK,GAAG,IAAA,+BAAuB,EAAC;QACpC,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,2BAA2B;QAC5C,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,oDAAoD;QAC5D,cAAc,EAAE,EAAE;QAClB,MAAM,EAAE,WAAW;QACnB,IAAI,EAAE,cAAc;QACpB,gBAAgB,EAAE,CAAC;KACpB,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACnD,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACxC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAC7D,CAAC;AAED,CAAC;IACC,MAAM,KAAK,GAAG,IAAA,+BAAuB,EAAC;QACpC,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,2BAA2B;QAC5C,KAAK,EAAE,cAAc;QACrB,YAAY,EAAE;YACZ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,wCAAwC,EAAE;YACnE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,oCAAoC,EAAE;SACrE;QACD,cAAc,EAAE,EAAE;QAClB,MAAM,EAAE,WAAW;QACnB,IAAI,EAAE,iBAAiB;KACxB,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3D,gBAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,CAAC;IACC,MAAM,OAAO,GAAG,IAAA,8BAAsB,EAAC,SAAS,CAAC,CAAC;IAClD,gBAAM,CAAC,KAAK,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC;AACzD,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/__tests__/turn-gating.test.d.ts b/dist/__tests__/turn-gating.test.d.ts new file mode 100644 index 0000000..7f0fa99 --- /dev/null +++ b/dist/__tests__/turn-gating.test.d.ts @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=turn-gating.test.d.ts.map \ No newline at end of file diff --git a/dist/__tests__/turn-gating.test.d.ts.map b/dist/__tests__/turn-gating.test.d.ts.map new file mode 100644 index 0000000..f0bf7ce --- /dev/null +++ b/dist/__tests__/turn-gating.test.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"turn-gating.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/turn-gating.test.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/__tests__/turn-gating.test.js b/dist/__tests__/turn-gating.test.js new file mode 100644 index 0000000..e82c562 --- /dev/null +++ b/dist/__tests__/turn-gating.test.js @@ -0,0 +1,63 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const strict_1 = __importDefault(require("node:assert/strict")); +const index_1 = require("../index"); +{ + const result = (0, index_1.classifyTurnForMemory)("[PLAN_DECISION]: approved", undefined, { + sessionKey: "agent:main:main", + }); + strict_1.default.equal(result.allow, false); + strict_1.default.equal(result.reason, "synthetic-prompt"); +} +{ + const result = (0, index_1.classifyTurnForMemory)("[QUESTION_ANSWER]: yes", undefined, { + sessionKey: "agent:main:main", + }); + strict_1.default.equal(result.allow, false); +} +{ + const result = (0, index_1.classifyTurnForMemory)("Read HEARTBEAT.md if it exists", undefined, { + sessionKey: "agent:main:main", + }); + strict_1.default.equal(result.allow, false); +} +{ + const result = (0, index_1.classifyTurnForMemory)("real user question about memory behavior", undefined, { + sessionKey: "agent:main:main", + }); + strict_1.default.equal(result.allow, true); + strict_1.default.equal(result.reason, "real-user-turn"); +} +{ + const result = (0, index_1.classifyTurnForMemory)(undefined, [ + { role: "user", content: "[PLAN_DECISION]: approved" }, + { role: "assistant", content: "got it" }, + ], { + sessionKey: "agent:main:main", + }); + strict_1.default.equal(result.allow, false); + strict_1.default.equal(result.reason, "synthetic-user-turn"); +} +{ + const messages = (0, index_1.extractMessages)([ + { role: "user", content: "[PLAN_DECISION]: approved" }, + { role: "assistant", content: "ok" }, + { role: "user", content: "(session bootstrap)" }, + { role: "user", content: "please remember I prefer short replies" }, + { role: "assistant", content: "Noted." }, + ]); + strict_1.default.deepEqual(messages, [ + { role: "assistant", content: "ok" }, + { role: "user", content: "please remember I prefer short replies" }, + { role: "assistant", content: "Noted." }, + ]); +} +{ + strict_1.default.equal((0, index_1.isMemoryRelevant)("[PLAN_DECISION]: approved"), false); + strict_1.default.equal((0, index_1.isMemoryRelevant)("What did we decide about the Cortex plugin?"), true); +} +console.log("turn-gating tests passed"); +//# sourceMappingURL=turn-gating.test.js.map \ No newline at end of file diff --git a/dist/__tests__/turn-gating.test.js.map b/dist/__tests__/turn-gating.test.js.map new file mode 100644 index 0000000..ed292b5 --- /dev/null +++ b/dist/__tests__/turn-gating.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"turn-gating.test.js","sourceRoot":"","sources":["../../src/__tests__/turn-gating.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AACxC,oCAAoF;AAEpF,CAAC;IACC,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,2BAA2B,EAAE,SAAS,EAAE;QAC3E,UAAU,EAAE,iBAAiB;KAC9B,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAClD,CAAC;AAED,CAAC;IACC,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,wBAAwB,EAAE,SAAS,EAAE;QACxE,UAAU,EAAE,iBAAiB;KAC9B,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,CAAC;IACC,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,gCAAgC,EAAE,SAAS,EAAE;QAChF,UAAU,EAAE,iBAAiB;KAC9B,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,CAAC;IACC,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,0CAA0C,EAAE,SAAS,EAAE;QAC1F,UAAU,EAAE,iBAAiB;KAC9B,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAChD,CAAC;AAED,CAAC;IACC,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,SAAS,EAAE;QAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE;QACtD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE;KACzC,EAAE;QACD,UAAU,EAAE,iBAAiB;KAC9B,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AACrD,CAAC;AAED,CAAC;IACC,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC;QAC/B,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE;QACtD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;QACpC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE;QAChD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,wCAAwC,EAAE;QACnE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE;KACzC,CAAC,CAAC;IACH,gBAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;QACzB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;QACpC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,wCAAwC,EAAE;QACnE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE;KACzC,CAAC,CAAC;AACL,CAAC;AAED,CAAC;IACC,gBAAM,CAAC,KAAK,CAAC,IAAA,wBAAgB,EAAC,2BAA2B,CAAC,EAAE,KAAK,CAAC,CAAC;IACnE,gBAAM,CAAC,KAAK,CAAC,IAAA,wBAAgB,EAAC,6CAA6C,CAAC,EAAE,IAAI,CAAC,CAAC;AACtF,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index 528be59..c4e6cf4 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -30,6 +30,15 @@ interface EvaMemoryConfig { autoRecall: boolean; autoCapture: boolean; shadowMode: boolean; + gbrainShadowEnabled: boolean; + gbrainShadowCapture: boolean; + gbrainShadowRecall: boolean; + gbrainShadowLogEnabled: boolean; + gbrainShadowMaxPromptChars: number; + gbrainShadowLogMaxEntries: number; + gbrainShadowProviderBaseUrl: string; + gbrainShadowModel: string; + gbrainShadowApiKey: string; retrievalBudget: number; maxInjectionChars: number; maxInjectedMemories: number; @@ -72,7 +81,52 @@ interface ProcessedItem { conflictWithId?: string; relationHint?: string; } +interface GBrainShadowEvent { + schemaVersion: "gbrain-shadow-v1"; + ts: string; + phase: "recall" | "capture"; + sessionId?: string; + turnId?: string; + mode: "observe"; + provider: { + baseUrl: string; + model: string; + liveCall: boolean; + }; + gbrainRetrieval?: { + attempted: boolean; + ok: boolean; + query?: string; + hits?: Array<{ + slug: string; + preview: string; + }>; + summary?: string; + }; + promptPreview?: string; + conversationPreview?: Array<{ + role: string; + content: string; + }>; + status: "skipped" | "simulated" | "disabled"; + reason?: string; + note: string; + source: "gbrain-shadow-scaffold"; + divergenceFromAuthoritative?: string; +} declare function parseConfig(raw: unknown): EvaMemoryConfig; +export declare function isMemoryRelevant(prompt: string): boolean; +type HookRunKind = "main" | "subagent" | "cron" | "isolated" | "hook" | "unknown"; +type HookLaneContext = { + runKind?: HookRunKind; + isHeartbeat?: boolean; + sessionKey?: string; + trigger?: string; +}; +export declare function classifyTurnForMemory(prompt: string | undefined, messages: unknown[] | undefined, ctx?: HookLaneContext): { + allow: boolean; + reason: string; +}; /** Session risk mode for dynamic threshold selection. */ type InjectionMode = "critical" | "technical" | "personal"; /** Parse raw plugin config into a validated EvaMemoryConfig object. */ @@ -98,6 +152,38 @@ export declare function detectInjectionMode(promptText: string): InjectionMode; export declare function screenInjectionCandidates(items: RetrievedItem[], promptText: string, cfg: Pick, log?: (msg: string) => void): RetrievedItem[]; export declare function preprocessClaims(items: RetrievedItem[], options: Pick): ProcessedItem[]; export declare function formatMemoryContext(items: RetrievedItem[], maxChars: number, totalCount?: number, maxCount?: number, minScore?: number, options?: Pick): string; +export declare function getGBrainShadowLogPath(ownerId: string): string; +export declare function createGBrainShadowEvent(params: { + phase: "recall" | "capture"; + sessionId?: string; + turnId?: string; + providerBaseUrl: string; + model: string; + prompt?: string; + conversation?: Array<{ + role: string; + content: string; + }>; + maxPromptChars: number; + status: "skipped" | "simulated" | "disabled"; + reason?: string; + note: string; + divergenceFromAuthoritative?: string; + gbrainRetrieval?: { + attempted: boolean; + ok: boolean; + query?: string; + hits?: Array<{ + slug: string; + preview: string; + }>; + summary?: string; + }; +}): GBrainShadowEvent; +export declare function extractMessages(rawMessages: unknown[]): Array<{ + role: string; + content: string; +}>; declare const cortexPlugin: { id: string; name: string; @@ -128,6 +214,42 @@ declare const cortexPlugin: { type: string; description: string; }; + gbrainShadowEnabled: { + type: string; + description: string; + }; + gbrainShadowCapture: { + type: string; + description: string; + }; + gbrainShadowRecall: { + type: string; + description: string; + }; + gbrainShadowLogEnabled: { + type: string; + description: string; + }; + gbrainShadowMaxPromptChars: { + type: string; + description: string; + }; + gbrainShadowLogMaxEntries: { + type: string; + description: string; + }; + gbrainShadowProviderBaseUrl: { + type: string; + description: string; + }; + gbrainShadowModel: { + type: string; + description: string; + }; + gbrainShadowApiKey: { + type: string; + description: string; + }; retrievalBudget: { type: string; }; diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index f8b2a5a..ecd271e 100644 --- a/dist/index.d.ts.map +++ b/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index a018fea..68d6b1a 100644 --- a/dist/index.js +++ b/dist/index.js @@ -24,14 +24,20 @@ * cortex_add_open_loop, cortex_resolve_open_loop, cortex_list_open_loops */ Object.defineProperty(exports, "__esModule", { value: true }); +exports.isMemoryRelevant = isMemoryRelevant; +exports.classifyTurnForMemory = classifyTurnForMemory; exports.parseEvaMemoryConfig = parseEvaMemoryConfig; exports.detectInjectionMode = detectInjectionMode; exports.screenInjectionCandidates = screenInjectionCandidates; exports.preprocessClaims = preprocessClaims; exports.formatMemoryContext = formatMemoryContext; +exports.getGBrainShadowLogPath = getGBrainShadowLogPath; +exports.createGBrainShadowEvent = createGBrainShadowEvent; +exports.extractMessages = extractMessages; const typebox_1 = require("@sinclair/typebox"); const node_fs_1 = require("node:fs"); const node_path_1 = require("node:path"); +const node_child_process_1 = require("node:child_process"); // Dynamic require for node:sqlite (available in Node 22+, avoids TS import issues) let NodeDatabaseSync; try { @@ -52,6 +58,15 @@ function parseConfig(raw) { autoRecall: true, autoCapture: true, shadowMode: false, + gbrainShadowEnabled: false, + gbrainShadowCapture: true, + gbrainShadowRecall: true, + gbrainShadowLogEnabled: true, + gbrainShadowMaxPromptChars: 2000, + gbrainShadowLogMaxEntries: 200, + gbrainShadowProviderBaseUrl: "https://api.minimax.io/anthropic", + gbrainShadowModel: "MiniMax-M2.7-HighSpeed", + gbrainShadowApiKey: "", retrievalBudget: 2000, maxInjectionChars: 8000, maxInjectedMemories: 8, @@ -84,6 +99,15 @@ function parseConfig(raw) { autoRecall: c.autoRecall !== false, autoCapture: c.autoCapture !== false, shadowMode: c.shadowMode === true, + gbrainShadowEnabled: c.gbrainShadowEnabled === true, + gbrainShadowCapture: c.gbrainShadowCapture !== false, + gbrainShadowRecall: c.gbrainShadowRecall !== false, + gbrainShadowLogEnabled: c.gbrainShadowLogEnabled !== false, + gbrainShadowMaxPromptChars: typeof c.gbrainShadowMaxPromptChars === "number" ? c.gbrainShadowMaxPromptChars : defaults.gbrainShadowMaxPromptChars, + gbrainShadowLogMaxEntries: typeof c.gbrainShadowLogMaxEntries === "number" ? c.gbrainShadowLogMaxEntries : defaults.gbrainShadowLogMaxEntries, + gbrainShadowProviderBaseUrl: typeof c.gbrainShadowProviderBaseUrl === "string" ? resolveEnv(c.gbrainShadowProviderBaseUrl) : defaults.gbrainShadowProviderBaseUrl, + gbrainShadowModel: typeof c.gbrainShadowModel === "string" && c.gbrainShadowModel ? c.gbrainShadowModel : defaults.gbrainShadowModel, + gbrainShadowApiKey: typeof c.gbrainShadowApiKey === "string" ? resolveEnv(c.gbrainShadowApiKey) : defaults.gbrainShadowApiKey, retrievalBudget: typeof c.retrievalBudget === "number" ? c.retrievalBudget : defaults.retrievalBudget, maxInjectionChars: typeof c.maxInjectionChars === "number" ? c.maxInjectionChars : defaults.maxInjectionChars, maxInjectedMemories: typeof c.maxInjectedMemories === "number" ? c.maxInjectedMemories : defaults.maxInjectedMemories, @@ -719,15 +743,71 @@ function isBootPrompt(prompt) { return false; return /\bBOOT\.md\b/i.test(prompt) || /\bboot check\b/i.test(prompt) || /\bpost-restart\b/i.test(prompt); } -function shouldSkipMemoryInjection(prompt, ctx) { +const SYNTHETIC_TURN_PATTERNS = [ + /^\s*\[PLAN_DECISION\]:/im, + /^\s*\[QUESTION_ANSWER\]:/im, + /^\s*\(session bootstrap\)\s*$/im, + /^\s*HEARTBEAT_OK\b/im, + /Read HEARTBEAT\.md if it exists/im, +]; +function extractMessageText(message) { + if (!message || typeof message !== "object") + return ""; + const m = message; + if (typeof m.content === "string") + return m.content; + if (!Array.isArray(m.content)) + return ""; + const parts = []; + for (const block of m.content) { + if (!block || typeof block !== "object") + continue; + const text = block.text; + if (typeof text === "string" && text.trim()) + parts.push(text); + } + return parts.join("\n"); +} +function isSyntheticPromptText(prompt) { + if (!prompt) + return false; + if (isBootPrompt(prompt) || SYSTEM_EVENT_PATTERNS.test(prompt)) + return true; + return SYNTHETIC_TURN_PATTERNS.some((pattern) => pattern.test(prompt)); +} +function hasSyntheticUserTurn(messages) { + if (!Array.isArray(messages) || messages.length === 0) + return false; + for (let index = messages.length - 1; index >= 0; index -= 1) { + const message = messages[index]; + if (!message || typeof message !== "object") + continue; + const role = message.role; + if (role !== "user") + continue; + const text = extractMessageText(message); + return isSyntheticPromptText(text); + } + return false; +} +function classifyTurnForMemory(prompt, messages, ctx) { const runKind = resolveHookRunKind(ctx); if (ctx?.isHeartbeat) - return { skip: true, lane: "heartbeat" }; + return { allow: false, reason: "heartbeat" }; if (runKind !== "main") - return { skip: true, lane: runKind }; - if (isBootPrompt(prompt)) - return { skip: true, lane: "boot" }; - return { skip: false, lane: runKind }; + return { allow: false, reason: runKind }; + if (ctx?.trigger === "system" || ctx?.trigger === "cron" || ctx?.trigger === "heartbeat") { + return { allow: false, reason: ctx.trigger }; + } + if (isSyntheticPromptText(prompt)) + return { allow: false, reason: "synthetic-prompt" }; + if (hasSyntheticUserTurn(messages)) + return { allow: false, reason: "synthetic-user-turn" }; + return { allow: true, reason: "real-user-turn" }; +} +function shouldSkipMemoryInjection(prompt, messages, ctx) { + const decision = classifyTurnForMemory(prompt, messages, ctx); + return { skip: !decision.allow, lane: decision.reason }; } // --- Conversational junk pre-filter --- // Messages matching any of these patterns are dropped from the capture payload. @@ -1091,6 +1171,108 @@ function formatMemoryContext(items, maxChars, totalCount = items.length, maxCoun : formatMemoryContextV1(items, maxChars, totalCount, maxCount, minScore); } // --- Message extraction (with junk filter) --- +function clampText(text, maxChars) { + if (maxChars <= 0) + return ""; + if (text.length <= maxChars) + return text; + return `${text.slice(0, Math.max(0, maxChars - 1)).trimEnd()}…`; +} +function sanitizeShadowLogKey(value) { + const cleaned = (value || "default").replace(/[^a-zA-Z0-9._-]/g, "_").slice(0, 120); + return cleaned || "default"; +} +function buildGBrainShadowLogPath(ownerId) { + const pluginDir = typeof __dirname === "string" ? __dirname : (0, node_path_1.dirname)(__filename); + const safeOwnerId = sanitizeShadowLogKey(ownerId); + return (0, node_path_1.join)(pluginDir, "shadow-logs", `gbrain-shadow-${safeOwnerId}.jsonl`); +} +function appendGBrainShadowLog(ownerId, maxEntries, event) { + try { + const logPath = buildGBrainShadowLogPath(ownerId); + const logDir = (0, node_path_1.dirname)(logPath); + if (!(0, node_fs_1.existsSync)(logDir)) + (0, node_fs_1.mkdirSync)(logDir, { recursive: true }); + const line = `${JSON.stringify(event)}\n`; + (0, node_fs_1.appendFileSync)(logPath, line, "utf8"); + if (maxEntries > 0) { + try { + const lines = (0, node_fs_1.readFileSync)(logPath, "utf8").split("\n").filter(Boolean); + if (lines.length > maxEntries) { + (0, node_fs_1.writeFileSync)(logPath, `${lines.slice(-maxEntries).join("\n")}\n`, "utf8"); + } + } + catch { + // best-effort retention trim only + } + } + } + catch { + // Observe-only logging must never break authoritative paths. + } +} +function getGBrainShadowLogPath(ownerId) { + return buildGBrainShadowLogPath(ownerId); +} +function createGBrainShadowEvent(params) { + return { + schemaVersion: "gbrain-shadow-v1", + ts: new Date().toISOString(), + phase: params.phase, + sessionId: params.sessionId, + turnId: params.turnId, + mode: "observe", + provider: { + baseUrl: params.providerBaseUrl, + model: params.model, + liveCall: false, + }, + gbrainRetrieval: params.gbrainRetrieval, + promptPreview: params.prompt ? clampText(params.prompt, params.maxPromptChars) : undefined, + conversationPreview: params.conversation?.map((msg) => ({ + role: msg.role, + content: clampText(msg.content, Math.max(80, Math.floor(params.maxPromptChars / 2))), + })), + status: params.status, + reason: params.reason, + note: params.note, + source: "gbrain-shadow-scaffold", + divergenceFromAuthoritative: params.divergenceFromAuthoritative, + }; +} +function maybeLogGBrainShadowEvent(cfg, event) { + if (!cfg.gbrainShadowEnabled || !cfg.gbrainShadowLogEnabled) + return; + appendGBrainShadowLog(cfg.ownerId, cfg.gbrainShadowLogMaxEntries, event); +} +function runGBrainShadowSearch(query, limit = 3) { + const q = clampText(query.trim(), 240); + if (!q) + return { attempted: false, ok: false, summary: "Empty query." }; + try { + const res = (0, node_child_process_1.spawnSync)("bun", ["run", "src/cli.ts", "search", q, "--limit", String(limit)], { + cwd: "/Users/lume/gbrain", + encoding: "utf8", + timeout: 15000, + maxBuffer: 1024 * 1024, + }); + if (res.status !== 0) { + return { attempted: true, ok: false, query: q, summary: (res.stderr || res.stdout || `exit ${res.status}`).trim().slice(0, 240) }; + } + const lines = (res.stdout || "").split("\n").map((x) => x.trim()).filter(Boolean).slice(0, limit); + const hits = lines.map((line) => { + const match = line.match(/^\[[^\]]+\]\s+([^\s]+)\s+--\s+(.*)$/); + return { + slug: match?.[1] || line.slice(0, 80), + preview: clampText(match?.[2] || line, 160), + }; + }); + return { attempted: true, ok: true, query: q, hits, summary: hits.length ? `Found ${hits.length} doc hits.` : "No doc hits." }; + } + catch (err) { + return { attempted: true, ok: false, query: q, summary: err instanceof Error ? err.message.slice(0, 240) : String(err).slice(0, 240) }; + } +} function extractMessages(rawMessages) { const result = []; for (const msg of rawMessages.slice(-10)) { @@ -1126,6 +1308,9 @@ function extractMessages(rawMessages) { // Skip user messages matching trivial/continuation patterns if (role === "user" && TRIVIAL_CAPTURE_PATTERNS.some((p) => p.test(text))) continue; + // Skip synthetic control/system wrapper turns even when they entered as user text + if (isSyntheticPromptText(text)) + continue; result.push({ role, content: text }); } return result; @@ -1148,6 +1333,15 @@ const cortexPlugin = { autoRecall: { type: "boolean" }, autoCapture: { type: "boolean" }, shadowMode: { type: "boolean", description: "Shadow mode — capture runs extraction but skips storage (dry-run)" }, + gbrainShadowEnabled: { type: "boolean", description: "Enable GBrain shadow observe-only scaffolding (default: false)" }, + gbrainShadowCapture: { type: "boolean", description: "Run observe-only GBrain shadow logging on capture path (default: true)" }, + gbrainShadowRecall: { type: "boolean", description: "Run observe-only GBrain shadow logging on recall path (default: true)" }, + gbrainShadowLogEnabled: { type: "boolean", description: "Persist timestamped GBrain shadow contribution logs (default: true)" }, + gbrainShadowMaxPromptChars: { type: "number", description: "Max chars to keep in GBrain shadow previews (default: 2000)" }, + gbrainShadowLogMaxEntries: { type: "number", description: "Max shadow log entries to retain per owner (default: 200)" }, + gbrainShadowProviderBaseUrl: { type: "string", description: "Observe-only GBrain shadow provider base URL metadata or optional live shadow endpoint (default: https://api.minimax.io/anthropic)" }, + gbrainShadowModel: { type: "string", description: "Observe-only GBrain shadow model metadata or optional live shadow model (default: MiniMax-M2.7-HighSpeed)" }, + gbrainShadowApiKey: { type: "string", description: "Reserved for future real GBrain shadow execution; unused in the current scaffold" }, retrievalBudget: { type: "number" }, maxInjectionChars: { type: "number" }, maxInjectedMemories: { type: "number", description: "Max memories to inject per turn (default: 8)" }, @@ -1197,7 +1391,7 @@ const cortexPlugin = { if (cfg.apiKey && !cfg.apiKey.startsWith("${")) { api.logger.warn("cortex: API key appears to be hardcoded in config. Consider using environment variable: apiKey: '${CORTEX_API_KEY}'"); } - api.logger.info(`cortex: registered (cortex=${cfg.cortexUrl}, owner=${cfg.ownerId}, recall=${cfg.autoRecall}, capture=${cfg.autoCapture}, shadow=${cfg.shadowMode})`); + api.logger.info(`cortex: registered (cortex=${cfg.cortexUrl}, owner=${cfg.ownerId}, recall=${cfg.autoRecall}, capture=${cfg.autoCapture}, shadow=${cfg.shadowMode}, gbrainShadow=${cfg.gbrainShadowEnabled ? "on" : "off"}, gbrainModel=${cfg.gbrainShadowModel})`); // ------------------------------------------------------------------------- // Tools // ------------------------------------------------------------------------- @@ -1560,14 +1754,21 @@ const cortexPlugin = { api.on("before_agent_start", async (event, ctx) => { const startMs = Date.now(); const blocks = []; - const laneDecision = shouldSkipMemoryInjection(event.prompt, ctx); + const laneDecision = shouldSkipMemoryInjection(event.prompt, event.messages, { + ...ctx, + trigger: ctx.trigger, + }); if (laneDecision.skip) { api.logger.info(`cortex: skipping recall injection for lane=${laneDecision.lane}`); return; } // --- Fetch contextual memories (+ optional cornerstones) --- if (cfg.autoRecall) { - const doRetrieve = event.prompt && isMemoryRelevant(event.prompt); + const turnDecision = classifyTurnForMemory(event.prompt, event.messages, { + ...ctx, + trigger: ctx.trigger, + }); + const doRetrieve = turnDecision.allow && event.prompt && isMemoryRelevant(event.prompt); const doCornerstones = cfg.injectCornerstones; // default false — cornerstones in SOUL.md // --- Memory retrieval (server-first, local fallback) --- let memoryItems = []; @@ -1644,6 +1845,22 @@ const cortexPlugin = { const screened = cfg.enableInjectionScreening ? screenInjectionCandidates(filtered, event.prompt ?? "", cfg, (msg) => api.logger.info(msg)) : filtered; + if (cfg.gbrainShadowEnabled && cfg.gbrainShadowRecall) { + const gbrainRetrieval = runGBrainShadowSearch(event.prompt ?? "", 3); + maybeLogGBrainShadowEvent(cfg, createGBrainShadowEvent({ + phase: "recall", + sessionId: ctx.sessionKey, + turnId: ctx.sessionKey, + providerBaseUrl: cfg.gbrainShadowProviderBaseUrl, + model: cfg.gbrainShadowModel, + prompt: event.prompt, + maxPromptChars: cfg.gbrainShadowMaxPromptChars, + status: "simulated", + note: "Observe-only recall seam. Logged real GBrain docs retrieval without affecting authoritative injection.", + divergenceFromAuthoritative: "GBrain shadow search runs for comparison only. Cortex remains the authoritative injected path.", + gbrainRetrieval, + })); + } const context = formatMemoryContext(screened, cfg.maxInjectionChars, filtered.length, cfg.maxInjectedMemories, cfg.minRelevanceScore, { injectionFormat: cfg.injectionFormat, showConflicts: cfg.showConflicts, @@ -1662,6 +1879,23 @@ const cortexPlugin = { } } } + else if (cfg.gbrainShadowEnabled && cfg.gbrainShadowRecall && event.prompt) { + const gbrainRetrieval = runGBrainShadowSearch(event.prompt ?? "", 3); + maybeLogGBrainShadowEvent(cfg, createGBrainShadowEvent({ + phase: "recall", + sessionId: ctx.sessionKey, + turnId: ctx.sessionKey, + providerBaseUrl: cfg.gbrainShadowProviderBaseUrl, + model: cfg.gbrainShadowModel, + prompt: event.prompt, + maxPromptChars: cfg.gbrainShadowMaxPromptChars, + status: "skipped", + reason: "no-memory-items", + note: "Observe-only recall seam ran, but authoritative recall returned no items.", + divergenceFromAuthoritative: "GBrain shadow search still ran for comparison, but nothing was injected because Cortex had no items.", + gbrainRetrieval, + })); + } } if (blocks.length) { return { prependContext: blocks.join("\n\n") }; @@ -1677,8 +1911,12 @@ const cortexPlugin = { const key = ctx.sessionKey ?? ""; if (key.includes(":subagent:") || key.includes(":cron:") || key.includes(":isolated:")) return; - const hookCtx = ctx; - if (hookCtx.isHeartbeat) + const hookCtx = { + ...ctx, + trigger: ctx.trigger, + }; + const turnDecision = classifyTurnForMemory(undefined, event.messages, hookCtx); + if (!turnDecision.allow) return; const messages = extractMessages(event.messages); // Require at least 2 real messages — single-message captures are noise @@ -1690,6 +1928,22 @@ const cortexPlugin = { // Skip system events (sub-agent completions, exec notifications) — not worth extracting if (SYSTEM_EVENT_PATTERNS.test(joined)) return; + if (cfg.gbrainShadowEnabled && cfg.gbrainShadowCapture) { + const gbrainRetrieval = runGBrainShadowSearch(messages.map((m) => m.content).join(" "), 3); + maybeLogGBrainShadowEvent(cfg, createGBrainShadowEvent({ + phase: "capture", + sessionId: ctx.sessionKey, + turnId: ctx.sessionKey, + providerBaseUrl: cfg.gbrainShadowProviderBaseUrl, + model: cfg.gbrainShadowModel, + conversation: messages, + maxPromptChars: cfg.gbrainShadowMaxPromptChars, + status: "simulated", + note: "Observe-only capture seam. Logged real GBrain docs retrieval metadata without affecting authoritative storage.", + divergenceFromAuthoritative: "GBrain shadow search runs for comparison only. Cortex remains the authoritative storage path.", + gbrainRetrieval, + })); + } // Fire and forget — no await, no blocking const capturePromise = client.remember(messages, ctx.sessionKey, cfg.shadowMode); if (capturePromise && typeof capturePromise.catch === "function") { diff --git a/dist/index.js.map b/dist/index.js.map index b745ae5..ed6cecc 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/openclaw.plugin.json b/openclaw.plugin.json index ed8125d..146c767 100644 --- a/openclaw.plugin.json +++ b/openclaw.plugin.json @@ -48,6 +48,42 @@ "type": "boolean", "description": "Shadow mode \u2014 capture runs extraction but skips storage (dry-run, default: false)" }, + "gbrainShadowEnabled": { + "type": "boolean", + "description": "Enable GBrain shadow v1 observe-only scaffolding (default: false)" + }, + "gbrainShadowCapture": { + "type": "boolean", + "description": "Enable observe-only GBrain shadow logging on capture path (default: true)" + }, + "gbrainShadowRecall": { + "type": "boolean", + "description": "Enable observe-only GBrain shadow logging on recall path (default: true)" + }, + "gbrainShadowLogEnabled": { + "type": "boolean", + "description": "Persist structured timestamped GBrain shadow logs (default: true)" + }, + "gbrainShadowMaxPromptChars": { + "type": "number", + "description": "Max chars to keep in GBrain shadow previews (default: 2000)" + }, + "gbrainShadowLogMaxEntries": { + "type": "number", + "description": "Max shadow log entries retained per owner (default: 200)" + }, + "gbrainShadowProviderBaseUrl": { + "type": "string", + "description": "Observe-only GBrain shadow provider base URL for MiniMax full-model path" + }, + "gbrainShadowModel": { + "type": "string", + "description": "Observe-only GBrain shadow model name (default: MiniMax-M2.7)" + }, + "gbrainShadowApiKey": { + "type": "string", + "description": "Optional API key for the observe-only GBrain shadow provider path" + }, "retrievalBudget": { "type": "number", "description": "Max token budget for retrieved memories (default: 2000)" diff --git a/package.json b/package.json index 22710f1..5640123 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "types": "dist/index.d.ts", "scripts": { "build": "tsc", + "test": "npm run build && node dist/__tests__/injection-screening.test.js && node dist/__tests__/memory-context-format.test.js && node dist/__tests__/gbrain-shadow.test.js && node dist/__tests__/turn-gating.test.js", "prepublishOnly": "npm run build" }, "files": [ diff --git a/src/__tests__/gbrain-shadow.test.ts b/src/__tests__/gbrain-shadow.test.ts new file mode 100644 index 0000000..27d049e --- /dev/null +++ b/src/__tests__/gbrain-shadow.test.ts @@ -0,0 +1,59 @@ +import assert from "node:assert/strict"; +import { createGBrainShadowEvent, getGBrainShadowLogPath, parseEvaMemoryConfig } from "../index"; + +{ + const cfg = parseEvaMemoryConfig({ + gbrainShadowEnabled: true, + gbrainShadowProviderBaseUrl: "https://minimax.example/v1", + gbrainShadowModel: "MiniMax-M2.7-full", + gbrainShadowMaxPromptChars: 12, + }); + assert.equal(cfg.gbrainShadowEnabled, true); + assert.equal(cfg.gbrainShadowProviderBaseUrl, "https://minimax.example/v1"); + assert.equal(cfg.gbrainShadowModel, "MiniMax-M2.7-full"); +} + +{ + const event = createGBrainShadowEvent({ + phase: "recall", + sessionId: "sess-1", + providerBaseUrl: "https://api.minimax.io/v1", + model: "MiniMax-M2.7", + prompt: "This prompt is intentionally longer than the clamp", + maxPromptChars: 16, + status: "simulated", + note: "observe only", + wouldInjectCount: 3, + }); + assert.equal(event.phase, "recall"); + assert.equal(event.mode, "observe"); + assert.equal(event.provider.model, "MiniMax-M2.7"); + assert.equal(event.wouldInjectCount, 3); + assert.match(event.promptPreview ?? "", /^This prompt is/); +} + +{ + const event = createGBrainShadowEvent({ + phase: "capture", + sessionId: "sess-2", + providerBaseUrl: "https://api.minimax.io/v1", + model: "MiniMax-M2.7", + conversation: [ + { role: "user", content: "hello there, this is a longish message" }, + { role: "assistant", content: "reply with some additional details" }, + ], + maxPromptChars: 20, + status: "simulated", + note: "capture preview", + }); + assert.equal(event.conversationPreview?.length, 2); + assert.equal(event.conversationPreview?.[0]?.role, "user"); + assert.ok((event.conversationPreview?.[0]?.content.length ?? 0) <= 80); +} + +{ + const logPath = getGBrainShadowLogPath("owner-a"); + assert.match(logPath, /gbrain-shadow-owner-a\.jsonl$/); +} + +console.log("gbrain-shadow tests passed"); diff --git a/src/__tests__/turn-gating.test.ts b/src/__tests__/turn-gating.test.ts new file mode 100644 index 0000000..36d48f4 --- /dev/null +++ b/src/__tests__/turn-gating.test.ts @@ -0,0 +1,65 @@ +import assert from "node:assert/strict"; +import { classifyTurnForMemory, extractMessages, isMemoryRelevant } from "../index"; + +{ + const result = classifyTurnForMemory("[PLAN_DECISION]: approved", undefined, { + sessionKey: "agent:main:main", + }); + assert.equal(result.allow, false); + assert.equal(result.reason, "synthetic-prompt"); +} + +{ + const result = classifyTurnForMemory("[QUESTION_ANSWER]: yes", undefined, { + sessionKey: "agent:main:main", + }); + assert.equal(result.allow, false); +} + +{ + const result = classifyTurnForMemory("Read HEARTBEAT.md if it exists", undefined, { + sessionKey: "agent:main:main", + }); + assert.equal(result.allow, false); +} + +{ + const result = classifyTurnForMemory("real user question about memory behavior", undefined, { + sessionKey: "agent:main:main", + }); + assert.equal(result.allow, true); + assert.equal(result.reason, "real-user-turn"); +} + +{ + const result = classifyTurnForMemory(undefined, [ + { role: "user", content: "[PLAN_DECISION]: approved" }, + { role: "assistant", content: "got it" }, + ], { + sessionKey: "agent:main:main", + }); + assert.equal(result.allow, false); + assert.equal(result.reason, "synthetic-user-turn"); +} + +{ + const messages = extractMessages([ + { role: "user", content: "[PLAN_DECISION]: approved" }, + { role: "assistant", content: "ok" }, + { role: "user", content: "(session bootstrap)" }, + { role: "user", content: "please remember I prefer short replies" }, + { role: "assistant", content: "Noted." }, + ]); + assert.deepEqual(messages, [ + { role: "assistant", content: "ok" }, + { role: "user", content: "please remember I prefer short replies" }, + { role: "assistant", content: "Noted." }, + ]); +} + +{ + assert.equal(isMemoryRelevant("[PLAN_DECISION]: approved"), false); + assert.equal(isMemoryRelevant("What did we decide about the Cortex plugin?"), true); +} + +console.log("turn-gating tests passed"); diff --git a/src/index.ts b/src/index.ts index 3e8b948..08c63b1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -25,8 +25,9 @@ import { Type } from "@sinclair/typebox"; import type { OpenClawPluginApi } from "openclaw/plugin-sdk"; -import { mkdirSync, existsSync } from "node:fs"; +import { mkdirSync, existsSync, readFileSync, writeFileSync, appendFileSync } from "node:fs"; import { dirname, join } from "node:path"; +import { spawnSync } from "node:child_process"; // Dynamic require for node:sqlite (available in Node 22+, avoids TS import issues) let NodeDatabaseSync: any; @@ -45,6 +46,15 @@ interface EvaMemoryConfig { autoRecall: boolean; autoCapture: boolean; shadowMode: boolean; + gbrainShadowEnabled: boolean; + gbrainShadowCapture: boolean; + gbrainShadowRecall: boolean; + gbrainShadowLogEnabled: boolean; + gbrainShadowMaxPromptChars: number; + gbrainShadowLogMaxEntries: number; + gbrainShadowProviderBaseUrl: string; + gbrainShadowModel: string; + gbrainShadowApiKey: string; retrievalBudget: number; maxInjectionChars: number; maxInjectedMemories: number; @@ -98,6 +108,34 @@ interface ProcessedItem { relationHint?: string; } +interface GBrainShadowEvent { + schemaVersion: "gbrain-shadow-v1"; + ts: string; + phase: "recall" | "capture"; + sessionId?: string; + turnId?: string; + mode: "observe"; + provider: { + baseUrl: string; + model: string; + liveCall: boolean; + }; + gbrainRetrieval?: { + attempted: boolean; + ok: boolean; + query?: string; + hits?: Array<{ slug: string; preview: string }>; + summary?: string; + }; + promptPreview?: string; + conversationPreview?: Array<{ role: string; content: string }>; + status: "skipped" | "simulated" | "disabled"; + reason?: string; + note: string; + source: "gbrain-shadow-scaffold"; + divergenceFromAuthoritative?: string; +} + // --- Config --- function resolveEnv(value: string): string { @@ -112,6 +150,15 @@ function parseConfig(raw: unknown): EvaMemoryConfig { autoRecall: true, autoCapture: true, shadowMode: false, + gbrainShadowEnabled: false, + gbrainShadowCapture: true, + gbrainShadowRecall: true, + gbrainShadowLogEnabled: true, + gbrainShadowMaxPromptChars: 2000, + gbrainShadowLogMaxEntries: 200, + gbrainShadowProviderBaseUrl: "https://api.minimax.io/anthropic", + gbrainShadowModel: "MiniMax-M2.7-HighSpeed", + gbrainShadowApiKey: "", retrievalBudget: 2000, maxInjectionChars: 8000, maxInjectedMemories: 8, @@ -143,6 +190,15 @@ function parseConfig(raw: unknown): EvaMemoryConfig { autoRecall: c.autoRecall !== false, autoCapture: c.autoCapture !== false, shadowMode: c.shadowMode === true, + gbrainShadowEnabled: c.gbrainShadowEnabled === true, + gbrainShadowCapture: c.gbrainShadowCapture !== false, + gbrainShadowRecall: c.gbrainShadowRecall !== false, + gbrainShadowLogEnabled: c.gbrainShadowLogEnabled !== false, + gbrainShadowMaxPromptChars: typeof c.gbrainShadowMaxPromptChars === "number" ? c.gbrainShadowMaxPromptChars : defaults.gbrainShadowMaxPromptChars, + gbrainShadowLogMaxEntries: typeof c.gbrainShadowLogMaxEntries === "number" ? c.gbrainShadowLogMaxEntries : defaults.gbrainShadowLogMaxEntries, + gbrainShadowProviderBaseUrl: typeof c.gbrainShadowProviderBaseUrl === "string" ? resolveEnv(c.gbrainShadowProviderBaseUrl) : defaults.gbrainShadowProviderBaseUrl, + gbrainShadowModel: typeof c.gbrainShadowModel === "string" && c.gbrainShadowModel ? c.gbrainShadowModel : defaults.gbrainShadowModel, + gbrainShadowApiKey: typeof c.gbrainShadowApiKey === "string" ? resolveEnv(c.gbrainShadowApiKey) : defaults.gbrainShadowApiKey, retrievalBudget: typeof c.retrievalBudget === "number" ? c.retrievalBudget : defaults.retrievalBudget, maxInjectionChars: typeof c.maxInjectionChars === "number" ? c.maxInjectionChars : defaults.maxInjectionChars, maxInjectedMemories: typeof c.maxInjectedMemories === "number" ? c.maxInjectedMemories : defaults.maxInjectedMemories, @@ -832,7 +888,7 @@ const TRIVIAL_PATTERNS = /^(hi|hello|hey|thanks|ok|yes|no|sure|bye|good morning| // Sub-agent completion events and runtime system events should not trigger memory retrieval const SYSTEM_EVENT_PATTERNS = /\[Internal task completion event\]|<<>>|source: subagent|type: subagent task|^\[.*\] Exec (?:completed|failed)|^\[.*\] OpenClaw runtime context/m; -function isMemoryRelevant(prompt: string): boolean { +export function isMemoryRelevant(prompt: string): boolean { if (!prompt || prompt.length < 3) return false; if (TRIVIAL_PATTERNS.test(prompt.trim())) return false; // Skip sub-agent completion events and runtime system events @@ -851,6 +907,7 @@ type HookLaneContext = { runKind?: HookRunKind; isHeartbeat?: boolean; sessionKey?: string; + trigger?: string; }; function resolveHookRunKind(ctx?: HookLaneContext): HookRunKind { @@ -869,12 +926,70 @@ function isBootPrompt(prompt: string | undefined): boolean { return /\bBOOT\.md\b/i.test(prompt) || /\bboot check\b/i.test(prompt) || /\bpost-restart\b/i.test(prompt); } -function shouldSkipMemoryInjection(prompt: string | undefined, ctx?: HookLaneContext): { skip: boolean; lane: string } { +const SYNTHETIC_TURN_PATTERNS: RegExp[] = [ + /^\s*\[PLAN_DECISION\]:/im, + /^\s*\[QUESTION_ANSWER\]:/im, + /^\s*\(session bootstrap\)\s*$/im, + /^\s*HEARTBEAT_OK\b/im, + /Read HEARTBEAT\.md if it exists/im, +]; + +function extractMessageText(message: unknown): string { + if (!message || typeof message !== "object") return ""; + const m = message as Record; + if (typeof m.content === "string") return m.content; + if (!Array.isArray(m.content)) return ""; + const parts: string[] = []; + for (const block of m.content) { + if (!block || typeof block !== "object") continue; + const text = (block as Record).text; + if (typeof text === "string" && text.trim()) parts.push(text); + } + return parts.join("\n"); +} + +function isSyntheticPromptText(prompt: string | undefined): boolean { + if (!prompt) return false; + if (isBootPrompt(prompt) || SYSTEM_EVENT_PATTERNS.test(prompt)) return true; + return SYNTHETIC_TURN_PATTERNS.some((pattern) => pattern.test(prompt)); +} + +function hasSyntheticUserTurn(messages: unknown[] | undefined): boolean { + if (!Array.isArray(messages) || messages.length === 0) return false; + for (let index = messages.length - 1; index >= 0; index -= 1) { + const message = messages[index]; + if (!message || typeof message !== "object") continue; + const role = (message as Record).role; + if (role !== "user") continue; + const text = extractMessageText(message); + return isSyntheticPromptText(text); + } + return false; +} + +export function classifyTurnForMemory( + prompt: string | undefined, + messages: unknown[] | undefined, + ctx?: HookLaneContext, +): { allow: boolean; reason: string } { const runKind = resolveHookRunKind(ctx); - if (ctx?.isHeartbeat) return { skip: true, lane: "heartbeat" }; - if (runKind !== "main") return { skip: true, lane: runKind }; - if (isBootPrompt(prompt)) return { skip: true, lane: "boot" }; - return { skip: false, lane: runKind }; + if (ctx?.isHeartbeat) return { allow: false, reason: "heartbeat" }; + if (runKind !== "main") return { allow: false, reason: runKind }; + if (ctx?.trigger === "system" || ctx?.trigger === "cron" || ctx?.trigger === "heartbeat") { + return { allow: false, reason: ctx.trigger }; + } + if (isSyntheticPromptText(prompt)) return { allow: false, reason: "synthetic-prompt" }; + if (hasSyntheticUserTurn(messages)) return { allow: false, reason: "synthetic-user-turn" }; + return { allow: true, reason: "real-user-turn" }; +} + +function shouldSkipMemoryInjection( + prompt: string | undefined, + messages: unknown[] | undefined, + ctx?: HookLaneContext, +): { skip: boolean; lane: string } { + const decision = classifyTurnForMemory(prompt, messages, ctx); + return { skip: !decision.allow, lane: decision.reason }; } // --- Conversational junk pre-filter --- @@ -1316,7 +1431,127 @@ export function formatMemoryContext( // --- Message extraction (with junk filter) --- -function extractMessages(rawMessages: unknown[]): Array<{ role: string; content: string }> { +function clampText(text: string, maxChars: number): string { + if (maxChars <= 0) return ""; + if (text.length <= maxChars) return text; + return `${text.slice(0, Math.max(0, maxChars - 1)).trimEnd()}…`; +} + +function sanitizeShadowLogKey(value: string): string { + const cleaned = (value || "default").replace(/[^a-zA-Z0-9._-]/g, "_").slice(0, 120); + return cleaned || "default"; +} + +function buildGBrainShadowLogPath(ownerId: string): string { + const pluginDir = typeof __dirname === "string" ? __dirname : dirname(__filename); + const safeOwnerId = sanitizeShadowLogKey(ownerId); + return join(pluginDir, "shadow-logs", `gbrain-shadow-${safeOwnerId}.jsonl`); +} + +function appendGBrainShadowLog(ownerId: string, maxEntries: number, event: GBrainShadowEvent): void { + try { + const logPath = buildGBrainShadowLogPath(ownerId); + const logDir = dirname(logPath); + if (!existsSync(logDir)) mkdirSync(logDir, { recursive: true }); + + const line = `${JSON.stringify(event)}\n`; + appendFileSync(logPath, line, "utf8"); + + if (maxEntries > 0) { + try { + const lines = readFileSync(logPath, "utf8").split("\n").filter(Boolean); + if (lines.length > maxEntries) { + writeFileSync(logPath, `${lines.slice(-maxEntries).join("\n")}\n`, "utf8"); + } + } catch { + // best-effort retention trim only + } + } + } catch { + // Observe-only logging must never break authoritative paths. + } +} + +export function getGBrainShadowLogPath(ownerId: string): string { + return buildGBrainShadowLogPath(ownerId); +} + +export function createGBrainShadowEvent( + params: { + phase: "recall" | "capture"; + sessionId?: string; + turnId?: string; + providerBaseUrl: string; + model: string; + prompt?: string; + conversation?: Array<{ role: string; content: string }>; + maxPromptChars: number; + status: "skipped" | "simulated" | "disabled"; + reason?: string; + note: string; + divergenceFromAuthoritative?: string; + gbrainRetrieval?: { attempted: boolean; ok: boolean; query?: string; hits?: Array<{ slug: string; preview: string }>; summary?: string }; + }, +): GBrainShadowEvent { + return { + schemaVersion: "gbrain-shadow-v1", + ts: new Date().toISOString(), + phase: params.phase, + sessionId: params.sessionId, + turnId: params.turnId, + mode: "observe", + provider: { + baseUrl: params.providerBaseUrl, + model: params.model, + liveCall: false, + }, + gbrainRetrieval: params.gbrainRetrieval, + promptPreview: params.prompt ? clampText(params.prompt, params.maxPromptChars) : undefined, + conversationPreview: params.conversation?.map((msg) => ({ + role: msg.role, + content: clampText(msg.content, Math.max(80, Math.floor(params.maxPromptChars / 2))), + })), + status: params.status, + reason: params.reason, + note: params.note, + source: "gbrain-shadow-scaffold", + divergenceFromAuthoritative: params.divergenceFromAuthoritative, + }; +} + +function maybeLogGBrainShadowEvent(cfg: EvaMemoryConfig, event: GBrainShadowEvent): void { + if (!cfg.gbrainShadowEnabled || !cfg.gbrainShadowLogEnabled) return; + appendGBrainShadowLog(cfg.ownerId, cfg.gbrainShadowLogMaxEntries, event); +} + +function runGBrainShadowSearch(query: string, limit = 3): { attempted: boolean; ok: boolean; query?: string; hits?: Array<{ slug: string; preview: string }>; summary?: string } { + const q = clampText(query.trim(), 240); + if (!q) return { attempted: false, ok: false, summary: "Empty query." }; + try { + const res = spawnSync("bun", ["run", "src/cli.ts", "search", q, "--limit", String(limit)], { + cwd: "/Users/lume/gbrain", + encoding: "utf8", + timeout: 15000, + maxBuffer: 1024 * 1024, + }); + if (res.status !== 0) { + return { attempted: true, ok: false, query: q, summary: (res.stderr || res.stdout || `exit ${res.status}`).trim().slice(0, 240) }; + } + const lines = (res.stdout || "").split("\n").map((x) => x.trim()).filter(Boolean).slice(0, limit); + const hits = lines.map((line) => { + const match = line.match(/^\[[^\]]+\]\s+([^\s]+)\s+--\s+(.*)$/); + return { + slug: match?.[1] || line.slice(0, 80), + preview: clampText(match?.[2] || line, 160), + }; + }); + return { attempted: true, ok: true, query: q, hits, summary: hits.length ? `Found ${hits.length} doc hits.` : "No doc hits." }; + } catch (err) { + return { attempted: true, ok: false, query: q, summary: err instanceof Error ? err.message.slice(0, 240) : String(err).slice(0, 240) }; + } +} + +export function extractMessages(rawMessages: unknown[]): Array<{ role: string; content: string }> { const result: Array<{ role: string; content: string }> = []; for (const msg of rawMessages.slice(-10)) { @@ -1353,6 +1588,9 @@ function extractMessages(rawMessages: unknown[]): Array<{ role: string; content: // Skip user messages matching trivial/continuation patterns if (role === "user" && TRIVIAL_CAPTURE_PATTERNS.some((p) => p.test(text))) continue; + // Skip synthetic control/system wrapper turns even when they entered as user text + if (isSyntheticPromptText(text)) continue; + result.push({ role, content: text }); } @@ -1379,6 +1617,15 @@ const cortexPlugin = { autoRecall: { type: "boolean" }, autoCapture: { type: "boolean" }, shadowMode: { type: "boolean", description: "Shadow mode — capture runs extraction but skips storage (dry-run)" }, + gbrainShadowEnabled: { type: "boolean", description: "Enable GBrain shadow observe-only scaffolding (default: false)" }, + gbrainShadowCapture: { type: "boolean", description: "Run observe-only GBrain shadow logging on capture path (default: true)" }, + gbrainShadowRecall: { type: "boolean", description: "Run observe-only GBrain shadow logging on recall path (default: true)" }, + gbrainShadowLogEnabled: { type: "boolean", description: "Persist timestamped GBrain shadow contribution logs (default: true)" }, + gbrainShadowMaxPromptChars: { type: "number", description: "Max chars to keep in GBrain shadow previews (default: 2000)" }, + gbrainShadowLogMaxEntries: { type: "number", description: "Max shadow log entries to retain per owner (default: 200)" }, + gbrainShadowProviderBaseUrl: { type: "string", description: "Observe-only GBrain shadow provider base URL metadata or optional live shadow endpoint (default: https://api.minimax.io/anthropic)" }, + gbrainShadowModel: { type: "string", description: "Observe-only GBrain shadow model metadata or optional live shadow model (default: MiniMax-M2.7-HighSpeed)" }, + gbrainShadowApiKey: { type: "string", description: "Reserved for future real GBrain shadow execution; unused in the current scaffold" }, retrievalBudget: { type: "number" }, maxInjectionChars: { type: "number" }, maxInjectedMemories: { type: "number", description: "Max memories to inject per turn (default: 8)" }, @@ -1434,7 +1681,7 @@ const cortexPlugin = { } api.logger.info( - `cortex: registered (cortex=${cfg.cortexUrl}, owner=${cfg.ownerId}, recall=${cfg.autoRecall}, capture=${cfg.autoCapture}, shadow=${cfg.shadowMode})`, + `cortex: registered (cortex=${cfg.cortexUrl}, owner=${cfg.ownerId}, recall=${cfg.autoRecall}, capture=${cfg.autoCapture}, shadow=${cfg.shadowMode}, gbrainShadow=${cfg.gbrainShadowEnabled ? "on" : "off"}, gbrainModel=${cfg.gbrainShadowModel})`, ); // ------------------------------------------------------------------------- @@ -1838,7 +2085,10 @@ const cortexPlugin = { const startMs = Date.now(); const blocks: string[] = []; - const laneDecision = shouldSkipMemoryInjection(event.prompt, ctx as HookLaneContext); + const laneDecision = shouldSkipMemoryInjection(event.prompt, event.messages, { + ...(ctx as HookLaneContext), + trigger: (ctx as { trigger?: string }).trigger, + }); if (laneDecision.skip) { api.logger.info(`cortex: skipping recall injection for lane=${laneDecision.lane}`); return; @@ -1846,7 +2096,11 @@ const cortexPlugin = { // --- Fetch contextual memories (+ optional cornerstones) --- if (cfg.autoRecall) { - const doRetrieve = event.prompt && isMemoryRelevant(event.prompt); + const turnDecision = classifyTurnForMemory(event.prompt, event.messages, { + ...(ctx as HookLaneContext), + trigger: (ctx as { trigger?: string }).trigger, + }); + const doRetrieve = turnDecision.allow && event.prompt && isMemoryRelevant(event.prompt); const doCornerstones = cfg.injectCornerstones; // default false — cornerstones in SOUL.md // --- Memory retrieval (server-first, local fallback) --- @@ -1924,6 +2178,24 @@ const cortexPlugin = { const screened = cfg.enableInjectionScreening ? screenInjectionCandidates(filtered, event.prompt ?? "", cfg, (msg) => api.logger.info(msg)) : filtered; + + if (cfg.gbrainShadowEnabled && cfg.gbrainShadowRecall) { + const gbrainRetrieval = runGBrainShadowSearch(event.prompt ?? "", 3); + maybeLogGBrainShadowEvent(cfg, createGBrainShadowEvent({ + phase: "recall", + sessionId: ctx.sessionKey, + turnId: ctx.sessionKey, + providerBaseUrl: cfg.gbrainShadowProviderBaseUrl, + model: cfg.gbrainShadowModel, + prompt: event.prompt, + maxPromptChars: cfg.gbrainShadowMaxPromptChars, + status: "simulated", + note: "Observe-only recall seam. Logged real GBrain docs retrieval without affecting authoritative injection.", + divergenceFromAuthoritative: "GBrain shadow search runs for comparison only. Cortex remains the authoritative injected path.", + gbrainRetrieval, + })); + } + const context = formatMemoryContext( screened, cfg.maxInjectionChars, @@ -1949,6 +2221,22 @@ const cortexPlugin = { api.logger.warn(`cortex: retrieval took ${elapsed}ms, skipping memory injection (cornerstones still injected)`); } } + } else if (cfg.gbrainShadowEnabled && cfg.gbrainShadowRecall && event.prompt) { + const gbrainRetrieval = runGBrainShadowSearch(event.prompt ?? "", 3); + maybeLogGBrainShadowEvent(cfg, createGBrainShadowEvent({ + phase: "recall", + sessionId: ctx.sessionKey, + turnId: ctx.sessionKey, + providerBaseUrl: cfg.gbrainShadowProviderBaseUrl, + model: cfg.gbrainShadowModel, + prompt: event.prompt, + maxPromptChars: cfg.gbrainShadowMaxPromptChars, + status: "skipped", + reason: "no-memory-items", + note: "Observe-only recall seam ran, but authoritative recall returned no items.", + divergenceFromAuthoritative: "GBrain shadow search still ran for comparison, but nothing was injected because Cortex had no items.", + gbrainRetrieval, + })); } } @@ -1966,8 +2254,12 @@ const cortexPlugin = { // Skip noisy sessions (subagents, crons, isolated, heartbeats, boot checks) const key = ctx.sessionKey ?? ""; if (key.includes(":subagent:") || key.includes(":cron:") || key.includes(":isolated:")) return; - const hookCtx = ctx as HookLaneContext; - if (hookCtx.isHeartbeat) return; + const hookCtx = { + ...(ctx as HookLaneContext), + trigger: (ctx as { trigger?: string }).trigger, + }; + const turnDecision = classifyTurnForMemory(undefined, event.messages, hookCtx); + if (!turnDecision.allow) return; const messages = extractMessages(event.messages); @@ -1979,6 +2271,23 @@ const cortexPlugin = { // Skip system events (sub-agent completions, exec notifications) — not worth extracting if (SYSTEM_EVENT_PATTERNS.test(joined)) return; + if (cfg.gbrainShadowEnabled && cfg.gbrainShadowCapture) { + const gbrainRetrieval = runGBrainShadowSearch(messages.map((m) => m.content).join(" "), 3); + maybeLogGBrainShadowEvent(cfg, createGBrainShadowEvent({ + phase: "capture", + sessionId: ctx.sessionKey, + turnId: ctx.sessionKey, + providerBaseUrl: cfg.gbrainShadowProviderBaseUrl, + model: cfg.gbrainShadowModel, + conversation: messages, + maxPromptChars: cfg.gbrainShadowMaxPromptChars, + status: "simulated", + note: "Observe-only capture seam. Logged real GBrain docs retrieval metadata without affecting authoritative storage.", + divergenceFromAuthoritative: "GBrain shadow search runs for comparison only. Cortex remains the authoritative storage path.", + gbrainRetrieval, + })); + } + // Fire and forget — no await, no blocking const capturePromise = client.remember(messages, ctx.sessionKey, cfg.shadowMode); if (capturePromise && typeof capturePromise.catch === "function") {