vemora 0.1.0-alpha.8
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 +716 -0
- package/dist/cli.d.ts +16 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +589 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/ask.d.ts +14 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +136 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/audit.d.ts +17 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +408 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/brief.d.ts +14 -0
- package/dist/commands/brief.d.ts.map +1 -0
- package/dist/commands/brief.js +73 -0
- package/dist/commands/brief.js.map +1 -0
- package/dist/commands/chat.d.ts +7 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +161 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/context.d.ts +61 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +778 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/deps.d.ts +20 -0
- package/dist/commands/deps.d.ts.map +1 -0
- package/dist/commands/deps.js +138 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/focus.d.ts +6 -0
- package/dist/commands/focus.d.ts.map +1 -0
- package/dist/commands/focus.js +302 -0
- package/dist/commands/focus.js.map +1 -0
- package/dist/commands/index.d.ts +10 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +366 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init-agent.d.ts +23 -0
- package/dist/commands/init-agent.d.ts.map +1 -0
- package/dist/commands/init-agent.js +447 -0
- package/dist/commands/init-agent.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +122 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/knowledge.d.ts +8 -0
- package/dist/commands/knowledge.d.ts.map +1 -0
- package/dist/commands/knowledge.js +98 -0
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/plan.d.ts +16 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +535 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/query.d.ts +39 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +389 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/remember.d.ts +11 -0
- package/dist/commands/remember.d.ts.map +1 -0
- package/dist/commands/remember.js +174 -0
- package/dist/commands/remember.js.map +1 -0
- package/dist/commands/report.d.ts +10 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +180 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +127 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/summarize.d.ts +14 -0
- package/dist/commands/summarize.d.ts.map +1 -0
- package/dist/commands/summarize.js +205 -0
- package/dist/commands/summarize.js.map +1 -0
- package/dist/commands/triage.d.ts +33 -0
- package/dist/commands/triage.d.ts.map +1 -0
- package/dist/commands/triage.js +419 -0
- package/dist/commands/triage.js.map +1 -0
- package/dist/commands/usages.d.ts +14 -0
- package/dist/commands/usages.d.ts.map +1 -0
- package/dist/commands/usages.js +236 -0
- package/dist/commands/usages.js.map +1 -0
- package/dist/core/config.d.ts +35 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +140 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/types.d.ts +251 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +4 -0
- package/dist/core/types.js.map +1 -0
- package/dist/embeddings/factory.d.ts +9 -0
- package/dist/embeddings/factory.d.ts.map +1 -0
- package/dist/embeddings/factory.js +26 -0
- package/dist/embeddings/factory.js.map +1 -0
- package/dist/embeddings/noop.d.ts +17 -0
- package/dist/embeddings/noop.d.ts.map +1 -0
- package/dist/embeddings/noop.js +22 -0
- package/dist/embeddings/noop.js.map +1 -0
- package/dist/embeddings/ollama.d.ts +16 -0
- package/dist/embeddings/ollama.d.ts.map +1 -0
- package/dist/embeddings/ollama.js +41 -0
- package/dist/embeddings/ollama.js.map +1 -0
- package/dist/embeddings/openai.d.ts +10 -0
- package/dist/embeddings/openai.d.ts.map +1 -0
- package/dist/embeddings/openai.js +67 -0
- package/dist/embeddings/openai.js.map +1 -0
- package/dist/embeddings/provider.d.ts +19 -0
- package/dist/embeddings/provider.d.ts.map +1 -0
- package/dist/embeddings/provider.js +3 -0
- package/dist/embeddings/provider.js.map +1 -0
- package/dist/indexer/callgraph.d.ts +16 -0
- package/dist/indexer/callgraph.d.ts.map +1 -0
- package/dist/indexer/callgraph.js +154 -0
- package/dist/indexer/callgraph.js.map +1 -0
- package/dist/indexer/chunkBySlidingWindow.d.ts +6 -0
- package/dist/indexer/chunkBySlidingWindow.d.ts.map +1 -0
- package/dist/indexer/chunkBySlidingWindow.js +30 -0
- package/dist/indexer/chunkBySlidingWindow.js.map +1 -0
- package/dist/indexer/chunkBySymbols.d.ts +7 -0
- package/dist/indexer/chunkBySymbols.d.ts.map +1 -0
- package/dist/indexer/chunkBySymbols.js +57 -0
- package/dist/indexer/chunkBySymbols.js.map +1 -0
- package/dist/indexer/chunker.d.ts +15 -0
- package/dist/indexer/chunker.d.ts.map +1 -0
- package/dist/indexer/chunker.js +26 -0
- package/dist/indexer/chunker.js.map +1 -0
- package/dist/indexer/classHeader.d.ts +7 -0
- package/dist/indexer/classHeader.d.ts.map +1 -0
- package/dist/indexer/classHeader.js +37 -0
- package/dist/indexer/classHeader.js.map +1 -0
- package/dist/indexer/deps.d.ts +66 -0
- package/dist/indexer/deps.d.ts.map +1 -0
- package/dist/indexer/deps.js +409 -0
- package/dist/indexer/deps.js.map +1 -0
- package/dist/indexer/hasher.d.ts +17 -0
- package/dist/indexer/hasher.d.ts.map +1 -0
- package/dist/indexer/hasher.js +38 -0
- package/dist/indexer/hasher.js.map +1 -0
- package/dist/indexer/parser.d.ts +18 -0
- package/dist/indexer/parser.d.ts.map +1 -0
- package/dist/indexer/parser.js +355 -0
- package/dist/indexer/parser.js.map +1 -0
- package/dist/indexer/scanner.d.ts +18 -0
- package/dist/indexer/scanner.d.ts.map +1 -0
- package/dist/indexer/scanner.js +37 -0
- package/dist/indexer/scanner.js.map +1 -0
- package/dist/indexer/strategy.d.ts +11 -0
- package/dist/indexer/strategy.d.ts.map +1 -0
- package/dist/indexer/strategy.js +15 -0
- package/dist/indexer/strategy.js.map +1 -0
- package/dist/indexer/tests.d.ts +15 -0
- package/dist/indexer/tests.d.ts.map +1 -0
- package/dist/indexer/tests.js +68 -0
- package/dist/indexer/tests.js.map +1 -0
- package/dist/indexer/todos.d.ts +9 -0
- package/dist/indexer/todos.d.ts.map +1 -0
- package/dist/indexer/todos.js +29 -0
- package/dist/indexer/todos.js.map +1 -0
- package/dist/llm/anthropic.d.ts +8 -0
- package/dist/llm/anthropic.d.ts.map +1 -0
- package/dist/llm/anthropic.js +76 -0
- package/dist/llm/anthropic.js.map +1 -0
- package/dist/llm/factory.d.ts +7 -0
- package/dist/llm/factory.d.ts.map +1 -0
- package/dist/llm/factory.js +39 -0
- package/dist/llm/factory.js.map +1 -0
- package/dist/llm/ollama.d.ts +8 -0
- package/dist/llm/ollama.d.ts.map +1 -0
- package/dist/llm/ollama.js +83 -0
- package/dist/llm/ollama.js.map +1 -0
- package/dist/llm/openai.d.ts +8 -0
- package/dist/llm/openai.d.ts.map +1 -0
- package/dist/llm/openai.js +68 -0
- package/dist/llm/openai.js.map +1 -0
- package/dist/llm/provider.d.ts +29 -0
- package/dist/llm/provider.d.ts.map +1 -0
- package/dist/llm/provider.js +3 -0
- package/dist/llm/provider.js.map +1 -0
- package/dist/search/bm25.d.ts +3 -0
- package/dist/search/bm25.d.ts.map +1 -0
- package/dist/search/bm25.js +102 -0
- package/dist/search/bm25.js.map +1 -0
- package/dist/search/formatter.d.ts +43 -0
- package/dist/search/formatter.d.ts.map +1 -0
- package/dist/search/formatter.js +208 -0
- package/dist/search/formatter.js.map +1 -0
- package/dist/search/hybrid.d.ts +10 -0
- package/dist/search/hybrid.d.ts.map +1 -0
- package/dist/search/hybrid.js +53 -0
- package/dist/search/hybrid.js.map +1 -0
- package/dist/search/merge.d.ts +33 -0
- package/dist/search/merge.d.ts.map +1 -0
- package/dist/search/merge.js +158 -0
- package/dist/search/merge.js.map +1 -0
- package/dist/search/mmr.d.ts +23 -0
- package/dist/search/mmr.d.ts.map +1 -0
- package/dist/search/mmr.js +95 -0
- package/dist/search/mmr.js.map +1 -0
- package/dist/search/rerank.d.ts +15 -0
- package/dist/search/rerank.d.ts.map +1 -0
- package/dist/search/rerank.js +76 -0
- package/dist/search/rerank.js.map +1 -0
- package/dist/search/signature.d.ts +42 -0
- package/dist/search/signature.d.ts.map +1 -0
- package/dist/search/signature.js +112 -0
- package/dist/search/signature.js.map +1 -0
- package/dist/search/vector.d.ts +41 -0
- package/dist/search/vector.d.ts.map +1 -0
- package/dist/search/vector.js +185 -0
- package/dist/search/vector.js.map +1 -0
- package/dist/storage/cache.d.ts +30 -0
- package/dist/storage/cache.d.ts.map +1 -0
- package/dist/storage/cache.js +160 -0
- package/dist/storage/cache.js.map +1 -0
- package/dist/storage/knowledge.d.ts +17 -0
- package/dist/storage/knowledge.d.ts.map +1 -0
- package/dist/storage/knowledge.js +58 -0
- package/dist/storage/knowledge.js.map +1 -0
- package/dist/storage/repository.d.ts +27 -0
- package/dist/storage/repository.d.ts.map +1 -0
- package/dist/storage/repository.js +95 -0
- package/dist/storage/repository.js.map +1 -0
- package/dist/storage/session.d.ts +38 -0
- package/dist/storage/session.d.ts.map +1 -0
- package/dist/storage/session.js +100 -0
- package/dist/storage/session.js.map +1 -0
- package/dist/storage/summaries.d.ts +19 -0
- package/dist/storage/summaries.d.ts.map +1 -0
- package/dist/storage/summaries.js +66 -0
- package/dist/storage/summaries.js.map +1 -0
- package/dist/storage/usage.d.ts +35 -0
- package/dist/storage/usage.d.ts.map +1 -0
- package/dist/storage/usage.js +55 -0
- package/dist/storage/usage.js.map +1 -0
- package/dist/utils/git.d.ts +15 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +38 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/tokenizer.d.ts +24 -0
- package/dist/utils/tokenizer.d.ts.map +1 -0
- package/dist/utils/tokenizer.js +52 -0
- package/dist/utils/tokenizer.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runIndex = runIndex;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const config_1 = require("../core/config");
|
|
12
|
+
const factory_1 = require("../embeddings/factory");
|
|
13
|
+
const callgraph_1 = require("../indexer/callgraph");
|
|
14
|
+
const chunker_1 = require("../indexer/chunker");
|
|
15
|
+
const deps_1 = require("../indexer/deps");
|
|
16
|
+
const hasher_1 = require("../indexer/hasher");
|
|
17
|
+
const parser_1 = require("../indexer/parser");
|
|
18
|
+
const scanner_1 = require("../indexer/scanner");
|
|
19
|
+
const todos_1 = require("../indexer/todos");
|
|
20
|
+
const cache_1 = require("../storage/cache");
|
|
21
|
+
const repository_1 = require("../storage/repository");
|
|
22
|
+
async function runIndex(rootDir, options = {}) {
|
|
23
|
+
const config = (0, config_1.loadConfig)(rootDir);
|
|
24
|
+
const repo = new repository_1.RepositoryStorage(rootDir);
|
|
25
|
+
const cacheStorage = new cache_1.EmbeddingCacheStorage(config.projectId);
|
|
26
|
+
console.log(chalk_1.default.bold(`Indexing ${chalk_1.default.cyan(config.projectName)}...`));
|
|
27
|
+
console.log();
|
|
28
|
+
// ── Step 0: Initial full or incremental index ───────────────────────────────
|
|
29
|
+
const { newFiles, newChunks, newSymbols, newDeps, newCallGraph, newTodos, stats, changedPaths, deletedPaths, } = await performIndexIteration(rootDir, config, repo, options);
|
|
30
|
+
if (changedPaths.length > 0 || deletedPaths.length > 0) {
|
|
31
|
+
// Save everything from the initial run
|
|
32
|
+
repo.saveFiles(newFiles);
|
|
33
|
+
repo.saveChunks(newChunks);
|
|
34
|
+
repo.saveSymbols(newSymbols);
|
|
35
|
+
repo.saveDeps(newDeps);
|
|
36
|
+
repo.saveCallGraph(newCallGraph);
|
|
37
|
+
repo.saveTodos(newTodos);
|
|
38
|
+
if (!options.noEmbed && config.embedding.provider !== "none") {
|
|
39
|
+
const cache = await generateEmbeddings(newChunks, cacheStorage.load(), config, cacheStorage);
|
|
40
|
+
await rebuildHNSWIndex(newChunks, cache, cacheStorage);
|
|
41
|
+
}
|
|
42
|
+
updateMetadata(repo, config, newFiles, newSymbols, stats, newCallGraph);
|
|
43
|
+
console.log(chalk_1.default.bold.green("\nInitial indexing complete!"));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.log(chalk_1.default.green("Index is already up to date."));
|
|
47
|
+
}
|
|
48
|
+
// ── Step 1: Start watcher if requested ──────────────────────────────────────
|
|
49
|
+
if (options.watch) {
|
|
50
|
+
await startWatcher(rootDir, config, repo, cacheStorage, options);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Performs a single pass of indexing (scan, hash, parse, deps).
|
|
55
|
+
* Returns the new state and which paths were affected.
|
|
56
|
+
*/
|
|
57
|
+
async function performIndexIteration(rootDir, config, repo, options, specificPaths) {
|
|
58
|
+
// Load previous state
|
|
59
|
+
const prevFiles = options.force ? {} : repo.loadFiles();
|
|
60
|
+
const prevChunks = options.force ? [] : repo.loadChunks();
|
|
61
|
+
const prevSymbols = options.force ? {} : repo.loadSymbols();
|
|
62
|
+
const prevDeps = options.force ? {} : repo.loadDeps();
|
|
63
|
+
const prevCallGraph = options.force ? {} : repo.loadCallGraph();
|
|
64
|
+
let changedPaths = [];
|
|
65
|
+
let deletedPaths = [];
|
|
66
|
+
let unchangedPaths = [];
|
|
67
|
+
const allScannedPaths = new Set();
|
|
68
|
+
if (specificPaths) {
|
|
69
|
+
// If called from watcher, we already know what changed
|
|
70
|
+
changedPaths = specificPaths.changed ?? [];
|
|
71
|
+
deletedPaths = specificPaths.deleted ?? [];
|
|
72
|
+
// Carry forward everything else from prevFiles
|
|
73
|
+
const affected = new Set([...changedPaths, ...deletedPaths]);
|
|
74
|
+
unchangedPaths = Object.keys(prevFiles).filter((p) => !affected.has(p));
|
|
75
|
+
for (const p of [...changedPaths, ...unchangedPaths])
|
|
76
|
+
allScannedPaths.add(p);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// Standard run: scan everything
|
|
80
|
+
const scanSpinner = (0, ora_1.default)("Scanning repository files...").start();
|
|
81
|
+
const scanned = await (0, scanner_1.scanRepository)(config);
|
|
82
|
+
scanSpinner.succeed(`Found ${chalk_1.default.bold(scanned.length)} files to consider`);
|
|
83
|
+
const hashSpinner = (0, ora_1.default)("Computing file hashes...").start();
|
|
84
|
+
for (const file of scanned) {
|
|
85
|
+
allScannedPaths.add(file.relativePath);
|
|
86
|
+
try {
|
|
87
|
+
const hash = (0, hasher_1.hashFile)(file.absolutePath);
|
|
88
|
+
const prev = prevFiles[file.relativePath];
|
|
89
|
+
if (prev && prev.hash === hash && !options.force) {
|
|
90
|
+
unchangedPaths.push(file.relativePath);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
changedPaths.push(file.relativePath);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
/* skip */
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
deletedPaths = Object.keys(prevFiles).filter((p) => !allScannedPaths.has(p));
|
|
101
|
+
hashSpinner.succeed([
|
|
102
|
+
chalk_1.default.green(`${unchangedPaths.length} unchanged`),
|
|
103
|
+
chalk_1.default.yellow(`${changedPaths.length} changed/new`),
|
|
104
|
+
deletedPaths.length > 0
|
|
105
|
+
? chalk_1.default.red(`${deletedPaths.length} deleted`)
|
|
106
|
+
: null,
|
|
107
|
+
]
|
|
108
|
+
.filter(Boolean)
|
|
109
|
+
.join(", "));
|
|
110
|
+
}
|
|
111
|
+
const newFiles = {};
|
|
112
|
+
// Carry forward unchanged
|
|
113
|
+
for (const p of unchangedPaths) {
|
|
114
|
+
if (prevFiles[p])
|
|
115
|
+
newFiles[p] = prevFiles[p];
|
|
116
|
+
}
|
|
117
|
+
const allFilePaths = allScannedPaths;
|
|
118
|
+
const reprocessPaths = new Set([...changedPaths, ...deletedPaths]);
|
|
119
|
+
const newSymbols = Object.fromEntries(Object.entries(prevSymbols).filter(([, sym]) => !reprocessPaths.has(sym.file)));
|
|
120
|
+
const newChunks = prevChunks.filter((c) => !reprocessPaths.has(c.file));
|
|
121
|
+
// Carry forward todos from unchanged files
|
|
122
|
+
const prevTodos = options.force ? [] : repo.loadTodos();
|
|
123
|
+
const newTodos = prevTodos.filter((t) => !reprocessPaths.has(t.file));
|
|
124
|
+
// Call Graph partials
|
|
125
|
+
const partialCallGraphs = [];
|
|
126
|
+
// Carry forward partial call graphs for unchanged files
|
|
127
|
+
// (This is a simplified approach: we filter the old global graph)
|
|
128
|
+
const unchangedCallGraph = {};
|
|
129
|
+
for (const [callerId, data] of Object.entries(prevCallGraph)) {
|
|
130
|
+
const file = callerId.split(":")[0];
|
|
131
|
+
if (reprocessPaths.has(file))
|
|
132
|
+
continue;
|
|
133
|
+
unchangedCallGraph[callerId] = data;
|
|
134
|
+
}
|
|
135
|
+
partialCallGraphs.push(unchangedCallGraph);
|
|
136
|
+
const changedContents = new Map();
|
|
137
|
+
if (changedPaths.length > 0) {
|
|
138
|
+
const parseSpinner = (0, ora_1.default)(`Parsing ${changedPaths.length} files...`).start();
|
|
139
|
+
let _parseErrors = 0;
|
|
140
|
+
const BATCH_SIZE = 4;
|
|
141
|
+
for (let i = 0; i < changedPaths.length; i += BATCH_SIZE) {
|
|
142
|
+
const batch = changedPaths.slice(i, i + BATCH_SIZE);
|
|
143
|
+
await Promise.all(batch.map(async (relativePath) => {
|
|
144
|
+
const absolutePath = path_1.default.join(rootDir, relativePath);
|
|
145
|
+
try {
|
|
146
|
+
if (!fs_1.default.existsSync(absolutePath))
|
|
147
|
+
return;
|
|
148
|
+
const content = fs_1.default.readFileSync(absolutePath, "utf-8");
|
|
149
|
+
const hash = (0, hasher_1.hashBuffer)(content); // avoids re-reading the file
|
|
150
|
+
const stats = fs_1.default.statSync(absolutePath);
|
|
151
|
+
const symbols = (0, parser_1.parseSymbols)(relativePath, content);
|
|
152
|
+
const chunks = (0, chunker_1.chunkFile)(relativePath, content, symbols, config);
|
|
153
|
+
const fileSymbols = (0, parser_1.buildSymbolIndex)(relativePath, symbols);
|
|
154
|
+
newFiles[relativePath] = {
|
|
155
|
+
hash,
|
|
156
|
+
size: stats.size,
|
|
157
|
+
lastModified: stats.mtime.toISOString(),
|
|
158
|
+
chunks: chunks.map((c) => c.id),
|
|
159
|
+
symbols: symbols.map((s) => s.name),
|
|
160
|
+
};
|
|
161
|
+
Object.assign(newSymbols, fileSymbols);
|
|
162
|
+
newChunks.push(...chunks);
|
|
163
|
+
changedContents.set(relativePath, content);
|
|
164
|
+
newTodos.push(...(0, todos_1.extractTodos)(relativePath, content));
|
|
165
|
+
// Extract calls for Call Graph
|
|
166
|
+
const fileCalls = (0, callgraph_1.extractFileCalls)(relativePath, content, {
|
|
167
|
+
symbols: newSymbols,
|
|
168
|
+
deps: prevDeps,
|
|
169
|
+
allFiles: allFilePaths,
|
|
170
|
+
});
|
|
171
|
+
partialCallGraphs.push(fileCalls);
|
|
172
|
+
}
|
|
173
|
+
catch (_err) {
|
|
174
|
+
_parseErrors++;
|
|
175
|
+
}
|
|
176
|
+
}));
|
|
177
|
+
}
|
|
178
|
+
parseSpinner.succeed(`Parsed ${changedPaths.length} files`);
|
|
179
|
+
}
|
|
180
|
+
const aliases = (0, deps_1.loadTsPathAliases)(rootDir);
|
|
181
|
+
const newDeps = (0, deps_1.updateDependencyGraph)(prevDeps, changedContents, new Set(deletedPaths), allFilePaths, aliases);
|
|
182
|
+
const stats = (0, deps_1.graphStats)(newDeps);
|
|
183
|
+
// Build final Call Graph
|
|
184
|
+
const newCallGraph = (0, callgraph_1.buildGlobalCallGraph)(partialCallGraphs);
|
|
185
|
+
return {
|
|
186
|
+
newFiles,
|
|
187
|
+
newChunks,
|
|
188
|
+
newSymbols,
|
|
189
|
+
newDeps,
|
|
190
|
+
newCallGraph,
|
|
191
|
+
newTodos,
|
|
192
|
+
stats,
|
|
193
|
+
changedPaths,
|
|
194
|
+
deletedPaths,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function updateMetadata(repo, config, files, symbols, stats, callGraph) {
|
|
198
|
+
let totalCallEdges = 0;
|
|
199
|
+
if (callGraph) {
|
|
200
|
+
totalCallEdges = Object.values(callGraph).reduce((acc, data) => acc + data.calls.length, 0);
|
|
201
|
+
}
|
|
202
|
+
const meta = {
|
|
203
|
+
projectId: config.projectId,
|
|
204
|
+
projectName: config.projectName,
|
|
205
|
+
lastIndexed: new Date().toISOString(),
|
|
206
|
+
indexedFiles: Object.keys(files).length,
|
|
207
|
+
totalChunks: Object.values(files).reduce((acc, f) => acc + f.chunks.length, 0),
|
|
208
|
+
totalSymbols: Object.keys(symbols).length,
|
|
209
|
+
totalDepEdges: stats.totalEdges,
|
|
210
|
+
totalCallEdges,
|
|
211
|
+
embeddingProvider: config.embedding.provider,
|
|
212
|
+
embeddingModel: config.embedding.model,
|
|
213
|
+
};
|
|
214
|
+
repo.saveMetadata(meta);
|
|
215
|
+
return meta;
|
|
216
|
+
}
|
|
217
|
+
async function startWatcher(rootDir, config, repo, cacheStorage, options) {
|
|
218
|
+
const chokidar = require("chokidar");
|
|
219
|
+
// micromatch is a transitive dependency of fast-glob — always available
|
|
220
|
+
const micromatch = require("micromatch");
|
|
221
|
+
// Use a function so that chokidar filters against relative paths the same way
|
|
222
|
+
// the scanner does, preventing dist/ and .vemora/ writes from feedback-looping.
|
|
223
|
+
const isIgnored = (absPath) => {
|
|
224
|
+
const rel = path_1.default.relative(rootDir, absPath);
|
|
225
|
+
if (!rel || rel.startsWith(".."))
|
|
226
|
+
return false;
|
|
227
|
+
return micromatch.isMatch(rel, config.exclude, { dot: true });
|
|
228
|
+
};
|
|
229
|
+
const watcher = chokidar.watch(rootDir, {
|
|
230
|
+
ignored: isIgnored,
|
|
231
|
+
persistent: true,
|
|
232
|
+
ignoreInitial: true,
|
|
233
|
+
});
|
|
234
|
+
console.log(chalk_1.default.blue("\nWatching for changes... (Ctrl+C to stop)"));
|
|
235
|
+
const pendingChanges = new Set();
|
|
236
|
+
const pendingDeletions = new Set();
|
|
237
|
+
let debounceTimer = null;
|
|
238
|
+
const triggerIndex = async () => {
|
|
239
|
+
const changed = Array.from(pendingChanges);
|
|
240
|
+
const deleted = Array.from(pendingDeletions);
|
|
241
|
+
pendingChanges.clear();
|
|
242
|
+
pendingDeletions.clear();
|
|
243
|
+
process.stdout.write(chalk_1.default.yellow(`\nChange detected, re-indexing ${changed.length + deleted.length} files... `));
|
|
244
|
+
try {
|
|
245
|
+
const { newFiles, newChunks, newSymbols, newDeps, newCallGraph, newTodos, stats } = await performIndexIteration(rootDir, config, repo, options, {
|
|
246
|
+
changed,
|
|
247
|
+
deleted,
|
|
248
|
+
});
|
|
249
|
+
repo.saveFiles(newFiles);
|
|
250
|
+
repo.saveChunks(newChunks);
|
|
251
|
+
repo.saveSymbols(newSymbols);
|
|
252
|
+
repo.saveDeps(newDeps);
|
|
253
|
+
repo.saveCallGraph(newCallGraph);
|
|
254
|
+
repo.saveTodos(newTodos);
|
|
255
|
+
if (!options.noEmbed && config.embedding.provider !== "none") {
|
|
256
|
+
const cache = cacheStorage.load();
|
|
257
|
+
const updatedCache = await generateEmbeddings(newChunks, cache, config, cacheStorage);
|
|
258
|
+
await rebuildHNSWIndex(newChunks, updatedCache, cacheStorage);
|
|
259
|
+
}
|
|
260
|
+
updateMetadata(repo, config, newFiles, newSymbols, stats, newCallGraph);
|
|
261
|
+
process.stdout.write(chalk_1.default.green("Done.\n"));
|
|
262
|
+
}
|
|
263
|
+
catch (err) {
|
|
264
|
+
process.stdout.write(chalk_1.default.red(`Failed: ${err.message}\n`));
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
const handleChange = (filePath, isDeleted = false) => {
|
|
268
|
+
const rel = path_1.default.relative(rootDir, filePath);
|
|
269
|
+
if (!rel || rel.startsWith(".."))
|
|
270
|
+
return;
|
|
271
|
+
// Apply the same include/exclude rules as the scanner to avoid processing
|
|
272
|
+
// files like compiled dist/ output or editor temp files.
|
|
273
|
+
const included = micromatch.isMatch(rel, config.include, { dot: false });
|
|
274
|
+
const excluded = micromatch.isMatch(rel, config.exclude, { dot: true });
|
|
275
|
+
if (!included || excluded)
|
|
276
|
+
return;
|
|
277
|
+
if (isDeleted) {
|
|
278
|
+
pendingDeletions.add(rel);
|
|
279
|
+
pendingChanges.delete(rel);
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
pendingChanges.add(rel);
|
|
283
|
+
pendingDeletions.delete(rel);
|
|
284
|
+
}
|
|
285
|
+
if (debounceTimer)
|
|
286
|
+
clearTimeout(debounceTimer);
|
|
287
|
+
debounceTimer = setTimeout(triggerIndex, 500);
|
|
288
|
+
};
|
|
289
|
+
watcher
|
|
290
|
+
.on("add", (p) => handleChange(p))
|
|
291
|
+
.on("change", (p) => handleChange(p))
|
|
292
|
+
.on("unlink", (p) => handleChange(p, true));
|
|
293
|
+
// biome-ignore lint/suspicious/noEmptyBlockStatements: intentionally empty — keeps the process alive
|
|
294
|
+
return new Promise(() => { }); // Keep alive
|
|
295
|
+
}
|
|
296
|
+
// ─── Embedding Generation ─────────────────────────────────────────────────────
|
|
297
|
+
async function generateEmbeddings(chunks, prevCache, config, cacheStorage) {
|
|
298
|
+
const cachedIds = new Set([
|
|
299
|
+
...Object.keys(prevCache?.embeddings ?? {}),
|
|
300
|
+
...(prevCache?.chunkIds ?? []),
|
|
301
|
+
]);
|
|
302
|
+
const toEmbed = chunks.filter((c) => !cachedIds.has(c.id));
|
|
303
|
+
if (toEmbed.length === 0) {
|
|
304
|
+
console.log(chalk_1.default.green("✓") + " All embeddings already cached");
|
|
305
|
+
return prevCache;
|
|
306
|
+
}
|
|
307
|
+
const spinner = (0, ora_1.default)(`Generating embeddings for ${chalk_1.default.bold(toEmbed.length)} new chunks via ${config.embedding.provider}...`).start();
|
|
308
|
+
try {
|
|
309
|
+
const provider = (0, factory_1.createEmbeddingProvider)(config.embedding);
|
|
310
|
+
// Prefix each chunk with its location so the embedding captures context
|
|
311
|
+
const texts = toEmbed.map((c) => `file: ${c.file}\nsymbol: ${c.symbol ?? "(none)"}\n\n${c.content}`);
|
|
312
|
+
const embeddings = await provider.embed(texts);
|
|
313
|
+
const newEmbeddings = {};
|
|
314
|
+
for (let i = 0; i < toEmbed.length; i++) {
|
|
315
|
+
if (embeddings[i]?.length > 0) {
|
|
316
|
+
newEmbeddings[toEmbed[i].id] = embeddings[i];
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// Build or update the cache
|
|
320
|
+
const baseCache = prevCache ?? {
|
|
321
|
+
projectId: config.projectId,
|
|
322
|
+
embeddingModel: config.embedding.model,
|
|
323
|
+
dimensions: config.embedding.dimensions,
|
|
324
|
+
lastUpdated: new Date().toISOString(),
|
|
325
|
+
embeddings: {},
|
|
326
|
+
};
|
|
327
|
+
// Prune stale entries, then add new ones
|
|
328
|
+
const validIds = new Set(chunks.map((c) => c.id));
|
|
329
|
+
const pruned = cacheStorage.prune(validIds, baseCache);
|
|
330
|
+
const updated = cacheStorage.update(newEmbeddings, pruned);
|
|
331
|
+
spinner.succeed(`Generated ${chalk_1.default.bold(Object.keys(newEmbeddings).length)} embeddings` +
|
|
332
|
+
` (cached locally at ~/.vemora-cache/)`);
|
|
333
|
+
return updated;
|
|
334
|
+
}
|
|
335
|
+
catch (err) {
|
|
336
|
+
spinner.fail(`Embedding generation failed: ${err.message}`);
|
|
337
|
+
console.log(chalk_1.default.gray(" Keyword search is still available. Fix the provider config and re-run."));
|
|
338
|
+
return prevCache;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
async function rebuildHNSWIndex(chunks, cache, cacheStorage) {
|
|
342
|
+
if (!cache || !cache.vectors || !cache.chunkIds)
|
|
343
|
+
return;
|
|
344
|
+
const spinner = (0, ora_1.default)("Building HNSW search index...").start();
|
|
345
|
+
try {
|
|
346
|
+
const { HNSW } = require("hnsw");
|
|
347
|
+
// Create new index
|
|
348
|
+
// Using default parameters: M=16, efConstruction=200
|
|
349
|
+
const dimensions = cache.dimensions;
|
|
350
|
+
const index = new HNSW(16, 200, dimensions, "cosine");
|
|
351
|
+
const data = cache.chunkIds.map((id, i) => {
|
|
352
|
+
const offset = i * dimensions;
|
|
353
|
+
const vector = cache.vectors.subarray(offset, offset + dimensions);
|
|
354
|
+
return { id: i, vector: Array.from(vector) };
|
|
355
|
+
});
|
|
356
|
+
await index.buildIndex(data);
|
|
357
|
+
// Save to cache
|
|
358
|
+
cache.hnswIndex = index.toJSON();
|
|
359
|
+
cacheStorage.save(cache);
|
|
360
|
+
spinner.succeed(`HNSW index built with ${chalk_1.default.bold(cache.chunkIds.length)} vectors`);
|
|
361
|
+
}
|
|
362
|
+
catch (err) {
|
|
363
|
+
spinner.fail(`HNSW index build failed: ${err.message}`);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type AgentTarget = "claude" | "copilot" | "cursor" | "windsurf" | "gemini";
|
|
2
|
+
export interface InitAgentOptions {
|
|
3
|
+
agents?: AgentTarget[];
|
|
4
|
+
force?: boolean;
|
|
5
|
+
/** Write Claude Code hooks to .claude/settings.json (Claude target only). */
|
|
6
|
+
hooks?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const MARKER_START = "<!-- vemora:generated:start -->";
|
|
9
|
+
export declare const MARKER_END = "<!-- vemora:generated:end -->";
|
|
10
|
+
export declare const DEFAULT_INSTRUCTIONS = "## Working with this codebase\n\n- **Before reading any file**, check the Key Exports table below to locate the relevant symbol.\n- **Before querying**, try `vemora query` first \u2014 open a file only if the returned context is insufficient.\n- **Before deep-diving a file or symbol**, use `vemora focus` \u2014 it aggregates implementation, deps, callers, tests, and knowledge in one call.\n- **Before modifying a file**, check its blast radius: `vemora deps <file> --root . --reverse-depth 2`.\n- **Before renaming a symbol or changing its API**, check who uses it: `vemora usages <SymbolName> --root .`.\n- **After making changes**, always run the build/test command to verify correctness before declaring done.\n- **Scope discipline**: only make changes directly requested. Do not refactor surrounding code, add comments, or improve things that were not explicitly asked.\n- **Save non-obvious findings** with `vemora remember` when you discover a gotcha, an architectural decision, or a pattern worth preserving for future sessions. Do not save things already obvious from reading the code.\n\n## Session setup\n\nAt the **start of each session**, load the project primer:\n\n```bash\nvemora brief --root .\n```\n\nFor a live index, also run this in a background terminal:\n\n```bash\nvemora index --root . --watch\n```\n\nWithout it, re-index manually after significant changes:\n\n```bash\nvemora index --root . --no-embed\n```\n\n## Session memory\n\nDuring the session, **proactively save** anything non-obvious that future sessions would benefit from knowing:\n\n```bash\nvemora remember \"text\" --root . # category is auto-classified by the LLM\n```\n\n**Save:** why a design decision was made, a non-obvious constraint, a bug and its root cause, an approved pattern.\n**Do not save:** things obvious from reading the code, file structure, recent changes (use `git log`), or anything already in the index.\n\n## Quick reference\n\nUse this decision tree to choose the right command:\n\n| Situation | Command |\n|---|---|\n| Session start \u2014 re-establish context | `brief --root .` |\n| User asks about a function, class, or file | `focus <file-or-symbol> --root .` |\n| User asks a concept/how-does-X-work question | `context --root . --query \"<question>\"` |\n| User asks to fix / refactor / add code | `context --root . --query \"<task>\" --keyword`, then check for `*.test.ts` before editing |\n| Complex multi-step task | `plan \"<task>\" --root . --confirm --synthesize` |\n| Security / performance / bug audit | `audit --root . --type security,bugs` |\n| Quick static scan \u2014 no API key needed | `triage --root . --type bugs,security` |\n| Output is too long for your context window | add `--budget 2000` (or lower) to any command |\n| No embeddings available / fast keyword search | add `--keyword` to any `query` or `context` call |\n| Need to understand who imports a file | `deps <file> --root .` |\n| Need to see the full blast radius of a change | `deps <file> --root . --reverse-depth 3` |\n| Need to find who calls a specific symbol | `usages <SymbolName> --root .` |";
|
|
11
|
+
export declare function runInitAgent(rootDir: string, options?: InitAgentOptions): Promise<void>;
|
|
12
|
+
export declare function buildGeneratedBlock(_projectName: string, projectOverview: string | null, npmScripts: Record<string, string>, entryPoints: string[], fileSummaries: Record<string, {
|
|
13
|
+
summary: string;
|
|
14
|
+
}>, exportedSymbols: Array<[string, {
|
|
15
|
+
type: string;
|
|
16
|
+
file: string;
|
|
17
|
+
}]>): string;
|
|
18
|
+
/**
|
|
19
|
+
* Reads npm scripts from package.json in rootDir.
|
|
20
|
+
* Returns an empty object if no package.json or no scripts field.
|
|
21
|
+
*/
|
|
22
|
+
export declare function detectNpmScripts(rootDir: string): Record<string, string>;
|
|
23
|
+
//# sourceMappingURL=init-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-agent.d.ts","sourceRoot":"","sources":["../../src/commands/init-agent.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAElF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAID,eAAO,MAAM,YAAY,oCAAoC,CAAC;AAC9D,eAAO,MAAM,UAAU,kCAAkC,CAAC;AAI1D,eAAO,MAAM,oBAAoB,siGA2D+C,CAAC;AAIjF,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA6Df;AAkSD,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,eAAe,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,GAC/D,MAAM,CA0GR;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxE"}
|