memextend 0.1.0

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 (53) hide show
  1. package/dist/commands/edit.d.ts +2 -0
  2. package/dist/commands/edit.d.ts.map +1 -0
  3. package/dist/commands/edit.js +84 -0
  4. package/dist/commands/edit.js.map +1 -0
  5. package/dist/commands/export.d.ts +8 -0
  6. package/dist/commands/export.d.ts.map +1 -0
  7. package/dist/commands/export.js +88 -0
  8. package/dist/commands/export.js.map +1 -0
  9. package/dist/commands/forget.d.ts +10 -0
  10. package/dist/commands/forget.d.ts.map +1 -0
  11. package/dist/commands/forget.js +199 -0
  12. package/dist/commands/forget.js.map +1 -0
  13. package/dist/commands/help.d.ts +2 -0
  14. package/dist/commands/help.d.ts.map +1 -0
  15. package/dist/commands/help.js +437 -0
  16. package/dist/commands/help.js.map +1 -0
  17. package/dist/commands/import.d.ts +7 -0
  18. package/dist/commands/import.d.ts.map +1 -0
  19. package/dist/commands/import.js +138 -0
  20. package/dist/commands/import.js.map +1 -0
  21. package/dist/commands/init.d.ts +6 -0
  22. package/dist/commands/init.d.ts.map +1 -0
  23. package/dist/commands/init.js +258 -0
  24. package/dist/commands/init.js.map +1 -0
  25. package/dist/commands/list.d.ts +7 -0
  26. package/dist/commands/list.d.ts.map +1 -0
  27. package/dist/commands/list.js +67 -0
  28. package/dist/commands/list.js.map +1 -0
  29. package/dist/commands/save.d.ts +8 -0
  30. package/dist/commands/save.d.ts.map +1 -0
  31. package/dist/commands/save.js +95 -0
  32. package/dist/commands/save.js.map +1 -0
  33. package/dist/commands/search.d.ts +8 -0
  34. package/dist/commands/search.d.ts.map +1 -0
  35. package/dist/commands/search.js +82 -0
  36. package/dist/commands/search.js.map +1 -0
  37. package/dist/commands/status.d.ts +7 -0
  38. package/dist/commands/status.d.ts.map +1 -0
  39. package/dist/commands/status.js +231 -0
  40. package/dist/commands/status.js.map +1 -0
  41. package/dist/commands/uninstall.d.ts +7 -0
  42. package/dist/commands/uninstall.d.ts.map +1 -0
  43. package/dist/commands/uninstall.js +188 -0
  44. package/dist/commands/uninstall.js.map +1 -0
  45. package/dist/commands/webui.d.ts +7 -0
  46. package/dist/commands/webui.d.ts.map +1 -0
  47. package/dist/commands/webui.js +314 -0
  48. package/dist/commands/webui.js.map +1 -0
  49. package/dist/index.d.ts +3 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +97 -0
  52. package/dist/index.js.map +1 -0
  53. package/package.json +51 -0
