@waynesutton/agent-memory 0.0.1-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.
- package/.claude/settings.json +9 -0
- package/.claude/settings.local.json +7 -0
- package/AGENTS.md +113 -0
- package/CLAUDE.md +79 -0
- package/README.md +1003 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +192 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/parsers/claude-code.d.ts +3 -0
- package/dist/cli/parsers/claude-code.d.ts.map +1 -0
- package/dist/cli/parsers/claude-code.js +75 -0
- package/dist/cli/parsers/claude-code.js.map +1 -0
- package/dist/cli/parsers/codex.d.ts +3 -0
- package/dist/cli/parsers/codex.d.ts.map +1 -0
- package/dist/cli/parsers/codex.js +42 -0
- package/dist/cli/parsers/codex.js.map +1 -0
- package/dist/cli/parsers/conductor.d.ts +3 -0
- package/dist/cli/parsers/conductor.d.ts.map +1 -0
- package/dist/cli/parsers/conductor.js +43 -0
- package/dist/cli/parsers/conductor.js.map +1 -0
- package/dist/cli/parsers/cursor.d.ts +3 -0
- package/dist/cli/parsers/cursor.d.ts.map +1 -0
- package/dist/cli/parsers/cursor.js +50 -0
- package/dist/cli/parsers/cursor.js.map +1 -0
- package/dist/cli/parsers/index.d.ts +12 -0
- package/dist/cli/parsers/index.d.ts.map +1 -0
- package/dist/cli/parsers/index.js +27 -0
- package/dist/cli/parsers/index.js.map +1 -0
- package/dist/cli/parsers/opencode.d.ts +3 -0
- package/dist/cli/parsers/opencode.d.ts.map +1 -0
- package/dist/cli/parsers/opencode.js +72 -0
- package/dist/cli/parsers/opencode.js.map +1 -0
- package/dist/cli/parsers/parsers.test.d.ts +2 -0
- package/dist/cli/parsers/parsers.test.d.ts.map +1 -0
- package/dist/cli/parsers/parsers.test.js +151 -0
- package/dist/cli/parsers/parsers.test.js.map +1 -0
- package/dist/cli/parsers/pi.d.ts +3 -0
- package/dist/cli/parsers/pi.d.ts.map +1 -0
- package/dist/cli/parsers/pi.js +43 -0
- package/dist/cli/parsers/pi.js.map +1 -0
- package/dist/cli/parsers/types.d.ts +25 -0
- package/dist/cli/parsers/types.d.ts.map +1 -0
- package/dist/cli/parsers/types.js +2 -0
- package/dist/cli/parsers/types.js.map +1 -0
- package/dist/cli/parsers/vscode-copilot.d.ts +3 -0
- package/dist/cli/parsers/vscode-copilot.d.ts.map +1 -0
- package/dist/cli/parsers/vscode-copilot.js +69 -0
- package/dist/cli/parsers/vscode-copilot.js.map +1 -0
- package/dist/cli/parsers/zed.d.ts +3 -0
- package/dist/cli/parsers/zed.d.ts.map +1 -0
- package/dist/cli/parsers/zed.js +43 -0
- package/dist/cli/parsers/zed.js.map +1 -0
- package/dist/cli/sync.d.ts +21 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +78 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/type-extractor.d.ts +25 -0
- package/dist/cli/type-extractor.d.ts.map +1 -0
- package/dist/cli/type-extractor.js +254 -0
- package/dist/cli/type-extractor.js.map +1 -0
- package/dist/cli/type-extractor.test.d.ts +2 -0
- package/dist/cli/type-extractor.test.d.ts.map +1 -0
- package/dist/cli/type-extractor.test.js +173 -0
- package/dist/cli/type-extractor.test.js.map +1 -0
- package/dist/client/http.d.ts +44 -0
- package/dist/client/http.d.ts.map +1 -0
- package/dist/client/http.js +311 -0
- package/dist/client/http.js.map +1 -0
- package/dist/client/index.d.ts +158 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +256 -0
- package/dist/client/index.js.map +1 -0
- package/dist/component/_generated/api.d.ts +12 -0
- package/dist/component/_generated/api.d.ts.map +1 -0
- package/dist/component/_generated/api.js +13 -0
- package/dist/component/_generated/api.js.map +1 -0
- package/dist/component/_generated/dataModel.d.ts +18 -0
- package/dist/component/_generated/dataModel.d.ts.map +1 -0
- package/dist/component/_generated/dataModel.js +11 -0
- package/dist/component/_generated/dataModel.js.map +1 -0
- package/dist/component/_generated/server.d.ts +42 -0
- package/dist/component/_generated/server.d.ts.map +1 -0
- package/dist/component/_generated/server.js +39 -0
- package/dist/component/_generated/server.js.map +1 -0
- package/dist/component/actions.d.ts +42 -0
- package/dist/component/actions.d.ts.map +1 -0
- package/dist/component/actions.js +405 -0
- package/dist/component/actions.js.map +1 -0
- package/dist/component/apiKeyMutations.d.ts +29 -0
- package/dist/component/apiKeyMutations.d.ts.map +1 -0
- package/dist/component/apiKeyMutations.js +149 -0
- package/dist/component/apiKeyMutations.js.map +1 -0
- package/dist/component/apiKeyQueries.d.ts +37 -0
- package/dist/component/apiKeyQueries.d.ts.map +1 -0
- package/dist/component/apiKeyQueries.js +127 -0
- package/dist/component/apiKeyQueries.js.map +1 -0
- package/dist/component/checksum.d.ts +6 -0
- package/dist/component/checksum.d.ts.map +1 -0
- package/dist/component/checksum.js +14 -0
- package/dist/component/checksum.js.map +1 -0
- package/dist/component/checksum.test.d.ts +2 -0
- package/dist/component/checksum.test.d.ts.map +1 -0
- package/dist/component/checksum.test.js +27 -0
- package/dist/component/checksum.test.js.map +1 -0
- package/dist/component/convex.config.d.ts +3 -0
- package/dist/component/convex.config.d.ts.map +1 -0
- package/dist/component/convex.config.js +4 -0
- package/dist/component/convex.config.js.map +1 -0
- package/dist/component/cronActions.d.ts +3 -0
- package/dist/component/cronActions.d.ts.map +1 -0
- package/dist/component/cronActions.js +38 -0
- package/dist/component/cronActions.js.map +1 -0
- package/dist/component/cronQueries.d.ts +6 -0
- package/dist/component/cronQueries.d.ts.map +1 -0
- package/dist/component/cronQueries.js +38 -0
- package/dist/component/cronQueries.js.map +1 -0
- package/dist/component/crons.d.ts +3 -0
- package/dist/component/crons.d.ts.map +1 -0
- package/dist/component/crons.js +18 -0
- package/dist/component/crons.js.map +1 -0
- package/dist/component/format.d.ts +11 -0
- package/dist/component/format.d.ts.map +1 -0
- package/dist/component/format.js +175 -0
- package/dist/component/format.js.map +1 -0
- package/dist/component/format.test.d.ts +2 -0
- package/dist/component/format.test.d.ts.map +1 -0
- package/dist/component/format.test.js +118 -0
- package/dist/component/format.test.js.map +1 -0
- package/dist/component/mutations.d.ts +158 -0
- package/dist/component/mutations.d.ts.map +1 -0
- package/dist/component/mutations.js +745 -0
- package/dist/component/mutations.js.map +1 -0
- package/dist/component/queries.d.ts +94 -0
- package/dist/component/queries.d.ts.map +1 -0
- package/dist/component/queries.js +574 -0
- package/dist/component/queries.js.map +1 -0
- package/dist/component/schema.d.ts +278 -0
- package/dist/component/schema.d.ts.map +1 -0
- package/dist/component/schema.js +161 -0
- package/dist/component/schema.js.map +1 -0
- package/dist/mcp/server.d.ts +11 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +571 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/shared.d.ts +126 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +67 -0
- package/dist/shared.js.map +1 -0
- package/dist/test.d.ts +23 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +21 -0
- package/dist/test.js.map +1 -0
- package/eslint.config.js +15 -0
- package/example/convex/convex.config.ts +7 -0
- package/example/convex/memory.ts +129 -0
- package/llms.md +175 -0
- package/llms.txt +126 -0
- package/package.json +80 -0
- package/prds/API-REFERENCE.md +935 -0
- package/prds/SETUP.md +682 -0
- package/src/cli/index.ts +254 -0
- package/src/cli/parsers/claude-code.ts +80 -0
- package/src/cli/parsers/codex.ts +45 -0
- package/src/cli/parsers/conductor.ts +47 -0
- package/src/cli/parsers/cursor.ts +55 -0
- package/src/cli/parsers/index.ts +30 -0
- package/src/cli/parsers/opencode.ts +84 -0
- package/src/cli/parsers/parsers.test.ts +201 -0
- package/src/cli/parsers/pi.ts +47 -0
- package/src/cli/parsers/types.ts +26 -0
- package/src/cli/parsers/vscode-copilot.ts +78 -0
- package/src/cli/parsers/zed.ts +47 -0
- package/src/cli/sync.ts +110 -0
- package/src/cli/type-extractor.test.ts +241 -0
- package/src/cli/type-extractor.ts +331 -0
- package/src/client/http.ts +415 -0
- package/src/client/index.ts +519 -0
- package/src/component/_generated/api.ts +14 -0
- package/src/component/_generated/dataModel.ts +20 -0
- package/src/component/_generated/server.ts +64 -0
- package/src/component/actions.ts +558 -0
- package/src/component/apiKeyMutations.ts +175 -0
- package/src/component/apiKeyQueries.ts +156 -0
- package/src/component/checksum.test.ts +31 -0
- package/src/component/checksum.ts +13 -0
- package/src/component/convex.config.ts +5 -0
- package/src/component/cronActions.ts +52 -0
- package/src/component/cronQueries.ts +42 -0
- package/src/component/crons.ts +34 -0
- package/src/component/format.test.ts +133 -0
- package/src/component/format.ts +232 -0
- package/src/component/mutations.ts +824 -0
- package/src/component/queries.ts +684 -0
- package/src/component/schema.ts +207 -0
- package/src/mcp/server.ts +695 -0
- package/src/shared.ts +251 -0
- package/src/test.ts +32 -0
- package/tsconfig.json +21 -0
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { mkdtemp, mkdir, writeFile, rm } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import { claudeCodeParser } from "./claude-code.js";
|
|
6
|
+
import { cursorParser } from "./cursor.js";
|
|
7
|
+
import { openCodeParser } from "./opencode.js";
|
|
8
|
+
import { codexParser } from "./codex.js";
|
|
9
|
+
import { conductorParser } from "./conductor.js";
|
|
10
|
+
import { zedParser } from "./zed.js";
|
|
11
|
+
import { vscodeCopilotParser } from "./vscode-copilot.js";
|
|
12
|
+
import { piParser } from "./pi.js";
|
|
13
|
+
let tempDir;
|
|
14
|
+
beforeEach(async () => {
|
|
15
|
+
tempDir = await mkdtemp(join(tmpdir(), "agent-memory-test-"));
|
|
16
|
+
});
|
|
17
|
+
afterEach(async () => {
|
|
18
|
+
await rm(tempDir, { recursive: true, force: true });
|
|
19
|
+
});
|
|
20
|
+
describe("claudeCodeParser", () => {
|
|
21
|
+
it("detects .claude directory", async () => {
|
|
22
|
+
await mkdir(join(tempDir, ".claude"));
|
|
23
|
+
expect(await claudeCodeParser.detect(tempDir)).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
it("returns false when no .claude directory", async () => {
|
|
26
|
+
expect(await claudeCodeParser.detect(tempDir)).toBe(false);
|
|
27
|
+
});
|
|
28
|
+
it("parses .claude/rules/*.md files", async () => {
|
|
29
|
+
await mkdir(join(tempDir, ".claude", "rules"), { recursive: true });
|
|
30
|
+
await writeFile(join(tempDir, ".claude", "rules", "api-style.md"), "---\npaths:\n - src/api/**\n---\n\n# API Style\n\nUse camelCase.");
|
|
31
|
+
const memories = await claudeCodeParser.parse(tempDir);
|
|
32
|
+
expect(memories).toHaveLength(1);
|
|
33
|
+
expect(memories[0].title).toBe("api-style");
|
|
34
|
+
expect(memories[0].memoryType).toBe("instruction");
|
|
35
|
+
expect(memories[0].scope).toBe("project");
|
|
36
|
+
expect(memories[0].paths).toEqual(["src/api/**"]);
|
|
37
|
+
expect(memories[0].content).toContain("Use camelCase");
|
|
38
|
+
expect(memories[0].checksum).toBeTruthy();
|
|
39
|
+
});
|
|
40
|
+
it("parses rules without frontmatter", async () => {
|
|
41
|
+
await mkdir(join(tempDir, ".claude", "rules"), { recursive: true });
|
|
42
|
+
await writeFile(join(tempDir, ".claude", "rules", "simple.md"), "Just plain markdown content.");
|
|
43
|
+
const memories = await claudeCodeParser.parse(tempDir);
|
|
44
|
+
expect(memories).toHaveLength(1);
|
|
45
|
+
expect(memories[0].content).toBe("Just plain markdown content.");
|
|
46
|
+
expect(memories[0].paths).toBeUndefined();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe("cursorParser", () => {
|
|
50
|
+
it("detects .cursor/rules directory", async () => {
|
|
51
|
+
await mkdir(join(tempDir, ".cursor", "rules"), { recursive: true });
|
|
52
|
+
expect(await cursorParser.detect(tempDir)).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
it("parses .mdc files with YAML frontmatter", async () => {
|
|
55
|
+
await mkdir(join(tempDir, ".cursor", "rules"), { recursive: true });
|
|
56
|
+
await writeFile(join(tempDir, ".cursor", "rules", "testing.mdc"), "---\ndescription: Testing rules\nalwaysApply: true\n---\n\nUse vitest for tests.");
|
|
57
|
+
const memories = await cursorParser.parse(tempDir);
|
|
58
|
+
expect(memories).toHaveLength(1);
|
|
59
|
+
expect(memories[0].title).toBe("testing");
|
|
60
|
+
expect(memories[0].content).toContain("Use vitest");
|
|
61
|
+
expect(memories[0].priority).toBe(0.9); // alwaysApply = high priority
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe("openCodeParser", () => {
|
|
65
|
+
it("detects AGENTS.md", async () => {
|
|
66
|
+
await writeFile(join(tempDir, "AGENTS.md"), "# Agent Config");
|
|
67
|
+
expect(await openCodeParser.detect(tempDir)).toBe(true);
|
|
68
|
+
});
|
|
69
|
+
it("parses AGENTS.md into sections", async () => {
|
|
70
|
+
await writeFile(join(tempDir, "AGENTS.md"), "## Style Guide\n\nUse TypeScript.\n\n## Testing\n\nRun vitest.");
|
|
71
|
+
const memories = await openCodeParser.parse(tempDir);
|
|
72
|
+
expect(memories.length).toBeGreaterThanOrEqual(1);
|
|
73
|
+
// OpenCode parser uses filename-based titles (slugified)
|
|
74
|
+
const allContent = memories.map((m) => m.content).join("\n");
|
|
75
|
+
expect(allContent).toContain("Use TypeScript");
|
|
76
|
+
expect(allContent).toContain("Run vitest");
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe("codexParser", () => {
|
|
80
|
+
it("detects AGENTS.md", async () => {
|
|
81
|
+
await writeFile(join(tempDir, "AGENTS.md"), "# Config");
|
|
82
|
+
expect(await codexParser.detect(tempDir)).toBe(true);
|
|
83
|
+
});
|
|
84
|
+
it("parses AGENTS.md and AGENTS.override.md", async () => {
|
|
85
|
+
await writeFile(join(tempDir, "AGENTS.md"), "## Base Rules\n\nBase content.");
|
|
86
|
+
await writeFile(join(tempDir, "AGENTS.override.md"), "## Override Rules\n\nOverride content.");
|
|
87
|
+
const memories = await codexParser.parse(tempDir);
|
|
88
|
+
// Codex parser creates one memory per file, not per section
|
|
89
|
+
expect(memories.length).toBeGreaterThanOrEqual(2);
|
|
90
|
+
const allContent = memories.map((m) => m.content).join("\n");
|
|
91
|
+
expect(allContent).toContain("Base content");
|
|
92
|
+
expect(allContent).toContain("Override content");
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe("conductorParser", () => {
|
|
96
|
+
it("detects .conductor/rules directory", async () => {
|
|
97
|
+
await mkdir(join(tempDir, ".conductor", "rules"), { recursive: true });
|
|
98
|
+
expect(await conductorParser.detect(tempDir)).toBe(true);
|
|
99
|
+
});
|
|
100
|
+
it("parses .conductor/rules/*.md files", async () => {
|
|
101
|
+
await mkdir(join(tempDir, ".conductor", "rules"), { recursive: true });
|
|
102
|
+
await writeFile(join(tempDir, ".conductor", "rules", "workflow.md"), "# Workflow\n\nAlways review before merge.");
|
|
103
|
+
const memories = await conductorParser.parse(tempDir);
|
|
104
|
+
expect(memories).toHaveLength(1);
|
|
105
|
+
expect(memories[0].title).toBe("workflow");
|
|
106
|
+
expect(memories[0].source).toBe("conductor");
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
describe("zedParser", () => {
|
|
110
|
+
it("detects .zed/rules directory", async () => {
|
|
111
|
+
await mkdir(join(tempDir, ".zed", "rules"), { recursive: true });
|
|
112
|
+
expect(await zedParser.detect(tempDir)).toBe(true);
|
|
113
|
+
});
|
|
114
|
+
it("parses .zed/rules/*.md files", async () => {
|
|
115
|
+
await mkdir(join(tempDir, ".zed", "rules"), { recursive: true });
|
|
116
|
+
await writeFile(join(tempDir, ".zed", "rules", "code-style.md"), "Use Rust conventions.");
|
|
117
|
+
const memories = await zedParser.parse(tempDir);
|
|
118
|
+
expect(memories).toHaveLength(1);
|
|
119
|
+
expect(memories[0].title).toBe("code-style");
|
|
120
|
+
expect(memories[0].source).toBe("zed");
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
describe("vscodeCopilotParser", () => {
|
|
124
|
+
it("detects .github/copilot-instructions.md", async () => {
|
|
125
|
+
await mkdir(join(tempDir, ".github"), { recursive: true });
|
|
126
|
+
await writeFile(join(tempDir, ".github", "copilot-instructions.md"), "Instructions");
|
|
127
|
+
expect(await vscodeCopilotParser.detect(tempDir)).toBe(true);
|
|
128
|
+
});
|
|
129
|
+
it("parses copilot-instructions.md", async () => {
|
|
130
|
+
await mkdir(join(tempDir, ".github"), { recursive: true });
|
|
131
|
+
await writeFile(join(tempDir, ".github", "copilot-instructions.md"), "## General\n\nBe concise.\n\n## Style\n\nUse TypeScript.");
|
|
132
|
+
const memories = await vscodeCopilotParser.parse(tempDir);
|
|
133
|
+
expect(memories.length).toBeGreaterThanOrEqual(1);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
describe("piParser", () => {
|
|
137
|
+
it("detects .pi/rules directory", async () => {
|
|
138
|
+
await mkdir(join(tempDir, ".pi", "rules"), { recursive: true });
|
|
139
|
+
expect(await piParser.detect(tempDir)).toBe(true);
|
|
140
|
+
});
|
|
141
|
+
it("parses .pi/rules/*.md files", async () => {
|
|
142
|
+
await mkdir(join(tempDir, ".pi", "rules"), { recursive: true });
|
|
143
|
+
await writeFile(join(tempDir, ".pi", "rules", "code-review.md"), "Always add tests.");
|
|
144
|
+
const memories = await piParser.parse(tempDir);
|
|
145
|
+
expect(memories).toHaveLength(1);
|
|
146
|
+
expect(memories[0].title).toBe("code-review");
|
|
147
|
+
expect(memories[0].source).toBe("pi");
|
|
148
|
+
expect(memories[0].priority).toBe(0.8);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
//# sourceMappingURL=parsers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.test.js","sourceRoot":"","sources":["../../../src/cli/parsers/parsers.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../../src/cli/parsers/pi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAC;AAGvD,eAAO,MAAM,QAAQ,EAAE,MAyCtB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { readdir, readFile, access } from "node:fs/promises";
|
|
2
|
+
import { join, basename } from "node:path";
|
|
3
|
+
import { computeChecksum } from "../../component/checksum.js";
|
|
4
|
+
export const piParser = {
|
|
5
|
+
name: "Pi",
|
|
6
|
+
async detect(dir) {
|
|
7
|
+
try {
|
|
8
|
+
await access(join(dir, ".pi", "rules"));
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
async parse(dir) {
|
|
16
|
+
const memories = [];
|
|
17
|
+
const rulesDir = join(dir, ".pi", "rules");
|
|
18
|
+
let files = [];
|
|
19
|
+
try {
|
|
20
|
+
files = await readdir(rulesDir);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return memories;
|
|
24
|
+
}
|
|
25
|
+
for (const file of files) {
|
|
26
|
+
if (!file.endsWith(".md"))
|
|
27
|
+
continue;
|
|
28
|
+
const content = (await readFile(join(rulesDir, file), "utf-8")).trim();
|
|
29
|
+
memories.push({
|
|
30
|
+
title: basename(file, ".md"),
|
|
31
|
+
content,
|
|
32
|
+
memoryType: "instruction",
|
|
33
|
+
scope: "project",
|
|
34
|
+
tags: [],
|
|
35
|
+
priority: 0.8,
|
|
36
|
+
source: "pi",
|
|
37
|
+
checksum: computeChecksum(content),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return memories;
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=pi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/cli/parsers/pi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,CAAC,MAAM,QAAQ,GAAW;IAC9B,IAAI,EAAE,IAAI;IAEV,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW;QACrB,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAE3C,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACpC,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEvE,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC5B,OAAO;gBACP,UAAU,EAAE,aAAa;gBACzB,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { MemoryType, Scope } from "../../shared.js";
|
|
2
|
+
/**
|
|
3
|
+
* A normalized memory object parsed from a local file.
|
|
4
|
+
* This is the common format all parsers produce.
|
|
5
|
+
*/
|
|
6
|
+
export interface ParsedMemory {
|
|
7
|
+
title: string;
|
|
8
|
+
content: string;
|
|
9
|
+
memoryType: MemoryType;
|
|
10
|
+
scope: Scope;
|
|
11
|
+
tags: string[];
|
|
12
|
+
paths?: string[];
|
|
13
|
+
priority?: number;
|
|
14
|
+
source: string;
|
|
15
|
+
checksum: string;
|
|
16
|
+
}
|
|
17
|
+
export interface Parser {
|
|
18
|
+
/** Human-readable name of the tool */
|
|
19
|
+
name: string;
|
|
20
|
+
/** Detect if this tool is present in the given directory */
|
|
21
|
+
detect(dir: string): Promise<boolean>;
|
|
22
|
+
/** Parse all memory files from the given directory */
|
|
23
|
+
parse(dir: string): Promise<ParsedMemory[]>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/parsers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,sDAAsD;IACtD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/parsers/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode-copilot.d.ts","sourceRoot":"","sources":["../../../src/cli/parsers/vscode-copilot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAC;AAGvD,eAAO,MAAM,mBAAmB,EAAE,MAwEjC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { readdir, readFile, access } from "node:fs/promises";
|
|
2
|
+
import { join, basename } from "node:path";
|
|
3
|
+
import { computeChecksum } from "../../component/checksum.js";
|
|
4
|
+
export const vscodeCopilotParser = {
|
|
5
|
+
name: "VS Code Copilot",
|
|
6
|
+
async detect(dir) {
|
|
7
|
+
try {
|
|
8
|
+
await access(join(dir, ".github", "copilot-instructions.md"));
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
try {
|
|
13
|
+
await access(join(dir, ".copilot", "rules"));
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
async parse(dir) {
|
|
22
|
+
const memories = [];
|
|
23
|
+
// Parse .github/copilot-instructions.md
|
|
24
|
+
try {
|
|
25
|
+
const content = (await readFile(join(dir, ".github", "copilot-instructions.md"), "utf-8")).trim();
|
|
26
|
+
if (content.length > 0) {
|
|
27
|
+
memories.push({
|
|
28
|
+
title: "copilot-instructions",
|
|
29
|
+
content,
|
|
30
|
+
memoryType: "instruction",
|
|
31
|
+
scope: "project",
|
|
32
|
+
tags: [],
|
|
33
|
+
priority: 0.9,
|
|
34
|
+
source: "vscode-copilot",
|
|
35
|
+
checksum: computeChecksum(content),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// File doesn't exist
|
|
41
|
+
}
|
|
42
|
+
// Parse .copilot/rules/*.md
|
|
43
|
+
const rulesDir = join(dir, ".copilot", "rules");
|
|
44
|
+
let files = [];
|
|
45
|
+
try {
|
|
46
|
+
files = await readdir(rulesDir);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return memories;
|
|
50
|
+
}
|
|
51
|
+
for (const file of files) {
|
|
52
|
+
if (!file.endsWith(".md"))
|
|
53
|
+
continue;
|
|
54
|
+
const content = (await readFile(join(rulesDir, file), "utf-8")).trim();
|
|
55
|
+
memories.push({
|
|
56
|
+
title: basename(file, ".md"),
|
|
57
|
+
content,
|
|
58
|
+
memoryType: "instruction",
|
|
59
|
+
scope: "project",
|
|
60
|
+
tags: [],
|
|
61
|
+
priority: 0.8,
|
|
62
|
+
source: "vscode-copilot",
|
|
63
|
+
checksum: computeChecksum(content),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return memories;
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=vscode-copilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode-copilot.js","sourceRoot":"","sources":["../../../src/cli/parsers/vscode-copilot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,CAAC,MAAM,mBAAmB,GAAW;IACzC,IAAI,EAAE,iBAAiB;IAEvB,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC7C,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW;QACrB,MAAM,QAAQ,GAAmB,EAAE,CAAC;QAEpC,wCAAwC;QACxC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CACd,MAAM,QAAQ,CACZ,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,yBAAyB,CAAC,EAC/C,OAAO,CACR,CACF,CAAC,IAAI,EAAE,CAAC;YAET,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,sBAAsB;oBAC7B,OAAO;oBACP,UAAU,EAAE,aAAa;oBACzB,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,EAAE;oBACR,QAAQ,EAAE,GAAG;oBACb,MAAM,EAAE,gBAAgB;oBACxB,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC;iBACnC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;QAED,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACpC,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEvE,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC5B,OAAO;gBACP,UAAU,EAAE,aAAa;gBACzB,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE,gBAAgB;gBACxB,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zed.d.ts","sourceRoot":"","sources":["../../../src/cli/parsers/zed.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAC;AAGvD,eAAO,MAAM,SAAS,EAAE,MAyCvB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { readdir, readFile, access } from "node:fs/promises";
|
|
2
|
+
import { join, basename } from "node:path";
|
|
3
|
+
import { computeChecksum } from "../../component/checksum.js";
|
|
4
|
+
export const zedParser = {
|
|
5
|
+
name: "Zed",
|
|
6
|
+
async detect(dir) {
|
|
7
|
+
try {
|
|
8
|
+
await access(join(dir, ".zed", "rules"));
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
async parse(dir) {
|
|
16
|
+
const memories = [];
|
|
17
|
+
const rulesDir = join(dir, ".zed", "rules");
|
|
18
|
+
let files = [];
|
|
19
|
+
try {
|
|
20
|
+
files = await readdir(rulesDir);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return memories;
|
|
24
|
+
}
|
|
25
|
+
for (const file of files) {
|
|
26
|
+
if (!file.endsWith(".md"))
|
|
27
|
+
continue;
|
|
28
|
+
const content = (await readFile(join(rulesDir, file), "utf-8")).trim();
|
|
29
|
+
memories.push({
|
|
30
|
+
title: basename(file, ".md"),
|
|
31
|
+
content,
|
|
32
|
+
memoryType: "instruction",
|
|
33
|
+
scope: "project",
|
|
34
|
+
tags: [],
|
|
35
|
+
priority: 0.8,
|
|
36
|
+
source: "zed",
|
|
37
|
+
checksum: computeChecksum(content),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return memories;
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=zed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zed.js","sourceRoot":"","sources":["../../../src/cli/parsers/zed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,CAAC,MAAM,SAAS,GAAW;IAC/B,IAAI,EAAE,KAAK;IAEX,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW;QACrB,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACpC,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEvE,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC5B,OAAO;gBACP,UAAU,EAAE,aAAa;gBACzB,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ToolFormat } from "../shared.js";
|
|
2
|
+
export interface SyncConfig {
|
|
3
|
+
convexUrl: string;
|
|
4
|
+
projectId: string;
|
|
5
|
+
userId?: string;
|
|
6
|
+
format?: ToolFormat;
|
|
7
|
+
dir: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Push local memory files to Convex.
|
|
11
|
+
*/
|
|
12
|
+
export declare function push(config: SyncConfig): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Pull memories from Convex and write to local files.
|
|
15
|
+
*/
|
|
16
|
+
export declare function pull(config: SyncConfig): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Detect which tools are present in the directory.
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectTools(dir: string): Promise<string[]>;
|
|
21
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C5D;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B5D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQhE"}
|
package/dist/cli/sync.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ConvexHttpClient } from "convex/browser";
|
|
2
|
+
import { writeFile, mkdir } from "node:fs/promises";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { ALL_PARSERS } from "./parsers/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Push local memory files to Convex.
|
|
7
|
+
*/
|
|
8
|
+
export async function push(config) {
|
|
9
|
+
const client = new ConvexHttpClient(config.convexUrl);
|
|
10
|
+
const parsersToUse = config.format
|
|
11
|
+
? { [config.format]: ALL_PARSERS[config.format] }
|
|
12
|
+
: ALL_PARSERS;
|
|
13
|
+
let totalCreated = 0;
|
|
14
|
+
let totalUpdated = 0;
|
|
15
|
+
let totalUnchanged = 0;
|
|
16
|
+
for (const [name, parser] of Object.entries(parsersToUse)) {
|
|
17
|
+
if (!parser)
|
|
18
|
+
continue;
|
|
19
|
+
const detected = await parser.detect(config.dir);
|
|
20
|
+
if (!detected)
|
|
21
|
+
continue;
|
|
22
|
+
console.log(` Parsing ${parser.name} files...`);
|
|
23
|
+
const memories = await parser.parse(config.dir);
|
|
24
|
+
if (memories.length === 0) {
|
|
25
|
+
console.log(` No memories found for ${parser.name}`);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
// Use the component's importFromLocal mutation
|
|
29
|
+
// The API path depends on how the component is mounted
|
|
30
|
+
const result = await client.mutation("agentMemory/mutations:importFromLocal", {
|
|
31
|
+
projectId: config.projectId,
|
|
32
|
+
userId: config.userId,
|
|
33
|
+
memories,
|
|
34
|
+
});
|
|
35
|
+
totalCreated += result.created;
|
|
36
|
+
totalUpdated += result.updated;
|
|
37
|
+
totalUnchanged += result.unchanged;
|
|
38
|
+
console.log(` ${parser.name}: ${result.created} created, ${result.updated} updated, ${result.unchanged} unchanged`);
|
|
39
|
+
}
|
|
40
|
+
console.log(`\nTotal: ${totalCreated} created, ${totalUpdated} updated, ${totalUnchanged} unchanged`);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Pull memories from Convex and write to local files.
|
|
44
|
+
*/
|
|
45
|
+
export async function pull(config) {
|
|
46
|
+
const client = new ConvexHttpClient(config.convexUrl);
|
|
47
|
+
const format = config.format ?? "raw";
|
|
48
|
+
console.log(` Pulling memories as ${format} format...`);
|
|
49
|
+
const files = await client.query("agentMemory/queries:exportForTool", {
|
|
50
|
+
projectId: config.projectId,
|
|
51
|
+
format,
|
|
52
|
+
userId: config.userId,
|
|
53
|
+
});
|
|
54
|
+
if (files.length === 0) {
|
|
55
|
+
console.log(" No memories to pull");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
for (const file of files) {
|
|
59
|
+
const fullPath = join(config.dir, file.path);
|
|
60
|
+
await mkdir(dirname(fullPath), { recursive: true });
|
|
61
|
+
await writeFile(fullPath, file.content, "utf-8");
|
|
62
|
+
console.log(` Wrote ${file.path}`);
|
|
63
|
+
}
|
|
64
|
+
console.log(`\nPulled ${files.length} files`);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Detect which tools are present in the directory.
|
|
68
|
+
*/
|
|
69
|
+
export async function detectTools(dir) {
|
|
70
|
+
const detected = [];
|
|
71
|
+
for (const [name, parser] of Object.entries(ALL_PARSERS)) {
|
|
72
|
+
if (await parser.detect(dir)) {
|
|
73
|
+
detected.push(name);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return detected;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ParsedMemory } from "./parsers/types.js";
|
|
2
|
+
export interface IngestTypesOptions {
|
|
3
|
+
/** Glob pattern for TypeScript files, e.g. "src/models.ts" */
|
|
4
|
+
globPattern: string;
|
|
5
|
+
/** Working directory for glob resolution */
|
|
6
|
+
cwd?: string;
|
|
7
|
+
/** Additional tags to attach to generated memories */
|
|
8
|
+
tags?: string[];
|
|
9
|
+
/** Priority for generated memories (0-1, default 0.6) */
|
|
10
|
+
priority?: number;
|
|
11
|
+
/** Exclude patterns (defaults to node_modules, dist, _generated) */
|
|
12
|
+
exclude?: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface IngestTypesResult {
|
|
15
|
+
memories: ParsedMemory[];
|
|
16
|
+
filesProcessed: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Extract TypeScript type definitions from files matching a glob pattern
|
|
20
|
+
* and convert them into ParsedMemory objects suitable for agent-memory.
|
|
21
|
+
*
|
|
22
|
+
* Uses `types-not-docs` under the hood to generate markdown from types.
|
|
23
|
+
*/
|
|
24
|
+
export declare function extractTypeMemories(opts: IngestTypesOptions): Promise<IngestTypesResult>;
|
|
25
|
+
//# sourceMappingURL=type-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-extractor.d.ts","sourceRoot":"","sources":["../../src/cli/type-extractor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAID;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CA+C5B"}
|