@abhinav2203/coderag 0.1.1 → 0.2.1

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 CHANGED
@@ -71,10 +71,22 @@ Supported environment overrides:
71
71
 
72
72
  - `CODERAG_REPO_PATH`
73
73
  - `CODERAG_STORAGE_ROOT`
74
+ - `CODERAG_EMBEDDING_PROVIDER`
75
+ - `CODERAG_EMBEDDING_DIMENSIONS`
76
+ - `CODERAG_GEMINI_MODEL`
77
+ - `CODERAG_GEMINI_API_KEY`
78
+ - `CODERAG_EMBEDDING_TIMEOUT_MS`
74
79
  - `CODERAG_TOP_K`
75
80
  - `CODERAG_RERANK_K`
81
+ - `CODERAG_MAX_CONTEXT_CHARS`
76
82
  - `CODERAG_DEFAULT_DEPTH`
77
83
  - `CODERAG_MAX_DEPTH`
84
+ - `CODERAG_LOCK_TIMEOUT_MS`
85
+ - `CODERAG_LOCK_POLL_MS`
86
+ - `CODERAG_LOCK_STALE_MS`
87
+ - `CODERAG_SERVICE_HOST`
88
+ - `CODERAG_SERVICE_PORT`
89
+ - `CODERAG_SERVICE_API_KEY`
78
90
  - `CODERAG_LLM_ENABLED`
79
91
  - `CODERAG_LLM_TRANSPORT`
80
92
  - `CODERAG_LLM_BASE_URL`
@@ -82,6 +94,7 @@ Supported environment overrides:
82
94
  - `CODERAG_LLM_API_KEY`
83
95
  - `CODERAG_LLM_TIMEOUT_MS`
84
96
  - `CODERAG_CUSTOM_HTTP_FORMAT`
97
+ - `CODERAG_LLM_HEADERS`
85
98
 
86
99
  ## Local LLM integration
87
100
 
@@ -171,6 +184,7 @@ coderag index [--config path]
171
184
  coderag reindex [--config path] [--full]
172
185
  coderag query "question" [--config path] [--depth 2] [--json]
173
186
  coderag serve-mcp [--config path]
187
+ coderag serve-http [--config path]
174
188
  coderag doctor [--config path]
175
189
  ```
176
190
 
@@ -183,6 +197,8 @@ coderag doctor [--config path]
183
197
  - JavaScript and TypeScript repos are supported.
184
198
  - Call-site extraction is best effort for dynamic dispatch, reflection, or generated code. Missing call sites are returned as unresolved metadata, not guessed values.
185
199
  - The built-in embedding strategy is deterministic and zero-setup. If you need stronger semantic recall, provide a custom embedding provider through the library API.
200
+ - `serve-http` exposes `/health`, `/ready`, `/metrics`, and `/v1/*` endpoints. `/ready` only reports ready once the index exists, contains documents, and matches the configured embedding fingerprint.
201
+ - If you use Gemini embeddings, set `CODERAG_GEMINI_API_KEY` before indexing so the persisted embedding fingerprint matches the configured model and dimensions.
186
202
  - Live E2E runs in this repo were verified against an OpenAI-compatible NVIDIA endpoint and against both the CodeRag and CodeFlow repositories.
187
203
 
188
204
  ## Development
package/dist/cli.js CHANGED
@@ -21,6 +21,15 @@ const readFlagValue = (args, flag) => {
21
21
  const index = args.indexOf(flag);
22
22
  return index === -1 ? undefined : args[index + 1];
23
23
  };
24
+ const parseDepthFlag = (value) => {
25
+ if (value === undefined) {
26
+ return undefined;
27
+ }
28
+ if (!/^[1-9]\d*$/.test(value)) {
29
+ throw new Error("--depth must be a positive integer.");
30
+ }
31
+ return Number(value);
32
+ };
24
33
  const hasFlag = (args, flag) => args.includes(flag);
25
34
  const readPositionals = (args) => {
26
35
  const positionals = [];
@@ -116,8 +125,7 @@ export const runCli = async (argv = process.argv) => {
116
125
  if (!question) {
117
126
  throw new Error("query requires a question argument.");
118
127
  }
119
- const depthValue = readFlagValue(args, "--depth");
120
- const depth = depthValue ? Number(depthValue) : undefined;
128
+ const depth = parseDepthFlag(readFlagValue(args, "--depth"));
121
129
  const result = await coderag.query(question, {
122
130
  depth,
123
131
  onToken: hasFlag(args, JSON_FLAG)
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,8 @@ export declare const buildNodeDocument: (node: BlueprintNode, span: SourceSpan |
10
10
  * and uses their content as the embedding text instead of generating thin markdown.
11
11
  */
