@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,29 @@
|
|
|
1
|
+
export type LargeFileSplitPlan = {
|
|
2
|
+
ok: true;
|
|
3
|
+
file_path: string;
|
|
4
|
+
line_count: number;
|
|
5
|
+
bytes: number;
|
|
6
|
+
huge_threshold_lines: number;
|
|
7
|
+
required_action: "mechanical_modularization";
|
|
8
|
+
intent: string;
|
|
9
|
+
target_dir: string;
|
|
10
|
+
forbidden_patterns: string[];
|
|
11
|
+
mechanical_rules: string[];
|
|
12
|
+
modules: Array<{
|
|
13
|
+
module: string;
|
|
14
|
+
target_path: string;
|
|
15
|
+
declarations: string[];
|
|
16
|
+
reason: string;
|
|
17
|
+
}>;
|
|
18
|
+
steps: string[];
|
|
19
|
+
validation: string[];
|
|
20
|
+
notes: string[];
|
|
21
|
+
};
|
|
22
|
+
export declare function buildLargeFileSplitPlan(args: {
|
|
23
|
+
filePath: string;
|
|
24
|
+
absPath: string;
|
|
25
|
+
intent: string;
|
|
26
|
+
targetDir?: string;
|
|
27
|
+
maxModules: number;
|
|
28
|
+
hugeThresholdLines: number;
|
|
29
|
+
}): LargeFileSplitPlan;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { normalizeToDbPath } from "./root.js";
|
|
4
|
+
function oneLine(input, max = 120) {
|
|
5
|
+
const normalized = String(input ?? "").replace(/\s+/g, " ").trim();
|
|
6
|
+
if (normalized.length <= max)
|
|
7
|
+
return normalized;
|
|
8
|
+
return `${normalized.slice(0, Math.max(0, max - 1))}…`;
|
|
9
|
+
}
|
|
10
|
+
function declarationRegexForExtension(ext) {
|
|
11
|
+
switch (ext) {
|
|
12
|
+
case ".rs":
|
|
13
|
+
return /^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?(?:fn|struct|enum|trait|impl|mod|type|const|static)\s+([A-Za-z_][\w]*)?/;
|
|
14
|
+
case ".go":
|
|
15
|
+
return /^\s*(?:func|type|const|var)\s+(?:\([^)]*\)\s*)?([A-Za-z_][\w]*)?/;
|
|
16
|
+
case ".py":
|
|
17
|
+
return /^(?:class|async\s+def|def)\s+([A-Za-z_][\w]*)/;
|
|
18
|
+
case ".ts":
|
|
19
|
+
case ".tsx":
|
|
20
|
+
case ".js":
|
|
21
|
+
case ".jsx":
|
|
22
|
+
case ".mjs":
|
|
23
|
+
case ".cjs":
|
|
24
|
+
return /^\s*(?:export\s+)?(?:default\s+)?(?:async\s+)?(?:function|class|interface|type|enum|const|let|var)\s+([A-Za-z_$][\w$]*)?/;
|
|
25
|
+
default:
|
|
26
|
+
return /^\s*(?:pub\s+)?(?:async\s+)?(?:fn|function|class|struct|enum|interface|type|const|static)\s+([A-Za-z_][\w]*)?/;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function moduleNameFromDeclaration(name, signature) {
|
|
30
|
+
const text = `${name} ${signature}`.toLowerCase();
|
|
31
|
+
const rules = [
|
|
32
|
+
[/(config|setting|env)/, "config"],
|
|
33
|
+
[/(state|store|persist)/, "state"],
|
|
34
|
+
[/(api|client|request|response|heartbeat|activate|sync)/, "api"],
|
|
35
|
+
[/(service|daemon|install|start|stop)/, "service"],
|
|
36
|
+
[/(log|logger|redact)/, "logging"],
|
|
37
|
+
[/(gui|window|dialog|form|view|button|list)/, "ui"],
|
|
38
|
+
[/(share|disk|smb|unc|folder|directory)/, "share"],
|
|
39
|
+
[/(repair|cleanup|probe|health)/, "maintenance"],
|
|
40
|
+
[/(path|sanitize|normalize|host|ip|util|helper)/, "util"],
|
|
41
|
+
[/(test|mock|fixture)/, "tests"],
|
|
42
|
+
];
|
|
43
|
+
for (const [pattern, moduleName] of rules) {
|
|
44
|
+
if (pattern.test(text))
|
|
45
|
+
return moduleName;
|
|
46
|
+
}
|
|
47
|
+
return "core";
|
|
48
|
+
}
|
|
49
|
+
function topLevelDeclarationsForPlan(content, ext, maxDecls = 160) {
|
|
50
|
+
const decls = [];
|
|
51
|
+
const lines = content.split(/\r?\n/);
|
|
52
|
+
const regex = declarationRegexForExtension(ext);
|
|
53
|
+
for (let i = 0; i < lines.length && decls.length < maxDecls; i++) {
|
|
54
|
+
const raw = lines[i];
|
|
55
|
+
const trimmed = raw.trim();
|
|
56
|
+
if (!trimmed || trimmed.startsWith("//") || trimmed.startsWith("#"))
|
|
57
|
+
continue;
|
|
58
|
+
const m = raw.match(regex);
|
|
59
|
+
if (!m)
|
|
60
|
+
continue;
|
|
61
|
+
const fallback = trimmed.split(/\s+/).slice(0, 3).join("_").replace(/[^\w$]+/g, "_");
|
|
62
|
+
const name = (m[1] || fallback || `declaration_${i + 1}`).replace(/^[^A-Za-z_]+/, "") || `declaration_${i + 1}`;
|
|
63
|
+
const kind = trimmed.split(/\s+/).find((part) => ["fn", "function", "class", "struct", "enum", "trait", "impl", "mod", "type", "const", "static", "interface"].includes(part.replace(/[({].*$/, ""))) ?? "declaration";
|
|
64
|
+
decls.push({
|
|
65
|
+
line: i + 1,
|
|
66
|
+
kind,
|
|
67
|
+
name,
|
|
68
|
+
signature: oneLine(trimmed, 180),
|
|
69
|
+
suggested_module: moduleNameFromDeclaration(name, trimmed),
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return decls;
|
|
73
|
+
}
|
|
74
|
+
function targetPathForModule(originalFilePath, targetDir, moduleName) {
|
|
75
|
+
const ext = path.extname(originalFilePath) || ".txt";
|
|
76
|
+
const normalizedTargetDir = targetDir.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
77
|
+
if (!normalizedTargetDir || normalizedTargetDir === ".")
|
|
78
|
+
return `${moduleName}${ext}`;
|
|
79
|
+
return `${normalizedTargetDir}/${moduleName}${ext}`;
|
|
80
|
+
}
|
|
81
|
+
export function buildLargeFileSplitPlan(args) {
|
|
82
|
+
const content = fs.readFileSync(args.absPath, "utf8");
|
|
83
|
+
const st = fs.statSync(args.absPath);
|
|
84
|
+
const lines = content.split(/\r?\n/).length;
|
|
85
|
+
const ext = path.extname(args.absPath).toLowerCase();
|
|
86
|
+
const baseName = path.basename(args.filePath, path.extname(args.filePath));
|
|
87
|
+
const parentDir = path.dirname(args.filePath).replace(/\\/g, "/");
|
|
88
|
+
const defaultTargetDir = parentDir === "." ? baseName : `${parentDir}/${baseName}`;
|
|
89
|
+
const targetDir = normalizeToDbPath(args.targetDir ?? defaultTargetDir);
|
|
90
|
+
const declarations = topLevelDeclarationsForPlan(content, ext);
|
|
91
|
+
const grouped = new Map();
|
|
92
|
+
for (const decl of declarations) {
|
|
93
|
+
const key = grouped.size >= args.maxModules && !grouped.has(decl.suggested_module) ? "core" : decl.suggested_module;
|
|
94
|
+
const list = grouped.get(key) ?? [];
|
|
95
|
+
list.push(decl);
|
|
96
|
+
grouped.set(key, list);
|
|
97
|
+
}
|
|
98
|
+
if (!grouped.size)
|
|
99
|
+
grouped.set("core", []);
|
|
100
|
+
const modules = Array.from(grouped.entries())
|
|
101
|
+
.slice(0, args.maxModules)
|
|
102
|
+
.map(([moduleName, decls]) => ({
|
|
103
|
+
module: moduleName,
|
|
104
|
+
target_path: targetPathForModule(args.filePath, targetDir, moduleName),
|
|
105
|
+
declarations: decls.slice(0, 24).map((d) => `${d.kind} ${d.name} @L${d.line}`),
|
|
106
|
+
reason: `Move whole ${moduleName}-related declarations together without changing behavior.`,
|
|
107
|
+
}));
|
|
108
|
+
return {
|
|
109
|
+
ok: true,
|
|
110
|
+
file_path: args.filePath,
|
|
111
|
+
line_count: lines,
|
|
112
|
+
bytes: st.size,
|
|
113
|
+
huge_threshold_lines: args.hugeThresholdLines,
|
|
114
|
+
required_action: "mechanical_modularization",
|
|
115
|
+
intent: args.intent,
|
|
116
|
+
target_dir: targetDir,
|
|
117
|
+
forbidden_patterns: ["*.generated.*", "*.parts", "*.rs.parts", "*_part*", "*Part*"],
|
|
118
|
+
mechanical_rules: [
|
|
119
|
+
"Move only complete declarations/impl blocks/functions/classes/types; do not split a declaration body.",
|
|
120
|
+
"Use real module names and clear directory boundaries; do not create generated/parts/partN files.",
|
|
121
|
+
"Preserve behavior, names, API semantics, data formats, side effects, and test expectations.",
|
|
122
|
+
"Only add necessary module declarations, imports, pub(crate), and re-exports to make moved code compile.",
|
|
123
|
+
"Run formatter, build/check, and relevant tests after each small phase.",
|
|
124
|
+
],
|
|
125
|
+
modules,
|
|
126
|
+
steps: [
|
|
127
|
+
"Create a dedicated mechanical modularization requirement before touching the huge file.",
|
|
128
|
+
"Add the target module directory and move one cohesive declaration group at a time.",
|
|
129
|
+
"Keep the original file as a thin entry/mod orchestration file where possible.",
|
|
130
|
+
"After each group, run formatter and the smallest available compile/test command.",
|
|
131
|
+
"Record the split with record_large_file_split(status='partial' or 'resolved').",
|
|
132
|
+
"Resume the original feature only after the target huge file is no longer the default place for new code.",
|
|
133
|
+
],
|
|
134
|
+
validation: [
|
|
135
|
+
"No *.generated.*, *.parts, *.rs.parts, or numbered part files were created.",
|
|
136
|
+
"The original file line count decreased or contains only thin orchestration glue.",
|
|
137
|
+
"Formatter passes.",
|
|
138
|
+
"Build/check passes.",
|
|
139
|
+
"Relevant tests pass.",
|
|
140
|
+
],
|
|
141
|
+
notes: declarations.length
|
|
142
|
+
? [`Detected ${declarations.length} top-level declarations for mechanical grouping.`]
|
|
143
|
+
: ["No top-level declarations were detected by lightweight scanning; split by obvious cohesive sections and verify after each move."],
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=large-file-split.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"large-file-split.js","sourceRoot":"","sources":["../src/large-file-split.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import Database from "better-sqlite3";
|
|
2
|
+
import type { MaintainMemoryArgs } from "./tool-schemas.js";
|
|
3
|
+
type MemoryMaintenanceContext = {
|
|
4
|
+
getDb: () => Database.Database | undefined;
|
|
5
|
+
getProjectRoot: () => string;
|
|
6
|
+
getDbPath: () => string;
|
|
7
|
+
getKvStatement: () => Database.Statement | undefined;
|
|
8
|
+
getSetKvStatement: () => Database.Statement | undefined;
|
|
9
|
+
getDeleteFileChunkItemsStatement: () => Database.Statement;
|
|
10
|
+
getDeleteSymbolsForFileStatement: () => Database.Statement;
|
|
11
|
+
getInsertMemoryItemStatement: () => Database.Statement;
|
|
12
|
+
sha256Hex: (input: string) => string;
|
|
13
|
+
parseMetadataJson: (raw: string | null | undefined) => Record<string, unknown>;
|
|
14
|
+
metadataStatus: (row: {
|
|
15
|
+
metadata_json: string | null | undefined;
|
|
16
|
+
}) => string | null;
|
|
17
|
+
isHiddenFromDefaultRecall: (row: {
|
|
18
|
+
metadata_json: string | null | undefined;
|
|
19
|
+
}) => boolean;
|
|
20
|
+
};
|
|
21
|
+
export declare function configureMemoryMaintenance(context: MemoryMaintenanceContext): void;
|
|
22
|
+
export declare function pruneIgnoredIndexesByPathPatterns(): {
|
|
23
|
+
chunks_deleted: number;
|
|
24
|
+
symbols_deleted: number;
|
|
25
|
+
};
|
|
26
|
+
export declare function pruneFilenameNoiseIndexes(): {
|
|
27
|
+
chunks_deleted: number;
|
|
28
|
+
symbols_deleted: number;
|
|
29
|
+
};
|
|
30
|
+
type MaintenanceIndexPruneResult = {
|
|
31
|
+
ignored_paths: {
|
|
32
|
+
chunks_deleted: number;
|
|
33
|
+
symbols_deleted: number;
|
|
34
|
+
};
|
|
35
|
+
filename_noise: {
|
|
36
|
+
chunks_deleted: number;
|
|
37
|
+
symbols_deleted: number;
|
|
38
|
+
};
|
|
39
|
+
stale_files: {
|
|
40
|
+
files_checked: number;
|
|
41
|
+
files_matched: number;
|
|
42
|
+
chunks_deleted: number;
|
|
43
|
+
symbols_deleted: number;
|
|
44
|
+
samples: string[];
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
type MaintenanceCompactionResult = {
|
|
48
|
+
cutoff: string;
|
|
49
|
+
candidates: number;
|
|
50
|
+
compacted: number;
|
|
51
|
+
summary_memory_id: number | null;
|
|
52
|
+
archived: number;
|
|
53
|
+
samples: Array<{
|
|
54
|
+
id: number;
|
|
55
|
+
kind: string;
|
|
56
|
+
title: string | null;
|
|
57
|
+
file_path: string | null;
|
|
58
|
+
updated_at: string;
|
|
59
|
+
}>;
|
|
60
|
+
};
|
|
61
|
+
type MaintenanceResult = {
|
|
62
|
+
ok: true;
|
|
63
|
+
dry_run: boolean;
|
|
64
|
+
trigger: "manual" | "auto";
|
|
65
|
+
generated_at: string;
|
|
66
|
+
project_root: string;
|
|
67
|
+
db_path: string;
|
|
68
|
+
config: {
|
|
69
|
+
compact_after_days: number;
|
|
70
|
+
max_memory_items: number;
|
|
71
|
+
max_index_files: number;
|
|
72
|
+
compact_notes: boolean;
|
|
73
|
+
};
|
|
74
|
+
compacted_memory: MaintenanceCompactionResult;
|
|
75
|
+
pruned: MaintenanceIndexPruneResult;
|
|
76
|
+
vacuumed: boolean;
|
|
77
|
+
};
|
|
78
|
+
export declare function runMemoryMaintenance(args: MaintainMemoryArgs, trigger?: "manual" | "auto"): MaintenanceResult;
|
|
79
|
+
export declare function runAutoMaintenanceIfDue(): void;
|
|
80
|
+
export {};
|