openclaw-cortex-memory 0.1.0-Alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +198 -0
  2. package/SKILL.md +263 -0
  3. package/dist/index.d.ts +90 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +1871 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/openclaw.plugin.json +295 -0
  8. package/dist/src/engine/memory_engine.d.ts +20 -0
  9. package/dist/src/engine/memory_engine.d.ts.map +1 -0
  10. package/dist/src/engine/memory_engine.js +3 -0
  11. package/dist/src/engine/memory_engine.js.map +1 -0
  12. package/dist/src/engine/ts_engine.d.ts +69 -0
  13. package/dist/src/engine/ts_engine.d.ts.map +1 -0
  14. package/dist/src/engine/ts_engine.js +390 -0
  15. package/dist/src/engine/ts_engine.js.map +1 -0
  16. package/dist/src/engine/types.d.ts +53 -0
  17. package/dist/src/engine/types.d.ts.map +1 -0
  18. package/dist/src/engine/types.js +3 -0
  19. package/dist/src/engine/types.js.map +1 -0
  20. package/dist/src/reflect/reflector.d.ts +32 -0
  21. package/dist/src/reflect/reflector.d.ts.map +1 -0
  22. package/dist/src/reflect/reflector.js +124 -0
  23. package/dist/src/reflect/reflector.js.map +1 -0
  24. package/dist/src/rules/rule_store.d.ts +22 -0
  25. package/dist/src/rules/rule_store.d.ts.map +1 -0
  26. package/dist/src/rules/rule_store.js +102 -0
  27. package/dist/src/rules/rule_store.js.map +1 -0
  28. package/dist/src/session/session_end.d.ts +30 -0
  29. package/dist/src/session/session_end.d.ts.map +1 -0
  30. package/dist/src/session/session_end.js +209 -0
  31. package/dist/src/session/session_end.js.map +1 -0
  32. package/dist/src/store/read_store.d.ts +44 -0
  33. package/dist/src/store/read_store.d.ts.map +1 -0
  34. package/dist/src/store/read_store.js +239 -0
  35. package/dist/src/store/read_store.js.map +1 -0
  36. package/dist/src/store/write_store.d.ts +31 -0
  37. package/dist/src/store/write_store.d.ts.map +1 -0
  38. package/dist/src/store/write_store.js +138 -0
  39. package/dist/src/store/write_store.js.map +1 -0
  40. package/dist/src/sync/session_sync.d.ts +28 -0
  41. package/dist/src/sync/session_sync.d.ts.map +1 -0
  42. package/dist/src/sync/session_sync.js +214 -0
  43. package/dist/src/sync/session_sync.js.map +1 -0
  44. package/index.ts +2071 -0
  45. package/openclaw.plugin.json +295 -0
  46. package/package.json +55 -0
  47. package/scripts/cli.js +262 -0
  48. package/scripts/install.js +27 -0
  49. package/scripts/uninstall.js +212 -0
