@xfabric/memory 0.2.10 → 0.2.11

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.
@@ -1,21 +1,30 @@
1
1
  /**
2
2
  * OpenCode plugin for semantic memory search
3
- * Exposes memory_search, memory_get, and memory_write tools to AI agents
4
- * Includes memory flush trigger before session compaction
3
+ * Exposes memory_search, memory_get, memory_write, and memory_flush tools to AI agents
4
+ * Includes memory flush trigger before session compaction with LLM extraction support
5
+ * Supports indexing OpenCode session transcripts for searchable conversation history
5
6
  */
6
7
  import { tool } from "@opencode-ai/plugin/tool";
7
8
  import { homedir } from "node:os";
8
- import { join, dirname } from "node:path";
9
+ import { join } from "node:path";
9
10
  import { MemoryManager } from "../memory-manager.js";
11
+ import { DEFAULT_MEMORY_FLUSH_PROMPT, DEFAULT_MEMORY_FLUSH_SYSTEM_PROMPT, } from "../flush/index.js";
10
12
  let manager = null;
11
13
  /**
12
- * Get the XDG data directory for opencode
14
+ * Get the XDG data directory for memory storage
13
15
  * Follows XDG Base Directory Specification
14
16
  */
15
17
  function getDataDir() {
16
18
  const xdgDataHome = process.env.XDG_DATA_HOME || join(homedir(), ".local", "share");
17
19
  return join(xdgDataHome, "memory");
18
20
  }
21
+ /**
22
+ * Get the OpenCode sessions directory
23
+ */
24
+ function getSessionsDir() {
25
+ const xdgDataHome = process.env.XDG_DATA_HOME || join(homedir(), ".local", "share");
26
+ return join(xdgDataHome, "opencode", "storage", "message");
27
+ }
19
28
  /**
20
29
  * Generate a default filename based on current date
21
30
  */
