@coreyuan/vector-mind 1.0.54 → 1.1.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/README.md +99 -72
- package/admin-panel/README.md +77 -0
- package/admin-panel/dist/client/assets/index-Bzyjdhh2.css +1 -0
- package/admin-panel/dist/client/assets/index-Ph73ewzt.js +9 -0
- package/admin-panel/dist/client/index.html +14 -0
- package/admin-panel/package.json +25 -0
- package/admin-panel/server/index.mjs +1424 -0
- package/admin-panel/server/security.mjs +117 -0
- package/admin-panel/server/security.test.mjs +113 -0
- package/admin-panel/server/storage.mjs +49 -0
- package/admin-panel/server/storage.test.mjs +36 -0
- package/dist/checkpoint-snapshot.d.ts +56 -0
- package/dist/checkpoint-snapshot.js +411 -0
- package/dist/checkpoint-snapshot.js.map +1 -0
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/context-governance.d.ts +56 -0
- package/dist/context-governance.js +176 -0
- package/dist/context-governance.js.map +1 -0
- package/dist/database-runtime.d.ts +3 -1
- package/dist/database-runtime.js +232 -127
- package/dist/database-runtime.js.map +1 -1
- package/dist/development-warnings.d.ts +2 -1
- package/dist/development-warnings.js +90 -20
- package/dist/development-warnings.js.map +1 -1
- package/dist/file-indexing.d.ts +2 -1
- package/dist/file-indexing.js +127 -47
- package/dist/file-indexing.js.map +1 -1
- package/dist/grep.js +4 -0
- package/dist/grep.js.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/large-file-split.d.ts +52 -8
- package/dist/large-file-split.js +290 -76
- package/dist/large-file-split.js.map +1 -1
- package/dist/memory-maintenance/compaction.js +3 -2
- package/dist/memory-maintenance/compaction.js.map +1 -1
- package/dist/memory-maintenance/metrics.d.ts +1 -1
- package/dist/memory-maintenance/metrics.js +11 -3
- package/dist/memory-maintenance/metrics.js.map +1 -1
- package/dist/memory-maintenance/purge.js +1 -1
- package/dist/memory-maintenance/purge.js.map +1 -1
- package/dist/memory-maintenance/runner.d.ts +1 -0
- package/dist/memory-maintenance/runner.js +15 -3
- package/dist/memory-maintenance/runner.js.map +1 -1
- package/dist/memory-maintenance/types.d.ts +1 -0
- package/dist/memory-mutations.d.ts +3 -3
- package/dist/memory-mutations.js +109 -43
- package/dist/memory-mutations.js.map +1 -1
- package/dist/memory-recall.js +16 -1
- package/dist/memory-recall.js.map +1 -1
- package/dist/operation-scope.js +42 -12
- package/dist/operation-scope.js.map +1 -1
- package/dist/path-containment.d.ts +5 -0
- package/dist/path-containment.js +64 -0
- package/dist/path-containment.js.map +1 -0
- package/dist/path-filters.d.ts +1 -1
- package/dist/path-filters.js +7 -6
- package/dist/path-filters.js.map +1 -1
- package/dist/pending-changes.d.ts +5 -0
- package/dist/pending-changes.js +26 -16
- package/dist/pending-changes.js.map +1 -1
- package/dist/project-files.d.ts +1 -0
- package/dist/project-files.js +19 -10
- package/dist/project-files.js.map +1 -1
- package/dist/root.d.ts +4 -1
- package/dist/root.js +34 -4
- package/dist/root.js.map +1 -1
- package/dist/rtk-integrity.d.ts +5 -0
- package/dist/rtk-integrity.js +35 -0
- package/dist/rtk-integrity.js.map +1 -0
- package/dist/rtk-shim.js +22 -9
- package/dist/rtk-shim.js.map +1 -1
- package/dist/rtk-tools.d.ts +8 -0
- package/dist/rtk-tools.js +59 -42
- package/dist/rtk-tools.js.map +1 -1
- package/dist/server-instructions.js +8 -88
- package/dist/server-instructions.js.map +1 -1
- package/dist/tool-catalog.d.ts +2 -0
- package/dist/tool-catalog.js +76 -23
- package/dist/tool-catalog.js.map +1 -1
- package/dist/tool-handlers/context-recovery.js +79 -54
- package/dist/tool-handlers/context-recovery.js.map +1 -1
- package/dist/tool-handlers/large-files.js +600 -44
- package/dist/tool-handlers/large-files.js.map +1 -1
- package/dist/tool-handlers/memory-diagnostics.js +240 -45
- package/dist/tool-handlers/memory-diagnostics.js.map +1 -1
- package/dist/tool-handlers/memory.js +167 -22
- package/dist/tool-handlers/memory.js.map +1 -1
- package/dist/tool-handlers/operations.js +28 -8
- package/dist/tool-handlers/operations.js.map +1 -1
- package/dist/tool-handlers/requirement-status.d.ts +5 -0
- package/dist/tool-handlers/requirement-status.js +267 -0
- package/dist/tool-handlers/requirement-status.js.map +1 -0
- package/dist/tool-handlers/requirements.js +786 -97
- package/dist/tool-handlers/requirements.js.map +1 -1
- package/dist/tool-handlers.d.ts +4 -0
- package/dist/tool-handlers.js +183 -10
- package/dist/tool-handlers.js.map +1 -1
- package/dist/tool-output.d.ts +32 -1
- package/dist/tool-output.js +31 -12
- package/dist/tool-output.js.map +1 -1
- package/dist/tool-schemas.d.ts +235 -0
- package/dist/tool-schemas.js +98 -26
- package/dist/tool-schemas.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/docs/capability-matrix.md +23 -17
- package/package.json +19 -6
- package/skills/vector-mind-autopilot/SKILL.md +82 -23
- package/skills/vector-mind-autopilot/references/claude-project-instructions.md +14 -11
- package/skills/vector-mind-autopilot/references/universal-system-prompt.md +24 -16
package/dist/large-file-split.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import * as readline from "node:readline";
|
|
4
|
+
import crypto from "node:crypto";
|
|
3
5
|
import { normalizeToDbPath } from "./root.js";
|
|
6
|
+
export const LARGE_FILE_SPLIT_PLANNER_VERSION = 2;
|
|
4
7
|
function oneLine(input, max = 120) {
|
|
5
8
|
const normalized = String(input ?? "").replace(/\s+/g, " ").trim();
|
|
6
9
|
if (normalized.length <= max)
|
|
7
10
|
return normalized;
|
|
8
|
-
return `${normalized.slice(0, Math.max(0, max - 1))}
|
|
11
|
+
return `${normalized.slice(0, Math.max(0, max - 1))}...`;
|
|
9
12
|
}
|
|
10
13
|
export function hasOrdinalModuleName(input) {
|
|
11
14
|
const normalized = input.replace(/\\/g, "/").trim();
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
return normalized.split("/").some((segment) => {
|
|
16
|
+
const base = path.basename(segment, path.extname(segment));
|
|
17
|
+
return /^\d+(?:$|[\s._-]+)/.test(base);
|
|
18
|
+
});
|
|
14
19
|
}
|
|
15
20
|
function declarationRegexForExtension(ext) {
|
|
16
21
|
switch (ext) {
|
|
@@ -28,53 +33,127 @@ function declarationRegexForExtension(ext) {
|
|
|
28
33
|
case ".cjs":
|
|
29
34
|
return /^\s*(?:export\s+)?(?:default\s+)?(?:async\s+)?(?:function|class|interface|type|enum|const|let|var)\s+([A-Za-z_$][\w$]*)?/;
|
|
30
35
|
default:
|
|
31
|
-
return /^\s*(?:
|
|
36
|
+
return /^\s*(?:(?:pub\s+)?(?:class|struct|enum|interface|type)\s+([A-Za-z_][\w]*)|(?:[A-Za-z_][\w:<>,\s*&?\[\]]+)\s+([A-Za-z_][\w]*)\s*\()/;
|
|
32
37
|
}
|
|
33
38
|
}
|
|
39
|
+
const GENERIC_ROLE_TOKENS = new Set([
|
|
40
|
+
"api", "app", "base", "client", "controller", "core", "data", "default", "factory", "handler",
|
|
41
|
+
"helper", "impl", "manager", "model", "module", "provider", "repository", "request", "response",
|
|
42
|
+
"service", "state", "store", "type", "types", "util", "utils", "view",
|
|
43
|
+
]);
|
|
44
|
+
function identifierTokens(input) {
|
|
45
|
+
return input
|
|
46
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1 $2")
|
|
47
|
+
.replace(/[^A-Za-z0-9]+/g, " ")
|
|
48
|
+
.trim()
|
|
49
|
+
.toLowerCase()
|
|
50
|
+
.split(/\s+/)
|
|
51
|
+
.filter((token) => token.length >= 2);
|
|
52
|
+
}
|
|
34
53
|
function moduleNameFromDeclaration(name, signature) {
|
|
35
54
|
const text = `${name} ${signature}`.toLowerCase();
|
|
36
|
-
const
|
|
37
|
-
[/(config|setting|
|
|
38
|
-
[/(
|
|
39
|
-
[/(api|client|request|response|
|
|
40
|
-
[/(
|
|
41
|
-
[/(
|
|
42
|
-
[/(
|
|
43
|
-
[/(
|
|
44
|
-
[/(repair|cleanup|probe|health)/, "maintenance"],
|
|
45
|
-
[/(path|sanitize|normalize|host|ip|util|helper)/, "util"],
|
|
55
|
+
const infrastructureRules = [
|
|
56
|
+
[/(config|setting|environment|\benv\b)/, "config"],
|
|
57
|
+
[/(database|storage|persist|cache|transaction)/, "storage"],
|
|
58
|
+
[/(http|api|client|request|response|transport)/, "transport"],
|
|
59
|
+
[/(log|logger|redact|telemetry|metric)/, "observability"],
|
|
60
|
+
[/(window|dialog|form|component|render|button|view)/, "ui"],
|
|
61
|
+
[/(repair|cleanup|migration|probe|health)/, "maintenance"],
|
|
62
|
+
[/(path|sanitize|normalize|parse|format|convert)/, "utilities"],
|
|
46
63
|
[/(test|mock|fixture)/, "tests"],
|
|
47
64
|
];
|
|
48
|
-
for (const [pattern, moduleName] of
|
|
65
|
+
for (const [pattern, moduleName] of infrastructureRules) {
|
|
49
66
|
if (pattern.test(text))
|
|
50
67
|
return moduleName;
|
|
51
68
|
}
|
|
52
|
-
|
|
69
|
+
const domainToken = identifierTokens(name).find((token) => token.length >= 3 && !GENERIC_ROLE_TOKENS.has(token) && !/^\d+$/.test(token));
|
|
70
|
+
return domainToken?.replace(/[^a-z0-9_-]/g, "") || "core";
|
|
71
|
+
}
|
|
72
|
+
function braceDelta(line) {
|
|
73
|
+
const withoutStrings = line
|
|
74
|
+
.replace(/(['"`])(?:\\.|(?!\1).)*\1/g, "")
|
|
75
|
+
.replace(/\/\/.*$/, "");
|
|
76
|
+
let delta = 0;
|
|
77
|
+
for (const char of withoutStrings) {
|
|
78
|
+
if (char === "{")
|
|
79
|
+
delta += 1;
|
|
80
|
+
if (char === "}")
|
|
81
|
+
delta -= 1;
|
|
82
|
+
}
|
|
83
|
+
return delta;
|
|
53
84
|
}
|
|
54
|
-
function
|
|
55
|
-
const
|
|
56
|
-
const lines = content.split(/\r?\n/);
|
|
85
|
+
async function scanTopLevelDeclarations(absPath, ext, declarationLimit) {
|
|
86
|
+
const declarations = [];
|
|
57
87
|
const regex = declarationRegexForExtension(ext);
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
88
|
+
const hash = crypto.createHash("sha256");
|
|
89
|
+
const stream = fs.createReadStream(absPath);
|
|
90
|
+
stream.on("data", (chunk) => hash.update(chunk));
|
|
91
|
+
const reader = readline.createInterface({ input: stream, crlfDelay: Infinity });
|
|
92
|
+
const braceLanguage = ext !== ".py";
|
|
93
|
+
let lineCount = 0;
|
|
94
|
+
let detected = 0;
|
|
95
|
+
let depth = 0;
|
|
96
|
+
try {
|
|
97
|
+
for await (const raw of reader) {
|
|
98
|
+
lineCount += 1;
|
|
99
|
+
const trimmed = raw.trim();
|
|
100
|
+
const topLevel = !braceLanguage ? raw.length === raw.trimStart().length : depth === 0;
|
|
101
|
+
if (topLevel && trimmed && !trimmed.startsWith("//") && !trimmed.startsWith("#")) {
|
|
102
|
+
const match = raw.match(regex);
|
|
103
|
+
if (match) {
|
|
104
|
+
detected += 1;
|
|
105
|
+
if (declarations.length < declarationLimit) {
|
|
106
|
+
const fallback = trimmed.split(/\s+/).slice(0, 3).join("_").replace(/[^\w$]+/g, "_");
|
|
107
|
+
const matchedName = match.slice(1).find((value) => typeof value === "string" && value.length > 0);
|
|
108
|
+
const name = (matchedName || fallback || `declaration_${lineCount}`).replace(/^[^A-Za-z_]+/, "") || `declaration_${lineCount}`;
|
|
109
|
+
const kind = trimmed.split(/\s+/).find((part) => ["fn", "function", "class", "struct", "enum", "trait", "impl", "mod", "type", "const", "static", "interface"].includes(part.replace(/[({].*$/, ""))) ?? "declaration";
|
|
110
|
+
const previous = declarations.at(-1);
|
|
111
|
+
if (previous)
|
|
112
|
+
previous.end_line = Math.max(previous.line, lineCount - 1);
|
|
113
|
+
declarations.push({
|
|
114
|
+
line: lineCount,
|
|
115
|
+
end_line: lineCount,
|
|
116
|
+
kind,
|
|
117
|
+
name,
|
|
118
|
+
signature: oneLine(trimmed, 220),
|
|
119
|
+
suggested_module: moduleNameFromDeclaration(name, trimmed),
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (braceLanguage)
|
|
125
|
+
depth = Math.max(0, depth + braceDelta(raw));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
reader.close();
|
|
130
|
+
stream.destroy();
|
|
131
|
+
}
|
|
132
|
+
const finalDeclaration = declarations.at(-1);
|
|
133
|
+
if (finalDeclaration)
|
|
134
|
+
finalDeclaration.end_line = Math.max(finalDeclaration.line, lineCount);
|
|
135
|
+
return { lineCount, detected, declarations, contentHash: hash.digest("hex") };
|
|
136
|
+
}
|
|
137
|
+
export async function countFileLinesStreaming(absPath) {
|
|
138
|
+
const stream = fs.createReadStream(absPath, { encoding: "utf8" });
|
|
139
|
+
const reader = readline.createInterface({ input: stream, crlfDelay: Infinity });
|
|
140
|
+
let lineCount = 0;
|
|
141
|
+
try {
|
|
142
|
+
for await (const _line of reader)
|
|
143
|
+
lineCount += 1;
|
|
76
144
|
}
|
|
77
|
-
|
|
145
|
+
finally {
|
|
146
|
+
reader.close();
|
|
147
|
+
stream.destroy();
|
|
148
|
+
}
|
|
149
|
+
return lineCount;
|
|
150
|
+
}
|
|
151
|
+
export async function hashFileContentStreaming(absPath) {
|
|
152
|
+
const hash = crypto.createHash("sha256");
|
|
153
|
+
const stream = fs.createReadStream(absPath);
|
|
154
|
+
for await (const chunk of stream)
|
|
155
|
+
hash.update(chunk);
|
|
156
|
+
return hash.digest("hex");
|
|
78
157
|
}
|
|
79
158
|
function targetPathForModule(originalFilePath, targetDir, moduleName) {
|
|
80
159
|
const ext = path.extname(originalFilePath) || ".txt";
|
|
@@ -83,69 +162,204 @@ function targetPathForModule(originalFilePath, targetDir, moduleName) {
|
|
|
83
162
|
return `${moduleName}${ext}`;
|
|
84
163
|
return `${normalizedTargetDir}/${moduleName}${ext}`;
|
|
85
164
|
}
|
|
86
|
-
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
|
|
165
|
+
function boundedModuleGroups(declarations, maxModules) {
|
|
166
|
+
const initial = new Map();
|
|
167
|
+
for (const declaration of declarations) {
|
|
168
|
+
const list = initial.get(declaration.suggested_module) ?? [];
|
|
169
|
+
list.push(declaration);
|
|
170
|
+
initial.set(declaration.suggested_module, list);
|
|
171
|
+
}
|
|
172
|
+
if (initial.size <= maxModules)
|
|
173
|
+
return initial;
|
|
174
|
+
const core = [...(initial.get("core") ?? [])];
|
|
175
|
+
const ranked = [...initial.entries()]
|
|
176
|
+
.filter(([name]) => name !== "core")
|
|
177
|
+
.sort((a, b) => b[1].length - a[1].length || a[0].localeCompare(b[0]));
|
|
178
|
+
const kept = new Map(ranked.slice(0, Math.max(1, maxModules - 1)));
|
|
179
|
+
for (const [, overflow] of ranked.slice(Math.max(1, maxModules - 1)))
|
|
180
|
+
core.push(...overflow);
|
|
181
|
+
if (core.length)
|
|
182
|
+
kept.set("core", core.sort((a, b) => a.line - b.line));
|
|
183
|
+
return kept;
|
|
184
|
+
}
|
|
185
|
+
function overriddenModuleGroups(declarations, overrides) {
|
|
186
|
+
const groups = new Map();
|
|
187
|
+
const targetPaths = new Map();
|
|
188
|
+
const assigned = new Map();
|
|
189
|
+
const warnings = [];
|
|
190
|
+
for (const override of overrides) {
|
|
191
|
+
const names = new Set(override.declaration_names ?? []);
|
|
192
|
+
const ranges = override.line_ranges ?? [];
|
|
193
|
+
const matches = declarations.filter((declaration) => names.has(declaration.name) || ranges.some((range) => declaration.line >= range.start && declaration.line <= range.end));
|
|
194
|
+
if (!names.size && !ranges.length) {
|
|
195
|
+
warnings.push(`Module override ${override.module} has no declaration_names or line_ranges selector.`);
|
|
196
|
+
}
|
|
197
|
+
if (!matches.length)
|
|
198
|
+
warnings.push(`Module override ${override.module} did not match any detected declaration.`);
|
|
199
|
+
const accepted = [];
|
|
200
|
+
for (const declaration of matches) {
|
|
201
|
+
const previousModule = assigned.get(declaration);
|
|
202
|
+
if (previousModule) {
|
|
203
|
+
warnings.push(`Declaration ${declaration.name} @L${declaration.line} is assigned to both ${previousModule} and ${override.module}.`);
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
assigned.set(declaration, override.module);
|
|
207
|
+
accepted.push(declaration);
|
|
208
|
+
}
|
|
209
|
+
groups.set(override.module, accepted.sort((a, b) => a.line - b.line));
|
|
210
|
+
targetPaths.set(override.module, override.target_path);
|
|
211
|
+
}
|
|
212
|
+
const unassigned = declarations.filter((declaration) => !assigned.has(declaration));
|
|
213
|
+
if (unassigned.length) {
|
|
214
|
+
warnings.push(`${unassigned.length} detected declarations are not assigned by module_overrides: ${unassigned
|
|
215
|
+
.slice(0, 12)
|
|
216
|
+
.map((declaration) => `${declaration.name}@L${declaration.line}`)
|
|
217
|
+
.join(", ")}.`);
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
groups,
|
|
221
|
+
targetPaths,
|
|
222
|
+
assignedCount: assigned.size,
|
|
223
|
+
complete: declarations.length > 0 && assigned.size === declarations.length && warnings.length === 0,
|
|
224
|
+
warnings,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
function moduleDependencies(groups) {
|
|
228
|
+
const declarationModules = new Map();
|
|
229
|
+
for (const [moduleName, declarations] of groups) {
|
|
230
|
+
for (const declaration of declarations)
|
|
231
|
+
declarationModules.set(declaration.name.toLowerCase(), moduleName);
|
|
232
|
+
}
|
|
233
|
+
const result = new Map();
|
|
234
|
+
for (const [moduleName, declarations] of groups) {
|
|
235
|
+
const dependencies = new Set();
|
|
236
|
+
for (const declaration of declarations) {
|
|
237
|
+
const referencedNames = declaration.signature.toLowerCase().match(/[a-z_$][\w$]*/g) ?? [];
|
|
238
|
+
for (const name of referencedNames) {
|
|
239
|
+
const dependencyModule = declarationModules.get(name);
|
|
240
|
+
if (dependencyModule && dependencyModule !== moduleName)
|
|
241
|
+
dependencies.add(dependencyModule);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
result.set(moduleName, [...dependencies].sort());
|
|
245
|
+
}
|
|
246
|
+
return result;
|
|
247
|
+
}
|
|
248
|
+
export async function buildLargeFileSplitPlan(args) {
|
|
249
|
+
const stat = fs.statSync(args.absPath);
|
|
90
250
|
const ext = path.extname(args.absPath).toLowerCase();
|
|
251
|
+
const declarationLimit = Math.max(500, args.declarationLimit ?? 10_000);
|
|
252
|
+
const maxDeclarationsPerModule = Math.min(200, Math.max(20, args.maxDeclarationsPerModule ?? 200));
|
|
253
|
+
const maxEstimatedLinesPerModule = Math.min(1200, Math.max(100, args.maxEstimatedLinesPerModule ?? 1200));
|
|
254
|
+
const scan = await scanTopLevelDeclarations(args.absPath, ext, declarationLimit);
|
|
91
255
|
const baseName = path.basename(args.filePath, path.extname(args.filePath));
|
|
92
256
|
const parentDir = path.dirname(args.filePath).replace(/\\/g, "/");
|
|
93
257
|
const defaultTargetDir = parentDir === "." ? baseName : `${parentDir}/${baseName}`;
|
|
94
258
|
const targetDir = normalizeToDbPath(args.targetDir ?? defaultTargetDir);
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (!grouped.size)
|
|
104
|
-
grouped.set("core", []);
|
|
105
|
-
const modules = Array.from(grouped.entries())
|
|
106
|
-
.slice(0, args.maxModules)
|
|
107
|
-
.map(([moduleName, decls]) => ({
|
|
259
|
+
const overrideResult = args.moduleOverrides?.length
|
|
260
|
+
? overriddenModuleGroups(scan.declarations, args.moduleOverrides)
|
|
261
|
+
: null;
|
|
262
|
+
const groups = overrideResult?.groups ?? boundedModuleGroups(scan.declarations, args.maxModules);
|
|
263
|
+
const dependencies = moduleDependencies(groups);
|
|
264
|
+
const modules = [...groups.entries()]
|
|
265
|
+
.sort((a, b) => a[1][0]?.line - b[1][0]?.line)
|
|
266
|
+
.map(([moduleName, declarations]) => ({
|
|
108
267
|
module: moduleName,
|
|
109
|
-
target_path: targetPathForModule(args.filePath, targetDir, moduleName),
|
|
110
|
-
|
|
111
|
-
|
|
268
|
+
target_path: overrideResult?.targetPaths.get(moduleName) ?? targetPathForModule(args.filePath, targetDir, moduleName),
|
|
269
|
+
declaration_count: declarations.length,
|
|
270
|
+
estimated_lines: declarations.reduce((total, declaration) => total + Math.max(1, declaration.end_line - declaration.line + 1), 0),
|
|
271
|
+
declarations: declarations.slice(0, 48).map((declaration) => `${declaration.kind} ${declaration.name} @L${declaration.line}`),
|
|
272
|
+
omitted_declarations: Math.max(0, declarations.length - 48),
|
|
273
|
+
dependencies: dependencies.get(moduleName) ?? [],
|
|
274
|
+
reason: moduleName === "core"
|
|
275
|
+
? "Fallback group for declarations without a stable domain boundary; refine this group before moving it as one module."
|
|
276
|
+
: `Group declarations around the ${moduleName} domain/infrastructure boundary while preserving behavior.`,
|
|
277
|
+
}));
|
|
278
|
+
const omitted = Math.max(0, scan.detected - scan.declarations.length);
|
|
279
|
+
const complete = omitted === 0 && scan.declarations.length > 0 && (overrideResult?.complete ?? true);
|
|
280
|
+
const coreCount = groups.get("core")?.length ?? 0;
|
|
281
|
+
const coreNeedsRefinement = !overrideResult && coreCount > Math.max(12, Math.floor(scan.declarations.length * 0.35));
|
|
282
|
+
const oversizedModules = modules
|
|
283
|
+
.filter((module) => module.declaration_count > maxDeclarationsPerModule ||
|
|
284
|
+
module.estimated_lines >= maxEstimatedLinesPerModule)
|
|
285
|
+
.map((module) => ({
|
|
286
|
+
module: module.module,
|
|
287
|
+
declaration_count: module.declaration_count,
|
|
288
|
+
estimated_lines: module.estimated_lines,
|
|
112
289
|
}));
|
|
290
|
+
const warnings = [];
|
|
291
|
+
warnings.push(...(overrideResult?.warnings ?? []));
|
|
292
|
+
if (groups.size > args.maxModules) {
|
|
293
|
+
warnings.push(`module_overrides defines ${groups.size} modules, exceeding max_modules=${args.maxModules}.`);
|
|
294
|
+
}
|
|
295
|
+
if (omitted > 0)
|
|
296
|
+
warnings.push(`${omitted} declarations exceeded the safety limit; refine the plan before editing.`);
|
|
297
|
+
if (!scan.detected)
|
|
298
|
+
warnings.push("No top-level declarations were detected; a manual boundary plan is required before editing.");
|
|
299
|
+
if (coreNeedsRefinement) {
|
|
300
|
+
warnings.push(`The core fallback contains ${coreCount} declarations and must be refined into semantic modules before execution.`);
|
|
301
|
+
}
|
|
302
|
+
if (oversizedModules.length) {
|
|
303
|
+
warnings.push(`Target modules exceed the ${maxDeclarationsPerModule}-declaration or ${maxEstimatedLinesPerModule}-line estimate: ${oversizedModules
|
|
304
|
+
.slice(0, 8)
|
|
305
|
+
.map((module) => `${module.module}=${module.declaration_count} declarations/${module.estimated_lines} lines`)
|
|
306
|
+
.join(", ")}. Refine responsibilities instead of moving the god file intact.`);
|
|
307
|
+
}
|
|
113
308
|
return {
|
|
114
|
-
ok:
|
|
309
|
+
ok: complete && !coreNeedsRefinement && oversizedModules.length === 0 && groups.size <= args.maxModules,
|
|
115
310
|
file_path: args.filePath,
|
|
116
|
-
line_count:
|
|
117
|
-
bytes:
|
|
311
|
+
line_count: scan.lineCount,
|
|
312
|
+
bytes: stat.size,
|
|
313
|
+
source_content_hash: scan.contentHash,
|
|
314
|
+
planner_fingerprint: args.plannerFingerprint,
|
|
118
315
|
huge_threshold_lines: args.hugeThresholdLines,
|
|
119
316
|
required_action: "mechanical_modularization",
|
|
120
317
|
intent: args.intent,
|
|
121
318
|
target_dir: targetDir,
|
|
319
|
+
analysis_mode: "heuristic_stream",
|
|
320
|
+
confidence: "low",
|
|
321
|
+
coverage: {
|
|
322
|
+
detected_declarations: scan.detected,
|
|
323
|
+
assigned_declarations: overrideResult?.assignedCount ?? scan.declarations.length,
|
|
324
|
+
omitted_declarations: omitted,
|
|
325
|
+
declaration_limit: declarationLimit,
|
|
326
|
+
complete,
|
|
327
|
+
},
|
|
328
|
+
module_constraints: {
|
|
329
|
+
max_declarations_per_module: maxDeclarationsPerModule,
|
|
330
|
+
max_estimated_lines_per_module: maxEstimatedLinesPerModule,
|
|
331
|
+
oversized_modules: oversizedModules,
|
|
332
|
+
satisfied: oversizedModules.length === 0,
|
|
333
|
+
},
|
|
122
334
|
forbidden_patterns: ["*.generated.*", "*.parts", "*.rs.parts", "*_part*", "*Part*", "[0-9]_*", "[0-9]-*", "[0-9].*"],
|
|
123
335
|
mechanical_rules: [
|
|
124
336
|
"Move only complete declarations/impl blocks/functions/classes/types; do not split a declaration body.",
|
|
125
|
-
"Use real semantic module names and clear directory boundaries; do not create generated/parts/partN files or ordinal
|
|
337
|
+
"Use real semantic module names and clear directory boundaries; do not create generated/parts/partN files or ordinal names.",
|
|
126
338
|
"Preserve behavior, names, API semantics, data formats, side effects, and test expectations.",
|
|
127
|
-
"Only add necessary module declarations, imports,
|
|
339
|
+
"Only add necessary module declarations, imports, visibility adjustments, and re-exports.",
|
|
128
340
|
"Run formatter, build/check, and relevant tests after each small phase.",
|
|
129
341
|
],
|
|
130
342
|
modules,
|
|
131
343
|
steps: [
|
|
132
|
-
"
|
|
133
|
-
"
|
|
134
|
-
"Keep the original file as
|
|
344
|
+
"Keep this mechanical modularization attached to the current requirement and selected split plan.",
|
|
345
|
+
"Move one cohesive declaration group at a time into the planned semantic module directory.",
|
|
346
|
+
"Keep the original file as thin entry/orchestration glue where possible.",
|
|
135
347
|
"After each group, run formatter and the smallest available compile/test command.",
|
|
136
|
-
"Record
|
|
137
|
-
"
|
|
348
|
+
"Record in_progress or partial progress against the same plan_id.",
|
|
349
|
+
"Mark the plan resolved only after module paths, remaining line count, and verification evidence pass validation.",
|
|
138
350
|
],
|
|
139
351
|
validation: [
|
|
140
|
-
"
|
|
141
|
-
"
|
|
142
|
-
"
|
|
143
|
-
"
|
|
144
|
-
"
|
|
352
|
+
"Every detected declaration is assigned; coverage.complete must be true.",
|
|
353
|
+
"No generated/parts/numbered module files or ordinal-prefixed directories were created.",
|
|
354
|
+
"The original file is below the huge threshold or contains only thin orchestration glue.",
|
|
355
|
+
"All recorded module paths exist under project_root.",
|
|
356
|
+
"Formatter, build/check, and relevant tests pass.",
|
|
357
|
+
],
|
|
358
|
+
warnings,
|
|
359
|
+
notes: [
|
|
360
|
+
`Detected ${scan.detected} top-level declarations with bounded-memory streaming analysis.`,
|
|
361
|
+
"Dependency hints are signature-based; verify runtime/private-state dependencies against repository facts before moving code.",
|
|
145
362
|
],
|
|
146
|
-
notes: declarations.length
|
|
147
|
-
? [`Detected ${declarations.length} top-level declarations for mechanical grouping.`]
|
|
148
|
-
: ["No top-level declarations were detected by lightweight scanning; split by obvious cohesive sections and verify after each move."],
|
|
149
363
|
};
|
|
150
364
|
}
|
|
151
365
|
//# sourceMappingURL=large-file-split.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"large-file-split.js","sourceRoot":"","sources":["../src/large-file-split.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"large-file-split.js","sourceRoot":"","sources":["../src/large-file-split.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import { oneLine, safeJson } from "../tool-output.js";
|
|
|
3
3
|
import { getDb, getInsertMemoryItemStatement, isHiddenFromDefaultRecall, metadataStatus, parseMetadataJson, sha256Hex, } from "./context.js";
|
|
4
4
|
function selectCompactionCandidates(opts) {
|
|
5
5
|
const kinds = opts.compactNotes
|
|
6
|
-
? ["requirement", "change_intent", "note"]
|
|
7
|
-
: ["requirement", "change_intent"];
|
|
6
|
+
? ["requirement", "change_intent", "note", "large_file_split_plan"]
|
|
7
|
+
: ["requirement", "change_intent", "large_file_split_plan"];
|
|
8
8
|
const placeholders = kinds.map(() => "?").join(", ");
|
|
9
9
|
const rows = getDb()
|
|
10
10
|
.prepare(`SELECT
|
|
@@ -21,6 +21,7 @@ function selectCompactionCandidates(opts) {
|
|
|
21
21
|
return rows
|
|
22
22
|
.filter((row) => !isHiddenFromDefaultRecall(row))
|
|
23
23
|
.filter((row) => metadataStatus(row) !== "current" && metadataStatus(row) !== "active")
|
|
24
|
+
.filter((row) => row.kind !== "large_file_split_plan" || ["resolved", "superseded", "deferred", "abandoned"].includes(metadataStatus(row) ?? ""))
|
|
24
25
|
.filter((row) => row.req_status !== "active")
|
|
25
26
|
.filter((row) => row.kind !== "note" || opts.compactNotes)
|
|
26
27
|
.slice(0, opts.maxMemoryItems);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/memory-maintenance/compaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,KAAK,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,SAAS,GACV,MAAM,cAAc,CAAC;AAGtB,SAAS,0BAA0B,CAAC,IAInC;IACC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY;QAC7B,CAAC,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/memory-maintenance/compaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { getDb } from "./context.js";
|
|
2
|
-
export function
|
|
2
|
+
export function pruneMetrics(opts) {
|
|
3
3
|
const cutoff = new Date(Date.now() - opts.retentionDays * 86_400_000).toISOString();
|
|
4
4
|
let deleted = 0;
|
|
5
|
+
let toolMetricsDeleted = 0;
|
|
5
6
|
try {
|
|
6
7
|
if (opts.dryRun) {
|
|
7
8
|
deleted = Number(getDb()
|
|
@@ -13,10 +14,17 @@ export function pruneTokenSavings(opts) {
|
|
|
13
14
|
.prepare(`DELETE FROM token_savings WHERE created_at < datetime('now', ?)`)
|
|
14
15
|
.run(`-${opts.retentionDays} days`).changes;
|
|
15
16
|
}
|
|
17
|
+
if (opts.dryRun) {
|
|
18
|
+
toolMetricsDeleted = Number(getDb().prepare(`SELECT COUNT(1) AS c FROM mcp_tool_metrics WHERE created_at < datetime('now', ?)`).get(`-${opts.retentionDays} days`)?.c ?? 0);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
toolMetricsDeleted = getDb()
|
|
22
|
+
.prepare(`DELETE FROM mcp_tool_metrics WHERE created_at < datetime('now', ?)`).run(`-${opts.retentionDays} days`).changes;
|
|
23
|
+
}
|
|
16
24
|
}
|
|
17
25
|
catch (err) {
|
|
18
|
-
console.error("[vectormind] prune
|
|
26
|
+
console.error("[vectormind] prune metrics failed:", err);
|
|
19
27
|
}
|
|
20
|
-
return { cutoff, token_savings_deleted: deleted };
|
|
28
|
+
return { cutoff, token_savings_deleted: deleted, mcp_tool_metrics_deleted: toolMetricsDeleted };
|
|
21
29
|
}
|
|
22
30
|
//# sourceMappingURL=metrics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/memory-maintenance/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/memory-maintenance/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,MAAM,UAAU,YAAY,CAAC,IAAgD;IAC3E,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IACpF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,GAAG,MAAM,CAEZ,KAAK,EAAE;iBACJ,OAAO,CAAC,+EAA+E,CAAC;iBACxF,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,OAAO,CACrC,EAAE,CAAC,IAAI,CAAC,CACV,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,KAAK,EAAE;iBACd,OAAO,CAAC,iEAAiE,CAAC;iBAC1E,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,OAAO,CAAC,CAAC,OAAO,CAAC;QAChD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,kBAAkB,GAAG,MAAM,CACxB,KAAK,EAAE,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAC,GAAG,CACtG,IAAI,IAAI,CAAC,aAAa,OAAO,CACA,EAAE,CAAC,IAAI,CAAC,CACxC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,kBAAkB,GAAG,KAAK,EAAE;iBACzB,OAAO,CAAC,oEAAoE,CAAC,CAAC,GAAG,CAChF,IAAI,IAAI,CAAC,aAAa,OAAO,CAC9B,CAAC,OAAO,CAAC;QACd,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,CAAC;AAClG,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { logActivity } from "../activity-log.js";
|
|
2
2
|
import { getDb } from "./context.js";
|
|
3
|
-
const SAFE_HARD_PURGE_KINDS = ["requirement", "change_intent", "note"];
|
|
3
|
+
const SAFE_HARD_PURGE_KINDS = ["requirement", "change_intent", "note", "large_file_split_plan"];
|
|
4
4
|
function validMetadataExpr(alias) {
|
|
5
5
|
return `CASE WHEN json_valid(COALESCE(${alias}.metadata_json, '{}')) THEN COALESCE(${alias}.metadata_json, '{}') ELSE '{}' END`;
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purge.js","sourceRoot":"","sources":["../../src/memory-maintenance/purge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,MAAM,qBAAqB,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"purge.js","sourceRoot":"","sources":["../../src/memory-maintenance/purge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MaintainMemoryArgs } from "../tool-schemas.js";
|
|
2
2
|
import type { MaintenanceResult } from "./types.js";
|
|
3
|
+
export declare function withAutoMaintenanceSuppressed<T>(task: () => Promise<T>): Promise<T>;
|
|
3
4
|
export declare function runMemoryMaintenance(args: MaintainMemoryArgs, trigger?: "manual" | "auto"): MaintenanceResult;
|
|
4
5
|
export declare function runAutoMaintenanceIfDue(): void;
|