basemind 0.12.2

Full AI context layer over MCP — tree-sitter code-map, document RAG (PDF/Office/HTML/email + OCR + reranker), shared agent memory, on-demand web crawl, git history + blame + per-symbol diff. 300+ languages, 10+ coding-agent harnesses, content-addressed Fjall + LanceDB.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
{"version":3,"term":{"cols":245,"rows":52,"type":"xterm-256color","version":"iTerm2 3.6.5","theme":{"fg":"#dcdcdc","bg":"#15191e","palette":"#15181d:#a74532:#57bf37:#c7c53f:#2d43c0:#b249b9:#59c3c6:#c7c7c7:#686868:#d07e78:#82e498:#ebe24a:#a8abed:#d483dc:#8efafe:#ffffff"}},"timestamp":1782033119,"command":"./scripts/demo.sh","env":{"SHELL":"/bin/zsh"}}
[2.406, "o", "\u001b[1;32m❯\u001b[0m b"]
[0.039, "o", "a"]
[0.039, "o", "s"]
[0.036, "o", "e"]
[0.037, "o", "m"]
[0.033, "o", "i"]
[0.043, "o", "n"]
[0.041, "o", "d"]
[0.042, "o", " "]
[0.042, "o", "s"]
[0.039, "o", "c"]
[0.044, "o", "a"]
[0.043, "o", "n"]
[0.046, "o", " "]
[0.037, "o", "-"]
[0.037, "o", "-"]
[0.038, "o", "q"]
[0.038, "o", "u"]
[0.037, "o", "i"]
[0.038, "o", "e"]
[0.038, "o", "t"]
[0.037, "o", "\r\n"]
[1.157, "o", "\u001b[2mscanned\u001b[0m 264\u001b[0m  \u001b[2mupdated\u001b[0m \u001b[32m254\u001b[0m  \u001b[2mwarn\u001b[0m \u001b[33m8\u001b[0m  \u001b[2munchanged\u001b[0m \u001b[2m0\u001b[0m  \u001b[2mfailed\u001b[0m \u001b[2m0\u001b[0m  \u001b[2mskipped\u001b[0m 10\u001b[0m  \u001b[2mremoved\u001b[0m \u001b[2m0\u001b[0m\r\n"]
[0.014, "o", "\r\n"]
[0.607, "o", "\u001b[1;32m❯\u001b[0m "]
[0.000, "o", "b"]
[0.033, "o", "a"]
[0.037, "o", "s"]
[0.036, "o", "e"]
[0.037, "o", "m"]
[0.037, "o", "i"]
[0.038, "o", "n"]
[0.033, "o", "d"]
[0.033, "o", " "]
[0.034, "o", "q"]
[0.033, "o", "u"]
[0.034, "o", "e"]
[0.037, "o", "r"]
[0.038, "o", "y"]
[0.037, "o", " "]
[0.036, "o", "o"]
[0.037, "o", "u"]
[0.033, "o", "t"]
[0.038, "o", "l"]
[0.037, "o", "i"]
[0.038, "o", "n"]
[0.037, "o", "e"]
[0.033, "o", " "]
[0.036, "o", "s"]
[0.038, "o", "r"]
[0.035, "o", "c"]
[0.035, "o", "/"]
[0.036, "o", "s"]
[0.037, "o", "c"]
[0.038, "o", "a"]
[0.033, "o", "n"]
[0.038, "o", "n"]
[0.037, "o", "e"]
[0.035, "o", "r"]
[0.035, "o", "."]
[0.038, "o", "r"]
[0.038, "o", "s"]
[0.037, "o", " "]
[0.037, "o", "-"]
[0.036, "o", "-"]
[0.037, "o", "l"]
[0.034, "o", "2"]
[0.037, "o", "\r\n"]
[0.137, "o", "error_count: 0\r\nhad_errors: false\r\nlanguage: rust\r\npath: src/scanner.rs\r\nsize_bytes: 30697\r\n\r\ncalls (282 items):\r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0     "]
[0.000, "o", "        \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n\r\n"]
[0.000, "o", "docs (76 items):\r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n\r\n"]
[0.000, "o", "imports (16 items):\r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "      0             \r\n"]
[0.000, "o", "      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n      0             \r\n"]
[0.000, "o", "\r\nsymbols (36 items):\r\n     31 enum       ScanSource pub enum ScanSource<'a>\r\n"]
[0.000, "o", "     37 impl       ScanSource impl<'a> ScanSource<'a>\r\n     38 function   label fn label(&self) -> String\r\n     48 enum       ScanError pub enum ScanError\r\n     60 struct     ScanStats pub struct ScanStats\r\n"]
[0.000, "o", "     84 struct     FileResult pub struct FileResult\r\n     98 impl       FileResult impl FileResult\r\n    101 function   bare fn bare(path: String, status: FileStatus) -> Self\r\n    113 enum       FileStatus pub enum FileStatus\r\n    149 struct     ScanReport pub struct ScanReport\r\n    154 struct     Filters struct Filters\r\n    171 impl       Filters impl Filters\r\n    172 function   build fn build(config: &Config, submodule_roots: Vec<String>) -> Result<Self, ScanError>\r\n    197 function   allows fn allows(&self, rel: &str) -> bool\r\n    218 function   submodule_roots_for_source fn submodule_roots_for_source(root: &Path, source: &ScanSource<'_>) -> Vec<String>\r\n    234 function   compile_globs fn compile_globs(patterns: &[String]) -> Result<globset::GlobSet, ScanError>\r\n"]
[0.000, "o", "    249 function   scan pub fn scan( root: &Path, store: &mut Store, config: &Config, source: ScanSource<'_>, ) -> Result<ScanReport, ScanError>\r\n"]
[0.000, "o", "    323 function   scan_paths pub fn scan_paths( root: &Path, store: &mut Store, config: &Config, paths: &[PathBuf], ) -> Result<ScanReport, ScanError>\r\n"]
[0.000, "o", "    389 function   apply_outcomes fn apply_outcomes( store: &mut Store, report: &mut ScanReport, outcomes: Vec<FileResult>, ) -> Vec<PendingDocBatchOpt>\r\n"]
[0.000, "o", "    449 type       PendingDocBatchOpt type PendingDocBatchOpt = PendingDocBatch\r\n    451 type       PendingDocBatchOpt type PendingDocBatchOpt = ()\r\n"]
[0.000, "o", "    453 function   candidates_for_source fn candidates_for_source( root: &Path, config: &Config, filters: &Filters, source: &ScanSource<'_>, ) -> Result<Vec<String>, ScanError>\r\n    479 function   walk_candidates fn walk_candidates(root: &Path, config: &Config, filters: &Filters) -> Vec<String>\r\n"]
[0.000, "o", "    518 function   process_file fn process_file( root: &Path, rel: &str, filters: &Filters, store: &Store, source: &ScanSource<'_>, config: &Config, scope: &str, ) -> FileResult\r\n    670 function   process_doc fn process_doc( root: &Path, rel: &str, filters: &Filters, store: &Store, config: &Config, scope: &str, ) -> FileResult\r\n    718 function   read_working_tree fn read_working_tree( root: &Path, rel: &str, filters: &Filters, ) -> Result<(Vec<u8>, u64, i64), FileStatus>\r\n    747 function   read_via_git fn read_via_git( filters: &Filters, blob: Result<Option<Vec<u8>>, GitError>, ) -> Result<(Vec<u8>, u64, i64), FileStatus>\r\n    770 function   format_extract_err fn format_extract_err(e: &ExtractError) -> String\r\n    778 function   looks_binary pub fn looks_binary(bytes: &[u8]) -> bool\r\n"]
[0.000, "o", "    786 function   derive_scope fn derive_scope(root: &Path, source: &ScanSource<'_>) -> String\r\n    798 function   flush_doc_batches_if_any fn flush_doc_batches_if_any( store: &mut Store, config: &Config, scope: &str, batches: Vec<PendingDocBatchOpt>, )\r\n    811 function   flush_doc_batches_if_any fn flush_doc_batches_if_any( _store: &mut Store, _config: &Config, _scope: &str, _batches: Vec<PendingDocBatchOpt>, )\r\n    820 module     tests mod tests\r\n    824 function   looks_binary_detects_nul_in_first_kib fn looks_binary_detects_nul_in_first_kib()\r\n    832 function   looks_binary_accepts_plain_source fn looks_binary_accepts_plain_source()\r\n    838 function   looks_binary_ignores_nul_past_probe_window fn looks_binary_ignores_nul_past_probe_window()\r\n"]
[0.008, "o", "\r\n"]
[0.634, "o", "\u001b[1;32m❯\u001b[0m b"]
[0.038, "o", "a"]
[0.037, "o", "s"]
[0.038, "o", "e"]
[0.038, "o", "m"]
[0.037, "o", "i"]
[0.038, "o", "n"]
[0.037, "o", "d"]
[0.037, "o", " "]
[0.037, "o", "q"]
[0.038, "o", "u"]
[0.034, "o", "e"]
[0.037, "o", "r"]
[0.035, "o", "y"]
[0.038, "o", " "]
[0.033, "o", "s"]
[0.038, "o", "e"]
[0.036, "o", "a"]
[0.037, "o", "r"]
[0.036, "o", "c"]
[0.037, "o", "h"]
[0.038, "o", " "]
[0.037, "o", "s"]
[0.038, "o", "c"]
[0.037, "o", "a"]
[0.037, "o", "n"]
[0.038, "o", " "]
[0.037, "o", "-"]
[0.038, "o", "-"]
[0.037, "o", "l"]
[0.036, "o", "i"]
[0.036, "o", "m"]
[0.037, "o", "i"]
[0.035, "o", "t"]
[0.037, "o", " "]
[0.038, "o", "1"]
[0.035, "o", "0"]
[0.038, "o", "\r\n"]
[0.123, "o", "next_cursor: kgoB\r\ntotal: 39\r\ntruncated: true\r\n\r\nresults (10 items):\r\n  src/index/keys.rs:498 function   prefix_scan_isolates_callees fn prefix_scan_isolates_callees()\r\n  src/index/keys.rs:526 function   prefix_scan_isolates_imports_by_path fn prefix_scan_isolates_imports_by_path()\r\n  src/index/keys.rs:566 function   prefix_scan_isolates_impls_by_trait fn prefix_scan_isolates_impls_by_trait()\r\n  src/index/keys.rs:584 function   prefix_scan_isolates_impls_by_path fn prefix_scan_isolates_impls_by_path()\r\n  src/lib.rs:24 module     scanner pub mod scanner\r\n  src/lib.rs:26 module     scanner_docs pub mod scanner_docs\r\n  src/main.rs:196 struct     RescanArgs struct RescanArgs\r\n  src/main.rs:658 function   cmd_scan fn cmd_scan( root: &std::path::Path, args: &ScanArgs, verbosity: Verbosity, no_color: bool, ) -> Result<()>\r\n  src/main.rs:729 function   cmd_rescan fn cmd_rescan( root: &std::path::Path, args: &RescanArgs, verbosity: Verbosity, no_color: bool, ) -> Result<()>\r\n  src/mcp/helpers.rs:749 function   scan_an"]
[0.000, "o", "d_refresh pub(super) async fn scan_and_refresh( state: Arc<ServerState>, scoped_paths: Option<Vec<std::path::PathBuf>>, ) -> Result<crate::scanner::ScanReport, McpError>\r\n"]
[0.011, "o", "\r\n"]
[0.607, "o", "\u001b[1;32m❯\u001b[0m b"]
[0.037, "o", "a"]
[0.038, "o", "s"]
[0.032, "o", "e"]
[0.038, "o", "m"]
[0.034, "o", "i"]
[0.037, "o", "n"]
[0.037, "o", "d"]
[0.038, "o", " "]
[0.033, "o", "q"]
[0.036, "o", "u"]
[0.037, "o", "e"]
[0.037, "o", "r"]
[0.035, "o", "y"]
[0.037, "o", " "]
[0.037, "o", "r"]
[0.035, "o", "e"]
[0.038, "o", "f"]
[0.037, "o", "e"]
[0.038, "o", "r"]
[0.037, "o", "e"]
[0.037, "o", "n"]
[0.038, "o", "c"]
[0.037, "o", "e"]
[0.037, "o", "s"]
[0.038, "o", " "]
[0.037, "o", "r"]
[0.037, "o", "e"]
[0.037, "o", "c"]
[0.037, "o", "o"]
[0.034, "o", "r"]
[0.036, "o", "d"]
[0.038, "o", "_"]
[0.036, "o", "c"]
[0.034, "o", "a"]
[0.037, "o", "l"]
[0.038, "o", "l"]
[0.032, "o", " "]
[0.036, "o", "-"]
[0.037, "o", "-"]
[0.036, "o", "l"]
[0.032, "o", "i"]
[0.035, "o", "m"]
[0.037, "o", "i"]
[0.038, "o", "t"]
[0.034, "o", " "]
[0.033, "o", "8"]
[0.037, "o", "\r\n"]
[0.137, "o", "name: record_call\r\nnext_cursor: AAtyZWNvcmRfY2FsbAAQc3JjL21jcC90b29scy5ycwAAYMg\r\ntotal: 46\r\n\r\nhits (8 items):\r\n  src/mcp/tools.rs:166:8 record_call\r\n  src/mcp/tools.rs:286:8 record_call\r\n  src/mcp/tools.rs:392:8 record_call\r\n  src/mcp/tools.rs:427:8 record_call\r\n  src/mcp/tools.rs:484:8 record_call\r\n  src/mcp/tools.rs:513:8 record_call\r\n  src/mcp/tools.rs:547:8 record_call\r\n  src/mcp/tools.rs:575:8 record_call\r\n"]
[0.010, "o", "\r\n"]
[0.607, "o", "\u001b[1;32m❯\u001b[0m "]
[0.000, "o", "b"]
[0.035, "o", "a"]
[0.037, "o", "s"]
[0.037, "o", "e"]
[0.037, "o", "m"]
[0.037, "o", "i"]
[0.036, "o", "n"]
[0.038, "o", "d"]
[0.037, "o", " "]
[0.037, "o", "q"]
[0.037, "o", "u"]
[0.038, "o", "e"]
[0.037, "o", "r"]
[0.037, "o", "y"]
[0.037, "o", " "]
[0.038, "o", "c"]
[0.037, "o", "a"]
[0.037, "o", "l"]
[0.037, "o", "l"]
[0.037, "o", "-"]
[0.037, "o", "g"]
[0.037, "o", "r"]
[0.034, "o", "a"]
[0.036, "o", "p"]
[0.032, "o", "h"]
[0.038, "o", " "]
[0.037, "o", "c"]
[0.037, "o", "m"]
[0.038, "o", "d"]
[0.037, "o", "_"]
[0.033, "o", "s"]
[0.037, "o", "c"]
[0.038, "o", "a"]
[0.035, "o", "n"]
[0.033, "o", " "]
[0.036, "o", "-"]
[0.037, "o", "-"]
[0.037, "o", "d"]
[0.038, "o", "i"]
[0.037, "o", "r"]
[0.037, "o", "e"]
[0.035, "o", "c"]
[0.037, "o", "t"]
[0.038, "o", "i"]
[0.036, "o", "o"]
[0.038, "o", "n"]
[0.034, "o", " "]
[0.039, "o", "c"]
[0.037, "o", "a"]
[0.037, "o", "l"]
[0.034, "o", "l"]
[0.037, "o", "e"]
[0.036, "o", "r"]
[0.036, "o", "s"]
[0.038, "o", " "]
[0.033, "o", "-"]
[0.037, "o", "-"]
[0.038, "o", "m"]
[0.038, "o", "a"]
[0.038, "o", "x"]
[0.037, "o", "-"]
[0.038, "o", "d"]
[0.037, "o", "e"]
[0.037, "o", "p"]
[0.037, "o", "t"]
[0.037, "o", "h"]
[0.037, "o", " "]
[0.038, "o", "3"]
[0.037, "o", "\r\n"]
[0.120, "o", "direction: callers\r\nroot: cmd_scan\r\ntruncated: false\r\n\r\nnodes (2 items):\r\n  depth  edges_to  name      sites                                                                   \r\n  0      []        cmd_scan  [{\"kind\":\"function\",\"path\":\"src/main.rs\",\"start_col\":0,\"start_row\":657}]\r\n  1      [0]       main      [{\"kind\":\"function\",\"path\":\"src/main.rs\",\"start_col\":0,\"start_row\":247}]\r\n"]
[0.009, "o", "\r\n"]
[0.606, "o", "\u001b[1;32m❯\u001b[0m b"]
[0.037, "o", "a"]
[0.037, "o", "s"]
[0.038, "o", "e"]
[0.037, "o", "m"]
[0.038, "o", "i"]
[0.037, "o", "n"]
[0.038, "o", "d"]
[0.037, "o", " "]
[0.037, "o", "g"]
[0.035, "o", "i"]
[0.037, "o", "t"]
[0.037, "o", " "]
[0.038, "o", "r"]
[0.037, "o", "e"]
[0.038, "o", "c"]
[0.035, "o", "e"]
[0.038, "o", "n"]
[0.037, "o", "t"]
[0.038, "o", "-"]
[0.036, "o", "c"]
[0.037, "o", "h"]
[0.037, "o", "a"]
[0.036, "o", "n"]
[0.035, "o", "g"]
[0.036, "o", "e"]
[0.037, "o", "s"]
[0.038, "o", " "]
[0.039, "o", "-"]
[0.038, "o", "-"]
[0.037, "o", "l"]
[0.040, "o", "i"]
[0.038, "o", "m"]
[0.038, "o", "i"]
[0.045, "o", "t"]
[0.039, "o", " "]
[0.037, "o", "5"]
[0.039, "o", "\r\n"]
[0.141, "o", "next_cursor: kgXOS4-Msg\r\n\r\ncommits (5 items):\r\n  author              author_time_unix  files                                                                                                                                                                                                      sha                                       short_sha  summary                                                                    \r\n  Na'aman Hirschfeld  1782032992        [{\"change\":\"modified\",\"path\":\"README.md\"},{\"change\":\"modified\",\"path\":\"Taskfile.yaml\"},{\"change\":\"modified\",\"path\":\"docs\"},{\"change\":\"added\",\"path\":\"docs/media\"},{\"change\":\"added\",\"path\":\"docs/media/M…  4b8f8cb271f2fb36dd62ee5d383b9bf47f18f142  4b8f8cb    docs: add scripted CLI demo recording + README media scaffolding           \r\n  Na'aman Hirschfeld  1782022265        [{\"change\":\"modified\",\"path\":\".claude-plugin\"},{\"change\":\"modified\",\"path\":\".claude-plugin/marketplace.json\"},{\"change\":\"modified\",\"path\":\".claude-plugin/plugin.json\"},{\"change\":\"modified\","]
[0.000, "o", "\"path\":\".co…  9925b917315ad1f09cdda212107509593c76cd1a  9925b91    chore(release): v0.6.3                                                     \r\n  Na'aman Hirschfeld  1782022166        [{\"change\":\"modified\",\"path\":\"CHANGELOG.md\"},{\"change\":\"modified\",\"path\":\"scripts\"},{\"change\":\"modified\",\"path\":\"scripts/mcp-launch.sh\"}]                                                                  d3dac62fc1cb9e625224c112f090d3e1b0d6c13c  d3dac62    fix(launcher): replace npx/uvx runtime with locked prebuilt-binary download\r\n  Na'aman Hirschfeld  1782002356        [{\"change\":\"modified\",\"path\":\".claude-plugin\"},{\"change\":\"modified\",\"path\":\".claude-plugin/marketplace.json\"},{\"change\":\"modified\",\"path\":\".claude-plugin/plugin.json\"},{\"change\":\"modified\",\"path\":\".co…  16867d307def34dd56972c32aed1b1f66d62e529  16867d3    chore(release): v0.6.2                                                     \r\n  Na'aman Hirschfeld  1782002126        [{\"change\":\"modified\",\"path\":\"pip-package\"},{\"change\":\"modified\",\"path\":\"pip-package/basem"]
[0.001, "o", "ind\"},{\"change\":\"modified\",\"path\":\"pip-package/basemind/downloader.py\"}]                                         68345e2a93aa3ecbce227805a526e050b01e689c  68345e2    fix(pip): replace a stale non-empty cache dir in the binary downloader     \r\n"]
[0.009, "o", "\r\n"]
[0.608, "o", "\u001b[1;32m❯\u001b[0m "]
[0.000, "o", "b"]
[0.040, "o", "a"]
[0.033, "o", "s"]
[0.038, "o", "e"]
[0.037, "o", "m"]
[0.033, "o", "i"]
[0.037, "o", "n"]
[0.037, "o", "d"]
[0.039, "o", " "]
[0.036, "o", "g"]
[0.037, "o", "i"]
[0.037, "o", "t"]
[0.037, "o", " "]
[0.033, "o", "b"]
[0.033, "o", "l"]
[0.038, "o", "a"]
[0.036, "o", "m"]
[0.034, "o", "e"]
[0.035, "o", "-"]
[0.038, "o", "s"]
[0.037, "o", "y"]
[0.038, "o", "m"]
[0.037, "o", "b"]
[0.036, "o", "o"]
[0.038, "o", "l"]
[0.037, "o", " "]
[0.038, "o", "s"]
[0.037, "o", "r"]
[0.037, "o", "c"]
[0.038, "o", "/"]
[0.037, "o", "m"]
[0.038, "o", "a"]
[0.037, "o", "i"]
[0.038, "o", "n"]
[0.035, "o", "."]
[0.038, "o", "r"]
[0.037, "o", "s"]
[0.039, "o", " "]
[0.038, "o", "c"]
[0.039, "o", "m"]
[0.037, "o", "d"]
[0.038, "o", "_"]
[0.038, "o", "s"]
[0.039, "o", "c"]
[0.043, "o", "a"]
[0.036, "o", "n"]
[0.033, "o", "\r\n"]
[0.326, "o", "kind: function\r\nline_end: 727\r\nline_start: 658\r\nname: cmd_scan\r\npath: src/main.rs\r\nsuspect_sha: 4b8f8cb271f2fb36dd62ee5d383b9bf47f18f142\r\n\r\nhunks (27 items):\r\n  author              author_time_unix  commit_sha                                len  short_sha  source_start_line  start_line  summary                                                             \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  6    f1cbf0d    217                658         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780761914        59e86c85c38f88f1db90cdaf94ff643978576b28  1    59e86c8    184                664         chore: initial commit — gitmind prototype                           \r\n  Na'aman Hirschfeld  1781462794        30f9e79e3acf73b7e2d71a1ae762313682adf15a  1    30f9e79    274                665         feat(config): schema-driven config across toml/cli/mcp/env          \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d83241"]
[0.000, "o", "6062ab3d0628b  3    f1cbf0d    225                666         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780761914        59e86c85c38f88f1db90cdaf94ff643978576b28  1    59e86c8    188                669         chore: initial commit — gitmind prototype                           \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  1    f1cbf0d    229                670         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780923004        a44d0b527b35d66eab7ee5673f7d028cb0fd78af  1    a44d0b5    260                671         chore(rename): gitmind → basemind                                   \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  2    f1cbf0d    231                672         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780923004        a44d0b527b35d66eab7ee5673f7d028cb0fd78af  1    a44d0"]
[0.000, "o", "b5    263                674         chore(rename): gitmind → basemind                                   \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  1    f1cbf0d    234                675         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780923004        a44d0b527b35d66eab7ee5673f7d028cb0fd78af  1    a44d0b5    265                676         chore(rename): gitmind → basemind                                   \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  3    f1cbf0d    236                677         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780923004        a44d0b527b35d66eab7ee5673f7d028cb0fd78af  1    a44d0b5    269                680         chore(rename): gitmind → basemind                                   \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  9    f1cbf0d    240              "]
[0.000, "o", "  681         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780923004        a44d0b527b35d66eab7ee5673f7d028cb0fd78af  1    a44d0b5    279                690         chore(rename): gitmind → basemind                                   \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  3    f1cbf0d    250                691         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780923004        a44d0b527b35d66eab7ee5673f7d028cb0fd78af  1    a44d0b5    283                694         chore(rename): gitmind → basemind                                   \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  2    f1cbf0d    254                695         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780923004        a44d0b527b35d66eab7ee5673f7d028cb0fd78af  1    a44d0b5    286                697         chore(renam"]
[0.000, "o", "e): gitmind → basemind                                   \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  3    f1cbf0d    257                698         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780923004        a44d0b527b35d66eab7ee5673f7d028cb0fd78af  1    a44d0b5    290                701         chore(rename): gitmind → basemind                                   \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  12   f1cbf0d    261                702         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780923004        a44d0b527b35d66eab7ee5673f7d028cb0fd78af  2    a44d0b5    303                714         chore(rename): gitmind → basemind                                   \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  3    f1cbf0d    275                716         feat: git-aware scanner + MCP tool"]
[0.000, "o", "s (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780923004        a44d0b527b35d66eab7ee5673f7d028cb0fd78af  1    a44d0b5    308                719         chore(rename): gitmind → basemind                                   \r\n  Na'aman Hirschfeld  1780768599        f1cbf0d579f9162103092d832416062ab3d0628b  2    f1cbf0d    279                720         feat: git-aware scanner + MCP tools (staged, rev, status, log, diff)\r\n  Na'aman Hirschfeld  1780761914        59e86c85c38f88f1db90cdaf94ff643978576b28  6    59e86c8    189                722         chore: initial commit — gitmind prototype                           \r\n"]
[0.010, "o", "\r\n"]
[0.608, "o", "\u001b[1;32m❯\u001b[0m b"]
[0.038, "o", "a"]
[0.037, "o", "s"]
[0.038, "o", "e"]
[0.037, "o", "m"]
[0.038, "o", "i"]
[0.037, "o", "n"]
[0.038, "o", "d"]
[0.037, "o", " "]
[0.038, "o", "t"]
[0.037, "o", "e"]
[0.037, "o", "l"]
[0.038, "o", "e"]
[0.038, "o", "m"]
[0.037, "o", "e"]
[0.038, "o", "t"]
[0.035, "o", "r"]
[0.038, "o", "y"]
[0.037, "o", " "]
[0.035, "o", "-"]
[0.037, "o", "-"]
[0.036, "o", "w"]
[0.038, "o", "i"]
[0.037, "o", "n"]
[0.034, "o", "d"]
[0.036, "o", "o"]
[0.038, "o", "w"]
[0.038, "o", " "]
[0.037, "o", "t"]
[0.038, "o", "o"]
[0.037, "o", "d"]
[0.034, "o", "a"]
[0.038, "o", "y"]
[0.039, "o", "\r\n"]
[0.101, "o", "savings_note: Savings are estimates vs a grep+Read baseline; see /basemind-stats for the model.\r\ntotal_calls: 6\r\ntotal_est_tokens_saved: 28386\r\ntotal_resp_bytes: 40756\r\ntruncated: false\r\nwindow: today\r\n\r\nper_baseline (4 items):\r\n  baseline                 calls  est_tokens_saved\r\n  no_baseline              3      0               \r\n  full_file_read           1      27132           \r\n  grep_plus_read_top_hits  1      910             \r\n  grep_top_hits            1      344             \r\n\r\nper_tool (6 items):\r\n  calls  est_tokens_saved  tool           \r\n  1      0                 blame_symbol   \r\n  1      0                 call_graph     \r\n  1      344               find_references\r\n  1      27132             outline        \r\n  1      0                 recent_changes \r\n  1      910               search_symbols \r\n\r\nrecent (6 items):\r\n"]
[0.000, "o", "  elapsed_ms  est_tokens_saved  resp_bytes  tool             ts_micros       \r\n  207         0                 7033        blame_symbol     1782033139127126\r\n  15          0                 3763        recent_changes   1782033136482763\r\n  0           0                 316         call_graph       1782033134338863\r\n  2           344               690         find_references  1782033131106931\r\n  0           910               1821        search_symbols   1782033128648462\r\n  0           27132             27133       outline          1782033126518127\r\n"]
[0.008, "o", "\r\n"]
[1.252, "x", "0"]