12
12
  export declare const buildIndexedDocuments: (snapshot: GraphSnapshot, embeddingProvider: EmbeddingProvider, docsPath?: string) => Promise<Record<string, IndexedNodeDocument>>;
13
+ export declare const INDEX_SCHEMA_VERSION = 2;
13
14
  /**
14
15
  * Builds the manifest used for incremental reindex decisions.
15
16
  */
16
- export declare const buildIndexManifest: (repoPath: string, snapshot: GraphSnapshot, documents: Record<string, IndexedNodeDocument>) => Promise<IndexManifest>;
17
+ export declare const buildIndexManifest: (repoPath: string, snapshot: GraphSnapshot, documents: Record<string, IndexedNodeDocument>, embeddingProvider?: Pick<EmbeddingProvider, "name" | "model" | "dimensions"> | string) => Promise<IndexManifest>;
@@ -123,16 +123,36 @@ const hashIndexedFile = async (repoPath, relativePath) => [
123
123
  relativePath,
124
124
  await hashFile(path.join(repoPath, relativePath))
125
125
  ];
126
+ export const INDEX_SCHEMA_VERSION = 2;
127
+ const resolveEmbeddingMetadata = (embeddingProvider) => {
128
+ if (typeof embeddingProvider === "string") {
129
+ return {
130
+ provider: embeddingProvider,
131
+ model: embeddingProvider,
132
+ dimensions: 256
133
+ };
134
+ }
135
+ return {
136
+ provider: embeddingProvider.name,
137
+ model: embeddingProvider.model,
138
+ dimensions: embeddingProvider.dimensions
139
+ };
140
+ };
126
141
  /**
127
142
  * Builds the manifest used for incremental reindex decisions.
128
143
  */