@@ -0,0 +1,2 @@
1
+ export declare function editCommand(memoryId: string): Promise<void>;
2
+ //# sourceMappingURL=edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"AAYA,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFjE"}
@@ -0,0 +1,84 @@
1
+ // apps/cli/src/commands/edit.ts
2
+ // Copyright (c) 2026 ZodTTD LLC. MIT License.
3
+ import { existsSync } from 'fs';
4
+ import { join } from 'path';
5
+ import { homedir } from 'os';
6
+ import chalk from 'chalk';
7
+ import { createInterface } from 'readline';
8
+ const MEMEXTEND_DIR = join(homedir(), '.memextend');
9
+ const DB_PATH = join(MEMEXTEND_DIR, 'memextend.db');
10
+ export async function editCommand(memoryId) {
11
+ if (!existsSync(DB_PATH)) {
12
+ console.log(chalk.yellow('\n ⚠ memextend not initialized. Run `memextend init` first.\n'));
13
+ return;
14
+ }
15
+ try {
16
+ const { SQLiteStorage } = await import('@memextend/core');
17
+ const sqlite = new SQLiteStorage(DB_PATH);
18
+ // Check if memory exists
19
+ const memory = sqlite.getMemory(memoryId);
20
+ if (!memory) {
21
+ console.log(chalk.yellow(`\n ⚠ Memory not found: ${memoryId}\n`));
22
+ sqlite.close();
23
+ return;
24
+ }
25
+ // Show current content
26
+ console.log(chalk.cyan('\n Current content:\n'));
27
+ console.log(chalk.dim(' ─'.repeat(30)));
28
+ memory.content.split('\n').forEach(line => {
29
+ console.log(chalk.white(` ${line}`));
30
+ });
31
+ console.log(chalk.dim(' ─'.repeat(30)));
32
+ // Prompt for new content
33
+ console.log(chalk.cyan('\n Enter new content (press Enter twice to finish, or Ctrl+C to cancel):\n'));
34
+ const rl = createInterface({
35
+ input: process.stdin,
36
+ output: process.stdout,
37
+ });
38
+ const lines = [];
39
+ let emptyLineCount = 0;
40
+ const promptLine = () => {
41
+ return new Promise((resolve) => {
42
+ const askLine = () => {
43
+ rl.question(' > ', (line) => {
44
+ if (line === '') {
45
+ emptyLineCount++;
46
+ if (emptyLineCount >= 2) {
47
+ rl.close();
48
+ resolve(lines);
49
+ return;
50
+ }
51
+ }
52
+ else {
53
+ emptyLineCount = 0;
54
+ }
55
+ lines.push(line);
56
+ askLine();
57
+ });
58
+ };
59
+ askLine();
60
+ });
61
+ };
62
+ const newLines = await promptLine();
63
+ const newContent = newLines.join('\n').trim();
64
+ if (!newContent) {
65
+ console.log(chalk.yellow('\n ⚠ No content provided. Memory unchanged.\n'));
66
+ sqlite.close();
67
+ return;
68
+ }
69
+ // Update memory
70
+ const updated = sqlite.updateMemory(memoryId, newContent);
71
+ sqlite.close();
72
+ if (updated) {
73
+ console.log(chalk.green(`\n ✓ Memory ${memoryId} updated.\n`));
74
+ }
75
+ else {
76
+ console.log(chalk.red(`\n ✗ Failed to update memory.\n`));
77
+ }
78
+ }
79
+ catch (error) {
80
+ console.error(chalk.red(`\n Error: ${error instanceof Error ? error.message : error}\n`));
81
+ process.exit(1);
82
+ }
83
+ }
84
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface ExportOptions {
2
+ output?: string;
3
+ project?: boolean;
4
+ format?: string;
5
+ }
6
+ export declare function exportCommand(options: ExportOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAaA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEzE"}
@@ -0,0 +1,88 @@
1
+ // apps/cli/src/commands/export.ts
2
+ // Copyright (c) 2026 ZodTTD LLC. MIT License.
3
+ import { existsSync, mkdirSync, writeFileSync } from 'fs';
4
+ import { join } from 'path';
5
+ import { homedir } from 'os';
6
+ import { execSync } from 'child_process';
7
+ import { createHash } from 'crypto';
8
+ import chalk from 'chalk';
9
+ const MEMEXTEND_DIR = join(homedir(), '.memextend');
10
+ const DB_PATH = join(MEMEXTEND_DIR, 'memextend.db');
11
+ export async function exportCommand(options) {
12
+ if (!existsSync(DB_PATH)) {
13
+ console.log(chalk.yellow('\n ⚠ memextend not initialized. Run `memextend init` first.\n'));
14
+ return;
15
+ }
16
+ try {
17
+ const { SQLiteStorage } = await import('@memextend/core');
18
+ const sqlite = new SQLiteStorage(DB_PATH);
19
+ // Determine output path
20
+ const timestamp = new Date().toISOString().split('T')[0];
21
+ const outputDir = options.output || `.`;
22
+ const outputFile = join(outputDir, `memextend-export-${timestamp}.json`);
23
+ // Get project ID if filtering by project
24
+ let projectId;
25
+ if (options.project) {
26
+ projectId = getProjectId(process.cwd());
27
+ console.log(chalk.dim(`\n Exporting memories for project: ${projectId}`));
28
+ }
29
+ console.log(chalk.bold('\n Exporting memextend data...\n'));
30
+ // Get all memories
31
+ const memories = sqlite.getRecentMemories(projectId ?? null, 10000, 36500); // All memories up to 100 years
32
+ const globalProfiles = sqlite.getGlobalProfiles(10000);
33
+ // Build export object
34
+ const exportData = {
35
+ version: 1,
36
+ exportedAt: new Date().toISOString(),
37
+ exportType: projectId ? 'project' : 'full',
38
+ projectId: projectId || null,
39
+ stats: {
40
+ memoryCount: memories.length,
41
+ globalProfileCount: globalProfiles.length,
42
+ },
43
+ memories: memories.map(m => ({
44
+ id: m.id,
45
+ projectId: m.projectId,
46
+ content: m.content,
47
+ type: m.type,
48
+ sourceTool: m.sourceTool,
49
+ createdAt: m.createdAt,
50
+ sessionId: m.sessionId,
51
+ metadata: m.metadata,
52
+ })),
53
+ globalProfiles: globalProfiles.map(p => ({
54
+ id: p.id,
55
+ key: p.key,
56
+ content: p.content,
57
+ createdAt: p.createdAt,
58
+ })),
59
+ };
60
+ // Write export file
61
+ if (!existsSync(outputDir)) {
62
+ mkdirSync(outputDir, { recursive: true });
63
+ }
64
+ writeFileSync(outputFile, JSON.stringify(exportData, null, 2));
65
+ console.log(chalk.green(` ✓ Exported ${memories.length} memories`));
66
+ console.log(chalk.green(` ✓ Exported ${globalProfiles.length} global profile entries`));
67
+ console.log(chalk.bold(`\n Saved to: ${outputFile}\n`));
68
+ sqlite.close();
69
+ }
70
+ catch (error) {
71
+ console.error(chalk.red(`\n Error: ${error instanceof Error ? error.message : error}\n`));
72
+ process.exit(1);
73
+ }
74
+ }
75
+ function getProjectId(cwd) {
76
+ try {
77
+ const gitRoot = execSync('git rev-parse --show-toplevel', {
78
+ cwd,
79
+ encoding: 'utf-8',
80
+ stdio: ['pipe', 'pipe', 'pipe']
81
+ }).trim();
82
+ return createHash('sha256').update(gitRoot).digest('hex').slice(0, 16);
83
+ }
84
+ catch {
85
+ return createHash('sha256').update(cwd).digest('hex').slice(0, 16);
86
+ }
87
+ }
88
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ interface ForgetOptions {
2
+ all?: boolean;
3
+ project?: boolean;
4
+ before?: string;
5
+ deleteProject?: string;
6
+ clearGlobal?: boolean;
7
+ }
8
+ export declare function forgetCommand(memoryId: string | undefined, options: ForgetOptions): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=forget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../src/commands/forget.ts"],"names":[],"mappings":"AAaA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAgBD,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuMvG"}
@@ -0,0 +1,199 @@
1
+ // apps/cli/src/commands/forget.ts
2
+ // Copyright (c) 2026 ZodTTD LLC. MIT License.
3
+ import { existsSync } from 'fs';
4
+ import { join } from 'path';
5
+ import { homedir } from 'os';
6
+ import chalk from 'chalk';
7
+ import { createInterface } from 'readline';
8
+ const MEMEXTEND_DIR = join(homedir(), '.memextend');
9
+ const DB_PATH = join(MEMEXTEND_DIR, 'memextend.db');
10
+ const VECTORS_PATH = join(MEMEXTEND_DIR, 'vectors');
11
+ async function confirm(message) {
12
+ const rl = createInterface({
13
+ input: process.stdin,
14
+ output: process.stdout,
15
+ });
16
+ return new Promise((resolve) => {
17
+ rl.question(`${message} (y/N): `, (answer) => {
18
+ rl.close();
19
+ resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
20
+ });
21
+ });
22
+ }
23
+ export async function forgetCommand(memoryId, options) {
24
+ if (!existsSync(DB_PATH)) {
25
+ console.log(chalk.yellow('\n ⚠ memextend not initialized. Run `memextend init` first.\n'));
26
+ return;
27
+ }
28
+ try {
29
+ const { SQLiteStorage, LanceDBStorage, getCurrentProjectId } = await import('@memextend/core');
30
+ const sqlite = new SQLiteStorage(DB_PATH);
31
+ const lancedb = await LanceDBStorage.create(VECTORS_PATH);
32
+ // Clear global profile: --clear-global
33
+ if (options.clearGlobal) {
34
+ const profiles = sqlite.getGlobalProfiles(1000);
35
+ if (profiles.length === 0) {
36
+ console.log(chalk.yellow('\n No global profile entries to clear.\n'));
37
+ sqlite.close();
38
+ await lancedb.close();
39
+ return;
40
+ }
41
+ console.log(chalk.red(`\n ⚠ This will delete ${profiles.length} global profile entries!`));
42
+ const confirmed = await confirm(chalk.yellow(' Are you sure?'));
43
+ if (!confirmed) {
44
+ console.log(chalk.dim('\n Cancelled.\n'));
45
+ sqlite.close();
46
+ await lancedb.close();
47
+ return;
48
+ }
49
+ const deleted = sqlite.deleteAllGlobalProfiles();
50
+ sqlite.close();
51
+ await lancedb.close();
52
+ console.log(chalk.green(`\n ✓ Cleared ${deleted} global profile entries.\n`));
53
+ return;
54
+ }
55
+ // Delete project: --delete-project <name>
56
+ if (options.deleteProject) {
57
+ const projectName = options.deleteProject;
58
+ const project = sqlite.getProjectByName(projectName);
59
+ if (!project) {
60
+ console.log(chalk.yellow(`\n ⚠ Project not found: ${projectName}\n`));
61
+ console.log(chalk.dim(' Available projects:'));
62
+ const allProjects = sqlite.getAllProjects();
63
+ if (allProjects.length === 0) {
64
+ console.log(chalk.dim(' (none)'));
65
+ }
66
+ else {
67
+ allProjects.forEach(p => {
68
+ const count = sqlite.getMemoryCountByProject(p.id);
69
+ console.log(chalk.dim(` - ${p.name} (${count} memories)`));
70
+ });
71
+ }
72
+ console.log('');
73
+ sqlite.close();
74
+ await lancedb.close();
75
+ return;
76
+ }
77
+ const memoryCount = sqlite.getMemoryCountByProject(project.id);
78
+ console.log(chalk.red(`\n ⚠ This will delete all ${memoryCount} memories from project "${project.name}"!`));
79
+ const confirmed = await confirm(chalk.yellow(' Are you sure?'));
80
+ if (!confirmed) {
81
+ console.log(chalk.dim('\n Cancelled.\n'));
82
+ sqlite.close();
83
+ await lancedb.close();
84
+ return;
85
+ }
86
+ // Get all memory IDs for this project before deleting (for vector cleanup)
87
+ const memories = sqlite.getAllMemories(project.id, 100000);
88
+ const memoryIds = memories.map(m => m.id);
89
+ // Delete the project and its memories
90
+ const result = sqlite.deleteProject(project.id);
91
+ // Delete vectors for all those memories
92
+ let vectorsDeleted = 0;
93
+ for (const id of memoryIds) {
94
+ try {
95
+ await lancedb.deleteVector(id);
96
+ vectorsDeleted++;
97
+ }
98
+ catch {
99
+ // Ignore vector deletion errors
100
+ }
101
+ }
102
+ sqlite.close();
103
+ await lancedb.close();
104
+ console.log(chalk.green(`\n ✓ Deleted ${result.memoriesDeleted} memories from project "${project.name}".\n`));
105
+ return;
106
+ }
107
+ // Bulk delete: --all
108
+ if (options.all) {
109
+ const projectId = options.project ? getCurrentProjectId() : undefined;
110
+ const scope = projectId ? 'current project' : 'ALL projects';
111
+ console.log(chalk.red(`\n ⚠ This will delete ALL memories from ${scope}!`));
112
+ const confirmed = await confirm(chalk.yellow(' Are you sure?'));
113
+ if (!confirmed) {
114
+ console.log(chalk.dim('\n Cancelled.\n'));
115
+ sqlite.close();
116
+ await lancedb.close();
117
+ return;
118
+ }
119
+ // Note: Bulk delete doesn't delete vectors individually - would need to iterate
120
+ // For now, just delete from SQLite (vectors become orphaned but harmless)
121
+ const deleted = sqlite.deleteAllMemories(projectId ?? undefined);
122
+ sqlite.close();
123
+ await lancedb.close();
124
+ console.log(chalk.green(`\n ✓ Deleted ${deleted} memories.\n`));
125
+ console.log(chalk.dim(' Note: Run `memextend init` to rebuild vector index if needed.\n'));
126
+ return;
127
+ }
128
+ // Bulk delete: --before <date>
129
+ if (options.before) {
130
+ const date = new Date(options.before);
131
+ if (isNaN(date.getTime())) {
132
+ console.log(chalk.red(`\n ✗ Invalid date: ${options.before}. Use YYYY-MM-DD format.\n`));
133
+ sqlite.close();
134
+ await lancedb.close();
135
+ return;
136
+ }
137
+ const projectId = options.project ? getCurrentProjectId() : undefined;
138
+ const scope = projectId ? 'current project' : 'all projects';
139
+ console.log(chalk.yellow(`\n This will delete memories before ${options.before} from ${scope}.`));
140
+ const confirmed = await confirm(chalk.yellow(' Are you sure?'));
141
+ if (!confirmed) {
142
+ console.log(chalk.dim('\n Cancelled.\n'));
143
+ sqlite.close();
144
+ await lancedb.close();
145
+ return;
146
+ }
147
+ // Note: Bulk delete doesn't delete vectors individually - would need to iterate
148
+ const deleted = sqlite.deleteMemoriesBefore(date, projectId ?? undefined);
149
+ sqlite.close();
150
+ await lancedb.close();
151
+ console.log(chalk.green(`\n ✓ Deleted ${deleted} memories.\n`));
152
+ console.log(chalk.dim(' Note: Run `memextend init` to rebuild vector index if needed.\n'));
153
+ return;
154
+ }
155
+ // Single delete by ID
156
+ if (!memoryId) {
157
+ console.log(chalk.yellow('\n ⚠ Please provide a memory ID, or use options for bulk delete.\n'));
158
+ console.log(chalk.dim(' Usage:'));
159
+ console.log(chalk.dim(' memextend forget <memory-id> Delete a single memory'));
160
+ console.log(chalk.dim(' memextend forget --all Delete ALL memories'));
161
+ console.log(chalk.dim(' memextend forget --all --project Delete all memories in current project'));
162
+ console.log(chalk.dim(' memextend forget --before 2025-01-01 Delete memories before date'));
163
+ console.log(chalk.dim(' memextend forget --delete-project <name> Delete all memories in a project'));
164
+ console.log(chalk.dim(' memextend forget --clear-global Clear all global profile entries\n'));
165
+ sqlite.close();
166
+ await lancedb.close();
167
+ return;
168
+ }
169
+ // Check if memory exists
170
+ const memory = sqlite.getMemory(memoryId);
171
+ if (!memory) {
172
+ console.log(chalk.yellow(`\n ⚠ Memory not found: ${memoryId}\n`));
173
+ sqlite.close();
174
+ await lancedb.close();
175
+ return;
176
+ }
177
+ // Show memory preview
178
+ const preview = memory.content.split('\n')[0].slice(0, 60);
179
+ console.log(chalk.dim(`\n Deleting: ${preview}...`));
180
+ // Delete memory and its vector
181
+ const deleted = sqlite.deleteMemory(memoryId);
182
+ if (deleted) {
183
+ await lancedb.deleteVector(memoryId);
184
+ }
185
+ sqlite.close();
186
+ await lancedb.close();
187
+ if (deleted) {
188
+ console.log(chalk.green(` ✓ Memory ${memoryId} deleted.\n`));
189
+ }
190
+ else {
191
+ console.log(chalk.red(` ✗ Failed to delete memory.\n`));
192
+ }
193
+ }
194
+ catch (error) {
195
+ console.error(chalk.red(`\n Error: ${error instanceof Error ? error.message : error}\n`));
196
+ process.exit(1);
197
+ }
198
+ }
199
+ //# sourceMappingURL=forget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forget.js","sourceRoot":"","sources":["../../src/commands/forget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function helpCommand(topic?: string): Promise<void>;
2
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAwNA,wBAAsB,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+N/D"}