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.
Files changed (128) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/LICENSE +21 -0
  3. package/README.md +300 -0
  4. package/dist/cli.d.ts +7 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +294 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/capture.d.ts +12 -0
  9. package/dist/commands/capture.d.ts.map +1 -0
  10. package/dist/commands/capture.js +191 -0
  11. package/dist/commands/capture.js.map +1 -0
  12. package/dist/commands/import.d.ts +28 -0
  13. package/dist/commands/import.d.ts.map +1 -0
  14. package/dist/commands/import.js +356 -0
  15. package/dist/commands/import.js.map +1 -0
  16. package/dist/commands/index.d.ts +12 -0
  17. package/dist/commands/index.d.ts.map +1 -0
  18. package/dist/commands/index.js +82 -0
  19. package/dist/commands/index.js.map +1 -0
  20. package/dist/commands/install.d.ts +16 -0
  21. package/dist/commands/install.d.ts.map +1 -0
  22. package/dist/commands/install.js +142 -0
  23. package/dist/commands/install.js.map +1 -0
  24. package/dist/commands/lifecycle.d.ts +21 -0
  25. package/dist/commands/lifecycle.d.ts.map +1 -0
  26. package/dist/commands/lifecycle.js +106 -0
  27. package/dist/commands/lifecycle.js.map +1 -0
  28. package/dist/commands/map.d.ts +10 -0
  29. package/dist/commands/map.d.ts.map +1 -0
  30. package/dist/commands/map.js +72 -0
  31. package/dist/commands/map.js.map +1 -0
  32. package/dist/commands/onboarding.d.ts +10 -0
  33. package/dist/commands/onboarding.d.ts.map +1 -0
  34. package/dist/commands/onboarding.js +420 -0
  35. package/dist/commands/onboarding.js.map +1 -0
  36. package/dist/commands/recall.d.ts +13 -0
  37. package/dist/commands/recall.d.ts.map +1 -0
  38. package/dist/commands/recall.js +89 -0
  39. package/dist/commands/recall.js.map +1 -0
  40. package/dist/commands/review.d.ts +11 -0
  41. package/dist/commands/review.d.ts.map +1 -0
  42. package/dist/commands/review.js +66 -0
  43. package/dist/commands/review.js.map +1 -0
  44. package/dist/commands/search.d.ts +13 -0
  45. package/dist/commands/search.d.ts.map +1 -0
  46. package/dist/commands/search.js +107 -0
  47. package/dist/commands/search.js.map +1 -0
  48. package/dist/commands/setup.d.ts +9 -0
  49. package/dist/commands/setup.d.ts.map +1 -0
  50. package/dist/commands/setup.js +354 -0
  51. package/dist/commands/setup.js.map +1 -0
  52. package/dist/commands/write.d.ts +14 -0
  53. package/dist/commands/write.d.ts.map +1 -0
  54. package/dist/commands/write.js +247 -0
  55. package/dist/commands/write.js.map +1 -0
  56. package/dist/config.d.ts +19 -0
  57. package/dist/config.d.ts.map +1 -0
  58. package/dist/config.js +147 -0
  59. package/dist/config.js.map +1 -0
  60. package/dist/core/decay-engine.d.ts +16 -0
  61. package/dist/core/decay-engine.d.ts.map +1 -0
  62. package/dist/core/decay-engine.js +91 -0
  63. package/dist/core/decay-engine.js.map +1 -0
  64. package/dist/core/embedding.d.ts +60 -0
  65. package/dist/core/embedding.d.ts.map +1 -0
  66. package/dist/core/embedding.js +169 -0
  67. package/dist/core/embedding.js.map +1 -0
  68. package/dist/core/lifecycle-manager.d.ts +105 -0
  69. package/dist/core/lifecycle-manager.d.ts.map +1 -0
  70. package/dist/core/lifecycle-manager.js +332 -0
  71. package/dist/core/lifecycle-manager.js.map +1 -0
  72. package/dist/core/memory-template.d.ts +70 -0
  73. package/dist/core/memory-template.d.ts.map +1 -0
  74. package/dist/core/memory-template.js +496 -0
  75. package/dist/core/memory-template.js.map +1 -0
  76. package/dist/core/noise-filter.d.ts +39 -0
  77. package/dist/core/noise-filter.d.ts.map +1 -0
  78. package/dist/core/noise-filter.js +168 -0
  79. package/dist/core/noise-filter.js.map +1 -0
  80. package/dist/core/retriever.d.ts +21 -0
  81. package/dist/core/retriever.d.ts.map +1 -0
  82. package/dist/core/retriever.js +77 -0
  83. package/dist/core/retriever.js.map +1 -0
  84. package/dist/core/sanitizer.d.ts +9 -0
  85. package/dist/core/sanitizer.d.ts.map +1 -0
  86. package/dist/core/sanitizer.js +57 -0
  87. package/dist/core/sanitizer.js.map +1 -0
  88. package/dist/core/smart-extractor.d.ts +12 -0
  89. package/dist/core/smart-extractor.d.ts.map +1 -0
  90. package/dist/core/smart-extractor.js +102 -0
  91. package/dist/core/smart-extractor.js.map +1 -0
  92. package/dist/core/store.d.ts +40 -0
  93. package/dist/core/store.d.ts.map +1 -0
  94. package/dist/core/store.js +233 -0
  95. package/dist/core/store.js.map +1 -0
  96. package/dist/core/tool-config.d.ts +33 -0
  97. package/dist/core/tool-config.d.ts.map +1 -0
  98. package/dist/core/tool-config.js +253 -0
  99. package/dist/core/tool-config.js.map +1 -0
  100. package/dist/engines/engine-adapter.d.ts +22 -0
  101. package/dist/engines/engine-adapter.d.ts.map +1 -0
  102. package/dist/engines/engine-adapter.js +7 -0
  103. package/dist/engines/engine-adapter.js.map +1 -0
  104. package/dist/engines/lancedb-engine.d.ts +55 -0
  105. package/dist/engines/lancedb-engine.d.ts.map +1 -0
  106. package/dist/engines/lancedb-engine.js +279 -0
  107. package/dist/engines/lancedb-engine.js.map +1 -0
  108. package/dist/engines/text-engine.d.ts +30 -0
  109. package/dist/engines/text-engine.d.ts.map +1 -0
  110. package/dist/engines/text-engine.js +100 -0
  111. package/dist/engines/text-engine.js.map +1 -0
  112. package/dist/platforms/claude-code.d.ts +13 -0
  113. package/dist/platforms/claude-code.d.ts.map +1 -0
  114. package/dist/platforms/claude-code.js +85 -0
  115. package/dist/platforms/claude-code.js.map +1 -0
  116. package/dist/platforms/codex.d.ts +9 -0
  117. package/dist/platforms/codex.d.ts.map +1 -0
  118. package/dist/platforms/codex.js +102 -0
  119. package/dist/platforms/codex.js.map +1 -0
  120. package/dist/platforms/cursor.d.ts +9 -0
  121. package/dist/platforms/cursor.d.ts.map +1 -0
  122. package/dist/platforms/cursor.js +112 -0
  123. package/dist/platforms/cursor.js.map +1 -0
  124. package/dist/types.d.ts +55 -0
  125. package/dist/types.d.ts.map +1 -0
  126. package/dist/types.js +6 -0
  127. package/dist/types.js.map +1 -0
  128. package/package.json +87 -0
