memobank-cli 0.2.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/CHANGELOG.md +139 -0
- package/LICENSE +21 -0
- package/README.md +300 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +294 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/capture.d.ts +12 -0
- package/dist/commands/capture.d.ts.map +1 -0
- package/dist/commands/capture.js +191 -0
- package/dist/commands/capture.js.map +1 -0
- package/dist/commands/import.d.ts +28 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +356 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/index.d.ts +12 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +82 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/install.d.ts +16 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +142 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/lifecycle.d.ts +21 -0
- package/dist/commands/lifecycle.d.ts.map +1 -0
- package/dist/commands/lifecycle.js +106 -0
- package/dist/commands/lifecycle.js.map +1 -0
- package/dist/commands/map.d.ts +10 -0
- package/dist/commands/map.d.ts.map +1 -0
- package/dist/commands/map.js +72 -0
- package/dist/commands/map.js.map +1 -0
- package/dist/commands/onboarding.d.ts +10 -0
- package/dist/commands/onboarding.d.ts.map +1 -0
- package/dist/commands/onboarding.js +420 -0
- package/dist/commands/onboarding.js.map +1 -0
- package/dist/commands/recall.d.ts +13 -0
- package/dist/commands/recall.d.ts.map +1 -0
- package/dist/commands/recall.js +89 -0
- package/dist/commands/recall.js.map +1 -0
- package/dist/commands/review.d.ts +11 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +66 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/search.d.ts +13 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +107 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/setup.d.ts +9 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +354 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/write.d.ts +14 -0
- package/dist/commands/write.d.ts.map +1 -0
- package/dist/commands/write.js +247 -0
- package/dist/commands/write.js.map +1 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +147 -0
- package/dist/config.js.map +1 -0
- package/dist/core/decay-engine.d.ts +16 -0
- package/dist/core/decay-engine.d.ts.map +1 -0
- package/dist/core/decay-engine.js +91 -0
- package/dist/core/decay-engine.js.map +1 -0
- package/dist/core/embedding.d.ts +60 -0
- package/dist/core/embedding.d.ts.map +1 -0
- package/dist/core/embedding.js +169 -0
- package/dist/core/embedding.js.map +1 -0
- package/dist/core/lifecycle-manager.d.ts +105 -0
- package/dist/core/lifecycle-manager.d.ts.map +1 -0
- package/dist/core/lifecycle-manager.js +332 -0
- package/dist/core/lifecycle-manager.js.map +1 -0
- package/dist/core/memory-template.d.ts +70 -0
- package/dist/core/memory-template.d.ts.map +1 -0
- package/dist/core/memory-template.js +496 -0
- package/dist/core/memory-template.js.map +1 -0
- package/dist/core/noise-filter.d.ts +39 -0
- package/dist/core/noise-filter.d.ts.map +1 -0
- package/dist/core/noise-filter.js +168 -0
- package/dist/core/noise-filter.js.map +1 -0
- package/dist/core/retriever.d.ts +21 -0
- package/dist/core/retriever.d.ts.map +1 -0
- package/dist/core/retriever.js +77 -0
- package/dist/core/retriever.js.map +1 -0
- package/dist/core/sanitizer.d.ts +9 -0
- package/dist/core/sanitizer.d.ts.map +1 -0
- package/dist/core/sanitizer.js +57 -0
- package/dist/core/sanitizer.js.map +1 -0
- package/dist/core/smart-extractor.d.ts +12 -0
- package/dist/core/smart-extractor.d.ts.map +1 -0
- package/dist/core/smart-extractor.js +102 -0
- package/dist/core/smart-extractor.js.map +1 -0
- package/dist/core/store.d.ts +40 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +233 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/tool-config.d.ts +33 -0
- package/dist/core/tool-config.d.ts.map +1 -0
- package/dist/core/tool-config.js +253 -0
- package/dist/core/tool-config.js.map +1 -0
- package/dist/engines/engine-adapter.d.ts +22 -0
- package/dist/engines/engine-adapter.d.ts.map +1 -0
- package/dist/engines/engine-adapter.js +7 -0
- package/dist/engines/engine-adapter.js.map +1 -0
- package/dist/engines/lancedb-engine.d.ts +55 -0
- package/dist/engines/lancedb-engine.d.ts.map +1 -0
- package/dist/engines/lancedb-engine.js +279 -0
- package/dist/engines/lancedb-engine.js.map +1 -0
- package/dist/engines/text-engine.d.ts +30 -0
- package/dist/engines/text-engine.d.ts.map +1 -0
- package/dist/engines/text-engine.js +100 -0
- package/dist/engines/text-engine.js.map +1 -0
- package/dist/platforms/claude-code.d.ts +13 -0
- package/dist/platforms/claude-code.d.ts.map +1 -0
- package/dist/platforms/claude-code.js +85 -0
- package/dist/platforms/claude-code.js.map +1 -0
- package/dist/platforms/codex.d.ts +9 -0
- package/dist/platforms/codex.d.ts.map +1 -0
- package/dist/platforms/codex.js +102 -0
- package/dist/platforms/codex.js.map +1 -0
- package/dist/platforms/cursor.d.ts +9 -0
- package/dist/platforms/cursor.d.ts.map +1 -0
- package/dist/platforms/cursor.js +112 -0
- package/dist/platforms/cursor.js.map +1 -0
- package/dist/types.d.ts +55 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Import Command
|
|
4
|
+
* Import memories from other AI tools (Claude Code, Gemini CLI, Qwen Code)
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.detectAvailableTools = detectAvailableTools;
|
|
41
|
+
exports.importMemories = importMemories;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const os = __importStar(require("os"));
|
|
45
|
+
const store_1 = require("../core/store");
|
|
46
|
+
const store_2 = require("../core/store");
|
|
47
|
+
const memory_template_1 = require("../core/memory-template");
|
|
48
|
+
/**
|
|
49
|
+
* Get Claude Code memory directory
|
|
50
|
+
*/
|
|
51
|
+
function getClaudeMemoryDir() {
|
|
52
|
+
return path.join(os.homedir(), '.claude', 'projects');
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get Gemini CLI memory file
|
|
56
|
+
*/
|
|
57
|
+
function getGeminiMemoryFiles() {
|
|
58
|
+
const home = os.homedir();
|
|
59
|
+
return {
|
|
60
|
+
global: path.join(home, '.gemini', 'GEMINI.md'),
|
|
61
|
+
project: path.join(process.cwd(), 'GEMINI.md'),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get Qwen Code memory file
|
|
66
|
+
*/
|
|
67
|
+
function getQwenMemoryFile() {
|
|
68
|
+
return path.join(os.homedir(), '.qwen', 'QWEN.md');
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Detect available tools with memories
|
|
72
|
+
*/
|
|
73
|
+
function detectAvailableTools() {
|
|
74
|
+
const tools = [];
|
|
75
|
+
// Claude Code - check projects directory
|
|
76
|
+
const claudeDir = getClaudeMemoryDir();
|
|
77
|
+
if (fs.existsSync(claudeDir)) {
|
|
78
|
+
const projects = fs
|
|
79
|
+
.readdirSync(claudeDir, { withFileTypes: true })
|
|
80
|
+
.filter((d) => d.isDirectory())
|
|
81
|
+
.map((d) => ({
|
|
82
|
+
name: d.name,
|
|
83
|
+
path: path.join(claudeDir, d.name, 'memory', 'MEMORY.md'),
|
|
84
|
+
}));
|
|
85
|
+
for (const project of projects) {
|
|
86
|
+
if (fs.existsSync(project.path)) {
|
|
87
|
+
const content = fs.readFileSync(project.path, 'utf-8');
|
|
88
|
+
tools.push({
|
|
89
|
+
name: `Claude Code: ${project.name}`,
|
|
90
|
+
path: project.path,
|
|
91
|
+
content,
|
|
92
|
+
exists: true,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Gemini CLI - global memory
|
|
98
|
+
const geminiFiles = getGeminiMemoryFiles();
|
|
99
|
+
if (fs.existsSync(geminiFiles.global)) {
|
|
100
|
+
const content = fs.readFileSync(geminiFiles.global, 'utf-8');
|
|
101
|
+
tools.push({
|
|
102
|
+
name: 'Gemini CLI: Global',
|
|
103
|
+
path: geminiFiles.global,
|
|
104
|
+
content,
|
|
105
|
+
exists: true,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// Gemini CLI - project memory
|
|
109
|
+
if (geminiFiles.project && fs.existsSync(geminiFiles.project)) {
|
|
110
|
+
const content = fs.readFileSync(geminiFiles.project, 'utf-8');
|
|
111
|
+
tools.push({
|
|
112
|
+
name: 'Gemini CLI: Project',
|
|
113
|
+
path: geminiFiles.project,
|
|
114
|
+
content,
|
|
115
|
+
exists: true,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
// Qwen Code
|
|
119
|
+
const qwenFile = getQwenMemoryFile();
|
|
120
|
+
if (fs.existsSync(qwenFile)) {
|
|
121
|
+
const content = fs.readFileSync(qwenFile, 'utf-8');
|
|
122
|
+
tools.push({
|
|
123
|
+
name: 'Qwen Code: Global',
|
|
124
|
+
path: qwenFile,
|
|
125
|
+
content,
|
|
126
|
+
exists: true,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return tools;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Parse Claude Code MEMORY.md content
|
|
133
|
+
*/
|
|
134
|
+
function parseClaudeMemory(content, projectName) {
|
|
135
|
+
const memories = [];
|
|
136
|
+
// Split by markdown headers
|
|
137
|
+
const sections = content.split(/^##+\s+/m).filter((s) => s.trim());
|
|
138
|
+
for (const section of sections) {
|
|
139
|
+
const lines = section.split('\n').filter((l) => l.trim());
|
|
140
|
+
if (lines.length === 0)
|
|
141
|
+
continue;
|
|
142
|
+
const title = lines[0]?.trim() ?? '';
|
|
143
|
+
const body = lines.slice(1).join('\n').trim();
|
|
144
|
+
if (!title || body.length < 20)
|
|
145
|
+
continue; // Skip very short sections
|
|
146
|
+
// Infer type from section title
|
|
147
|
+
let type = 'lesson';
|
|
148
|
+
if (title.toLowerCase().includes('decision') || title.toLowerCase().includes('choice')) {
|
|
149
|
+
type = 'decision';
|
|
150
|
+
}
|
|
151
|
+
else if (title.toLowerCase().includes('workflow') ||
|
|
152
|
+
title.toLowerCase().includes('process')) {
|
|
153
|
+
type = 'workflow';
|
|
154
|
+
}
|
|
155
|
+
else if (title.toLowerCase().includes('architecture') ||
|
|
156
|
+
title.toLowerCase().includes('structure')) {
|
|
157
|
+
type = 'architecture';
|
|
158
|
+
}
|
|
159
|
+
// Extract tags from content
|
|
160
|
+
const tags = [];
|
|
161
|
+
const tagMatch = body.match(/tags?:\s*([^\n]+)/i);
|
|
162
|
+
if (tagMatch?.[1]) {
|
|
163
|
+
tags.push(...tagMatch[1]
|
|
164
|
+
.split(',')
|
|
165
|
+
.map((t) => t.trim())
|
|
166
|
+
.filter((t) => t));
|
|
167
|
+
}
|
|
168
|
+
memories.push({
|
|
169
|
+
type,
|
|
170
|
+
description: title,
|
|
171
|
+
content: `## ${title}\n\n${body}`,
|
|
172
|
+
tags: [...tags, 'claude-imported', projectName],
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
return memories;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Parse Gemini/Qwen memory content
|
|
179
|
+
*/
|
|
180
|
+
function parseGenericMemory(content, source) {
|
|
181
|
+
const memories = [];
|
|
182
|
+
// Split by markdown headers
|
|
183
|
+
const sections = content.split(/^##+\s+/m).filter((s) => s.trim());
|
|
184
|
+
for (const section of sections) {
|
|
185
|
+
const lines = section.split('\n').filter((l) => l.trim());
|
|
186
|
+
if (lines.length === 0)
|
|
187
|
+
continue;
|
|
188
|
+
const title = lines[0]?.trim() ?? '';
|
|
189
|
+
const body = lines.slice(1).join('\n').trim();
|
|
190
|
+
// Skip Qwen Added Memories header
|
|
191
|
+
if (title.includes('Qwen Added Memories'))
|
|
192
|
+
continue;
|
|
193
|
+
if (!title || body.length < 10)
|
|
194
|
+
continue;
|
|
195
|
+
// Infer type
|
|
196
|
+
let type = 'lesson';
|
|
197
|
+
const lowerTitle = title.toLowerCase();
|
|
198
|
+
const lowerBody = body.toLowerCase();
|
|
199
|
+
if (lowerTitle.includes('decision') ||
|
|
200
|
+
lowerBody.includes('we decided') ||
|
|
201
|
+
lowerBody.includes('chose to')) {
|
|
202
|
+
type = 'decision';
|
|
203
|
+
}
|
|
204
|
+
else if (lowerTitle.includes('workflow') ||
|
|
205
|
+
lowerTitle.includes('process') ||
|
|
206
|
+
lowerBody.includes('steps to')) {
|
|
207
|
+
type = 'workflow';
|
|
208
|
+
}
|
|
209
|
+
else if (lowerTitle.includes('architecture') || lowerTitle.includes('structure')) {
|
|
210
|
+
type = 'architecture';
|
|
211
|
+
}
|
|
212
|
+
memories.push({
|
|
213
|
+
type,
|
|
214
|
+
description: title,
|
|
215
|
+
content: `## ${title}\n\n${body}`,
|
|
216
|
+
tags: [source.toLowerCase().replace(' ', '-'), 'imported'],
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
// If no sections found, treat entire content as one memory
|
|
220
|
+
if (memories.length === 0 && content.trim().length > 50) {
|
|
221
|
+
memories.push({
|
|
222
|
+
type: 'lesson',
|
|
223
|
+
description: 'Imported preferences and instructions',
|
|
224
|
+
content: content.trim(),
|
|
225
|
+
tags: [source.toLowerCase().replace(' ', '-'), 'imported'],
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
return memories;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Import memories from specified tools
|
|
232
|
+
*/
|
|
233
|
+
async function importMemories(options = {}) {
|
|
234
|
+
const cwd = process.cwd();
|
|
235
|
+
const repoRoot = (0, store_1.findRepoRoot)(cwd, options.repo);
|
|
236
|
+
// Detect available tools
|
|
237
|
+
const availableTools = detectAvailableTools();
|
|
238
|
+
if (availableTools.length === 0) {
|
|
239
|
+
console.log('No existing AI tool memories found to import.');
|
|
240
|
+
console.log('\nSupported tools:');
|
|
241
|
+
console.log(' - Claude Code (~/.claude/projects/<project>/memory/)');
|
|
242
|
+
console.log(' - Gemini CLI (~/.gemini/GEMINI.md, ./GEMINI.md)');
|
|
243
|
+
console.log(' - Qwen Code (~/.qwen/QWEN.md)');
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
// Determine which tools to import
|
|
247
|
+
let toolsToImport = availableTools;
|
|
248
|
+
if (options.claude) {
|
|
249
|
+
toolsToImport = availableTools.filter((t) => t.name.toLowerCase().includes('claude'));
|
|
250
|
+
}
|
|
251
|
+
else if (options.gemini) {
|
|
252
|
+
toolsToImport = availableTools.filter((t) => t.name.toLowerCase().includes('gemini'));
|
|
253
|
+
}
|
|
254
|
+
else if (options.qwen) {
|
|
255
|
+
toolsToImport = availableTools.filter((t) => t.name.toLowerCase().includes('qwen'));
|
|
256
|
+
}
|
|
257
|
+
if (toolsToImport.length === 0) {
|
|
258
|
+
console.log('No memories found for the specified tool(s).');
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
console.log(`Found ${toolsToImport.length} memory source(s):\n`);
|
|
262
|
+
toolsToImport.forEach((t, i) => {
|
|
263
|
+
console.log(` ${i + 1}. ${t.name}`);
|
|
264
|
+
console.log(` ${t.path}`);
|
|
265
|
+
});
|
|
266
|
+
console.log();
|
|
267
|
+
let totalImported = 0;
|
|
268
|
+
for (const tool of toolsToImport) {
|
|
269
|
+
console.log(`\n📥 Importing from ${tool.name}...`);
|
|
270
|
+
// Parse memories based on source
|
|
271
|
+
let parsedMemories;
|
|
272
|
+
if (tool.name.toLowerCase().includes('claude')) {
|
|
273
|
+
// Extract project name from path
|
|
274
|
+
const projectMatch = tool.path.match(/\/projects\/([^/]+)\/memory/);
|
|
275
|
+
const projectName = projectMatch?.[1] ?? 'unknown';
|
|
276
|
+
parsedMemories = parseClaudeMemory(tool.content ?? '', projectName);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
const sourceName = tool.name.split(':')[0] ?? 'unknown';
|
|
280
|
+
parsedMemories = parseGenericMemory(tool.content ?? '', sourceName);
|
|
281
|
+
}
|
|
282
|
+
if (parsedMemories.length === 0) {
|
|
283
|
+
console.log(' No parseable memories found.');
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
console.log(` Found ${parsedMemories.length} memories to import.`);
|
|
287
|
+
// Write memories
|
|
288
|
+
for (const memory of parsedMemories) {
|
|
289
|
+
// Sanitize content
|
|
290
|
+
const { sanitized, redacted } = (0, memory_template_1.sanitizeContent)(memory.content);
|
|
291
|
+
if (redacted.length > 0 && !options.dryRun) {
|
|
292
|
+
console.log(` ⚠️ Redacting ${redacted.length} sensitive item(s) from: ${memory.description}`);
|
|
293
|
+
memory.content = sanitized;
|
|
294
|
+
}
|
|
295
|
+
// Validate
|
|
296
|
+
const validation = (0, memory_template_1.validateMemoryContent)(memory.content);
|
|
297
|
+
if (validation.errors.length > 0) {
|
|
298
|
+
if (!options.dryRun) {
|
|
299
|
+
console.log(` ✗ Skipping (validation failed): ${memory.description}`);
|
|
300
|
+
}
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
// Check abstraction level
|
|
304
|
+
const abstractionLevel = (0, memory_template_1.checkAbstractionLevel)(memory.content);
|
|
305
|
+
if (abstractionLevel === 'too-specific') {
|
|
306
|
+
if (!options.dryRun) {
|
|
307
|
+
console.log(` ✗ Skipping (too specific): ${memory.description}`);
|
|
308
|
+
}
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
if (options.dryRun) {
|
|
312
|
+
console.log(` [DRY RUN] Would create: [${memory.type}] ${memory.description}`);
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
try {
|
|
316
|
+
const slug = memory.description
|
|
317
|
+
.toLowerCase()
|
|
318
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
319
|
+
.replace(/^-+|-+$/g, '')
|
|
320
|
+
.slice(0, 50);
|
|
321
|
+
const { fileName } = (0, memory_template_1.generateMemoryFile)({
|
|
322
|
+
name: slug,
|
|
323
|
+
type: memory.type,
|
|
324
|
+
description: memory.description,
|
|
325
|
+
tags: memory.tags,
|
|
326
|
+
created: new Date().toISOString(),
|
|
327
|
+
content: memory.content,
|
|
328
|
+
confidence: 'medium',
|
|
329
|
+
});
|
|
330
|
+
(0, store_2.writeMemory)(repoRoot, {
|
|
331
|
+
type: memory.type,
|
|
332
|
+
name: fileName.replace('.md', '').replace(/^\d{4}-\d{2}-\d{2}-/, ''),
|
|
333
|
+
description: memory.description,
|
|
334
|
+
tags: memory.tags,
|
|
335
|
+
content: memory.content,
|
|
336
|
+
confidence: 'medium',
|
|
337
|
+
created: new Date().toISOString(),
|
|
338
|
+
});
|
|
339
|
+
totalImported++;
|
|
340
|
+
console.log(` ✓ [${memory.type}] ${memory.description} (${abstractionLevel}-level)`);
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
console.log(` ✗ Failed to import: ${memory.description}`);
|
|
344
|
+
console.log(` Error: ${error.message}`);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
console.log(`\n${options.dryRun ? '[DRY RUN] ' : ''}Import complete!`);
|
|
349
|
+
console.log(`Total memories imported: ${totalImported}`);
|
|
350
|
+
if (!options.dryRun) {
|
|
351
|
+
console.log('\nNext steps:');
|
|
352
|
+
console.log(' memo map # View memory statistics');
|
|
353
|
+
console.log(' memo recall "query" # Search imported memories');
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Index command
|
|
3
|
+
* Build or update the search index
|
|
4
|
+
*/
|
|
5
|
+
export interface IndexOptions {
|
|
6
|
+
incremental?: boolean;
|
|
7
|
+
engine?: string;
|
|
8
|
+
force?: boolean;
|
|
9
|
+
repo?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function indexCommand(options?: IndexOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC5E"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Index command
|
|
4
|
+
* Build or update the search index
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.indexCommand = indexCommand;
|
|
41
|
+
const store_1 = require("../core/store");
|
|
42
|
+
const config_1 = require("../config");
|
|
43
|
+
const embedding_1 = require("../core/embedding");
|
|
44
|
+
async function indexCommand(options = {}) {
|
|
45
|
+
const cwd = process.cwd();
|
|
46
|
+
const repoRoot = (0, store_1.findRepoRoot)(cwd, options.repo);
|
|
47
|
+
const config = (0, config_1.loadConfig)(repoRoot);
|
|
48
|
+
const engineName = options.engine ?? config.embedding.engine;
|
|
49
|
+
// Text engine: no-op (searches live files directly)
|
|
50
|
+
if (engineName === 'text') {
|
|
51
|
+
const memories = (0, store_1.loadAll)(repoRoot);
|
|
52
|
+
console.log(`text engine: no index needed`);
|
|
53
|
+
console.log(`Loaded ${memories.length} memories from disk`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// LanceDB engine
|
|
57
|
+
if (engineName === 'lancedb') {
|
|
58
|
+
try {
|
|
59
|
+
const { LanceDbEngine } = await Promise.resolve().then(() => __importStar(require('../engines/lancedb-engine')));
|
|
60
|
+
const embedConfig = embedding_1.EmbeddingGenerator.fromMemoConfig(config);
|
|
61
|
+
if (!embedConfig) {
|
|
62
|
+
throw new Error('OPENAI_API_KEY not set or embedding config missing');
|
|
63
|
+
}
|
|
64
|
+
const embeddingGenerator = new embedding_1.EmbeddingGenerator(embedConfig);
|
|
65
|
+
const engine = new LanceDbEngine(repoRoot, embeddingGenerator);
|
|
66
|
+
const memories = (0, store_1.loadAll)(repoRoot);
|
|
67
|
+
console.log(`Indexing ${memories.length} memories...`);
|
|
68
|
+
await engine.index(memories, options.incremental ?? false);
|
|
69
|
+
console.log('Index updated successfully');
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error.code === 'MODULE_NOT_FOUND') {
|
|
73
|
+
console.error('LanceDB engine requires: npm install @lancedb/lancedb @lancedb/core openai');
|
|
74
|
+
console.error('Or use the default text engine (no setup needed).');
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
console.error(`Index error: ${error.message}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcH,oCAyCC;AArDD,yCAAsD;AACtD,sCAAuC;AAEvC,iDAAuD;AAShD,KAAK,UAAU,YAAY,CAAC,UAAwB,EAAE;IAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAA,oBAAY,EAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC;IAEpC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;IAE7D,oDAAoD;IACpD,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAA,eAAO,EAAC,QAAQ,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,MAAM,qBAAqB,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,iBAAiB;IACjB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,wDAAa,2BAA2B,GAAC,CAAC;YACpE,MAAM,WAAW,GAAG,8BAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,kBAAkB,GAAG,IAAI,8BAAkB,CAAC,WAAW,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAE/D,MAAM,QAAQ,GAAG,IAAA,eAAO,EAAC,QAAQ,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,MAAM,cAAc,CAAC,CAAC;YAEvD,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC;YAE3D,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;gBAC5F,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,gBAAiB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Install command
|
|
3
|
+
* Sets up memobank directory structure and platform integrations
|
|
4
|
+
*/
|
|
5
|
+
export interface InstallOptions {
|
|
6
|
+
repo?: string;
|
|
7
|
+
claudeCode?: boolean;
|
|
8
|
+
codex?: boolean;
|
|
9
|
+
cursor?: boolean;
|
|
10
|
+
all?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Install memobank
|
|
14
|
+
*/
|
|
15
|
+
export declare function installCommand(options?: InstallOptions): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA2CD;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DhF"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Install command
|
|
4
|
+
* Sets up memobank directory structure and platform integrations
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.installCommand = installCommand;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const os = __importStar(require("os"));
|
|
44
|
+
const child_process_1 = require("child_process");
|
|
45
|
+
const util_1 = require("util");
|
|
46
|
+
const config_1 = require("../config");
|
|
47
|
+
const claude_code_1 = require("../platforms/claude-code");
|
|
48
|
+
const codex_1 = require("../platforms/codex");
|
|
49
|
+
const cursor_1 = require("../platforms/cursor");
|
|
50
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
51
|
+
const MEMORY_TYPES = ['lesson', 'decision', 'workflow', 'architecture'];
|
|
52
|
+
/**
|
|
53
|
+
* Detect git repo name
|
|
54
|
+
*/
|
|
55
|
+
async function detectGitRepoName(cwd) {
|
|
56
|
+
try {
|
|
57
|
+
const { stdout } = await execAsync('git rev-parse --show-toplevel', { cwd });
|
|
58
|
+
const gitRoot = stdout.trim();
|
|
59
|
+
return path.basename(gitRoot);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
// Not a git repo, use directory name
|
|
63
|
+
return path.basename(cwd);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Create directory structure
|
|
68
|
+
*/
|
|
69
|
+
function createDirectoryStructure(repoRoot) {
|
|
70
|
+
// Create memory type directories
|
|
71
|
+
for (const type of MEMORY_TYPES) {
|
|
72
|
+
const typeDir = path.join(repoRoot, type);
|
|
73
|
+
if (!fs.existsSync(typeDir)) {
|
|
74
|
+
fs.mkdirSync(typeDir, { recursive: true });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Create memory directory
|
|
78
|
+
const memoryDir = path.join(repoRoot, 'memory');
|
|
79
|
+
if (!fs.existsSync(memoryDir)) {
|
|
80
|
+
fs.mkdirSync(memoryDir, { recursive: true });
|
|
81
|
+
}
|
|
82
|
+
// Create meta directory
|
|
83
|
+
const metaDir = path.join(repoRoot, 'meta');
|
|
84
|
+
if (!fs.existsSync(metaDir)) {
|
|
85
|
+
fs.mkdirSync(metaDir, { recursive: true });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Install memobank
|
|
90
|
+
*/
|
|
91
|
+
async function installCommand(options = {}) {
|
|
92
|
+
const cwd = process.cwd();
|
|
93
|
+
// Determine mode and repo root
|
|
94
|
+
let repoRoot;
|
|
95
|
+
let projectName;
|
|
96
|
+
if (options.repo) {
|
|
97
|
+
// Mode A: Explicit repo path
|
|
98
|
+
repoRoot = path.resolve(options.repo);
|
|
99
|
+
projectName = path.basename(repoRoot);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// Mode B: Auto-detect or use ~/.memobank/<project>/
|
|
103
|
+
projectName = await detectGitRepoName(cwd);
|
|
104
|
+
repoRoot = path.join(os.homedir(), '.memobank', projectName);
|
|
105
|
+
}
|
|
106
|
+
console.log(`Setting up memobank at: ${repoRoot}`);
|
|
107
|
+
// Create directory structure
|
|
108
|
+
createDirectoryStructure(repoRoot);
|
|
109
|
+
console.log(`✓ Directory structure created`);
|
|
110
|
+
// Write config if missing
|
|
111
|
+
const configPath = path.join(repoRoot, 'meta', 'config.yaml');
|
|
112
|
+
if (!fs.existsSync(configPath)) {
|
|
113
|
+
(0, config_1.initConfig)(repoRoot, projectName);
|
|
114
|
+
console.log(`✓ Config initialized`);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.log(`⊘ Config already exists`);
|
|
118
|
+
}
|
|
119
|
+
// Platform installs
|
|
120
|
+
const allPlatforms = options.all ?? (!options.claudeCode && !options.codex && !options.cursor);
|
|
121
|
+
if (allPlatforms || options.claudeCode) {
|
|
122
|
+
await (0, claude_code_1.installClaudeCode)(repoRoot);
|
|
123
|
+
}
|
|
124
|
+
if (allPlatforms || options.codex) {
|
|
125
|
+
await (0, codex_1.installCodex)(cwd);
|
|
126
|
+
}
|
|
127
|
+
if (allPlatforms || options.cursor) {
|
|
128
|
+
await (0, cursor_1.installCursor)(cwd);
|
|
129
|
+
}
|
|
130
|
+
// Print success summary
|
|
131
|
+
console.log();
|
|
132
|
+
console.log(`✓ memobank ready at ${repoRoot}`);
|
|
133
|
+
console.log();
|
|
134
|
+
console.log('Next steps:');
|
|
135
|
+
console.log(` memo setup # Interactive configuration`);
|
|
136
|
+
console.log(` memo import # Import memories from other AI tools`);
|
|
137
|
+
console.log(` memo recall "project context" # Test recall`);
|
|
138
|
+
console.log(` memo write lesson # Create a memory`);
|
|
139
|
+
console.log(` memo map # View memory summary`);
|
|
140
|
+
console.log(` memo --help # See all commands`);
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|