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.
- package/dist/commands/edit.d.ts +2 -0
- package/dist/commands/edit.d.ts.map +1 -0
- package/dist/commands/edit.js +84 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/export.d.ts +8 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +88 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/forget.d.ts +10 -0
- package/dist/commands/forget.d.ts.map +1 -0
- package/dist/commands/forget.js +199 -0
- package/dist/commands/forget.js.map +1 -0
- package/dist/commands/help.d.ts +2 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +437 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/import.d.ts +7 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +138 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +258 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +7 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +67 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/save.d.ts +8 -0
- package/dist/commands/save.d.ts.map +1 -0
- package/dist/commands/save.js +95 -0
- package/dist/commands/save.js.map +1 -0
- package/dist/commands/search.d.ts +8 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +82 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +231 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/uninstall.d.ts +7 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +188 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/webui.d.ts +7 -0
- package/dist/commands/webui.d.ts.map +1 -0
- package/dist/commands/webui.js +314 -0
- package/dist/commands/webui.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +97 -0
- package/dist/index.js.map +1 -0
- package/package.json +51 -0
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|