@coreyuan/vector-mind 1.0.49 → 1.0.52
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/README.md +67 -60
- package/dist/activity-log.d.ts +19 -0
- package/dist/activity-log.js +106 -0
- package/dist/activity-log.js.map +1 -0
- package/dist/builtin-conventions.d.ts +2 -1
- package/dist/builtin-conventions.js +5 -0
- package/dist/builtin-conventions.js.map +1 -1
- package/dist/config.d.ts +28 -0
- package/dist/config.js +189 -0
- package/dist/config.js.map +1 -0
- package/dist/database-runtime.d.ts +54 -0
- package/dist/database-runtime.js +512 -0
- package/dist/database-runtime.js.map +1 -0
- package/dist/development-warnings.d.ts +93 -0
- package/dist/development-warnings.js +589 -0
- package/dist/development-warnings.js.map +1 -0
- package/dist/file-indexing.d.ts +22 -0
- package/dist/file-indexing.js +243 -0
- package/dist/file-indexing.js.map +1 -0
- package/dist/grep.d.ts +64 -0
- package/dist/grep.js +475 -0
- package/dist/grep.js.map +1 -0
- package/dist/index.js +167 -7279
- package/dist/index.js.map +1 -1
- package/dist/large-file-split.d.ts +29 -0
- package/dist/large-file-split.js +146 -0
- package/dist/large-file-split.js.map +1 -0
- package/dist/memory-maintenance.d.ts +80 -0
- package/dist/memory-maintenance.js +537 -0
- package/dist/memory-maintenance.js.map +1 -0
- package/dist/memory-mutations.d.ts +23 -0
- package/dist/memory-mutations.js +83 -0
- package/dist/memory-mutations.js.map +1 -0
- package/dist/memory-recall.d.ts +93 -0
- package/dist/memory-recall.js +796 -0
- package/dist/memory-recall.js.map +1 -0
- package/dist/path-filters.d.ts +1 -0
- package/dist/path-filters.js +27 -0
- package/dist/path-filters.js.map +1 -0
- package/dist/path-rules.d.ts +12 -0
- package/dist/path-rules.js +208 -0
- package/dist/path-rules.js.map +1 -0
- package/dist/pending-changes.d.ts +22 -0
- package/dist/pending-changes.js +166 -0
- package/dist/pending-changes.js.map +1 -0
- package/dist/project-files.d.ts +66 -0
- package/dist/project-files.js +215 -0
- package/dist/project-files.js.map +1 -0
- package/dist/root.d.ts +15 -0
- package/dist/root.js +191 -0
- package/dist/root.js.map +1 -0
- package/dist/rtk-tools.d.ts +20 -0
- package/dist/rtk-tools.js +318 -0
- package/dist/rtk-tools.js.map +1 -0
- package/dist/server-instructions.d.ts +1 -0
- package/dist/server-instructions.js +88 -0
- package/dist/server-instructions.js.map +1 -0
- package/dist/symbols.d.ts +2 -0
- package/dist/symbols.js +159 -0
- package/dist/symbols.js.map +1 -0
- package/dist/token-savings.d.ts +40 -0
- package/dist/token-savings.js +50 -0
- package/dist/token-savings.js.map +1 -0
- package/dist/tool-catalog.d.ts +18 -0
- package/dist/tool-catalog.js +243 -0
- package/dist/tool-catalog.js.map +1 -0
- package/dist/tool-handlers/context-recovery.d.ts +6 -0
- package/dist/tool-handlers/context-recovery.js +319 -0
- package/dist/tool-handlers/context-recovery.js.map +1 -0
- package/dist/tool-handlers/context.d.ts +34 -0
- package/dist/tool-handlers/context.js +2 -0
- package/dist/tool-handlers/context.js.map +1 -0
- package/dist/tool-handlers/diagnostics.d.ts +8 -0
- package/dist/tool-handlers/diagnostics.js +114 -0
- package/dist/tool-handlers/diagnostics.js.map +1 -0
- package/dist/tool-handlers/files.d.ts +8 -0
- package/dist/tool-handlers/files.js +493 -0
- package/dist/tool-handlers/files.js.map +1 -0
- package/dist/tool-handlers/large-files.d.ts +4 -0
- package/dist/tool-handlers/large-files.js +139 -0
- package/dist/tool-handlers/large-files.js.map +1 -0
- package/dist/tool-handlers/maintenance.d.ts +4 -0
- package/dist/tool-handlers/maintenance.js +160 -0
- package/dist/tool-handlers/maintenance.js.map +1 -0
- package/dist/tool-handlers/memory-diagnostics.d.ts +5 -0
- package/dist/tool-handlers/memory-diagnostics.js +509 -0
- package/dist/tool-handlers/memory-diagnostics.js.map +1 -0
- package/dist/tool-handlers/memory.d.ts +6 -0
- package/dist/tool-handlers/memory.js +334 -0
- package/dist/tool-handlers/memory.js.map +1 -0
- package/dist/tool-handlers/notes-decisions.d.ts +7 -0
- package/dist/tool-handlers/notes-decisions.js +169 -0
- package/dist/tool-handlers/notes-decisions.js.map +1 -0
- package/dist/tool-handlers/requirements.d.ts +7 -0
- package/dist/tool-handlers/requirements.js +357 -0
- package/dist/tool-handlers/requirements.js.map +1 -0
- package/dist/tool-handlers.d.ts +4 -0
- package/dist/tool-handlers.js +105 -0
- package/dist/tool-handlers.js.map +1 -0
- package/dist/tool-output.d.ts +213 -0
- package/dist/tool-output.js +278 -0
- package/dist/tool-output.js.map +1 -0
- package/dist/tool-schemas.d.ts +434 -0
- package/dist/tool-schemas.js +328 -0
- package/dist/tool-schemas.js.map +1 -0
- package/dist/types.d.ts +61 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/docs/capability-matrix.md +43 -0
- package/package.json +11 -10
- package/skills/vector-mind-autopilot/SKILL.md +149 -0
- package/skills/vector-mind-autopilot/references/claude-desktop-mcp-config.json +9 -0
- package/skills/vector-mind-autopilot/references/claude-project-instructions.md +47 -0
- package/skills/vector-mind-autopilot/references/universal-system-prompt.md +78 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { INDEX_MAX_CODE_BYTES, INDEX_MAX_DOC_BYTES, INDEX_SKIP_MINIFIED, PENDING_FLUSH_MS, PENDING_PRUNE_EVERY, } from "./config.js";
|
|
4
|
+
import { getContentChunkKind, isContentIndexableFile, isSymbolIndexableFile, looksLikeGeneratedFile, looksLikeMinifiedBundle, shouldIgnorePath, } from "./path-rules.js";
|
|
5
|
+
import { extractSymbols } from "./symbols.js";
|
|
6
|
+
import { logActivity } from "./activity-log.js";
|
|
7
|
+
import { safeJson } from "./tool-output.js";
|
|
8
|
+
let fileIndexingContext = null;
|
|
9
|
+
const pendingChangeBuffer = new Map();
|
|
10
|
+
let pendingChangeFlushTimer = null;
|
|
11
|
+
let pendingEventsSincePrune = 0;
|
|
12
|
+
export function configureFileIndexing(context) {
|
|
13
|
+
fileIndexingContext = context;
|
|
14
|
+
}
|
|
15
|
+
function requireFileIndexingContext() {
|
|
16
|
+
if (!fileIndexingContext)
|
|
17
|
+
throw new Error("[VectorMind] file indexing context is not configured");
|
|
18
|
+
return fileIndexingContext;
|
|
19
|
+
}
|
|
20
|
+
function hasDb() {
|
|
21
|
+
return !!requireFileIndexingContext().getDb();
|
|
22
|
+
}
|
|
23
|
+
function getDb() {
|
|
24
|
+
const db = requireFileIndexingContext().getDb();
|
|
25
|
+
if (!db)
|
|
26
|
+
throw new Error("[VectorMind] database is not initialized");
|
|
27
|
+
return db;
|
|
28
|
+
}
|
|
29
|
+
function getProjectRoot() {
|
|
30
|
+
return requireFileIndexingContext().getProjectRoot();
|
|
31
|
+
}
|
|
32
|
+
function normalizeToDbPath(inputPath) {
|
|
33
|
+
return requireFileIndexingContext().normalizeToDbPath(inputPath);
|
|
34
|
+
}
|
|
35
|
+
function getIndexFileSymbolsTx() {
|
|
36
|
+
return requireFileIndexingContext().getIndexFileSymbolsTx();
|
|
37
|
+
}
|
|
38
|
+
function getDeleteFileChunkItemsStatement() {
|
|
39
|
+
return requireFileIndexingContext().getDeleteFileChunkItemsStatement();
|
|
40
|
+
}
|
|
41
|
+
function getInsertMemoryItemStatement() {
|
|
42
|
+
return requireFileIndexingContext().getInsertMemoryItemStatement();
|
|
43
|
+
}
|
|
44
|
+
function getUpsertPendingChangeStatement() {
|
|
45
|
+
return requireFileIndexingContext().getUpsertPendingChangeStatement();
|
|
46
|
+
}
|
|
47
|
+
function getDeleteSymbolsForFileStatement() {
|
|
48
|
+
return requireFileIndexingContext().getDeleteSymbolsForFileStatement();
|
|
49
|
+
}
|
|
50
|
+
function sha256Hex(input) {
|
|
51
|
+
return requireFileIndexingContext().sha256Hex(input);
|
|
52
|
+
}
|
|
53
|
+
function prunePendingChanges() {
|
|
54
|
+
requireFileIndexingContext().prunePendingChanges();
|
|
55
|
+
}
|
|
56
|
+
function chunkTextByLines(content, opts) {
|
|
57
|
+
const lines = content.split(/\r?\n/);
|
|
58
|
+
if (lines.length === 0)
|
|
59
|
+
return [];
|
|
60
|
+
const chunks = [];
|
|
61
|
+
let startLine = 1;
|
|
62
|
+
let currentLines = [];
|
|
63
|
+
let currentChars = 0;
|
|
64
|
+
for (let idx = 0; idx < lines.length; idx++) {
|
|
65
|
+
const line = lines[idx];
|
|
66
|
+
const nextChars = currentChars + line.length + 1;
|
|
67
|
+
const nextLines = currentLines.length + 1;
|
|
68
|
+
if (currentLines.length > 0 && (nextChars > opts.maxChars || nextLines > opts.maxLines)) {
|
|
69
|
+
const endLine = startLine + currentLines.length - 1;
|
|
70
|
+
chunks.push({ startLine, endLine, content: currentLines.join("\n") });
|
|
71
|
+
startLine = idx + 1;
|
|
72
|
+
currentLines = [];
|
|
73
|
+
currentChars = 0;
|
|
74
|
+
}
|
|
75
|
+
currentLines.push(line);
|
|
76
|
+
currentChars += line.length + 1;
|
|
77
|
+
}
|
|
78
|
+
if (currentLines.length > 0) {
|
|
79
|
+
const endLine = startLine + currentLines.length - 1;
|
|
80
|
+
chunks.push({ startLine, endLine, content: currentLines.join("\n") });
|
|
81
|
+
}
|
|
82
|
+
return chunks;
|
|
83
|
+
}
|
|
84
|
+
function indexFileContentChunks(dbFilePath, absPath, content) {
|
|
85
|
+
const kind = getContentChunkKind(absPath);
|
|
86
|
+
if (!kind)
|
|
87
|
+
return 0;
|
|
88
|
+
const opts = kind === "code_chunk"
|
|
89
|
+
? { maxChars: 10_000, maxLines: 200 }
|
|
90
|
+
: { maxChars: 14_000, maxLines: 260 };
|
|
91
|
+
const chunks = chunkTextByLines(content, opts);
|
|
92
|
+
const ext = path.extname(absPath).toLowerCase();
|
|
93
|
+
const metadata = safeJson({ ext });
|
|
94
|
+
const tx = getDb().transaction(() => {
|
|
95
|
+
getDeleteFileChunkItemsStatement().run(dbFilePath);
|
|
96
|
+
for (const chunk of chunks) {
|
|
97
|
+
const title = `${dbFilePath}#L${chunk.startLine}-L${chunk.endLine}`;
|
|
98
|
+
const contentHash = sha256Hex(chunk.content);
|
|
99
|
+
getInsertMemoryItemStatement().run(kind, title, chunk.content, dbFilePath, chunk.startLine, chunk.endLine, null, metadata, contentHash);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
try {
|
|
103
|
+
tx();
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
console.error("[vectormind] failed to index file chunks:", dbFilePath, err);
|
|
107
|
+
}
|
|
108
|
+
return chunks.length;
|
|
109
|
+
}
|
|
110
|
+
export function flushPendingChangeBuffer() {
|
|
111
|
+
if (!hasDb())
|
|
112
|
+
return;
|
|
113
|
+
if (pendingChangeFlushTimer) {
|
|
114
|
+
clearTimeout(pendingChangeFlushTimer);
|
|
115
|
+
pendingChangeFlushTimer = null;
|
|
116
|
+
}
|
|
117
|
+
if (!pendingChangeBuffer.size)
|
|
118
|
+
return;
|
|
119
|
+
const entries = Array.from(pendingChangeBuffer.entries());
|
|
120
|
+
pendingChangeBuffer.clear();
|
|
121
|
+
try {
|
|
122
|
+
const tx = getDb().transaction(() => {
|
|
123
|
+
for (const [filePath, event] of entries) {
|
|
124
|
+
getUpsertPendingChangeStatement().run(filePath, event);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
tx();
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
console.error("[vectormind] failed to flush pending change buffer:", err);
|
|
131
|
+
}
|
|
132
|
+
logActivity("pending_flush", {
|
|
133
|
+
entries: entries.length,
|
|
134
|
+
sample: entries.slice(0, 10).map(([file_path, last_event]) => ({ file_path, last_event })),
|
|
135
|
+
});
|
|
136
|
+
pendingEventsSincePrune += entries.length;
|
|
137
|
+
if (pendingEventsSincePrune >= PENDING_PRUNE_EVERY) {
|
|
138
|
+
pendingEventsSincePrune = 0;
|
|
139
|
+
prunePendingChanges();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export function recordPendingChange(absPath, event) {
|
|
143
|
+
if (shouldIgnorePath(absPath, getProjectRoot()))
|
|
144
|
+
return;
|
|
145
|
+
const track = isSymbolIndexableFile(absPath) || isContentIndexableFile(absPath);
|
|
146
|
+
if (!track)
|
|
147
|
+
return;
|
|
148
|
+
const filePath = normalizeToDbPath(absPath);
|
|
149
|
+
pendingChangeBuffer.set(filePath, event);
|
|
150
|
+
if (pendingChangeFlushTimer)
|
|
151
|
+
return;
|
|
152
|
+
if (PENDING_FLUSH_MS === 0) {
|
|
153
|
+
flushPendingChangeBuffer();
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
pendingChangeFlushTimer = setTimeout(flushPendingChangeBuffer, PENDING_FLUSH_MS);
|
|
157
|
+
}
|
|
158
|
+
export function indexFile(absPath, reason) {
|
|
159
|
+
if (shouldIgnorePath(absPath, getProjectRoot()))
|
|
160
|
+
return;
|
|
161
|
+
const indexSymbols = isSymbolIndexableFile(absPath);
|
|
162
|
+
const indexContent = isContentIndexableFile(absPath);
|
|
163
|
+
if (!indexSymbols && !indexContent)
|
|
164
|
+
return;
|
|
165
|
+
const kind = getContentChunkKind(absPath);
|
|
166
|
+
if (!kind)
|
|
167
|
+
return;
|
|
168
|
+
let stat;
|
|
169
|
+
try {
|
|
170
|
+
stat = fs.statSync(absPath);
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (!stat.isFile())
|
|
176
|
+
return;
|
|
177
|
+
const maxBytes = kind === "code_chunk" ? INDEX_MAX_CODE_BYTES : INDEX_MAX_DOC_BYTES;
|
|
178
|
+
if (maxBytes > 0 && stat.size > maxBytes)
|
|
179
|
+
return;
|
|
180
|
+
let content;
|
|
181
|
+
try {
|
|
182
|
+
content = fs.readFileSync(absPath, "utf8");
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (content.includes("\u0000"))
|
|
188
|
+
return;
|
|
189
|
+
const ext = path.extname(absPath).toLowerCase();
|
|
190
|
+
const filePath = normalizeToDbPath(absPath);
|
|
191
|
+
if (INDEX_SKIP_MINIFIED &&
|
|
192
|
+
kind === "code_chunk" &&
|
|
193
|
+
(ext === ".js" || ext === ".mjs" || ext === ".cjs" || ext === ".css") &&
|
|
194
|
+
looksLikeMinifiedBundle(content)) {
|
|
195
|
+
logActivity("index_skip", { file_path: filePath, reason: "minified_bundle", bytes: stat.size });
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
if (kind === "code_chunk" && stat.size >= 20_000 && looksLikeGeneratedFile(content)) {
|
|
199
|
+
logActivity("index_skip", { file_path: filePath, reason: "generated_file", bytes: stat.size });
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
let symbolCount = 0;
|
|
203
|
+
let chunkCount = 0;
|
|
204
|
+
if (indexSymbols) {
|
|
205
|
+
const symbols = extractSymbols(absPath, content);
|
|
206
|
+
symbolCount = symbols.length;
|
|
207
|
+
try {
|
|
208
|
+
getIndexFileSymbolsTx()?.(filePath, symbols);
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
console.error("[vectormind] failed to index symbols:", filePath, err);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
if (indexContent) {
|
|
215
|
+
chunkCount = indexFileContentChunks(filePath, absPath, content);
|
|
216
|
+
}
|
|
217
|
+
logActivity("index_file", {
|
|
218
|
+
file_path: filePath,
|
|
219
|
+
reason,
|
|
220
|
+
symbols: symbolCount,
|
|
221
|
+
chunks: chunkCount,
|
|
222
|
+
bytes: stat.size,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
export function removeFileIndexes(absPath) {
|
|
226
|
+
if (shouldIgnorePath(absPath, getProjectRoot()))
|
|
227
|
+
return;
|
|
228
|
+
const filePath = normalizeToDbPath(absPath);
|
|
229
|
+
try {
|
|
230
|
+
getDeleteSymbolsForFileStatement().run(filePath);
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
console.error("[vectormind] failed to remove symbols:", filePath, err);
|
|
234
|
+
}
|
|
235
|
+
try {
|
|
236
|
+
getDeleteFileChunkItemsStatement().run(filePath);
|
|
237
|
+
}
|
|
238
|
+
catch (err) {
|
|
239
|
+
console.error("[vectormind] failed to remove file chunks:", filePath, err);
|
|
240
|
+
}
|
|
241
|
+
logActivity("remove_file", { file_path: filePath });
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=file-indexing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-indexing.js","sourceRoot":"","sources":["../src/file-indexing.ts"],"names":[],"mappings":"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"}
|
package/dist/grep.d.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import Database from "better-sqlite3";
|
|
2
|
+
export declare function hasUppercaseAscii(s: string): boolean;
|
|
3
|
+
export type GrepMatch = {
|
|
4
|
+
file_path: string;
|
|
5
|
+
kind: string;
|
|
6
|
+
line: number;
|
|
7
|
+
col: number;
|
|
8
|
+
preview: string;
|
|
9
|
+
match: string;
|
|
10
|
+
};
|
|
11
|
+
export type GrepBackend = "ripgrep" | "indexed_fallback";
|
|
12
|
+
export declare function runRipgrepSearch(opts: {
|
|
13
|
+
query: string;
|
|
14
|
+
mode: "regex" | "literal";
|
|
15
|
+
smartCase: boolean;
|
|
16
|
+
caseSensitive: boolean;
|
|
17
|
+
includePaths: string[] | null;
|
|
18
|
+
excludePaths: string[] | null;
|
|
19
|
+
maxResults: number;
|
|
20
|
+
projectRoot: string;
|
|
21
|
+
}): {
|
|
22
|
+
ok: true;
|
|
23
|
+
backend: "ripgrep";
|
|
24
|
+
rg_command: string;
|
|
25
|
+
matches: GrepMatch[];
|
|
26
|
+
truncated: boolean;
|
|
27
|
+
total_matches: number;
|
|
28
|
+
} | {
|
|
29
|
+
ok: false;
|
|
30
|
+
unavailable: boolean;
|
|
31
|
+
error: string;
|
|
32
|
+
attempts: string[];
|
|
33
|
+
rg_command?: string;
|
|
34
|
+
exit_status?: number | null;
|
|
35
|
+
};
|
|
36
|
+
export declare function runIndexedGrepSearch(opts: {
|
|
37
|
+
query: string;
|
|
38
|
+
mode: "regex" | "literal";
|
|
39
|
+
smartCase: boolean;
|
|
40
|
+
caseSensitive: boolean;
|
|
41
|
+
literalHint: string;
|
|
42
|
+
kinds: string[];
|
|
43
|
+
includePaths: string[] | null;
|
|
44
|
+
excludePaths: string[] | null;
|
|
45
|
+
maxResults: number;
|
|
46
|
+
maxCandidates?: number;
|
|
47
|
+
db: Database.Database;
|
|
48
|
+
ftsAvailable: boolean;
|
|
49
|
+
ftsTableName: string;
|
|
50
|
+
buildFtsMatchQuery: (raw: string) => string;
|
|
51
|
+
escapeLike: (pattern: string) => string;
|
|
52
|
+
}): {
|
|
53
|
+
backend: "indexed_fallback";
|
|
54
|
+
hint: string;
|
|
55
|
+
kinds: string[];
|
|
56
|
+
include_paths: string[];
|
|
57
|
+
exclude_paths: string[];
|
|
58
|
+
candidates: {
|
|
59
|
+
total: number;
|
|
60
|
+
scanned: number;
|
|
61
|
+
};
|
|
62
|
+
matches: GrepMatch[];
|
|
63
|
+
truncated: boolean;
|
|
64
|
+
};
|