memobank-cli 0.4.0 → 0.6.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 +24 -0
- package/README.md +330 -83
- package/dist/cli.js +104 -20
- package/dist/cli.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +26 -13
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/init.d.ts +10 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +94 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/lifecycle.d.ts +2 -0
- package/dist/commands/lifecycle.d.ts.map +1 -1
- package/dist/commands/lifecycle.js +10 -0
- package/dist/commands/lifecycle.js.map +1 -1
- package/dist/commands/migrate.d.ts +22 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +130 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/onboarding.d.ts.map +1 -1
- package/dist/commands/onboarding.js +116 -41
- package/dist/commands/onboarding.js.map +1 -1
- package/dist/commands/recall.d.ts.map +1 -1
- package/dist/commands/recall.js +9 -3
- package/dist/commands/recall.js.map +1 -1
- package/dist/commands/scan.js +1 -1
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +7 -2
- package/dist/commands/search.js.map +1 -1
- 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/workspace.d.ts +12 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +189 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/commands/write.d.ts.map +1 -1
- package/dist/commands/write.js +4 -0
- package/dist/commands/write.js.map +1 -1
- package/dist/components/MultiSelect.d.ts +17 -0
- package/dist/components/MultiSelect.d.ts.map +1 -0
- package/dist/components/MultiSelect.js +7 -0
- package/dist/components/MultiSelect.js.map +1 -0
- package/dist/config.d.ts +3 -15
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +27 -62
- package/dist/config.js.map +1 -1
- package/dist/core/decay-engine.d.ts +11 -0
- package/dist/core/decay-engine.d.ts.map +1 -1
- package/dist/core/decay-engine.js +11 -0
- package/dist/core/decay-engine.js.map +1 -1
- package/dist/core/lifecycle-manager.d.ts +16 -0
- package/dist/core/lifecycle-manager.d.ts.map +1 -1
- package/dist/core/lifecycle-manager.js +86 -0
- package/dist/core/lifecycle-manager.js.map +1 -1
- package/dist/core/retriever.d.ts +1 -1
- package/dist/core/retriever.d.ts.map +1 -1
- package/dist/core/retriever.js +48 -3
- package/dist/core/retriever.js.map +1 -1
- package/dist/core/store.d.ts +15 -19
- package/dist/core/store.d.ts.map +1 -1
- package/dist/core/store.js +107 -79
- package/dist/core/store.js.map +1 -1
- package/dist/platforms/claude-code.d.ts +2 -1
- package/dist/platforms/claude-code.d.ts.map +1 -1
- package/dist/platforms/claude-code.js +19 -14
- package/dist/platforms/claude-code.js.map +1 -1
- package/dist/platforms/gemini.d.ts.map +1 -1
- package/dist/platforms/gemini.js +26 -4
- package/dist/platforms/gemini.js.map +1 -1
- package/dist/platforms/qwen.d.ts.map +1 -1
- package/dist/platforms/qwen.js +26 -4
- package/dist/platforms/qwen.js.map +1 -1
- package/dist/types.d.ts +15 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4UH;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4ClE"}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Setup Command
|
|
4
|
+
* Interactive setup wizard for memobank configuration
|
|
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.setupWizard = setupWizard;
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const readline = __importStar(require("readline"));
|
|
43
|
+
const child_process_1 = require("child_process");
|
|
44
|
+
const store_1 = require("../core/store");
|
|
45
|
+
const config_1 = require("../config");
|
|
46
|
+
const import_1 = require("./import");
|
|
47
|
+
const tool_config_1 = require("../core/tool-config");
|
|
48
|
+
/**
|
|
49
|
+
* Create readline interface
|
|
50
|
+
*/
|
|
51
|
+
function createReadline() {
|
|
52
|
+
return readline.createInterface({
|
|
53
|
+
input: process.stdin,
|
|
54
|
+
output: process.stdout,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Prompt user with yes/no question
|
|
59
|
+
*/
|
|
60
|
+
function askYesNo(rl, question, defaultValue = true) {
|
|
61
|
+
return new Promise((resolve) => {
|
|
62
|
+
const defaultStr = defaultValue ? 'Y/n' : 'y/N';
|
|
63
|
+
rl.question(`${question} (${defaultStr}): `, (answer) => {
|
|
64
|
+
if (!answer || answer.trim() === '') {
|
|
65
|
+
resolve(defaultValue);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const lower = answer.toLowerCase().trim();
|
|
69
|
+
resolve(lower === 'y' || lower === 'yes');
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Prompt user to select from options
|
|
76
|
+
*/
|
|
77
|
+
function askSelect(rl, question, options) {
|
|
78
|
+
return new Promise((resolve) => {
|
|
79
|
+
console.log(question);
|
|
80
|
+
options.forEach((opt, i) => {
|
|
81
|
+
console.log(` ${i + 1}. ${opt}`);
|
|
82
|
+
});
|
|
83
|
+
rl.question(`Select (1-${options.length}, or 0 to skip): `, (answer) => {
|
|
84
|
+
const num = parseInt(answer.trim());
|
|
85
|
+
if (isNaN(num) || num < 0 || num > options.length) {
|
|
86
|
+
resolve(-1);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
resolve(num - 1);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Prompt user to select multiple options
|
|
96
|
+
*/
|
|
97
|
+
function askMultiSelect(rl, question, options) {
|
|
98
|
+
return new Promise((resolve) => {
|
|
99
|
+
console.log(question);
|
|
100
|
+
options.forEach((opt, i) => {
|
|
101
|
+
console.log(` ${i + 1}. ${opt}`);
|
|
102
|
+
});
|
|
103
|
+
rl.question(`Select (comma-separated, e.g., "1,3" or "all"): `, (answer) => {
|
|
104
|
+
const trimmed = answer.trim().toLowerCase();
|
|
105
|
+
if (trimmed === 'all') {
|
|
106
|
+
resolve(options.map((_, i) => i));
|
|
107
|
+
}
|
|
108
|
+
else if (!trimmed) {
|
|
109
|
+
resolve([]);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
const indices = trimmed
|
|
113
|
+
.split(',')
|
|
114
|
+
.map((s) => parseInt(s.trim()) - 1)
|
|
115
|
+
.filter((n) => !isNaN(n) && n >= 0 && n < options.length);
|
|
116
|
+
resolve(indices);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Ask user for scope (global or project)
|
|
123
|
+
*/
|
|
124
|
+
async function askScope(rl, toolName) {
|
|
125
|
+
console.log(`\n📍 ${toolName} Memory Scope`);
|
|
126
|
+
console.log('Where should memories be stored?\n');
|
|
127
|
+
console.log(' 1. Global - Shared across all projects');
|
|
128
|
+
console.log(' 2. Project - Specific to this project only');
|
|
129
|
+
const answer = await new Promise((resolve) => {
|
|
130
|
+
rl.question('Select (1-2): ', resolve);
|
|
131
|
+
});
|
|
132
|
+
return answer.trim() === '1' ? 'global' : 'project';
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Check if Ollama is installed and running
|
|
136
|
+
*/
|
|
137
|
+
async function checkOllama() {
|
|
138
|
+
return new Promise((resolve) => {
|
|
139
|
+
(0, child_process_1.exec)('ollama list', (error, stdout) => {
|
|
140
|
+
if (error) {
|
|
141
|
+
resolve({ installed: false, models: [] });
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
const models = stdout
|
|
145
|
+
.split('\n')
|
|
146
|
+
.slice(1) // Skip header
|
|
147
|
+
.filter((line) => line.trim())
|
|
148
|
+
.map((line) => line.split(/\s+/)[0])
|
|
149
|
+
.filter((name) => !!name);
|
|
150
|
+
resolve({ installed: true, models });
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Setup embedding configuration
|
|
157
|
+
*/
|
|
158
|
+
async function setupEmbedding(rl, config) {
|
|
159
|
+
console.log('\n📡 Embedding Configuration\n');
|
|
160
|
+
console.log('Vector embeddings enable semantic search for your memories.\n');
|
|
161
|
+
const useEmbedding = await askYesNo(rl, 'Enable vector search with embeddings?', true);
|
|
162
|
+
if (!useEmbedding) {
|
|
163
|
+
config.embedding.engine = 'text';
|
|
164
|
+
console.log('✓ Using text-based search only.\n');
|
|
165
|
+
return config;
|
|
166
|
+
}
|
|
167
|
+
// Check for Ollama
|
|
168
|
+
const ollamaStatus = await checkOllama();
|
|
169
|
+
if (ollamaStatus.installed) {
|
|
170
|
+
console.log(`\n✓ Ollama detected (${ollamaStatus.models.length} models installed)`);
|
|
171
|
+
const hasMxbai = ollamaStatus.models.some((m) => m.includes('mxbai') || m.includes('embed'));
|
|
172
|
+
if (!hasMxbai) {
|
|
173
|
+
console.log(' Note: Recommended model "mxbai-embed-large" not found.');
|
|
174
|
+
console.log(' Run: ollama pull mxbai-embed-large\n');
|
|
175
|
+
}
|
|
176
|
+
const useOllama = await askYesNo(rl, 'Use Ollama for local embeddings?', true);
|
|
177
|
+
if (useOllama) {
|
|
178
|
+
config.embedding.engine = 'lancedb';
|
|
179
|
+
config.embedding.provider = 'ollama';
|
|
180
|
+
config.embedding.model = 'mxbai-embed-large';
|
|
181
|
+
config.embedding.dimensions = 1024;
|
|
182
|
+
console.log('✓ Configured: Ollama + LanceDB\n');
|
|
183
|
+
return config;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
console.log('\n⚠ Ollama not detected.');
|
|
188
|
+
console.log(' Install: https://ollama.ai\n');
|
|
189
|
+
}
|
|
190
|
+
// OpenAI option
|
|
191
|
+
const useOpenAI = await askYesNo(rl, 'Use OpenAI for embeddings?', false);
|
|
192
|
+
if (useOpenAI) {
|
|
193
|
+
const hasKey = !!process.env.OPENAI_API_KEY;
|
|
194
|
+
if (!hasKey) {
|
|
195
|
+
console.log(' ⚠ OPENAI_API_KEY not set in environment.');
|
|
196
|
+
console.log(' Export: export OPENAI_API_KEY="sk-..."');
|
|
197
|
+
}
|
|
198
|
+
config.embedding.engine = 'lancedb';
|
|
199
|
+
config.embedding.provider = 'openai';
|
|
200
|
+
config.embedding.model = 'text-embedding-3-small';
|
|
201
|
+
config.embedding.dimensions = 1536;
|
|
202
|
+
console.log('✓ Configured: OpenAI + LanceDB\n');
|
|
203
|
+
return config;
|
|
204
|
+
}
|
|
205
|
+
// Default to text
|
|
206
|
+
config.embedding.engine = 'text';
|
|
207
|
+
console.log('✓ Using text-based search only.\n');
|
|
208
|
+
return config;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Configure AI tools to use memobank
|
|
212
|
+
*/
|
|
213
|
+
async function setupToolConfiguration(rl, repoRoot) {
|
|
214
|
+
console.log('\n🔌 AI Tool Configuration\n');
|
|
215
|
+
console.log('Memobank can integrate with your AI coding tools to provide\nautomatic memory recall and capture.\n');
|
|
216
|
+
const installedTools = (0, tool_config_1.detectInstalledTools)();
|
|
217
|
+
const availableTools = installedTools.filter((t) => t.installed);
|
|
218
|
+
if (availableTools.length === 0) {
|
|
219
|
+
console.log('No supported AI tools detected.\n');
|
|
220
|
+
console.log('Install one of:');
|
|
221
|
+
console.log(' • Claude Code - https://claude.ai/code');
|
|
222
|
+
console.log(' • Gemini CLI - https://geminicli.com');
|
|
223
|
+
console.log(' • Qwen Code - https://qwenlm.github.io/qwen-code\n');
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
console.log('Detected installed tools:\n');
|
|
227
|
+
availableTools.forEach((t, i) => {
|
|
228
|
+
console.log(` ${i + 1}. ${t.name}`);
|
|
229
|
+
});
|
|
230
|
+
console.log();
|
|
231
|
+
const configureToolsPrompt = await askYesNo(rl, 'Configure these tools to use memobank?', true);
|
|
232
|
+
if (!configureToolsPrompt) {
|
|
233
|
+
console.log('✓ Skipping tool configuration.\n');
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
// Let user select which tools to configure
|
|
237
|
+
const selectedIndices = await askMultiSelect(rl, 'Which tools to configure?', availableTools.map((t) => t.name));
|
|
238
|
+
if (selectedIndices.length === 0) {
|
|
239
|
+
console.log('✓ Skipping tool configuration.\n');
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
// Get project path for project-scoped tools
|
|
243
|
+
const cwd = process.cwd();
|
|
244
|
+
const projectPath = (0, store_1.findRepoRoot)(cwd, repoRoot);
|
|
245
|
+
const projectName = path.basename(projectPath);
|
|
246
|
+
// Configure each selected tool with scope
|
|
247
|
+
const toolConfigs = [];
|
|
248
|
+
for (const index of selectedIndices) {
|
|
249
|
+
const tool = availableTools[index];
|
|
250
|
+
if (!tool)
|
|
251
|
+
continue;
|
|
252
|
+
const scope = await askScope(rl, tool.name);
|
|
253
|
+
toolConfigs.push({
|
|
254
|
+
name: tool.name,
|
|
255
|
+
scope,
|
|
256
|
+
projectPath: scope === 'project' ? projectPath : undefined,
|
|
257
|
+
});
|
|
258
|
+
console.log(`✓ ${tool.name} will use ${scope} memory\n`);
|
|
259
|
+
}
|
|
260
|
+
// Apply configurations
|
|
261
|
+
console.log('\n⚙️ Applying configurations...\n');
|
|
262
|
+
await (0, tool_config_1.configureTools)(toolConfigs);
|
|
263
|
+
console.log();
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Import memories from other AI tools
|
|
267
|
+
*/
|
|
268
|
+
async function setupImport(rl, repoRoot) {
|
|
269
|
+
console.log('\n📥 Import Existing Memories\n');
|
|
270
|
+
console.log('Memobank can import memories from other AI coding tools.\n');
|
|
271
|
+
const availableTools = (0, import_1.detectAvailableTools)();
|
|
272
|
+
if (availableTools.length === 0) {
|
|
273
|
+
console.log('No existing AI tool memories found.\n');
|
|
274
|
+
console.log('Supported tools:');
|
|
275
|
+
console.log(' • Claude Code - ~/.claude/projects/<project>/memory/');
|
|
276
|
+
console.log(' • Gemini CLI - ~/.gemini/GEMINI.md, ./GEMINI.md');
|
|
277
|
+
console.log(' • Qwen Code - ~/.qwen/QWEN.md\n');
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
console.log('Found memories from:\n');
|
|
281
|
+
availableTools.forEach((t, i) => {
|
|
282
|
+
console.log(` ${i + 1}. ${t.name}`);
|
|
283
|
+
});
|
|
284
|
+
console.log();
|
|
285
|
+
const doImport = await askYesNo(rl, 'Import these memories to memobank?', true);
|
|
286
|
+
if (!doImport) {
|
|
287
|
+
console.log('✓ Skipping import.\n');
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
// Select which tools to import
|
|
291
|
+
const selection = await askSelect(rl, 'Which memories to import?', [
|
|
292
|
+
...availableTools.map((t) => t.name),
|
|
293
|
+
'All of the above',
|
|
294
|
+
]);
|
|
295
|
+
if (selection === -1 || selection === availableTools.length) {
|
|
296
|
+
// Import all
|
|
297
|
+
await (0, import_1.importMemories)({ repo: repoRoot, dryRun: false });
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
const tool = availableTools[selection];
|
|
301
|
+
if (!tool)
|
|
302
|
+
return;
|
|
303
|
+
if (tool.name.toLowerCase().includes('claude')) {
|
|
304
|
+
await (0, import_1.importMemories)({ repo: repoRoot, claude: true, dryRun: false });
|
|
305
|
+
}
|
|
306
|
+
else if (tool.name.toLowerCase().includes('gemini')) {
|
|
307
|
+
await (0, import_1.importMemories)({ repo: repoRoot, gemini: true, dryRun: false });
|
|
308
|
+
}
|
|
309
|
+
else if (tool.name.toLowerCase().includes('qwen')) {
|
|
310
|
+
await (0, import_1.importMemories)({ repo: repoRoot, qwen: true, dryRun: false });
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
console.log();
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Main setup wizard
|
|
317
|
+
*/
|
|
318
|
+
async function setupWizard(repoRoot) {
|
|
319
|
+
const rl = createReadline();
|
|
320
|
+
const cwd = process.cwd();
|
|
321
|
+
const root = (0, store_1.findRepoRoot)(cwd, repoRoot);
|
|
322
|
+
console.log('\n🧠 Memobank Setup Wizard\n');
|
|
323
|
+
console.log('This wizard will help you configure memobank.\n');
|
|
324
|
+
console.log(`Repository: ${root}\n`);
|
|
325
|
+
// Load existing config
|
|
326
|
+
let config = (0, config_1.loadConfig)(root);
|
|
327
|
+
// Step 1: Embedding setup
|
|
328
|
+
config = await setupEmbedding(rl, config);
|
|
329
|
+
// Step 2: Tool configuration
|
|
330
|
+
await setupToolConfiguration(rl, root);
|
|
331
|
+
// Step 3: Import existing memories
|
|
332
|
+
await setupImport(rl, root);
|
|
333
|
+
// Save config
|
|
334
|
+
console.log('💾 Saving configuration...\n');
|
|
335
|
+
(0, config_1.writeConfig)(root, config);
|
|
336
|
+
// Summary
|
|
337
|
+
console.log('✅ Setup Complete!\n');
|
|
338
|
+
console.log('Configuration summary:');
|
|
339
|
+
console.log(` • Search engine: ${config.embedding.engine}`);
|
|
340
|
+
if (config.embedding.engine === 'lancedb') {
|
|
341
|
+
console.log(` • Provider: ${config.embedding.provider}`);
|
|
342
|
+
console.log(` • Model: ${config.embedding.model}`);
|
|
343
|
+
}
|
|
344
|
+
console.log(` • Top K results: ${config.memory.top_k}`);
|
|
345
|
+
console.log(` • Token budget: ${config.memory.token_budget}`);
|
|
346
|
+
console.log('\nNext steps:');
|
|
347
|
+
console.log(' memo map # View memory statistics');
|
|
348
|
+
console.log(' memo write lesson # Create your first memory');
|
|
349
|
+
console.log(' memo recall "query" # Search memories');
|
|
350
|
+
console.log(' memo import # Import from other AI tools');
|
|
351
|
+
console.log(' memo --help # See all commands\n');
|
|
352
|
+
rl.close();
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace memory commands (cross-repo, optional)
|
|
3
|
+
* memo workspace init <remote> — clone/init workspace repo
|
|
4
|
+
* memo workspace sync — pull latest; optionally push
|
|
5
|
+
* memo workspace publish <file> — scan secrets + copy to workspace
|
|
6
|
+
* memo workspace status — show git status of local workspace clone
|
|
7
|
+
*/
|
|
8
|
+
export declare function workspaceInit(remoteUrl: string, repoRoot: string): Promise<void>;
|
|
9
|
+
export declare function workspaceSync(repoRoot: string, push?: boolean): Promise<void>;
|
|
10
|
+
export declare function workspacePublish(filePath: string, repoRoot: string, wsDirOverride?: string): Promise<void>;
|
|
11
|
+
export declare function workspaceStatus(repoRoot: string): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCtF;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjF;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BrE"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workspace memory commands (cross-repo, optional)
|
|
4
|
+
* memo workspace init <remote> — clone/init workspace repo
|
|
5
|
+
* memo workspace sync — pull latest; optionally push
|
|
6
|
+
* memo workspace publish <file> — scan secrets + copy to workspace
|
|
7
|
+
* memo workspace status — show git status of local workspace clone
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.workspaceInit = workspaceInit;
|
|
44
|
+
exports.workspaceSync = workspaceSync;
|
|
45
|
+
exports.workspacePublish = workspacePublish;
|
|
46
|
+
exports.workspaceStatus = workspaceStatus;
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const child_process_1 = require("child_process");
|
|
50
|
+
const config_1 = require("../config");
|
|
51
|
+
const scan_1 = require("./scan");
|
|
52
|
+
const MEMORY_TYPES = ['lesson', 'decision', 'workflow', 'architecture', 'meta'];
|
|
53
|
+
async function workspaceInit(remoteUrl, repoRoot) {
|
|
54
|
+
const config = (0, config_1.loadConfig)(repoRoot);
|
|
55
|
+
const wsName = path.basename(remoteUrl, '.git');
|
|
56
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
57
|
+
const wsDir = path.join(home, '.memobank', '_workspace', wsName);
|
|
58
|
+
if (fs.existsSync(wsDir)) {
|
|
59
|
+
console.log(`Workspace already initialized at ${wsDir}. Run: memo workspace sync`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
let cloned = false;
|
|
63
|
+
try {
|
|
64
|
+
(0, child_process_1.execSync)(`git clone "${remoteUrl}" "${wsDir}"`, { stdio: 'pipe' });
|
|
65
|
+
cloned = true;
|
|
66
|
+
console.log('✓ Cloned workspace repository.');
|
|
67
|
+
}
|
|
68
|
+
catch { /* remote may be empty */ }
|
|
69
|
+
if (!cloned) {
|
|
70
|
+
fs.mkdirSync(wsDir, { recursive: true });
|
|
71
|
+
(0, child_process_1.execSync)(`git init "${wsDir}"`, { stdio: 'pipe' });
|
|
72
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" remote add origin "${remoteUrl}"`, { stdio: 'pipe' });
|
|
73
|
+
for (const type of MEMORY_TYPES) {
|
|
74
|
+
fs.mkdirSync(path.join(wsDir, type), { recursive: true });
|
|
75
|
+
fs.writeFileSync(path.join(wsDir, type, '.gitkeep'), '');
|
|
76
|
+
}
|
|
77
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" add -A`, { stdio: 'pipe' });
|
|
78
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" commit -m "chore: initialize workspace memory repo"`, { stdio: 'pipe' });
|
|
79
|
+
try {
|
|
80
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" push -u origin main`, { stdio: 'pipe' });
|
|
81
|
+
}
|
|
82
|
+
catch { /* push may fail for empty remotes — ok */ }
|
|
83
|
+
console.log('✓ Initialized workspace repository.');
|
|
84
|
+
}
|
|
85
|
+
config.workspace = { remote: remoteUrl, auto_sync: false, branch: 'main', path: '.memobank' };
|
|
86
|
+
(0, config_1.writeConfig)(repoRoot, config);
|
|
87
|
+
console.log(`✓ Workspace remote configured: ${remoteUrl}`);
|
|
88
|
+
}
|
|
89
|
+
async function workspaceSync(repoRoot, push = false) {
|
|
90
|
+
const config = (0, config_1.loadConfig)(repoRoot);
|
|
91
|
+
if (!config.workspace?.remote) {
|
|
92
|
+
console.error('No workspace remote configured. Run: memo workspace init <remote-url>');
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
const wsName = path.basename(config.workspace.remote, '.git');
|
|
96
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
97
|
+
const wsDir = path.join(home, '.memobank', '_workspace', wsName);
|
|
98
|
+
const branch = config.workspace.branch ?? 'main';
|
|
99
|
+
console.log('Pulling from workspace remote...');
|
|
100
|
+
(0, child_process_1.execFileSync)('git', ['-C', wsDir, 'pull', 'origin', branch], { stdio: 'inherit' });
|
|
101
|
+
if (push) {
|
|
102
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" add -A`, { stdio: 'pipe' });
|
|
103
|
+
let hasChanges = false;
|
|
104
|
+
try {
|
|
105
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" diff --staged --quiet`, { stdio: 'pipe' });
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
hasChanges = true;
|
|
109
|
+
}
|
|
110
|
+
if (hasChanges) {
|
|
111
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" commit -m "chore: workspace sync [memo workspace sync]"`, { stdio: 'inherit' });
|
|
112
|
+
(0, child_process_1.execFileSync)('git', ['-C', wsDir, 'push', 'origin', branch], { stdio: 'inherit' });
|
|
113
|
+
console.log('✓ Pushed to workspace remote.');
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log('Nothing to push. Repository is up to date.');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
console.log('✓ Workspace memories synced.');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async function workspacePublish(filePath, repoRoot, wsDirOverride) {
|
|
124
|
+
if (!fs.existsSync(filePath)) {
|
|
125
|
+
throw new Error(`File not found: ${filePath}`);
|
|
126
|
+
}
|
|
127
|
+
// Secret scan
|
|
128
|
+
try {
|
|
129
|
+
const findings = (0, scan_1.scanFile)(filePath);
|
|
130
|
+
if (findings.length > 0) {
|
|
131
|
+
console.error('⚠️ Potential secrets found — aborting publish:');
|
|
132
|
+
findings.forEach(f => console.error(` ${f}`));
|
|
133
|
+
console.error('→ Fix manually or run: memo scan --fix <file>');
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch { /* scan module unavailable — skip */ }
|
|
138
|
+
const config = (0, config_1.loadConfig)(repoRoot);
|
|
139
|
+
const wsName = config.workspace?.remote
|
|
140
|
+
? path.basename(config.workspace.remote, '.git')
|
|
141
|
+
: '_workspace';
|
|
142
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
143
|
+
const wsDir = wsDirOverride ?? path.join(home, '.memobank', '_workspace', wsName);
|
|
144
|
+
if (!fs.existsSync(wsDir)) {
|
|
145
|
+
throw new Error(`Workspace not initialized. Run: memo workspace init <remote-url>`);
|
|
146
|
+
}
|
|
147
|
+
const rel = path.relative(repoRoot, filePath);
|
|
148
|
+
const dst = path.join(wsDir, rel);
|
|
149
|
+
if (fs.existsSync(dst)) {
|
|
150
|
+
console.warn(`⚠️ File already exists in workspace: ${rel}`);
|
|
151
|
+
console.warn(' Overwriting. The workspace repo PR review is the governance gate.');
|
|
152
|
+
}
|
|
153
|
+
fs.mkdirSync(path.dirname(dst), { recursive: true });
|
|
154
|
+
fs.copyFileSync(filePath, dst);
|
|
155
|
+
console.log(`✓ Published: ${rel}`);
|
|
156
|
+
console.log(' Run: memo workspace sync --push to share with team.');
|
|
157
|
+
}
|
|
158
|
+
async function workspaceStatus(repoRoot) {
|
|
159
|
+
const config = (0, config_1.loadConfig)(repoRoot);
|
|
160
|
+
if (!config.workspace?.remote) {
|
|
161
|
+
console.log('No workspace configured. Run: memo workspace init <remote-url>');
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const wsName = path.basename(config.workspace.remote, '.git');
|
|
165
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
166
|
+
const wsDir = path.join(home, '.memobank', '_workspace', wsName);
|
|
167
|
+
if (!fs.existsSync(path.join(wsDir, '.git'))) {
|
|
168
|
+
console.log(`Workspace directory not found: ${wsDir}`);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
const status = (0, child_process_1.execFileSync)('git', ['-C', wsDir, 'status', '--short'], { encoding: 'utf-8' });
|
|
173
|
+
let log = '';
|
|
174
|
+
try {
|
|
175
|
+
log = (0, child_process_1.execFileSync)('git', ['-C', wsDir, 'log', '--oneline', '-5'], { encoding: 'utf-8' });
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
log = '(no commits)';
|
|
179
|
+
}
|
|
180
|
+
console.log('Workspace repository status:');
|
|
181
|
+
console.log(status || ' (clean)');
|
|
182
|
+
console.log('\nRecent commits:');
|
|
183
|
+
console.log(log);
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
console.error(`Could not get workspace status: ${e.message}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAYlD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA8FD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAYlD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA8FD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CA+Hf"}
|
package/dist/commands/write.js
CHANGED
|
@@ -147,6 +147,7 @@ async function writeMemoryCommand(type, options = {}) {
|
|
|
147
147
|
confidence: 'medium',
|
|
148
148
|
content: options.content || '',
|
|
149
149
|
created: new Date().toISOString(),
|
|
150
|
+
status: 'experimental',
|
|
150
151
|
};
|
|
151
152
|
}
|
|
152
153
|
else {
|
|
@@ -237,6 +238,9 @@ async function writeMemoryCommand(type, options = {}) {
|
|
|
237
238
|
});
|
|
238
239
|
// Update memoryData with generated file name
|
|
239
240
|
memoryData.name = fileName.replace('.md', '').replace(/^\d{4}-\d{2}-\d{2}-/, '');
|
|
241
|
+
if (!memoryData.status) {
|
|
242
|
+
memoryData.status = 'experimental';
|
|
243
|
+
}
|
|
240
244
|
const filePath = (0, store_1.writeMemory)(repoRoot, memoryData);
|
|
241
245
|
console.log(`✅ Created: ${filePath}`);
|
|
242
246
|
}
|