129
- export const buildIndexManifest = async (repoPath, snapshot, documents) => {
144
+ export const buildIndexManifest = async (repoPath, snapshot, documents, embeddingProvider = "local-hash") => {
130
145
  const uniquePaths = [...new Set(Object.values(documents).map((document) => document.filePath))];
131
146
  const fileHashes = Object.fromEntries(await Promise.all(uniquePaths.map((relativePath) => hashIndexedFile(repoPath, relativePath))));
147
+ const embeddingMetadata = resolveEmbeddingMetadata(embeddingProvider);
132
148
  return {
149
+ schemaVersion: INDEX_SCHEMA_VERSION,
133
150
  generatedAt: new Date().toISOString(),
134
151
  repoPath: snapshot.repoPath,
135
152
  provider: snapshot.provider,
153
+ embeddingProvider: embeddingMetadata.provider,
154
+ embeddingModel: embeddingMetadata.model,
155
+ embeddingDimensions: embeddingMetadata.dimensions,
136
156
  nodes: Object.fromEntries(Object.values(documents).map((document) => [
137
157
  document.nodeId,
138
158
  {
@@ -1 +1 @@
1
- {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/indexer/documents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/indexer/documents.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { EmbeddingProvider } from "../types.js";
2
2
  export declare class LocalHashEmbeddingProvider implements EmbeddingProvider {
3
3
  readonly name = "local-hash";
4
+ readonly model = "local-hash";
4
5
  readonly dimensions: number;
5
6
  constructor(dimensions?: number);
6
7
  embed(text: string): Promise<number[]>;
@@ -1,6 +1,7 @@
1
1
  import { embedTextDeterministically } from "../utils/text.js";
2
2
  export class LocalHashEmbeddingProvider {
3
3
  name = "local-hash";
4
+ model = "local-hash";
4
5
  dimensions;
5
6
  constructor(dimensions = 256) {
6
7
  this.dimensions = dimensions;
@@ -1 +1 @@
1
- {"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/indexer/embedder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,OAAO,0BAA0B;IAC5B,IAAI,GAAG,YAAY,CAAC;IACpB,UAAU,CAAS;IAE5B,YAAY,UAAU,GAAG,GAAG;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,OAAO,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;CACF"}
1
+ {"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/indexer/embedder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,OAAO,0BAA0B;IAC5B,IAAI,GAAG,YAAY,CAAC;IACpB,KAAK,GAAG,YAAY,CAAC;IACrB,UAAU,CAAS;IAE5B,YAAY,UAAU,GAAG,GAAG;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,OAAO,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import type { EmbeddingProvider } from "../types.js";
2
+ export interface GeminiEmbeddingConfig {
3
+ apiKey?: string;
4
+ model?: string;
5
+ timeoutMs?: number;
6
+ }
7
+ export declare class GeminiEmbeddingProvider implements EmbeddingProvider {
8
+ readonly name = "gemini";
9
+ readonly dimensions = 768;
10
+ readonly model: string;
11
+ private readonly apiKey;
12
+ private readonly timeoutMs;
13
+ constructor(config?: GeminiEmbeddingConfig);
14
+ embed(text: string): Promise<number[]>;
15
+ embedBatch(texts: string[]): Promise<number[][]>;
16
+ }
@@ -0,0 +1,100 @@
1
+ import { ConfigurationError } from "../errors/index.js";
2
+ const GEMINI_API_BASE = "https://generativelanguage.googleapis.com/v1beta";
3
+ const DEFAULT_MODEL = "models/gemini-embedding-2-preview";
4
+ export class GeminiEmbeddingProvider {
5
+ name = "gemini";
6
+ dimensions = 768;
7
+ model;
8
+ apiKey;
9
+ timeoutMs;
10
+ constructor(config) {
11
+ const key = config?.apiKey ?? process.env.CODERAG_GEMINI_API_KEY;
12
+ if (!key) {
13
+ throw new ConfigurationError("Gemini API key required. Set CODERAG_GEMINI_API_KEY environment variable or pass apiKey in config.");
14
+ }
15
+ this.apiKey = key;
16
+ this.model = config?.model ?? process.env.CODERAG_GEMINI_MODEL ?? DEFAULT_MODEL;
17
+ this.timeoutMs = config?.timeoutMs ?? 30000;
18
+ }
19
+ async embed(text) {
20
+ const url = `${GEMINI_API_BASE}/${this.model}:embedContent?key=${this.apiKey}`;
21
+ const controller = new AbortController();
22
+ const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
23
+ try {
24
+ const response = await fetch(url, {
25
+ method: "POST",
26
+ headers: {
27
+ "Content-Type": "application/json"
28
+ },
29
+ body: JSON.stringify({
30
+ content: {
31
+ parts: [{ text }]
32
+ }
33
+ }),
34
+ signal: controller.signal
35
+ });
36
+ clearTimeout(timeoutId);
37
+ if (!response.ok) {
38
+ const errorBody = await response.text();
39
+ throw new Error(`Gemini API error: ${response.status} ${response.statusText} - ${errorBody}`);
40
+ }
41
+ const data = (await response.json());
42
+ if (!data.embedding?.values) {
43
+ throw new Error("Invalid response from Gemini API: missing embedding values");
44
+ }
45
+ return data.embedding.values;
46
+ }
47
+ catch (error) {
48
+ clearTimeout(timeoutId);
49
+ if (error instanceof Error && error.name === "AbortError") {
50
+ throw new Error(`Gemini API request timed out after ${this.timeoutMs}ms`);
51
+ }
52
+ throw error;
53
+ }
54
+ }
55
+ async embedBatch(texts) {
56
+ if (texts.length === 0) {
57
+ return [];
58
+ }
59
+ if (texts.length > 250) {
60
+ throw new Error(`Batch size ${texts.length} exceeds Gemini API limit of 250. Split into smaller batches.`);
61
+ }
62
+ const url = `${GEMINI_API_BASE}/${this.model}:batchEmbedContents?key=${this.apiKey}`;
63
+ const controller = new AbortController();
64
+ const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
65
+ try {
66
+ const response = await fetch(url, {
67
+ method: "POST",
68
+ headers: {
69
+ "Content-Type": "application/json"
70
+ },
71
+ body: JSON.stringify({
72
+ requests: texts.map((text) => ({
73
+ content: {
74
+ parts: [{ text }]
75
+ }
76
+ }))
77
+ }),
78
+ signal: controller.signal
79
+ });
80
+ clearTimeout(timeoutId);
81
+ if (!response.ok) {
82
+ const errorBody = await response.text();
83
+ throw new Error(`Gemini API error: ${response.status} ${response.statusText} - ${errorBody}`);
84
+ }
85
+ const data = (await response.json());
86
+ if (!data.embeddings || data.embeddings.length !== texts.length) {
87
+ throw new Error("Invalid response from Gemini API: mismatched embedding count");
88
+ }
89
+ return data.embeddings.map((emb) => emb.values ?? []);
90
+ }
91
+ catch (error) {
92
+ clearTimeout(timeoutId);
93
+ if (error instanceof Error && error.name === "AbortError") {
94
+ throw new Error(`Gemini API request timed out after ${this.timeoutMs}ms`);
95
+ }
96
+ throw error;
97
+ }
98
+ }
99
+ }
100
+ //# sourceMappingURL=gemini-embedder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-embedder.js","sourceRoot":"","sources":["../../src/indexer/gemini-embedder.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,14 @@ export declare class RepoIndexer {
7
7
  private readonly manifestStore;
8
8
  private readonly indexLock;
9
9
  constructor(config: CodeRagConfig);
10
+ /**
11
+ * Checks if a full reindex is required based on embedding model/schema changes.
12
+ */
13
+ checkEmbeddingModelMismatch(): Promise<{
14
+ mismatch: boolean;
15
+ expected: string;
16
+ actual: string | null;
17
+ }>;
10
18
  loadState(): Promise<{
11
19
  manifest: IndexManifest | null;
12
20
  snapshot: GraphSnapshot | null;
@@ -18,5 +26,9 @@ export declare class RepoIndexer {
18
26
  snapshot: GraphSnapshot | null;
19
27
  documents: Record<string, IndexedNodeDocument>;
20
28
  }>;
29
+ reindex(options?: {
30
+ full?: boolean;
31
+ docsPath?: string;
32
+ }): Promise<IndexSummary>;
21
33
  index(forceFull?: boolean, docsPath?: string): Promise<IndexSummary>;
22
34
  }
@@ -3,7 +3,7 @@ import { buildGraphSnapshot } from "../adapters/codeflow-core.js";
3
3
  import { IndexingError } from "../errors/index.js";
4
4
  import { ManifestStore } from "../store/manifest-store.js";
5
5
  import { IndexLock } from "../store/index-lock.js";
6
- import { buildIndexManifest, buildIndexedDocuments } from "./documents.js";
6
+ import { buildIndexManifest, buildIndexedDocuments, INDEX_SCHEMA_VERSION } from "./documents.js";
7
7
  const diffNodeIds = (previousManifest, nextManifest) => {
8
8
  if (!previousManifest) {
9
9
  return {
@@ -31,6 +31,7 @@ const buildIndexSummary = (snapshot, manifest, documents) => ({
31
31
  snapshot,
32
32
  indexedNodeCount: Object.keys(documents).length
33
33
  });
34
+ const formatEmbeddingFingerprint = (embedding) => `${embedding.provider}:${embedding.model}:${embedding.dimensions}`;
34
35
  /**
35
36
  * Indexes the repository graph and persists the resulting search documents.
36
37
  */
@@ -43,6 +44,36 @@ export class RepoIndexer {
43
44
  this.manifestStore = new ManifestStore(config.storageRoot);
44
45
  this.indexLock = new IndexLock(config.storageRoot, config.locking, config.logger);
45
46
  }
47
+ /**
48
+ * Checks if a full reindex is required based on embedding model/schema changes.
49
+ */
50
+ async checkEmbeddingModelMismatch() {
51
+ const currentEmbedding = this.config.embeddingProvider;
52
+ if (!currentEmbedding) {
53
+ return { mismatch: false, expected: "unknown", actual: null };
54
+ }
55
+ const expectedFingerprint = {
56
+ provider: currentEmbedding.name,
57
+ model: currentEmbedding.model,
58
+ dimensions: currentEmbedding.dimensions
59
+ };
60
+ const expected = formatEmbeddingFingerprint(expectedFingerprint);
61
+ const manifest = await this.manifestStore.loadManifest();
62
+ if (!manifest) {
63
+ return { mismatch: false, expected, actual: null };
64
+ }
65
+ const actualFingerprint = {
66
+ provider: manifest.embeddingProvider,
67
+ model: manifest.embeddingModel,
68
+ dimensions: manifest.embeddingDimensions
69
+ };
70
+ const actual = formatEmbeddingFingerprint(actualFingerprint);
71
+ const mismatch = manifest.schemaVersion !== INDEX_SCHEMA_VERSION ||
72
+ actualFingerprint.provider !== expectedFingerprint.provider ||
73
+ actualFingerprint.model !== expectedFingerprint.model ||
74
+ actualFingerprint.dimensions !== expectedFingerprint.dimensions;
75
+ return { mismatch, expected, actual };
76
+ }
46
77
  async loadState() {
47
78
  const [manifest, snapshot, documents] = await Promise.all([
48
79
  this.manifestStore.loadManifest(),
@@ -62,6 +93,29 @@ export class RepoIndexer {
62
93
  ...(await this.loadState())
63
94
  };
64
95
  }
96
+ async reindex(options = {}) {
97
+ const full = options.full ?? false;
98
+ const { mismatch, expected, actual } = await this.checkEmbeddingModelMismatch();
99
+ if (full) {
100
+ this.config.logger?.info("Running full CodeRag reindex.", {
101
+ expected,
102
+ actual: actual ?? "none"
103
+ });
104
+ }
105
+ else if (mismatch) {
106
+ this.config.logger?.warn("Incremental reindex requires a matching embedding fingerprint.", {
107
+ expected,
108
+ actual: actual ?? "none"
109
+ });
110
+ }
111
+ else {
112
+ this.config.logger?.info("Running incremental CodeRag reindex.", {
113
+ expected,
114
+ actual: actual ?? "none"
115
+ });
116
+ }
117
+ return this.index(full, options.docsPath);
118
+ }
65
119
  async index(forceFull = false, docsPath) {
66
120
  const graphProvider = this.config.graphProvider;
67
121
  const embeddingProvider = this.config.embeddingProvider;
@@ -69,11 +123,16 @@ export class RepoIndexer {
69
123
  if (!graphProvider || !embeddingProvider || !vectorStore) {
70
124
  throw new IndexingError("CodeRag is missing required indexing dependencies.");
71
125
  }
126
+ // Check for embedding model mismatch - throws if mismatch detected
127
+ const { mismatch } = await this.checkEmbeddingModelMismatch();
128
+ if (mismatch && !forceFull) {
129
+ throw new IndexingError("Embedding model mismatch detected. Run 'coderag reindex' to rebuild the index with your current model.");
130
+ }
72
131
  return this.indexLock.withLock("index", async () => {
73
132
  const { manifest: previousManifest } = await this.loadState();
74
133
  const snapshot = await buildGraphSnapshot(this.config.repoPath, graphProvider);
75
134
  const documents = await buildIndexedDocuments(snapshot, embeddingProvider, docsPath);
76
- const manifest = await buildIndexManifest(this.config.repoPath, snapshot, documents);
135
+ const manifest = await buildIndexManifest(this.config.repoPath, snapshot, documents, embeddingProvider);
77
136
  const { removedNodeIds, changedNodeIds } = diffNodeIds(previousManifest, manifest);
78
137
  try {
79
138
  if (forceFull || !previousManifest) {
@@ -94,7 +153,14 @@ export class RepoIndexer {
94
153
  await Promise.all([
95
154
  this.manifestStore.saveManifest(manifest),
96
155
  this.manifestStore.saveSnapshot(snapshot),
97
- this.manifestStore.saveDocuments(documents)
156
+ this.manifestStore.saveDocuments(documents),
157
+ vectorStore.setMetadata({
158
+ schemaVersion: manifest.schemaVersion,
159
+ embeddingProvider: manifest.embeddingProvider,
160
+ embeddingModel: manifest.embeddingModel,
161
+ embeddingDimensions: manifest.embeddingDimensions,
162
+ generatedAt: manifest.generatedAt
163
+ })
98
164
  ]);
99
165
  this.config.logger?.info("Indexed repository", {
100
166
  repoPath: path.resolve(this.config.repoPath),
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/indexer/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE3E,MAAM,WAAW,GAAG,CAClB,gBAAsC,EACtC,YAA2B,EAI3B,EAAE;IACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO;YACL,cAAc,EAAE,EAAE;YAClB,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACjF,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;SACtD,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;QAC1B,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,aAAa,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC;IAChH,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO;QACL,cAAc;QACd,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACxB,QAAuB,EACvB,QAAuB,EACvB,SAA8C,EAChC,EAAE,CAAC,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC,KAAK;IACrB,QAAQ;IACR,QAAQ;IACR,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM;CAChD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,OAAO,WAAW;IAIO;IAHZ,aAAa,CAAgB;IAC7B,SAAS,CAAY;IAEtC,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,SAAS;QAKb,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACxD,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;YACjC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;YACjC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;SACnC,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ;YACR,QAAQ;YACR,SAAS;SACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB;QAMxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QACrD,OAAO;YACL,MAAM;YACN,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;SAC5B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,EAAE,QAAiB;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAE5C,IAAI,CAAC,aAAa,IAAI,CAAC,iBAAiB,IAAI,CAAC,WAAW,EAAE,CAAC;YACzD,MAAM,IAAI,aAAa,CAAC,oDAAoD,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC/E,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YACrF,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACrF,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEnF,IAAI,CAAC;gBACH,IAAI,SAAS,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACnC,MAAM,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,MAAM,WAAW,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;oBAClD,MAAM,WAAW,CAAC,MAAM,CACtB,cAAc;yBACX,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;yBAClC,MAAM,CAAC,CAAC,QAAQ,EAAmC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAC5E,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,aAAa,CAAC,0DAA0D,EAAE;oBAClF,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;iBAC/B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACvB,CAAC;YAED,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC;aAC5C,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE;gBAC7C,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC5C,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM;gBAC/C,WAAW,EAAE,SAAS,IAAI,CAAC,gBAAgB;aAC5C,CAAC,CAAC;YAEH,OAAO,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/indexer/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEjG,MAAM,WAAW,GAAG,CAClB,gBAAsC,EACtC,YAA2B,EAI3B,EAAE;IACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO;YACL,cAAc,EAAE,EAAE;YAClB,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACjF,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;SACtD,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;QAC1B,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,aAAa,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC;IAChH,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO;QACL,cAAc;QACd,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACxB,QAAuB,EACvB,QAAuB,EACvB,SAA8C,EAChC,EAAE,CAAC,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC,KAAK;IACrB,QAAQ;IACR,QAAQ;IACR,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM;CAChD,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,CAAC,SAInC,EAAU,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;AAEjF;;GAEG;AACH,MAAM,OAAO,WAAW;IAIO;IAHZ,aAAa,CAAgB;IAC7B,SAAS,CAAY;IAEtC,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B;QAC/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAChE,CAAC;QAED,MAAM,mBAAmB,GAAG;YAC1B,QAAQ,EAAE,gBAAgB,CAAC,IAAI;YAC/B,KAAK,EAAE,gBAAgB,CAAC,KAAK;YAC7B,UAAU,EAAE,gBAAgB,CAAC,UAAU;SACxC,CAAC;QACF,MAAM,QAAQ,GAAG,0BAA0B,CAAC,mBAAmB,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QAEzD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACrD,CAAC;QAED,MAAM,iBAAiB,GAAG;YACxB,QAAQ,EAAE,QAAQ,CAAC,iBAAiB;YACpC,KAAK,EAAE,QAAQ,CAAC,cAAc;YAC9B,UAAU,EAAE,QAAQ,CAAC,mBAAmB;SACzC,CAAC;QACF,MAAM,MAAM,GAAG,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;QAC7D,MAAM,QAAQ,GACZ,QAAQ,CAAC,aAAa,KAAK,oBAAoB;YAC/C,iBAAiB,CAAC,QAAQ,KAAK,mBAAmB,CAAC,QAAQ;YAC3D,iBAAiB,CAAC,KAAK,KAAK,mBAAmB,CAAC,KAAK;YACrD,iBAAiB,CAAC,UAAU,KAAK,mBAAmB,CAAC,UAAU,CAAC;QAElE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,SAAS;QAKb,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACxD,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;YACjC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;YACjC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;SACnC,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ;YACR,QAAQ;YACR,SAAS;SACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB;QAMxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QACrD,OAAO;YACL,MAAM;YACN,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;SAC5B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAiD,EAAE;QAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;QACnC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEhF,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,+BAA+B,EAAE;gBACxD,QAAQ;gBACR,MAAM,EAAE,MAAM,IAAI,MAAM;aACzB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gEAAgE,EAAE;gBACzF,QAAQ;gBACR,MAAM,EAAE,MAAM,IAAI,MAAM;aACzB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,sCAAsC,EAAE;gBAC/D,QAAQ;gBACR,MAAM,EAAE,MAAM,IAAI,MAAM;aACzB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,EAAE,QAAiB;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAE5C,IAAI,CAAC,aAAa,IAAI,CAAC,iBAAiB,IAAI,CAAC,WAAW,EAAE,CAAC;YACzD,MAAM,IAAI,aAAa,CAAC,oDAAoD,CAAC,CAAC;QAChF,CAAC;QAED,mEAAmE;QACnE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAC9D,IAAI,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,aAAa,CACrB,wGAAwG,CACzG,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC/E,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YACrF,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;YACxG,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEnF,IAAI,CAAC;gBACH,IAAI,SAAS,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACnC,MAAM,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,MAAM,WAAW,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;oBAClD,MAAM,WAAW,CAAC,MAAM,CACtB,cAAc;yBACX,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;yBAClC,MAAM,CAAC,CAAC,QAAQ,EAAmC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAC5E,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,aAAa,CAAC,0DAA0D,EAAE;oBAClF,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;iBAC/B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACvB,CAAC;YAED,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC;gBAC3C,WAAW,CAAC,WAAW,CAAC;oBACtB,aAAa,EAAE,QAAQ,CAAC,aAAa;oBACrC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;oBAC7C,cAAc,EAAE,QAAQ,CAAC,cAAc;oBACvC,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;oBACjD,WAAW,EAAE,QAAQ,CAAC,WAAW;iBAClC,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE;gBAC7C,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC5C,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM;gBAC/C,WAAW,EAAE,SAAS,IAAI,CAAC,gBAAgB;aAC5C,CAAC,CAAC;YAEH,OAAO,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -9,7 +9,7 @@ const DEPTH_SCHEMA = z.number().int().min(0).optional();
9
9
  export const createMcpServer = (coderag) => {
10
10
  const server = new McpServer({
11
11
  name: "coderag",
12
- version: "0.1.0"
12
+ version: "0.2.1"
13
13
  });
14
14
  server.registerTool("query", {
15
15
  title: "Query repository",
@@ -11,7 +11,7 @@ export declare class CodeRag {
11
11
  private loadedState?;
12
12
  constructor(config: CodeRagConfig);
13
13
  private hydrateState;
14
- private runIndex;
14
+ private runIndexJob;
15
15
  private ensureLoadedState;
16
16
  private findNodeOrThrow;
17
17
  /**
@@ -35,10 +35,9 @@ export class CodeRag {
35
35
  this.loadedState = state;
36
36
  return state;
37
37
  }
38
- async runIndex(forceFull, docsPath) {
38
+ async runIndexJob(indexOperation) {
39
39
  if (!this.activeIndexPromise) {
40
- this.activeIndexPromise = this.indexer
41
- .index(forceFull, docsPath)
40
+ this.activeIndexPromise = indexOperation()
42
41
  .then(async (summary) => {
43
42
  const documents = await this.manifestStore.loadDocuments();
44
43
  this.hydrateState(summary.snapshot, documents);
@@ -62,7 +61,7 @@ export class CodeRag {
62
61
  if (isStateLoaded(waitedState.snapshot, waitedState.documents)) {
63
62
  return this.hydrateState(waitedState.snapshot, waitedState.documents);
64
63
  }
65
- await this.runIndex(false);
64
+ await this.runIndexJob(() => this.indexer.index(false));
66
65
  return this.loadedState;
67
66
  }
68
67
  findNodeOrThrow(identifier, snapshot) {
@@ -86,7 +85,7 @@ export class CodeRag {
86
85
  * and uses their content as the embedding text instead of generating thin markdown.
87
86
  */
88
87
  async index(options) {
89
- return this.runIndex(true, options?.docsPath);
88
+ return this.runIndexJob(() => this.indexer.index(true, options?.docsPath));
90
89
  }
91
90
  /**
92
91
  * Reindexes the repository, incrementally by default.
@@ -94,13 +93,20 @@ export class CodeRag {
94
93
  * and uses their content as the embedding text instead of generating thin markdown.
95
94
  */
96
95
  async reindex(options) {
97
- return this.runIndex(Boolean(options?.full), options?.docsPath);
96
+ return this.runIndexJob(() => this.indexer.reindex({
97
+ full: options?.full ?? false,
98
+ docsPath: options?.docsPath
99
+ }));
98
100
  }
99
101
  /**
100
102
  * Returns the current repository and runtime status.
101
103
  */
102
104
  async status() {
103
105
  const state = await this.indexer.loadState();
106
+ const { mismatch, expected, actual } = await this.indexer.checkEmbeddingModelMismatch();
107
+ const embeddingProvider = state.manifest?.embeddingProvider ?? this.config.embeddingProvider?.name ?? "unknown";
108
+ const embeddingModel = state.manifest?.embeddingModel ?? this.config.embeddingProvider?.model ?? "unknown";
109
+ const embeddingDimensions = state.manifest?.embeddingDimensions ?? this.config.embeddingProvider?.dimensions ?? 0;
104
110
  return {
105
111
  indexed: Boolean(state.snapshot),
106
112
  indexedNodeCount: Object.keys(state.documents).length,
@@ -108,7 +114,14 @@ export class CodeRag {
108
114
  repoPath: this.config.repoPath,
109
115
  storageRoot: this.config.storageRoot,
110
116
  provider: state.snapshot?.provider ?? this.config.graphProvider?.name ?? null,
111
- llmEnabled: this.config.llm.enabled
117
+ llmEnabled: this.config.llm.enabled,
118
+ embeddingProvider,
119
+ embeddingModel,
120
+ embeddingDimensions,
121
+ indexSchemaVersion: state.manifest?.schemaVersion ?? 0,
122
+ modelMismatch: mismatch,
123
+ expectedEmbedding: expected,
124
+ actualEmbedding: actual
112
125
  };
113
126
  }
114
127
  /**