@xfabric/memory 0.2.0 → 0.2.2

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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAyBlD,eAAO,MAAM,YAAY,EAAE,MA0G1B,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA0ClD,eAAO,MAAM,YAAY,EAAE,MAyG1B,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -3,19 +3,33 @@
3
3
  * Exposes memory_search and memory_get tools to AI agents
4
4
  */
5
5
  import { tool } from "@opencode-ai/plugin/tool";
6
+ import { homedir } from "node:os";
7
+ import { join } from "node:path";
6
8
  import { MemoryManager } from "../memory-manager.js";
7
9
  let manager = null;
8
- async function getManager(workspaceDir) {
10
+ /**
11
+ * Get the XDG data directory for opencode
12
+ * Follows XDG Base Directory Specification
13
+ */
14
+ function getDataDir() {
15
+ const xdgDataHome = process.env.XDG_DATA_HOME || join(homedir(), ".local", "share");
16
+ return join(xdgDataHome, "memory");
17
+ }
18
+ async function getManager() {
9
19
  if (!manager) {
20
+ const memoryDir = getDataDir();
21
+ // Ensure memory directory exists
22
+ const { mkdir } = await import("node:fs/promises");
23
+ await mkdir(memoryDir, { recursive: true });
10
24
  manager = await MemoryManager.create({
11
25
  agentId: "opencode-agent",
12
- workspaceDir,
26
+ workspaceDir: memoryDir, // Index markdown files from memory directory
13
27
  provider: "auto",
14
28
  remote: {
15
29
  apiKey: process.env.OPENROUTER_API_KEY || process.env.OPENAI_API_KEY,
16
30
  },
17
31
  store: {
18
- path: `${workspaceDir}/.memory/index.sqlite`,
32
+ path: join(memoryDir, "index.sqlite"),
19
33
  },
20
34
  sync: {
21
35
  enabled: true,
@@ -24,12 +38,12 @@ async function getManager(workspaceDir) {
24
38
  }
25
39
  return manager;
26
40
  }
27
- export const MemoryPlugin = async (ctx) => {
28
- const workspaceDir = ctx.directory || process.cwd();
41
+ export const MemoryPlugin = async () => {
42
+ const memoryDir = getDataDir();
29
43
  return {
30
44
  tool: {
31
45
  memory_search: tool({
32
- description: "Search semantic memory for relevant information from indexed markdown files in the memory/ folder. " +
46
+ description: "Search semantic memory for relevant information from indexed markdown files. " +
33
47
  "Use this to find past context, preferences, notes, or any stored knowledge.",
34
48
  args: {
35
49
  query: tool.schema.string().describe("Natural language search query"),
@@ -40,7 +54,7 @@ export const MemoryPlugin = async (ctx) => {
40
54
  },
41
55
  async execute(args) {
42
56
  try {
43
- const mgr = await getManager(workspaceDir);
57
+ const mgr = await getManager();
44
58
  const results = await mgr.search(args.query, {
45
59
  maxResults: args.maxResults ?? 10,
46
60
  });
@@ -75,7 +89,7 @@ export const MemoryPlugin = async (ctx) => {
75
89
  args: {
76
90
  path: tool.schema
77
91
  .string()
78
- .describe("Relative path to the file (from workspace root)"),
92
+ .describe("Relative path to the file (from memory directory)"),
79
93
  from: tool.schema
80
94
  .number()
81
95
  .optional()
@@ -88,8 +102,7 @@ export const MemoryPlugin = async (ctx) => {
88
102
  async execute(args) {
89
103
  try {
90
104
  const { readFile } = await import("node:fs/promises");
91
- const { join } = await import("node:path");
92
- const absPath = join(workspaceDir, args.path);
105
+ const absPath = join(memoryDir, args.path);
93
106
  const content = await readFile(absPath, "utf-8");
94
107
  const allLines = content.split("\n");
95
108
  const startLine = Math.max(1, args.from ?? 1);
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xfabric/memory",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Semantic memory search for AI agents",
5
5
  "type": "module",
6
6
  "exports": {