@@ -29,12 +38,13 @@ function generateDefaultFilename() {
29
38
  async function getManager() {
30
39
  if (!manager) {
31
40
  const memoryDir = getDataDir();
41
+ const sessionsDir = getSessionsDir();
32
42
  // Ensure memory directories exist (base + subfolder for markdown files)
33
43
  const { mkdir } = await import("node:fs/promises");
34
44
  await mkdir(join(memoryDir, "memory"), { recursive: true });
35
- manager = await MemoryManager.create({
45
+ const config = {
36
46
  agentId: "opencode-agent",
37
- workspaceDir: memoryDir, // Index markdown files from memory directory
47
+ workspaceDir: memoryDir,
38
48
  provider: "auto",
39
49
  remote: {
40
50
  apiKey: process.env.OPENROUTER_API_KEY || process.env.OPENAI_API_KEY,
@@ -44,28 +54,53 @@ async function getManager() {
44
54
  },
45
55
  sync: {
46
56
  enabled: true,
47
- onSearch: true, // Re-sync before search if files changed
57
+ onSearch: true,
58
+ syncSessions: true,
59
+ sessions: {
60
+ deltaBytes: 4096,
61
+ deltaMessages: 5,
62
+ },
48
63
  },
49
- });
64
+ sessionsDir,
65
+ };
66
+ // Add sessionFormat for OpenCode
67
+ config.sessionFormat = "opencode";
68
+ manager = await MemoryManager.create(config);
50
69
  }
51
70
  return manager;
52
71
  }
53
72
  /**
54
73
  * Memory flush prompt - injected before session compaction
74
+ * Enhanced with specific guidance for memory extraction
75
+ */
76
+ const MEMORY_FLUSH_CONTEXT = `
77
+ MEMORY FLUSH: The session is about to be compacted.
78
+
79
+ Before compaction, analyze the conversation and save important information to durable memory using the memory_write tool:
80
+
81
+ 1. **User Preferences** - Settings, coding style, preferred tools
82
+ 2. **Key Decisions** - Technical choices made, rationale discussed
83
+ 3. **Important Facts** - Project details, codebase knowledge, domain info
84
+ 4. **TODOs & Action Items** - Pending tasks, follow-ups needed
85
+ 5. **Context** - Information useful for future sessions
86
+
87
+ Format as markdown with clear headings. Each memory should be self-contained.
88
+
89
+ If nothing important needs to be saved, you may skip this step.
90
+ `.trim();
91
+ /**
92
+ * Extended memory flush context for LLM extraction
55
93
  */
56
- const MEMORY_FLUSH_CONTEXT = [
57
- "MEMORY FLUSH: The session is about to be compacted.",
58
- "Before compaction, save any important information to durable memory using the memory_write tool.",
59
- "Consider saving: user preferences, decisions made, important facts, project context, TODOs.",
60
- "If nothing needs to be saved, you may skip this step.",
61
- ].join(" ");
94
+ const MEMORY_FLUSH_SYSTEM = DEFAULT_MEMORY_FLUSH_SYSTEM_PROMPT;
95
+ const MEMORY_FLUSH_USER = DEFAULT_MEMORY_FLUSH_PROMPT;
62
96
  export const MemoryPlugin = async (_input) => {
63
97
  const memoryDir = getDataDir();
64
98
  return {
65
99
  tool: {
66
100
  memory_search: tool({
67
- description: "Search semantic memory for relevant information from indexed markdown files. " +
68
- "Use this to find past context, preferences, notes, or any stored knowledge.",
101
+ description: "Search semantic memory for relevant information from indexed markdown files and session history. " +
102
+ "Use this to find past context, preferences, notes, decisions, or any stored knowledge. " +
103
+ "Also searches indexed conversation history from previous sessions.",
69
104
  args: {
70
105
  query: tool.schema.string().describe("Natural language search query"),
71
106
  maxResults: tool.schema
@@ -82,7 +117,7 @@ export const MemoryPlugin = async (_input) => {
82
117
  if (results.length === 0) {
83
118
  return JSON.stringify({
84
119
  status: "no_results",
85
- message: "No matching content found in memory.",
120
+ message: "No matching content found in memory or session history.",
86
121
  query: args.query,
87
122
  });
88
123
  }
@@ -90,6 +125,7 @@ export const MemoryPlugin = async (_input) => {
90
125
  status: "success",
91
126
  results: results.map((r) => ({
92
127
  path: r.path,
128
+ source: r.source,
93
129
  lines: `${r.startLine}-${r.endLine}`,
94
130
  score: r.score.toFixed(3),
95
131
  snippet: r.snippet,
@@ -166,7 +202,7 @@ export const MemoryPlugin = async (_input) => {
166
202
  },
167
203
  async execute(args) {
168
204
  try {
169
- const { writeFile, readFile, mkdir } = await import("node:fs/promises");
205
+ const mgr = await getManager();
170
206
  // Determine filename
171
207
  let filename = args.filename?.trim();
172
208
  if (!filename) {
@@ -176,30 +212,116 @@ export const MemoryPlugin = async (_input) => {
176
212
  if (!filename.includes("/")) {
177
213
  filename = `memory/${filename}`;
178
214
  }
179
- const absPath = join(memoryDir, filename);
180
- // Ensure directory exists
181
- await mkdir(dirname(absPath), { recursive: true });
182
- // Default to append mode
183
- const shouldAppend = args.append !== false;
184
- let finalContent = args.content;
185
- if (shouldAppend) {
186
- try {
187
- const existing = await readFile(absPath, "utf-8");
188
- // Add separator if file has content
189
- if (existing.trim()) {
190
- finalContent = existing.trimEnd() + "\n\n---\n\n" + args.content;
191
- }
192
- }
193
- catch {
194
- // File doesn't exist, just use new content
215
+ const result = await mgr.writeMemory(args.content, {
216
+ filename,
217
+ append: args.append,
218
+ });
219
+ if (result.success) {
220
+ return JSON.stringify({
221
+ status: "success",
222
+ path: result.path,
223
+ message: args.append !== false
224
+ ? "Content appended to memory file"
225
+ : "Content written to memory file",
226
+ bytesWritten: result.bytesWritten,
227
+ }, null, 2);
228
+ }
229
+ else {
230
+ return JSON.stringify({
231
+ status: "error",
232
+ error: result.error,
233
+ });
234
+ }
235
+ }
236
+ catch (error) {
237
+ return JSON.stringify({
238
+ status: "error",
239
+ error: error instanceof Error ? error.message : String(error),
240
+ });
241
+ }
242
+ },
243
+ }),
244
+ memory_flush: tool({
245
+ description: "Manually trigger memory extraction from the current session. " +
246
+ "Analyzes conversation history and saves important information to durable memory. " +
247
+ "Use this when you want to persist important context before it's lost.",
248
+ args: {
249
+ sessionId: tool.schema
250
+ .string()
251
+ .optional()
252
+ .describe("Session ID to extract memories from (optional, uses current session if not specified)"),
253
+ },
254
+ async execute(args) {
255
+ try {
256
+ const mgr = await getManager();
257
+ const result = await mgr.flushMemories({
258
+ sessionId: args.sessionId,
259
+ onProgress: (_status) => {
260
+ // Progress is logged internally
261
+ },
262
+ });
263
+ if (result.success) {
264
+ if (result.noReply) {
265
+ return JSON.stringify({
266
+ status: "success",
267
+ message: "No important memories to save at this time.",
268
+ memoriesWritten: 0,
269
+ });
195
270
  }
271
+ return JSON.stringify({
272
+ status: "success",
273
+ message: `Successfully extracted and saved ${result.memoriesWritten} memory entries.`,
274
+ memoriesWritten: result.memoriesWritten,
275
+ bytesWritten: result.bytesWritten,
276
+ }, null, 2);
277
+ }
278
+ else {
279
+ return JSON.stringify({
280
+ status: "error",
281
+ error: result.error || "Failed to flush memories",
282
+ });
196
283
  }
197
- await writeFile(absPath, finalContent, "utf-8");
284
+ }
285
+ catch (error) {
286
+ return JSON.stringify({
287
+ status: "error",
288
+ error: error instanceof Error ? error.message : String(error),
289
+ });
290
+ }
291
+ },
292
+ }),
293
+ memory_status: tool({
294
+ description: "Get the status of the memory system including indexed files, sessions, and search capabilities.",
295
+ args: {},
296
+ async execute() {
297
+ try {
298
+ const mgr = await getManager();
299
+ const status = mgr.getStatus();
198
300
  return JSON.stringify({
199
301
  status: "success",
200
- path: filename,
201
- message: shouldAppend ? "Content appended to memory file" : "Content written to memory file",
202
- bytesWritten: Buffer.byteLength(finalContent, "utf-8"),
302
+ memory: {
303
+ files: status.sources.memory.files,
304
+ chunks: status.sources.memory.chunks,
305
+ },
306
+ sessions: {
307
+ files: status.sources.sessions.files,
308
+ chunks: status.sources.sessions.chunks,
309
+ },
310
+ provider: {
311
+ id: status.provider.id,
312
+ model: status.provider.model,
313
+ fallbackActive: status.provider.fallbackActivated,
314
+ },
315
+ search: {
316
+ vectorSearch: status.vector.sqliteVecAvailable ? "sqlite-vec" : "js-fallback",
317
+ ftsSearch: status.fts.available,
318
+ },
319
+ sync: {
320
+ watching: status.sync.watching,
321
+ lastSync: status.sync.lastSyncAt
322
+ ? new Date(status.sync.lastSyncAt).toISOString()
323
+ : null,
324
+ },
203
325
  }, null, 2);
204
326
  }
205
327
  catch (error) {
@@ -213,8 +335,33 @@ export const MemoryPlugin = async (_input) => {
213
335
  },
214
336
  // Memory flush hook - triggered before session compaction
215
337
  "experimental.session.compacting": async (_input, output) => {
216
- // Inject memory flush context into the compaction prompt
217
- output.context.push(MEMORY_FLUSH_CONTEXT);
338
+ // The compaction hook is triggered when session is about to be compacted
339
+ // We inject context to prompt the agent to save important memories
340
+ // Try to get manager for potential LLM-based extraction
341
+ try {
342
+ const mgr = await getManager();
343
+ const flushConfig = mgr.getFlushConfig();
344
+ if (flushConfig?.enabled) {
345
+ // Add enhanced context for memory flush
346
+ output.context.push(MEMORY_FLUSH_CONTEXT);
347
+ // Also add the system-level guidance
348
+ output.context.push(`
349
+ System guidance for memory extraction:
350
+ ${MEMORY_FLUSH_SYSTEM}
351
+
352
+ User instruction:
353
+ ${MEMORY_FLUSH_USER}
354
+ `.trim());
355
+ }
356
+ else {
357
+ // Basic reminder if flush is disabled
358
+ output.context.push(MEMORY_FLUSH_CONTEXT);
359
+ }
360
+ }
361
+ catch {
362
+ // Fallback to basic context injection
363
+ output.context.push(MEMORY_FLUSH_CONTEXT);
364
+ }
218
365
  },
219
366
  };
220
367
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@ export { FileWatcher, type FileWatcherOptions } from "./watcher.js";
2
2
  export { SessionMonitor, type SessionMonitorOptions } from "./session-monitor.js";
3
3
  export { minimatch } from "./minimatch.js";
4
4
  export { onSessionTranscriptUpdate, emitSessionTranscriptUpdate, getSessionListenerCount, type SessionTranscriptUpdate, type SessionTranscriptListener, } from "./session-events.js";
5
+ export { scanOpenCodeSessions, buildOpenCodeSessionEntry, extractOpenCodeText, getOpenCodeSessionHistory, watchOpenCodeSessions, } from "./opencode-session.js";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,GAC/B,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC"}
@@ -2,4 +2,5 @@ export { FileWatcher } from "./watcher.js";
2
2
  export { SessionMonitor } from "./session-monitor.js";
3
3
  export { minimatch } from "./minimatch.js";
4
4
  export { onSessionTranscriptUpdate, emitSessionTranscriptUpdate, getSessionListenerCount, } from "./session-events.js";
5
+ export { scanOpenCodeSessions, buildOpenCodeSessionEntry, extractOpenCodeText, getOpenCodeSessionHistory, watchOpenCodeSessions, } from "./opencode-session.js";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,cAAc,EAA8B,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,GAGxB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,cAAc,EAA8B,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,GAGxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * OpenCode session format parser
3
+ * Handles JSON-per-message format from ~/.local/share/opencode/storage/message/
4
+ */
5
+ import type { OpenCodeMessage, OpenCodeSessionEntry } from "../types.js";
6
+ /**
7
+ * Scan OpenCode session directories and return session entries
8
+ */
9
+ export declare function scanOpenCodeSessions(basePath: string): Promise<OpenCodeSessionEntry[]>;
10
+ /**
11
+ * Build a session entry from an OpenCode session directory
12
+ */
13
+ export declare function buildOpenCodeSessionEntry(sessionDir: string): Promise<OpenCodeSessionEntry | null>;
14
+ /**
15
+ * Extract text content from an OpenCode message
16
+ */
17
+ export declare function extractOpenCodeText(msg: OpenCodeMessage): string | null;
18
+ /**
19
+ * Get session history as formatted text (for LLM context)
20
+ */
21
+ export declare function getOpenCodeSessionHistory(sessionDir: string, options?: {
22
+ maxMessages?: number;
23
+ includeToolResults?: boolean;
24
+ }): Promise<string>;
25
+ /**
26
+ * Watch for changes in OpenCode session directory
27
+ * Returns a cleanup function
28
+ */
29
+ export declare function watchOpenCodeSessions(basePath: string, onSessionUpdate: (sessionId: string, sessionDir: string) => void, options?: {
30
+ debounceMs?: number;
31
+ }): () => void;
32
+ //# sourceMappingURL=opencode-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-session.d.ts","sourceRoot":"","sources":["../../src/sync/opencode-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EACV,eAAe,EAEf,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA0BjC;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAmEtC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAuBvE;AAsCD;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GACA,OAAO,CAAC,MAAM,CAAC,CAoCjB;AAgCD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,EAChE,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,MAAM,IAAI,CA6EZ"}