package/dist/cli.js ADDED
@@ -0,0 +1,294 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * memobank CLI
5
+ * Entry point for the memo command
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ const commander_1 = require("commander");
9
+ const install_1 = require("./commands/install");
10
+ const recall_1 = require("./commands/recall");
11
+ const search_1 = require("./commands/search");
12
+ const capture_1 = require("./commands/capture");
13
+ const write_1 = require("./commands/write");
14
+ const index_1 = require("./commands/index");
15
+ const review_1 = require("./commands/review");
16
+ const map_1 = require("./commands/map");
17
+ const import_1 = require("./commands/import");
18
+ const onboarding_1 = require("./commands/onboarding");
19
+ const lifecycle_1 = require("./commands/lifecycle");
20
+ const program = new commander_1.Command();
21
+ program
22
+ .name('memo')
23
+ .description('memobank CLI - persistent memory for AI coding sessions')
24
+ .version('0.1.0');
25
+ // Install command - simplified, just creates directory structure
26
+ program
27
+ .command('install')
28
+ .description('Set up memobank directory structure (use "memo onboarding" for interactive setup)')
29
+ .option('--repo <path>', 'Point to an existing memobank repo')
30
+ .action(async (options) => {
31
+ try {
32
+ await (0, install_1.installCommand)(options);
33
+ }
34
+ catch (error) {
35
+ console.error(`Error: ${error.message}`);
36
+ process.exit(1);
37
+ }
38
+ });
39
+ // Onboarding command - new interactive setup
40
+ program
41
+ .command('onboarding')
42
+ .alias('init')
43
+ .alias('setup')
44
+ .description('Interactive setup wizard with menu navigation (recommended)')
45
+ .option('--repo <path>', 'Memobank repository path')
46
+ .action(async (options) => {
47
+ try {
48
+ await (0, onboarding_1.onboardingCommand)(options.repo);
49
+ }
50
+ catch (error) {
51
+ console.error(`Error: ${error.message}`);
52
+ process.exit(1);
53
+ }
54
+ });
55
+ // Recall command
56
+ program
57
+ .command('recall <query>')
58
+ .description('Search and display relevant memories (writes to MEMORY.md)')
59
+ .option('--top <number>', 'Number of results to return', '5')
60
+ .option('--engine <engine>', 'Search engine (text|lancedb)', 'text')
61
+ .option('--format <format>', 'Output format (text|json)', 'text')
62
+ .option('--dry-run', 'Print without writing MEMORY.md', false)
63
+ .option('--repo <path>', 'Memobank repository path')
64
+ .action(async (query, options) => {
65
+ try {
66
+ await (0, recall_1.recall)(query, {
67
+ top: parseInt(options.top),
68
+ engine: options.engine,
69
+ format: options.format,
70
+ dryRun: options.dryRun,
71
+ repo: options.repo,
72
+ });
73
+ }
74
+ catch (error) {
75
+ console.error(`Error: ${error.message}`);
76
+ process.exit(1);
77
+ }
78
+ });
79
+ // Capture command
80
+ program
81
+ .command('capture')
82
+ .description('Extract learnings from session text')
83
+ .option('--session <text>', 'Session text to extract from (use - for stdin)')
84
+ .option('--auto', 'Read from Claude auto-memory directory')
85
+ .option('--repo <path>', 'Memobank repository path')
86
+ .action(async (options) => {
87
+ try {
88
+ await (0, capture_1.capture)({
89
+ session: options.session,
90
+ auto: options.auto,
91
+ repo: options.repo,
92
+ });
93
+ }
94
+ catch (error) {
95
+ console.error(`Error: ${error.message}`);
96
+ process.exit(1);
97
+ }
98
+ });
99
+ // Write command
100
+ program
101
+ .command('write <type>')
102
+ .description('Create a new memory (interactive or non-interactive)')
103
+ .option('--name <name>', 'Memory name (slug format)')
104
+ .option('--description <description>', 'One-sentence summary')
105
+ .option('--tags <tags>', 'Comma-separated tags')
106
+ .option('--content <content>', 'Markdown content')
107
+ .option('--repo <path>', 'Memobank repository path')
108
+ .action(async (type, options) => {
109
+ // Validate type
110
+ const validTypes = ['lesson', 'decision', 'workflow', 'architecture'];
111
+ if (!validTypes.includes(type)) {
112
+ console.error(`Error: Invalid type "${type}". Must be one of: ${validTypes.join(', ')}`);
113
+ process.exit(1);
114
+ }
115
+ try {
116
+ await (0, write_1.writeMemoryCommand)(type, {
117
+ name: options.name,
118
+ description: options.description,
119
+ tags: options.tags,
120
+ content: options.content,
121
+ repo: options.repo,
122
+ });
123
+ }
124
+ catch (error) {
125
+ console.error(`Error: ${error.message}`);
126
+ process.exit(1);
127
+ }
128
+ });
129
+ // Search command
130
+ program
131
+ .command('search <query>')
132
+ .description('Search memories (debug mode, does not write MEMORY.md)')
133
+ .option('--engine <engine>', 'Search engine (text|lancedb)', 'text')
134
+ .option('--tag <tag>', 'Filter by tag')
135
+ .option('--type <type>', 'Filter by type')
136
+ .option('--format <format>', 'Output format (text|json)', 'text')
137
+ .option('--repo <path>', 'Memobank repository path')
138
+ .action(async (query, options) => {
139
+ try {
140
+ await (0, search_1.search)(query, {
141
+ engine: options.engine,
142
+ tag: options.tag,
143
+ type: options.type,
144
+ format: options.format,
145
+ repo: options.repo,
146
+ });
147
+ }
148
+ catch (error) {
149
+ console.error(`Error: ${error.message}`);
150
+ process.exit(1);
151
+ }
152
+ });
153
+ // Index command
154
+ program
155
+ .command('index')
156
+ .description('Build or update search index')
157
+ .option('--incremental', 'Only index changed files')
158
+ .option('--engine <engine>', 'Search engine (text|lancedb)', 'text')
159
+ .option('--force', 'Force full rebuild')
160
+ .option('--repo <path>', 'Memobank repository path')
161
+ .action(async (options) => {
162
+ try {
163
+ await (0, index_1.indexCommand)({
164
+ incremental: options.incremental,
165
+ engine: options.engine,
166
+ force: options.force,
167
+ repo: options.repo,
168
+ });
169
+ }
170
+ catch (error) {
171
+ console.error(`Error: ${error.message}`);
172
+ process.exit(1);
173
+ }
174
+ });
175
+ // Review command
176
+ program
177
+ .command('review')
178
+ .description('List memories due for review')
179
+ .option('--due', 'Only show overdue items')
180
+ .option('--format <format>', 'Output format (text|json)', 'text')
181
+ .option('--repo <path>', 'Memobank repository path')
182
+ .action(async (options) => {
183
+ try {
184
+ await (0, review_1.reviewCommand)({
185
+ due: options.due,
186
+ format: options.format,
187
+ repo: options.repo,
188
+ });
189
+ }
190
+ catch (error) {
191
+ console.error(`Error: ${error.message}`);
192
+ process.exit(1);
193
+ }
194
+ });
195
+ // Map command
196
+ program
197
+ .command('map')
198
+ .description('Show memory summary and statistics')
199
+ .option('--type <type>', 'Filter by type')
200
+ .option('--repo <path>', 'Memobank repository path')
201
+ .action(async (options) => {
202
+ try {
203
+ await (0, map_1.mapCommand)({
204
+ type: options.type,
205
+ repo: options.repo,
206
+ });
207
+ }
208
+ catch (error) {
209
+ console.error(`Error: ${error.message}`);
210
+ process.exit(1);
211
+ }
212
+ });
213
+ // Import command
214
+ program
215
+ .command('import')
216
+ .description('Import memories from other AI tools (Claude Code, Gemini CLI, Qwen Code)')
217
+ .option('--claude', 'Import from Claude Code only')
218
+ .option('--gemini', 'Import from Gemini CLI only')
219
+ .option('--qwen', 'Import from Qwen Code only')
220
+ .option('--all', 'Import from all available tools (default)')
221
+ .option('--repo <path>', 'Memobank repository path')
222
+ .option('--dry-run', 'Show what would be imported without writing')
223
+ .action(async (options) => {
224
+ try {
225
+ await (0, import_1.importMemories)({
226
+ repo: options.repo,
227
+ claude: options.claude,
228
+ gemini: options.gemini,
229
+ qwen: options.qwen,
230
+ all: options.all || (!options.claude && !options.gemini && !options.qwen),
231
+ dryRun: options.dryRun,
232
+ });
233
+ }
234
+ catch (error) {
235
+ console.error(`Error: ${error.message}`);
236
+ process.exit(1);
237
+ }
238
+ });
239
+ // Lifecycle command
240
+ program
241
+ .command('lifecycle [action]')
242
+ .description('Manage memory lifecycle (tiers, archival, corrections)')
243
+ .option('--report', 'Generate lifecycle report')
244
+ .option('--tier <tier>', 'Filter by tier (core|working|peripheral)')
245
+ .option('--archive', 'Show archival candidates')
246
+ .option('--delete', 'Delete memory (requires --path)')
247
+ .option('--flagged', 'Show memories flagged for review')
248
+ .option('--path <path>', 'Memory file path')
249
+ .option('--repo <path>', 'Memobank repository path')
250
+ .action(async (action, options) => {
251
+ try {
252
+ if (action === 'correct' && options.path) {
253
+ await (0, lifecycle_1.correctCommand)(options.path, {
254
+ repo: options.repo,
255
+ reason: options.reason,
256
+ });
257
+ }
258
+ else {
259
+ await (0, lifecycle_1.lifecycleCommand)({
260
+ repo: options.repo,
261
+ report: options.report || (!options.tier && !options.archive && !options.delete && !options.flagged),
262
+ archive: options.archive,
263
+ delete: options.delete,
264
+ flagged: options.flagged,
265
+ tier: options.tier,
266
+ });
267
+ }
268
+ }
269
+ catch (error) {
270
+ console.error(`Error: ${error.message}`);
271
+ process.exit(1);
272
+ }
273
+ });
274
+ // Correct command (alias)
275
+ program
276
+ .command('correct <memory-path>')
277
+ .description('Record a correction for a memory')
278
+ .option('--reason <text>', 'Reason for correction')
279
+ .option('--repo <path>', 'Memobank repository path')
280
+ .action(async (memoryPath, options) => {
281
+ try {
282
+ await (0, lifecycle_1.correctCommand)(memoryPath, {
283
+ repo: options.repo,
284
+ reason: options.reason,
285
+ });
286
+ }
287
+ catch (error) {
288
+ console.error(`Error: ${error.message}`);
289
+ process.exit(1);
290
+ }
291
+ });
292
+ // Parse and execute
293
+ program.parse(process.argv);
294
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Capture command
3
+ * Extracts learnings from session text and writes to memory files
4
+ * Uses noise filtering and value scoring to determine what's worth remembering
5
+ */
6
+ export interface CaptureOptions {
7
+ session?: string;
8
+ auto?: boolean;
9
+ repo?: string;
10
+ }
11
+ export declare function capture(options?: CaptureOptions): Promise<void>;
12
+ //# sourceMappingURL=capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAiBD,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsIzE"}
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ /**
3
+ * Capture command
4
+ * Extracts learnings from session text and writes to memory files
5
+ * Uses noise filtering and value scoring to determine what's worth remembering
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.capture = capture;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const crypto = __importStar(require("crypto"));
45
+ const smart_extractor_1 = require("../core/smart-extractor");
46
+ const sanitizer_1 = require("../core/sanitizer");
47
+ const store_1 = require("../core/store");
48
+ const config_1 = require("../config");
49
+ const noise_filter_1 = require("../core/noise-filter");
50
+ /**
51
+ * Hash a string for deduplication
52
+ */
53
+ function hashString(str) {
54
+ return crypto.createHash('sha256').update(str).digest('hex');
55
+ }
56
+ /**
57
+ * Check if a memory already exists (by name hash)
58
+ */
59
+ function isDuplicate(name, existingMemories) {
60
+ const hash = hashString(name);
61
+ return existingMemories.some((m) => hashString(m.name) === hash);
62
+ }
63
+ async function capture(options = {}) {
64
+ const cwd = process.cwd();
65
+ const repoRoot = (0, store_1.findRepoRoot)(cwd, options.repo);
66
+ const config = (0, config_1.loadConfig)(repoRoot);
67
+ // 1. Get session text
68
+ let sessionText = '';
69
+ if (options.auto) {
70
+ // Read from Claude auto-memory directory
71
+ const claudeMemoryDir = path.join(process.env.HOME || '', '.claude', 'projects', config.project.name, 'memory');
72
+ if (fs.existsSync(claudeMemoryDir)) {
73
+ const files = fs
74
+ .readdirSync(claudeMemoryDir)
75
+ .filter((f) => f.endsWith('.md'))
76
+ .map((f) => path.join(claudeMemoryDir, f))
77
+ .sort((a, b) => {
78
+ const statA = fs.statSync(a);
79
+ const statB = fs.statSync(b);
80
+ return statB.mtimeMs - statA.mtimeMs;
81
+ });
82
+ if (files.length > 0 && files[0]) {
83
+ sessionText = fs.readFileSync(files[0], 'utf-8');
84
+ console.log(`Read from: ${files[0]}`);
85
+ }
86
+ else {
87
+ console.log('No recent memory files found in Claude directory');
88
+ return;
89
+ }
90
+ }
91
+ else {
92
+ console.log('Claude memory directory not found');
93
+ return;
94
+ }
95
+ }
96
+ else if (options.session) {
97
+ // Read from provided session text or file
98
+ if (options.session === '-') {
99
+ // Read from stdin
100
+ sessionText = await readStdin();
101
+ }
102
+ else if (fs.existsSync(options.session)) {
103
+ sessionText = fs.readFileSync(options.session, 'utf-8');
104
+ }
105
+ else {
106
+ sessionText = options.session;
107
+ }
108
+ }
109
+ else {
110
+ console.log('No session text provided. Use --session=<text> or --auto');
111
+ return;
112
+ }
113
+ if (!sessionText.trim()) {
114
+ console.log('Session text is empty');
115
+ return;
116
+ }
117
+ // 2. Sanitize
118
+ const sanitized = (0, sanitizer_1.sanitize)(sessionText);
119
+ // 3. Extract memories via LLM
120
+ const extracted = await (0, smart_extractor_1.extract)(sanitized, process.env.ANTHROPIC_API_KEY);
121
+ if (extracted.length === 0) {
122
+ console.log('No memories extracted from session');
123
+ return;
124
+ }
125
+ console.log(`\nšŸ“Š Extracted ${extracted.length} potential memories, evaluating value...\n`);
126
+ // 4. Evaluate and filter by value
127
+ const memoriesWithValue = extracted.map((item) => ({
128
+ ...item,
129
+ valueScore: (0, noise_filter_1.calculateValueScore)(item.content),
130
+ recommendation: (0, noise_filter_1.getCaptureRecommendation)((0, noise_filter_1.calculateValueScore)(item.content)),
131
+ }));
132
+ // Display evaluation
133
+ memoriesWithValue.forEach((item, i) => {
134
+ const { valueScore, recommendation } = item;
135
+ const icon = valueScore >= 0.7 ? 'āœ…' : valueScore >= 0.5 ? 'āš ļø' : 'āŒ';
136
+ console.log(`${icon} [${i + 1}] ${item.name}`);
137
+ console.log(` Score: ${valueScore.toFixed(2)} | ${recommendation.reason}`);
138
+ console.log(` Confidence: ${recommendation.confidence}\n`);
139
+ });
140
+ // Filter out low-value memories
141
+ const highValueMemories = memoriesWithValue.filter((item) => item.valueScore >= 0.5 || item.recommendation.shouldCapture);
142
+ if (highValueMemories.length === 0) {
143
+ console.log('⊘ All memories filtered out due to low value.');
144
+ return;
145
+ }
146
+ console.log(`āœ“ ${highValueMemories.length} memories passed value filter\n`);
147
+ // 5. Load existing memories for deduplication
148
+ const existingMemories = (0, store_1.loadAll)(repoRoot);
149
+ // 6. Deduplicate and write
150
+ let written = 0;
151
+ for (const item of highValueMemories) {
152
+ if (isDuplicate(item.name, existingMemories)) {
153
+ console.log(`Skipping duplicate: ${item.name}`);
154
+ continue;
155
+ }
156
+ const memory = {
157
+ name: item.name,
158
+ type: item.type,
159
+ description: item.description,
160
+ tags: item.tags,
161
+ confidence: item.confidence,
162
+ content: item.content,
163
+ created: new Date().toISOString(),
164
+ };
165
+ const filePath = (0, store_1.writeMemory)(repoRoot, memory);
166
+ console.log(`Created: ${filePath}`);
167
+ written++;
168
+ }
169
+ // 7. Print summary
170
+ console.log(`\nšŸ“ Captured ${written} high-value memories`);
171
+ console.log(` Skipped ${extracted.length - written} low-value or duplicate items\n`);
172
+ // 7. Note: index update is no-op for text engine
173
+ if (config.embedding.engine === 'lancedb') {
174
+ console.log('Run: memo index --incremental to update LanceDB');
175
+ }
176
+ }
177
+ /**
178
+ * Read from stdin
179
+ */
180
+ function readStdin() {
181
+ return new Promise((resolve) => {
182
+ let data = '';
183
+ process.stdin.on('data', (chunk) => {
184
+ data += chunk;
185
+ });
186
+ process.stdin.on('end', () => {
187
+ resolve(data);
188
+ });
189
+ });
190
+ }
191
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Import Command
3
+ * Import memories from other AI tools (Claude Code, Gemini CLI, Qwen Code)
4
+ */
5
+ export interface ImportOptions {
6
+ repo?: string;
7
+ claude?: boolean;
8
+ gemini?: boolean;
9
+ qwen?: boolean;
10
+ all?: boolean;
11
+ dryRun?: boolean;
12
+ }
13
+ interface ToolMemory {
14
+ name: string;
15
+ path: string;
16
+ content: string;
17
+ exists: boolean;
18
+ }
19
+ /**
20
+ * Detect available tools with memories
21
+ */
22
+ export declare function detectAvailableTools(): ToolMemory[];
23
+ /**
24
+ * Import memories from specified tools
25
+ */
26
+ export declare function importMemories(options?: ImportOptions): Promise<void>;
27
+ export {};
28
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AA2BD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,EAAE,CA+DnD;AAgID;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqJ/E"}