@@ -0,0 +1,390 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createTsEngine = createTsEngine;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ function createTsEngine(deps) {
40
+ function asRecord(value) {
41
+ if (typeof value === "object" && value !== null) {
42
+ return value;
43
+ }
44
+ return null;
45
+ }
46
+ function readJsonl(filePath) {
47
+ if (!fs.existsSync(filePath)) {
48
+ return [];
49
+ }
50
+ const lines = fs.readFileSync(filePath, "utf-8").split(/\r?\n/).filter(Boolean);
51
+ const records = [];
52
+ for (const line of lines) {
53
+ try {
54
+ records.push(JSON.parse(line));
55
+ }
56
+ catch { }
57
+ }
58
+ return records;
59
+ }
60
+ function writeJsonl(filePath, records) {
61
+ const dir = path.dirname(filePath);
62
+ if (!fs.existsSync(dir)) {
63
+ fs.mkdirSync(dir, { recursive: true });
64
+ }
65
+ const content = records.map(r => JSON.stringify(r)).join("\n");
66
+ fs.writeFileSync(filePath, content ? `${content}\n` : "", "utf-8");
67
+ }
68
+ function memoryFiles() {
69
+ return {
70
+ activePath: path.join(deps.memoryRoot, "sessions", "active", "sessions.jsonl"),
71
+ archivePath: path.join(deps.memoryRoot, "sessions", "archive", "sessions.jsonl"),
72
+ };
73
+ }
74
+ async function storeEvent(args, _context) {
75
+ try {
76
+ if (!args.summary?.trim()) {
77
+ return { success: false, error: "Invalid input provided. Missing 'summary' parameter." };
78
+ }
79
+ const { archivePath } = memoryFiles();
80
+ const records = readJsonl(archivePath);
81
+ const id = `evt_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
82
+ records.push({
83
+ id,
84
+ timestamp: new Date().toISOString(),
85
+ summary: args.summary.trim(),
86
+ entities: args.entities ?? [],
87
+ outcome: args.outcome ?? "",
88
+ relations: args.relations ?? [],
89
+ source_file: "ts_store_event",
90
+ });
91
+ writeJsonl(archivePath, records);
92
+ return { success: true, data: { event_id: id } };
93
+ }
94
+ catch (error) {
95
+ return { success: false, error: String(error) };
96
+ }
97
+ }
98
+ async function queryGraph(args, _context) {
99
+ const entity = args.entity?.trim();
100
+ if (!entity) {
101
+ return { success: false, error: "Invalid input provided. Missing 'entity' parameter." };
102
+ }
103
+ const { archivePath } = memoryFiles();
104
+ const records = readJsonl(archivePath);
105
+ const nodes = new Map();
106
+ const edges = [];
107
+ for (const record of records) {
108
+ const entities = Array.isArray(record.entities) ? record.entities : [];
109
+ const named = entities.map(e => (typeof e === "string" ? e.trim() : "")).filter(Boolean);
110
+ if (!named.includes(entity)) {
111
+ continue;
112
+ }
113
+ for (const name of named) {
114
+ if (!nodes.has(name)) {
115
+ nodes.set(name, { id: name, type: "entity" });
116
+ }
117
+ }
118
+ for (const name of named) {
119
+ if (name !== entity) {
120
+ edges.push({ source: entity, target: name, type: "co_occurrence" });
121
+ }
122
+ }
123
+ }
124
+ return {
125
+ success: true,
126
+ data: {
127
+ entity,
128
+ nodes: [...nodes.values()],
129
+ edges,
130
+ },
131
+ };
132
+ }
133
+ async function deleteMemory(args, _context) {
134
+ const targetId = args.memory_id?.trim();
135
+ if (!targetId) {
136
+ return { success: false, error: "Invalid input provided. Missing 'memory_id' parameter." };
137
+ }
138
+ const { activePath, archivePath } = memoryFiles();
139
+ let removed = 0;
140
+ for (const filePath of [activePath, archivePath]) {
141
+ const records = readJsonl(filePath);
142
+ const filtered = records.filter(r => {
143
+ const id = typeof r.id === "string" ? r.id : "";
144
+ const keep = id !== targetId;
145
+ if (!keep) {
146
+ removed += 1;
147
+ }
148
+ return keep;
149
+ });
150
+ if (filtered.length !== records.length) {
151
+ writeJsonl(filePath, filtered);
152
+ }
153
+ }
154
+ return { success: removed > 0, data: { removed } };
155
+ }
156
+ async function updateMemory(args, _context) {
157
+ const targetId = args.memory_id?.trim();
158
+ if (!targetId) {
159
+ return { success: false, error: "Invalid input provided. Missing 'memory_id' parameter." };
160
+ }
161
+ const { activePath, archivePath } = memoryFiles();
162
+ let updated = 0;
163
+ for (const filePath of [activePath, archivePath]) {
164
+ const records = readJsonl(filePath);
165
+ let changed = false;
166
+ for (const record of records) {
167
+ const id = typeof record.id === "string" ? record.id : "";
168
+ if (id !== targetId) {
169
+ continue;
170
+ }
171
+ if (typeof args.text === "string") {
172
+ if (typeof record.content === "string") {
173
+ record.content = args.text;
174
+ }
175
+ else {
176
+ record.summary = args.text;
177
+ }
178
+ }
179
+ if (typeof args.type === "string") {
180
+ record.type = args.type;
181
+ }
182
+ if (typeof args.weight === "number") {
183
+ record.weight = args.weight;
184
+ }
185
+ record.updated_at = new Date().toISOString();
186
+ updated += 1;
187
+ changed = true;
188
+ }
189
+ if (changed) {
190
+ writeJsonl(filePath, records);
191
+ }
192
+ }
193
+ return { success: updated > 0, data: { updated } };
194
+ }
195
+ async function cleanupMemories(args, _context) {
196
+ const daysOld = typeof args.days_old === "number" && args.days_old > 0 ? Math.floor(args.days_old) : 90;
197
+ const cutoff = Date.now() - daysOld * 24 * 60 * 60 * 1000;
198
+ const { activePath, archivePath } = memoryFiles();
199
+ let deletedCount = 0;
200
+ for (const filePath of [activePath, archivePath]) {
201
+ const records = readJsonl(filePath);
202
+ const filtered = records.filter(record => {
203
+ const timestamp = typeof record.timestamp === "string" ? Date.parse(record.timestamp) : NaN;
204
+ if (!Number.isFinite(timestamp)) {
205
+ return true;
206
+ }
207
+ const keep = timestamp >= cutoff;
208
+ if (!keep) {
209
+ deletedCount += 1;
210
+ }
211
+ return keep;
212
+ });
213
+ if (filtered.length !== records.length) {
214
+ writeJsonl(filePath, filtered);
215
+ }
216
+ }
217
+ return { success: true, data: { deletedCount } };
218
+ }
219
+ async function runDiagnostics(_args, _context) {
220
+ const { activePath, archivePath } = memoryFiles();
221
+ const checks = [
222
+ { name: "Engine mode", passed: true, message: "TS engine active" },
223
+ { name: "Active sessions store", passed: fs.existsSync(activePath), message: activePath },
224
+ { name: "Archive sessions store", passed: fs.existsSync(archivePath), message: archivePath },
225
+ { name: "Core rules store", passed: fs.existsSync(path.join(deps.memoryRoot, "CORTEX_RULES.md")), message: "CORTEX_RULES.md checked" },
226
+ ];
227
+ return {
228
+ success: true,
229
+ data: {
230
+ status: "ok",
231
+ checks,
232
+ recommendations: [],
233
+ },
234
+ };
235
+ }
236
+ async function searchMemory(args, context) {
237
+ if (!args || !args.query) {
238
+ return {
239
+ success: false,
240
+ error: "Invalid input provided. Missing 'query' parameter.",
241
+ };
242
+ }
243
+ const result = await deps.readStore.searchMemory({
244
+ query: args.query,
245
+ topK: typeof args.top_k === "number" && args.top_k > 0 ? Math.floor(args.top_k) : 3,
246
+ });
247
+ return { success: true, data: result.results };
248
+ }
249
+ async function getHotContext(args, _context) {
250
+ const limit = typeof args.limit === "number" && args.limit > 0 ? Math.floor(args.limit) : 20;
251
+ const result = await deps.readStore.getHotContext({ limit });
252
+ return { success: true, data: result.context };
253
+ }
254
+ async function getAutoContext(args, context) {
255
+ const sessionId = deps.resolveSessionId(context);
256
+ const cached = deps.getCachedAutoSearch(sessionId);
257
+ const result = await deps.readStore.getAutoContext({
258
+ includeHot: args.include_hot !== false,
259
+ sessionId,
260
+ cachedAutoSearch: cached ?? undefined,
261
+ });
262
+ if (!result.auto_search && !result.hot_context) {
263
+ return {
264
+ success: true,
265
+ data: {
266
+ message: "No session-scoped auto-search results cached and hot context unavailable",
267
+ suggestion: "Send a user message in this session or call get_hot_context.",
268
+ },
269
+ };
270
+ }
271
+ return { success: true, data: result };
272
+ }
273
+ async function syncMemory(_args, _context) {
274
+ try {
275
+ const result = await deps.sessionSync.syncMemory();
276
+ return { success: true, data: result };
277
+ }
278
+ catch (error) {
279
+ deps.logger.warn(`TS sync_memory failed: ${error}`);
280
+ return { success: false, error: String(error) };
281
+ }
282
+ }
283
+ async function reflectMemory(_args, _context) {
284
+ try {
285
+ const result = await deps.reflector.reflectMemory();
286
+ return { success: true, data: result };
287
+ }
288
+ catch (error) {
289
+ deps.logger.warn(`TS reflect_memory failed: ${error}`);
290
+ return { success: false, error: String(error) };
291
+ }
292
+ }
293
+ async function promoteMemory(_args, _context) {
294
+ try {
295
+ const result = await deps.reflector.promoteMemory();
296
+ return { success: true, data: result };
297
+ }
298
+ catch (error) {
299
+ deps.logger.warn(`TS promote_memory failed: ${error}`);
300
+ return { success: false, error: String(error) };
301
+ }
302
+ }
303
+ async function onSessionEnd(payload, context) {
304
+ const payloadObj = asRecord(payload);
305
+ const sessionId = deps.resolveSessionId(context, payload);
306
+ const syncRecordsRaw = payloadObj?.sync_records;
307
+ const syncRecords = typeof syncRecordsRaw === "boolean" ? syncRecordsRaw : deps.defaultAutoSync;
308
+ try {
309
+ const result = await deps.sessionEnd.onSessionEnd({
310
+ sessionId,
311
+ syncRecords,
312
+ });
313
+ deps.logger.info(`TS session_end completed for ${sessionId}, events=${result.events_generated}`);
314
+ }
315
+ catch (error) {
316
+ deps.logger.warn(`TS session_end failed for ${sessionId}: ${error}`);
317
+ }
318
+ }
319
+ async function onMessage(payload, context) {
320
+ const normalized = deps.normalizeIncomingMessage(payload);
321
+ if (!normalized) {
322
+ return;
323
+ }
324
+ const { text, role, source } = normalized;
325
+ const sessionId = deps.resolveSessionId(context, payload);
326
+ try {
327
+ const writeResult = await deps.writeStore.writeMemory({
328
+ text,
329
+ role,
330
+ source,
331
+ sessionId,
332
+ });
333
+ if (writeResult.status === "ok") {
334
+ deps.logger.info(`TS write stored ${role} message for session ${sessionId}`);
335
+ }
336
+ else {
337
+ deps.logger.debug(`TS write skipped for session ${sessionId}: ${writeResult.reason || "unknown"}`);
338
+ }
339
+ }
340
+ catch (error) {
341
+ deps.logger.warn(`TS write failed for session ${sessionId}: ${error}`);
342
+ }
343
+ if (role === "user" && text.length > 5) {
344
+ try {
345
+ const searchResult = await deps.readStore.searchMemory({ query: text, topK: 3 });
346
+ if (searchResult.results.length > 0) {
347
+ deps.setSessionAutoSearchCache(sessionId, text, searchResult.results);
348
+ deps.logger.info(`TS auto-search cached ${searchResult.results.length} results for context`);
349
+ }
350
+ }
351
+ catch (error) {
352
+ deps.logger.debug(`TS auto-search skipped: ${error}`);
353
+ }
354
+ }
355
+ }
356
+ async function onTimer(payload, context) {
357
+ const payloadObj = asRecord(payload);
358
+ const action = typeof payloadObj?.action === "string" ? payloadObj.action : undefined;
359
+ if (action === "sync") {
360
+ await syncMemory({}, context);
361
+ return;
362
+ }
363
+ if (action === "reflect" || (!action && deps.autoReflect)) {
364
+ await reflectMemory({}, context);
365
+ return;
366
+ }
367
+ if (action === "promote") {
368
+ await promoteMemory({}, context);
369
+ }
370
+ }
371
+ return {
372
+ mode: "ts",
373
+ searchMemory,
374
+ getHotContext,
375
+ getAutoContext,
376
+ storeEvent,
377
+ queryGraph,
378
+ reflectMemory,
379
+ syncMemory,
380
+ promoteMemory,
381
+ deleteMemory,
382
+ updateMemory,
383
+ cleanupMemories,
384
+ runDiagnostics,
385
+ onMessage,
386
+ onSessionEnd,
387
+ onTimer,
388
+ };
389
+ }
390
+ //# sourceMappingURL=ts_engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts_engine.js","sourceRoot":"","sources":["../../../src/engine/ts_engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export type EngineMode = "ts";
2
+ export interface ToolContext {
3
+ agentId: string;
4
+ sessionId?: string;
5
+ workspaceId: string;
6
+ }
7
+ export interface ToolResult {
8
+ success: boolean;
9
+ data?: unknown;
10
+ error?: string;
11
+ errorCode?: string;
12
+ }
13
+ export interface SearchMemoryArgs {
14
+ query: string;
15
+ top_k?: number;
16
+ }
17
+ export interface StoreEventArgs {
18
+ summary: string;
19
+ entities?: Array<{
20
+ id?: string;
21
+ name?: string;
22
+ type?: string;
23
+ }>;
24
+ outcome?: string;
25
+ relations?: Array<{
26
+ source: string;
27
+ target: string;
28
+ type: string;
29
+ }>;
30
+ }
31
+ export interface QueryGraphArgs {
32
+ entity: string;
33
+ }
34
+ export interface GetHotContextArgs {
35
+ limit?: number;
36
+ }
37
+ export interface GetAutoContextArgs {
38
+ include_hot?: boolean;
39
+ }
40
+ export interface DeleteMemoryArgs {
41
+ memory_id: string;
42
+ }
43
+ export interface UpdateMemoryArgs {
44
+ memory_id: string;
45
+ text?: string;
46
+ type?: string;
47
+ weight?: number;
48
+ }
49
+ export interface CleanupMemoriesArgs {
50
+ days_old?: number;
51
+ memory_type?: string;
52
+ }
53
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engine/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC;AAE9B,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ interface LoggerLike {
2
+ debug: (message: string, ...args: unknown[]) => void;
3
+ info: (message: string, ...args: unknown[]) => void;
4
+ warn: (message: string, ...args: unknown[]) => void;
5
+ }
6
+ interface ReflectorOptions {
7
+ projectRoot: string;
8
+ dbPath?: string;
9
+ logger: LoggerLike;
10
+ ruleStore: {
11
+ addRule(args: {
12
+ sectionTitle: string;
13
+ content: string;
14
+ }): {
15
+ added: boolean;
16
+ reason?: string;
17
+ };
18
+ };
19
+ }
20
+ export declare function createReflector(options: ReflectorOptions): {
21
+ reflectMemory(): Promise<{
22
+ status: string;
23
+ message: string;
24
+ reflected_count: number;
25
+ }>;
26
+ promoteMemory(): Promise<{
27
+ status: string;
28
+ promoted_count: number;
29
+ }>;
30
+ };
31
+ export {};
32
+ //# sourceMappingURL=reflector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflector.d.ts","sourceRoot":"","sources":["../../../src/reflect/reflector.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrD;AAED,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE;QACT,OAAO,CAAC,IAAI,EAAE;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,OAAO,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/F,CAAC;CACH;AA2BD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG;IAC1D,aAAa,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvF,aAAa,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE,CA+DA"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createReflector = createReflector;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ function readJsonl(filePath) {
40
+ if (!fs.existsSync(filePath)) {
41
+ return [];
42
+ }
43
+ const lines = fs.readFileSync(filePath, "utf-8").split(/\r?\n/).filter(Boolean);
44
+ const results = [];
45
+ for (const line of lines) {
46
+ try {
47
+ const parsed = JSON.parse(line);
48
+ results.push(parsed);
49
+ }
50
+ catch { }
51
+ }
52
+ return results;
53
+ }
54
+ function textOf(record) {
55
+ const candidates = [record.summary, record.content, record.text, record.message, record.outcome];
56
+ for (const item of candidates) {
57
+ if (typeof item === "string" && item.trim()) {
58
+ return item.trim();
59
+ }
60
+ }
61
+ return "";
62
+ }
63
+ function createReflector(options) {
64
+ const memoryRoot = options.dbPath ? path.resolve(options.dbPath) : path.join(options.projectRoot, "data", "memory");
65
+ const activeSessionsPath = path.join(memoryRoot, "sessions", "active", "sessions.jsonl");
66
+ const archiveSessionsPath = path.join(memoryRoot, "sessions", "archive", "sessions.jsonl");
67
+ async function reflectMemory() {
68
+ const archiveRecords = readJsonl(archiveSessionsPath).slice(-100);
69
+ let reflected = 0;
70
+ for (const record of archiveRecords) {
71
+ const summary = textOf(record);
72
+ if (!summary) {
73
+ continue;
74
+ }
75
+ const outcome = typeof record.outcome === "string" ? record.outcome : "unknown";
76
+ const ruleText = `From historical event: ${summary}. Outcome: ${outcome}.`;
77
+ const added = options.ruleStore.addRule({
78
+ sectionTitle: "Reflected Rule",
79
+ content: ruleText,
80
+ });
81
+ if (added.added) {
82
+ reflected += 1;
83
+ }
84
+ }
85
+ options.logger.info(`TS reflector generated ${reflected} reflected rules`);
86
+ return { status: "ok", message: "Reflection completed", reflected_count: reflected };
87
+ }
88
+ async function promoteMemory() {
89
+ const activeRecords = readJsonl(activeSessionsPath).slice(-500);
90
+ const counter = new Map();
91
+ for (const record of activeRecords) {
92
+ const content = typeof record.content === "string" ? record.content.trim() : "";
93
+ if (!content) {
94
+ continue;
95
+ }
96
+ const existing = counter.get(content);
97
+ if (existing) {
98
+ existing.count += 1;
99
+ }
100
+ else {
101
+ counter.set(content, { content, count: 1 });
102
+ }
103
+ }
104
+ let promoted = 0;
105
+ const threshold = 3;
106
+ for (const item of counter.values()) {
107
+ if (item.count < threshold) {
108
+ continue;
109
+ }
110
+ const added = options.ruleStore.addRule({
111
+ sectionTitle: "Promoted Rule",
112
+ content: item.content,
113
+ });
114
+ if (added.added) {
115
+ promoted += 1;
116
+ }
117
+ }
118
+ options.logger.info(`TS reflector promoted ${promoted} rules`);
119
+ return { status: "ok", promoted_count: promoted };
120
+ }
121
+ options.logger.debug(`TS reflector initialized with memory root ${memoryRoot}`);
122
+ return { reflectMemory, promoteMemory };
123
+ }
124
+ //# sourceMappingURL=reflector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflector.js","sourceRoot":"","sources":["../../../src/reflect/reflector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ interface LoggerLike {
2
+ debug: (message: string, ...args: unknown[]) => void;
3
+ info: (message: string, ...args: unknown[]) => void;
4
+ warn: (message: string, ...args: unknown[]) => void;
5
+ }
6
+ interface RuleStoreOptions {
7
+ projectRoot: string;
8
+ dbPath?: string;
9
+ logger: LoggerLike;
10
+ }
11
+ export declare function createRuleStore(options: RuleStoreOptions): {
12
+ addRule(args: {
13
+ sectionTitle: string;
14
+ content: string;
15
+ }): {
16
+ added: boolean;
17
+ reason?: string;
18
+ hash?: string;
19
+ };
20
+ };
21
+ export {};
22
+ //# sourceMappingURL=rule_store.d.ts.map