opencode-rag-plugin 1.12.16 → 1.14.6
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 +15 -13
- package/dist/api.d.ts +54 -2
- package/dist/api.js +41 -1
- package/dist/api.js.map +1 -1
- package/dist/chunker/base.js +2 -0
- package/dist/chunker/base.js.map +1 -1
- package/dist/chunker/bash.d.ts +5 -0
- package/dist/chunker/bash.js +5 -0
- package/dist/chunker/bash.js.map +1 -1
- package/dist/chunker/c.d.ts +6 -0
- package/dist/chunker/c.js +6 -0
- package/dist/chunker/c.js.map +1 -1
- package/dist/chunker/cpp.d.ts +6 -0
- package/dist/chunker/cpp.js +6 -0
- package/dist/chunker/cpp.js.map +1 -1
- package/dist/chunker/csharp.d.ts +6 -0
- package/dist/chunker/csharp.js +6 -0
- package/dist/chunker/csharp.js.map +1 -1
- package/dist/chunker/css.d.ts +6 -0
- package/dist/chunker/css.js +6 -0
- package/dist/chunker/css.js.map +1 -1
- package/dist/chunker/doc.d.ts +18 -0
- package/dist/chunker/doc.js +18 -0
- package/dist/chunker/doc.js.map +1 -1
- package/dist/chunker/dockerfile.d.ts +6 -0
- package/dist/chunker/dockerfile.js +6 -0
- package/dist/chunker/dockerfile.js.map +1 -1
- package/dist/chunker/docx.d.ts +18 -0
- package/dist/chunker/docx.js +18 -0
- package/dist/chunker/docx.js.map +1 -1
- package/dist/chunker/excel.d.ts +19 -0
- package/dist/chunker/excel.js +19 -0
- package/dist/chunker/excel.js.map +1 -1
- package/dist/chunker/go.d.ts +5 -0
- package/dist/chunker/go.js +5 -0
- package/dist/chunker/go.js.map +1 -1
- package/dist/chunker/grammar.d.ts +62 -0
- package/dist/chunker/grammar.js +133 -0
- package/dist/chunker/grammar.js.map +1 -1
- package/dist/chunker/html.d.ts +5 -0
- package/dist/chunker/html.js +5 -0
- package/dist/chunker/html.js.map +1 -1
- package/dist/chunker/image.d.ts +31 -0
- package/dist/chunker/image.js +50 -4
- package/dist/chunker/image.js.map +1 -1
- package/dist/chunker/ini.d.ts +5 -0
- package/dist/chunker/ini.js +5 -0
- package/dist/chunker/ini.js.map +1 -1
- package/dist/chunker/java.d.ts +5 -0
- package/dist/chunker/java.js +5 -0
- package/dist/chunker/java.js.map +1 -1
- package/dist/chunker/javascript.d.ts +6 -0
- package/dist/chunker/javascript.js +6 -0
- package/dist/chunker/javascript.js.map +1 -1
- package/dist/chunker/json.d.ts +5 -0
- package/dist/chunker/json.js +5 -0
- package/dist/chunker/json.js.map +1 -1
- package/dist/chunker/kotlin.d.ts +6 -0
- package/dist/chunker/kotlin.js +6 -0
- package/dist/chunker/kotlin.js.map +1 -1
- package/dist/chunker/loader.d.ts +11 -0
- package/dist/chunker/loader.js +20 -0
- package/dist/chunker/loader.js.map +1 -1
- package/dist/chunker/markdown.d.ts +5 -0
- package/dist/chunker/markdown.js +5 -0
- package/dist/chunker/markdown.js.map +1 -1
- package/dist/chunker/pdf.d.ts +19 -0
- package/dist/chunker/pdf.js +30 -0
- package/dist/chunker/pdf.js.map +1 -1
- package/dist/chunker/php.d.ts +5 -0
- package/dist/chunker/php.js +5 -0
- package/dist/chunker/php.js.map +1 -1
- package/dist/chunker/powershell.d.ts +5 -0
- package/dist/chunker/powershell.js +5 -0
- package/dist/chunker/powershell.js.map +1 -1
- package/dist/chunker/python.d.ts +5 -0
- package/dist/chunker/python.js +5 -0
- package/dist/chunker/python.js.map +1 -1
- package/dist/chunker/razor.d.ts +12 -0
- package/dist/chunker/razor.js +25 -0
- package/dist/chunker/razor.js.map +1 -1
- package/dist/chunker/ruby.d.ts +5 -0
- package/dist/chunker/ruby.js +5 -0
- package/dist/chunker/ruby.js.map +1 -1
- package/dist/chunker/rust.d.ts +6 -0
- package/dist/chunker/rust.js +6 -0
- package/dist/chunker/rust.js.map +1 -1
- package/dist/chunker/sln.d.ts +11 -0
- package/dist/chunker/sln.js +11 -0
- package/dist/chunker/sln.js.map +1 -1
- package/dist/chunker/sql.d.ts +5 -0
- package/dist/chunker/sql.js +5 -0
- package/dist/chunker/sql.js.map +1 -1
- package/dist/chunker/ssl.d.ts +12 -0
- package/dist/chunker/ssl.js +21 -2
- package/dist/chunker/ssl.js.map +1 -1
- package/dist/chunker/swift.d.ts +5 -0
- package/dist/chunker/swift.js +5 -0
- package/dist/chunker/swift.js.map +1 -1
- package/dist/chunker/tex.d.ts +12 -0
- package/dist/chunker/tex.js +12 -0
- package/dist/chunker/tex.js.map +1 -1
- package/dist/chunker/toml.d.ts +5 -0
- package/dist/chunker/toml.js +5 -0
- package/dist/chunker/toml.js.map +1 -1
- package/dist/chunker/typescript.d.ts +6 -0
- package/dist/chunker/typescript.js +6 -0
- package/dist/chunker/typescript.js.map +1 -1
- package/dist/chunker/xml.d.ts +5 -0
- package/dist/chunker/xml.js +5 -0
- package/dist/chunker/xml.js.map +1 -1
- package/dist/chunker/yaml.d.ts +5 -0
- package/dist/chunker/yaml.js +5 -0
- package/dist/chunker/yaml.js.map +1 -1
- package/dist/cli/commands/clear.d.ts +12 -0
- package/dist/cli/commands/clear.js +81 -0
- package/dist/cli/commands/clear.js.map +1 -0
- package/dist/cli/commands/describe-image.d.ts +14 -0
- package/dist/cli/commands/describe-image.js +68 -0
- package/dist/cli/commands/describe-image.js.map +1 -0
- package/dist/cli/commands/dump.d.ts +13 -0
- package/dist/cli/commands/dump.js +55 -0
- package/dist/cli/commands/dump.js.map +1 -0
- package/dist/cli/commands/eval.d.ts +32 -0
- package/dist/cli/commands/eval.js +158 -0
- package/dist/cli/commands/eval.js.map +1 -0
- package/dist/cli/commands/index-command.d.ts +17 -0
- package/dist/cli/commands/index-command.js +167 -0
- package/dist/cli/commands/index-command.js.map +1 -0
- package/dist/cli/commands/index.d.ts +16 -0
- package/dist/cli/commands/index.js +17 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init-helpers.d.ts +101 -0
- package/dist/cli/commands/init-helpers.js +397 -0
- package/dist/cli/commands/init-helpers.js.map +1 -0
- package/dist/cli/commands/init.d.ts +19 -0
- package/dist/cli/commands/init.js +251 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list.d.ts +13 -0
- package/dist/cli/commands/list.js +46 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +14 -0
- package/dist/cli/commands/mcp.js +35 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/query.d.ts +14 -0
- package/dist/cli/commands/query.js +86 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/show.d.ts +13 -0
- package/dist/cli/commands/show.js +51 -0
- package/dist/cli/commands/show.js.map +1 -0
- package/dist/cli/commands/status.d.ts +14 -0
- package/dist/cli/commands/status.js +104 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/ui.d.ts +14 -0
- package/dist/cli/commands/ui.js +69 -0
- package/dist/cli/commands/ui.js.map +1 -0
- package/dist/cli/commands/update.d.ts +14 -0
- package/dist/cli/commands/update.js +76 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/format.d.ts +112 -0
- package/dist/cli/format.js +184 -0
- package/dist/cli/format.js.map +1 -0
- package/dist/cli/helpers.d.ts +51 -0
- package/dist/cli/helpers.js +86 -0
- package/dist/cli/helpers.js.map +1 -0
- package/dist/cli/index.d.ts +28 -0
- package/dist/cli/index.js +104 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/progress.d.ts +39 -0
- package/dist/cli/progress.js +137 -0
- package/dist/cli/progress.js.map +1 -0
- package/dist/cli/types.d.ts +40 -0
- package/dist/cli/types.js +3 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli.d.ts +11 -4
- package/dist/cli.js +9 -1235
- package/dist/cli.js.map +1 -1
- package/dist/content/doc.d.ts +1 -1
- package/dist/content/doc.js +1 -1
- package/dist/content/doc.js.map +1 -1
- package/dist/content/docx.d.ts +1 -1
- package/dist/content/docx.js +1 -1
- package/dist/content/docx.js.map +1 -1
- package/dist/content/excel.d.ts +1 -1
- package/dist/content/excel.js +1 -1
- package/dist/content/excel.js.map +1 -1
- package/dist/content/pdf.d.ts +1 -1
- package/dist/content/pdf.js +1 -1
- package/dist/content/pdf.js.map +1 -1
- package/dist/content/reader.d.ts +3 -1
- package/dist/content/reader.js +42 -10
- package/dist/content/reader.js.map +1 -1
- package/dist/core/bootstrap.d.ts +18 -0
- package/dist/core/bootstrap.js +9 -15
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/core/config.d.ts +144 -0
- package/dist/core/config.js +65 -14
- package/dist/core/config.js.map +1 -1
- package/dist/core/doc-progress.d.ts +15 -0
- package/dist/core/doc-progress.js +61 -0
- package/dist/core/doc-progress.js.map +1 -0
- package/dist/core/fileLogger.d.ts +7 -0
- package/dist/core/fileLogger.js +2 -0
- package/dist/core/fileLogger.js.map +1 -1
- package/dist/core/interfaces.d.ts +53 -1
- package/dist/core/manifest.d.ts +25 -0
- package/dist/core/manifest.js +15 -1
- package/dist/core/manifest.js.map +1 -1
- package/dist/core/provider-defaults.d.ts +8 -0
- package/dist/core/provider-defaults.js +3 -0
- package/dist/core/provider-defaults.js.map +1 -1
- package/dist/core/rag-injection-flag.d.ts +3 -0
- package/dist/core/rag-injection-flag.js +2 -0
- package/dist/core/rag-injection-flag.js.map +1 -1
- package/dist/core/resolve-api-key.d.ts +1 -0
- package/dist/core/resolve-api-key.js +1 -0
- package/dist/core/resolve-api-key.js.map +1 -1
- package/dist/core/runtime-overrides.d.ts +4 -0
- package/dist/core/runtime-overrides.js +4 -1
- package/dist/core/runtime-overrides.js.map +1 -1
- package/dist/describer/anthropic.d.ts +22 -2
- package/dist/describer/anthropic.js +42 -110
- package/dist/describer/anthropic.js.map +1 -1
- package/dist/describer/describer.d.ts +21 -4
- package/dist/describer/describer.js +52 -111
- package/dist/describer/describer.js.map +1 -1
- package/dist/describer/gemini.d.ts +1 -2
- package/dist/describer/gemini.js +20 -113
- package/dist/describer/gemini.js.map +1 -1
- package/dist/describer/shared.d.ts +3 -0
- package/dist/describer/shared.js +19 -0
- package/dist/describer/shared.js.map +1 -0
- package/dist/embedder/factory.d.ts +25 -0
- package/dist/embedder/factory.js +25 -0
- package/dist/embedder/factory.js.map +1 -1
- package/dist/embedder/health.d.ts +10 -0
- package/dist/embedder/health.js +26 -14
- package/dist/embedder/health.js.map +1 -1
- package/dist/embedder/http.d.ts +47 -0
- package/dist/embedder/http.js +61 -3
- package/dist/embedder/http.js.map +1 -1
- package/dist/eval/index.d.ts +6 -0
- package/dist/eval/index.js.map +1 -1
- package/dist/eval/run-token-test.js +1 -5
- package/dist/eval/run-token-test.js.map +1 -1
- package/dist/eval/session-logger.d.ts +5 -0
- package/dist/eval/session-logger.js +4 -0
- package/dist/eval/session-logger.js.map +1 -1
- package/dist/eval/storage.d.ts +9 -0
- package/dist/eval/storage.js +9 -5
- package/dist/eval/storage.js.map +1 -1
- package/dist/eval/token-analysis.d.ts +8 -0
- package/dist/eval/token-analysis.js +6 -2
- package/dist/eval/token-analysis.js.map +1 -1
- package/dist/eval/token-counter.d.ts +1 -3
- package/dist/eval/token-counter.js +4 -5
- package/dist/eval/token-counter.js.map +1 -1
- package/dist/eval/types.d.ts +6 -0
- package/dist/eval/types.js +2 -0
- package/dist/eval/types.js.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/dist/indexer/description-stage.js +11 -2
- package/dist/indexer/description-stage.js.map +1 -1
- package/dist/indexer/embed-stage.js +0 -8
- package/dist/indexer/embed-stage.js.map +1 -1
- package/dist/indexer/pipeline.d.ts +27 -3
- package/dist/indexer/pipeline.js +314 -143
- package/dist/indexer/pipeline.js.map +1 -1
- package/dist/indexer/stats.d.ts +35 -0
- package/dist/indexer/stats.js +9 -0
- package/dist/indexer/stats.js.map +1 -1
- package/dist/indexer/watch.d.ts +25 -0
- package/dist/indexer/watch.js +21 -0
- package/dist/indexer/watch.js.map +1 -1
- package/dist/indexer/worker.d.ts +90 -2
- package/dist/indexer/worker.js +109 -24
- package/dist/indexer/worker.js.map +1 -1
- package/dist/indexer.d.ts +11 -1
- package/dist/indexer.js +9 -0
- package/dist/indexer.js.map +1 -1
- package/dist/mcp/cli.d.ts +3 -0
- package/dist/mcp/cli.js +1 -0
- package/dist/mcp/cli.js.map +1 -1
- package/dist/mcp/handlers.d.ts +41 -0
- package/dist/mcp/handlers.js +40 -1
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/server.d.ts +8 -0
- package/dist/mcp/server.js +18 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/opencode/create-read-tool.js +1 -0
- package/dist/opencode/create-read-tool.js.map +1 -1
- package/dist/opencode/tools.d.ts +8 -17
- package/dist/opencode/tools.js +74 -109
- package/dist/opencode/tools.js.map +1 -1
- package/dist/plugin-entry.d.ts +6 -0
- package/dist/plugin-entry.js +6 -0
- package/dist/plugin-entry.js.map +1 -1
- package/dist/plugin.d.ts +37 -0
- package/dist/plugin.js +265 -40
- package/dist/plugin.js.map +1 -1
- package/dist/retriever/keyword-index.js +9 -9
- package/dist/retriever/keyword-index.js.map +1 -1
- package/dist/retriever/retriever.js +14 -4
- package/dist/retriever/retriever.js.map +1 -1
- package/dist/tui.d.ts +5 -0
- package/dist/tui.js +100 -12
- package/dist/tui.js.map +1 -1
- package/dist/types/opencode-plugin.d.ts +4 -1
- package/dist/updater.d.ts +23 -1
- package/dist/updater.js +55 -16
- package/dist/updater.js.map +1 -1
- package/dist/vectorstore/factory.d.ts +13 -0
- package/dist/vectorstore/factory.js +13 -0
- package/dist/vectorstore/factory.js.map +1 -1
- package/dist/vectorstore/lancedb.d.ts +79 -1
- package/dist/vectorstore/lancedb.js +201 -21
- package/dist/vectorstore/lancedb.js.map +1 -1
- package/dist/vectorstore/memory.d.ts +6 -0
- package/dist/vectorstore/memory.js +13 -0
- package/dist/vectorstore/memory.js.map +1 -1
- package/dist/watcher.d.ts +24 -0
- package/dist/watcher.js +17 -35
- package/dist/watcher.js.map +1 -1
- package/dist/web/api.d.ts +37 -0
- package/dist/web/api.js +54 -0
- package/dist/web/api.js.map +1 -1
- package/dist/web/server.d.ts +15 -0
- package/dist/web/server.js +14 -0
- package/dist/web/server.js.map +1 -1
- package/dist/web/static.d.ts +8 -0
- package/dist/web/static.js +8 -0
- package/dist/web/static.js.map +1 -1
- package/package.json +11 -15
|
@@ -2,8 +2,12 @@ import * as lancedb from "@lancedb/lancedb";
|
|
|
2
2
|
import fs from "node:fs/promises";
|
|
3
3
|
import { normalizeFilePath, manifestPathFor } from "../core/manifest.js";
|
|
4
4
|
const TABLE_NAME = "chunks";
|
|
5
|
-
const VECTOR_COLUMN = "embedding";
|
|
6
5
|
const QUERY_COLUMNS = ["id", "content", "description", "filePath", "startLine", "endLine", "language"];
|
|
6
|
+
/**
|
|
7
|
+
* Check whether an error is a LanceDB corruption error (table not found / broken).
|
|
8
|
+
* @param err - The error to inspect.
|
|
9
|
+
* @returns True if the error matches a known corruption pattern.
|
|
10
|
+
*/
|
|
7
11
|
export function isCorruptionError(err) {
|
|
8
12
|
if (err instanceof Error) {
|
|
9
13
|
return (err.message.includes("Not found") &&
|
|
@@ -12,12 +16,53 @@ export function isCorruptionError(err) {
|
|
|
12
16
|
}
|
|
13
17
|
return false;
|
|
14
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Atomically replace one LanceDB store directory with another.
|
|
21
|
+
* Swaps the real directory with a temporary one that was built during a rebuild.
|
|
22
|
+
* The old directory is moved to `${realPath}_old` and deleted asynchronously.
|
|
23
|
+
*
|
|
24
|
+
* @param tempPath - Path to the newly built store (source).
|
|
25
|
+
* @param realPath - Path to the current store (destination, will be replaced).
|
|
26
|
+
*/
|
|
27
|
+
export async function swapStoreDirectories(tempPath, realPath) {
|
|
28
|
+
const oldPath = `${realPath}_old`;
|
|
29
|
+
// Move current real → old (so we can recover if the rename fails)
|
|
30
|
+
try {
|
|
31
|
+
await fs.rename(realPath, oldPath);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// realPath may not exist yet (first-time build)
|
|
35
|
+
}
|
|
36
|
+
// Move temp → real
|
|
37
|
+
try {
|
|
38
|
+
await fs.rename(tempPath, realPath);
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
// Rename failed — try to restore old back
|
|
42
|
+
try {
|
|
43
|
+
await fs.rename(oldPath, realPath);
|
|
44
|
+
}
|
|
45
|
+
catch { }
|
|
46
|
+
throw err;
|
|
47
|
+
}
|
|
48
|
+
// Best-effort async cleanup of old directory
|
|
49
|
+
fs.rm(oldPath, { recursive: true, force: true }).catch(() => { });
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A LanceDB-backed vector store with persistent on-disk storage, vector search,
|
|
53
|
+
* and chunk metadata queries. Supports automatic corruption recovery by falling
|
|
54
|
+
* back to prior table versions or dropping and rebuilding the table.
|
|
55
|
+
*/
|
|
15
56
|
export class LanceDBStore {
|
|
16
57
|
dbPath;
|
|
17
58
|
vectorDimension;
|
|
18
59
|
db = null;
|
|
19
60
|
table = null;
|
|
20
61
|
tableInit = null;
|
|
62
|
+
/**
|
|
63
|
+
* @param dbPath - Filesystem path to the LanceDB database directory.
|
|
64
|
+
* @param vectorDimension - Dimension of the embedding vectors. Default: 384.
|
|
65
|
+
*/
|
|
21
66
|
constructor(dbPath, vectorDimension = 384) {
|
|
22
67
|
this.dbPath = dbPath;
|
|
23
68
|
this.vectorDimension = vectorDimension;
|
|
@@ -49,10 +94,22 @@ export class LanceDBStore {
|
|
|
49
94
|
if (await this.tableHasDescriptionColumn()) {
|
|
50
95
|
return this.table;
|
|
51
96
|
}
|
|
97
|
+
// Schema missing 'description' column -- try to add it gracefully first.
|
|
98
|
+
try {
|
|
99
|
+
await this.table.addColumns([{ name: "description", valueSql: "''" }]);
|
|
100
|
+
console.warn("[lancedb] Added missing 'description' column to existing table.");
|
|
101
|
+
return this.table;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
console.warn("[lancedb] Could not auto-add missing 'description' column. " +
|
|
105
|
+
"Run 'opencode-rag index --force' to rebuild the index with the correct schema.");
|
|
106
|
+
// Fall through to drop + recreate below
|
|
107
|
+
}
|
|
52
108
|
try {
|
|
53
109
|
const oldCount = await this.table.countRows();
|
|
54
110
|
if (oldCount > 0) {
|
|
55
|
-
console.
|
|
111
|
+
console.warn(`[lancedb] Dropping table with ${oldCount} rows — schema missing 'description' column. ` +
|
|
112
|
+
`Clearing manifest so index will rebuild.`);
|
|
56
113
|
try {
|
|
57
114
|
const manifestPath = manifestPathFor(this.dbPath);
|
|
58
115
|
await fs.unlink(manifestPath).catch(() => { });
|
|
@@ -83,7 +140,14 @@ export class LanceDBStore {
|
|
|
83
140
|
data: [seedRow],
|
|
84
141
|
mode: "overwrite",
|
|
85
142
|
});
|
|
86
|
-
await this.table.delete('id = "__seed__"');
|
|
143
|
+
const deleted = await this.table.delete('id = "__seed__"');
|
|
144
|
+
if (deleted === undefined) {
|
|
145
|
+
// LanceDB may not return a count; try a direct query to verify
|
|
146
|
+
const leftover = await this.table.query().filter('id = "__seed__"').limit(1).toArray();
|
|
147
|
+
if (leftover.length > 0) {
|
|
148
|
+
console.warn("[lancedb] WARNING: seed row still present — filtering in search");
|
|
149
|
+
}
|
|
150
|
+
}
|
|
87
151
|
return this.table;
|
|
88
152
|
}
|
|
89
153
|
async tableHasDescriptionColumn() {
|
|
@@ -95,6 +159,13 @@ export class LanceDBStore {
|
|
|
95
159
|
return false;
|
|
96
160
|
}
|
|
97
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Store chunks in the LanceDB table. New rows are inserted first, then
|
|
164
|
+
* any old rows at the same (filePath, startLine) with different IDs are
|
|
165
|
+
* removed. This ensures no data is lost if the process aborts between
|
|
166
|
+
* insert and cleanup. Automatically attempts repair on corruption errors.
|
|
167
|
+
* @param chunks - The chunks to add.
|
|
168
|
+
*/
|
|
98
169
|
async addChunks(chunks) {
|
|
99
170
|
if (chunks.length === 0)
|
|
100
171
|
return;
|
|
@@ -125,14 +196,67 @@ export class LanceDBStore {
|
|
|
125
196
|
}));
|
|
126
197
|
if (rows.length === 0)
|
|
127
198
|
return;
|
|
199
|
+
// Build a map: (filePath, startLine) → set of new IDs for dedup after insert
|
|
200
|
+
const newIdsByLine = new Map();
|
|
201
|
+
for (const row of rows) {
|
|
202
|
+
const key = `${row.filePath}:${row.startLine}`;
|
|
203
|
+
const ids = newIdsByLine.get(key);
|
|
204
|
+
if (ids) {
|
|
205
|
+
ids.add(row.id);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
newIdsByLine.set(key, new Set([row.id]));
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// INSERT FIRST: data is safely stored before any delete
|
|
128
212
|
await table.add(rows);
|
|
213
|
+
// THEN DEDUP: remove old rows at the same (filePath, startLine) positions,
|
|
214
|
+
// but preserve the newly inserted rows by filtering out their IDs.
|
|
215
|
+
for (const [key, newIds] of newIdsByLine) {
|
|
216
|
+
const colonIdx = key.lastIndexOf(":");
|
|
217
|
+
const filePath = key.slice(0, colonIdx);
|
|
218
|
+
const startLine = parseInt(key.slice(colonIdx + 1), 10);
|
|
219
|
+
const escapedPath = filePath.replace(/'/g, "''");
|
|
220
|
+
for (const id of newIds) {
|
|
221
|
+
const escapedId = id.replace(/'/g, "''");
|
|
222
|
+
await table.delete(`filePath = '${escapedPath}' AND startLine = ${startLine} AND id != '${escapedId}'`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// FINALLY: remove stale chunks for the same file that belong to a
|
|
226
|
+
// previous revision (different startLines). Exclude the new inserts
|
|
227
|
+
// so an abort never orphans data.
|
|
228
|
+
const filePathsDone = new Set();
|
|
229
|
+
for (const [key] of newIdsByLine) {
|
|
230
|
+
const colonIdx = key.lastIndexOf(":");
|
|
231
|
+
const filePath = key.slice(0, colonIdx);
|
|
232
|
+
if (filePathsDone.has(filePath))
|
|
233
|
+
continue;
|
|
234
|
+
filePathsDone.add(filePath);
|
|
235
|
+
// Collect all new IDs inserted for this file
|
|
236
|
+
const fileNewIds = [];
|
|
237
|
+
for (const [k, ids] of newIdsByLine) {
|
|
238
|
+
if (k.startsWith(filePath + ":")) {
|
|
239
|
+
fileNewIds.push(...ids);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
const escapedPath = filePath.replace(/'/g, "''");
|
|
243
|
+
const idList = fileNewIds.map((id) => `'${id.replace(/'/g, "''")}'`).join(", ");
|
|
244
|
+
await table.delete(`filePath = '${escapedPath}' AND id NOT IN (${idList})`);
|
|
245
|
+
}
|
|
129
246
|
}
|
|
247
|
+
/**
|
|
248
|
+
* Perform ANN (approximate nearest neighbor) search using LanceDB's native vector index.
|
|
249
|
+
* Returns results scored as 1 / (1 + L2 distance). Falls back to repair on corruption.
|
|
250
|
+
* @param embedding - The query embedding vector.
|
|
251
|
+
* @param topK - Maximum number of results to return.
|
|
252
|
+
* @returns An array of search results sorted by descending score.
|
|
253
|
+
*/
|
|
130
254
|
async search(embedding, topK) {
|
|
131
255
|
try {
|
|
132
256
|
return await this.searchInternal(embedding, topK);
|
|
133
257
|
}
|
|
134
258
|
catch (err) {
|
|
135
|
-
if (
|
|
259
|
+
if (isCorruptionError(err)) {
|
|
136
260
|
const repaired = await this.tryRepair();
|
|
137
261
|
if (repaired) {
|
|
138
262
|
return this.searchInternal(embedding, topK);
|
|
@@ -157,12 +281,16 @@ export class LanceDBStore {
|
|
|
157
281
|
},
|
|
158
282
|
};
|
|
159
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* List all distinct file paths stored in the index, along with their language and chunk count.
|
|
286
|
+
* @returns An array of file summaries sorted by file path.
|
|
287
|
+
*/
|
|
160
288
|
async listFiles() {
|
|
161
289
|
const table = await this.getTable();
|
|
162
290
|
const count = await table.countRows();
|
|
163
291
|
if (count === 0)
|
|
164
292
|
return [];
|
|
165
|
-
const rows = await table.query().select(["filePath", "language"]).toArray();
|
|
293
|
+
const rows = await table.query().select(["filePath", "language"]).limit(count).toArray();
|
|
166
294
|
const fileMap = new Map();
|
|
167
295
|
for (const row of rows) {
|
|
168
296
|
const filePath = row.filePath;
|
|
@@ -179,6 +307,11 @@ export class LanceDBStore {
|
|
|
179
307
|
.map(([filePath, info]) => ({ filePath, ...info }))
|
|
180
308
|
.sort((a, b) => a.filePath.localeCompare(b.filePath));
|
|
181
309
|
}
|
|
310
|
+
/**
|
|
311
|
+
* Retrieve all chunks for a specific file path, sorted by start line.
|
|
312
|
+
* @param filePath - The file path to query.
|
|
313
|
+
* @returns An array of chunks for that file.
|
|
314
|
+
*/
|
|
182
315
|
async getChunksByFilePath(filePath) {
|
|
183
316
|
const table = await this.getTable();
|
|
184
317
|
const normalizedPath = normalizeFilePath(filePath).replace(/'/g, "''");
|
|
@@ -200,6 +333,12 @@ export class LanceDBStore {
|
|
|
200
333
|
}))
|
|
201
334
|
.sort((a, b) => a.metadata.startLine - b.metadata.startLine);
|
|
202
335
|
}
|
|
336
|
+
/**
|
|
337
|
+
* Retrieve a paginated list of all chunks without embeddings.
|
|
338
|
+
* @param offset - Number of rows to skip (for pagination).
|
|
339
|
+
* @param limit - Maximum number of rows to return.
|
|
340
|
+
* @returns An array of chunk summaries.
|
|
341
|
+
*/
|
|
203
342
|
async getChunks(offset, limit) {
|
|
204
343
|
const table = await this.getTable();
|
|
205
344
|
const rows = await table.query()
|
|
@@ -227,8 +366,14 @@ export class LanceDBStore {
|
|
|
227
366
|
if (count === 0)
|
|
228
367
|
return [];
|
|
229
368
|
const results = await table.search(embedding).limit(topK).toArray();
|
|
230
|
-
return results
|
|
369
|
+
return results
|
|
370
|
+
.map((row) => this.rowToSearchResult(row))
|
|
371
|
+
.filter((r) => r.chunk.id !== "__seed__");
|
|
231
372
|
}
|
|
373
|
+
/**
|
|
374
|
+
* Return the total number of chunks stored in the table.
|
|
375
|
+
* @returns The chunk count, or 0 if the table does not exist.
|
|
376
|
+
*/
|
|
232
377
|
async count() {
|
|
233
378
|
try {
|
|
234
379
|
const db = await this.getDb();
|
|
@@ -242,6 +387,31 @@ export class LanceDBStore {
|
|
|
242
387
|
return 0;
|
|
243
388
|
}
|
|
244
389
|
}
|
|
390
|
+
/**
|
|
391
|
+
* Re-open the store, optionally pointing at a new database path.
|
|
392
|
+
* Closes any existing connection and resets internal state so that the
|
|
393
|
+
* next operation lazily reconnects to (the new) path.
|
|
394
|
+
*
|
|
395
|
+
* @param newPath - Optional new filesystem path for the LanceDB database.
|
|
396
|
+
*/
|
|
397
|
+
async reopen(newPath) {
|
|
398
|
+
if (newPath)
|
|
399
|
+
this.dbPath = newPath;
|
|
400
|
+
this.table = null;
|
|
401
|
+
this.db = null;
|
|
402
|
+
this.tableInit = null;
|
|
403
|
+
}
|
|
404
|
+
/** Close the database connection and release resources. */
|
|
405
|
+
async close() {
|
|
406
|
+
this.table?.close();
|
|
407
|
+
this.table = null;
|
|
408
|
+
this.db?.close();
|
|
409
|
+
this.db = null;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Remove all chunks by dropping the underlying LanceDB table.
|
|
413
|
+
* Falls back to deleting the database directory if dropTable fails.
|
|
414
|
+
*/
|
|
245
415
|
async clear() {
|
|
246
416
|
this.table = null;
|
|
247
417
|
try {
|
|
@@ -259,6 +429,10 @@ export class LanceDBStore {
|
|
|
259
429
|
catch { }
|
|
260
430
|
}
|
|
261
431
|
}
|
|
432
|
+
/**
|
|
433
|
+
* Completely remove the entire LanceDB database directory from disk.
|
|
434
|
+
* All data is permanently lost.
|
|
435
|
+
*/
|
|
262
436
|
async dropDatabase() {
|
|
263
437
|
this.table = null;
|
|
264
438
|
this.db = null;
|
|
@@ -267,6 +441,11 @@ export class LanceDBStore {
|
|
|
267
441
|
}
|
|
268
442
|
catch { }
|
|
269
443
|
}
|
|
444
|
+
/**
|
|
445
|
+
* Remove all chunks associated with a given file path.
|
|
446
|
+
* Automatically attempts repair on corruption errors.
|
|
447
|
+
* @param filePath - The file path whose chunks should be deleted.
|
|
448
|
+
*/
|
|
270
449
|
async deleteByFilePath(filePath) {
|
|
271
450
|
try {
|
|
272
451
|
await this.deleteByFilePathInternal(filePath);
|
|
@@ -288,9 +467,6 @@ export class LanceDBStore {
|
|
|
288
467
|
const normalizedPath = normalizeFilePath(filePath).replace(/'/g, "''");
|
|
289
468
|
await table.delete(`filePath = '${normalizedPath}'`);
|
|
290
469
|
}
|
|
291
|
-
isCorruptionError(err) {
|
|
292
|
-
return isCorruptionError(err);
|
|
293
|
-
}
|
|
294
470
|
async tryRepair() {
|
|
295
471
|
try {
|
|
296
472
|
this.table = null;
|
|
@@ -304,28 +480,31 @@ export class LanceDBStore {
|
|
|
304
480
|
table = await db.openTable(TABLE_NAME);
|
|
305
481
|
}
|
|
306
482
|
catch {
|
|
307
|
-
|
|
308
|
-
|
|
483
|
+
// Table is corrupt and can't even be opened — leave it be so the user
|
|
484
|
+
// can run `opencode-rag index --force` to rebuild with full control.
|
|
485
|
+
console.error("[lancedb] Corrupt table detected. Run 'opencode-rag index --force' to rebuild.");
|
|
486
|
+
return false;
|
|
309
487
|
}
|
|
310
488
|
let versions;
|
|
311
489
|
try {
|
|
312
490
|
versions = await table.listVersions();
|
|
313
491
|
}
|
|
314
492
|
catch {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
493
|
+
// Can't list versions (corrupt version manifest). Don't nuke data —
|
|
494
|
+
// let the user decide how to proceed.
|
|
495
|
+
console.warn("[lancedb] Could not list table versions for repair. " +
|
|
496
|
+
"Run 'opencode-rag index --force' to rebuild if search results are incorrect.");
|
|
497
|
+
return false;
|
|
318
498
|
}
|
|
499
|
+
// No previous version to roll back to — not a corruption we can fix.
|
|
319
500
|
if (versions.length <= 1) {
|
|
320
|
-
|
|
321
|
-
this.table = null;
|
|
322
|
-
return true;
|
|
501
|
+
return false;
|
|
323
502
|
}
|
|
324
503
|
const sorted = [...versions].sort((a, b) => b.version - a.version);
|
|
325
504
|
for (const ver of sorted.slice(1)) {
|
|
326
505
|
try {
|
|
327
506
|
await table.checkout(ver.version);
|
|
328
|
-
|
|
507
|
+
await table.countRows();
|
|
329
508
|
await table.restore();
|
|
330
509
|
await table.checkoutLatest();
|
|
331
510
|
this.table = table;
|
|
@@ -335,9 +514,10 @@ export class LanceDBStore {
|
|
|
335
514
|
continue;
|
|
336
515
|
}
|
|
337
516
|
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
517
|
+
// Tried all versions, none worked — report failure but don't destroy data.
|
|
518
|
+
console.error("[lancedb] All version-restore attempts failed. " +
|
|
519
|
+
"Run 'opencode-rag index --force' to rebuild the index.");
|
|
520
|
+
return false;
|
|
341
521
|
}
|
|
342
522
|
catch {
|
|
343
523
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lancedb.js","sourceRoot":"","sources":["../../src/vectorstore/lancedb.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lancedb.js","sourceRoot":"","sources":["../../src/vectorstore/lancedb.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,11 @@ export declare class InMemoryVectorStore implements VectorStore {
|
|
|
5
5
|
search(embedding: number[], topK: number): Promise<SearchResult[]>;
|
|
6
6
|
count(): Promise<number>;
|
|
7
7
|
clear(): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Remove all chunks associated with a given file path.
|
|
10
|
+
* @param filePath - The file path whose chunks should be removed.
|
|
11
|
+
*/
|
|
8
12
|
deleteByFilePath(filePath: string): Promise<void>;
|
|
13
|
+
/** Release any held resources. No-op for the in-memory store. */
|
|
14
|
+
close(): Promise<void>;
|
|
9
15
|
}
|
|
@@ -20,10 +20,23 @@ export class InMemoryVectorStore {
|
|
|
20
20
|
async clear() {
|
|
21
21
|
this.chunks = [];
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Remove all chunks associated with a given file path.
|
|
25
|
+
* @param filePath - The file path whose chunks should be removed.
|
|
26
|
+
*/
|
|
23
27
|
async deleteByFilePath(filePath) {
|
|
24
28
|
this.chunks = this.chunks.filter((c) => c.metadata.filePath !== filePath);
|
|
25
29
|
}
|
|
30
|
+
/** Release any held resources. No-op for the in-memory store. */
|
|
31
|
+
async close() {
|
|
32
|
+
}
|
|
26
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Compute the cosine similarity between two equal-length vectors.
|
|
36
|
+
* @param a - First vector.
|
|
37
|
+
* @param b - Second vector.
|
|
38
|
+
* @returns The cosine similarity (0 if either vector has zero magnitude).
|
|
39
|
+
*/
|
|
27
40
|
function cosineSimilarity(a, b) {
|
|
28
41
|
let dot = 0;
|
|
29
42
|
let normA = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/vectorstore/memory.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,mBAAmB;IACtB,MAAM,GAAY,EAAE,CAAC;IAE7B,KAAK,CAAC,SAAS,CAAC,MAAe;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAmB,EAAE,IAAY;QAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CACvC,CAAC,CAAC,EAAwC,EAAE,CAC1C,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CACvE,CAAC;QACF,MAAM,MAAM,GAAG,cAAc;aAC1B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACzD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC/B,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAElB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC5E,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,CAAW,EAAE,CAAW;IAChD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACjB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACjB,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;QACf,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;AACvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/vectorstore/memory.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,mBAAmB;IACtB,MAAM,GAAY,EAAE,CAAC;IAE7B,KAAK,CAAC,SAAS,CAAC,MAAe;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAmB,EAAE,IAAY;QAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CACvC,CAAC,CAAC,EAAwC,EAAE,CAC1C,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CACvE,CAAC;QACF,MAAM,MAAM,GAAG,cAAc;aAC1B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACzD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC/B,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAElB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,KAAK;IACX,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,CAAW,EAAE,CAAW;IAChD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACjB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACjB,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;QACf,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;AACvC,CAAC"}
|
package/dist/watcher.d.ts
CHANGED
|
@@ -1,21 +1,45 @@
|
|
|
1
1
|
import type { RagConfig } from "./core/config.js";
|
|
2
2
|
import type { DescriptionProvider, EmbeddingProvider, KeywordIndex, VectorStore } from "./core/interfaces.js";
|
|
3
|
+
/** A background indexer that can be shut down gracefully. */
|
|
3
4
|
export interface BackgroundIndexer {
|
|
5
|
+
/** Stop the watcher, cancel pending index passes, and clean up status files. */
|
|
4
6
|
close(): Promise<void>;
|
|
5
7
|
}
|
|
8
|
+
/** Options for creating a background indexer instance. */
|
|
6
9
|
export interface CreateBackgroundIndexerOptions {
|
|
10
|
+
/** The workspace root directory to watch for changes. */
|
|
7
11
|
cwd: string;
|
|
12
|
+
/** Absolute path to the vector store directory. */
|
|
8
13
|
storePath: string;
|
|
14
|
+
/** Loaded RAG configuration. */
|
|
9
15
|
config: RagConfig;
|
|
16
|
+
/** Vector store instance for writing indexed chunks. */
|
|
10
17
|
store: VectorStore;
|
|
18
|
+
/** Embedding provider for converting chunks to vectors. */
|
|
11
19
|
embedder: EmbeddingProvider;
|
|
20
|
+
/** Path to the debug log file. */
|
|
12
21
|
logFilePath: string;
|
|
22
|
+
/** Log level controlling verbosity. */
|
|
13
23
|
logLevel?: string;
|
|
24
|
+
/** Optional keyword index for hybrid search support. */
|
|
14
25
|
keywordIndex?: KeywordIndex;
|
|
26
|
+
/** Optional provider for generating LLM-based chunk descriptions. */
|
|
15
27
|
descriptionProvider?: DescriptionProvider;
|
|
16
28
|
}
|
|
29
|
+
/** The current operational status of the background indexer watcher. */
|
|
17
30
|
export type WatcherStatus = {
|
|
31
|
+
/** Whether an index pass is currently running. */
|
|
18
32
|
running: boolean;
|
|
33
|
+
/** Timestamp (ms since epoch) of the last completed run, or undefined. */
|
|
19
34
|
lastRunAt: number | undefined;
|
|
20
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* Create a background file watcher that automatically re-indexes the
|
|
38
|
+
* workspace when files change. Uses chokidar for file system events and
|
|
39
|
+
* debounces rapid changes. Detects vector store corruption and performs
|
|
40
|
+
* an automatic rebuild.
|
|
41
|
+
*
|
|
42
|
+
* @param options - Configuration for the background indexer.
|
|
43
|
+
* @returns A BackgroundIndexer handle with a close() method for shutdown.
|
|
44
|
+
*/
|
|
21
45
|
export declare function createBackgroundIndexer(options: CreateBackgroundIndexerOptions): BackgroundIndexer;
|
package/dist/watcher.js
CHANGED
|
@@ -4,6 +4,7 @@ import { writeFileSync, unlinkSync, existsSync } from "node:fs";
|
|
|
4
4
|
import { appendDebugLog } from "./core/fileLogger.js";
|
|
5
5
|
import { isCorruptionError } from "./vectorstore/lancedb.js";
|
|
6
6
|
import { createWatchPassScheduler, createWatchIgnore, runIndexPass, } from "./indexer.js";
|
|
7
|
+
/** Persist the current watcher status to disk as JSON. */
|
|
7
8
|
function writeWatcherStatus(storePath, status) {
|
|
8
9
|
try {
|
|
9
10
|
writeFileSync(path.join(storePath, "watcher-status.json"), JSON.stringify(status, null, 2), "utf-8");
|
|
@@ -12,6 +13,15 @@ function writeWatcherStatus(storePath, status) {
|
|
|
12
13
|
// silently ignore write errors
|
|
13
14
|
}
|
|
14
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a background file watcher that automatically re-indexes the
|
|
18
|
+
* workspace when files change. Uses chokidar for file system events and
|
|
19
|
+
* debounces rapid changes. Detects vector store corruption and performs
|
|
20
|
+
* an automatic rebuild.
|
|
21
|
+
*
|
|
22
|
+
* @param options - Configuration for the background indexer.
|
|
23
|
+
* @returns A BackgroundIndexer handle with a close() method for shutdown.
|
|
24
|
+
*/
|
|
15
25
|
export function createBackgroundIndexer(options) {
|
|
16
26
|
const { cwd, storePath, config, store, embedder, logFilePath, logLevel, keywordIndex, descriptionProvider } = options;
|
|
17
27
|
writeWatcherStatus(storePath, { running: false, lastRunAt: undefined });
|
|
@@ -38,43 +48,15 @@ export function createBackgroundIndexer(options) {
|
|
|
38
48
|
updateStatus({ running: false, lastRunAt: Date.now() });
|
|
39
49
|
}
|
|
40
50
|
catch (err) {
|
|
51
|
+
appendDebugLog(logFilePath, {
|
|
52
|
+
scope: "autoIndex",
|
|
53
|
+
message: "Watch reindex pass failed",
|
|
54
|
+
error: err,
|
|
55
|
+
}, logLevel);
|
|
41
56
|
if (isCorruptionError(err)) {
|
|
42
57
|
appendDebugLog(logFilePath, {
|
|
43
58
|
scope: "autoIndex",
|
|
44
|
-
message: "Corruption detected
|
|
45
|
-
error: err,
|
|
46
|
-
}, logLevel);
|
|
47
|
-
try {
|
|
48
|
-
await store.clear();
|
|
49
|
-
keywordIndex?.clear();
|
|
50
|
-
await runIndexPass({
|
|
51
|
-
cwd,
|
|
52
|
-
storePath,
|
|
53
|
-
config,
|
|
54
|
-
store,
|
|
55
|
-
embedder,
|
|
56
|
-
keywordIndex,
|
|
57
|
-
descriptionProvider,
|
|
58
|
-
logger: {
|
|
59
|
-
info: (message) => appendDebugLog(logFilePath, { scope: "autoIndex", message }, logLevel),
|
|
60
|
-
warn: (message) => appendDebugLog(logFilePath, { scope: "autoIndex", message }, logLevel),
|
|
61
|
-
debug: (message) => appendDebugLog(logFilePath, { scope: "autoIndex", message: `DEBUG: ${message}`, severity: "debug" }, logLevel),
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
catch (retryErr) {
|
|
66
|
-
appendDebugLog(logFilePath, {
|
|
67
|
-
scope: "autoIndex",
|
|
68
|
-
message: "Rebuild after corruption also failed",
|
|
69
|
-
error: retryErr,
|
|
70
|
-
}, logLevel);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
appendDebugLog(logFilePath, {
|
|
75
|
-
scope: "autoIndex",
|
|
76
|
-
message: "Watch reindex pass failed",
|
|
77
|
-
error: err,
|
|
59
|
+
message: "Corruption detected — run 'opencode-rag index --force' to rebuild manually",
|
|
78
60
|
}, logLevel);
|
|
79
61
|
}
|
|
80
62
|
updateStatus({ running: false, lastRunAt: Date.now() });
|
|
@@ -88,7 +70,7 @@ export function createBackgroundIndexer(options) {
|
|
|
88
70
|
error: err,
|
|
89
71
|
}, logLevel);
|
|
90
72
|
});
|
|
91
|
-
const autoIndexCfg = config.openCode.autoIndex ?? { enabled:
|
|
73
|
+
const autoIndexCfg = config.openCode.autoIndex ?? { enabled: false, debounceMs: 5000, intervalMs: 300000 };
|
|
92
74
|
const scheduler = createWatchPassScheduler(runPass, (error) => {
|
|
93
75
|
const message = error.message || String(error);
|
|
94
76
|
appendDebugLog(logFilePath, {
|
package/dist/watcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,GACb,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
|